Home » Archimedes archive » Apps » Acorn Applications Update (1994)(Acorn Computers).adf » !ChangeFSI/ChangeFSI

!ChangeFSI/ChangeFSI

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

� > ChangeFSI
�,� �ChangeFSIVersion="0.95 (17th Feb 94)"
�areanumber%=0
�ș"OS_GetEnv" � A$
��A$," -wimp") �
�� z%(1),p%(2),s%(3),m$(21)
�"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%
@6ș "OS_SWINumberFromString",,"OS_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%
�� 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% 2399
��
�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"
&�
:� �
D6� � ș"Wimp_CloseTemplate":� 0,�$+" (code "+Þ+")"
X�version%>=300 �
b� z% �largest_buffer
l#indsize%=�size_indirect("Info")
v� info_wind% indsize%
�Kș"Wimp_LoadTemplate",,z%,info_wind%,info_wind%+indsize%,-1,"Info"+z$,0
��
�Kș"Wimp_LoadTemplate",,z%,idata%,sidata%+2500,-1,"Info"+z$,0 � ,,idata%
��
�?ș CreateW,,z% � infow%:$!(z%+88+7*32+20)=�ChangeFSIVersion
��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%+2400,-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 �
*%indsize%=�size_indirect("Output")
4� outp_wind% indsize%
>Mș"Wimp_LoadTemplate",,z%,outp_wind%,outp_wind%+indsize%,-1,"Output"+z$,0
H�
RMș"Wimp_LoadTemplate",,z%,idata%,sidata%+2400,-1,"Output"+z$,0 � ,,idata%
\�
fPș CreateW,,z% � output%:admode%=!(z%+88+17*32+20):adspcl%=!(z%+88+16*32+20)
z�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%+2400,-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%+2400,-1,"Save"+z$,0 � ,,idata%
$�
.3ș CreateW,,z% � save%:adsave%=!(z%+88+1*32+20)
B�version%>=300 �
L%indsize%=�size_indirect("Sprite")
V� sprt_wind% indsize%
`Mș"Wimp_LoadTemplate",,z%,sprt_wind%,sprt_wind%+indsize%,-1,"Sprite"+z$,0
j�
tMș"Wimp_LoadTemplate",,z%,idata%,sidata%+2400,-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%+2400,-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
(�
2Lș"Wimp_LoadTemplate",,z%,idata%,sidata%+2400,-1,"Range"+z$,0 � ,,idata%
<�
F5ș CreateW,,z% � raninfo%:adran%=!(z%+88+0*32+20)
Z�version%>=300 �
d#indsize%=�size_indirect("Zoom")
n� zoom_wind% indsize%
xKș"Wimp_LoadTemplate",,z%,zoom_wind%,zoom_wind%+indsize%,-1,"Zoom"+z$,0
��
�Kș"Wimp_LoadTemplate",,z%,idata%,sidata%+2400,-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%+2400,-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
,:$(q%+24)="!"+m$(20):ș"Wimp_CreateIcon",,q% � iconbar%
6)A%=�"<ChangeFSI$Dir>.Choices":�A%=0 �
@Dfast%=�:statescale%=%10000000100:stateproc%=0:stateoutput%=&a008
J2$p%(0)="":$p%(1)="2.2":$p%(2)="24":$adspcl%=""
T=$admode%="28":$s%(0)="1":$s%(1)="4":$s%(2)="1":$s%(3)="4"
^�
h2�#A%,fast%,statescale%,stateproc%,stateoutput%
r/�#A%,$p%(0),$p%(1),$p%(2),$admode%,$adspcl%
|$�#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 
ș Drag,,-1
&1�sprite% ș "Wimp_SlotSize",originalslot%,-1
0BF$="":�startfile% startfile%=�:F$=�A$,�A$,"-wimp")+6):�callFSI
:�
Dș Poll%,1,q% � A%
NȎ A% �
X%� 1 :�sprite% �redraw_window(!q%)
bB� 2 :�open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
l2� 3 :ș &400c3,,q%:nextlocation%=�:�removearea
v:ș "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%=�
 �=&4000000
*S� � � � �:�"Set ChangeFSI$ReturnCode "+�$+" (code "+Þ+")":�removearea:�:�=Q%:�
41foo%=0:A%=�ChangeFSI(A$,-1,-1,0,-1,-1,foo%,�)
>+�removearea:*unset ChangeFSI$ReturnCode
H
�:�=Q%
R�
\�
p� �size_indirect(name$)
z� size%
�5ș "Wimp_LoadTemplate",,0,,,,name$+z$,0 � ,,size%
�
=size%
�� �winsize_indirect(name$)
�� size%
�4ș "Wimp_LoadTemplate",,0,,,,name$+z$,0 � ,size%
�
=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%
	8$name= "*"
	B?ș "Wimp_LoadTemplate", ,0,,,,name,here% � ,size%,,,,,here%
	L�
	V=largest_tem%
	j� �receive(q%)
	tȎ 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
	�/ș"Wimp_SendMessage",17,q%,q%!4:scrap%=q%!8
	��
	�8� 2:șspop%,&10C,sar%,�ZS(q%+44):$adsave%=�ZS(q%+44)
	�7q%!12=q%!8:q%!16=3:ș "Wimp_SendMessage",18,q%,q%!4
	�� q%!36<>-1 saved%=�
	�ș CrMenu,,-1
	�1� 3:F$=�ZS(q%+44):�scrap% scrap%=scrap%=q%!12
	�6q%!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
2�showscaletofit
<H� 10:ș"XOS_ReadVarVal","ChangeFSI$Dir",paltemp%,256,0,3 �,,bootlen%
Fpaltemp%?bootlen%=13
P�#q%!20,"Run "+$paltemp%
Z�
d�
x� �callFSI
�A$=�deducemode:A%=47
� �geticonstate(output%,12) �
�A$+=$adspcl%
��
� �geticonstate(output%,13) �
�>�geticonstate(output%,2)��geticonstate(output%,8) A$+="R"
��
�ș53,�A$,3 �,,A%
��A%=63 �
�&�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+":"
6(�geticonstate(scalew%,5) A$+=" 1:2"
@,�geticonstate(scalew%,4) A$+=" 1:2 1:1"
J,�geticonstate(scalew%,3) A$+=" 1:1 1:2"
T�geticonstate(scalew%,9) �
^%�$s%(0) A$+=" "+$s%(0) �A$+=" 1"
hA$+=":"+$s%(1)
r%�$s%(2) A$+=" "+$s%(2) �A$+=" 1"
|A$+=":"+$s%(3)
��
�,�geticonstate(scalew%,0) A$+=" -nosize"
�.�geticonstate(scalew%,18) A$+=" -noscale"
�+�geticonstate(scalew%,19) A$+=" -lock"
��geticonstate(scalew%,6) �
�>�geticonstate(scalew%,16) A$+=" -rotate" �A$+=" -rotate-"
��
�+�geticonstate(scalew%,7) A$+=" -hflip"
�+�geticonstate(scalew%,8) A$+=" -vflip"
�)�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)
0�geticonstate(proc%,6) A$+=" -gamma"+$p%(1)
&2�geticonstate(proc%,7) A$+=" -sharpen"+$p%(2)
0%info$="":range$=m$(19):cputime%=0
:6�sprite% !q%=pic%:ș &400c3,,q%:saved%=�:sprite%=�
Dnextlocation%=�
N3ș "Wimp_SlotSize",originalslot%,-1:�removearea
X1�fast% ș "OS_UpdateMEMC",&300,&700 � oldmemc
b4A%=�ChangeFSI(A$,-1,-1,nextlocation%,0,0,sar%,0)
l*�fast% ș "OS_UpdateMEMC",oldmemc,&700
v%�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
�.$adsx%=�x:$adsy%=�y:$adsm%=�m:$adsname%=n$
�&$adsbytes%=�sar%!12:$adran%=range$
�-$adsrc%=info$+m$(0)+�(cputime%/100)+m$(1)
�'A%=�F$:ȕ�"."+F$,A%,1)<>".":A%-=1:�
�$adsave%=�"."+F$,A%+1)
�ș&35,m,4 �,,nx:x=x<<nx
�ș&35,m,5 �,,ny:y=y<<ny
�#saved%=�:sprite%=�:�getmodeinfo
�pic%=�create_window(x,y,F$)
��popup(pic%,-1)

�

�

 � �checkandfinish

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

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

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

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

R�

f� �key(handle%,icon%,key%)

p�key%=&1b ș CrMenu,,-1:�

zȎ handle% �

�� zoom%:Ȏ key% �

�C� 13:�dozoom(icon%-4,0):�icon%=4 ș &400d2,zoom%,5,,,-1,�$z%(0)

��icon%=5 ș CrMenu,,-1

��

�"� &18e,&18f:�dozoom(icon%-4,0)

�0ș &400d2,zoom%,icon%�1,,,-1,�$z%(icon%�5):�

��

�� save%

��key%=13 �savesprite:�

�
� 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:�
8.ș &400d2,proc%,icon%,,,-1,�$p%(icon%-8):�
B%� &18f:icon%-=1:�icon%<8 icon%=10
L.ș &400d2,proc%,icon%,,,-1,�$p%(icon%-8):�
V�
`� scalew%:Ȏ key% �
jB� &18e,13:icon%+=1:�icon%>13 icon%=10:�key%=13 ș CrMenu,,-1:�
t1ș &400d2,scalew%,icon%,,,-1,�$s%(icon%-10):�
~&� &18f:icon%-=1:�icon%<10 icon%=13
�1ș &400d2,scalew%,icon%,,,-1,�$s%(icon%-10):�
��
��
�ș "Wimp_ProcessKey",key%
��
�� �savesprite
�ș spop%,&10C,sar%,$adsave%
�ș CrMenu,,-1
��
�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))
(�
2rmenuhandle%=handle%
<�
F�b%�4 �
PȎ handle% �
Z� zoom%:Ȏ icon% �
d� 0:�dozoom(0,1)
n� 1:�dozoom(0,-1)
x� 2:�dozoom(1,1)
�� 3:�dozoom(1,-1)
��
��
��
��b%�1 �
�Ȏ handle% �
�� zoom%:Ȏ icon% �
�� 0:�dozoom(0,-1)
�� 1:�dozoom(0,1)
�� 2:�dozoom(1,-1)
�� 3:�dozoom(1,1)
��
��
�
�b%�5 �
Ȏ handle% �
"� output%:Ȏ icon% �
,'� 0,1,2,3:�killcurrent(�(25+icon%))
6!� 4:�killcurrent("S16,90,90")
@!� 5:�killcurrent("S32,90,90")
J� 6:�killcurrent("0")
T� 7:�killcurrent("8")
^� 8:�killcurrent("12")
h� 9:�killcurrent("15")
r"� 10:�killcurrent("S16,90,45")
|"� 11:�killcurrent("S32,90,45")
��
�3�geticonstate(output%,15) $admode%=�deducemode
�2!q%=output%:q%!4=17:q%!8=0:q%!12=0:ș SetI,,q%
��showscaletofit
�� save%:Ȏ icon% �
�� 2:�savesprite
��
�M� -2:�sprite% �getw(pic%):�open_window(pic%,x0%,y0%,x1%,y1%,scx%,scy%,-1)
��
��
�
�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%
03q%!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%
D�
N�
X�
b�
v� �dozoom(s%,a%)
��s%=0 �
�/$z%(0)=�(�$z%(0)+a%):�$z%(0)="0" $z%(0)="1"
��
�/$z%(1)=�(�$z%(1)+a%):�$z%(1)="0" $z%(1)="1"
��
�2!q%=zoom%:q%!4=4+s%:q%!8=0:q%!12=0:ș SetI,,q%
�/!q%=pic%:ș GetW,,q%:f%=q%!28:ș &400c3,,q%
�pic%=�create_window(x,y,F$)
��popup(pic%,f%)
��
�'� �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
4!menuptr%!16=200:menuptr%!24=0
>menuptr%+=28
H%� i1%=i%+1:i%=�menu$+",",",",i1%)
R8item$=�menu$,i1%,i%-i1%):�menuitem(item$):� item$=""
\#menuptr%!-24=(menuptr%!-24)�&80
f`�handle%=101 ș CrMenu,,buffer%,mousex%-64,96+8*44 �ș CrMenu,,buffer%,mousex%-32,mousey%+16
p�
�� �menuitem(text$)
�� text$="" �
�*flg%=0:submenu%=-1:I%=�text$,":"):�I%�
�)flg%=��text$,I%+1):text$=�text$,I%-1)
��
�I%=�text$,">"):�I%�
�-submenu%=��text$,I%+1):text$=�text$,I%-1)
��
�menuptr%!0=flg%
�menuptr%!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$
.�
8menuptr%+=24
B�
V� �menuselect(menus%)
`,ș GetP,,paltemp%:adjust%=paltemp%!8 � 1
j-ș DcMenu,,buffer%,menus%,�200," ")�,,,a$
t� a$="" ��
~Ȏ menuhandle% �
�
� pic%
�Ȏ a$ �
�� m$(9):�callFSI
��
�	� 101
�Ȏ a$ �
�� m$(14):fast%=�fast%
�� m$(9):�callFSI
�� m$(15)
�Fstatescale%=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%
/�#A%,$p%(0),$p%(1),$p%(2),$admode%,$adspcl%
($�#A%,$s%(0),$s%(1),$s%(2),$s%(3)
2�#A%
<� m$(16):�checkandfinish
F�
P�
Z0�adjust% �checkmouse(0,0,2,rmenuhandle%,0,0)
d�
x � �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
�%�x<128 � y<128 z%?35=0 �z%?35=255
�)$adtitle%="":ș CreateW,,z% � handle%
�$adtitle%=title$
�=handle%
�� �popup(handle%,f%)
�1ș "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%)
J�handle%=-1��
Tq%!0=handle%:q%!28=bhandle%
^)q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
hq%!20=scx%:q%!24=scy%
rș OpenW,,q%
|�
�� �getw(handle%)
�!q%=handle%:ș GetW,,q%
�+�info(q%+4):bhandle%=q%!28:flags%=q%!32
��
�� �info(q%)
�=x0%=!q%:y0%=q%!4:x1%=q%!8:y1%=q%!12:scx%=q%!16:scy%=q%!20
�bx%=x0%-scx%:by%=y1%-scy%
��
�� �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%
0ș RedrawW,,q% � more%
:,�info(q%+4):by%=by%-�(y*�$z%(0)��$z%(1))
Dȕ more%
N0ș spop%,&134,sar%,n$,bx%,by%,,factors%,spx%
Xș GetR%,0,q% � more%
b�
l�
v�
�"� �geticonstate(handle%,icon%)
�&!q%=handle%:q%!4=icon%:ș GetI,,q%
�=q%!24>>21 � 1
�� �getmodeinfo
�=ș"Wimp_ReadPixTrans",&100,sar%,n$,,,,ifactors%,pixtrans%
�#ș spop%,&118,sar%,n$ � ,,sptr%
�� sptr%!32=44 �
�
palptr%=0
��
�� grab%=0 � 2048-8 � 8
�(paltemp%!(grab%>>1)=sptr%!(grab%+44)
�
palptr%=paltemp%
�
 �Q%=0�255:pixtrans%?Q%=Q%:�
*�sptr%!32=44+2048 �
45�Q%=0�255:șctran%,palptr%!(Q%<<2)�pixtrans%?Q%:�
>�
H:ș "ColourTrans_SelectTable",m,palptr%,-1,-1,pixtrans%
R�
\6spx%=-1:�Q%=0�255:�pixtrans%?Q%<>Q% spx%=pixtrans%
f�
p�
�� �deducemode
�� m,x,y
� �geticonstate(output%,15) �
�ș&35,-1,9 �,,m:�m>3 �
�#ș&35,-1,4 �,,x:ș&35,-1,5 �,,y
�x=180/(2^x):y=180/(2^y)
�="S"+�(2^m)+","+�x+","+�y
��
�=��
��
��
�
=$admode%
��
=0
� �showscaletofit
$� m,x,y
.$admode%=�deducemode
8�?admode%=�"S" �
B)�$admode%,5)>��$admode%,8) x=6 �x=0
L �$admode%,2)>16 x+=5 �x+=4
V/ș&35,-1,11 �,,tofitx:ș&35,-1,12 �,,tofity
`�
jm=�$admode%
t-ș&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
��
�?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
�q%!4=I%:ș SetI,,q%:�
��
�� �killcurrent(m$)
�"q%!12=1<<21:!q%=output%:q%!8=0
�q%!4=17:ș SetI,,q%
�$admode%=m$
��

+ݤZS(I%)�A$:�A$+=�?I%:I%+=1:�?I%<14:=A$
� �errorbox
(ș Drag,,-1
22!buffer%=�:$(buffer%+4)=�$+" (code "+Þ+")"+�0
<2ș "Wimp_ReportError",buffer%,%11,m$(20) � ,A%
F+�A%=2 �removearea:ș "Wimp_CloseDown":�
P�
6S� �ChangeFSI(A$,spritearea%,workspace%,worklimit%,oksave%,okinfo%,� ram%,fast%)
@M� A$(),r%(),g%(),b%(),rpal%(),gpal%(),bpal%(),table%(),cl%(),xl%(),xl2%()
JD� xp%(),rm%(),rm1%(),rm2%(),vals%(),nl%(),A%(),B%(),new%(),st%()
T$ȕ�A$,1)<>" "��A$<>0 A$=�A$,2):�
^ȕ�A$,1)=" " A$=�A$,2):�
hȕ�A$,1)=" " A$=�A$):�
r�uc(�A$,5))="-QUIT" �
|.A$=�A$,7):ȕ�A$,1)<>" "��A$<>0 A$=�A$,2):�
�ȕ�A$,1)=" " A$=�A$,2):�
��
� � A$(100):ARG%=0:B%=�A$," ")
�ȕ B%<>0
�+ARG%+=1:A$(ARG%)=�A$,B%-1):A$=�A$,B%+1)
�ȕ �A$,1)=" ":A$=�A$,2):�
�B%=�A$," ")
��
��A$<>"" ARG%+=1:A$(ARG%)=A$
�Xinvert%=�: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$
08�"Info on input picture?"a$:�uc(�a$,1))="Y" info%=�
:;�"Invert picture colours?"a$:�uc(�a$,1))="Y" invert%=�
D=�"Compute histogram of input?"a$:�uc(�a$,1))="Y" hist%=�
N@�"Apply histogram equalisation?"a$:�uc(�a$,1))="Y" equal%=�
XG�"Expand input dynamic range?"a$:�uc(�a$,1))="Y" range%=�:equal%=�
b=�"Sharpen picture by (e.g. 12 for harsh, 24 for soft) "a$
l�a$<>"" sharpen%=�a$
v+�"Rotate?"a$:�uc(�a$,1))="Y" rotate%=1
�scale%=�:scaleo%=�:fast%=�
��
�
� A%=ARG%
�6�uc(A$(ARG%))="-INFO" info%=�:A$(ARG%)="":ARG%-=1
�6�uc(A$(ARG%))="-HIST" hist%=�:A$(ARG%)="":ARG%-=1
�6�uc(A$(ARG%))="-LOCK" lock%=�:A$(ARG%)="":ARG%-=1
�A�uc(A$(ARG%))="-EQUAL" equal%=�:range%=�:A$(ARG%)="":ARG%-=1
�A�uc(A$(ARG%))="-RANGE" range%=�:equal%=�:A$(ARG%)="":ARG%-=1
�:�uc(A$(ARG%))="-INVERT" invert%=�:A$(ARG%)="":ARG%-=1
�D�uc(A$(ARG%))="-NOSCALE" scale%=�:scaleo%=�:A$(ARG%)="":ARG%-=1
�9�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
4!�uc(�A$(ARG%),6))="-BLACK" �
>Fblack%=32:�A$(ARG%)>6 black%=��A$(ARG%),7):�black%>128 black%=128
HA$(ARG%)="":ARG%-=1
R�
\!�uc(�A$(ARG%),6))="-GAMMA" �
f.gamma=2.2:�A$(ARG%)>6 gamma=��A$(ARG%),7)
pA$(ARG%)="":ARG%-=1
z�
�#�uc(�A$(ARG%),8))="-SHARPEN" �
�2sharpen%=�:�A$(ARG%)>8 sharpen%=��A$(ARG%),9)
�A$(ARG%)="":ARG%-=1
��
�C�uc(�A$(ARG%),4))="-RED" rwt=��A$(ARG%),5):A$(ARG%)="":ARG%-=1
�E�uc(�A$(ARG%),6))="-GREEN" gwt=��A$(ARG%),7):A$(ARG%)="":ARG%-=1
�D�uc(�A$(ARG%),5))="-BLUE" bwt=��A$(ARG%),6):A$(ARG%)="":ARG%-=1
��uc(�A$(ARG%),4))="-MAX" �
�Dmax%=��A$(ARG%),5):�A$(ARG%),"K")��A$(ARG%),"k") max%=max%*1024
�A$(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%=�
.�
8<�worklimit%=0 �flex%=� �flex%=�:nextlocation%=worklimit%
B�
L"pnm$=�uc(m$):Ȏ �pnm$+",",3) �
V�"AIM":m=-1:m$=""
`"�"P1,","P4,":m=-2:m$="":spm=18
j#�"P2,","P5,":m=-2:m$="T":spm=20
t=�"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$=""
��"IRL":m=-4:m$="":p6bits=8
��"S16":m=-6:m$=""
��"S24":m=-7:m$="":p6bits=8
��"S32":m=-8:m$="":p6bits=8
�5:m=�m$:spm=m:m$=�uc(�m$,1)):�"CDRT",m$)=0 m$=""
��
��xs$="" � �xs$,1)="-" �
�#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 �
2Cpanic=�:ș8,5,s$+".raw" � r0,,r2:�r0=1 s$+=".raw":dir=�:panic=�
<1�panic ș8,5,s$+".red" � r0,,r2:�r0=1 panic=�
F!�panic � 42,"Directory given"
P�
Z>ftype=r2>>8 � &FFF:bits=28:F=2^bits:c%=0:cc%=0:ccc%=0:o%=0
d
�dir �
n>c%=�(s$+".red"):�c%=0 � 42,"Red file "+s$+".red not found"
xEcc%=�(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"
��
�� �
�� � � � �:�close:� �,�$
�
� r%(255)
�� g%(255),b%(255)
�ș&66f4d �;pcd%
�Ȏ 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=�
6!� &DFA:flag=800:�dir flag=801
@� &DE2:flag=1000
J � &BE8:�(pcd%�1)=0 flag=3600
T� &7A0:flag=1200
^� &69d:flag=2000
h� &699:flag=700
r� &698:flag=100
|� &697:flag=1900
�� &691:flag=2600
�� &690:flag=2500
�� &666:flag=666
�� &601:flag=3000
�� &371:flag=3100
�#� &300:flag=1300:�dir flag=1301
�� 4:flag=900:�dir flag=901
�� 6:flag=950
��
��flag=-1 �
�%�#c%=0:S$="":�I%=1�16: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
 0#�flag=-1 �S$,2)="BM" flag=2400
 :$�flag=-1 �S$,4)="GIF8" flag=500
 D%�flag=-1 �S$,5)="AV_VO" flag=600
 N2�flag=-1 �S$,4)=�&59+�&A6+�&6A+�&95 flag=1100
 X*�flag=-1 �S$,4)=�0+�1+�0+�8 flag=1400
 b*�flag=-1 �S$,4)=�0+�1+�0+�1 flag=2900
 l%�flag=-1 �S$,4)="RIX3" flag=2700
 v3�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
 �D�flag=-1 �S$,2)="P4"��S$,2)="P5"��S$,2)="P6" flag=3300:info$=""
 �$�flag=-1 �S$,3)="P15" flag=3400
 �$�flag=-1 �S$,3)="PIC" flag=3500
 �)�flag=-1 �uc(�S$,3))="P13" flag=3450
 �6�flag=-1 �S$,4)="FORM" �S$,9,4)="ILBM" flag=1600
 ��flag=-1 �
 �#�S$,7,4)="JFIF" � ftype=&C85 �
 �*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>"
!4�
!>�
!H"c%=�"<Wimp$Scrap>":�c%=0 �=100
!R>scrapf%=�:flag=3300:info$="JPEG (JFIF) file converted to "
!\�
!f
flag=3700
!p�
!z�
!��
!��flag=-1 �
!�&�#c%=&10:S$="":�I%=1�9:S$+=��#c%:�
!��S$="MILLIPEDE" flag=200
!��
!��flag=-1 �
!�&�#c%=&41:S$="":�I%=1�8:S$+=��#c%:�
!�%�S$,4)="PNTG" flag=1800:st%=&280
!��
!��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 �
"8�#c%=0:�#c%=10 �
"B+C%=�#c%:�C%<6 � C%<>1 ��#c%=1 flag=1900
"L�
"V�
"`M�flag=-1 �"."+�uc(s$),".PCX.")���uc(s$),":PCX.")��s$,4)="/PCX" flag=1900
"jB�flag=-1 �"."+�uc(s$),".IMAGE.")���uc(s$),":IMAGE.") flag=400
"t)�flag=-1 �uc(�s$,4))=".RAW" flag=100
"~)�flag=-1 �uc(�s$,3))="TGA" flag=2000
"�)�flag=-1 �uc(�s$,3))="VDA" flag=2000
"�>�flag=-1 �"."+�uc(s$),".PIC.")���uc(s$),":PIC.") flag=700
"�M�flag=-1 �"."+�uc(s$),".IMG.")���uc(s$),":IMG.")��s$,4)="/IMG" flag=1400
"�M�flag=-1 �"."+�uc(s$),".DSP.")���uc(s$),":DSP.")��s$,4)="/DSP" flag=1700
"�*�flag=-1 �uc(�s$,4))="/RGB" flag=3200
"�<�flag=-1 �(�uc(�s$,4))="/PCD"�ftype=&be8)�((pcd%�1)=1) �
"�o�#c%:ș"Wimp_StartTask","<ChangeFSI$Dir>.hpcdtoppm -3 -a "+s$+" <Wimp$Scrap> { > <ChangeFSI$Dir>.pcdtemp }"
"�Mc%=�"<Wimp$Scrap>":scrapf%=�:flag=3300:info$="PhotoCD file converted to "
"��
"��
"�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
#2sm=�W:�sm<256 �
#<ș53,sm,3 � ,,I%
#FȎ I% �
#P%� 1:�st%=F%+12 �defpal2 ��ipal(2)
#Z5�#c%=F%-16:sx%=(�W+1)*32:rowbytes%=sx%>>3:input=1
#dsy%=�W+1:I%=�W:sx%-=31-�W
#n%� 3:�st%=F%+12 �defpal4 ��ipal(4)
#x5�#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)
#�4�#c%=F%-16:sx%=(�W+1)*8:rowbytes%=sx%>>1:input=4
#�!sy%=�W+1:I%=�W:sx%-=(31-�W)�4
#�� 63,255:�st%=F%+12 �
#��defpal
#��
#��K%>st% K%=st%
#��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
$6) �42,"Not understood RISC OS sprite"
$@�
$J@r$="FN8":ș53,sm,4 � ,,nx:ș53,sm,5 � ,,ny:nx=1<<nx:ny=1<<ny
$T-�scale% xmul%=xmul%*nx/2:ymul%=ymul%*ny/2
$^Sinfo$="RISC OS sprite, mode "+�sm+" "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
$h�
$rbpp%=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)
$�;� 3:bpp%=4:r$="FN8":�st%=F%+12 �defpal16 ��newropal(16)
$�:� 4:bpp%=8:r$="FN8":�st%=F%+12 �defpal ��newropal(256)
$�&� 5:bpp%=16:r$="FN16":�st%=F%+12 �
$�$� rpal%(255),gpal%(255):step24=2
$�
�C%=0�255
$�"gpal%(C%)=(C%>>5)<<8 � (C%�31)
$�+rpal%(C%)=((C%>>2)�31)<<16 � (C%�3)<<11
$��
$�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
%0G�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%
%DJinfo$="New RISC OS sprite, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
%N�bpp%=32 input=24
%X�
%b�#c%=st%:cache%=�
%l	� 100
%vEquant%=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"
%�	� 200
%�Gquant%=8:�#c%=5:sx%=�HW:sy%=�HW:sx%=(�HW-sx%+2)/2:sy%=(�HW-sy%+2)/2
%�$�#c%=&1a:cadsoft%=�#c%:�#c%=&200
%�!�C%=0�255:r%(C%)=�#c%/255*F:�
%�!�C%=0�255:g%(C%)=�#c%/255*F:�
%�!�C%=0�255:b%(C%)=�#c%/255*F:�
%�-�#c%=&600:st%=&600:cache%=�:�cadsoft%=2 �
%�Crep%=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%
&4
�C%=0�255
&>.rpal%(C%)=C%�7 � (C%�64)<<2 � (C%�&38)<<13
&HSgpal%(C%)=(C%�4)<<1�C%�16 � ((C%�3)<<1�(C%�&60)>>2)<<8 � (C%�8�(C%�128)>>3)<<16
&R�
&\1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
&f*pbuff%=�dim(sx%):�scale% ymul%=ymul%*2
&pGinfo$="ArVis image, "+�sx%+" by "+�sy%+" pixels, 15 bits per pixel"
&z	� 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
&�:�nopal:input=24:rep%=0:cachebytes%=�:cache%=�:step24=3
&�^info$="RT image. run length encoded image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
&�	� 500
&�,compression=5:�#c%=6:GIFsx=�HW:GIFsy=�HW
&�8GIF=�#c%:GIFback=�#c%:GIFext=�#c%:quant%=(GIF � 7)+1
&��GIF � &80 �
&��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"
'8/�"Continue with monitor's size [Y or y]?"A$
'B&�A$="Y"�A$="y" sx%=GIFsx:sy%=GIFsy
'L(�"Continuing with ";sx%"x by "sy%"y"
'V�
'`�
'j)GIF=�#c%:�GIF � &40 flag=501:r$="FN8"
'tJsetcodes%=�#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%:�
'�Ainfo$="GIF file, "+�sx%+" by "+�sy%+" pixels, "+�bits(quant%)
'�	� 600
'�quant%=8:�#c%=&5c:�C%=0�255
'�9r%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:b%(C%)=�#c%/255*F
'��
'��#c%=&36e:sy%=�HW:sx%=�HW
'�5st%=&380:�#c%=st%:rowbytes%=sx%:r$="FN8":cache%=�
'�Einfo$=".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
(24plbuff%=�dim(sx%):rep%=0:wt%=0:wtsx%=plbuff%+sx%
(<cache%=�:cachebytes%=�
(F@�C%=0�255:r%(C%)=(C%�63)/63*F:�:g%()=r%():b%()=r%():quant%=6
(PJinfo$="Watford digitiser picture, 512 by 256 pixels, 6 bits per pixel"
(Z	� 801
(d;sx%=512:sy%=256:input=24:quant%=6:�scale% ymul%=ymul%*2
(n0rep1%=0:wt1%=0:rep2%=0:wt2%=0:rep3%=0:wt3%=0
(x=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%()
(�Rinfo$="Triple Watford digitiser picture, 512 by 256 pixels, 18 bits per pixel"
(�	� 900
(�'quant%=8:st%=0:�#c%=0:�#c%=65536 �
(�7sx%=256:sy%=256:�scale% ymul%=ymul%*2:xmul%=xmul%*2
(��
(�sx%=512:sy%=512
(��
(�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
)63�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"
)J	� 902
)TBquant%=4:�#c%=8:sx%=�W:rowbytes%=sx%*3/2:sy%=�W:st%=20:�#c%=20
)^�scale% ymul%=ymul%*2
)hMplbuff%=�dim(sx%*3):rb%=plbuff%:gb%=plbuff%+sx%:bb%=plbuff%+sx%*2:rbo%=-1
)r@�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
)�\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
)�
�C%=0�255
)�"gpal%(C%)=(C%>>5)<<8 � (C%�31)
)�+rpal%(C%)=((C%>>2)�31)<<16 � (C%�3)<<11
)��
)�1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
)�_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%)
*0"ș12,4,c%,ctable%,st%:st%=�#c%
*:.pa%=ctable%:rep%=0:rep2%=0:pasx%=buff%+sx%
*DAinfo$="ProArtisan image, 640 by 256 pixels, 8 bits per pixel"
*N
� 1100
*X@quant%=1:�#c%=4:sx%=�beW:sy%=�beW:input=�beW:bigendianbits=�
*bS%=�beW:S%=�beW
*lIcache%=�:�S%=2 cachebytes%=�:info$="Byte Encoded " �info$="":r$="FN8"
*vC%=�beW
*�D%=�beW
*�Ȏ C% �
*�	� 1,2
*�$�I%=0�D%/3-1:r%(I%)=�#c%/255*F:�
*�$�I%=0�D%/3-1:g%(I%)=�#c%/255*F:�
*�$�I%=0�D%/3-1:b%(I%)=�#c%/255*F:�
*�
*�Ȏ input �
*�� 1:r%(0)=F:g%(0)=F:b%(0)=F
*�� 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
+4�S%=1 bbo%=0:rbo%=2
+>&:� 42,"Can't do this Sun pixrect"
+H�
+RMst%=D%+&20:rep%=0:�cachebytes% plbuff%=�dim(rowbytes%):plbytes%=rowbytes%
+\Binfo$+="Sun image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
+f
� 1200
+p>quant%=8:sx%=800:sy%=800:st%=1600:�#c%=st%:vflip%=� vflip%
+z*�nopal:r$="FN8":rowbytes%=sx%:cache%=�
+�Iinfo$="TimeStep satellite image, 800 by 800 pixels, 8 bits per pixel"
+�
� 1300
+�?quant%=8:sx%=128:sy%=256:st%=0:�#c%=0:�scale% xmul%=xmul%*2
+�*�nopal:r$="FN8":rowbytes%=sx%:cache%=�
+�@info$="satellite image, 128 by 256 pixels, 8 bits per pixel"
+�
� 1301
+�;input=24:quant%=8:sx%=128:sy%=256:�scale% xmul%=xmul%*2
+�Obuff%=�dim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+2*sx%:�nopal:r$="FN901"
+�Hinfo$="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
,8#ymul%=ymul%*ph%:ydiv%=ydiv%*282
,B�
,LWrowbytes%=sx%+7>>3:pbuff%=�dim(sx%):plbytes%=rowbytes%*planes%:buff%=�dim(plbytes%)
,V�#c%=st%:vrep%=0
,`M�C%=0�(1<<planes%)-1:r%(C%)=F-C%/((1<<planes%)-1)*F:�:g%()=r%():b%()=r%()
,jBinfo$="IMG file, "+�sx%+" by "+�sy%+" pixels, "+�bits(planes%)
,t
� 1500
,~"�#c%=4:dir%=�tiff(4):�#c%=dir%
,�6rgb=�:greyunit=100:planar%=1:fillorder=1:resunit=2
,�)xnum%=90:xdenom%=1:ynum%=90:ydenom%=1
,�E%=�tiff(3):�Z%=1�E%
,�'T%=�tiff(3):D%=�tiff(3):C%=�tiff(4)
,�a�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)
,�Ȏ T% �
,�� 256:sx%=V%
,�� 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
-(�
-2 quant%=V% � &FF:input=quant%
-<5�I%=0�(1<<quant%)-1:r%(I%)=I%/((1<<quant%)-1)*F:�
-Fg%()=r%():b%()=r%()
-P�
-Z�#c%=dir%+2+Z%*12
-d�
-nquant%=V%:input=quant%
-x5�I%=0�(1<<quant%)-1:r%(I%)=I%/((1<<quant%)-1)*F:�
-�g%()=r%():b%()=r%()
-��
-�� 259:compression=V%
-�/� 262:photometric=V%:�V%=0 invert%=�invert%
-�� 266:fillorder=V%
-�!� 273:stc%=C%:stv%=V%:std%=D%
-�1� 277:sampperpix%=V%:input=quant%*V%:rgb=V%=3
-�� 278:striprows%=V%
-�-� 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
.6� 296:resunit=V%
.@� 317:hpredict%=V%
.J8� 320:�#c%=V%:�I%=0�C%/3-1:r%(I%)=�tiff(3)/65535*F:�
.T*�I%=0�C%/3-1:g%(I%)=�tiff(3)/65535*F:�
.^*�I%=0�C%/3-1:b%(I%)=�tiff(3)/65535*F:�
.h�#c%=dir%+2+Z%*12
.r
.|J�info% �"Ignoring tag ";T%" datatype "D%" count "C%" value/pointer "V%
.��
.��
.�� st%(stc%):�stc%>1 �
.�0�#c%=stv%:�I%=0�stc%-1:st%(I%)=�tiff(std%):�
.��
.�st%(0)=stv%
.��
.�Ȏ 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"
/0 � 6:info$="JPEG compressed "
/:2 info$="Compress "+�compression+" - unknown "
/D�
/NBinfo$+="TIFF file, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
/XSbigendianbits=fillorder=1:�#c%=st%(0):stripptr=0:�striprows%>=sy% striprows%=-1
/bȎ input �
/l� 1:rowbytes%=sx%+7>>3
/v� 2:rowbytes%=sx%+3>>2
/�� 4:rowbytes%=sx%+1>>1
/�� 8:rowbytes%=sx%
/�� 24:rowbytes%=3*sx%
/�+ � 42,"Can't do "+�bits(input)+" TIFF"
/��
/�.�planar%=2 rowbytes%=rowbytes%*sampperpix%
/�I�planar%<>1 � rgb<>0 �42,"Can't do this style of TIFF yet" �planar%=�
/�� compression<2 �
/�Scache%=�:stripptr=-1:r$="FN8":�input=24 rbo%=0:gbo%=1:bbo%=2:step24=3:r$="FN24"
/��
/�'�compression=5 �compression=32773 �
/�-cache%=�:cachebytes%=rowbytes%*striprows%
/�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*�
04�
0>
�scale% �
0HS%=resunit:�S%=2 S%=90
0R�S%=3 S%=35
0\,xdiv%=xdiv%*xnum%:xmul%=xmul%*xdenom%*S%
0f,ydiv%=ydiv%*ynum%:ymul%=ymul%*ydenom%*S%
0p�
0z�r$="FN1500" r$="FN8"
0�
� 1600
0��#c%=12:camg=0:planar%=�:�
0�&S$=��#c%+��#c%+��#c%+��#c%:S%=�beW
0�Ȏ S$ �
0�C� "BMHD":sx%=�beHW:sy%=�beHW:S%=�W:planes%=�#c%:masking%=�#c%=1
0�6compression=�#c%:S%=�#c%+�HW:U%=�#c%:V%=�#c%:S%=�W
0�)�scale% ymul%=ymul%*V%:ydiv%=ydiv%*U%
0�K�I%=0�(1<<planes%)-1:r%(I%)=I%/((1<<planes%)-1)*F:�:g%()=r%():b%()=r%()
0�B� "CMAP":S%=�#c%+S%:�I%=0�(1<<planes%)-1:r%(I%)=(�#c%>>4)/15*F
0�1g%(I%)=(�#c%>>4)/15*F:b%(I%)=(�#c%>>4)/15*F:�
0�G�#c%=S%:�info% �"Warning: truncated IFF CMAP information to 4 bits"
0�;� "CAMG":camg=�beW:�info% �"Amiga viewport mode ";~camg
0�� "BODY":st%=�#c%
14 � info% �"Ignoring IFF property "S$" size ";S%
1�#c%=�#c%+S%
1�
1$9�S$="BODY":�compression info$="Compressed " �info$=""
18+ham=(camg � &800)<>0:�ham info$+="HAM "
1B4half=(camg � &80)<>0:�half info$+="half-bright "
1Ln�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:�
1VCinfo$+="IFF file, "+�sx%+" by "+�sy%+" pixels, "+�bits(planes%)
1`+�masking% info$+=" with mask (ignored)"
1j7rowbytes%=(sx%+15>>4)<<1:plbytes%=rowbytes%*planes%
1t9pbuff%=�dim(sx%):r$="FN"+�(1600+compression):cache%=�
1~�compression �
1�(cachebytes%=�:plbuff%=�dim(plbytes%)
1��
1�Qrealrowbytes%=rowbytes%:rowbytes%=plbytes%:�masking% rowbytes%+=realrowbytes%
1��
1��#c%=st%
1�
� 1700
1�Bsx%=640:rowbytes%=80:sy%=350:planes%=4:plbytes%=4*80:planar%=�
1�3buff%=�dim(80*4):pbuff%=�dim(640):G=F/3:H=F*2/3
1�(r%()=0,0,0,0,F,F,F,H,G,G,G,G,F,F,F,F
1�(g%()=0,0,F,F,0,0,F,H,G,G,F,F,G,G,F,F
1�(b%()=0,F,0,F,0,F,0,H,G,F,G,F,G,F,G,F
1�Vmasking%=�:r$="FN1600":st%=16:�#c%=16:cache%=�:realrowbytes%=80:rowbytes%=plbytes%
2Sinfo$="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)
2cache%=�:cachebytes%=�
2(Qr%(0)=F:g%(0)=F:b%(0)=F:bigendianbits=�:rowbytes%=72:r$="FN1501":rowstogo%=-1
22G�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)
2F
� 1850
2P�#c%=552
2Z4code%=�beHW:�code%=1 �#c%=�#c%+�beHW:code%=�beHW
2dȎ code% �
2nI� &98:rowbytes%=�beHW:�(rowbytes% �&8000)=0 �42,"PICT without Pixmap"
2x3sy%=�beHW:sx%=�beHW:sy%=�beHW-sy%:sx%=�beHW-sx%
2�<junk%=�HW:packtype%=�beHW:junk%=�W:resx%=�beW:resy%=�beW
2�F�beHW<>0 �#c%:�42,"ChangeFSI expected Mac PICT2 pixeltype=Chunky"
2�&bpp%=�beHW:junk%=�beHW:junk%=�beHW
2�$junk%=�beW:junk%=�beW:junk%=�beW
2�junk%=�beW:junk%=�beHW
2�_C%=�beHW:�I%=0�C%:J%=�beHW:r%(J%)=�beHW/65535*F:g%(J%)=�beHW/65535*F:b%(J%)=�beHW/65535*F:�
2�R� &9A:junk%=�W:rowbytes%=�beHW:�(rowbytes% �&8000)=0 �42,"PICT without Pixmap"
2�3sy%=�beHW:sx%=�beHW:sy%=�beHW-sy%:sx%=�beHW-sx%
2�<junk%=�HW:packtype%=�beHW:junk%=�W:resx%=�beW:resy%=�beW
2�J�beHW<>16 �#c%:�42,"ChangeFSI expected Mac PICT2 pixeltype=RGBDirect"
2�'bpp%=�beHW:comps%=�beHW:junk%=�beHW
2�junk%=�beW:junk%=�beW
2�junk%=�beHW:junk%=�beHW
3V�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%
3C:�#c%:�42,"ChangeFSI can't understand Mac PICT2 code "+�~code%
3"�
3,3junk%=�beHW:junk%=�beHW:junk%=�beHW:junk%=�beHW
363junk%=�beHW:junk%=�beHW:junk%=�beHW:junk%=�beHW
3@junk%=�beHW
3JNcache%=�:cachebytes%=�:bigendianbits=�:st%=�#c%:rowbytes%=rowbytes%��&8000
3TW�scale% xmul%=xmul%*90*65536:xdiv%=xdiv%*resx:ymul%=ymul%*90*65536:ydiv%=ydiv%*resy
3^@info$="Mac PICT2, "+�sx%+" by "+�sy%+" pixels, "+�bits(bpp%)
3h%plbuff%=�dim(rowbytes%):�bpp%>8 �
3rTrbo%=-1:rb%=plbuff%+sx%:gb%=plbuff%+sx%*2:bb%=plbuff%+sx%*3:r$="FN1851":input=24
3|;�comps%=3 rb%=plbuff%:gb%=plbuff%+sx%:bb%=plbuff%+sx%*2
3��
3�
� 1900
3��#c%=1:C%=�#c%
3�?E%=�#c%:�E%<>1 � 42,"ZSoft .PCX file with unknown encoding"
3�7E%=�#c%:sx%=�HW:sy%=�HW:sx%=�HW+1-sx%:sy%=�HW+1-sy%
3�N�scale% xmul%=xmul%*90:xdiv%=xdiv%*�HW:ymul%=ymul%*90:ydiv%=ydiv%*�HW ��W
3�H�#c%=65:planes%=�#c%:planar%=planes%>1:rowbytes%=�HW:bpp%=E%*planes%
3�pcxpal=16:�bpp%>4 � C%=5 �
3�*�#c%=�#c%-769:�#c%=12 pcxpal=�#c%-768
3��
3�5�#c%=pcxpal:E%=0:�C%=0�(1<<bpp%)*3-1:E%=E%��#c%:�
3�3�info% �".PCX palette mask established at ";~E%
3��E%=0 �
4E�C%=0�(1<<bpp%)-1:r%(C%)=C%/((1<<bpp%)-1)*F:�:g%()=r%():b%()=r%()
4�
4!�#c%=pcxpal:�C%=0�(1<<bpp%)-1
4&Er%(C%)=(�#c%�E%)/E%*F:g%(C%)=(�#c%�E%)/E%*F:b%(C%)=(�#c%�E%)/E%*F
40�
4:�
4D�rewind
4NLplbytes%=rowbytes%*planes%:plbuff%=�dim(plbytes%):cache%=�:cachebytes%=�
4XE�planar% pbuff%=�dim(sx%) �input=bpp%:bigendianbits=�:r$="FN1100"
4bFinfo$="ZSoft .PCX file, "+�sx%+" by "+�sy%+" pixels, "+�bits(bpp%)
4l
� 2000
4v8�#c%=0:L%=�#c%:C%=�#c%:I%=�#c%:J%=�HW:K%=�HW:M%=�#c%
4�Csx%=�W:sx%=�HW:sy%=�HW:B%=�#c%:ID%=�#c%:�ID%�&10 hflip%=�hflip%
4� �(ID% �&20)=0 vflip%=�vflip%
4��#c%=�#c%+L%:Ȏ C% �
4�� 1:�M%=&18 �
4��C%=J%�K%-1
4�9b%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:r%(C%)=�#c%/255*F
4��
4��
4��
4� �nopal
4��
4�st%=�#c%
4�Ȏ I% �
5� 1,2,3:cache%=�:�B%>8 �
5�B%>16 �
5Linput=24:bbo%=0:gbo%=1:rbo%=2:step24=B%�8:r$="FN24":rowbytes%=step24*sx%
5 �
5*rowbytes%=sx%*2
547� rpal%(255),gpal%(255):input=16:step24=2:r$="FN16"
5>
�C%=0�255
5H&gpal%(C%)=(C%>>5)<<8 � (C%�31)<<16
5R%rpal%(C%)=(C%>>2)�31 � (C%�3)<<11
5\�
5f1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
5p�
5z�
5�r$="FN8":rowbytes%=sx%
5��
5�Iinfo$="Truevision TGA image, "+�sx%+" by "+�sy%+" pixels, "+�bits(B%)
5�D� 9,10,11:step24=B%�8:rowbytes%=step24*sx%:buff%=�dim(rowbytes%)
5��B%>8 �
5��B%>16 �
5�:input=24:bb%=buff%:gb%=buff%+1:rb%=buff%+2:r$="FN2002"
5��
5�9� rpal%(255),gpal%(255):input=16:step24=2:r$="FN2001"
5�
�C%=0�255
5�&gpal%(C%)=(C%>>5)<<8 � (C%�31)<<16
5�%rpal%(C%)=(C%>>2)�31 � (C%�3)<<11
5��
61�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
6�
6�
6$Minfo$="Truevision TGA RLE image, "+�sx%+" by "+�sy%+" pixels, "+�bits(B%)
6.�
68
� 2100
6B?quant%=6:sx%=512:rowbytes%=2*sx%:sy%=256:cache%=�:r$="FN16"
6L-� rpal%(255),gpal%(255):input=16:step24=2
6V
�C%=0�255
6` gpal%(C%)=C%>>3 � (C%�7)<<11
6j%rpal%(C%)=(C%�7)<<8 � (C%>>3)<<16
6t�
6~'�C%=0�31:r%(C%)=C%/31*F:�:b%()=r%()
6��C%=0�63:g%(C%)=C%/63*F:�
6��scale% ymul%=ymul%*2
6�Hinfo$="Pineapple image, 512 by 256 pixels, 16 bits per pixel":�#c%=7
6�
� 2200
6�9quant%=8:step24=1:�#c%=0:s$=�#c%:E%=�s$,":"):st%=�#c%
6�7sx%=��s$,E%+1):sy%=��s$,E%+2+��sx%):�nopal:input=24
6�Arowbytes%=sx%*3:rbo%=0:gbo%=sx%:bbo%=2*sx%:cache%=�:r$="FN24"
6�Ginfo$="Irlam image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
6�
� 2250
6�H�#c%=16:sx%=�W:sy%=�W:� rpal%(255),gpal%(255),bpal%(255),table%(255)
6��C%=0�255:D%=C%�1
6�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)
7�
7(,table%()=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
725st%=32:�#c%=32:cache%=�:rowbytes%=2*sx%:input=411
7<<info$="Irlam YUV 4:1:1 file "+�sx%+" by "+�sy%+" pixels"
7F
� 2300
7P9�#c%=6:sx%=�HW:sy%=�HW:D%=�#c%:ncolors%=�#c%:input=24
7Z;vflip%=�vflip%:quant%=�#c%:ncmap%=�#c%:cmaplen%=1<<�#c%
7d!�nopal:back%=�dim(4):!back%=0
7nclrfirst%=D%�1
7x�(D%�2)=0 �
7�$�I%=0�ncolors%-1:back%?I%=�#c%:�
7��(ncolors%�1)=0 �#c%
7��
7��D%�4 alpha%=�dim(sx%)
7��ncmap%>0 �
7�)�I%=0�cmaplen%-1:r%(I%)=�HW/&FF00*F:�
7�)�I%=0�cmaplen%-1:g%(I%)=�HW/&FF00*F:�
7�)�I%=0�cmaplen%-1:b%(I%)=�HW/&FF00*F:�
7��
7��D%�8 �
7�%�#c%=�HW+�#c%:�#c%�1 �#c%=�#c%+1
7��
7�Hst%=�#c%:buff%=�dim(sx%*3):rb%=buff%:gb%=buff%+1*sx%:bb%=buff%+2*sx%
8�rewind
8Pinfo$="Utah rle image, "+�sx%+" by "+�sy%+" pixels, "+�bits(ncolors%*quant%)
8
� 2400
8")�#c%=&0a:st%=�W:pal%=�W:sx%=�W:sy%=�W
8,6�#c%=&1c:input=�#c%:bigendianbits=�:vflip%=�vflip%
86Ȏ input �
8@� 1:rowbytes%=sx%+7>>3
8J� 4:rowbytes%=sx%+1>>1
8T� 8:rowbytes%=sx%
8^4 � 42,".BMP file of unusual depth ("+�input+")"
8h�
8rrowbytes%=rowbytes%+3��3
8|�#c%=&36:�C%=0�2^input-1
8�?b%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:r%(C%)=�#c%/255*F:�#c%
8��
8�r$="FN8":st%=�#c%:cache%=�
8�Ninfo$="Windows 3.0 .BMP image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
8�
� 2500
8�2�#c%=0:s$="":C%=�#c%:ȕC%<>0 s$+=�C%:C%=�#c%:�
8�7s$+=" version "+äW:sx%=�W:sy%=�W:input=�W:cache%=�
8�_info$="!Translator Clear format made by "+s$+", "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
8��input>8 �
8�K�nopal:input=24:step24=3:rowbytes%=3*sx%:rbo%=0:gbo%=1:bbo%=2:r$="FN24"
8��
8��C%=0�2^input-1
8�9r%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:b%(C%)=�#c%/255*F
9�
9"input=8:r$="FN8":rowbytes%=sx%
9�
9&st%=�#c%
90
� 2600
9:�#c%=0:C%=�#c%
9DD%=�#c%:Ȏ D% �
9N!� 0:sx%=320:sy%=200:planes%=4
9X!� 1:sx%=640:sy%=200:planes%=2
9b!� 2:sx%=640:sy%=400:planes%=1
9l? �42,"ChangeFSI knows nothing of "+�C%+" type Degas files"
9v�
9�]�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:�
9�<cache%=�:planar%=�:masking%=�:st%=34:�#c%=34:r$="FN1600"
9�Hrowbytes%=(sx%+15>>4)<<1:plbytes%=rowbytes%*planes%:pbuff%=�dim(sx%)
9�j�C%�128 r$="FN1601":flag=1600:cachebytes%=�:plbuff%=�dim(plbytes%) �realrowbytes%=2:rowbytes%=plbytes%
9�Cinfo$="Degas file "+�sx%+" by "+�sy%+" pixels, "+�bits(planes%)
9�
� 2700
9��#c%=4:sx%=�HW:sy%=�HW
9�Ȏ �HW �
9�2� &AF:rowbytes%=sx%:cache%=�:r$="FN8":st%=&30A
9�R �#c%:� 42,"Panic in ColoRIX reading - ChangeFSI largely ignorant of format!"
9��
9��C%=0�2^input-1
9�6r%(C%)=�#c%/63*F:g%(C%)=�#c%/63*F:b%(C%)=�#c%/63*F
:�
:�#c%=st%
:Cinfo$="ColoRIX file "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
: 
� 2800
:*!�#c%=0:� s$=�fits:Ȏ �s$,8) �
:4Q� "SIMPLE  ":�s$,30,1)<>"T" �42,"ChangeFSI can only read Simple FITS format"
:>� "BITPIX  ":input=��s$,10)
:HJ� "NAXIS   ":�s$,10)<>2 �42,"ChangeFSI can only read 2d FITS images"
:R� "NAXIS1  ":sx%=��s$,10)
:\� "NAXIS2  ":sy%=��s$,10)
:f� "END     "
:p' �info% �"Ignoring FITS record "s$
:z�
:���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)
;
� 2900
;<�#c%=4:sx%=�beHW:sy%=�beHW:�#c%=&42:input=�beHW:C%=�beHW
;=rowbytes%=�beHW:C%=�beW:st%=�beW:�#c%=st%:r$="FN8":�nopal
;$#� rpal%(15),gpal%(15),bpal%(15)
;.Irpal%()=&e6,&23,&e6,&7f,&17,&00,&a1,&45,&e6,&4a,&e6,&73,&6e,&47,&8a,0
;8Igpal%()=&e6,&78,&00,&23,&a1,&73,&2e,&2e,&c8,&a6,&75,&40,&b8,&78,&55,0
;BIbpal%()=&b8,&e6,&00,&a1,&17,&2e,&0c,&2e,&00,&c6,&00,&e6,&00,&00,&00,0
;Lk�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%=�
;VFinfo$="Apollo GPR file "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
;`
� 3000
;jHsx%=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)
<�
<
�
<<table%()=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
<:st%=0:�#c%=0:cache%=�:rowbytes%=1440:input=422:gamma=1
<(�scale% ymul%=ymul%*2
<2:info$="CCIR601 4:2:2 file "+�sx%+" by "+�sy%+" pixels"
<<
� 3100
<F$quant%=8:�#c%=0:a$=�#c%:st%=�#c%
<P sx%=�a$:sy%=�(�a$,�a$," ")))
<Z,�nopal:input=24:step24=3:rowbytes%=sx%*3
<d4rbo%=0:gbo%=1:bbo%=2:cache%=�:flag=700:r$="FN24"
<nQinfo$="!RayShade 'RGB' image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
<x
� 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
=cache%=�:Ȏ input �
=D� 4:input=1:r$="FN8":r%(0)=F:g%()=r%():b%()=r%():bigendianbits=�
=rowbytes%=(sx%+7)�8
="!� 5:input=8:r$="FN8":E%=��GET
=,1�C%=0�E%:r%(C%)=C%/E%*F:�:g%()=r%():b%()=r%()
=6rowbytes%=sx%
=@A� 6:input=24:r$="FN24":E%=��GET:step24=3:rbo%=0:gbo%=1:bbo%=2
=J1�C%=0�E%:r%(C%)=C%/E%*F:�:g%()=r%():b%()=r%()
=Trowbytes%=sx%*3
=^�
=hst%=�#c%:flag=700
=rBinfo$+="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
>�#c%=0:info$=�GET
>3ybits%=��info$,�info$," ")):ymax%=(1<<ybits%)-1
>:ubits%=��info$,�info$,"Y ")+1):umax%=(1<<(ubits%-1))-1
>&:vbits%=��info$,�info$,"U ")+1):vmax%=(1<<(vbits%-1))-1
>0&s$=�GET:sx%=�s$:sy%=��s$,�s$," "))
>:2� rpal%(255),gpal%(255),bpal%(255),table%(255)
>D'�C%=0�ymax%:table%(C%)=C%/ymax%*F:�
>ND%=(1<<ubits%)-1
>X-�C%=0�D%:d=C%/umax%:�d>1 d=-(D%-C%)/umax%
>b;b%(C%)=�(d*(1-bwt)*F):gpal%(C%)=�(-d*(1-bwt)*bwt/gwt*F)
>l�
>vD%=(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
>�8input=1:r%(0)=F:g%(0)=F:b%(0)=F:rowbytes%=sx%/8+1��1
>��E%=1 �
>�st%+=�#c%:�#c%=st%
>�cache%=�:r$="FN8"
>�Kinfo$="Pocketbook bitmap, "+�sx%+" by "+�sy%+" pixels, 1 bit per pixel"
>��
?planar%=�:planes%=2
?�
?
� 3600
? Bpcdblk%=�dim(40):ș&20023,"ChangeFSI$PCDindex",pcdblk%,20 �,,Z
?*5�Z �pcdblk%?Z=13:pcdindex%=�$pcdblk% �pcdindex%=3
?4Bș"PhotoCD_Open",1,c%,1 � pcdh%:ș"PhotoCD_GetCount",pcdh% �,Z
?>?�(Z>>pcdindex%)=0 �#c%:�42,"Desired resolution unavailable"
?H+ș"PhotoCD_GetRotation",pcdh% �,,pcdtr%
?R5ș"PhotoCD_GetSize",pcdh%,,pcdindex% �,,,,sx%,sy%
?\)pcdblk%!0=0:pcdblk%!8=sx%:pcdblk%!4=0
?f7pcdblk%!16=0:pcdblk%!20=2:pcdblk%!24=1:pcdblk%!28=3
?zȎ pcdtr% �
?�� 0
?�� &80000000:hflip%=�hflip%
?�� 90
?�Ȏ rotate% �
?�� 0:rotate%=1
?�� -1:rotate%=0
?�/� 1:rotate%=0:vflip%=�vflip%:hflip%=�hflip%
?��
?�� &8000005A
?�Ȏ rotate% �
?� � 0:rotate%=1:vflip%=�vflip%
?�!� -1:rotate%=0:vflip%=�vflip%
?� � 1:rotate%=0:hflip%=�hflip%
@�
@'� 180:hflip%=�hflip%:vflip%=�vflip%
@� &800000B4:vflip%=�vflip%
@$	� 270
@.Ȏ rotate% �
@8� 0:rotate%=-1
@B� 1:rotate%=0
@L0� -1:rotate%=0:vflip%=�vflip%:hflip%=�hflip%
@V�
@`� &8000010E
@jȎ rotate% �
@t!� 0:rotate%=-1:vflip%=�vflip%
@~ � 1:rotate%=0:vflip%=�vflip%
@�!� -1:rotate%=0:hflip%=�hflip%
@��
@� PANIC
@��
@�@input=24:step24=3:rbo%=0:gbo%=1:bbo%=2:pcdcachesize%=32*1024
@�Arowbytes%=sx%*3:�nopal:cache%=�:pcdcache%=�dim(pcdcachesize%)
@�Iinfo$="PhotoCD image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
@�
� 3700
@�4A%=�"<ChangeFSI$Dir>.CFSI-jpeg":jpeg%=�dim(�#A%)
@�ș12,4,A%,jpeg%,�#A%:�#A%
@�Cdatacache%=�cachedim(�#c%):�datacache%=-1 datacache%=�dim(�#c%)
A$�#c%=0:ș12,4,c%,datacache%,�#c%
A
QA%=datacache%:B%=jpegblk%:C%=jpegblk%+4:D%=jpegblk%+8:E%=jpegblk%+12:�jpeg%+8
A&B%=jpegblk%!12:jpegspace%=�dim(B%)
A'C%=datacache%:A%=jpegspace%:D%=�#c%
A(5�jpeg%:cache%=�:�!A% �42,"JPEG code error: "+�!A%
A25sx%=A%!20:sy%=A%!24:input=8*A%?28:�nopal:step24=4
A<Binfo$="JFIF image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
AF%jpegy%=sy%:r$="FN"+è(3700+input)
AP	� 666
A�?st%=0:�#c%=0:sx%=160:sy%=128:input=8:cache%=�:rowbytes%=sx%
A�<�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%():r$="FN8"
A�Minfo$="The number of the beast, 160 by "+�sy%+" pixels, 8 bits per pixel"
A��
A��info% �info$
A�#ș"Hourglass_On",1:hour%=&406c4
A�0�invert% r%()=F-r%():g%()=F-g%():b%()=F-b%()
B
Ȏ m �
BD� -1:x%=256:y%=256:ncol=256:�scaleo% xdiv%=xdiv%*2:ydiv%=ydiv%*2
B.� -2:x%=sx%:y%=sy%:�spm=18 ncol=1 �ncol=15
B"(� -3,-5,-6:x%=sx%:y%=sy%:ncol=2^15-1
B,(� -4,-7,-8:x%=sx%:y%=sy%:ncol=2^24-1
B6
B@5ș53,m,4 � ,,nx:ș53,m,5 � ,,ny:nx=1<<nx:ny=1<<ny
BJ1ș53,m,11 � ,,x%:ș53,m,12 � ,,y%:x%+=1:y%+=1
BT ș53,m,3 � ,,ncol:�scaleo% �
B^�rotate% �
Bh!xdiv%=xdiv%*ny:ydiv%=ydiv%*nx
Br�xdiv% ymul%=ymul%*2
B|�ydiv% xmul%=xmul%*2
B��
B�!xdiv%=xdiv%*nx:ydiv%=ydiv%*ny
B��xdiv% xmul%=xmul%*2
B��ydiv% ymul%=ymul%*2
B��
B��
B�!ș&62A51,m � r0;V:�(V �1)=0 �
B��r0=1 �
B�ncol=255:�m$<>"D" m$="R"
B��
B��
B��
C�m=-6 � m=-7 � m=-8 �
C*nx=��pnm$,5):ny=��pnm$,�pnm$,",",5)+1)
C�scaleo% �
C&�rotate% �
C0�xdiv% ymul%=ymul%*nx
C:�ydiv% xmul%=xmul%*ny
CD�
CN�xdiv% xmul%=xmul%*nx
CX�ydiv% ymul%=ymul%*ny
Cb�
Cl!xdiv%=xdiv%*90:ydiv%=ydiv%*90
Cv�
C��
C��rotate% Ȕ x%,y%
C��xdiv%=0 xdiv%=sx%
C��ydiv%=0 ydiv%=sy%
C��xs$="=" xmul%=x%:xdiv%=sx%
C��ys$="=" ymul%=y%:ydiv%=sy%
C��lock% �
C�M�xmul%/xdiv%>ymul%/ydiv% xmul%=ymul%:xdiv%=ydiv% �ymul%=xmul%:ydiv%=xdiv%
C��
C�
�ncol=1 �
C�Ȏ m$ �
C�$�"C":xdiv%=xdiv%*4:ydiv%=ydiv%*4
D� A%(16),B%(16)
D�A%()=0,&00000001,&08000001,&08000101,&08080101,&08080103,&0C080103,&0C080303,&0C0C0303,&0C0E0303,&0C0E0703,&0E0E0703,&0E0E0707,&0E0F0707,&0E0F0F07,&0F0F0F07,&0F0F0F0F
D�B%()=0,&00000008,&01000008,&01000808,&01010808,&0101080C,&0301080C,&03010C0C,&03030C0C,&03070C0C,&03070E0C,&07070E0C,&07070E0E,&070F0E0E,&070F0F0E,&0F0F0F0E,&0F0F0F0F
D 2even_gard=�dim(17*32*4):odd_gard=�dim(17*32*4)
D*C�I%=0�16:�J%=0�16:even_gard!(J%*32*4+I%*4)=A%(I%)�B%(J%)<<4:�:�
D4B�I%=0�16:�J%=0�16:odd_gard!(I%*32*4+J%*4)=B%(I%)�A%(J%)<<4:�:�
D>$�"T":xdiv%=xdiv%*3:ydiv%=ydiv%*3
DH� A%(9),B%(9)
DR@A%()=0,&0001,&4001,&4041,&4043,&40C3,&60C3,&61C3,&71C3,&71C7
D\@B%()=0,&0004,&1004,&1104,&1106,&1186,&3186,&31C6,&71C6,&71C7
Df2even_gard=�dim(10*16*4):odd_gard=�dim(10*16*4)
DpA�I%=0�9:�J%=0�9:even_gard!(J%*16*4+I%*4)=A%(I%)�B%(J%)<<3:�:�
Dz@�I%=0�9:�J%=0�9:odd_gard!(I%*16*4+J%*4)=B%(I%)�A%(J%)<<3:�:�
D�$�"D":xdiv%=xdiv%*2:ydiv%=ydiv%*2
D�� A%(4),B%(4)
D�A%()=0,&1,&21,&31,&33
D�B%()=0,&2,&12,&32,&33
D�*even_gard=�dim(5*8):odd_gard=�dim(5*8)
D�<�I%=0�4:�J%=0�4:even_gard?(J%*8+I%)=A%(I%)�B%(J%)<<2:�:�
D�;�I%=0�4:�J%=0�4:odd_gard?(I%*8+J%)=B%(I%)�A%(J%)<<2:�:�
D��
D��
D�-�reduce(xmul%,xdiv%):�reduce(ymul%,ydiv%)
D�@�info% �"Size ratios are x ";xmul%":"xdiv%" y "ymul%":"ydiv%
D�?x%=sx%*xmul%/xdiv%+.9999:y%=sy%*ymul%/ydiv%+.9999:rows%=sy%
D�order%=x%*y%>sx%*sy%
Ecode%=�dim(8192):SP=13
E
�cache% �
E�cachesize(code%)
E$�cachebytes% �
E.:filesize%=�#c%-�#c%:�cache%>filesize% cache%=filesize%
E89�cachebytes%>0 �cache%>cachebytes% cache%=cachebytes%
EBcacherows%=cache%
EL�
EV>filesize%=sy%*rowbytes%:�cache%<rowbytes% cache%=rowbytes%
E`&�cache%>filesize% cache%=filesize%
EjCcacherows%=striprows%:�cacherows%<1 cacherows%=cache%�rowbytes%
Etcache%=cacherows%*rowbytes%
E~�
E�Gdatacache%=�cachedim(cache%):�datacache%=-1 datacache%=�dim(cache%)
E��
E��ncol=255 �m$<>"D" m$="R"
E��m$="R" �(ncol=63 �m$="") �
E�+ș53,-1,3 �,,J%:�ncol=255 � �=m J%=ncol
E�$�ncol=63 �(m$=""�m$="R") J%=ncol
E�P�J%<>ncol �close:�42,"You must be in a "+�(ncol+1)+" colour mode to do this"
E�J%=ncol:�J%=63 J%=255
E�palette%=�dim((J%+1)*4)
E��ncol=255 �
E�4ș"ColourTrans_ReadPalette",-1,-1,palette%,256*4
E�5�I%=0�255:palette%!(I%<<2)=palette%!(I%<<2)>>>8:�
F�
F
�ncol=63 �
F
�I%=0�255
F+palette%!(I%<<2)=(I%�7 � (I%�16)>>1)*17
F(/palette%?(I%<<2 �1)=(I%�3 � (I%�&60)>>3)*17
F2;palette%?(I%<<2 �2)=(I%�3 � (I%�8)>>1 � (I%�128)>>4)*17
F<�
FF�
FPH�I%=0�ncol:ș"OS_ReadPalette",I%,16 � ,,i%:palette%!(I%<<2)=i%>>>8:�
FZ�
Fd�
Fn%t%=�:k%=palette%+1:nk%=palette%+2
Fx�I%=0�ncol*4�4
F�2�palette%?I%<>k%?I% � palette%?I%<>nk%?I% t%=�
F��
F��ncol>16 �t% m$="D"
F��ncol=15 �t% m$="T"
F�
�m$="R" �
F�7� sx%*xmul%/xdiv%*sy%*ymul%/ydiv%<200000 k%=3 �k%=4
F�nk%=8-k%
F�
t%=1<<nk%
F�mask%=t%-1
F�td2%=1<<nk%-1
F�step%=1<<(8-k%)
F�$ncol%=ncol+1:�ncol%=64 ncol%=256
F�ict%=�dim(2^(k%*3)*4-1)
Ga�cache%<8192*6 scratch%=�dim(8192*6):scratchsz%=8192*6 �scratch%=datacache%:scratchsz%=cache%
G>�info% �"Begin table generation with ";scratchsz%" bytes."
G
�Z%=0�2�2
G"P%=code%
G,[OPT Z%
G6
.make%
G@STMFD r13!,{r14}
GJLDR r4,ict
GTMOV r2,#step%/2
G^
.blueloop
GhMOV r1,#step%/2
Gr.greenloop
G|MOV r0,#step%/2
G�.redloop
G�MOV r3,r0,LSR #nk%
G�MOV r14,r1,LSR #nk%
G�MOV r5,r2,LSR #nk%
G��R r3,r3,r14,LSL #k%
G��R r3,r3,r5,LSL #k%*2
G�BL devious
G�ADD r0,r0,#step%*2
G�CMP r0,#256
G�BCC redloop
G�ADD r1,r1,#step%
G�CMP r1,#256
HBCC greenloop
HADD r2,r2,#step%
HCMP r2,#256
H&BCC blueloop
H0LDMFD r13!,{pc}^
H:.ct DCD palette%
HD.min DCD code%+8192-256*2*4
HN.ict DCD ict%
HX.fsaad DCD scratch%
Hb#.fsalim DCD scratch%+scratchsz%
Hl.devious
Hv&STMFD r13!,{r0,r1,r2,r3,r4,r8,r14}
H�BIC r0,r0,#(mask%<<1)+1 
H�BIC r1,r1,#mask%
H�BIC r2,r2,#mask%
H�
MOV r5,#0
H�
LDR r6,ct
H�MOV r9,#&ff0000
H�MOV r14,#&ff0000
H�LDR r12,min
H�.devloop
H�LDR r7,[r6,r5,LSL #2] 
H�MOV r8,r7,lsr #16 
IBIC r10,r8,#mask% 
IADD r11,r2,#t% 
ICMP r10,r2 
I BEQ blueequal
I*SUBCC r10,r2,r8 
I4SUBCC r11,r11,r8 
I>SUBCS r10,r8,r11 
IHSUBCS r11,r8,r2 
IRMUL r3,r10,r10 
I\
.doneblue
IfMUL r4,r11,r11 
IpMOV r8,r7,lsr #8
Iz� r8,r8,#255 
I�BIC r10,r8,#mask% 
I�ADD r11,r1,#t% 
I�CMP r10,r1  
I�BEQ greenequal
I�SUBCC r10,r1,r8 
I�SUBCC r11,r11,r8 
I�SUBCS r10,r8,r11 
I�SUBCS r11,r8,r1 
I�MLA r3,r10,r10,r3 
I�.donegreen
I�MLA r4,r11,r11,r4 
I�� r8,r7,#255 
JBIC r10,r8,#mask% 
JADD r11,r0,#t% 
JCMP r10,r0 
J$BEQ redequal0
J.SUBCC r10,r0,r8 
J8SUBCC r11,r11,r8 
JBSUBCS r10,r8,r11 
JLSUBCS r11,r8,r0 
JVMLA r7,r10,r10,r3 
J`STR r7,[r12,r5,LSL #2] 
Jj
.donered0
JtMLA r7,r11,r11,r4 
J~CMP r7,r9 
J�MOVCC r9,r7 
J�ADD r7,r0,#t% 
J�BIC r10,r8,#mask% 
J�ADD r11,r7,#t% 
J�CMP r10,r7 
J�BEQ redequal1
J�SUBCC r10,r7,r8 
J�SUBCC r11,r11,r8 
J�SUBCS r10,r8,r11 
J�SUBCS r11,r8,r7 
J�MLA r3,r10,r10,r3 
K
.donered1
K
ADD r7,r5,#ncol%
KSTR r3,[r12,r7,LSL #2] 
KMLA r7,r11,r11,r4 
K(CMP r7,r14 
K2MOVCC r14,r7 
K<ADD r5,r5,#1
KFCMP r5,#ncol%
KPBCC devloop
KZLDMFD r13!,{r0,r1,r2,r3,r4}
KnLDR r5,fsaad 
Kx
MOV r7,r5
K�MOV r10,#0
K�
.calcnum0
K�LDMIA r12!,{r8,r11} 
K�CMP r8,r9 
K�STRLEB r10,[r7],#1
K�ADD r10,r10,#1
K�CMP r11,r9 
K�STRLEB r10,[r7],#1
K�ADD r10,r10,#1
K�LDMIA r12!,{r8,r11} 
K�CMP r8,r9 
K�STRLEB r10,[r7],#1
K�ADD r10,r10,#1
LCMP r11,r9 
LSTRLEB r10,[r7],#1
LADD r10,r10,#1
L"CMP r10,#ncol%
L,BCC calcnum0
L6SUBS r10,r7,r5
L@SWIEQ 256+�"A"
LJCMP r10,#4 ;if<4 then
LT#MOVCC r7,r5 ;reset list pointer
L^"LDRCCB r5,[r7] ;first possible
Lh&LDRCCB r8,[r7,#1] ;second possible
Lr�RCC r5,r5,r8,lsl #8
L|%LDRCCB r8,[r7,#2] ;third possible
L��RCC r5,r5,r8,lsl #16
L�ADD r5,r5,r10,lsl #24
L�BIC r10,r3,#1
L�STR r5,[r4,r10,LSL #2]
L�
MOV r5,r7
L�MOV r10,#0
L�
.calcnum1
L�LDMIA r12!,{r8,r11} 
L�CMP r8,r14 
L�STRLEB r10,[r7],#1
L�ADD r10,r10,#1
L�CMP r11,r14 
L�STRLEB r10,[r7],#1
MADD r10,r10,#1
MLDMIA r12!,{r8,r11} 
MCMP r8,r14 
M&STRLEB r10,[r7],#1
M0ADD r10,r10,#1
M:CMP r11,r14 
MDSTRLEB r10,[r7],#1
MNADD r10,r10,#1
MXCMP r10,#ncol%
MbBCC calcnum1
MlSUBS r10,r7,r5
MvSWIEQ 256+�"B"
M�CMP r10,#4 ;if<4 then
M�MOVCC r7,r5 
M�LDRCCB r5,[r7] 
M�LDRCCB r8,[r7,#1] 
M��RCC r5,r5,r8,lsl #8
M�LDRCCB r8,[r7,#2] 
M��RCC r5,r5,r8,lsl #16
M�ADD r5,r5,r10,lsl #24
M��R r10,r3,#1
M�STR r5,[r4,r10,LSL #2]
M�STR r7,fsaad
M�LDR r8,fsalim
M�
CMP r7,r8
NSWICS 256+�"!"
NLDMFD r13!,{r8,pc}^
N.redequal0
N STR r3,[r12,r5,LSL #2] 
N*TST r8,#td2%
N4SUBNE r11,r8,r0 
N>SUBEQ r11,r11,r8 
NHB donered0
NR.redequal1
N\TST r8,#td2%
NfSUBNE r11,r8,r7 
NpSUBEQ r11,r11,r8 
NzB donered1
N�.greenequal
N�TST r8,#td2%
N�SUBNE r11,r8,r1 
N�SUBEQ r11,r11,r8 
N�B donegreen
N�.blueequal
N�MOV r3,#0 
N�TST r8,#td2%
N�SUBNE r11,r8,r2 
N�SUBEQ r11,r11,r8 
N�B doneblue
N�]
N��
OI%=�:�make%
Om�info% �"Generated 'r'";k%" tables for ";ncol%" colours using ";!fsaad-scratch%" bytes, taking "�-I%" cS"
O%safesubict%=�dim(!fsaad-scratch%)
O$:�I%=0�!fsaad-scratch%+4�4:safesubict%!I%=scratch%!I%:�
O.O�I%=0�2^(k%*3)*4-1�4:�(ict%!I%>>>24)>3 ict%!I%=ict%!I%-scratch%+safesubict%
O8�
OB�
OL�
OV�fast% ��<>0 �0
Oj
Ȏ m �
Ot� -1:col=0
O~� -3,-4,-5,-6,-7,-8:col=2
O�
O��m$="D" �ncol=3 m$=""
O�0col=0:�ncol>15 �m$="C" �m$="D" �m$="R" col=2
O�.�ncol=63 � ncol=255 �m$="D" col=0:ncol=256
O��
O�
�ncol=1 �
O�Ȏ m$ �
O��"C":col=0:x%=x%+1��1
O��"D":col=0:x%=x%+3��3
O��"T":col=0:x%=x%+1��1
O��
O��
P�sharpen%=� sharpen%=24
P
� cl%(x%+7,col)
P"� xl%(x%+7,col),xp%(sx%+7,col)
P� xl2%(x%+7,col)
P(�sharpen% �
P2
�order% �
P<4� rm%(sx%+7,col),rm1%(sx%+7,col),rm2%(sx%+7,col)
PF�
PP1� rm%(x%+7,col),rm1%(x%+7,col),rm2%(x%+7,col)
PZ�
Pd�
Pn"�hist%�equal% � vals%(256,col)
Px� nl%(x%+7,col)
P�totvals%=x%*(col+1)
P�totvals2%=sx%*(col+1)
P��Z=0�2�2:P%=code%
P�
Ȏ ncol �
P�� 2^24-1
P�
[OPT Z
P�.div255
P�]
P��I%=0�2^p6bits-1
P�
[OPT Z
P�EQUD I%/(2^p6bits-1)*F
P�]
P��
Q
[OPT Z
Q.fs%
QSTMFD SP !,{R14}
Q"!LDR R1,[R9,#5*8]:LDR R1,[R1] 
Q,LDR R10,[R9,#4*8] 
Q6LDR R11,[R9,#3*8] 
Q@$LDR R12,[R9,#2*8]:LDR R12,[R12] 
QJLDR R8,[R9,#8]:LDR R8,[R8] 
QTLDR R9,[R9]:LDR R9,[R9] 
Q^LDR R4,[R10] 
QhLDR R5,[R10,#4] 
QrLDR R6,[R10,#8] 
Q|ADR R7,div255
Q�.fsloop
Q�ADD R10,R10,R8 
Q�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
Q�WSUB R0,R4,R4,LSR #p6bits:ADD R0,R0,#1<<(bits-p6bits-1):MOV R0,R0,LSR #(bits-p6bits)
Q�&LDR R2,[R7,R0,LSL #2]:SUB R4,R4,R2
Q�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
Q�jSUB R3,R5,R5,LSR #p6bits:ADD R3,R3,#1<<(bits-p6bits-1):MOV R3,R3,LSR #(bits-p6bits):�R R0,R0,R3,LSL #8
Q�&LDR R2,[R7,R3,LSL #2]:SUB R5,R5,R2
Q�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
Q�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
Q�&LDR R2,[R7,R3,LSL #2]:SUB R6,R6,R2
Q�DSTRB R0,[R12]:MOV R0,R0,LSR #8:STRB R0,[R12,#1]:MOV R0,R0,LSR #8
Q�STRB R0,[R12,#2]
R]
R�m=-8 �
R
[OPT Z
R&ADD R12,R12,R1,LSL #2
R0]
R:�
RD
[OPT Z
RN(ADD R12,R12,R1,LSL #1:ADD R12,R12,R1
RX]
Rb�
Rl�dither% �
Rv
[OPT Z
R�ADD R0,R11,#4 
R�ADD R2,R4,R4,LSL #1 
R�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
R�STR R3,[R11,-R8]
R�ADD R2,R4,R4,LSL #2 
R�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
R�STR R3,[R11]
R�MOV R3,R4,ASR #4 
R�STR R3,[R11,R8]! 
R�RSB R2,R4,R4,LSL #3 
R�LDR R4,[R10] 
R�ADD R4,R4,R2,ASR #4 
R�ADD R2,R5,R5,LSL #1 
S(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
SSTR R3,[R0,-R8]
SMOV R3,R5,ASR #4 
S STR R3,[R0,R8] 
S*ADD R2,R5,R5,LSL #2 
S4$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
S>STR R3,[R0],#4 
SHRSB R2,R5,R5,LSL #3 
SRLDR R5,[R10,#4] 
S\ADD R5,R5,R2,ASR #4 
SfADD R2,R6,R6,LSL #1 
Sp(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
SzSTR R3,[R0,-R8]
S�ADD R2,R6,R6,LSL #2 
S�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
S�STR R3,[R0]
S�MOV R3,R6,ASR #4 
S�STR R3,[R0,R8] 
S�RSB R2,R6,R6,LSL #3 
S�LDR R6,[R10,#8] 
S�ADD R6,R6,R2,ASR #4 
S�]
S��
S�
[OPT Z
S�LDMIA R10,{R4,R5,R6}
S�]
T�
T
[OPT Z
TSUBS R9,R9,#1:BNE fsloop
T$LDMFD SP !,{PC}^
T.]
T8� 2^15-1
TB
[OPT Z
TL
.div31
TV]
T`�I%=0�31
Tj
[OPT Z
TtEQUD I%/31*F
T~]
T��
T�
[OPT Z
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]:LDR R12,[R12] 
T�LDR R8,[R9,#8]:LDR R8,[R8] 
T�LDR R9,[R9]:LDR R9,[R9] 
T�LDR R4,[R10] 
T�LDR R5,[R10,#4] 
ULDR R6,[R10,#8] 
U
ADR R7,div31
U.fsloop
UADD R10,R10,R8 
U(%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
U2FSUB R0,R4,R4,LSR #5:ADD R0,R0,#1<<(bits-6):MOV R0,R0,LSR #(bits-5)
U<&LDR R2,[R7,R0,LSL #2]:SUB R4,R4,R2
UF%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
UPYSUB R3,R5,R5,LSR #5:ADD R3,R3,#1<<(bits-6):MOV R3,R3,LSR #(bits-5):�R R0,R0,R3,LSL #5
UZ&LDR R2,[R7,R3,LSL #2]:SUB R5,R5,R2
Ud%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
UnZSUB R3,R6,R6,LSR #5:ADD R3,R3,#1<<(bits-6):MOV R3,R3,LSR #(bits-5):�R R0,R0,R3,LSL #10
Ux&LDR R2,[R7,R3,LSL #2]:SUB R6,R6,R2
U�ISTRB R0,[R12]:MOV R0,R0,LSR #8:STRB R0,[R12,#1]:ADD R12,R12,R1,LSL #1
U�]
U��dither% �
U�
[OPT Z
U�ADD R0,R11,#4 
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 
U�STR R3,[R11,R8]! 
VRSB R2,R4,R4,LSL #3 
VLDR R4,[R10] 
VADD R4,R4,R2,ASR #4 
V"ADD R2,R5,R5,LSL #1 
V,(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
V6STR R3,[R0,-R8]
V@MOV R3,R5,ASR #4 
VJSTR R3,[R0,R8] 
VTADD R2,R5,R5,LSL #2 
V^$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
VhSTR R3,[R0],#4 
VrRSB R2,R5,R5,LSL #3 
V|LDR R5,[R10,#4] 
V�ADD R5,R5,R2,ASR #4 
V�ADD R2,R6,R6,LSL #1 
V�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
V�STR R3,[R0,-R8]
V�ADD R2,R6,R6,LSL #2 
V�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
V�STR R3,[R0]
V�MOV R3,R6,ASR #4 
V�STR R3,[R0,R8] 
V�RSB R2,R6,R6,LSL #3 
V�LDR R6,[R10,#8] 
V�ADD R6,R6,R2,ASR #4 
V�]
W�
W
[OPT Z
WLDMIA R10,{R4,R5,R6}
W&]
W0�
W:
[OPT Z
WDSUBS R9,R9,#1:BNE fsloop
WNLDMFD SP !,{PC}^
WX]
Wb	� 256
Wl
[OPT Z
Wv.div255
W�]
W�
�I%=0�255
W�
[OPT Z
W�EQUD I%/255*F
W�]
W��
W�
[OPT Z
W�.fs%
W�STMFD SP !,{R14}
W�LDR R10,[R9,#4*8] 
W�ADR R7,div255
W�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
XLDR R11,[R9,#3*8] 
X$LDR R12,[R9,#2*8]:LDR R12,[R12] 
XLDR R8,[R9,#8]:LDR R8,[R8] 
X LDR R9,[R9]:LDR R9,[R9] 
X*LDR R4,[R10],R8 
X4.fsloop
X>%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
XHWSUB R0,R4,R4,LSR #8:ADD R0,R0,#1<<(bits-9):MOV R0,R0,LSR #(bits-8):STRB R0,[R12],R1
XRLDR R2,[R7,R0,LSL #2]
X\]
Xf�dither% �
Xp
[OPT Z
XzSUB R4,R4,R2 
X�MOVCS R4,#0
X�ADD R2,R4,R4,LSL #1 
X�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
X�STR R3,[R11,-R8]
X�ADD R2,R4,R4,LSL #2 
X�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
X�STR R3,[R11]
X�MOV R3,R4,ASR #4 
X�STR R3,[R11,R8]! 
X�RSB R2,R4,R4,LSL #3 
X�LDR R4,[R10],R8 
X�ADD R4,R4,R2,ASR #4 
X�]
Y�
Y
[OPT Z
YLDR R4,[R10],R8
Y$]
Y.�
Y8
[OPT Z
YBSUBS R9,R9,#1:BNE fsloop
YLLDMFD SP !,{PC}^
YV]
Y`� 63,255
Yjdiv15=P%:�I%=0�255*4�4
Yt
[OPT Z
Y~ EQUD (palette%!I%�&FF)/255*F
Y�#EQUD (palette%!I%>>8�&FF)/255*F
Y�$EQUD (palette%!I%>>16�&FF)/255*F
Y�]
Y��
Y�
�m$="R" �
Y�
[OPT Z
Y�.ictloc EQUD ict%
Y�]
Y��
Y�
[OPT Z
Y�EQUD div15
Y�.fs%
ZSTMFD SP !,{R14}
Z
!LDR R1,[R9,#5*8]:LDR R1,[R1] 
ZLDR R10,[R9,#4*8] 
ZLDR R11,[R9,#3*8] 
Z($LDR R12,[R9,#2*8]:LDR R12,[R12] 
Z2LDR R8,[R9,#8]:LDR R8,[R8] 
Z<LDR R9,[R9]:LDR R9,[R9] 
ZFLDR R4,[R10] 
ZPLDR R5,[R10,#4] 
ZZLDR R6,[R10,#8] 
ZdLDR R7,fs%-4
Zn.fsloop
ZxADD R10,R10,R8 
Z�]
Z�Ȏ m$ �
Z��"T"
Z�
[OPT Z
Z�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
Z�4MOV R0,R4,LSR #(bits-4):CMP R0,#15:MOVCS R0,#15 
Z�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
Z�GMOV R3,R5,LSR #(bits-4):CMP R3,#15:MOVCS R3,#15:�R R0,R0,R3,LSL #4 
Z�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
Z�GMOV R3,R6,LSR #(bits-4):CMP R3,#15:MOVCS R3,#15:�R R0,R0,R3,LSL #8 
Z�LDR R3,colmatchloc
Z�LDRB 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
[6
[@
[OPT Z
[J%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
[T%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
[^%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
[hSTMFD SP !,{R7,R8,R9}
[r
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
[�MOVMI R7,#0
[�� R7,R7,#&60000000
[�ADD R7,R7,R3
[�ADD R14,R7,R7,LSR #4
[�ADD R7,R14,R14,LSR #8
[�ADD R7,R7,R7,LSR #16
[�SUBS 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
\0SUB R8,R8,R8,LSR #4
\:ADDS R7,R7,R8,LSL #23
\DMOVVSS R7,#&7F000000
\NMOVMI R7,#0
\X� R7,R7,#&60000000
\bADD R7,R3,R7
\lADD R7,R7,R7,LSR #4
\v�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
\�MUL R7,R8,R8
\�ADD R7,R7,R7,LSL #2
\�ADD R9,R9,R7,LSL #1
\�RSB R7,R3,#&20<<23
\�MOV R8,R4,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 #16
]4ADD R7,R7,R7,LSR #8
]>ADD R7,R7,R7,LSR #16
]HSUBS R8,R4,R7,LSR #31-bits
]RRSBLT R8,R8,#0
]\MOV R8,R8,LSR #bits/2
]fMUL R7,R8,R8
]pADD R7,R7,R7,LSL #1
]zADD R9,R9,R7
]�
CMP R9,R2
]�MOVLS R2,R9
]�MOVLS R0,R14
]�SUBS R3,R3,#&10<<23
]�BGE srch
]�� R7,R0,#&40000000
]�MOV R8,R7,LSR #23
]�� R7,R0,#&600000
]��R R8,R8,R7,LSR #16
]�� R7,R0,#&4000
]��R R8,R8,R7,LSR #10
]�� 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
^8.LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
^B]
^L�
^V
[OPT Z
^`STRB R0,[R12],R1
^j]
^t�dither% �
^~
[OPT Z
^�ADD R0,R11,#4 
^�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] 
^�ADD R4,R4,R2,ASR #4 
_ADD R2,R5,R5,LSL #1 
_
(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
_STR R3,[R0,-R8]
_MOV R3,R5,ASR #4 
_(STR R3,[R0,R8] 
_2ADD R2,R5,R5,LSL #2 
_<$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
_FSTR R3,[R0],#4 
_PRSB R2,R5,R5,LSL #3 
_ZLDR R5,[R10,#4] 
_dADD R5,R5,R2,ASR #4 
_nADD R2,R6,R6,LSL #1 
_x(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
_�STR R3,[R0,-R8]
_�ADD R2,R6,R6,LSL #2 
_�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
_�STR R3,[R0]
_�MOV R3,R6,ASR #4 
_�STR R3,[R0,R8] 
_�RSB R2,R6,R6,LSL #3 
_�LDR R6,[R10,#8] 
_�ADD R6,R6,R2,ASR #4 
_�]
_��
_�
[OPT Z
_�LDMIA R10,{R4,R5,R6}
`]
`�
`
[OPT Z
`"SUBS R9,R9,#1:BNE fsloop
`,LDMFD SP !,{PC}^
`6]
`@� 15
`Jdivtable=P%:Ȏ m$ �
`T	� "D"
`^	� "R"
`h�I%=0�15*4�4
`r
[OPT Z
`|&EQUD (palette%!I%>>4�&F)/bright%*F
`�'EQUD (palette%!I%>>12�&F)/bright%*F
`�'EQUD (palette%!I%>>20�&F)/bright%*F
`�]
`��
`�
[OPT Z
`�.ictloc EQUD ict%
`�]
`�	� "T"
`��I%=0�15
`�
[OPT Z
`�EQUD I%/bright%*F
`�]
`��
a
a�I%=0�7
a
[OPT Z
a&EQUD I%/(bright%�2)*F
a0]
a:�
aD�
aN
[OPT Z
aX.fs%
abSTMFD SP !,{R14}
al!LDR R1,[R9,#5*8]:LDR R1,[R1] 
avLDR R10,[R9,#4*8] 
a�LDR R11,[R9,#3*8] 
a�$LDR R12,[R9,#2*8]:LDR R12,[R12] 
a�LDR R8,[R9,#8]:LDR R8,[R8] 
a�LDR R9,[R9]:LDR R9,[R9] 
a�]
a��m$="D" �m$="R" �
a�
[OPT Z
a�LDR R4,[R10] 
a�LDR R5,[R10,#4] 
a�LDR R6,[R10,#8] 
a�]
a��
a�
[OPT Z
bLDR R4,[R10],R8 
b]
b�
b �m$<>"D" �
b*
[OPT Z
b4ADR R7,divtable
b>]
bH�
bR
[OPT Z
b\.fsloop
bf]
bpȎ m$ �
bz�"R"
b�
[OPT Z
b�ADD R10,R10,R8
b�]
b��srchdevlist
b�
[OPT Z
b�
MOV r3,r0
b�]
b�	� "D"
b�
[OPT Z
b�ADD R10,R10,R8 
b�
MOV R3,#0
b�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
b�CMP R4,#F>>1 
c SUBCS R4,R4,#F:�RCS R3,R3,#1
c%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
cCMP R5,#F>>1 
c$ SUBCS R5,R5,#F:�RCS R3,R3,#2
c.%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
c8CMP R6,#F>>1 
cB SUBCS R6,R6,#F:�RCS R3,R3,#4
cL]
cV	� "T"
c`
[OPT Z
cj%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
ct<RSB R3,R4,R4,LSL #4:ADD R3,R3,#F>>1:MOV R3,R3,LSR #bits 
c~LDR R2,[R7,R3,LSL #2] 
c�SUB R4,R4,R2 
c�]
c�
c�
[OPT Z
c�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
c�<RSB R3,R4,R4,LSL #3:ADD R3,R3,#F>>1:MOV R3,R3,LSR #bits 
c�LDR R2,[R7,R3,LSL #2] 
c�SUB R4,R4,R2 
c�]
c��
c�
[OPT Z
c�MOV R2,R12,LSR #1
dTST R12,#1
d
LDRB R0,[R2]
d �EQ R0,R0,#&F0:�REQ R0,R0,R3
d'�NE R0,R0,#&0F:�RNE R0,R0,R3,LSL #4
d(STRB R0,[R2]
d2ADD R12,R12,R1
d<]
dF�m$="D" �m$="R" �
dP�dither% �
dZ
[OPT Z
ddADD R0,R11,#4 
dnADD R2,R4,R4,LSL #1 
dx)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
d�STR R3,[R11,-R8]
d�ADD R2,R4,R4,LSL #2 
d�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
d�STR R3,[R11]
d�MOV R3,R4,ASR #4 
d�STR R3,[R11,R8]! 
d�RSB R2,R4,R4,LSL #3 
d�LDR R4,[R10] 
d�ADD R4,R4,R2,ASR #4 
d�ADD R2,R5,R5,LSL #1 
d�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
d�STR R3,[R0,-R8]
d�MOV R3,R5,ASR #4 
eSTR R3,[R0,R8] 
eADD R2,R5,R5,LSL #2 
e$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
e"STR R3,[R0],#4 
e,RSB R2,R5,R5,LSL #3 
e6LDR R5,[R10,#4] 
e@ADD R5,R5,R2,ASR #4 
eJADD R2,R6,R6,LSL #1 
eT(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
e^STR R3,[R0,-R8]
ehADD R2,R6,R6,LSL #2 
er$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
e|STR R3,[R0]
e�MOV R3,R6,ASR #4 
e�STR R3,[R0,R8] 
e�RSB R2,R6,R6,LSL #3 
e�LDR R6,[R10,#8] 
e�ADD R6,R6,R2,ASR #4 
e�]
e��
e�
[OPT Z
e�LDMIA R10,{R4,R5,R6}
e�]
e��
e��
e��dither% �
f
[OPT Z
fADD R2,R4,R4,LSL #1 
f)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
f&STR R3,[R11,-R8]
f0ADD R2,R4,R4,LSL #2 
f:%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
fDSTR R3,[R11]
fNMOV R3,R4,ASR #4 
fXSTR R3,[R11,R8]! 
fbRSB R2,R4,R4,LSL #3 
flLDR R4,[R10],R8 
fvADD R4,R4,R2,ASR #4 
f�]
f��
f�
[OPT Z
f�LDR R4,[R10],R8
f�]
f��
f��
f�
[OPT Z
f�SUBS R9,R9,#1:BNE fsloop
f�LDMFD SP !,{PC}^
f�]
f�� 3
f�divtable=P%:Ȏ m$ �
g	� "C"
g	� "R"
g�I%=0�3*4�4
g 
[OPT Z
g*&EQUD (palette%!I%>>4�&F)/bright%*F
g4'EQUD (palette%!I%>>12�&F)/bright%*F
g>'EQUD (palette%!I%>>20�&F)/bright%*F
gH]
gR�
g\
gf
[OPT Z
gp
EQUD 0
gzEQUD 1/(bright%�4)*F
g�EQUD 2/(bright%�4)*F
g�
EQUD F
g�]
g��
g�
[OPT Z
g�.fs%
g�STMFD SP !,{R14}
g�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
g�LDR R10,[R9,#4*8] 
g�LDR R11,[R9,#3*8] 
g�LDR R12,[R9,#2*8] 
g�LDR R12,[R12] 
g�LDR R8,[R9,#8] 
hLDR R8,[R8] 
hLDR R9,[R9] 
hLDR R9,[R9] 
h$]
h.�m$="C" �m$="R" �
h8
[OPT Z
hBLDR R4,[R10] 
hLLDR R5,[R10,#4] 
hVLDR R6,[R10,#8] 
h`]
hj�
ht
[OPT Z
h~LDR R4,[R10],R8 
h�]
h��
h�
[OPT Z
h�.fsloop
h�]
h�
�m$<>"C"�
h�
[OPT Z
h�ADR R7,divtable
h�]
h��
h�Ȏ m$ �
h��"C"
i
[OPT Z
i
ADD R10,R10,R8 
i%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
i%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
i(%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
i2MOV R3,#0 
i<CMP R4,#F>>1:�RCS R3,R3,#1
iFCMP R5,#F>>1:�RCS R3,R3,#2
iPCMP R6,#F>>1:�RCS R3,R3,#4
iZ"CMP R3,#6:�Q R3,#1:BEQ octcyan
idBCS octwhite
inCMP R3,#4:BEQ octblue
ixMOVCS R3,#2:BCS octmagenta
i�CMP R3,#2:BEQ octgreen
i�BCS octyellow
i�CMP R3,#0:BEQ octblack
i�.octred
i�RSB R0,R4,#F 
i�CMP R5,R0 
i�BLT octred1
i�CMP R5,R6 
i�MOVGE R3,#3 
i�MOVLT R3,#2 
i�B octconvert
i�.octred1
i�CMP R0,R6 
jMOVGE R3,#0 
jMOVLT R3,#2 
jB octconvert
j"
.octgreen
j,RSB R0,R5,#F 
j6CMP R0,R4 
j@BLT octgreen1
jJCMP R0,R6 
jTMOVGE R3,#0 
j^MOVLT R3,#1 
jhB octconvert
jr.octgreen1
j|CMP R4,R6 
j�MOVGE R3,#3 
j�MOVLT R3,#1 
j�B octconvert
j�.octblue
j�RSB R0,R6,#F 
j�CMP R0,R4 
j�BLT octblue1
j�CMP R0,R5 
j�MOVGE R3,#0 
j�MOVLT R3,#1 
j�B octconvert
j�
.octblue1
j�CMP R4,R5 
kMOVGE R3,#2 
kMOVLT R3,#1 
kB octconvert
k&
.octwhite
k0CMP R4,R5 
k:BLT octwhite1
kDCMP R5,R6 
kNMOVGE R3,#3 
kXMOVLT R3,#2 
kbB octconvert
kl.octwhite1
kvCMP R4,R6 
k�MOVGE R3,#3 
k�MOVLT R3,#1 
k�.octconvert
k�CMP R3,#1 
k�.octcyan
k�SUBEQ R5,R5,#F
k�SUBEQ R6,R6,#F
k�.octmagenta
k�CMP R3,#2 
k�SUBEQ R4,R4,#F
k�SUBEQ R6,R6,#F
k�.octyellow
k�CMP R3,#3 
lSUBEQ R4,R4,#F
lSUBEQ R5,R5,#F
l
.octblack
l MOV R2,R12,LSR #2
l* � R7,R12,#3:MOV R7,R7,LSL #1
l4MOV R14,#3
l>ELDRB R0,[R2]:BIC R0,R0,R14,LSL R7:�R R0,R0,R3,LSL R7:STRB R0,[R2]
lHADD R12,R12,R1
lR]
l\�"R"
lf
[OPT Z
lpADD R10,R10,R8
lz%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
l�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
l�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
l�STMFD SP !,{R8,R9,R10}
l�
MVN R2,#0
l�
MOV R3,#3
l�.srch ADD R14,R3,R3,LSL #1
l�ADD R14,R7,R14,LSL #2
l�LDMIA R14,{R8,R9,R10}
l�SUBS R8,R4,R8
l�RSBMI R8,R8,#0
l�SUBS R9,R5,R9
l�RSBMI R9,R9,#0
l�SUBS R10,R6,R10
mRSBMI R10,R10,#0
mMOV R14,R8,LSR #bits/2
mMUL R8,R14,R14
m$MOV R14,R9,LSR #bits/2
m.MUL R9,R14,R14
m8MOV R14,R10,LSR #bits/2
mBMUL R10,R14,R14
mLADD R9,R9,R9,LSL #2
mVADD R8,R8,R8,LSL #1
m`ADD R14,R8,R9,LSL #1
mjADD R14,R14,R10
mtCMP R14,R2
m~MOVCC R2,R14
m�MOVCC R0,R3
m�SUBS R3,R3,#1
m�BPL srch
m�LDMFD SP !,{R8,R9,R10}
m�+ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
m�LDR R2,[R3],#4:SUB R4,R4,R2
m�.LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
m�
MOV R3,R0
m�MOV R2,R12,LSR #2
m� � R7,R12,#3:MOV R7,R7,LSL #1
m�MOV R14,#3
m�ELDRB R0,[R2]:BIC R0,R0,R14,LSL R7:�R R0,R0,R3,LSL R7:STRB R0,[R2]
nADD R12,R12,R1
n
]
n
n
[OPT Z
n(%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
n2;RSB R3,R4,R4,LSL #2:ADD R3,R3,#F>>1:MOV R3,R3,LSR#bits 
n<LDR R2,[R7,R3,LSL #2] 
nFSUB R4,R4,R2 
nPMOV R2,R12,LSR #2
nZ � R5,R12,#3:MOV R5,R5,LSL #1
nd
MOV R6,#3
nnDLDRB R0,[R2]:BIC R0,R0,R6,LSL R5:�R R0,R0,R3,LSL R5:STRB R0,[R2]
nxADD R12,R12,R1
n�]
n��
n��m$="C" �m$="R" �
n��dither% �
n�
[OPT Z
n�ADD R0,R11,#4 
n�ADD R2,R4,R4,LSL #1 
n�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
n�STR R3,[R11,-R8]
n�ADD R2,R4,R4,LSL #2 
n�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
n�STR R3,[R11]
n�MOV R3,R4,ASR #4 
oSTR R3,[R11,R8]! 
oRSB R2,R4,R4,LSL #3 
oLDR R4,[R10] 
o"ADD R4,R4,R2,ASR #4 
o,ADD R2,R5,R5,LSL #1 
o6(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
o@STR R3,[R0,-R8]
oJMOV R3,R5,ASR #4 
oTSTR R3,[R0,R8] 
o^ADD R2,R5,R5,LSL #2 
oh$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
orSTR R3,[R0],#4 
o|RSB R2,R5,R5,LSL #3 
o�LDR R5,[R10,#4] 
o�ADD R5,R5,R2,ASR #4 
o�ADD R2,R6,R6,LSL #1 
o�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
o�STR R3,[R0,-R8]
o�ADD R2,R6,R6,LSL #2 
o�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
o�STR R3,[R0]
o�MOV R3,R6,ASR #4 
o�STR R3,[R0,R8] 
o�RSB R2,R6,R6,LSL #3 
o�LDR R6,[R10,#8] 
o�ADD R6,R6,R2,ASR #4 
p]
p�
p
[OPT Z
p&LDMIA R10,{R4,R5,R6}
p0]
p:�
pD�
pN�dither% �
pX
[OPT Z
pbADD R2,R4,R4,LSL #1 
pl)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
pvSTR R3,[R11,-R8]
p�ADD R2,R4,R4,LSL #2 
p�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
p�STR R3,[R11]
p�MOV R3,R4,ASR #4 
p�STR R3,[R11,R8]! 
p�RSB R2,R4,R4,LSL #3 
p�LDR R4,[R10],R8 
p�ADD R4,R4,R2,ASR #4 
p�]
p��
p�
[OPT Z
p�LDR R4,[R10],R8
p�]
q�
q�
q
[OPT Z
q SUBS R9,R9,#1:BNE fsloop
q*LDMFD SP !,{PC}^
q4]
q>� 1
qHȎ m$ �
qR�"C"
q\
[OPT Z
qf.divtable EQUD 0
qpEQUD (1-black%/256*2)/16*F
qzEQUD (2-black%/256*4)/16*F
q�EQUD (3-black%/256*5)/16*F
q�EQUD (4-black%/256*6)/16*F
q�EQUD (5-black%/256*7)/16*F
q�EQUD (6-black%/256*8)/16*F
q�EQUD (7-black%/256*8)/16*F
q�EQUD (8-black%/256*8)/16*F
q�EQUD (9-black%/256*8)/16*F
q�EQUD (10-black%/256*8)/16*F
q�EQUD (11-black%/256*7)/16*F
q�EQUD (12-black%/256*6)/16*F
q�EQUD (13-black%/256*5)/16*F
q�EQUD (14-black%/256*4)/16*F
q�EQUD (15-black%/256*2)/16*F
r
EQUD F
r.evenrow_gard DCD even_gard
r.oddrow_gard DCD odd_gard
r$.rowinc DCD 0
r..fs%
r8STMFD SP !,{R14}
rB!LDR R1,[R9,#5*8]:LDR R1,[R1] 
rLLDR R10,[R9,#4*8] 
rVLDR R11,[R9,#3*8] 
r`LDR R12,[R9,#2*8] 
rjLDR R12,[R12] 
rtLDR R8,[R9,#8] 
r~LDR R8,[R8] 
r�LDR R9,[R9] 
r�LDR R9,[R9] 
r�LDR R4,[R10],R8 
r�
TEQ R8,#0
r�LDRPL R6,evenrow_gard
r�LDRMI R6,oddrow_gard
r�MOV R1,R1,LSL #1
r�LDR R7,rowinc
r�ADR R14,divtable
r�.fsloop
r�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
r�ADD R5,R4,#F>>5 
sMOVS R5,R5,LSR #bits-4 
s
LDRNE R0,[R14,R5,LSL #2]
sSUBNE R4,R4,R0 
s]
s(�dither% �
s2
[OPT Z
s<ADD R2,R4,R4,LSL #1 
sF)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
sPSTR R3,[R11,-R8]
sZADD R2,R4,R4,LSL #2 
sd%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
snSTR R3,[R11]
sxMOV R3,R4,ASR #4 
s�STR R3,[R11,R8]! 
s�RSB R2,R4,R4,LSL #3 
s�LDR R4,[R10],R8 
s�ADDS R4,R4,R2,ASR #4 
s�]
s��
s�
[OPT Z
s�LDR R4,[R10],R8
s�]
s��
s�
[OPT Z
s�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
s�ADD R3,R4,#F>>5 
tMOVS R3,R3,LSR #bits-4 
tLDRNE R0,[R14,R3,LSL #2]
tSUBNE R4,R4,R0 
t"-�R R5,R5,R3,LSL #5:LDR R3,[R6,R5,LSL #2] 
t,FMOV R2,R12,LSR #1:STRB R3,[R2],R7:MOV R3,R3,LSR #8:STRB R3,[R2],R7
t6BMOV R3,R3,LSR #8:STRB R3,[R2],R7:MOV R3,R3,LSR #8:STRB R3,[R2]
t@ADD R12,R12,R1
tJ]
tT�dither% �
t^
[OPT Z
thADD R2,R4,R4,LSL #1 
tr)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
t|STR R3,[R11,-R8]
t�ADD R2,R4,R4,LSL #2 
t�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
t�STR R3,[R11]
t�MOV R3,R4,ASR #4 
t�STR R3,[R11,R8]! 
t�RSB R2,R4,R4,LSL #3 
t�LDR R4,[R10],R8 
t�ADD R4,R4,R2,ASR #4 
t�]
t��
t�
[OPT Z
t�LDR R4,[R10],R8
t�]
u�
u
[OPT Z
uSUBS R9,R9,#2:BNE fsloop
u&LDMFD SP !,{PC}^
u0]
u:�"T"
uD
[OPT Z
uN.divtable EQUD 0
uXEQUD (1-black%/256*2)/9*F
ubEQUD (2-black%/256*4)/9*F
ulEQUD (3-black%/256*5)/9*F
uvEQUD (4-black%/256*6)/9*F
u�EQUD (5-black%/256*6)/9*F
u�EQUD (6-black%/256*5)/9*F
u�EQUD (7-black%/256*4)/9*F
u�EQUD (8-black%/256*2)/9*F
u�
EQUD F
u�.evenrow_gard DCD even_gard
u�.oddrow_gard DCD odd_gard
u�.rowinc DCD 0
u�.fs%
u�STMFD SP !,{R14}
u�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
u�LDR R10,[R9,#4*8] 
u�LDR R11,[R9,#3*8] 
vLDR R12,[R9,#2*8] 
vLDR R12,[R12] 
vLDR R8,[R9,#8] 
v LDR R8,[R8] 
v*LDR R9,[R9] 
v4LDR R9,[R9] 
v>LDR R4,[R10],R8 
vH
TEQ R8,#0
vRLDRPL R6,evenrow_gard
v\LDRMI R6,oddrow_gard
vfMOV R1,R1,LSL #1
vpLDR R7,rowinc
vzADR R14,divtable
v�.fsloop
v�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
v�ADD R5,R4,#F>>4 
v�ADD R5,R5,R5,LSL #3 
v�MOVS R5,R5,LSR #bits 
v�LDRNE R0,[R14,R5,LSL #2]
v�SUBNE R4,R4,R0 
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 
wLADDS R4,R4,R2,ASR #4 
wV]
w`�
wj
[OPT Z
wtLDR R4,[R10],R8
w~]
w��
w�
[OPT Z
w�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
w�ADD R3,R4,#F>>4 
w�ADD R3,R3,R3,LSL #3 
w�MOVS R3,R3,LSR #bits 
w�LDRNE R0,[R14,R3,LSL #2]
w�SUBNE R4,R4,R0 
w�-�R R5,R5,R3,LSL #4:LDR R5,[R6,R5,LSL #2] 
w�MOV R2,R12,LSR #1
w�� R3,R5,#&3F
w�STRB R3,[R2],R7
x!MOV R3,R5,LSR #6:� R3,R3,#&3F
x
STRB R3,[R2],R7
x"MOV R3,R5,LSR #12:STRB R3,[R2]
xADD R12,R12,R1
x(]
x2�dither% �
x<
[OPT Z
xFADD R2,R4,R4,LSL #1 
xP)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
xZSTR R3,[R11,-R8]
xdADD R2,R4,R4,LSL #2 
xn%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
xxSTR R3,[R11]
x�MOV R3,R4,ASR #4 
x�STR R3,[R11,R8]! 
x�RSB R2,R4,R4,LSL #3 
x�LDR R4,[R10],R8 
x�ADD R4,R4,R2,ASR #4 
x�]
x��
x�
[OPT Z
x�LDR R4,[R10],R8
x�]
x��
x�
[OPT Z
x�SUBS R9,R9,#2:BNE fsloop
yLDMFD SP !,{PC}^
y]
y�"D"
y"
[OPT Z
y,.divtable EQUD 0
y6EQUD (1-black%/256*2)/4*F
y@EQUD (2-black%/256*4)/4*F
yJEQUD (3-black%/256*2)/4*F
yT
EQUD F
y^.evenrow_gard DCD even_gard
yh.oddrow_gard DCD odd_gard
yr.rowinc DCD 0
y|.fs%
y�STMFD SP !,{R14}
y�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
y�LDR R10,[R9,#4*8] 
y�LDR R11,[R9,#3*8] 
y�LDR R12,[R9,#2*8] 
y�LDR R12,[R12] 
y�LDR R8,[R9,#8] 
y�LDR R8,[R8] 
y�LDR R9,[R9] 
y�LDR R9,[R9] 
y�LDR R4,[R10],R8 
y�
TEQ R8,#0
y�LDRPL R6,evenrow_gard
zLDRMI R6,oddrow_gard
zMOV R1,R1,LSL #1
zLDR R7,rowinc
z&ADR R14,divtable
z0.fsloop
z:%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
zDADD R5,R4,#F>>3 
zNMOVS R5,R5,LSR #bits-2 
zXLDRNE R0,[R14,R5,LSL #2]
zbSUBNE R4,R4,R0 
zl]
zv�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]
z�MOV R3,R4,ASR #4 
z�STR R3,[R11,R8]! 
z�RSB R2,R4,R4,LSL #3 
z�LDR R4,[R10],R8 
z�ADDS R4,R4,R2,ASR #4 
z�]
{�
{
[OPT Z
{LDR R4,[R10],R8
{ ]
{*�
{4
[OPT Z
{>%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
{HADD R3,R4,#F>>3 
{RMOVS R3,R3,LSR #bits-2 
{\LDRNE R0,[R14,R3,LSL #2]
{fSUBNE R4,R4,R0 
{p'�R R5,R5,R3,LSL #3:LDRB R5,[R6,R5] 
{zMOV 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
{�!MOV R3,R5,LSR #4:LDRB R0,[R2]
{� �EQ R0,R0,#&F0:�REQ R0,R0,R3
{�'�NE R0,R0,#&0F:�RNE R0,R0,R3,LSL #4
{�STRB R0,[R2]
{�ADD R12,R12,R1
{�]
{��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 
|8STR R3,[R11]
|BMOV R3,R4,ASR #4 
|LSTR R3,[R11,R8]! 
|VRSB R2,R4,R4,LSL #3 
|`LDR R4,[R10],R8 
|jADD R4,R4,R2,ASR #4 
|t]
|~�
|�
[OPT Z
|�LDR R4,[R10],R8
|�]
|��
|�
[OPT Z
|�SUBS R9,R9,#2:BNE fsloop
|�LDMFD SP !,{PC}^
|�]
|�
|�
[OPT Z
|�.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] 
}2LDR R8,[R9,#8] 
}<LDR R8,[R8] 
}FLDR R9,[R9] 
}PLDR R9,[R9] 
}ZLDR R4,[R10],R8 
}dMOV R7,#1 
}n.fsloop
}x%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
}�]
}�
�black% �
}�
[OPT Z
}�MOV R2,R12,LSR #3
}�� R5,R12,#7:MOV R6,#1
}�LDRB R0,[R2,#-(x%+7>>3)] 
}�SUB R3,R4,#F 
}�
CMP R7,#0
}�"ADDNE R4,R4,#black%<<(bits-8) 
}�"ADDEQ R3,R3,#black%<<(bits-8) 
}�TST R0,R6,LSL R5
}�"ADDNE R4,R4,#black%<<(bits-8) 
}�"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 
~6]
~@�
~J
[OPT Z
~T(ADD R3,R4,#F>>1:MOV R3,R3,LSR #bits 
~^SUB R4,R4,R3,LSL #bits
~hMOV R2,R12,LSR #3
~r� 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
~�]
~��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 
0LDR R4,[R10],R8 
:ADD R4,R4,R2,ASR #4 
D]
N�
X
[OPT Z
bLDR R4,[R10],R8
l]
v�
�
[OPT Z
�SUBS R9,R9,#1:BNE fsloop
�LDMFD SP !,{PC}^
�]
��
��
�
[OPT Z
�.sxloc DCD sx%
�]
�Ȏ col �
�� 0
��input<=8 �
�
[OPT Z
�
.mappix% 
�LDR R0,sxloc 
�LDR R1,[R9]:LDR R1,[R1] 
� LDR R2,[R9,#3*8] 
�*LDR R5,[R9,#4*8] 
�4
MOV R8,#0
�>
.mappixlp
�HLDRB R6,[R1],#step24
�R]
�\�
�fȎ input �
�p� 8
�z
�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]
��&CMP R7,#2:LDREQ R10,[R9,R6,LSL #2]
��&CMP R7,#3:LDREQ R11,[R9,R6,LSL #2]
��ADD R3,R10,R11
��ADD R3,R3,R12
��MOV R3,R3,LSR #2
��STMIA R5!,{R3}
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
�.ltable
�]
��I%=0�15
�$
[OPT Z
�.EQUD I%/15*F
�8]
�B�
�L�
�V�hpredict%=2 �
�`
[OPT Z
�jADD R6,R6,R8
�t� R6,R6,#255
�~
MOV R8,R6
��]
���
��
[OPT Z
��(LDR R7,[R2,R6,LSL #2]:STR R7,[R5],#4
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
���
��� 4
���bigendianbits �
��
[OPT Z
��MOV R10,R6,LSR #4
�LDR R7,[R2,R10,LSL #2]
�
� R10,R6,#&F
�]
��
�(
[OPT Z
�2� R10,R6,#&F
�<LDR R7,[R2,R10,LSL #2]
�FMOV R10,R6,LSR #4
�P]
�Z�
�d
[OPT Z
�n,LDR R8,[R2,R10,LSL #2]:STMIA R5!,{R7,R8}
�xSUBS R0,R0,#2:BHI mappixlp
��MOVS PC,R14
��]
��� 2
���bigendianbits �
��
[OPT Z
��MOV R10,R6,LSR #6
��LDR R7,[R2,R10,LSL #2]
��� R10,R6,#&30
��LDR R8,[R2,R10,LSR #2]
��� R10,R6,#&C
��LDR R9,[R2,R10]
��� R10,R6,#&3
��]
��
�
[OPT Z
�� R10,R6,#&3
�"LDR R7,[R2,R10,LSL #2]
�,� R10,R6,#&C
�6LDR R8,[R2,R10]
�@� R10,R6,#&30
�JLDR R9,[R2,R10,LSR #2]
�TMOV R10,R6,LSR #6
�^]
�h�
�r
[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 �
��
[OPT Z
��� R10,R6,#&80
��LDR R7,[R2,R10,LSR #5]
��� R10,R6,#&40
��LDR R8,[R2,R10,LSR #4]
��� R10,R6,#&20
��LDR 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
�0LDR R8,[R2,R10]
�:� R10,R6,#&2
�DLDR R9,[R2,R10,LSL #1]
�N� R10,R6,#&1
�X]
�b�
�l
[OPT Z
�v� 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]
��� R10,R6,#&8
��4LDR R10,[R2,R10,LSR #1]:STMIA R5!,{R7,R8,R9,R10}
��� R10,R6,#&10
��LDR R7,[R2,R10,LSR #2]
��� R10,R6,#&20
��LDR R8,[R2,R10,LSR #3]
��� R10,R6,#&40
��LDR R9,[R2,R10,LSR #4]
�MOV R10,R6,LSR #7
�]
��
� 
[OPT Z
�*4LDR R10,[R2,R10,LSL #2]:STMIA R5!,{R7,R8,R9,R10}
�4SUBS R0,R0,#8:BHI mappixlp
�>MOVS PC,R14
�H]
�R� 16
�\
[OPT Z
�f
.mappix% 
�pLDR R0,sxloc 
�zLDR 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]
�3ADD R10,R10,R11:ADD R10,R10,R12:STMIA R8!,{R10}
�$SUBS R0,R0,#1:BNE mappixlp
�.MOVS PC,R14
�8]
�B� 24
�L
[OPT Z
�V
.mappix% 
�`LDR R0,sxloc 
�j!LDR R1,[R9,#2*8]:LDR R1,[R1] 
�tLDR 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] 
��
.mappixlp
��.LDRB R8,[R1],#step24:LDR R8,[R4,R8,LSL #2]
��;LDRB R9,[R2],#step24:LDR R9,[R5,R9,LSL #2]:ADD R8,R8,R9
��JLDRB R9,[R3],#step24:LDR R9,[R6,R9,LSL #2]:ADD R8,R8,R9:STR R8,[R7],#4
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
��	� 411
�
[OPT Z
�

.mappix% 
�LDR R0,sxloc 
�LDR R1,[R9]:LDR R1,[R1] 
�(LDR R4,[R9,#1*8] 
�2LDR R7,[R9,#8*8] 
�<
.mappixlp
�FLDRB R8,[R1],#2 
�P>LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
�ZSUBS R0,R0,#1:BNE mappixlp
�dMOVS PC,R14
�n]
�x	� 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
�
[OPT Z
�
.mappix% 
�"LDR R0,sxloc 
�,LDR R1,[R9]:LDR R1,[R1] 
�6ADD R1,R1,#1 
�@LDR R4,[R9,#1*8] 
�JLDR R7,[R9,#8*8] 
�T
.mappixlp
�^LDRB R8,[R1],#2 
�h� R8,R8,#ymax%
�r>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] 
��.xsamplelp
��LDMIA R1,{R5,R6}
��ADD R6,R6,R5
�MOV R6,R6,LSR #1
�STMIA R2!,{R5,R6}
�ADD R1,R1,#4
�&SUBS R0,R0,#2:BPL xsamplelp
�0MOVS PC,R14
�:]
�D�
�N
[OPT Z
�b
.xsample%
�lLDR R0,[R9]:LDR R0,[R0] 
�vLDR 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
��SUBS R12,R3,#1 
��BEQ xdonediv
��.xdivlp
��CMP R12,R11
��BCC xdivlp2
��#LDMIA R1!,{R8}:MLA R5,R8,R11,R5
�SUBS R12,R12,R11:MOV R11,R4
�BNE xdivlp
�B xdonediv
� .xdivlp2
�*LDMIA R1,{R8}
�4,SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#4
�>ADD R5,R5,R8
�HSUBS R12,R12,#1:BNE xdivlp
�R
.xdonediv
�\STMIA R2!,{R5}
�fSUBS R0,R0,#1:BPL xsamplelp
�pMOVS PC,R14
�z]
���
��� 2
���input<=8 �
��
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
��LDR R2,[R9,#3*8] 
��LDR R3,[R9,#2*8] 
��LDR R4,[R9,#8] 
��LDR R5,[R9,#4*8] 
��MOV R10,#0
��
.mappixlp
�LDRB R6,[R1],#step24
�]
��
�$Ȏ input �
�.� 8
�8
�ham �
�B
[OPT Z
�LADR R9,ltable
�V!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]
�j&CMP R7,#1:LDREQ R12,[R9,R6,LSL #2]
�t&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
��
[OPT Z
��EQUD I%/15*F
��]
���
���
���hpredict%=2 �
�
[OPT Z
�
ADD R6,R6,R10
�� R6,R6,#255
�MOV R10,R6
�(]
�2�
�<
[OPT Z
�FELDR R7,[R2,R6,LSL #2]:LDR R8,[R3,R6,LSL #2]:LDR R9,[R4,R6,LSL #2]
�PSTMIA R5!,{R7,R8,R9}
�ZSUBS R0,R0,#1:BNE mappixlp
�dMOVS PC,R14
�n]
�x�
��� 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
��]
���
��
[OPT Z
��� R10,R6,#&F
��HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
��STMIA R5!,{R7,R8,R9}
�MOV R10,R6,LSR #4
�]
��
�"
[OPT Z
�,HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
�6STMIA R5!,{R7,R8,R9}
�@SUBS R0,R0,#2:BHI mappixlp
�JMOVS PC,R14
�T]
�^� 2
�h�bigendianbits �
�r
[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
��3LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&3
��]
���
��
[OPT Z
��� R10,R6,#&3
�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,#&C
�&3LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
�0STMIA R5!,{R7,R8,R9}
�:� R10,R6,#&30
�DHLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
�NSTMIA R5!,{R7,R8,R9}
�XMOV R10,R6,LSR #6
�b]
�l�
�v
[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 �
��
[OPT Z
��� R10,R6,#&80
��HLDR R7,[R2,R10,LSR #5]:LDR R8,[R3,R10,LSR #5]:LDR R9,[R4,R10,LSR #5]
��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}
�� 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
�4HLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
�>STMIA R5!,{R7,R8,R9}
�H� R10,R6,#&8
�RHLDR R7,[R2,R10,LSR #1]:LDR R8,[R3,R10,LSR #1]:LDR R9,[R4,R10,LSR #1]
�\STMIA R5!,{R7,R8,R9}
�f� R10,R6,#&4
�p3LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
�zSTMIA 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
��]
���
��
[OPT Z
��� R10,R6,#&1
��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,#&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,#&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]
�8STMIA R5!,{R7,R8,R9}
�B� R10,R6,#&10
�LHLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
�VSTMIA R5!,{R7,R8,R9}
�`� R10,R6,#&20
�jHLDR R7,[R2,R10,LSR #3]:LDR R8,[R3,R10,LSR #3]:LDR R9,[R4,R10,LSR #3]
�tSTMIA 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
��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,#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] 
�2LDR R3,[R9,#4*8] 
�<LDR R4,[R9,#3*8] 
�FLDR R5,[R9,#2*8] 
�PLDR R6,[R9,#5*8] 
�ZLDR R7,[R9,#6*8] 
�dLDR R8,[R9,#7*8] 
�n
CMP R1,R2
�xADDEQ 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}
��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] 
�6LDR R5,[R9,#4*8] 
�@LDR R6,[R9,#3*8] 
�JLDR R7,[R9,#6*8] 
�T
.mappixlp
�^.LDRB R8,[R1],#step24:LDR R9,[R4,R8,LSL #2]
�h/LDRB R8,[R2],#step24:LDR R10,[R5,R8,LSL #2]
�r/LDRB R8,[R3],#step24:LDR R11,[R6,R8,LSL #2]
�|STMIA R7!,{R9,R10,R11}
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
��	� 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}
�&
.mappixlp
�0LDMIA R1!,{R4,R10} 
�:� R8,R4,#&C000
�DMOV R8,R8,LSR #8
�N� R14,R4,#&C0000000
�X�R R8,R8,R14,LSR #16+8+2
�b� R14,R10,#&C000
�l�R R8,R8,R14,LSR #8+4
�v�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
� � R12,R4,#&FF 
�*LDR R12,[R2,R12,LSL #2] 
�4+LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
�>8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�RMOV R4,R4,LSR #16
�\� R12,R4,#&FF 
�fLDR R12,[R2,R12,LSL #2] 
�p,LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
�z8MOVMI 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 
�$LDR R12,[R2,R12,LSL #2] 
�.+LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
�88MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�LMOV R10,R10,LSR #16
�V� R12,R10,#&FF 
�`LDR R12,[R2,R12,LSL #2] 
�j,LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
�t8MOVMI 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] 
�(LDR R3,[R9,#2*8] 
�2LDR R4,[R9,#3*8] 
�<LDR R5,[R9,#4*8] 
�FLDR R6,[R9,#5*8] 
�PLDR R7,[R9,#6*8] 
�ZLDR R8,[R9,#7*8] 
�dLDR R9,[R9,#8*8] 
�nSTMFD SP !,{R14}
�x
.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
�"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
�6@� 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
�J:� R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADD R14,R12,R11
�T@� 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
�hSUBS R0,R0,#2:BNE mappixlp
�rLDMFD 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]
�&@� R12,R10,#&FF0000:LDR R12,[R7,R12,LSR #14]:ADDS R14,R12,R11
�08MOVMI 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
�D@� R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
�N8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�X;� R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADDS R14,R12,R11
�b8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�l� R11,R10,#&FF000000 
�vLDR 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] 
� LDR R2,[R9,#1*8] 
�*LDR R3,[R9,#2*8] 
�4LDR R5,[R9,#4*8] 
�>LDR R6,[R9,#5*8] 
�HLDR R7,[R9,#6*8] 
�RLDR R9,[R9,#8*8] 
�\STMFD SP !,{R14}
�f
.mappixlp
�pLDR R10,[R1],#2 
�z� 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 �
�$
[OPT Z
�8
.xsample%
�BLDR R0,[R9]:LDR R0,[R0] 
�LLDR R1,[R9,#8] 
�VLDR R2,[R9,#2*8] 
�`.xsamplelp
�j!LDMIA R1,{R5,R6,R7,R8,R9,R10}
�tADD 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:BPL xsamplelp
��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] 
�2!LDR R4,[R9,#4*8]:LDR R4,[R4] 
�<MOV R11,R4
�F.xsamplelp
�PLDMIA R1,{R5,R6,R7}
�Z-SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#12
�dSUBS R12,R3,#1 
�nBEQ xdonediv
�x.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
��LDMIA R1,{R8,R9,R10}
��-SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#12
��+ADD R5,R5,R8:ADD R6,R6,R9:ADD R7,R7,R10
��SUBS R12,R12,#1:BNE xdivlp
��
.xdonediv
��STMIA R2!,{R5,R6,R7}
�SUBS R0,R0,#1:BPL xsamplelp
�MOVS PC,R14
�]
�"�
�,�
�6�compression=5 �
�@
[OPT Z
�T.firstcode DCD 0
�^.oldcode DCD 0
�h.codesize DCD setcodes%+1
�r.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] 
��LDR R12,[R9,#24] 
��STMFD SP !,{R14}
��.lzwloop
��
CMP R6,R4
��BHI lzwunstack
��.lzwengine
�BL getcode
�CMP R0,#clearcode%
�BEQ lzwclear
�0MOV R1,R0 
�:CMP R0,R7 
�DSTRCSB R2,[R6],#1 
�NMOVCS R0,R3 
�XCMP R0,#clearcode%
�bBCC lzwdonepush
�l.lzwpushtable
�vLDR 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
��BIC R2,R2,#&FF000000 
��STRB R2,[R6],#1 
��CMP R7,#4096
��BCS lzwnocode
���R R0,R2,R3,LSL #16
��STR R0,[R12,R7,LSL #2] 
�ADD R7,R7,#1 
�
CMP R7,R8
�BCC lzwnocode 
� CMP R8,#4096 
�*ADDCC R5,R5,#1 
�4MOVCC R8,R8,LSL #1 
�>]
�H�flag=1500 �
�R
[OPT Z
�\�RCC R8,R8,#1
�f]
�p�
�z
[OPT Z
��.lzwnocode
��MOV R3,R1 
��CMP R6,R4 
��BLS lzwengine
��.lzwunstack
��LDRB R0,[R6,#-1]! 
��.lzwloopend
��STRB R0,[R11],#1
��SUBS R10,R10,#1
��BNE lzwloop
��3STR R2,firstcode:STR R3,oldcode:STR R5,codesize
��/STR R6,sp:STR R7,maxcode:STR R8,maxcodesize
��LDMFD SP !,{PC}^
�
.lzwclear
�
MOV R0,#0
�MOV R3,R12
�$.lzwdefaulttable
�.STR R0,[R3],#4
�8#ADD R0,R0,#1:CMP R0,#clearcode%
�BBCC lzwdefaulttable
�LMOV R5,#setcodes%+1
�VMOV R7,#clearcode%
�`MOV R8,R7,LSL #1 
�j]
�t�flag=1500 �
�~
[OPT Z
��SUB R8,R8,#1
��]
���
��
[OPT Z
��ADD R7,R7,#2 
��BL getcode
��MOV R2,R0 
��MOV R3,R0 
��MOV R6,R4 
��B lzwloopend
��.curbit DCD 0
�.lastbit DCD 0
�
.buf DCD buf%
�.getcode
�STMFD SP !,{R6,R7,R8}
�(ADR R6,curbit
�2LDMIA R6,{R6,R7,R8}
�<ADD R1,R5,R6 
�F
CMP R1,R7
�PBCS needmoredata
�Z.simplecode
�dADD R7,R8,R6,LSR #3
�nBIC R7,R7,#3
�xLDMIA 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
��� R1,R7,R7,ROR #16
��BIC R1,R1,#&FF0000
��MOV R7,R7,ROR #8
��� R7,R7,R1,LSR #8
��H�S R1,R6,#31:MOVNE R0,R0,LSL R1:RSBNE R1,R1,#32:�RNE R0,R0,R7,LSR R1
��RSB R1,R5,#32
�MOV R0,R0,LSR R1
�]
��
�"
[OPT Z
�,H�S R1,R6,#31:MOVNE R0,R0,LSR R1:RSBNE R1,R1,#32:�RNE R0,R0,R7,LSL R1
�6!MVN R1,#0:BIC R0,R0,R1,LSL R5
�@]
�J�
�T
[OPT Z
�^ADD R6,R6,R5
�hSTR R6,curbit
�rLDMFD 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 
��LDRB R0,[R8,R0]
��STRB R0,[R8,#1]
��LDR R1,[R9,#16]
��LDR R1,[R1] 
��]
���flag=1500 �
�
[OPT Z
�MOV R0,#256
�MOV R3,#256
�&]
�0�
�:
[OPT Z
�DBL bytefromcache%
�NMOVS R3,R0 
�XBEQ simplecode1
�b]
�l�
�v
[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%
��.simplecode1
��LDMFD SP !,{R2,R3,R4,R14}
��B simplecode
��]
���
��
�range% �
�
[OPT Z
�.maxmin%
� LDR R0,[R9]:LDR R0,[R0] 
�*LDR R1,[R9,#8] 
�4LDR R2,min
�>LDR R3,max
�H
.maxminlp
�RLDR R4,[R1],#4
�\CMP R4,R3:MOVCS R3,R4 
�fCMP R4,R2:MOVCC R2,R4 
�pSUBS R0,R0,#1:BNE maxminlp
�zSTR R2,min
��STR R3,max
��MOVS PC,R14
��.min DCD F
��.max DCD 0
��]
���
���sharpen% �
��9sharp=(col+1)*4:�sharpen%<>8 sharpmul%=F/(sharpen%-8)
��
[OPT Z
��.sharp%
��LDR R0,[R9]:LDR R0,[R0] 
��LDR R1,[R9,#8] 
�LDR R2,[R9,#16] 
�LDR R3,[R9,#24] 
�LDR R4,[R9,#32] 
�$]
�.Ȏ sharpen% �
�8� 8,9,12,16,24
�B
�L
[OPT Z
�VMOV R8,#sharpmul% � &FF
�`�R R8,R8,#sharpmul% � &FF00
�j#MOV R9,#(sharpmul% >> 16) � &FF
�t'�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
��#LDR R6,[R3,#sharp]:ADD R5,R5,R6
��LDR R6,[R3],#4:ADD R5,R5,R6
��$LDR R6,[R2,#-sharp]:ADD R5,R5,R6
��$LDR R6,[R2,#sharp]:ADD R5,R5,R6 
��LDR R6,[R2],#4 
�MOV R6,R6,LSR #1
�
MOV R7,#sharpen%
�MUL R7,R6,R7 
�SUBS R5,R7,R5,LSR #1
�(MOVCC R5,#0 
�2]
�<Ȏ sharpen% �
�F	� 8,9
�P
[OPT Z
�ZMOV R6,R5,LSL #1
�d]
�n� 10
�x
[OPT Z
��
MOV R6,R5
��]
��� 12
��
[OPT Z
��MOV R6,R5,LSR #1
��]
��� 16
��
[OPT Z
��MOV R6,R5,LSR #2
��]
��� 24
��
[OPT Z
��MOV R6,R5,LSR #3
�]
�
�
[OPT Z
�"MOV R6,R5,LSR #16
�,� R5,R5,R6,LSL #16
�6MUL R7,R8,R5
�@MUL R5,R9,R5
�JMUL R10,R6,R8
�TMUL R6,R9,R6
�^ADDS R10,R5,R10
�hADDCS R6,R6,#&10000
�rADDS 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
��STR R6,[R4],#4
��SUBS R0,R0,#1
��BNE sharplp
��MOVS PC,R14
��]
���
��hist%�equal% �
�
[OPT Z
�&.histo%
�0LDR R0,[R9]:LDR R0,[R0] 
�:LDR R1,[R9,#8] 
�DLDR R2,[R9,#16]
�N.histlp
�X(LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
�bMOV R3,R3,LSR #bits-8
�l]
�v�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]
��(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,#2
��]
���
��
[OPT Z
�<LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
�SUBS R0,R0,#1
�BNE histlp
� MOVS PC,R14
�*]
�4�
�>
�equal% �
�H
[OPT Z
�\.histequal%
�fLDR R0,[R9]:LDR R0,[R0] 
�pLDR R1,[R9,#8] 
�zLDR 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
��MOV R3,R3,LSR #bits-8
��ADD R3,R3,R3,LSL #1
��(LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
��%LDR R3,[R2]: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]:STR R4,[R2],#4
�%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
�.]
�8�
�B
[OPT Z
�L(LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
�VSUBS R0,R0,#1
�`BNE equallp
�jMOVS PC,R14
�t]
�~�
��Ȏ r$ �
��'� "FN800","FN801","FN1000","FN1001"
��
[OPT Z
��.rlexpand%
��LDR R0,[R9] 
��LDR R1,[R0] 
��LDR R2,[R9,#8]:LDR R2,[R2] 
��LDR R3,[R9,#16] 
��LDR R4,[R3] 
��CMP R4,#1:MOVLTS PC,R14
� LDR R5,[R9,#24]:LDR R5,[R5] 
�
.rle
�STRB R2,[R1],#1
�SUB R4,R4,#1
�(
CMP R1,R5
�2TEQNE R4,#0
�<BNE rle
�F.rlexit
�PSTR R1,[R0] 
�ZSTR R4,[R3] 
�dMOVS PC,R14
�n]
�x
� "FN902"
��
[OPT Z
��.unpack%
��LDR R0,[R9] 
��LDR R0,[R0] 
��LDR R1,plbuff
��ADD R2,R0,#768
��.unpackloop
��LDR R3,[R0],#4
��
MOV R5,#0
��.bitloop
��MOV R6,R3,LSR R5
��� R6,R6,#15
��ADD R5,R5,#4
�MOV R7,R3,LSR R5
�� R7,R7,#15
�ADD R5,R5,#4
�"STRB R7,[R1],#1
�,STRB R6,[R1],#1
�6CMP R5,#32
�@BNE bitloop
�J
CMP R2,R0
�TBNE unpackloop
�^MOV PC,R14
�h.plbuff EQUD plbuff%
�r]
�|)� "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}
��]
�� �r$="FN1850" � r$="FN1851" �
��
[OPT Z
��BL bytefromcache%
��]
���sy%>250 �
�
[OPT Z
�BL bytefromcache%
�]
�&�
�0�
�:
[OPT Z
�D.rle
�NBL bytefromcache%
�XCMP R0,#128
�bBCC rle1
�lRSB R2,R0,#256
�vBL bytefromcache%
��.rle0 STRB R0,[R8],#1
��SUBS R2,R2,#1
��BPL rle0
��
B rle2
��	.rle1
��ADD R3,R0,#1
��
MOV R2,R8
��ADD R8,R8,R3
��BL multibytefromcache%
��	.rle2
��
CMP R8,R7
��BCC rle
��LDMFD SP !,{R14}
�MOVS PC,R14
�]
�� "FN1900","FN1100","FN400"
� 
[OPT Z
�4.readline%
�>LDR R2,[R9]:LDR R2,[R2] 
�HLDR R3,[R9,#8] 
�RLDR R0,[R3]
�\LDR R4,[R9,#16] 
�fLDR R5,[R4]
�p-LDR R6,[R9,#24]:LDR R6,[R6]:ADD R6,R6,R2 
�zSTMFD SP !,{R14}
��.rle
��
CMP R5,#1
��BGE rle1
��BL bytefromcache%
��
MOV R5,#1
��]
���flag=1900 �
��
[OPT Z
��CMP R0,#192
��%�CS R5,R0,#63:BLCS bytefromcache%
��]
���
���flag=1100 �
�
[OPT Z
�CMP R0,#128
�BNE rle1
�$BL bytefromcache%
�.
TEQ R0,#0
�8�Q R0,#128
�BBEQ rle1
�LADD R5,R0,#1
�VBL bytefromcache%
�`]
�j�
�t�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
��
MOV R0,R1
��]
���
���flag=200 �
��
[OPT Z
�ADD R5,R0,#1
�
BL bytefromcache%
�]
��
�(
[OPT Z
�2	.rle1
�<STRB R0,[R2],#1
�F]
�P�flag=400 �
�Z
[OPT Z
�dMOV R1,R0,LSR #8
�nSTRB R1,[R2],#1
�xMOV R1,R0,LSR #16
��STRB R1,[R2],#1
��]
���
��
[OPT Z
��SUB R5,R5,#1
��
TEQ R2,R6
��BNE rle
��.rlexit
��STR R0,[R3]:STR R5,[R4]
��LDMFD SP !,{PC}^
��]
���
���cachebytes% �
�
[OPT Z
�.bytefromcache%
�STMFD SP !,{R1,R2}
�"LDR R1,incacheptr
�,LDR R2,numlefttogo
�6LDRB R0,[R1],#1
�@SUBS R2,R2,#1
�JSTRNE R1,incacheptr
�TSTRNE R2,numlefttogo
�^LDMFD SP !,{R1,R2}
�hMOVNE PC,R14
�rSTMFD 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
�� .valdatacache DCD datacache%
��.valcache DCD cache%
��.incacheptr DCD datacache%
��.numlefttogo DCD cache%
��.multibytefromcache%
�
CMP R3,#0
�
�Q PC,R14
�STMFD SP !,{R0,R14}
�&.multibytefromcachel
�0BL bytefromcache%
�:STRB R0,[R2],#1
�DSUBS R3,R3,#1
�NBNE multibytefromcachel
�XLDMFD SP !,{R0,R14}
�bMOV PC,R14
�l]
�v�
���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] 
��MOV R9,#C%
��.planelp
��
MOV R7,#0
��
MOV R5,R3
��]
��N%=1�planes%
�
[OPT Z
�LDR R6,[R5],R4
� ]
�*�flag=2600 �
�4
[OPT Z
�>MOV R6,R6,LSL #8
�HBIC R6,R6,#&FF000000
�R�R R6,R6,R6,LSR #16
�\]
�f�
�p
[OPT Z
�zMOV R6,R6,LSR R9
��� R6,R6,#1
���R R7,R7,R6,LSL #(N%-1)
��]
���
��
[OPT Z
��STRB R7,[R1],#1
��SUBS R9,R9,#1:MOVMI R9,#C%
��]
���flag=2600 �
��
[OPT Z
��MOVMI R3,R5
��]
���
�
[OPT Z
�ADDMI R3,R3,#1
�]
�$�
�.
[OPT Z
�8SUBS R0,R0,#1:BNE planelp
�BMOVS PC,R14
�L]
�V�
�`�
�jcputime%=�
�t
�cache% �
�~�flag=3600 �
��Dpcdblk%!12=cacherows%:�refillpcd:�cache%>=filesize% rowstogo%=-1
���
��!�striprows%>0�compression>1 �
��ș12,4,c%,datacache%,cache%
��;�cachebytes% !incacheptr=datacache%:!numlefttogo=cache%
���
��+�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
�2� 1:size%=8:�m$="C" size%=2
�<�m$="D" size%=4
�F�m$="T" size%=2
�P�
�d
Ȏ flag �
�n*� 501:�info% �"Reading interlaced GIF"
�x%sz%=sx%*sy%:plbuff%=�dim(sz%+100)
��F�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%:�
��F�Y%=2�sy%-1�4:X%=plbuff%+Y%*sx%:� LZWdecode%,table%(0),c%,X%,sx%:�
��F�Y%=1�sy%-1�2:X%=plbuff%+Y%*sx%:� LZWdecode%,table%(0),c%,X%,sx%:�
��?datacache%=plbuff%:buff%=plbuff%:rowbytes%=sx%:rowstogo%=-1
���
���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:�
�,�
�6�input<400 �
�@$rmax=F*rwt:gmax=F*gwt:bmax=F*bwt
�JE�C%=0�255:r%(C%)=r%(C%)*rwt:g%(C%)=g%(C%)*gwt:b%(C%)=b%(C%)*bwt:�
�T�
�^�
�h�
�r,�order% �adjustpalette(1/ydiv%/xdiv%,0)
��
�range% �
��>�info% �"Scanning data to compute parameters for '-range'"
��
�order% �
��Y%=0:� șhour%,Y%*100�sy%
��8W%=�(r$+"(xp%())"):�maxmin%,xp%(1,0),totvals2%:Y%+=1
��"�Y%=sy% �!min<255 �!max+255>=F
���
��%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'"
�0
�order% �
�:$�yr%=0�sy%-1:șhour%,yr%*100�sy%
�D6W%=�(r$+"(xp%())"):�histo%,xp%(1,0),vals%(0,0),sx%
�N�
�X�
�b+ysamp%=1:�yr%=0�y%-1:șhour%,yr%*100�y%
�l9�scaledpixelrow(cl%()):�histo%,cl%(1,0),vals%(0,0),x%
�v�
���
��.�info% �"Done. Now processing the picture"
���
���input<400 �
��
�C%=0�255
���r%(C%)<0 r%(C%)=0
���g%(C%)<0 g%(C%)=0
���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
�4
� col>0 �
�>�66:ht=500
�H��<>66 �16:ht=400
�R�0,6,2000,6
�\�
�f�18:ht=400:�0,6,1024,6
�p�
�z#M=M%/(ht*2-8):�C%=0�col:Ȏ C% �
��
� 0:�1
��
� 1:�2
��
� 2:�4
���
��
� col>0 �
��C�Z%=0�256:�vals%(Z%,C%) X%=Z%*3+C%<<1:�X%,8,X%,vals%(Z%,C%)/M+8
���
���
��?�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"
�8�equal% oname$+="e"
�B#�sharpen% oname$+="s"+�sharpen%
�L�black% oname$+="b"+�black%
�V8�gamma<>1 A%=@%:@%=&1020100:oname$+="g"+�gamma:@%=A%
�`�bright%=16 oname$+="b"
�j)xsp%=x%:ysp%=y%:�rotate% Ȕ xsp%,ysp%
�t
Ȏ m �
�~.� -1:xwords%=xsp%:sz%=xwords%*ysp%:Y%=ysp%
��+�getoutput(sz%,0,xwords%,Y%):base%=ram%
��3� -3,-5:xwords%=xsp%*2:sz%=xwords%*ysp%:Y%=ysp%
��+�getoutput(sz%,0,xwords%,Y%):base%=ram%
��0� -4:xwords%=xsp%*3:sz%=xwords%*ysp%:Y%=ysp%
��+�getoutput(sz%,0,xwords%,Y%):base%=ram%
��5� -6:xwords%=xsp%*2+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%*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%
�2)ram%!12=ram%!12-Y%*xwords%+A%*xwords%
�<Bbase%!(10*4)=panic<<27 � nx<<1 � ny<<14 � 1:base%+=base%!(8*4)
�F4no magic number yet for new format 24bpp sprites
�P0� -8:xwords%=xsp%*4:sz%=xwords%*ysp%:Y%=ysp%
�Z'A%=Y%:�getoutput(sz%,64,xwords%,Y%)
�d1ram%!4=0:ram%!8=16:ram%!12=16:ș&2e,&109,ram%
�n)ș&2e,&10f,ram%,oname$,0,xsp%*4,Y%,28
�xJbase%=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)=6<<27 � nx<<1 � ny<<14 � 1:base%+=base%!(8*4)
��C:xwords%=xsp%/size%+3.9999��3:sz%=xwords%*ysp%:X%=xsp%:Y%=ysp%
��
�ncol=1 �
��Ȏ m$ �
��O�"C":!rowinc=xwords%:xwords%=xwords%*4:sz%=xwords%*ysp%:X%=xsp%*4:Y%=ysp%*4
��O�"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
�6R!(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
�J%pal%!(Z%*8)=B%:pal%!(Z%*8+4)=B%:�
�T	� 255
�^R!(pal%-8)+=2048:!(pal%-12)+=2048:base%+=2048:!(ram%+12)+=2048:!(pal%-44)+=2048
�h$�Z%=0�255:B%=palette%!(Z%<<2)<<8
�r%pal%!(Z%*8)=B%:pal%!(Z%*8+4)=B%:�
�|� 15
��Ȏ m$ �
��	� "R"
��0�Z%=0�15:�col(Z%,palette%!(Z%<<2)�&F0F0F0):�
��	� "D"
���Z%=0�7:A%=0:�Z%�1 A%+=&F0
���Z%�2 A%+=&F000
���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)
�0	� "R"
�:/�Z%=0�3:�col(Z%,palette%!(Z%<<2)�&F0F0F0):�
�D
�N1�Z%=0�3:A%=Z%*5<<4:�col(Z%,A%�A%<<8�A%<<16):�
�X�
�b!� 1:�col(0,0):�col(1,&F0F0F0)
�l�
�v�
���flex% �
���
���workspace%<0 �
��.P%=�:[OPT 0:STR r13,P%+16:MOVS Pc,r14:]:��
���=�+32*1024+�-P%!16
���
���
���
��� �
��/� � �:� �:�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
�4�m=-8 dist%=dist%*4
�>�rotate% �
�H6odist%=dist%:Ȕ colstep%,rowstep%:Ȕ hflip%,vflip%
�R�rotate%=1 �
�\Gaddr%+=(ysp%-1)*colstep%:colstep%=-colstep%:dist%=(ysp%-1)*colstep%
�f�
�p;addr%+=dist%:rowstep%=-rowstep%:dist%=(ysp%-1)*colstep%
�z�
��;�m=-3�m=-5�m=-6 colstep%=colstep%/2:rowstep%=rowstep%*2
��6�m=-4�m=-7 colstep%=colstep%/3:rowstep%=rowstep%*3
��1�m=-8 colstep%=colstep%/4:rowstep%=rowstep%*4
���
��
�hflip% �
��0addr%+=dist%:dist%=-dist%:colstep%=-colstep%
���
��
�vflip% �
���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% �
�8@�yr%=0 � y%-1:șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
�BOW%=�(r$+"(cl%())"):cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
�L�yr%�1 �
�V/�fs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
�`�
�jAA%+=dist%:�fs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
�t�
�~�
���
��GI%=step%:�yr%=0�y%-1:șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
��XW%=�(r$+"(cl%())"):B%=x%:A%=addr%:addr%+=rowstep%:�fs%,colstep%,cl%(1,0),I%,A%,I%,B%
���
���
���
��
�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%):�
�2�
�<<yread%=y%-1:�scaledpixelrow(rm1%()):�equal% �fit(rm1%())
�F?�B%=0�col:rm1%(0,B%)=rm1%(1,B%):rm1%(x%+1,B%)=rm1%(x%,B%):�
�P�
�Zrm2%()=rm1%()
�d�
�n
�order% �
�x�yr%=0 � y%-1
��2șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
��
�sy%=y% �
���sharppixelrow(cl%())
���
��:ysamp%-=1:�ysamp%=0 �sharppixelrow(xl%()):ysamp%=ymul%
���ydiv%=1 �
��cl%()=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
�6�
�@
� Y%=0
�J�
�T
ysamp%+=1
�^�
�h�
�r<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%
���
���
���
���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%
�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�
��cputime%=�-cputime%
��	�Save
��=0
��� �srchdevlist
��
[OPT 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 
�HCMP r14,#4
�RADDCC r2,r3,r0,lsl #2 
�\BICCS r2,r2,#&ff000000 
�fLDRB r0,[r2],#1 
�pSUBS r14,r14,#1
�z
BEQ gotit
��ADD r3,r0,r0,lsl #1
��ADD r3,r7,r3,lsl #2
��LDMIA r3,{r8,r9,r10}
��SUBS r8,r8,r4
��RSBMI r8,r8,#0
��MOV 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
�8MLA r11,r10,r10,r3 
�L
.srchlist
�VLDRB r3,[r2],#1
�`ADD R8,R3,R3,LSL #1
�jADD R8,R7,R8,LSL #2
�tLDMIA R8,{R8,R9,R10}
�~SUBS R9,R5,R9
ˆRSBMI R9,R9,#0
’MOV R3,R9,LSR #bits/2
œMUL R9,R3,R3
¦ADD r9,r9,r9,LSL #2
°CMP R11,R9,LSL #1
ºBCC srchquick
��SUBS 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
�2MOVCC R11,R10
�<LDRCCB R0,[r2,#-1]
�F.srchquick
�PSUBS R14,R14,#1
�ZBNE srchlist
�d
.gotit
�n+ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
�xLDMIA R3,{R8,R9,R10}
Â+SUB R4,R4,R8:SUB R5,R5,R9:SUB R6,R6,R10
ÌLDMFD r13!,{R8,R9,R10,R11}
Ö]
à�
ê� �getoutput(A%,E%,B%,� C%)
ô%�A%>max% � rotate%=� � vflip%=� �
þ1C%=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%
�"�
�6� �createarea(size%)
�@� �
�J
� � �:=-1
�T_ș &20066,0,-1,size%,-1,%10000000,size%,0,0,"ChangeFSI sprite" � ,areanumber%,,areabase%;V%
�^�V%�1 �areanumber%=0:=-1
Ě4ș "OS_ReadDynamicArea",areanumber% � ,areasize%
Ĥ=� areasize%<size% �removearea:� 42,"Couldn't create area"
Į=areabase%
��� �removearea
��@�areanumber% ș "OS_DynamicArea",1,areanumber%:areanumber%=0
���
��� �cachedim(size%)
��� �
�� � �:�4,30:�$:�5=-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"
�0=cacheareabase%
�D� �removecachearea
�NO�cacheareanumber% ș "OS_DynamicArea",1,cacheareanumber%:cacheareanumber%=0
�X�
�l� �flushoutput
�v�spritearea%<0 �oksave% �
ŀ'A%=base%:�first% A%=ram%+4:first%=�
Ŋș12,2,o%,A%,addr%�size%-A%
Ŕ�
Şaddr%=base%*size%
Ũ�
Ų� �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%
�*�
�4� -2:o%=�f$:�#o%,pnm$
�>
Ȏ pnm$ �
�H
� "P1"
�R,�#o%,"# "+f$+".pbm (options "+oname$+")"
�\�#o%,�xsp%+" "+�ysp%
�f$�Y%=0�ysp%-1:B%=base%+Y%*xwords%
�p=�X%=0�xsp%-1:�B%?(X%>>3)�(1<<(X%�7)) �#o%,"1"; ��#o%,"0";
�z�
Ƅ�#o%,""
Ǝ�
Ƙ
� "P4"
Ƣ;�#o%,"# "+f$+".pbm (options "+oname$+") binary encoded"
Ƭ�#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%,""
�8�
�B
� "P5"
�L;�#o%,"# "+f$+".pgm (options "+oname$+") binary encoded"
�V�#o%,�xsp%+" "+�ysp%
�`
�#o%,"15"
�j$�Y%=0�ysp%-1:B%=base%+Y%*xwords%
�t7�X%=0�xsp%-1:C%=B%?(X%>>1):�X%�1 C%=C%>>4 �C%=C%�15
�~�#o%,C%
Lj�
ǒ�
ǜ�
Ǧ
�#o%:o%=0
ǰ/�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%:�
�2�
�<�
�F
�#o%,pnm$
�P�pnm$="P6" �
�ZG�#o%,"# "+f$+".ppm (options "+oname$+") binary encoded 24bpp r,g,b"
�d�
�nE�#o%,"# "+f$+".ppm (options "+oname$+") "+�(p6bits*3)+"bpp r,g,b"
�x�
Ȃ�#o%,�xsp%+" "+�ysp%
Ȍ�#o%,�(2^p6bits-1)
Ȗ�pnm$="P6" �
Ƞș12,2,o%,ram%,xsp%*ysp%*3
Ȫ�
ȴ#�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"
�6ș12,2,o%,ram%,xsp%*ysp%*2
�@
�#o%:o%=0
�J
�T�ncol=1�m$="T" �
�^�X%=(xsp%*4-1)�8*8+6�6�-8
�hș&2e,&12e,ram%,oname$,X%
�rș&2e,&12e,ram%,oname$,X%
�|�
Ɇ�
ɐ�spritearea%<0 �oksave% �
ɚ(�o% �flushoutput �ș&2e,&10c,ram%,f$
ɤ�
ɮ�
ɸ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
�0�
�:
��defpal4
�D/r%()=15,10,5,0:�C%=0�3:r%(C%)=r%(C%)/15*F:�
�Ng%()=r%():b%()=r%()
�X�
�b��defpal16
�l1r%()=15,13,11,9,7,5,3,0,0,14, 0,13,14,5,15, 0
�v1g%()=15,13,11,9,7,5,3,0,4,14,12, 0,14,8,11,10
ʀ1b%()=15,13,11,9,7,5,3,0,9, 0, 0, 0,11,0, 0,15
ʊG�C%=0�15:r%(C%)=r%(C%)/15*F:g%(C%)=g%(C%)/15*F:b%(C%)=b%(C%)/15*F:�
ʔ�
ʞ��ipal63
ʨ,�#c%=&38:� rpal%(15),gpal%(15),bpal%(15)
ʲ�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
�4�C%=0�D%-1:D%=�#c%
�>r%(C%)=(�#c%>>4)/15*F
�Hg%(C%)=(�#c%>>4)/15*F
�Rb%(C%)=(�#c%>>4)/15*F
�\D%=�W:�
�f�
�p� �newropal(D%)
�z�#c%=&38
˄�C%=0�D%-1:D%=�W
ˎr%(C%)=(D%�255)/255*F
˘g%(C%)=(D%>>8�255)/255*F
ˢb%(C%)=(D%>>16�255)/255*F
ˬD%=�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$
�8
� �uc(a$)
�B
�Z%,z$,b$
�L
�Z%=1��a$
�Vz$=�a$,Z%,1)
�`!�z$>="a"�z$<="z" z$=�(�z$-32)
�jb$+=z$:�
�t=b$
�~� �dim(A%)
̈� B%
̒�flex% �
̜1B%=nextlocation%:A%=A%+3��3:nextlocation%+=A%
̦*ș"Wimp_SlotSize",-1,-1 � currentslot%
̰'�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%
�2� �W=�W1(c%)
�<2� �W1(c%)=�#c% � �#c%<<8 � �#c%<<16 � �#c%<<24
�P� �HW=�#c% � �#c%<<8
�d� �beHW=�#c%<<8 � �#c%
�x/� �beW=�#c%<<24 � �#c%<<16 � �#c%<<8 � �#c%
͌� �tiff(T%)
͖Ȏ T% �
͠� 1,7:=�#c%
ͪ*� 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
�,�
�6(�compression=5 � compression=32773 �
�@.!incacheptr=datacache%:!numlefttogo=cache%
�Jș12,4,c%,datacache%,cache%
�T�
�^�
�h(� �watford(wtsx%,� rep%,� wt%,X%,c%)
�r �rlexpand%,wtsx%,rep%,wt%,X%
�|� C%=�#c%:Ȏ 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%
���
��*� �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%
�&�
�0� �reduce(� A%,� B%)
�:� C%,D%:C%=A%:D%=B%
�D� �C%<D% Ȕ C%,D%
�NC%=C%�D%
�X	�C%=0
�bA%=A%�D%:B%=B%�D%
�l�
�v� �readpixelrow(z%())
π�rows% �
ϊrows%-=1:�sx%=x% �
ϔW%=�(r$+"(z%())")
Ϟ�
Ϩ@W%=�(r$+"(xp%())"):�xsample%,xmul%,xdiv%,z%(1,0),xp%(1,0),x%
ϲ�
ϼ�
��
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%
�*�
�4�
�>
z%()=0
�H�
�R�
�\� �sharp(z%())
�f=yread%-=1:�yread% W%=�(r$+"(rm%())"):�equal% �fit2(rm%())
�p=�B%=0�col:rm%(0,B%)=rm%(1,B%):rm%(sx%+1,B%)=rm%(sx%,B%):�
�z;� sharp%,z%(1,0),rm%(1,0),rm1%(1,0),rm2%(1,0),totvals2%
Є!Ȕ rm2%(),rm1%():rm1%()=rm%()
Ў�
И� �scaledpixelrow(z%())
Т
�sy%=y% �
Ь�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
�8�
�B<Y%-=ysamp%:xl2%()=xl%()*ysamp%:z%()=z%()+xl2%():ysamp%=0
�L�
�V
� Y%=0
�`�
�j
ysamp%+=1
�t�
�~�
ш�
ђ� �fit(z%())
ќ$�histequal%,z%(1,0),new%(0,0),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
�2Crpal%(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
�F�
�P�
�Z�
�d� �cachesize(A%)
�n)ș&20023,"ChangeFSI$Cache",A%,-1 �,,Z
�x�Z<>0 �
҂9ș35,"ChangeFSI$Cache",A%,20 �,,Z:A%?Z=13:cache%=�$A%
Ҍ+�$A%,"K")��$A%,"k") cache%=cache%*1024
Җ�
Ҡcache%=128*1024
Ҫ�
Ҵ�
Ҿ
� �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%
�6�
�J� �8(z%())
�T=�mappix%,z%(1,0),r%(0),g%(0),b%(0),buff%:buff%+=rowbytes%
�^%rowstogo%-=1:�rowstogo%=0 �refill
�h=�
�|� �16(z%())
ӆD�mappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),buff%,buff%
Ӑ6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
Ӛ=�
Ӯ� �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%
�02�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�:=�
�N� �500(z%())
�X)� LZWdecode%,table%(0),c%,plbuff%,sx%
�b.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�l=�
Ԁ� �800(z%())
Ԋ)�watfordcache(wtsx%,rep%,wt%,plbuff%)
Ԕ.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
Ԟ=�
Բ� �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%())
�4A�unpack%,buff%:�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�>6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
�H=�
�\� �1000(z%())
�f?X%=buff%:�rep%>0 C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:pa%+=1
�p8�rep2%>0 C%=?pa%:�rlexpand%,pasx%,rep2%,C%,X%:pa%+=1
�z� C%=�#c%:�C%=0 �
Մ@rep%=�#c%:C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:�rep%=0 pa%+=1
Վ�
՘Srep2%=C%�15:rep%=C%>>4:�rep% C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:�rep%=0 pa%+=1
բI�X%<pasx% �rep2% C%=?pa%:�rlexpand%,pasx%,rep2%,C%,X%:�rep2%=0 pa%+=1
լ�
ն
�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%
�8=�
�L� �1400(z%())
�V�vrep% �
�`vrep%-=1
�j�
�t8G%=buff%:�X%=1�planes%:G%+=rowbytes%:F%=G%-rowbytes%
�~� C%=�#c%:�C%=0 �
ֈC%=�#c%:�C%=0 �
֒C%=�#c%:vrep%=�#c%-1
֜�
֦*D%=F%:ș12,4,c%,F%,patlen%:F%+=patlen%
ְ>�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%())
�FD�readiff%,rowbytes%,plbuff%:rowstogo%-=1:�rowstogo%=0 �nextstrip
�P.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�Z=�
�n� �1505(z%())
�x/� LZWdecode%,table%(0),c%,plbuff%,rowbytes%
ׂ(rowstogo%-=1:�rowstogo%=0 �nextstrip
׌.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
ז=�
ת� �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%:�
�6(�masking% �readiff%,rowbytes%,pbuff%
�@&�plancnv%,rowbytes%,plbuff%,pbuff%
�J-�mappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
�T=�
�h� �1850(z%())
�r�readiff%,rowbytes%,plbuff%
�|.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
؆=�
ؚ� �1851(z%())
ؤ�readiff%,rowbytes%,plbuff%
خ2�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%
�0�
�:0F%=X%:?F%=�#c%:�C%=C%�128�-1:?X%=?F%:X%+=1:�
�D�
�N�X%=buff%+rowbytes%
�X,�mappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
�b=�
�v� �2001(z%())
ـX%=buff%:�
يC%=�#c%:�C%<128 �
ٔ&C%=(C%+1)*2:ș12,4,c%,X%,C%:X%+=C%
ٞ�
٨6F%=X%:ș12,4,c%,X%,2:�C%=C%�128�-1:!X%=!F%:X%+=2:�
ٲ�
ټ�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%
�42�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�>=�
�R� �2250(z%())
�\Q�mappix%,z%(1,0),rpal%(0),r%(0),gpal%(0),g%(0),bpal%(0),b%(0),table%(0),buff%
�f6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
�p=�
ڄ� �2300(z%())
ڎH�clrfirst% �X%=0�sx%-1:rb%?X%=?back%:gb%?X%=back%?1:bb%?X%=back%?2:�
ژ�vrep% �
ڢvrep%-=1
ڬ�
ڶ� �
�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%
�8=�
�L� �3000(z%())
�VQ�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
�j=�
�t� �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%
�=�
�

� �rewind
�rows%=sy%:Ȏ flag �
�� 0:�#c%=st%
�(� 100:�#c%=4
�2� 200:�#c%=st%:rep%=0
�<� 300:�#c%=st%:�#cc%=stcc%
�F� 400:�#c%=st%:rep%=0
�P5� 500:�I%=0�clearcode%-1:table%(I%)=I%:�:�#c%=st%
�ZF!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
�dH!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
�n� 501:buff%=datacache%
�x� 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
��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
�"�
�,� 1600:�#c%=st%
�6� 1700:�#c%=16
�@� 1800,1850:�#c%=st%
�J� 1900:�#c%=128:rep%=-1
�T� 2000:�#c%=st%
�^� 2100:�#c%=7
�h� 2200:�#c%=st%
�r� 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 �
�pcdblk%!4=0:�refillpcd
��
�F�cache%<filesize% ș12,4,c%,datacache%,cache%:rowstogo%=cacherows%
��
�&buff%=datacache%
�0;�cachebytes% !incacheptr=datacache%:!numlefttogo=cache%
�:C�input=24 �rbo%>=0 rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
�D�
�N2�flag=1500 �compression=5 rowstogo%=striprows%
�X�
�
00000000  0d 00 0a 11 f4 20 3e 20  43 68 61 6e 67 65 46 53  |..... > ChangeFS|
00000010  49 0d 00 82 2c dd 20 a4  43 68 61 6e 67 65 46 53  |I...,. .ChangeFS|
00000020  49 56 65 72 73 69 6f 6e  3d 22 30 2e 39 35 20 28  |IVersion="0.95 (|
00000030  31 37 74 68 20 46 65 62  20 39 34 29 22 0d 00 8c  |17th Feb 94)"...|
00000040  11 61 72 65 61 6e 75 6d  62 65 72 25 3d 30 0d 00  |.areanumber%=0..|
00000050  96 16 c8 99 22 4f 53 5f  47 65 74 45 6e 76 22 20  |...."OS_GetEnv" |
00000060  b8 20 41 24 0d 00 a0 14  e7 a7 41 24 2c 22 20 2d  |. A$......A$," -|
00000070  77 69 6d 70 22 29 20 8c  0d 00 aa 1e de 20 7a 25  |wimp") ...... z%|
00000080  28 31 29 2c 70 25 28 32  29 2c 73 25 28 33 29 2c  |(1),p%(2),s%(3),|
00000090  6d 24 28 32 31 29 0d 00  b4 22 41 25 3d 8e 22 3c  |m$(21)..."A%=."<|
000000a0  43 68 61 6e 67 65 46 53  49 24 44 69 72 3e 2e 4d  |ChangeFSI$Dir>.M|
000000b0  65 73 73 61 67 65 73 22  0d 00 be 28 42 25 3d 2d  |essages"...(B%=-|
000000c0  31 3a f5 20 42 25 2b 3d  31 3a 6d 24 28 42 25 29  |1:. B%+=1:m$(B%)|
000000d0  3d be 23 41 25 3a fd c5  23 41 25 3a d9 23 41 25  |=.#A%:..#A%:.#A%|
000000e0  0d 00 c8 1f 73 74 61 72  74 66 69 6c 65 25 3d c2  |....startfile%=.|
000000f0  41 24 2c 36 29 3c 3e 22  2d 77 69 6d 70 20 22 0d  |A$,6)<>"-wimp ".|
00000100  00 d2 1e de 20 74 61 73  6b 69 64 25 34 3a 24 74  |.... taskid%4:$t|
00000110  61 73 6b 69 64 25 3d 22  54 41 53 4b 22 0d 00 dc  |askid%="TASK"...|
00000120  37 c8 99 20 22 57 69 6d  70 5f 49 6e 69 74 69 61  |7.. "Wimp_Initia|
00000130  6c 69 73 65 22 2c 32 30  30 2c 21 74 61 73 6b 69  |lise",200,!taski|
00000140  64 25 2c 6d 24 28 32 30  29 20 b8 20 76 65 72 73  |d%,m$(20) . vers|
00000150  69 6f 6e 25 0d 00 e6 1e  57 69 6d 70 20 20 20 20  |ion%....Wimp    |
00000160  3d 20 28 31 3c 3c 31 38  29 20 2b 20 28 33 3c 3c  |= (1<<18) + (3<<|
00000170  36 29 0d 00 f0 25 43 72  65 61 74 65 57 20 3d 20  |6)...%CreateW = |
00000180  57 69 6d 70 2b 31 3a 4f  70 65 6e 57 20 20 20 3d  |Wimp+1:OpenW   =|
00000190  20 57 69 6d 70 2b 35 0d  00 fa 25 43 6c 6f 73 65  | Wimp+5...%Close|
000001a0  57 20 20 3d 20 57 69 6d  70 2b 36 3a 52 65 64 72  |W  = Wimp+6:Redr|
000001b0  61 77 57 20 3d 20 57 69  6d 70 2b 38 0d 01 04 26  |awW = Wimp+8...&|
000001c0  55 70 64 61 74 65 57 20  3d 20 57 69 6d 70 2b 39  |UpdateW = Wimp+9|
000001d0  3a 47 65 74 52 25 20 20  20 3d 20 57 69 6d 70 2b  |:GetR%   = Wimp+|
000001e0  31 30 0d 01 0e 26 47 65  74 57 20 20 20 20 3d 20  |10...&GetW    = |
000001f0  57 69 6d 70 2b 31 31 3a  53 65 74 49 20 20 20 3d  |Wimp+11:SetI   =|
00000200  20 57 69 6d 70 2b 31 33  0d 01 18 26 47 65 74 49  | Wimp+13...&GetI|
00000210  20 20 20 20 3d 20 57 69  6d 70 2b 31 34 3a 47 65  |    = Wimp+14:Ge|
00000220  74 50 20 20 20 3d 20 57  69 6d 70 2b 31 35 0d 01  |tP   = Wimp+15..|
00000230  22 26 44 72 61 67 20 20  20 20 3d 20 57 69 6d 70  |"&Drag    = Wimp|
00000240  2b 31 36 3a 43 72 4d 65  6e 75 20 3d 20 57 69 6d  |+16:CrMenu = Wim|
00000250  70 2b 32 30 0d 01 2c 15  44 63 4d 65 6e 75 20 20  |p+20..,.DcMenu  |
00000260  3d 20 57 69 6d 70 2b 32  31 0d 01 36 38 c8 99 20  |= Wimp+21..68.. |
00000270  22 4f 53 5f 53 57 49 4e  75 6d 62 65 72 46 72 6f  |"OS_SWINumberFro|
00000280  6d 53 74 72 69 6e 67 22  2c 2c 22 57 69 6d 70 5f  |mString",,"Wimp_|
00000290  50 6f 6c 6c 49 64 6c 65  22 20 b8 20 50 6f 6c 6c  |PollIdle" . Poll|
000002a0  25 0d 01 40 36 c8 99 20  22 4f 53 5f 53 57 49 4e  |%..@6.. "OS_SWIN|
000002b0  75 6d 62 65 72 46 72 6f  6d 53 74 72 69 6e 67 22  |umberFromString"|
000002c0  2c 2c 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 20  |,,"OS_SpriteOp" |
000002d0  b8 20 73 70 6f 70 25 0d  01 4a 3f c8 99 20 22 4f  |. spop%..J?.. "O|
000002e0  53 5f 53 57 49 4e 75 6d  62 65 72 46 72 6f 6d 53  |S_SWINumberFromS|
000002f0  74 72 69 6e 67 22 2c 2c  22 4f 53 5f 52 65 61 64  |tring",,"OS_Read|
00000300  4d 6f 6e 6f 74 6f 6e 69  63 54 69 6d 65 22 20 b8  |MonotonicTime" .|
00000310  20 54 69 6d 65 25 0d 01  54 4a c8 99 20 22 4f 53  | Time%..TJ.. "OS|
00000320  5f 53 57 49 4e 75 6d 62  65 72 46 72 6f 6d 53 74  |_SWINumberFromSt|
00000330  72 69 6e 67 22 2c 2c 22  43 6f 6c 6f 75 72 54 72  |ring",,"ColourTr|
00000340  61 6e 73 5f 52 65 74 75  72 6e 43 6f 6c 6f 75 72  |ans_ReturnColour|
00000350  4e 75 6d 62 65 72 22 20  b8 20 63 74 72 61 6e 25  |Number" . ctran%|
00000360  0d 01 5e 53 c8 99 20 22  58 4f 53 5f 53 57 49 4e  |..^S.. "XOS_SWIN|
00000370  75 6d 62 65 72 46 72 6f  6d 53 74 72 69 6e 67 22  |umberFromString"|
00000380  2c 2c 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |,,"DragASprite_S|
00000390  74 61 72 74 22 20 b8 20  64 73 74 61 72 74 25 3b  |tart" . dstart%;|
000003a0  66 25 3a e7 66 25 80 20  31 20 64 73 74 61 72 74  |f%:.f%. 1 dstart|
000003b0  25 3d 30 0d 01 68 35 c8  99 20 22 4f 53 5f 42 79  |%=0..h5.. "OS_By|
000003c0  74 65 22 2c 31 36 31 2c  26 31 43 20 b8 20 2c 2c  |te",161,&1C . ,,|
000003d0  66 25 3a e7 28 66 25 20  80 20 32 29 3d 30 20 64  |f%:.(f% . 2)=0 d|
000003e0  73 74 61 72 74 25 3d 30  0d 01 72 13 6e 65 78 74  |start%=0..r.next|
000003f0  6c 6f 63 61 74 69 6f 6e  25 3d 93 0d 01 7c 2c c8  |location%=...|,.|
00000400  99 20 22 57 69 6d 70 5f  53 6c 6f 74 53 69 7a 65  |. "Wimp_SlotSize|
00000410  22 2c 2d 31 2c 2d 31 20  b8 20 6f 72 69 67 69 6e  |",-1,-1 . origin|
00000420  61 6c 73 6c 6f 74 25 0d  01 90 15 e7 20 76 65 72  |alslot%..... ver|
00000430  73 69 6f 6e 25 3e 3d 33  30 30 20 8c 0d 01 9a 59  |sion%>=300 ....Y|
00000440  de 20 71 25 20 32 35 35  2c 69 66 61 63 74 6f 72  |. q% 255,ifactor|
00000450  73 25 20 31 35 2c 66 61  63 74 6f 72 73 25 20 31  |s% 15,factors% 1|
00000460  35 2c 70 69 78 74 72 61  6e 73 25 20 32 35 35 2c  |5,pixtrans% 255,|
00000470  70 61 6c 74 65 6d 70 25  20 31 30 32 33 2c 62 75  |paltemp% 1023,bu|
00000480  66 66 65 72 25 20 32 35  35 2c 69 64 61 74 61 25  |ffer% 255,idata%|
00000490  20 31 30 32 33 0d 01 a4  05 cc 0d 01 ae 61 de 20  | 1023........a. |
000004a0  7a 25 20 31 32 32 33 2c  71 25 20 32 35 35 2c 69  |z% 1223,q% 255,i|
000004b0  66 61 63 74 6f 72 73 25  20 31 35 2c 66 61 63 74  |factors% 15,fact|
000004c0  6f 72 73 25 20 31 35 2c  70 69 78 74 72 61 6e 73  |ors% 15,pixtrans|
000004d0  25 20 32 35 35 2c 70 61  6c 74 65 6d 70 25 20 31  |% 255,paltemp% 1|
000004e0  30 32 33 2c 62 75 66 66  65 72 25 20 32 35 35 2c  |023,buffer% 255,|
000004f0  69 64 61 74 61 25 20 32  33 39 39 0d 01 b8 05 cd  |idata% 2399.....|
00000500  0d 01 cc 0c 73 63 72 61  70 25 3d a3 0d 01 d6 21  |....scrap%=....!|
00000510  e7 20 76 65 72 73 69 6f  6e 25 3c 33 30 30 20 73  |. version%<300 s|
00000520  69 64 61 74 61 25 3d 69  64 61 74 61 25 0d 01 e0  |idata%=idata%...|
00000530  29 73 70 72 69 74 65 25  3d a3 3a 73 61 72 25 3d  |)sprite%=.:sar%=|
00000540  a3 3a 73 61 76 65 64 25  3d b9 3a 7a 24 3d c4 31  |.:saved%=.:z$=.1|
00000550  32 2c bd 31 33 29 0d 01  f4 1f c8 99 20 22 4f 53  |2,.13)...... "OS|
00000560  5f 42 79 74 65 22 2c 31  36 31 2c 26 38 43 20 b8  |_Byte",161,&8C .|
00000570  20 2c 2c 66 25 0d 01 fe  0d e7 66 25 20 80 20 31  | ,,f%.....f% . 1|
00000580  20 8c 0d 02 08 37 c8 99  22 57 69 6d 70 5f 4f 70  | ....7.."Wimp_Op|
00000590  65 6e 54 65 6d 70 6c 61  74 65 22 2c 2c 22 3c 43  |enTemplate",,"<C|
000005a0  68 61 6e 67 65 46 53 49  24 44 69 72 3e 2e 33 64  |hangeFSI$Dir>.3d|
000005b0  54 65 6d 70 6c 61 74 65  22 0d 02 12 05 cc 0d 02  |Template".......|
000005c0  1c 36 c8 99 22 57 69 6d  70 5f 4f 70 65 6e 54 65  |.6.."Wimp_OpenTe|
000005d0  6d 70 6c 61 74 65 22 2c  2c 22 3c 43 68 61 6e 67  |mplate",,"<Chang|
000005e0  65 46 53 49 24 44 69 72  3e 2e 54 65 6d 70 6c 61  |eFSI$Dir>.Templa|
000005f0  74 65 73 22 0d 02 26 05  cd 0d 02 3a 07 ea 20 85  |tes"..&....:.. .|
00000600  0d 02 44 36 ee 20 85 20  c8 99 22 57 69 6d 70 5f  |..D6. . .."Wimp_|
00000610  43 6c 6f 73 65 54 65 6d  70 6c 61 74 65 22 3a 85  |CloseTemplate":.|
00000620  20 30 2c f6 24 2b 22 20  28 63 6f 64 65 20 22 2b  | 0,.$+" (code "+|
00000630  c3 9e 2b 22 29 22 0d 02  58 14 e7 76 65 72 73 69  |..+")"..X..versi|
00000640  6f 6e 25 3e 3d 33 30 30  20 8c 0d 02 62 18 de 20  |on%>=300 ...b.. |
00000650  7a 25 20 a4 6c 61 72 67  65 73 74 5f 62 75 66 66  |z% .largest_buff|
00000660  65 72 0d 02 6c 23 69 6e  64 73 69 7a 65 25 3d a4  |er..l#indsize%=.|
00000670  73 69 7a 65 5f 69 6e 64  69 72 65 63 74 28 22 49  |size_indirect("I|
00000680  6e 66 6f 22 29 0d 02 76  19 de 20 69 6e 66 6f 5f  |nfo")..v.. info_|
00000690  77 69 6e 64 25 20 69 6e  64 73 69 7a 65 25 0d 02  |wind% indsize%..|
000006a0  80 4b c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |.K.."Wimp_LoadTe|
000006b0  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 69 6e 66 6f  |mplate",,z%,info|
000006c0  5f 77 69 6e 64 25 2c 69  6e 66 6f 5f 77 69 6e 64  |_wind%,info_wind|
000006d0  25 2b 69 6e 64 73 69 7a  65 25 2c 2d 31 2c 22 49  |%+indsize%,-1,"I|
000006e0  6e 66 6f 22 2b 7a 24 2c  30 0d 02 8a 05 cc 0d 02  |nfo"+z$,0.......|
000006f0  94 4b c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |.K.."Wimp_LoadTe|
00000700  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 69 64 61 74  |mplate",,z%,idat|
00000710  61 25 2c 73 69 64 61 74  61 25 2b 32 35 30 30 2c  |a%,sidata%+2500,|
00000720  2d 31 2c 22 49 6e 66 6f  22 2b 7a 24 2c 30 20 b8  |-1,"Info"+z$,0 .|
00000730  20 2c 2c 69 64 61 74 61  25 0d 02 9e 05 cd 0d 02  | ,,idata%.......|
00000740  a8 3f c8 99 20 43 72 65  61 74 65 57 2c 2c 7a 25  |.?.. CreateW,,z%|
00000750  20 b8 20 69 6e 66 6f 77  25 3a 24 21 28 7a 25 2b  | . infow%:$!(z%+|
00000760  38 38 2b 37 2a 33 32 2b  32 30 29 3d a4 43 68 61  |88+7*32+20)=.Cha|
00000770  6e 67 65 46 53 49 56 65  72 73 69 6f 6e 0d 02 bc  |ngeFSIVersion...|
00000780  14 e7 76 65 72 73 69 6f  6e 25 3e 3d 33 30 30 20  |..version%>=300 |
00000790  8c 0d 02 c6 29 69 6e 64  73 69 7a 65 25 3d a4 73  |....)indsize%=.s|
000007a0  69 7a 65 5f 69 6e 64 69  72 65 63 74 28 22 50 72  |ize_indirect("Pr|
000007b0  6f 63 65 73 73 69 6e 67  22 29 0d 02 d0 19 de 20  |ocessing")..... |
000007c0  70 72 6f 63 5f 77 69 6e  64 25 20 69 6e 64 73 69  |proc_wind% indsi|
000007d0  7a 65 25 0d 02 da 4e c8  99 22 57 69 6d 70 5f 4c  |ze%...N.."Wimp_L|
000007e0  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 2c 7a 25  |oadTemplate",,z%|
000007f0  2c 70 72 6f 63 5f 77 69  6e 64 25 2c 70 72 6f 63  |,proc_wind%,proc|
00000800  5f 77 69 6e 64 25 2b 69  6e 64 73 69 7a 65 25 2c  |_wind%+indsize%,|
00000810  2d 31 2c 22 50 72 6f 63  65 73 73 69 6e 67 22 2c  |-1,"Processing",|
00000820  30 0d 02 e4 05 cc 0d 02  ee 4e c8 99 22 57 69 6d  |0........N.."Wim|
00000830  70 5f 4c 6f 61 64 54 65  6d 70 6c 61 74 65 22 2c  |p_LoadTemplate",|
00000840  2c 7a 25 2c 69 64 61 74  61 25 2c 73 69 64 61 74  |,z%,idata%,sidat|
00000850  61 25 2b 32 34 30 30 2c  2d 31 2c 22 50 72 6f 63  |a%+2400,-1,"Proc|
00000860  65 73 73 69 6e 67 22 2c  30 20 b8 20 2c 2c 69 64  |essing",0 . ,,id|
00000870  61 74 61 25 0d 02 f8 05  cd 0d 03 02 1a c8 99 20  |ata%........... |
00000880  43 72 65 61 74 65 57 2c  2c 7a 25 20 b8 20 70 72  |CreateW,,z% . pr|
00000890  6f 63 25 0d 03 0c 49 70  25 28 30 29 3d 21 28 7a  |oc%...Ip%(0)=!(z|
000008a0  25 2b 38 38 2b 38 2a 33  32 2b 32 30 29 3a 70 25  |%+88+8*32+20):p%|
000008b0  28 31 29 3d 21 28 7a 25  2b 38 38 2b 39 2a 33 32  |(1)=!(z%+88+9*32|
000008c0  2b 32 30 29 3a 70 25 28  32 29 3d 21 28 7a 25 2b  |+20):p%(2)=!(z%+|
000008d0  38 38 2b 31 30 2a 33 32  2b 32 30 29 0d 03 20 14  |88+10*32+20).. .|
000008e0  e7 76 65 72 73 69 6f 6e  25 3e 3d 33 30 30 20 8c  |.version%>=300 .|
000008f0  0d 03 2a 25 69 6e 64 73  69 7a 65 25 3d a4 73 69  |..*%indsize%=.si|
00000900  7a 65 5f 69 6e 64 69 72  65 63 74 28 22 4f 75 74  |ze_indirect("Out|
00000910  70 75 74 22 29 0d 03 34  19 de 20 6f 75 74 70 5f  |put")..4.. outp_|
00000920  77 69 6e 64 25 20 69 6e  64 73 69 7a 65 25 0d 03  |wind% indsize%..|
00000930  3e 4d c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |>M.."Wimp_LoadTe|
00000940  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 6f 75 74 70  |mplate",,z%,outp|
00000950  5f 77 69 6e 64 25 2c 6f  75 74 70 5f 77 69 6e 64  |_wind%,outp_wind|
00000960  25 2b 69 6e 64 73 69 7a  65 25 2c 2d 31 2c 22 4f  |%+indsize%,-1,"O|
00000970  75 74 70 75 74 22 2b 7a  24 2c 30 0d 03 48 05 cc  |utput"+z$,0..H..|
00000980  0d 03 52 4d c8 99 22 57  69 6d 70 5f 4c 6f 61 64  |..RM.."Wimp_Load|
00000990  54 65 6d 70 6c 61 74 65  22 2c 2c 7a 25 2c 69 64  |Template",,z%,id|
000009a0  61 74 61 25 2c 73 69 64  61 74 61 25 2b 32 34 30  |ata%,sidata%+240|
000009b0  30 2c 2d 31 2c 22 4f 75  74 70 75 74 22 2b 7a 24  |0,-1,"Output"+z$|
000009c0  2c 30 20 b8 20 2c 2c 69  64 61 74 61 25 0d 03 5c  |,0 . ,,idata%..\|
000009d0  05 cd 0d 03 66 50 c8 99  20 43 72 65 61 74 65 57  |....fP.. CreateW|
000009e0  2c 2c 7a 25 20 b8 20 6f  75 74 70 75 74 25 3a 61  |,,z% . output%:a|
000009f0  64 6d 6f 64 65 25 3d 21  28 7a 25 2b 38 38 2b 31  |dmode%=!(z%+88+1|
00000a00  37 2a 33 32 2b 32 30 29  3a 61 64 73 70 63 6c 25  |7*32+20):adspcl%|
00000a10  3d 21 28 7a 25 2b 38 38  2b 31 36 2a 33 32 2b 32  |=!(z%+88+16*32+2|
00000a20  30 29 0d 03 7a 14 e7 76  65 72 73 69 6f 6e 25 3e  |0)..z..version%>|
00000a30  3d 33 30 30 20 8c 0d 03  84 26 69 6e 64 73 69 7a  |=300 ....&indsiz|
00000a40  65 25 3d a4 73 69 7a 65  5f 69 6e 64 69 72 65 63  |e%=.size_indirec|
00000a50  74 28 22 53 63 61 6c 69  6e 67 22 29 0d 03 8e 19  |t("Scaling")....|
00000a60  de 20 73 63 61 6c 5f 77  69 6e 64 25 20 69 6e 64  |. scal_wind% ind|
00000a70  73 69 7a 65 25 0d 03 98  4e c8 99 22 57 69 6d 70  |size%...N.."Wimp|
00000a80  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 22 2c 2c  |_LoadTemplate",,|
00000a90  7a 25 2c 73 63 61 6c 5f  77 69 6e 64 25 2c 73 63  |z%,scal_wind%,sc|
00000aa0  61 6c 5f 77 69 6e 64 25  2b 69 6e 64 73 69 7a 65  |al_wind%+indsize|
00000ab0  25 2c 2d 31 2c 22 53 63  61 6c 69 6e 67 22 2b 7a  |%,-1,"Scaling"+z|
00000ac0  24 2c 30 0d 03 a2 05 cc  0d 03 ac 4e c8 99 22 57  |$,0........N.."W|
00000ad0  69 6d 70 5f 4c 6f 61 64  54 65 6d 70 6c 61 74 65  |imp_LoadTemplate|
00000ae0  22 2c 2c 7a 25 2c 69 64  61 74 61 25 2c 73 69 64  |",,z%,idata%,sid|
00000af0  61 74 61 25 2b 32 34 30  30 2c 2d 31 2c 22 53 63  |ata%+2400,-1,"Sc|
00000b00  61 6c 69 6e 67 22 2b 7a  24 2c 30 20 b8 20 2c 2c  |aling"+z$,0 . ,,|
00000b10  69 64 61 74 61 25 0d 03  b6 05 cd 0d 03 c0 36 c8  |idata%........6.|
00000b20  99 20 43 72 65 61 74 65  57 2c 2c 7a 25 20 b8 20  |. CreateW,,z% . |
00000b30  73 63 61 6c 65 77 25 3a  61 64 73 63 61 6c 65 25  |scalew%:adscale%|
00000b40  3d 21 28 7a 25 2b 38 38  2b 31 2a 33 32 2b 32 30  |=!(z%+88+1*32+20|
00000b50  29 0d 03 ca 33 73 25 28  30 29 3d 21 28 7a 25 2b  |)...3s%(0)=!(z%+|
00000b60  38 38 2b 31 30 2a 33 32  2b 32 30 29 3a 73 25 28  |88+10*32+20):s%(|
00000b70  31 29 3d 21 28 7a 25 2b  38 38 2b 31 31 2a 33 32  |1)=!(z%+88+11*32|
00000b80  2b 32 30 29 0d 03 d4 33  73 25 28 32 29 3d 21 28  |+20)...3s%(2)=!(|
00000b90  7a 25 2b 38 38 2b 31 32  2a 33 32 2b 32 30 29 3a  |z%+88+12*32+20):|
00000ba0  73 25 28 33 29 3d 21 28  7a 25 2b 38 38 2b 31 33  |s%(3)=!(z%+88+13|
00000bb0  2a 33 32 2b 32 30 29 0d  03 e8 14 e7 76 65 72 73  |*32+20).....vers|
00000bc0  69 6f 6e 25 3e 3d 33 30  30 20 8c 0d 03 f2 23 69  |ion%>=300 ....#i|
00000bd0  6e 64 73 69 7a 65 25 3d  a4 73 69 7a 65 5f 69 6e  |ndsize%=.size_in|
00000be0  64 69 72 65 63 74 28 22  53 61 76 65 22 29 0d 03  |direct("Save")..|
00000bf0  fc 19 de 20 73 61 76 65  5f 77 69 6e 64 25 20 69  |... save_wind% i|
00000c00  6e 64 73 69 7a 65 25 0d  04 06 4b c8 99 22 57 69  |ndsize%...K.."Wi|
00000c10  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
00000c20  2c 2c 7a 25 2c 73 61 76  65 5f 77 69 6e 64 25 2c  |,,z%,save_wind%,|
00000c30  73 61 76 65 5f 77 69 6e  64 25 2b 69 6e 64 73 69  |save_wind%+indsi|
00000c40  7a 65 25 2c 2d 31 2c 22  53 61 76 65 22 2b 7a 24  |ze%,-1,"Save"+z$|
00000c50  2c 30 0d 04 10 05 cc 0d  04 1a 4b c8 99 22 57 69  |,0........K.."Wi|
00000c60  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
00000c70  2c 2c 7a 25 2c 69 64 61  74 61 25 2c 73 69 64 61  |,,z%,idata%,sida|
00000c80  74 61 25 2b 32 34 30 30  2c 2d 31 2c 22 53 61 76  |ta%+2400,-1,"Sav|
00000c90  65 22 2b 7a 24 2c 30 20  b8 20 2c 2c 69 64 61 74  |e"+z$,0 . ,,idat|
00000ca0  61 25 0d 04 24 05 cd 0d  04 2e 33 c8 99 20 43 72  |a%..$.....3.. Cr|
00000cb0  65 61 74 65 57 2c 2c 7a  25 20 b8 20 73 61 76 65  |eateW,,z% . save|
00000cc0  25 3a 61 64 73 61 76 65  25 3d 21 28 7a 25 2b 38  |%:adsave%=!(z%+8|
00000cd0  38 2b 31 2a 33 32 2b 32  30 29 0d 04 42 14 e7 76  |8+1*32+20)..B..v|
00000ce0  65 72 73 69 6f 6e 25 3e  3d 33 30 30 20 8c 0d 04  |ersion%>=300 ...|
00000cf0  4c 25 69 6e 64 73 69 7a  65 25 3d a4 73 69 7a 65  |L%indsize%=.size|
00000d00  5f 69 6e 64 69 72 65 63  74 28 22 53 70 72 69 74  |_indirect("Sprit|
00000d10  65 22 29 0d 04 56 19 de  20 73 70 72 74 5f 77 69  |e")..V.. sprt_wi|
00000d20  6e 64 25 20 69 6e 64 73  69 7a 65 25 0d 04 60 4d  |nd% indsize%..`M|
00000d30  c8 99 22 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |.."Wimp_LoadTemp|
00000d40  6c 61 74 65 22 2c 2c 7a  25 2c 73 70 72 74 5f 77  |late",,z%,sprt_w|
00000d50  69 6e 64 25 2c 73 70 72  74 5f 77 69 6e 64 25 2b  |ind%,sprt_wind%+|
00000d60  69 6e 64 73 69 7a 65 25  2c 2d 31 2c 22 53 70 72  |indsize%,-1,"Spr|
00000d70  69 74 65 22 2b 7a 24 2c  30 0d 04 6a 05 cc 0d 04  |ite"+z$,0..j....|
00000d80  74 4d c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |tM.."Wimp_LoadTe|
00000d90  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 69 64 61 74  |mplate",,z%,idat|
00000da0  61 25 2c 73 69 64 61 74  61 25 2b 32 34 30 30 2c  |a%,sidata%+2400,|
00000db0  2d 31 2c 22 53 70 72 69  74 65 22 2b 7a 24 2c 30  |-1,"Sprite"+z$,0|
00000dc0  20 b8 20 2c 2c 69 64 61  74 61 25 0d 04 7e 05 cd  | . ,,idata%..~..|
00000dd0  0d 04 88 50 c8 99 20 43  72 65 61 74 65 57 2c 2c  |...P.. CreateW,,|
00000de0  7a 25 20 b8 20 73 69 6e  66 6f 25 3a 61 64 73 6e  |z% . sinfo%:adsn|
00000df0  61 6d 65 25 3d 21 28 7a  25 2b 38 38 2b 35 2a 33  |ame%=!(z%+88+5*3|
00000e00  32 2b 32 30 29 3a 61 64  73 62 79 74 65 73 25 3d  |2+20):adsbytes%=|
00000e10  21 28 7a 25 2b 38 38 2b  38 2a 33 32 2b 32 30 29  |!(z%+88+8*32+20)|
00000e20  0d 04 92 48 61 64 73 78  25 3d 21 28 7a 25 2b 38  |...Hadsx%=!(z%+8|
00000e30  38 2b 37 2a 33 32 2b 32  30 29 3a 61 64 73 79 25  |8+7*32+20):adsy%|
00000e40  3d 21 28 7a 25 2b 38 38  2b 39 2a 33 32 2b 32 30  |=!(z%+88+9*32+20|
00000e50  29 3a 61 64 73 6d 25 3d  21 28 7a 25 2b 38 38 2b  |):adsm%=!(z%+88+|
00000e60  36 2a 33 32 2b 32 30 29  0d 04 a6 14 e7 76 65 72  |6*32+20).....ver|
00000e70  73 69 6f 6e 25 3e 3d 33  30 30 20 8c 0d 04 b0 25  |sion%>=300 ....%|
00000e80  69 6e 64 73 69 7a 65 25  3d a4 73 69 7a 65 5f 69  |indsize%=.size_i|
00000e90  6e 64 69 72 65 63 74 28  22 53 6f 75 72 63 65 22  |ndirect("Source"|
00000ea0  29 0d 04 ba 18 de 20 73  72 63 5f 77 69 6e 64 25  |)..... src_wind%|
00000eb0  20 69 6e 64 73 69 7a 65  25 0d 04 c4 4b c8 99 22  | indsize%...K.."|
00000ec0  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00000ed0  65 22 2c 2c 7a 25 2c 73  72 63 5f 77 69 6e 64 25  |e",,z%,src_wind%|
00000ee0  2c 73 72 63 5f 77 69 6e  64 25 2b 69 6e 64 73 69  |,src_wind%+indsi|
00000ef0  7a 65 25 2c 2d 31 2c 22  53 6f 75 72 63 65 22 2b  |ze%,-1,"Source"+|
00000f00  7a 24 2c 30 0d 04 ce 05  cc 0d 04 d8 4d c8 99 22  |z$,0........M.."|
00000f10  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00000f20  65 22 2c 2c 7a 25 2c 69  64 61 74 61 25 2c 73 69  |e",,z%,idata%,si|
00000f30  64 61 74 61 25 2b 32 34  30 30 2c 2d 31 2c 22 53  |data%+2400,-1,"S|
00000f40  6f 75 72 63 65 22 2b 7a  24 2c 30 20 b8 20 2c 2c  |ource"+z$,0 . ,,|
00000f50  69 64 61 74 61 25 0d 04  e2 05 cd 0d 04 ec 35 c8  |idata%........5.|
00000f60  99 20 43 72 65 61 74 65  57 2c 2c 7a 25 20 b8 20  |. CreateW,,z% . |
00000f70  73 72 63 69 6e 66 6f 25  3a 61 64 73 72 63 25 3d  |srcinfo%:adsrc%=|
00000f80  21 28 7a 25 2b 38 38 2b  30 2a 33 32 2b 32 30 29  |!(z%+88+0*32+20)|
00000f90  0d 05 00 14 e7 76 65 72  73 69 6f 6e 25 3e 3d 33  |.....version%>=3|
00000fa0  30 30 20 8c 0d 05 0a 24  69 6e 64 73 69 7a 65 25  |00 ....$indsize%|
00000fb0  3d a4 73 69 7a 65 5f 69  6e 64 69 72 65 63 74 28  |=.size_indirect(|
00000fc0  22 52 61 6e 67 65 22 29  0d 05 14 1a de 20 72 61  |"Range")..... ra|
00000fd0  6e 67 65 5f 77 69 6e 64  25 20 69 6e 64 73 69 7a  |nge_wind% indsiz|
00000fe0  65 25 0d 05 1e 4e c8 99  22 57 69 6d 70 5f 4c 6f  |e%...N.."Wimp_Lo|
00000ff0  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 7a 25 2c  |adTemplate",,z%,|
00001000  72 61 6e 67 65 5f 77 69  6e 64 25 2c 72 61 6e 67  |range_wind%,rang|
00001010  65 5f 77 69 6e 64 25 2b  69 6e 64 73 69 7a 65 25  |e_wind%+indsize%|
00001020  2c 2d 31 2c 22 52 61 6e  67 65 22 2b 7a 24 2c 30  |,-1,"Range"+z$,0|
00001030  0d 05 28 05 cc 0d 05 32  4c c8 99 22 57 69 6d 70  |..(....2L.."Wimp|
00001040  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 22 2c 2c  |_LoadTemplate",,|
00001050  7a 25 2c 69 64 61 74 61  25 2c 73 69 64 61 74 61  |z%,idata%,sidata|
00001060  25 2b 32 34 30 30 2c 2d  31 2c 22 52 61 6e 67 65  |%+2400,-1,"Range|
00001070  22 2b 7a 24 2c 30 20 b8  20 2c 2c 69 64 61 74 61  |"+z$,0 . ,,idata|
00001080  25 0d 05 3c 05 cd 0d 05  46 35 c8 99 20 43 72 65  |%..<....F5.. Cre|
00001090  61 74 65 57 2c 2c 7a 25  20 b8 20 72 61 6e 69 6e  |ateW,,z% . ranin|
000010a0  66 6f 25 3a 61 64 72 61  6e 25 3d 21 28 7a 25 2b  |fo%:adran%=!(z%+|
000010b0  38 38 2b 30 2a 33 32 2b  32 30 29 0d 05 5a 14 e7  |88+0*32+20)..Z..|
000010c0  76 65 72 73 69 6f 6e 25  3e 3d 33 30 30 20 8c 0d  |version%>=300 ..|
000010d0  05 64 23 69 6e 64 73 69  7a 65 25 3d a4 73 69 7a  |.d#indsize%=.siz|
000010e0  65 5f 69 6e 64 69 72 65  63 74 28 22 5a 6f 6f 6d  |e_indirect("Zoom|
000010f0  22 29 0d 05 6e 19 de 20  7a 6f 6f 6d 5f 77 69 6e  |")..n.. zoom_win|
00001100  64 25 20 69 6e 64 73 69  7a 65 25 0d 05 78 4b c8  |d% indsize%..xK.|
00001110  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
00001120  61 74 65 22 2c 2c 7a 25  2c 7a 6f 6f 6d 5f 77 69  |ate",,z%,zoom_wi|
00001130  6e 64 25 2c 7a 6f 6f 6d  5f 77 69 6e 64 25 2b 69  |nd%,zoom_wind%+i|
00001140  6e 64 73 69 7a 65 25 2c  2d 31 2c 22 5a 6f 6f 6d  |ndsize%,-1,"Zoom|
00001150  22 2b 7a 24 2c 30 0d 05  82 05 cc 0d 05 8c 4b c8  |"+z$,0........K.|
00001160  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
00001170  61 74 65 22 2c 2c 7a 25  2c 69 64 61 74 61 25 2c  |ate",,z%,idata%,|
00001180  73 69 64 61 74 61 25 2b  32 34 30 30 2c 2d 31 2c  |sidata%+2400,-1,|
00001190  22 5a 6f 6f 6d 22 2b 7a  24 2c 30 20 b8 20 2c 2c  |"Zoom"+z$,0 . ,,|
000011a0  69 64 61 74 61 25 0d 05  96 05 cd 0d 05 a0 48 c8  |idata%........H.|
000011b0  99 20 43 72 65 61 74 65  57 2c 2c 7a 25 20 b8 20  |. CreateW,,z% . |
000011c0  7a 6f 6f 6d 25 3a 7a 25  28 30 29 3d 21 28 7a 25  |zoom%:z%(0)=!(z%|
000011d0  2b 38 38 2b 34 2a 33 32  2b 32 30 29 3a 7a 25 28  |+88+4*32+20):z%(|
000011e0  31 29 3d 21 28 7a 25 2b  38 38 2b 35 2a 33 32 2b  |1)=!(z%+88+5*32+|
000011f0  32 30 29 0d 05 b4 14 e7  76 65 72 73 69 6f 6e 25  |20).....version%|
00001200  3e 3d 33 30 30 20 8c 0d  05 be 22 69 6e 64 73 69  |>=300 ...."indsi|
00001210  7a 65 25 3d a4 73 69 7a  65 5f 69 6e 64 69 72 65  |ze%=.size_indire|
00001220  63 74 28 22 50 69 63 22  29 0d 05 c8 18 de 20 70  |ct("Pic")..... p|
00001230  69 63 5f 77 69 6e 64 25  20 69 6e 64 73 69 7a 65  |ic_wind% indsize|
00001240  25 0d 05 d2 48 c8 99 22  57 69 6d 70 5f 4c 6f 61  |%...H.."Wimp_Loa|
00001250  64 54 65 6d 70 6c 61 74  65 22 2c 2c 7a 25 2c 70  |dTemplate",,z%,p|
00001260  69 63 5f 77 69 6e 64 25  2c 70 69 63 5f 77 69 6e  |ic_wind%,pic_win|
00001270  64 25 2b 69 6e 64 73 69  7a 65 25 2c 2d 31 2c 22  |d%+indsize%,-1,"|
00001280  50 69 63 22 2b 7a 24 2c  30 0d 05 dc 05 cc 0d 05  |Pic"+z$,0.......|
00001290  e6 3f c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |.?.."Wimp_LoadTe|
000012a0  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 69 64 61 74  |mplate",,z%,idat|
000012b0  61 25 2c 73 69 64 61 74  61 25 2b 32 34 30 30 2c  |a%,sidata%+2400,|
000012c0  2d 31 2c 22 50 69 63 22  2b 7a 24 2c 30 0d 05 f0  |-1,"Pic"+z$,0...|
000012d0  05 cd 0d 05 fa 28 c8 99  20 43 72 65 61 74 65 57  |.....(.. CreateW|
000012e0  2c 2c 7a 25 20 b8 20 70  69 63 25 3a 61 64 74 69  |,,z% . pic%:adti|
000012f0  74 6c 65 25 3d 7a 25 21  37 32 0d 06 0e 07 f7 20  |tle%=z%!72..... |
00001300  85 0d 06 18 1a c8 99 22  57 69 6d 70 5f 43 6c 6f  |......."Wimp_Clo|
00001310  73 65 54 65 6d 70 6c 61  74 65 22 0d 06 22 40 21  |seTemplate".."@!|
00001320  71 25 3d 2d 31 3a 71 25  21 34 3d 30 3a 71 25 21  |q%=-1:q%!4=0:q%!|
00001330  38 3d 30 3a 71 25 21 31  32 3d 36 38 3a 71 25 21  |8=0:q%!12=68:q%!|
00001340  31 36 3d 36 38 3a 71 25  21 32 30 3d 25 31 31 30  |16=68:q%!20=%110|
00001350  30 30 30 30 30 30 30 30  30 31 30 0d 06 2c 3a 24  |00000000010..,:$|
00001360  28 71 25 2b 32 34 29 3d  22 21 22 2b 6d 24 28 32  |(q%+24)="!"+m$(2|
00001370  30 29 3a c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |0):.."Wimp_Creat|
00001380  65 49 63 6f 6e 22 2c 2c  71 25 20 b8 20 69 63 6f  |eIcon",,q% . ico|
00001390  6e 62 61 72 25 0d 06 36  29 41 25 3d 8e 22 3c 43  |nbar%..6)A%=."<C|
000013a0  68 61 6e 67 65 46 53 49  24 44 69 72 3e 2e 43 68  |hangeFSI$Dir>.Ch|
000013b0  6f 69 63 65 73 22 3a e7  41 25 3d 30 20 8c 0d 06  |oices":.A%=0 ...|
000013c0  40 44 66 61 73 74 25 3d  a3 3a 73 74 61 74 65 73  |@Dfast%=.:states|
000013d0  63 61 6c 65 25 3d 25 31  30 30 30 30 30 30 30 31  |cale%=%100000001|
000013e0  30 30 3a 73 74 61 74 65  70 72 6f 63 25 3d 30 3a  |00:stateproc%=0:|
000013f0  73 74 61 74 65 6f 75 74  70 75 74 25 3d 26 61 30  |stateoutput%=&a0|
00001400  30 38 0d 06 4a 32 24 70  25 28 30 29 3d 22 22 3a  |08..J2$p%(0)="":|
00001410  24 70 25 28 31 29 3d 22  32 2e 32 22 3a 24 70 25  |$p%(1)="2.2":$p%|
00001420  28 32 29 3d 22 32 34 22  3a 24 61 64 73 70 63 6c  |(2)="24":$adspcl|
00001430  25 3d 22 22 0d 06 54 3d  24 61 64 6d 6f 64 65 25  |%=""..T=$admode%|
00001440  3d 22 32 38 22 3a 24 73  25 28 30 29 3d 22 31 22  |="28":$s%(0)="1"|
00001450  3a 24 73 25 28 31 29 3d  22 34 22 3a 24 73 25 28  |:$s%(1)="4":$s%(|
00001460  32 29 3d 22 31 22 3a 24  73 25 28 33 29 3d 22 34  |2)="1":$s%(3)="4|
00001470  22 0d 06 5e 05 cc 0d 06  68 32 e8 23 41 25 2c 66  |"..^....h2.#A%,f|
00001480  61 73 74 25 2c 73 74 61  74 65 73 63 61 6c 65 25  |ast%,statescale%|
00001490  2c 73 74 61 74 65 70 72  6f 63 25 2c 73 74 61 74  |,stateproc%,stat|
000014a0  65 6f 75 74 70 75 74 25  0d 06 72 2f e8 23 41 25  |eoutput%..r/.#A%|
000014b0  2c 24 70 25 28 30 29 2c  24 70 25 28 31 29 2c 24  |,$p%(0),$p%(1),$|
000014c0  70 25 28 32 29 2c 24 61  64 6d 6f 64 65 25 2c 24  |p%(2),$admode%,$|
000014d0  61 64 73 70 63 6c 25 0d  06 7c 24 e8 23 41 25 2c  |adspcl%..|$.#A%,|
000014e0  24 73 25 28 30 29 2c 24  73 25 28 31 29 2c 24 73  |$s%(0),$s%(1),$s|
000014f0  25 28 32 29 2c 24 73 25  28 33 29 0d 06 86 08 d9  |%(2),$s%(3).....|
00001500  23 41 25 0d 06 90 05 cd  0d 06 9a 0f 71 25 21 31  |#A%.........q%!1|
00001510  32 3d 31 3c 3c 32 31 0d  06 a4 3d 21 71 25 3d 73  |2=1<<21...=!q%=s|
00001520  63 61 6c 65 77 25 3a e3  49 25 3d 30 b8 39 3a e7  |calew%:.I%=0.9:.|
00001530  73 74 61 74 65 73 63 61  6c 65 25 3e 3e 49 25 80  |statescale%>>I%.|
00001540  31 20 71 25 21 38 3d 31  3c 3c 32 31 20 8b 71 25  |1 q%!8=1<<21 .q%|
00001550  21 38 3d 30 0d 06 ae 19  71 25 21 34 3d 49 25 3a  |!8=0....q%!4=I%:|
00001560  c8 99 20 53 65 74 49 2c  2c 71 25 3a ed 0d 06 b8  |.. SetI,,q%:....|
00001570  33 e3 49 25 3d 31 30 b8  31 33 3a e7 73 74 61 74  |3.I%=10.13:.stat|
00001580  65 73 63 61 6c 65 25 3e  3e 49 25 80 31 20 71 25  |escale%>>I%.1 q%|
00001590  21 38 3d 31 3c 3c 32 31  20 8b 71 25 21 38 3d 30  |!8=1<<21 .q%!8=0|
000015a0  0d 06 c2 1b 71 25 21 34  3d 49 25 2b 36 3a c8 99  |....q%!4=I%+6:..|
000015b0  20 53 65 74 49 2c 2c 71  25 3a ed 0d 06 cc 3a 21  | SetI,,q%:....:!|
000015c0  71 25 3d 70 72 6f 63 25  3a e3 49 25 3d 30 b8 37  |q%=proc%:.I%=0.7|
000015d0  3a e7 73 74 61 74 65 70  72 6f 63 25 3e 3e 49 25  |:.stateproc%>>I%|
000015e0  80 31 20 71 25 21 38 3d  31 3c 3c 32 31 20 8b 71  |.1 q%!8=1<<21 .q|
000015f0  25 21 38 3d 30 0d 06 d6  19 71 25 21 34 3d 49 25  |%!8=0....q%!4=I%|
00001600  3a c8 99 20 53 65 74 49  2c 2c 71 25 3a ed 0d 06  |:.. SetI,,q%:...|
00001610  e0 3f 21 71 25 3d 6f 75  74 70 75 74 25 3a e3 49  |.?!q%=output%:.I|
00001620  25 3d 30 b8 31 35 3a e7  73 74 61 74 65 6f 75 74  |%=0.15:.stateout|
00001630  70 75 74 25 3e 3e 49 25  80 31 20 71 25 21 38 3d  |put%>>I%.1 q%!8=|
00001640  31 3c 3c 32 31 20 8b 71  25 21 38 3d 30 0d 06 ea  |1<<21 .q%!8=0...|
00001650  19 71 25 21 34 3d 49 25  3a c8 99 20 53 65 74 49  |.q%!4=I%:.. SetI|
00001660  2c 2c 71 25 3a ed 0d 06  f4 29 f2 73 68 6f 77 73  |,,q%:....).shows|
00001670  63 61 6c 65 74 6f 66 69  74 3a 24 7a 25 28 30 29  |caletofit:$z%(0)|
00001680  3d 22 31 22 3a 24 7a 25  28 31 29 3d 22 31 22 0d  |="1":$z%(1)="1".|
00001690  06 fe 20 c8 99 20 22 4f  53 5f 55 70 64 61 74 65  |.. .. "OS_Update|
000016a0  4d 45 4d 43 22 20 b8 20  6f 6c 64 6d 65 6d 63 0d  |MEMC" . oldmemc.|
000016b0  07 12 3f ee 20 85 20 c8  99 22 4f 53 5f 55 70 64  |..?. . .."OS_Upd|
000016c0  61 74 65 4d 45 4d 43 22  2c 6f 6c 64 6d 65 6d 63  |ateMEMC",oldmemc|
000016d0  2c 26 37 30 30 3a f2 65  72 72 6f 72 62 6f 78 3a  |,&700:.errorbox:|
000016e0  c8 99 20 43 72 4d 65 6e  75 2c 2c 2d 31 20 0d 07  |.. CrMenu,,-1 ..|
000016f0  1c 0f c8 99 20 44 72 61  67 2c 2c 2d 31 0d 07 26  |.... Drag,,-1..&|
00001700  31 e7 ac 73 70 72 69 74  65 25 20 c8 99 20 22 57  |1..sprite% .. "W|
00001710  69 6d 70 5f 53 6c 6f 74  53 69 7a 65 22 2c 6f 72  |imp_SlotSize",or|
00001720  69 67 69 6e 61 6c 73 6c  6f 74 25 2c 2d 31 0d 07  |iginalslot%,-1..|
00001730  30 42 46 24 3d 22 22 3a  e7 73 74 61 72 74 66 69  |0BF$="":.startfi|
00001740  6c 65 25 20 73 74 61 72  74 66 69 6c 65 25 3d a3  |le% startfile%=.|
00001750  3a 46 24 3d c1 41 24 2c  a7 41 24 2c 22 2d 77 69  |:F$=.A$,.A$,"-wi|
00001760  6d 70 22 29 2b 36 29 3a  f2 63 61 6c 6c 46 53 49  |mp")+6):.callFSI|
00001770  0d 07 3a 05 f5 0d 07 44  16 c8 99 20 50 6f 6c 6c  |..:....D... Poll|
00001780  25 2c 31 2c 71 25 20 b8  20 41 25 0d 07 4e 0b c8  |%,1,q% . A%..N..|
00001790  8e 20 41 25 20 ca 0d 07  58 25 c9 20 31 20 3a e7  |. A% ...X%. 1 :.|
000017a0  73 70 72 69 74 65 25 20  f2 72 65 64 72 61 77 5f  |sprite% .redraw_|
000017b0  77 69 6e 64 6f 77 28 21  71 25 29 0d 07 62 42 c9  |window(!q%)..bB.|
000017c0  20 32 20 3a f2 6f 70 65  6e 5f 77 69 6e 64 6f 77  | 2 :.open_window|
000017d0  28 21 71 25 2c 71 25 21  34 2c 71 25 21 38 2c 71  |(!q%,q%!4,q%!8,q|
000017e0  25 21 31 32 2c 71 25 21  31 36 2c 71 25 21 32 30  |%!12,q%!16,q%!20|
000017f0  2c 71 25 21 32 34 2c 71  25 21 32 38 29 0d 07 6c  |,q%!24,q%!28)..l|
00001800  32 c9 20 33 20 3a c8 99  20 26 34 30 30 63 33 2c  |2. 3 :.. &400c3,|
00001810  2c 71 25 3a 6e 65 78 74  6c 6f 63 61 74 69 6f 6e  |,q%:nextlocation|
00001820  25 3d 93 3a f2 72 65 6d  6f 76 65 61 72 65 61 0d  |%=.:.removearea.|
00001830  07 76 3a c8 99 20 22 57  69 6d 70 5f 53 6c 6f 74  |.v:.. "Wimp_Slot|
00001840  53 69 7a 65 22 2c 6f 72  69 67 69 6e 61 6c 73 6c  |Size",originalsl|
00001850  6f 74 25 2c 2d 31 3a 73  61 76 65 64 25 3d b9 3a  |ot%,-1:saved%=.:|
00001860  73 70 72 69 74 65 25 3d  a3 0d 07 80 35 c9 20 36  |sprite%=....5. 6|
00001870  20 3a f2 63 68 65 63 6b  6d 6f 75 73 65 28 21 71  | :.checkmouse(!q|
00001880  25 2c 71 25 21 34 2c 71  25 21 38 2c 71 25 21 31  |%,q%!4,q%!8,q%!1|
00001890  32 2c 71 25 21 31 36 2c  71 25 21 32 30 29 0d 07  |2,q%!16,q%!20)..|
000018a0  8a 46 c9 20 37 20 3a c8  99 20 47 65 74 50 2c 2c  |.F. 7 :.. GetP,,|
000018b0  71 25 3a 64 77 25 3d 71  25 21 31 32 3a 64 69 25  |q%:dw%=q%!12:di%|
000018c0  3d 71 25 21 31 36 3a e7  64 73 74 61 72 74 25 20  |=q%!16:.dstart% |
000018d0  c8 99 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |.."DragASprite_S|
000018e0  74 6f 70 22 0d 07 94 3c  71 25 21 31 32 3d 30 3a  |top"...<q%!12=0:|
000018f0  71 25 21 31 36 3d 31 3a  71 25 21 32 30 3d 64 77  |q%!16=1:q%!20=dw|
00001900  25 3a 71 25 21 32 34 3d  64 69 25 3a 71 25 21 32  |%:q%!24=di%:q%!2|
00001910  38 3d 21 71 25 3a 71 25  21 33 32 3d 71 25 21 34  |8=!q%:q%!32=q%!4|
00001920  0d 07 9e 32 71 25 21 33  36 3d 21 73 61 72 25 2b  |...2q%!36=!sar%+|
00001930  33 3a 71 25 21 34 30 3d  26 66 66 39 3a 24 61 64  |3:q%!40=&ff9:$ad|
00001940  73 61 76 65 25 3d a4 5a  53 28 61 64 73 61 76 65  |save%=.ZS(adsave|
00001950  25 29 0d 07 a8 1e 66 6f  6f 25 3d a7 24 61 64 73  |%)....foo%=.$ads|
00001960  61 76 65 25 2c 22 2e 22  29 3a c8 95 66 6f 6f 25  |ave%,"."):..foo%|
00001970  0d 07 b2 32 24 61 64 73  61 76 65 25 3d c1 24 61  |...2$adsave%=.$a|
00001980  64 73 61 76 65 25 2c 66  6f 6f 25 2b 31 29 3a 66  |dsave%,foo%+1):f|
00001990  6f 6f 25 3d a7 24 61 64  73 61 76 65 25 2c 22 2e  |oo%=.$adsave%,".|
000019a0  22 29 0d 07 bc 05 ce 0d  07 c6 32 24 28 71 25 2b  |")........2$(q%+|
000019b0  34 34 29 3d 24 61 64 73  61 76 65 25 2b bd 30 3a  |44)=$adsave%+.0:|
000019c0  21 71 25 3d 34 34 2b 28  a9 24 61 64 73 61 76 65  |!q%=44+(.$adsave|
000019d0  25 2b 31 2b 33 80 ac 33  29 0d 07 d0 33 c8 99 20  |%+1+3..3)...3.. |
000019e0  22 57 69 6d 70 5f 53 65  6e 64 4d 65 73 73 61 67  |"Wimp_SendMessag|
000019f0  65 22 2c 31 37 2c 71 25  2c 64 77 25 2c 64 69 25  |e",17,q%,dw%,di%|
00001a00  3a 6d 79 72 65 66 25 3d  71 25 21 38 0d 07 da 1d  |:myref%=q%!8....|
00001a10  c9 20 38 20 3a f2 6b 65  79 28 21 71 25 2c 71 25  |. 8 :.key(!q%,q%|
00001a20  21 34 2c 71 25 21 32 34  29 0d 07 e4 18 c9 20 39  |!4,q%!24)..... 9|
00001a30  20 3a f2 6d 65 6e 75 73  65 6c 65 63 74 28 71 25  | :.menuselect(q%|
00001a40  29 0d 07 ee 18 c9 20 31  37 2c 31 38 3a f2 72 65  |)..... 17,18:.re|
00001a50  63 65 69 76 65 28 71 25  29 0d 07 f8 05 cb 0d 08  |ceive(q%).......|
00001a60  02 07 fd 20 a3 0d 08 0c  05 cc 0d 08 16 08 51 25  |... ..........Q%|
00001a70  3d 93 0d 08 20 0e e0 3d  26 34 30 30 30 30 30 30  |=... ..=&4000000|
00001a80  0d 08 2a 53 ee 20 85 20  ee 20 85 20 87 3a ff 22  |..*S. . . . .:."|
00001a90  53 65 74 20 43 68 61 6e  67 65 46 53 49 24 52 65  |Set ChangeFSI$Re|
00001aa0  74 75 72 6e 43 6f 64 65  20 22 2b f6 24 2b 22 20  |turnCode "+.$+" |
00001ab0  28 63 6f 64 65 20 22 2b  c3 9e 2b 22 29 22 3a f2  |(code "+..+")":.|
00001ac0  72 65 6d 6f 76 65 61 72  65 61 3a d8 3a e0 3d 51  |removearea:.:.=Q|
00001ad0  25 3a e0 0d 08 34 31 66  6f 6f 25 3d 30 3a 41 25  |%:...41foo%=0:A%|
00001ae0  3d a4 43 68 61 6e 67 65  46 53 49 28 41 24 2c 2d  |=.ChangeFSI(A$,-|
00001af0  31 2c 2d 31 2c 30 2c 2d  31 2c 2d 31 2c 66 6f 6f  |1,-1,0,-1,-1,foo|
00001b00  25 2c b9 29 0d 08 3e 2b  f2 72 65 6d 6f 76 65 61  |%,.)..>+.removea|
00001b10  72 65 61 3a 2a 75 6e 73  65 74 20 43 68 61 6e 67  |rea:*unset Chang|
00001b20  65 46 53 49 24 52 65 74  75 72 6e 43 6f 64 65 0d  |eFSI$ReturnCode.|
00001b30  08 48 0a d8 3a e0 3d 51  25 0d 08 52 05 cd 0d 08  |.H..:.=Q%..R....|
00001b40  5c 05 e0 0d 08 70 1b dd  20 a4 73 69 7a 65 5f 69  |\....p.. .size_i|
00001b50  6e 64 69 72 65 63 74 28  6e 61 6d 65 24 29 0d 08  |ndirect(name$)..|
00001b60  7a 0b ea 20 73 69 7a 65  25 0d 08 84 35 c8 99 20  |z.. size%...5.. |
00001b70  22 57 69 6d 70 5f 4c 6f  61 64 54 65 6d 70 6c 61  |"Wimp_LoadTempla|
00001b80  74 65 22 2c 2c 30 2c 2c  2c 2c 6e 61 6d 65 24 2b  |te",,0,,,,name$+|
00001b90  7a 24 2c 30 20 b8 20 2c  2c 73 69 7a 65 25 0d 08  |z$,0 . ,,size%..|
00001ba0  8e 0a 3d 73 69 7a 65 25  0d 08 a2 1e dd 20 a4 77  |..=size%..... .w|
00001bb0  69 6e 73 69 7a 65 5f 69  6e 64 69 72 65 63 74 28  |insize_indirect(|
00001bc0  6e 61 6d 65 24 29 0d 08  ac 0b ea 20 73 69 7a 65  |name$)..... size|
00001bd0  25 0d 08 b6 34 c8 99 20  22 57 69 6d 70 5f 4c 6f  |%...4.. "Wimp_Lo|
00001be0  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 30 2c 2c  |adTemplate",,0,,|
00001bf0  2c 2c 6e 61 6d 65 24 2b  7a 24 2c 30 20 b8 20 2c  |,,name$+z$,0 . ,|
00001c00  73 69 7a 65 25 0d 08 c0  0a 3d 73 69 7a 65 25 0d  |size%....=size%.|
00001c10  08 f2 15 dd 20 a4 6c 61  72 67 65 73 74 5f 62 75  |.... .largest_bu|
00001c20  66 66 65 72 0d 08 fc 23  ea 20 6c 61 72 67 65 73  |ffer...#. larges|
00001c30  74 5f 74 65 6d 25 2c 73  69 7a 65 25 2c 68 65 72  |t_tem%,size%,her|
00001c40  65 25 2c 6e 61 6d 65 0d  09 06 0d de 20 6e 61 6d  |e%,name..... nam|
00001c50  65 20 31 32 0d 09 10 24  24 6e 61 6d 65 3d 22 2a  |e 12...$$name="*|
00001c60  22 3a 68 65 72 65 25 3d  30 3a 6c 61 72 67 65 73  |":here%=0:larges|
00001c70  74 5f 74 65 6d 25 3d 30  0d 09 1a 3b c8 99 20 22  |t_tem%=0...;.. "|
00001c80  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00001c90  65 22 2c 20 2c 30 2c 2c  2c 2c 6e 61 6d 65 2c 30  |e", ,0,,,,name,0|
00001ca0  20 b8 20 2c 73 69 7a 65  25 2c 2c 2c 2c 2c 68 65  | . ,size%,,,,,he|
00001cb0  72 65 25 0d 09 24 0c c8  95 20 68 65 72 65 25 0d  |re%..$... here%.|
00001cc0  09 2e 2b e7 20 6c 61 72  67 65 73 74 5f 74 65 6d  |..+. largest_tem|
00001cd0  25 3c 73 69 7a 65 25 20  6c 61 72 67 65 73 74 5f  |%<size% largest_|
00001ce0  74 65 6d 25 3d 73 69 7a  65 25 0d 09 38 0e 24 6e  |tem%=size%..8.$n|
00001cf0  61 6d 65 3d 20 22 2a 22  0d 09 42 3f c8 99 20 22  |ame= "*"..B?.. "|
00001d00  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00001d10  65 22 2c 20 2c 30 2c 2c  2c 2c 6e 61 6d 65 2c 68  |e", ,0,,,,name,h|
00001d20  65 72 65 25 20 b8 20 2c  73 69 7a 65 25 2c 2c 2c  |ere% . ,size%,,,|
00001d30  2c 2c 68 65 72 65 25 0d  09 4c 05 ce 0d 09 56 11  |,,here%..L....V.|
00001d40  3d 6c 61 72 67 65 73 74  5f 74 65 6d 25 0d 09 6a  |=largest_tem%..j|
00001d50  12 dd 20 f2 72 65 63 65  69 76 65 28 71 25 29 0d  |.. .receive(q%).|
00001d60  09 74 0e c8 8e 20 71 25  21 31 36 20 ca 0d 09 7e  |.t... q%!16 ...~|
00001d70  17 c9 20 30 3a f2 63 68  65 63 6b 61 6e 64 66 69  |.. 0:.checkandfi|
00001d80  6e 69 73 68 0d 09 88 17  c9 20 31 3a e7 71 25 21  |nish..... 1:.q%!|
00001d90  32 30 3c 3e 73 61 76 65  25 20 8c 0d 09 92 41 21  |20<>save% ....A!|
00001da0  71 25 3d 36 30 3a 71 25  21 31 32 3d 71 25 21 38  |q%=60:q%!12=q%!8|
00001db0  3a 71 25 21 31 36 3d 32  3a 71 25 21 33 36 3d 2d  |:q%!16=2:q%!36=-|
00001dc0  31 3a 24 28 71 25 2b 34  34 29 3d 22 3c 57 69 6d  |1:$(q%+44)="<Wim|
00001dd0  70 24 53 63 72 61 70 3e  22 2b bd 30 0d 09 9c 2f  |p$Scrap>"+.0.../|
00001de0  c8 99 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |.."Wimp_SendMess|
00001df0  61 67 65 22 2c 31 37 2c  71 25 2c 71 25 21 34 3a  |age",17,q%,q%!4:|
00001e00  73 63 72 61 70 25 3d 71  25 21 38 0d 09 a6 05 cd  |scrap%=q%!8.....|
00001e10  0d 09 b0 38 c9 20 32 3a  c8 99 73 70 6f 70 25 2c  |...8. 2:..spop%,|
00001e20  26 31 30 43 2c 73 61 72  25 2c a4 5a 53 28 71 25  |&10C,sar%,.ZS(q%|
00001e30  2b 34 34 29 3a 24 61 64  73 61 76 65 25 3d a4 5a  |+44):$adsave%=.Z|
00001e40  53 28 71 25 2b 34 34 29  0d 09 ba 37 71 25 21 31  |S(q%+44)...7q%!1|
00001e50  32 3d 71 25 21 38 3a 71  25 21 31 36 3d 33 3a c8  |2=q%!8:q%!16=3:.|
00001e60  99 20 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |. "Wimp_SendMess|
00001e70  61 67 65 22 2c 31 38 2c  71 25 2c 71 25 21 34 0d  |age",18,q%,q%!4.|
00001e80  09 c4 18 e7 20 71 25 21  33 36 3c 3e 2d 31 20 73  |.... q%!36<>-1 s|
00001e90  61 76 65 64 25 3d b9 0d  09 ce 11 c8 99 20 43 72  |aved%=....... Cr|
00001ea0  4d 65 6e 75 2c 2c 2d 31  0d 09 d8 31 c9 20 33 3a  |Menu,,-1...1. 3:|
00001eb0  46 24 3d a4 5a 53 28 71  25 2b 34 34 29 3a e7 73  |F$=.ZS(q%+44):.s|
00001ec0  63 72 61 70 25 20 73 63  72 61 70 25 3d 73 63 72  |crap% scrap%=scr|
00001ed0  61 70 25 3d 71 25 21 31  32 0d 09 e2 36 71 25 21  |ap%=q%!12...6q%!|
00001ee0  31 32 3d 71 25 21 38 3a  71 25 21 31 36 3d 34 3a  |12=q%!8:q%!16=4:|
00001ef0  c8 99 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |.."Wimp_SendMess|
00001f00  61 67 65 22 2c 31 37 2c  71 25 2c 71 25 21 34 0d  |age",17,q%,q%!4.|
00001f10  09 ec 0c f2 63 61 6c 6c  46 53 49 0d 09 f6 12 c9  |....callFSI.....|
00001f20  20 35 3a c8 8e 20 71 25  21 34 30 20 ca 0d 0a 00  | 5:.. q%!40 ....|
00001f30  0f c9 20 26 66 66 30 2c  26 63 38 35 0d 0a 0a 36  |.. &ff0,&c85...6|
00001f40  71 25 21 31 32 3d 71 25  21 38 3a 71 25 21 31 36  |q%!12=q%!8:q%!16|
00001f50  3d 34 3a c8 99 22 57 69  6d 70 5f 53 65 6e 64 4d  |=4:.."Wimp_SendM|
00001f60  65 73 73 61 67 65 22 2c  31 37 2c 71 25 2c 71 25  |essage",17,q%,q%|
00001f70  21 34 0d 0a 14 1a 46 24  3d a4 5a 53 28 71 25 2b  |!4....F$=.ZS(q%+|
00001f80  34 34 29 3a f2 63 61 6c  6c 46 53 49 0d 0a 1e 05  |44):.callFSI....|
00001f90  cb 0d 0a 28 42 c9 39 2c  26 34 30 30 43 31 3a e7  |...(B.9,&400C1:.|
00001fa0  73 70 72 69 74 65 25 20  f2 67 65 74 6d 6f 64 65  |sprite% .getmode|
00001fb0  69 6e 66 6f 3a c8 99 26  34 30 30 64 31 2c 70 69  |info:..&400d1,pi|
00001fc0  63 25 2c 30 2c 2d 33 32  37 36 37 2c 33 32 37 36  |c%,0,-32767,3276|
00001fd0  37 2c 30 0d 0a 32 13 f2  73 68 6f 77 73 63 61 6c  |7,0..2..showscal|
00001fe0  65 74 6f 66 69 74 0d 0a  3c 48 c9 20 31 30 3a c8  |etofit..<H. 10:.|
00001ff0  99 22 58 4f 53 5f 52 65  61 64 56 61 72 56 61 6c  |."XOS_ReadVarVal|
00002000  22 2c 22 43 68 61 6e 67  65 46 53 49 24 44 69 72  |","ChangeFSI$Dir|
00002010  22 2c 70 61 6c 74 65 6d  70 25 2c 32 35 36 2c 30  |",paltemp%,256,0|
00002020  2c 33 20 b8 2c 2c 62 6f  6f 74 6c 65 6e 25 0d 0a  |,3 .,,bootlen%..|
00002030  46 18 70 61 6c 74 65 6d  70 25 3f 62 6f 6f 74 6c  |F.paltemp%?bootl|
00002040  65 6e 25 3d 31 33 0d 0a  50 1c d5 23 71 25 21 32  |en%=13..P..#q%!2|
00002050  30 2c 22 52 75 6e 20 22  2b 24 70 61 6c 74 65 6d  |0,"Run "+$paltem|
00002060  70 25 0d 0a 5a 05 cb 0d  0a 64 05 e1 0d 0a 78 0e  |p%..Z....d....x.|
00002070  dd 20 f2 63 61 6c 6c 46  53 49 0d 0a 82 18 41 24  |. .callFSI....A$|
00002080  3d a4 64 65 64 75 63 65  6d 6f 64 65 3a 41 25 3d  |=.deducemode:A%=|
00002090  34 37 0d 0a 8c 20 e7 a4  67 65 74 69 63 6f 6e 73  |47... ..geticons|
000020a0  74 61 74 65 28 6f 75 74  70 75 74 25 2c 31 32 29  |tate(output%,12)|
000020b0  20 8c 0d 0a 96 10 41 24  2b 3d 24 61 64 73 70 63  | .....A$+=$adspc|
000020c0  6c 25 0d 0a a0 05 cc 0d  0a aa 20 e7 a4 67 65 74  |l%........ ..get|
000020d0  69 63 6f 6e 73 74 61 74  65 28 6f 75 74 70 75 74  |iconstate(output|
000020e0  25 2c 31 33 29 20 8c 0d  0a b4 3e e7 a4 67 65 74  |%,13) ....>..get|
000020f0  69 63 6f 6e 73 74 61 74  65 28 6f 75 74 70 75 74  |iconstate(output|
00002100  25 2c 32 29 84 a4 67 65  74 69 63 6f 6e 73 74 61  |%,2)..geticonsta|
00002110  74 65 28 6f 75 74 70 75  74 25 2c 38 29 20 41 24  |te(output%,8) A$|
00002120  2b 3d 22 52 22 0d 0a be  05 cc 0d 0a c8 14 c8 99  |+="R"...........|
00002130  35 33 2c bb 41 24 2c 33  20 b8 2c 2c 41 25 0d 0a  |53,.A$,3 .,,A%..|
00002140  d2 0c e7 41 25 3d 36 33  20 8c 0d 0a dc 26 e7 a4  |...A%=63 ....&..|
00002150  67 65 74 69 63 6f 6e 73  74 61 74 65 28 6f 75 74  |geticonstate(out|
00002160  70 75 74 25 2c 33 29 20  41 24 3d 22 32 37 74 22  |put%,3) A$="27t"|
00002170  0d 0a e6 26 e7 a4 67 65  74 69 63 6f 6e 73 74 61  |...&..geticonsta|
00002180  74 65 28 6f 75 74 70 75  74 25 2c 39 29 20 41 24  |te(output%,9) A$|
00002190  3d 22 31 32 74 22 0d 0a  f0 05 cc 0d 0a fa 13 e7  |="12t"..........|
000021a0  41 25 3d 32 35 35 20 41  24 2b 3d 22 64 22 0d 0b  |A%=255 A$+="d"..|
000021b0  04 05 cd 0d 0b 0e 05 cd  0d 0b 18 05 cd 0d 0b 22  |..............."|
000021c0  2f 41 24 3d 22 67 61 72  62 61 67 65 20 22 2b 46  |/A$="garbage "+F|
000021d0  24 2b 22 20 3c 43 68 61  6e 67 65 46 53 49 24 44  |$+" <ChangeFSI$D|
000021e0  69 72 3e 2e 46 6f 6f 20  22 2b 41 24 0d 0b 2c 3e  |ir>.Foo "+A$..,>|
000021f0  e7 a4 67 65 74 69 63 6f  6e 73 74 61 74 65 28 73  |..geticonstate(s|
00002200  63 61 6c 65 77 25 2c 31  29 20 41 24 2b 3d 22 20  |calew%,1) A$+=" |
00002210  22 2b c3 74 6f 66 69 74  78 2b 22 3a 20 22 2b c3  |"+.tofitx+": "+.|
00002220  74 6f 66 69 74 79 2b 22  3a 22 0d 0b 36 28 e7 a4  |tofity+":"..6(..|
00002230  67 65 74 69 63 6f 6e 73  74 61 74 65 28 73 63 61  |geticonstate(sca|
00002240  6c 65 77 25 2c 35 29 20  41 24 2b 3d 22 20 31 3a  |lew%,5) A$+=" 1:|
00002250  32 22 0d 0b 40 2c e7 a4  67 65 74 69 63 6f 6e 73  |2"..@,..geticons|
00002260  74 61 74 65 28 73 63 61  6c 65 77 25 2c 34 29 20  |tate(scalew%,4) |
00002270  41 24 2b 3d 22 20 31 3a  32 20 31 3a 31 22 0d 0b  |A$+=" 1:2 1:1"..|
00002280  4a 2c e7 a4 67 65 74 69  63 6f 6e 73 74 61 74 65  |J,..geticonstate|
00002290  28 73 63 61 6c 65 77 25  2c 33 29 20 41 24 2b 3d  |(scalew%,3) A$+=|
000022a0  22 20 31 3a 31 20 31 3a  32 22 0d 0b 54 1f e7 a4  |" 1:1 1:2"..T...|
000022b0  67 65 74 69 63 6f 6e 73  74 61 74 65 28 73 63 61  |geticonstate(sca|
000022c0  6c 65 77 25 2c 39 29 20  8c 0d 0b 5e 25 e7 bb 24  |lew%,9) ...^%..$|
000022d0  73 25 28 30 29 20 41 24  2b 3d 22 20 22 2b 24 73  |s%(0) A$+=" "+$s|
000022e0  25 28 30 29 20 8b 41 24  2b 3d 22 20 31 22 0d 0b  |%(0) .A$+=" 1"..|
000022f0  68 12 41 24 2b 3d 22 3a  22 2b 24 73 25 28 31 29  |h.A$+=":"+$s%(1)|
00002300  0d 0b 72 25 e7 bb 24 73  25 28 32 29 20 41 24 2b  |..r%..$s%(2) A$+|
00002310  3d 22 20 22 2b 24 73 25  28 32 29 20 8b 41 24 2b  |=" "+$s%(2) .A$+|
00002320  3d 22 20 31 22 0d 0b 7c  12 41 24 2b 3d 22 3a 22  |=" 1"..|.A$+=":"|
00002330  2b 24 73 25 28 33 29 0d  0b 86 05 cd 0d 0b 90 2c  |+$s%(3)........,|
00002340  e7 a4 67 65 74 69 63 6f  6e 73 74 61 74 65 28 73  |..geticonstate(s|
00002350  63 61 6c 65 77 25 2c 30  29 20 41 24 2b 3d 22 20  |calew%,0) A$+=" |
00002360  2d 6e 6f 73 69 7a 65 22  0d 0b 9a 2e e7 a4 67 65  |-nosize"......ge|
00002370  74 69 63 6f 6e 73 74 61  74 65 28 73 63 61 6c 65  |ticonstate(scale|
00002380  77 25 2c 31 38 29 20 41  24 2b 3d 22 20 2d 6e 6f  |w%,18) A$+=" -no|
00002390  73 63 61 6c 65 22 0d 0b  a4 2b e7 a4 67 65 74 69  |scale"...+..geti|
000023a0  63 6f 6e 73 74 61 74 65  28 73 63 61 6c 65 77 25  |constate(scalew%|
000023b0  2c 31 39 29 20 41 24 2b  3d 22 20 2d 6c 6f 63 6b  |,19) A$+=" -lock|
000023c0  22 0d 0b ae 1f e7 a4 67  65 74 69 63 6f 6e 73 74  |"......geticonst|
000023d0  61 74 65 28 73 63 61 6c  65 77 25 2c 36 29 20 8c  |ate(scalew%,6) .|
000023e0  0d 0b b8 3e e7 a4 67 65  74 69 63 6f 6e 73 74 61  |...>..geticonsta|
000023f0  74 65 28 73 63 61 6c 65  77 25 2c 31 36 29 20 41  |te(scalew%,16) A|
00002400  24 2b 3d 22 20 2d 72 6f  74 61 74 65 22 20 8b 41  |$+=" -rotate" .A|
00002410  24 2b 3d 22 20 2d 72 6f  74 61 74 65 2d 22 0d 0b  |$+=" -rotate-"..|
00002420  c2 05 cd 0d 0b cc 2b e7  a4 67 65 74 69 63 6f 6e  |......+..geticon|
00002430  73 74 61 74 65 28 73 63  61 6c 65 77 25 2c 37 29  |state(scalew%,7)|
00002440  20 41 24 2b 3d 22 20 2d  68 66 6c 69 70 22 0d 0b  | A$+=" -hflip"..|
00002450  d6 2b e7 a4 67 65 74 69  63 6f 6e 73 74 61 74 65  |.+..geticonstate|
00002460  28 73 63 61 6c 65 77 25  2c 38 29 20 41 24 2b 3d  |(scalew%,8) A$+=|
00002470  22 20 2d 76 66 6c 69 70  22 0d 0b e0 29 e7 a4 67  |" -vflip"...)..g|
00002480  65 74 69 63 6f 6e 73 74  61 74 65 28 70 72 6f 63  |eticonstate(proc|
00002490  25 2c 30 29 20 41 24 2b  3d 22 20 2d 72 61 6e 67  |%,0) A$+=" -rang|
000024a0  65 22 0d 0b ea 29 e7 a4  67 65 74 69 63 6f 6e 73  |e"...)..geticons|
000024b0  74 61 74 65 28 70 72 6f  63 25 2c 31 29 20 41 24  |tate(proc%,1) A$|
000024c0  2b 3d 22 20 2d 65 71 75  61 6c 22 0d 0b f4 2c e7  |+=" -equal"...,.|
000024d0  a4 67 65 74 69 63 6f 6e  73 74 61 74 65 28 70 72  |.geticonstate(pr|
000024e0  6f 63 25 2c 32 29 20 41  24 2b 3d 22 20 2d 6e 6f  |oc%,2) A$+=" -no|
000024f0  64 69 74 68 65 72 22 0d  0b fe 2a e7 a4 67 65 74  |dither"...*..get|
00002500  69 63 6f 6e 73 74 61 74  65 28 70 72 6f 63 25 2c  |iconstate(proc%,|
00002510  33 29 20 41 24 2b 3d 22  20 2d 69 6e 76 65 72 74  |3) A$+=" -invert|
00002520  22 0d 0c 08 2c e7 a4 67  65 74 69 63 6f 6e 73 74  |"...,..geticonst|
00002530  61 74 65 28 70 72 6f 63  25 2c 34 29 20 41 24 2b  |ate(proc%,4) A$+|
00002540  3d 22 20 2d 62 72 69 67  68 74 65 6e 22 0d 0c 12  |=" -brighten"...|
00002550  30 e7 a4 67 65 74 69 63  6f 6e 73 74 61 74 65 28  |0..geticonstate(|
00002560  70 72 6f 63 25 2c 35 29  20 41 24 2b 3d 22 20 2d  |proc%,5) A$+=" -|
00002570  62 6c 61 63 6b 22 2b 24  70 25 28 30 29 0d 0c 1c  |black"+$p%(0)...|
00002580  30 e7 a4 67 65 74 69 63  6f 6e 73 74 61 74 65 28  |0..geticonstate(|
00002590  70 72 6f 63 25 2c 36 29  20 41 24 2b 3d 22 20 2d  |proc%,6) A$+=" -|
000025a0  67 61 6d 6d 61 22 2b 24  70 25 28 31 29 0d 0c 26  |gamma"+$p%(1)..&|
000025b0  32 e7 a4 67 65 74 69 63  6f 6e 73 74 61 74 65 28  |2..geticonstate(|
000025c0  70 72 6f 63 25 2c 37 29  20 41 24 2b 3d 22 20 2d  |proc%,7) A$+=" -|
000025d0  73 68 61 72 70 65 6e 22  2b 24 70 25 28 32 29 0d  |sharpen"+$p%(2).|
000025e0  0c 30 25 69 6e 66 6f 24  3d 22 22 3a 72 61 6e 67  |.0%info$="":rang|
000025f0  65 24 3d 6d 24 28 31 39  29 3a 63 70 75 74 69 6d  |e$=m$(19):cputim|
00002600  65 25 3d 30 0d 0c 3a 36  e7 73 70 72 69 74 65 25  |e%=0..:6.sprite%|
00002610  20 21 71 25 3d 70 69 63  25 3a c8 99 20 26 34 30  | !q%=pic%:.. &40|
00002620  30 63 33 2c 2c 71 25 3a  73 61 76 65 64 25 3d b9  |0c3,,q%:saved%=.|
00002630  3a 73 70 72 69 74 65 25  3d a3 0d 0c 44 13 6e 65  |:sprite%=...D.ne|
00002640  78 74 6c 6f 63 61 74 69  6f 6e 25 3d 93 0d 0c 4e  |xtlocation%=...N|
00002650  33 c8 99 20 22 57 69 6d  70 5f 53 6c 6f 74 53 69  |3.. "Wimp_SlotSi|
00002660  7a 65 22 2c 6f 72 69 67  69 6e 61 6c 73 6c 6f 74  |ze",originalslot|
00002670  25 2c 2d 31 3a f2 72 65  6d 6f 76 65 61 72 65 61  |%,-1:.removearea|
00002680  0d 0c 58 31 e7 66 61 73  74 25 20 c8 99 20 22 4f  |..X1.fast% .. "O|
00002690  53 5f 55 70 64 61 74 65  4d 45 4d 43 22 2c 26 33  |S_UpdateMEMC",&3|
000026a0  30 30 2c 26 37 30 30 20  b8 20 6f 6c 64 6d 65 6d  |00,&700 . oldmem|
000026b0  63 0d 0c 62 34 41 25 3d  a4 43 68 61 6e 67 65 46  |c..b4A%=.ChangeF|
000026c0  53 49 28 41 24 2c 2d 31  2c 2d 31 2c 6e 65 78 74  |SI(A$,-1,-1,next|
000026d0  6c 6f 63 61 74 69 6f 6e  25 2c 30 2c 30 2c 73 61  |location%,0,0,sa|
000026e0  72 25 2c 30 29 0d 0c 6c  2a e7 66 61 73 74 25 20  |r%,0)..l*.fast% |
000026f0  c8 99 20 22 4f 53 5f 55  70 64 61 74 65 4d 45 4d  |.. "OS_UpdateMEM|
00002700  43 22 2c 6f 6c 64 6d 65  6d 63 2c 26 37 30 30 0d  |C",oldmemc,&700.|
00002710  0c 76 25 e7 73 63 72 61  70 25 20 73 63 72 61 70  |.v%.scrap% scrap|
00002720  25 3d a3 3a c8 99 22 4f  53 5f 46 69 6c 65 22 2c  |%=.:.."OS_File",|
00002730  36 2c 46 24 0d 0c 80 15  e7 41 25 3c 32 20 80 20  |6,F$.....A%<2 . |
00002740  73 61 72 25 3c 3e 30 20  8c 0d 0c 8a 26 c8 99 20  |sar%<>0 ....&.. |
00002750  73 70 6f 70 25 2c 26 31  30 64 2c 73 61 72 25 2c  |spop%,&10d,sar%,|
00002760  70 69 78 74 72 61 6e 73  25 2c 32 35 35 2c 31 0d  |pixtrans%,255,1.|
00002770  0c 94 36 6e 24 3d a4 5a  53 28 70 69 78 74 72 61  |..6n$=.ZS(pixtra|
00002780  6e 73 25 29 3a c8 99 20  73 70 6f 70 25 2c 26 31  |ns%):.. spop%,&1|
00002790  32 38 2c 73 61 72 25 2c  6e 24 20 b8 2c 2c 2c 78  |28,sar%,n$ .,,,x|
000027a0  2c 79 2c 2c 6d 0d 0c 9e  2e 24 61 64 73 78 25 3d  |,y,,m....$adsx%=|
000027b0  c3 78 3a 24 61 64 73 79  25 3d c3 79 3a 24 61 64  |.x:$adsy%=.y:$ad|
000027c0  73 6d 25 3d c3 6d 3a 24  61 64 73 6e 61 6d 65 25  |sm%=.m:$adsname%|
000027d0  3d 6e 24 0d 0c a8 26 24  61 64 73 62 79 74 65 73  |=n$...&$adsbytes|
000027e0  25 3d c3 73 61 72 25 21  31 32 3a 24 61 64 72 61  |%=.sar%!12:$adra|
000027f0  6e 25 3d 72 61 6e 67 65  24 0d 0c b2 2d 24 61 64  |n%=range$...-$ad|
00002800  73 72 63 25 3d 69 6e 66  6f 24 2b 6d 24 28 30 29  |src%=info$+m$(0)|
00002810  2b c3 28 63 70 75 74 69  6d 65 25 2f 31 30 30 29  |+.(cputime%/100)|
00002820  2b 6d 24 28 31 29 0d 0c  bc 27 41 25 3d a9 46 24  |+m$(1)...'A%=.F$|
00002830  3a c8 95 c1 22 2e 22 2b  46 24 2c 41 25 2c 31 29  |:..."."+F$,A%,1)|
00002840  3c 3e 22 2e 22 3a 41 25  2d 3d 31 3a ce 0d 0c c6  |<>".":A%-=1:....|
00002850  1a 24 61 64 73 61 76 65  25 3d c1 22 2e 22 2b 46  |.$adsave%=."."+F|
00002860  24 2c 41 25 2b 31 29 0d  0c d0 1b c8 99 26 33 35  |$,A%+1)......&35|
00002870  2c 6d 2c 34 20 b8 2c 2c  6e 78 3a 78 3d 78 3c 3c  |,m,4 .,,nx:x=x<<|
00002880  6e 78 0d 0c da 1b c8 99  26 33 35 2c 6d 2c 35 20  |nx......&35,m,5 |
00002890  b8 2c 2c 6e 79 3a 79 3d  79 3c 3c 6e 79 0d 0c e4  |.,,ny:y=y<<ny...|
000028a0  23 73 61 76 65 64 25 3d  a3 3a 73 70 72 69 74 65  |#saved%=.:sprite|
000028b0  25 3d b9 3a f2 67 65 74  6d 6f 64 65 69 6e 66 6f  |%=.:.getmodeinfo|
000028c0  0d 0c ee 1f 70 69 63 25  3d a4 63 72 65 61 74 65  |....pic%=.create|
000028d0  5f 77 69 6e 64 6f 77 28  78 2c 79 2c 46 24 29 0d  |_window(x,y,F$).|
000028e0  0c f8 13 f2 70 6f 70 75  70 28 70 69 63 25 2c 2d  |....popup(pic%,-|
000028f0  31 29 0d 0d 02 05 cd 0d  0d 0c 05 e1 0d 0d 20 15  |1)............ .|
00002900  dd 20 f2 63 68 65 63 6b  61 6e 64 66 69 6e 69 73  |. .checkandfinis|
00002910  68 0d 0d 2a 37 e7 73 61  76 65 64 25 20 84 ac 73  |h..*7.saved% ..s|
00002920  70 72 69 74 65 25 20 f2  72 65 6d 6f 76 65 61 72  |prite% .removear|
00002930  65 61 3a c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |ea:.. "Wimp_Clos|
00002940  65 44 6f 77 6e 22 3a e0  0d 0d 34 2d 21 62 75 66  |eDown":...4-!buf|
00002950  66 65 72 25 3d 9f 3a 24  28 62 75 66 66 65 72 25  |fer%=.:$(buffer%|
00002960  2b 34 29 3d 6d 24 28 32  29 2b 46 24 2b 6d 24 28  |+4)=m$(2)+F$+m$(|
00002970  33 29 2b bd 30 0d 0d 3e  35 c8 99 20 22 57 69 6d  |3)+.0..>5.. "Wim|
00002980  70 5f 52 65 70 6f 72 74  45 72 72 6f 72 22 2c 62  |p_ReportError",b|
00002990  75 66 66 65 72 25 2c 25  31 30 31 31 31 2c 6d 24  |uffer%,%10111,m$|
000029a0  28 32 30 29 20 b8 20 2c  41 25 0d 0d 48 2b e7 41  |(20) . ,A%..H+.A|
000029b0  25 3d 31 20 f2 72 65 6d  6f 76 65 61 72 65 61 3a  |%=1 .removearea:|
000029c0  c8 99 20 22 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |.. "Wimp_CloseDo|
000029d0  77 6e 22 3a e0 0d 0d 52  05 e1 0d 0d 66 1e dd 20  |wn":...R....f.. |
000029e0  f2 6b 65 79 28 68 61 6e  64 6c 65 25 2c 69 63 6f  |.key(handle%,ico|
000029f0  6e 25 2c 6b 65 79 25 29  0d 0d 70 1d e7 6b 65 79  |n%,key%)..p..key|
00002a00  25 3d 26 31 62 20 c8 99  20 43 72 4d 65 6e 75 2c  |%=&1b .. CrMenu,|
00002a10  2c 2d 31 3a e1 0d 0d 7a  10 c8 8e 20 68 61 6e 64  |,-1:...z... hand|
00002a20  6c 65 25 20 ca 0d 0d 84  15 c9 20 7a 6f 6f 6d 25  |le% ...... zoom%|
00002a30  3a c8 8e 20 6b 65 79 25  20 ca 0d 0d 8e 43 c9 20  |:.. key% ....C. |
00002a40  31 33 3a f2 64 6f 7a 6f  6f 6d 28 69 63 6f 6e 25  |13:.dozoom(icon%|
00002a50  2d 34 2c 30 29 3a e7 69  63 6f 6e 25 3d 34 20 c8  |-4,0):.icon%=4 .|
00002a60  99 20 26 34 30 30 64 32  2c 7a 6f 6f 6d 25 2c 35  |. &400d2,zoom%,5|
00002a70  2c 2c 2c 2d 31 2c a9 24  7a 25 28 30 29 0d 0d 98  |,,,-1,.$z%(0)...|
00002a80  1a e7 69 63 6f 6e 25 3d  35 20 c8 99 20 43 72 4d  |..icon%=5 .. CrM|
00002a90  65 6e 75 2c 2c 2d 31 0d  0d a2 05 e1 0d 0d ac 22  |enu,,-1........"|
00002aa0  c9 20 26 31 38 65 2c 26  31 38 66 3a f2 64 6f 7a  |. &18e,&18f:.doz|
00002ab0  6f 6f 6d 28 69 63 6f 6e  25 2d 34 2c 30 29 0d 0d  |oom(icon%-4,0)..|
00002ac0  b6 30 c8 99 20 26 34 30  30 64 32 2c 7a 6f 6f 6d  |.0.. &400d2,zoom|
00002ad0  25 2c 69 63 6f 6e 25 82  31 2c 2c 2c 2d 31 2c a9  |%,icon%.1,,,-1,.|
00002ae0  24 7a 25 28 69 63 6f 6e  25 82 35 29 3a e1 0d 0d  |$z%(icon%.5):...|
00002af0  c0 05 cb 0d 0d ca 0b c9  20 73 61 76 65 25 0d 0d  |........ save%..|
00002b00  d4 1a e7 6b 65 79 25 3d  31 33 20 f2 73 61 76 65  |...key%=13 .save|
00002b10  73 70 72 69 74 65 3a e1  0d 0d de 0d c9 20 6f 75  |sprite:...... ou|
00002b20  74 70 75 74 25 0d 0d e8  13 f2 73 68 6f 77 73 63  |tput%.....showsc|
00002b30  61 6c 65 74 6f 66 69 74  0d 0d f2 1c e7 6b 65 79  |aletofit.....key|
00002b40  25 3d 31 33 20 c8 99 20  43 72 4d 65 6e 75 2c 2c  |%=13 .. CrMenu,,|
00002b50  2d 31 3a e1 0d 0d fc 1b  e7 6b 65 79 25 3d 26 31  |-1:......key%=&1|
00002b60  38 65 20 84 6b 65 79 25  3d 26 31 38 66 20 8c 0d  |8e .key%=&18f ..|
00002b70  0e 06 35 69 63 6f 6e 25  3d 69 63 6f 6e 25 82 31  |..5icon%=icon%.1|
00002b80  3a 6b 65 79 25 3d 61 64  6d 6f 64 65 25 3a e7 69  |:key%=admode%:.i|
00002b90  63 6f 6e 25 3d 31 36 20  6b 65 79 25 3d 61 64 73  |con%=16 key%=ads|
00002ba0  70 63 6c 25 0d 0e 10 29  c8 99 20 26 34 30 30 64  |pcl%...).. &400d|
00002bb0  32 2c 6f 75 74 70 75 74  25 2c 69 63 6f 6e 25 2c  |2,output%,icon%,|
00002bc0  2c 2c 2d 31 2c a9 24 6b  65 79 25 3a e1 0d 0e 1a  |,,-1,.$key%:....|
00002bd0  05 cd 0d 0e 24 15 c9 20  70 72 6f 63 25 3a c8 8e  |....$.. proc%:..|
00002be0  20 6b 65 79 25 20 ca 0d  0e 2e 41 c9 20 26 31 38  | key% ....A. &18|
00002bf0  65 2c 31 33 3a 69 63 6f  6e 25 2b 3d 31 3a e7 69  |e,13:icon%+=1:.i|
00002c00  63 6f 6e 25 3e 31 30 20  69 63 6f 6e 25 3d 38 3a  |con%>10 icon%=8:|
00002c10  e7 6b 65 79 25 3d 31 33  20 c8 99 20 43 72 4d 65  |.key%=13 .. CrMe|
00002c20  6e 75 2c 2c 2d 31 3a e1  0d 0e 38 2e c8 99 20 26  |nu,,-1:...8... &|
00002c30  34 30 30 64 32 2c 70 72  6f 63 25 2c 69 63 6f 6e  |400d2,proc%,icon|
00002c40  25 2c 2c 2c 2d 31 2c a9  24 70 25 28 69 63 6f 6e  |%,,,-1,.$p%(icon|
00002c50  25 2d 38 29 3a e1 0d 0e  42 25 c9 20 26 31 38 66  |%-8):...B%. &18f|
00002c60  3a 69 63 6f 6e 25 2d 3d  31 3a e7 69 63 6f 6e 25  |:icon%-=1:.icon%|
00002c70  3c 38 20 69 63 6f 6e 25  3d 31 30 0d 0e 4c 2e c8  |<8 icon%=10..L..|
00002c80  99 20 26 34 30 30 64 32  2c 70 72 6f 63 25 2c 69  |. &400d2,proc%,i|
00002c90  63 6f 6e 25 2c 2c 2c 2d  31 2c a9 24 70 25 28 69  |con%,,,-1,.$p%(i|
00002ca0  63 6f 6e 25 2d 38 29 3a  e1 0d 0e 56 05 cb 0d 0e  |con%-8):...V....|
00002cb0  60 17 c9 20 73 63 61 6c  65 77 25 3a c8 8e 20 6b  |`.. scalew%:.. k|
00002cc0  65 79 25 20 ca 0d 0e 6a  42 c9 20 26 31 38 65 2c  |ey% ...jB. &18e,|
00002cd0  31 33 3a 69 63 6f 6e 25  2b 3d 31 3a e7 69 63 6f  |13:icon%+=1:.ico|
00002ce0  6e 25 3e 31 33 20 69 63  6f 6e 25 3d 31 30 3a e7  |n%>13 icon%=10:.|
00002cf0  6b 65 79 25 3d 31 33 20  c8 99 20 43 72 4d 65 6e  |key%=13 .. CrMen|
00002d00  75 2c 2c 2d 31 3a e1 0d  0e 74 31 c8 99 20 26 34  |u,,-1:...t1.. &4|
00002d10  30 30 64 32 2c 73 63 61  6c 65 77 25 2c 69 63 6f  |00d2,scalew%,ico|
00002d20  6e 25 2c 2c 2c 2d 31 2c  a9 24 73 25 28 69 63 6f  |n%,,,-1,.$s%(ico|
00002d30  6e 25 2d 31 30 29 3a e1  0d 0e 7e 26 c9 20 26 31  |n%-10):...~&. &1|
00002d40  38 66 3a 69 63 6f 6e 25  2d 3d 31 3a e7 69 63 6f  |8f:icon%-=1:.ico|
00002d50  6e 25 3c 31 30 20 69 63  6f 6e 25 3d 31 33 0d 0e  |n%<10 icon%=13..|
00002d60  88 31 c8 99 20 26 34 30  30 64 32 2c 73 63 61 6c  |.1.. &400d2,scal|
00002d70  65 77 25 2c 69 63 6f 6e  25 2c 2c 2c 2d 31 2c a9  |ew%,icon%,,,-1,.|
00002d80  24 73 25 28 69 63 6f 6e  25 2d 31 30 29 3a e1 0d  |$s%(icon%-10):..|
00002d90  0e 92 05 cb 0d 0e 9c 05  cb 0d 0e a6 1d c8 99 20  |............... |
00002da0  22 57 69 6d 70 5f 50 72  6f 63 65 73 73 4b 65 79  |"Wimp_ProcessKey|
00002db0  22 2c 6b 65 79 25 0d 0e  b0 05 e1 0d 0e c4 11 dd  |",key%..........|
00002dc0  20 f2 73 61 76 65 73 70  72 69 74 65 0d 0e ce 1f  | .savesprite....|
00002dd0  c8 99 20 73 70 6f 70 25  2c 26 31 30 43 2c 73 61  |.. spop%,&10C,sa|
00002de0  72 25 2c 24 61 64 73 61  76 65 25 0d 0e d8 11 c8  |r%,$adsave%.....|
00002df0  99 20 43 72 4d 65 6e 75  2c 2c 2d 31 0d 0e e2 05  |. CrMenu,,-1....|
00002e00  e1 0d 0e f6 37 dd 20 f2  63 68 65 63 6b 6d 6f 75  |....7. .checkmou|
00002e10  73 65 28 6d 6f 75 73 65  78 25 2c 6d 6f 75 73 65  |se(mousex%,mouse|
00002e20  79 25 2c 62 25 2c 68 61  6e 64 6c 65 25 2c 69 63  |y%,b%,handle%,ic|
00002e30  6f 6e 25 2c 6f 62 25 29  0d 0f 00 0b e7 62 25 80  |on%,ob%).....b%.|
00002e40  32 20 8c 0d 0f 0a 10 c8  8e 20 68 61 6e 64 6c 65  |2 ....... handle|
00002e50  25 20 ca 0d 0f 14 7c c9  20 70 69 63 25 3a f2 64  |% ....|. pic%:.d|
00002e60  6f 6d 65 6e 75 28 70 69  63 25 2c 6d 24 28 34 29  |omenu(pic%,m$(4)|
00002e70  2b 22 3e 73 69 6e 66 6f  25 2c 22 2b 6d 24 28 35  |+">sinfo%,"+m$(5|
00002e80  29 2b 22 3e 73 72 63 69  6e 66 6f 25 2c 22 2b 6d  |)+">srcinfo%,"+m|
00002e90  24 28 36 29 2b 22 3e 72  61 6e 69 6e 66 6f 25 2c  |$(6)+">raninfo%,|
00002ea0  22 2b 6d 24 28 37 29 2b  22 3e 7a 6f 6f 6d 25 2c  |"+m$(7)+">zoom%,|
00002eb0  22 2b 6d 24 28 38 29 2b  22 3e 73 61 76 65 25 2c  |"+m$(8)+">save%,|
00002ec0  22 2b 6d 24 28 39 29 2c  6d 24 28 32 30 29 29 0d  |"+m$(9),m$(20)).|
00002ed0  0f 1e 96 c9 20 2d 32 3a  f2 64 6f 6d 65 6e 75 28  |.... -2:.domenu(|
00002ee0  31 30 31 2c 6d 24 28 31  30 29 2b 22 3e 69 6e 66  |101,m$(10)+">inf|
00002ef0  6f 77 25 2c 22 2b 6d 24  28 31 31 29 2b 22 3e 73  |ow%,"+m$(11)+">s|
00002f00  63 61 6c 65 77 25 2c 22  2b 6d 24 28 31 32 29 2b  |calew%,"+m$(12)+|
00002f10  22 3e 70 72 6f 63 25 2c  22 2b 6d 24 28 31 33 29  |">proc%,"+m$(13)|
00002f20  2b 22 3e 6f 75 74 70 75  74 25 2c 22 2b 6d 24 28  |+">output%,"+m$(|
00002f30  39 29 2b 22 2c 22 2b 6d  24 28 31 34 29 2b 22 3a  |9)+","+m$(14)+":|
00002f40  66 61 73 74 25 41 4e 44  31 2c 22 2b 6d 24 28 31  |fast%AND1,"+m$(1|
00002f50  35 29 2b 22 2c 22 2b 6d  24 28 31 36 29 2c 6d 24  |5)+","+m$(16),m$|
00002f60  28 32 30 29 29 0d 0f 28  05 cb 0d 0f 32 18 72 6d  |(20))..(....2.rm|
00002f70  65 6e 75 68 61 6e 64 6c  65 25 3d 68 61 6e 64 6c  |enuhandle%=handl|
00002f80  65 25 0d 0f 3c 05 cd 0d  0f 46 0b e7 62 25 80 34  |e%..<....F..b%.4|
00002f90  20 8c 0d 0f 50 10 c8 8e  20 68 61 6e 64 6c 65 25  | ...P... handle%|
00002fa0  20 ca 0d 0f 5a 16 c9 20  7a 6f 6f 6d 25 3a c8 8e  | ...Z.. zoom%:..|
00002fb0  20 69 63 6f 6e 25 20 ca  0d 0f 64 14 c9 20 30 3a  | icon% ...d.. 0:|
00002fc0  f2 64 6f 7a 6f 6f 6d 28  30 2c 31 29 0d 0f 6e 15  |.dozoom(0,1)..n.|
00002fd0  c9 20 31 3a f2 64 6f 7a  6f 6f 6d 28 30 2c 2d 31  |. 1:.dozoom(0,-1|
00002fe0  29 0d 0f 78 14 c9 20 32  3a f2 64 6f 7a 6f 6f 6d  |)..x.. 2:.dozoom|
00002ff0  28 31 2c 31 29 0d 0f 82  15 c9 20 33 3a f2 64 6f  |(1,1)..... 3:.do|
00003000  7a 6f 6f 6d 28 31 2c 2d  31 29 0d 0f 8c 05 cb 0d  |zoom(1,-1)......|
00003010  0f 96 05 cb 0d 0f a0 05  cd 0d 0f aa 0b e7 62 25  |..............b%|
00003020  80 31 20 8c 0d 0f b4 10  c8 8e 20 68 61 6e 64 6c  |.1 ....... handl|
00003030  65 25 20 ca 0d 0f be 16  c9 20 7a 6f 6f 6d 25 3a  |e% ...... zoom%:|
00003040  c8 8e 20 69 63 6f 6e 25  20 ca 0d 0f c8 15 c9 20  |.. icon% ...... |
00003050  30 3a f2 64 6f 7a 6f 6f  6d 28 30 2c 2d 31 29 0d  |0:.dozoom(0,-1).|
00003060  0f d2 14 c9 20 31 3a f2  64 6f 7a 6f 6f 6d 28 30  |.... 1:.dozoom(0|
00003070  2c 31 29 0d 0f dc 15 c9  20 32 3a f2 64 6f 7a 6f  |,1)..... 2:.dozo|
00003080  6f 6d 28 31 2c 2d 31 29  0d 0f e6 14 c9 20 33 3a  |om(1,-1)..... 3:|
00003090  f2 64 6f 7a 6f 6f 6d 28  31 2c 31 29 0d 0f f0 05  |.dozoom(1,1)....|
000030a0  cb 0d 0f fa 05 cb 0d 10  04 05 cd 0d 10 0e 0b e7  |................|
000030b0  62 25 80 35 20 8c 0d 10  18 10 c8 8e 20 68 61 6e  |b%.5 ....... han|
000030c0  64 6c 65 25 20 ca 0d 10  22 18 c9 20 6f 75 74 70  |dle% ...".. outp|
000030d0  75 74 25 3a c8 8e 20 69  63 6f 6e 25 20 ca 0d 10  |ut%:.. icon% ...|
000030e0  2c 27 c9 20 30 2c 31 2c  32 2c 33 3a f2 6b 69 6c  |,'. 0,1,2,3:.kil|
000030f0  6c 63 75 72 72 65 6e 74  28 c3 28 32 35 2b 69 63  |lcurrent(.(25+ic|
00003100  6f 6e 25 29 29 0d 10 36  21 c9 20 34 3a f2 6b 69  |on%))..6!. 4:.ki|
00003110  6c 6c 63 75 72 72 65 6e  74 28 22 53 31 36 2c 39  |llcurrent("S16,9|
00003120  30 2c 39 30 22 29 0d 10  40 21 c9 20 35 3a f2 6b  |0,90")..@!. 5:.k|
00003130  69 6c 6c 63 75 72 72 65  6e 74 28 22 53 33 32 2c  |illcurrent("S32,|
00003140  39 30 2c 39 30 22 29 0d  10 4a 19 c9 20 36 3a f2  |90,90")..J.. 6:.|
00003150  6b 69 6c 6c 63 75 72 72  65 6e 74 28 22 30 22 29  |killcurrent("0")|
00003160  0d 10 54 19 c9 20 37 3a  f2 6b 69 6c 6c 63 75 72  |..T.. 7:.killcur|
00003170  72 65 6e 74 28 22 38 22  29 0d 10 5e 1a c9 20 38  |rent("8")..^.. 8|
00003180  3a f2 6b 69 6c 6c 63 75  72 72 65 6e 74 28 22 31  |:.killcurrent("1|
00003190  32 22 29 0d 10 68 1a c9  20 39 3a f2 6b 69 6c 6c  |2")..h.. 9:.kill|
000031a0  63 75 72 72 65 6e 74 28  22 31 35 22 29 0d 10 72  |current("15")..r|
000031b0  22 c9 20 31 30 3a f2 6b  69 6c 6c 63 75 72 72 65  |". 10:.killcurre|
000031c0  6e 74 28 22 53 31 36 2c  39 30 2c 34 35 22 29 0d  |nt("S16,90,45").|
000031d0  10 7c 22 c9 20 31 31 3a  f2 6b 69 6c 6c 63 75 72  |.|". 11:.killcur|
000031e0  72 65 6e 74 28 22 53 33  32 2c 39 30 2c 34 35 22  |rent("S32,90,45"|
000031f0  29 0d 10 86 05 cb 0d 10  90 33 e7 a4 67 65 74 69  |)........3..geti|
00003200  63 6f 6e 73 74 61 74 65  28 6f 75 74 70 75 74 25  |constate(output%|
00003210  2c 31 35 29 20 24 61 64  6d 6f 64 65 25 3d a4 64  |,15) $admode%=.d|
00003220  65 64 75 63 65 6d 6f 64  65 0d 10 9a 32 21 71 25  |educemode...2!q%|
00003230  3d 6f 75 74 70 75 74 25  3a 71 25 21 34 3d 31 37  |=output%:q%!4=17|
00003240  3a 71 25 21 38 3d 30 3a  71 25 21 31 32 3d 30 3a  |:q%!8=0:q%!12=0:|
00003250  c8 99 20 53 65 74 49 2c  2c 71 25 0d 10 a4 13 f2  |.. SetI,,q%.....|
00003260  73 68 6f 77 73 63 61 6c  65 74 6f 66 69 74 0d 10  |showscaletofit..|
00003270  ae 16 c9 20 73 61 76 65  25 3a c8 8e 20 69 63 6f  |... save%:.. ico|
00003280  6e 25 20 ca 0d 10 b8 13  c9 20 32 3a f2 73 61 76  |n% ...... 2:.sav|
00003290  65 73 70 72 69 74 65 0d  10 c2 05 cb 0d 10 cc 4d  |esprite........M|
000032a0  c9 20 2d 32 3a e7 73 70  72 69 74 65 25 20 f2 67  |. -2:.sprite% .g|
000032b0  65 74 77 28 70 69 63 25  29 3a f2 6f 70 65 6e 5f  |etw(pic%):.open_|
000032c0  77 69 6e 64 6f 77 28 70  69 63 25 2c 78 30 25 2c  |window(pic%,x0%,|
000032d0  79 30 25 2c 78 31 25 2c  79 31 25 2c 73 63 78 25  |y0%,x1%,y1%,scx%|
000032e0  2c 73 63 79 25 2c 2d 31  29 0d 10 d6 05 cb 0d 10  |,scy%,-1).......|
000032f0  e0 05 cd 0d 10 ea 0d e7  62 25 80 26 35 30 20 8c  |........b%.&50 .|
00003300  0d 10 f4 10 c8 8e 20 68  61 6e 64 6c 65 25 20 ca  |...... handle% .|
00003310  0d 10 fe 16 c9 20 73 61  76 65 25 3a c8 8e 20 69  |..... save%:.. i|
00003320  63 6f 6e 25 20 ca 0d 11  08 14 c9 20 30 3a f2 67  |con% ...... 0:.g|
00003330  65 74 77 28 73 61 76 65  25 29 0d 11 12 20 21 71  |etw(save%)... !q|
00003340  25 3d 73 61 76 65 25 3a  71 25 21 34 3d 30 3a c8  |%=save%:q%!4=0:.|
00003350  99 20 47 65 74 49 2c 2c  71 25 0d 11 1c 14 21 71  |. GetI,,q%....!q|
00003360  25 3d 73 61 76 65 25 3a  71 25 21 34 3d 35 0d 11  |%=save%:q%!4=5..|
00003370  26 2e 71 25 21 38 2b 3d  62 78 25 3a 71 25 21 31  |&.q%!8+=bx%:q%!1|
00003380  32 2b 3d 62 79 25 3a 71  25 21 31 36 2b 3d 62 78  |2+=by%:q%!16+=bx|
00003390  25 3a 71 25 21 32 30 2b  3d 62 79 25 0d 11 30 33  |%:q%!20+=by%..03|
000033a0  71 25 21 32 34 3d 30 3a  71 25 21 32 38 3d 30 3a  |q%!24=0:q%!28=0:|
000033b0  71 25 21 33 32 3d 26 37  46 46 46 46 46 46 46 3a  |q%!32=&7FFFFFFF:|
000033c0  71 25 21 33 36 3d 26 37  46 46 46 46 46 46 46 0d  |q%!36=&7FFFFFFF.|
000033d0  11 3a 50 e7 64 73 74 61  72 74 25 20 c8 99 20 64  |.:P.dstart% .. d|
000033e0  73 74 61 72 74 25 2c 25  31 31 30 30 30 31 30 31  |start%,%11000101|
000033f0  2c 31 2c 22 66 69 6c 65  5f 66 66 39 22 2c 71 25  |,1,"file_ff9",q%|
00003400  2b 38 2c 71 25 2b 32 34  20 8b c8 99 20 22 57 69  |+8,q%+24 ... "Wi|
00003410  6d 70 5f 44 72 61 67 42  6f 78 22 2c 2c 71 25 0d  |mp_DragBox",,q%.|
00003420  11 44 05 cb 0d 11 4e 05  cb 0d 11 58 05 cd 0d 11  |.D....N....X....|
00003430  62 05 e1 0d 11 76 14 dd  20 f2 64 6f 7a 6f 6f 6d  |b....v.. .dozoom|
00003440  28 73 25 2c 61 25 29 0d  11 80 0b e7 73 25 3d 30  |(s%,a%).....s%=0|
00003450  20 8c 0d 11 8a 2f 24 7a  25 28 30 29 3d c3 28 bb  | ..../$z%(0)=.(.|
00003460  24 7a 25 28 30 29 2b 61  25 29 3a e7 24 7a 25 28  |$z%(0)+a%):.$z%(|
00003470  30 29 3d 22 30 22 20 24  7a 25 28 30 29 3d 22 31  |0)="0" $z%(0)="1|
00003480  22 0d 11 94 05 cc 0d 11  9e 2f 24 7a 25 28 31 29  |"......../$z%(1)|
00003490  3d c3 28 bb 24 7a 25 28  31 29 2b 61 25 29 3a e7  |=.(.$z%(1)+a%):.|
000034a0  24 7a 25 28 31 29 3d 22  30 22 20 24 7a 25 28 31  |$z%(1)="0" $z%(1|
000034b0  29 3d 22 31 22 0d 11 a8  05 cd 0d 11 b2 32 21 71  |)="1"........2!q|
000034c0  25 3d 7a 6f 6f 6d 25 3a  71 25 21 34 3d 34 2b 73  |%=zoom%:q%!4=4+s|
000034d0  25 3a 71 25 21 38 3d 30  3a 71 25 21 31 32 3d 30  |%:q%!8=0:q%!12=0|
000034e0  3a c8 99 20 53 65 74 49  2c 2c 71 25 0d 11 bc 2f  |:.. SetI,,q%.../|
000034f0  21 71 25 3d 70 69 63 25  3a c8 99 20 47 65 74 57  |!q%=pic%:.. GetW|
00003500  2c 2c 71 25 3a 66 25 3d  71 25 21 32 38 3a c8 99  |,,q%:f%=q%!28:..|
00003510  20 26 34 30 30 63 33 2c  2c 71 25 0d 11 c6 1f 70  | &400c3,,q%....p|
00003520  69 63 25 3d a4 63 72 65  61 74 65 5f 77 69 6e 64  |ic%=.create_wind|
00003530  6f 77 28 78 2c 79 2c 46  24 29 0d 11 d0 13 f2 70  |ow(x,y,F$).....p|
00003540  6f 70 75 70 28 70 69 63  25 2c 66 25 29 0d 11 da  |opup(pic%,f%)...|
00003550  05 e1 0d 11 ee 27 dd 20  f2 64 6f 6d 65 6e 75 28  |.....'. .domenu(|
00003560  68 61 6e 64 6c 65 25 2c  6d 65 6e 75 24 2c 6d 65  |handle%,menu$,me|
00003570  6e 75 74 69 74 6c 65 24  29 0d 11 f8 17 6d 65 6e  |nutitle$)....men|
00003580  75 68 61 6e 64 6c 65 25  3d 68 61 6e 64 6c 65 25  |uhandle%=handle%|
00003590  0d 12 02 25 6d 65 6e 75  70 74 72 25 3d 62 75 66  |...%menuptr%=buf|
000035a0  66 65 72 25 3a 69 6e 64  69 72 65 63 74 25 3d 69  |fer%:indirect%=i|
000035b0  64 61 74 61 25 0d 12 0c  08 69 25 3d 30 0d 12 16  |data%....i%=0...|
000035c0  12 6d 65 6e 75 70 74 72  25 21 32 30 3d 34 34 0d  |.menuptr%!20=44.|
000035d0  12 20 18 24 6d 65 6e 75  70 74 72 25 3d 6d 65 6e  |. .$menuptr%=men|
000035e0  75 74 69 74 6c 65 24 0d  12 2a 3b 6d 65 6e 75 70  |utitle$..*;menup|
000035f0  74 72 25 3f 31 32 3d 37  3a 6d 65 6e 75 70 74 72  |tr%?12=7:menuptr|
00003600  25 3f 31 33 3d 32 3a 6d  65 6e 75 70 74 72 25 3f  |%?13=2:menuptr%?|
00003610  31 34 3d 37 3a 6d 65 6e  75 70 74 72 25 3f 31 35  |14=7:menuptr%?15|
00003620  3d 30 0d 12 34 21 6d 65  6e 75 70 74 72 25 21 31  |=0..4!menuptr%!1|
00003630  36 3d 32 30 30 3a 6d 65  6e 75 70 74 72 25 21 32  |6=200:menuptr%!2|
00003640  34 3d 30 0d 12 3e 10 6d  65 6e 75 70 74 72 25 2b  |4=0..>.menuptr%+|
00003650  3d 32 38 0d 12 48 25 f5  20 69 31 25 3d 69 25 2b  |=28..H%. i1%=i%+|
00003660  31 3a 69 25 3d a7 6d 65  6e 75 24 2b 22 2c 22 2c  |1:i%=.menu$+",",|
00003670  22 2c 22 2c 69 31 25 29  0d 12 52 38 69 74 65 6d  |",",i1%)..R8item|
00003680  24 3d c1 6d 65 6e 75 24  2c 69 31 25 2c 69 25 2d  |$=.menu$,i1%,i%-|
00003690  69 31 25 29 3a f2 6d 65  6e 75 69 74 65 6d 28 69  |i1%):.menuitem(i|
000036a0  74 65 6d 24 29 3a fd 20  69 74 65 6d 24 3d 22 22  |tem$):. item$=""|
000036b0  0d 12 5c 23 6d 65 6e 75  70 74 72 25 21 2d 32 34  |..\#menuptr%!-24|
000036c0  3d 28 6d 65 6e 75 70 74  72 25 21 2d 32 34 29 84  |=(menuptr%!-24).|
000036d0  26 38 30 0d 12 66 60 e7  68 61 6e 64 6c 65 25 3d  |&80..f`.handle%=|
000036e0  31 30 31 20 c8 99 20 43  72 4d 65 6e 75 2c 2c 62  |101 .. CrMenu,,b|
000036f0  75 66 66 65 72 25 2c 6d  6f 75 73 65 78 25 2d 36  |uffer%,mousex%-6|
00003700  34 2c 39 36 2b 38 2a 34  34 20 8b c8 99 20 43 72  |4,96+8*44 ... Cr|
00003710  4d 65 6e 75 2c 2c 62 75  66 66 65 72 25 2c 6d 6f  |Menu,,buffer%,mo|
00003720  75 73 65 78 25 2d 33 32  2c 6d 6f 75 73 65 79 25  |usex%-32,mousey%|
00003730  2b 31 36 0d 12 70 05 e1  0d 12 84 16 dd 20 f2 6d  |+16..p....... .m|
00003740  65 6e 75 69 74 65 6d 28  74 65 78 74 24 29 0d 12  |enuitem(text$)..|
00003750  8e 10 e7 20 74 65 78 74  24 3d 22 22 20 e1 0d 12  |... text$="" ...|
00003760  98 2a 66 6c 67 25 3d 30  3a 73 75 62 6d 65 6e 75  |.*flg%=0:submenu|
00003770  25 3d 2d 31 3a 49 25 3d  a7 74 65 78 74 24 2c 22  |%=-1:I%=.text$,"|
00003780  3a 22 29 3a e7 49 25 8c  0d 12 a2 29 66 6c 67 25  |:"):.I%....)flg%|
00003790  3d a0 c1 74 65 78 74 24  2c 49 25 2b 31 29 3a 74  |=..text$,I%+1):t|
000037a0  65 78 74 24 3d c0 74 65  78 74 24 2c 49 25 2d 31  |ext$=.text$,I%-1|
000037b0  29 0d 12 ac 05 cd 0d 12  b6 17 49 25 3d a7 74 65  |).........I%=.te|
000037c0  78 74 24 2c 22 3e 22 29  3a e7 49 25 8c 0d 12 c0  |xt$,">"):.I%....|
000037d0  2d 73 75 62 6d 65 6e 75  25 3d a0 c1 74 65 78 74  |-submenu%=..text|
000037e0  24 2c 49 25 2b 31 29 3a  74 65 78 74 24 3d c0 74  |$,I%+1):text$=.t|
000037f0  65 78 74 24 2c 49 25 2d  31 29 0d 12 ca 05 cd 0d  |ext$,I%-1)......|
00003800  12 d4 13 6d 65 6e 75 70  74 72 25 21 30 3d 66 6c  |...menuptr%!0=fl|
00003810  67 25 0d 12 de 17 6d 65  6e 75 70 74 72 25 21 34  |g%....menuptr%!4|
00003820  3d 73 75 62 6d 65 6e 75  25 0d 12 e8 41 e7 74 65  |=submenu%...A.te|
00003830  78 74 24 3d 6d 24 28 39  29 80 46 24 3d 22 22 20  |xt$=m$(9).F$="" |
00003840  6d 65 6e 75 70 74 72 25  21 38 3d 26 30 37 34 30  |menuptr%!8=&0740|
00003850  30 30 32 31 20 8b 6d 65  6e 75 70 74 72 25 21 38  |0021 .menuptr%!8|
00003860  3d 26 30 37 30 30 30 30  32 31 0d 12 f2 32 e7 a9  |=&07000021...2..|
00003870  74 65 78 74 24 2a 31 36  2b 38 3e 62 75 66 66 65  |text$*16+8>buffe|
00003880  72 25 21 31 36 20 62 75  66 66 65 72 25 21 31 36  |r%!16 buffer%!16|
00003890  3d a9 74 65 78 74 24 2a  31 36 2b 38 0d 12 fc 10  |=.text$*16+8....|
000038a0  e7 a9 74 65 78 74 24 3e  31 32 20 8c 0d 13 06 32  |..text$>12 ....2|
000038b0  6d 65 6e 75 70 74 72 25  21 38 3d 6d 65 6e 75 70  |menuptr%!8=menup|
000038c0  74 72 25 21 38 20 84 20  32 35 36 3a 6d 65 6e 75  |tr%!8 . 256:menu|
000038d0  70 74 72 25 21 31 36 3d  a9 74 65 78 74 24 0d 13  |ptr%!16=.text$..|
000038e0  10 3e 6d 65 6e 75 70 74  72 25 21 31 32 3d 69 6e  |.>menuptr%!12=in|
000038f0  64 69 72 65 63 74 25 3a  24 69 6e 64 69 72 65 63  |direct%:$indirec|
00003900  74 25 3d 74 65 78 74 24  3a 69 6e 64 69 72 65 63  |t%=text$:indirec|
00003910  74 25 2b 3d a9 74 65 78  74 24 2b 31 0d 13 1a 05  |t%+=.text$+1....|
00003920  cc 0d 13 24 18 24 28 6d  65 6e 75 70 74 72 25 2b  |...$.$(menuptr%+|
00003930  31 32 29 3d 74 65 78 74  24 0d 13 2e 05 cd 0d 13  |12)=text$.......|
00003940  38 10 6d 65 6e 75 70 74  72 25 2b 3d 32 34 0d 13  |8.menuptr%+=24..|
00003950  42 05 e1 0d 13 56 19 dd  20 f2 6d 65 6e 75 73 65  |B....V.. .menuse|
00003960  6c 65 63 74 28 6d 65 6e  75 73 25 29 0d 13 60 2c  |lect(menus%)..`,|
00003970  c8 99 20 47 65 74 50 2c  2c 70 61 6c 74 65 6d 70  |.. GetP,,paltemp|
00003980  25 3a 61 64 6a 75 73 74  25 3d 70 61 6c 74 65 6d  |%:adjust%=paltem|
00003990  70 25 21 38 20 80 20 31  0d 13 6a 2d c8 99 20 44  |p%!8 . 1..j-.. D|
000039a0  63 4d 65 6e 75 2c 2c 62  75 66 66 65 72 25 2c 6d  |cMenu,,buffer%,m|
000039b0  65 6e 75 73 25 2c c4 32  30 30 2c 22 20 22 29 b8  |enus%,.200," ").|
000039c0  2c 2c 2c 61 24 0d 13 74  0e e7 20 61 24 3d 22 22  |,,,a$..t.. a$=""|
000039d0  20 8c e1 0d 13 7e 14 c8  8e 20 6d 65 6e 75 68 61  | ....~... menuha|
000039e0  6e 64 6c 65 25 20 ca 0d  13 88 0a c9 20 70 69 63  |ndle% ...... pic|
000039f0  25 0d 13 92 0b c8 8e 20  61 24 20 ca 0d 13 9c 14  |%...... a$ .....|
00003a00  c9 20 6d 24 28 39 29 3a  f2 63 61 6c 6c 46 53 49  |. m$(9):.callFSI|
00003a10  0d 13 a6 05 cb 0d 13 b0  09 c9 20 31 30 31 0d 13  |.......... 101..|
00003a20  ba 0b c8 8e 20 61 24 20  ca 0d 13 c4 19 c9 20 6d  |.... a$ ...... m|
00003a30  24 28 31 34 29 3a 66 61  73 74 25 3d ac 66 61 73  |$(14):fast%=.fas|
00003a40  74 25 0d 13 ce 14 c9 20  6d 24 28 39 29 3a f2 63  |t%..... m$(9):.c|
00003a50  61 6c 6c 46 53 49 0d 13  d8 0c c9 20 6d 24 28 31  |allFSI..... m$(1|
00003a60  35 29 0d 13 e2 46 73 74  61 74 65 73 63 61 6c 65  |5)...Fstatescale|
00003a70  25 3d 30 3a e3 49 25 3d  30 b8 39 3a 73 74 61 74  |%=0:.I%=0.9:stat|
00003a80  65 73 63 61 6c 65 25 2b  3d a4 67 65 74 69 63 6f  |escale%+=.getico|
00003a90  6e 73 74 61 74 65 28 73  63 61 6c 65 77 25 2c 49  |nstate(scalew%,I|
00003aa0  25 29 3c 3c 49 25 3a ed  0d 13 ec 3c e3 49 25 3d  |%)<<I%:....<.I%=|
00003ab0  31 30 b8 31 33 3a 73 74  61 74 65 73 63 61 6c 65  |10.13:statescale|
00003ac0  25 2b 3d a4 67 65 74 69  63 6f 6e 73 74 61 74 65  |%+=.geticonstate|
00003ad0  28 73 63 61 6c 65 77 25  2c 49 25 2b 36 29 3c 3c  |(scalew%,I%+6)<<|
00003ae0  49 25 3a ed 0d 13 f6 42  73 74 61 74 65 70 72 6f  |I%:....Bstatepro|
00003af0  63 25 3d 30 3a e3 49 25  3d 30 b8 37 3a 73 74 61  |c%=0:.I%=0.7:sta|
00003b00  74 65 70 72 6f 63 25 2b  3d a4 67 65 74 69 63 6f  |teproc%+=.getico|
00003b10  6e 73 74 61 74 65 28 70  72 6f 63 25 2c 49 25 29  |nstate(proc%,I%)|
00003b20  3c 3c 49 25 3a ed 0d 14  00 49 73 74 61 74 65 6f  |<<I%:....Istateo|
00003b30  75 74 70 75 74 25 3d 30  3a e3 49 25 3d 30 b8 31  |utput%=0:.I%=0.1|
00003b40  35 3a 73 74 61 74 65 6f  75 74 70 75 74 25 2b 3d  |5:stateoutput%+=|
00003b50  a4 67 65 74 69 63 6f 6e  73 74 61 74 65 28 6f 75  |.geticonstate(ou|
00003b60  74 70 75 74 25 2c 49 25  29 3c 3c 49 25 3a ed 0d  |tput%,I%)<<I%:..|
00003b70  14 0a 21 41 25 3d ae 22  3c 43 68 61 6e 67 65 46  |..!A%=."<ChangeF|
00003b80  53 49 24 44 69 72 3e 2e  43 68 6f 69 63 65 73 22  |SI$Dir>.Choices"|
00003b90  0d 14 14 32 f1 23 41 25  2c 66 61 73 74 25 2c 73  |...2.#A%,fast%,s|
00003ba0  74 61 74 65 73 63 61 6c  65 25 2c 73 74 61 74 65  |tatescale%,state|
00003bb0  70 72 6f 63 25 2c 73 74  61 74 65 6f 75 74 70 75  |proc%,stateoutpu|
00003bc0  74 25 0d 14 1e 2f f1 23  41 25 2c 24 70 25 28 30  |t%.../.#A%,$p%(0|
00003bd0  29 2c 24 70 25 28 31 29  2c 24 70 25 28 32 29 2c  |),$p%(1),$p%(2),|
00003be0  24 61 64 6d 6f 64 65 25  2c 24 61 64 73 70 63 6c  |$admode%,$adspcl|
00003bf0  25 0d 14 28 24 f1 23 41  25 2c 24 73 25 28 30 29  |%..($.#A%,$s%(0)|
00003c00  2c 24 73 25 28 31 29 2c  24 73 25 28 32 29 2c 24  |,$s%(1),$s%(2),$|
00003c10  73 25 28 33 29 0d 14 32  08 d9 23 41 25 0d 14 3c  |s%(3)..2..#A%..<|
00003c20  1c c9 20 6d 24 28 31 36  29 3a f2 63 68 65 63 6b  |.. m$(16):.check|
00003c30  61 6e 64 66 69 6e 69 73  68 0d 14 46 05 cb 0d 14  |andfinish..F....|
00003c40  50 05 cb 0d 14 5a 30 e7  61 64 6a 75 73 74 25 20  |P....Z0.adjust% |
00003c50  f2 63 68 65 63 6b 6d 6f  75 73 65 28 30 2c 30 2c  |.checkmouse(0,0,|
00003c60  32 2c 72 6d 65 6e 75 68  61 6e 64 6c 65 25 2c 30  |2,rmenuhandle%,0|
00003c70  2c 30 29 0d 14 64 05 e1  0d 14 78 20 dd 20 a4 63  |,0)..d....x . .c|
00003c80  72 65 61 74 65 5f 77 69  6e 64 6f 77 28 78 2c 79  |reate_window(x,y|
00003c90  2c 74 69 74 6c 65 24 29  0d 14 82 2b 78 3d 78 2a  |,title$)...+x=x*|
00003ca0  bb 24 7a 25 28 30 29 81  bb 24 7a 25 28 31 29 3a  |.$z%(0)..$z%(1):|
00003cb0  79 3d 79 2a bb 24 7a 25  28 30 29 81 bb 24 7a 25  |y=y*.$z%(0)..$z%|
00003cc0  28 31 29 0d 14 8c 20 21  7a 25 3d 30 3a 7a 25 21  |(1)... !z%=0:z%!|
00003cd0  34 3d 2d 79 3a 7a 25 21  38 3d 78 3a 7a 25 21 31  |4=-y:z%!8=x:z%!1|
00003ce0  32 3d 30 0d 14 96 24 7a  25 21 34 30 3d 30 3a 7a  |2=0...$z%!40=0:z|
00003cf0  25 21 34 34 3d 2d 79 3a  7a 25 21 34 38 3d 78 3a  |%!44=-y:z%!48=x:|
00003d00  7a 25 21 35 32 3d 30 0d  14 a0 25 e7 78 3c 31 32  |z%!52=0...%.x<12|
00003d10  38 20 84 20 79 3c 31 32  38 20 7a 25 3f 33 35 3d  |8 . y<128 z%?35=|
00003d20  30 20 8b 7a 25 3f 33 35  3d 32 35 35 0d 14 aa 29  |0 .z%?35=255...)|
00003d30  24 61 64 74 69 74 6c 65  25 3d 22 22 3a c8 99 20  |$adtitle%="":.. |
00003d40  43 72 65 61 74 65 57 2c  2c 7a 25 20 b8 20 68 61  |CreateW,,z% . ha|
00003d50  6e 64 6c 65 25 0d 14 b4  14 24 61 64 74 69 74 6c  |ndle%....$adtitl|
00003d60  65 25 3d 74 69 74 6c 65  24 0d 14 be 0c 3d 68 61  |e%=title$....=ha|
00003d70  6e 64 6c 65 25 0d 14 d2  18 dd 20 f2 70 6f 70 75  |ndle%..... .popu|
00003d80  70 28 68 61 6e 64 6c 65  25 2c 66 25 29 0d 14 dc  |p(handle%,f%)...|
00003d90  31 c8 99 20 22 4f 53 5f  52 65 61 64 4d 6f 64 65  |1.. "OS_ReadMode|
00003da0  56 61 72 69 61 62 6c 65  22 2c 2d 31 2c 34 20 b8  |Variable",-1,4 .|
00003db0  20 2c 2c 6d 6f 64 65 78  73 68 69 66 74 25 0d 14  | ,,modexshift%..|
00003dc0  e6 31 c8 99 20 22 4f 53  5f 52 65 61 64 4d 6f 64  |.1.. "OS_ReadMod|
00003dd0  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 35 20  |eVariable",-1,5 |
00003de0  b8 20 2c 2c 6d 6f 64 65  79 73 68 69 66 74 25 0d  |. ,,modeyshift%.|
00003df0  14 f0 30 c8 99 20 22 4f  53 5f 52 65 61 64 4d 6f  |..0.. "OS_ReadMo|
00003e00  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 31  |deVariable",-1,1|
00003e10  31 20 b8 20 2c 2c 72 69  67 68 74 73 63 72 25 0d  |1 . ,,rightscr%.|
00003e20  14 fa 2e c8 99 20 22 4f  53 5f 52 65 61 64 4d 6f  |..... "OS_ReadMo|
00003e30  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 31  |deVariable",-1,1|
00003e40  32 20 b8 20 2c 2c 74 6f  70 73 63 72 25 0d 15 04  |2 . ,,topscr%...|
00003e50  41 72 69 67 68 74 73 63  72 25 3d 72 69 67 68 74  |Arightscr%=right|
00003e60  73 63 72 25 3c 3c 6d 6f  64 65 78 73 68 69 66 74  |scr%<<modexshift|
00003e70  25 3a 74 6f 70 73 63 72  25 3d 74 6f 70 73 63 72  |%:topscr%=topscr|
00003e80  25 3c 3c 6d 6f 64 65 79  73 68 69 66 74 25 0d 15  |%<<modeyshift%..|
00003e90  0e 12 f2 67 65 74 77 28  68 61 6e 64 6c 65 25 29  |...getw(handle%)|
00003ea0  0d 15 18 39 78 6f 25 3d  72 69 67 68 74 73 63 72  |...9xo%=rightscr|
00003eb0  25 2f 32 2d 28 78 30 25  2b 78 31 25 29 2f 32 3a  |%/2-(x0%+x1%)/2:|
00003ec0  79 6f 25 3d 74 6f 70 73  63 72 25 2f 32 2d 28 79  |yo%=topscr%/2-(y|
00003ed0  30 25 2b 79 31 25 29 2f  32 0d 15 22 46 f2 6f 70  |0%+y1%)/2.."F.op|
00003ee0  65 6e 5f 77 69 6e 64 6f  77 28 68 61 6e 64 6c 65  |en_window(handle|
00003ef0  25 2c 78 30 25 2b 78 6f  25 2c 79 30 25 2b 79 6f  |%,x0%+xo%,y0%+yo|
00003f00  25 2c 78 31 25 2b 78 6f  25 2c 79 31 25 2b 79 6f  |%,x1%+xo%,y1%+yo|
00003f10  25 2c 73 63 78 25 2c 73  63 79 25 2c 66 25 29 0d  |%,scx%,scy%,f%).|
00003f20  15 2c 05 e1 0d 15 40 3e  dd 20 f2 6f 70 65 6e 5f  |.,....@>. .open_|
00003f30  77 69 6e 64 6f 77 28 68  61 6e 64 6c 65 25 2c 78  |window(handle%,x|
00003f40  30 25 2c 79 30 25 2c 78  31 25 2c 79 31 25 2c 73  |0%,y0%,x1%,y1%,s|
00003f50  63 78 25 2c 73 63 79 25  2c 62 68 61 6e 64 6c 65  |cx%,scy%,bhandle|
00003f60  25 29 0d 15 4a 11 e7 68  61 6e 64 6c 65 25 3d 2d  |%)..J..handle%=-|
00003f70  31 8c e1 0d 15 54 1f 71  25 21 30 3d 68 61 6e 64  |1....T.q%!0=hand|
00003f80  6c 65 25 3a 71 25 21 32  38 3d 62 68 61 6e 64 6c  |le%:q%!28=bhandl|
00003f90  65 25 0d 15 5e 29 71 25  21 34 3d 78 30 25 3a 71  |e%..^)q%!4=x0%:q|
00003fa0  25 21 38 3d 79 30 25 3a  71 25 21 31 32 3d 78 31  |%!8=y0%:q%!12=x1|
00003fb0  25 3a 71 25 21 31 36 3d  79 31 25 0d 15 68 19 71  |%:q%!16=y1%..h.q|
00003fc0  25 21 32 30 3d 73 63 78  25 3a 71 25 21 32 34 3d  |%!20=scx%:q%!24=|
00003fd0  73 63 79 25 0d 15 72 10  c8 99 20 4f 70 65 6e 57  |scy%..r... OpenW|
00003fe0  2c 2c 71 25 0d 15 7c 05  e1 0d 15 90 14 dd 20 f2  |,,q%..|....... .|
00003ff0  67 65 74 77 28 68 61 6e  64 6c 65 25 29 0d 15 9a  |getw(handle%)...|
00004000  1b 21 71 25 3d 68 61 6e  64 6c 65 25 3a c8 99 20  |.!q%=handle%:.. |
00004010  47 65 74 57 2c 2c 71 25  0d 15 a4 2b f2 69 6e 66  |GetW,,q%...+.inf|
00004020  6f 28 71 25 2b 34 29 3a  62 68 61 6e 64 6c 65 25  |o(q%+4):bhandle%|
00004030  3d 71 25 21 32 38 3a 66  6c 61 67 73 25 3d 71 25  |=q%!28:flags%=q%|
00004040  21 33 32 0d 15 ae 05 e1  0d 15 c2 0f dd 20 f2 69  |!32.......... .i|
00004050  6e 66 6f 28 71 25 29 0d  15 cc 3d 78 30 25 3d 21  |nfo(q%)...=x0%=!|
00004060  71 25 3a 79 30 25 3d 71  25 21 34 3a 78 31 25 3d  |q%:y0%=q%!4:x1%=|
00004070  71 25 21 38 3a 79 31 25  3d 71 25 21 31 32 3a 73  |q%!8:y1%=q%!12:s|
00004080  63 78 25 3d 71 25 21 31  36 3a 73 63 79 25 3d 71  |cx%=q%!16:scy%=q|
00004090  25 21 32 30 0d 15 d6 1d  62 78 25 3d 78 30 25 2d  |%!20....bx%=x0%-|
000040a0  73 63 78 25 3a 62 79 25  3d 79 31 25 2d 73 63 79  |scx%:by%=y1%-scy|
000040b0  25 0d 15 e0 05 e1 0d 15  f4 1d dd 20 f2 72 65 64  |%.......... .red|
000040c0  72 61 77 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |raw_window(handl|
000040d0  65 25 29 0d 15 fe 14 e7  20 68 61 6e 64 6c 65 25  |e%)..... handle%|
000040e0  3d 70 69 63 25 20 8c 0d  16 08 3f 21 66 61 63 74  |=pic% ....?!fact|
000040f0  6f 72 73 25 3d 21 69 66  61 63 74 6f 72 73 25 2a  |ors%=!ifactors%*|
00004100  bb 24 7a 25 28 30 29 3a  66 61 63 74 6f 72 73 25  |.$z%(0):factors%|
00004110  21 34 3d 69 66 61 63 74  6f 72 73 25 21 34 2a bb  |!4=ifactors%!4*.|
00004120  24 7a 25 28 30 29 0d 16  12 43 66 61 63 74 6f 72  |$z%(0)...Cfactor|
00004130  73 25 21 38 3d 69 66 61  63 74 6f 72 73 25 21 38  |s%!8=ifactors%!8|
00004140  2a bb 24 7a 25 28 31 29  3a 66 61 63 74 6f 72 73  |*.$z%(1):factors|
00004150  25 21 31 32 3d 69 66 61  63 74 6f 72 73 25 21 31  |%!12=ifactors%!1|
00004160  32 2a bb 24 7a 25 28 31  29 0d 16 1c 41 f2 72 65  |2*.$z%(1)...A.re|
00004170  64 75 63 65 28 21 66 61  63 74 6f 72 73 25 2c 66  |duce(!factors%,f|
00004180  61 63 74 6f 72 73 25 21  38 29 3a f2 72 65 64 75  |actors%!8):.redu|
00004190  63 65 28 66 61 63 74 6f  72 73 25 21 34 2c 66 61  |ce(factors%!4,fa|
000041a0  63 74 6f 72 73 25 21 31  32 29 0d 16 26 0f 21 71  |ctors%!12)..&.!q|
000041b0  25 3d 68 61 6e 64 6c 65  25 0d 16 30 1a c8 99 20  |%=handle%..0... |
000041c0  52 65 64 72 61 77 57 2c  2c 71 25 20 b8 20 6d 6f  |RedrawW,,q% . mo|
000041d0  72 65 25 0d 16 3a 2c f2  69 6e 66 6f 28 71 25 2b  |re%..:,.info(q%+|
000041e0  34 29 3a 62 79 25 3d 62  79 25 2d a8 28 79 2a bb  |4):by%=by%-.(y*.|
000041f0  24 7a 25 28 30 29 81 bb  24 7a 25 28 31 29 29 0d  |$z%(0)..$z%(1)).|
00004200  16 44 0c c8 95 20 6d 6f  72 65 25 0d 16 4e 30 c8  |.D... more%..N0.|
00004210  99 20 73 70 6f 70 25 2c  26 31 33 34 2c 73 61 72  |. spop%,&134,sar|
00004220  25 2c 6e 24 2c 62 78 25  2c 62 79 25 2c 2c 66 61  |%,n$,bx%,by%,,fa|
00004230  63 74 6f 72 73 25 2c 73  70 78 25 0d 16 58 19 c8  |ctors%,spx%..X..|
00004240  99 20 47 65 74 52 25 2c  30 2c 71 25 20 b8 20 6d  |. GetR%,0,q% . m|
00004250  6f 72 65 25 0d 16 62 05  ce 0d 16 6c 05 cd 0d 16  |ore%..b....l....|
00004260  76 05 e1 0d 16 8a 22 dd  20 a4 67 65 74 69 63 6f  |v.....". .getico|
00004270  6e 73 74 61 74 65 28 68  61 6e 64 6c 65 25 2c 69  |nstate(handle%,i|
00004280  63 6f 6e 25 29 0d 16 94  26 21 71 25 3d 68 61 6e  |con%)...&!q%=han|
00004290  64 6c 65 25 3a 71 25 21  34 3d 69 63 6f 6e 25 3a  |dle%:q%!4=icon%:|
000042a0  c8 99 20 47 65 74 49 2c  2c 71 25 0d 16 9e 12 3d  |.. GetI,,q%....=|
000042b0  71 25 21 32 34 3e 3e 32  31 20 80 20 31 0d 16 b2  |q%!24>>21 . 1...|
000042c0  12 dd 20 f2 67 65 74 6d  6f 64 65 69 6e 66 6f 0d  |.. .getmodeinfo.|
000042d0  16 bc 3d c8 99 22 57 69  6d 70 5f 52 65 61 64 50  |..=.."Wimp_ReadP|
000042e0  69 78 54 72 61 6e 73 22  2c 26 31 30 30 2c 73 61  |ixTrans",&100,sa|
000042f0  72 25 2c 6e 24 2c 2c 2c  2c 69 66 61 63 74 6f 72  |r%,n$,,,,ifactor|
00004300  73 25 2c 70 69 78 74 72  61 6e 73 25 0d 16 c6 23  |s%,pixtrans%...#|
00004310  c8 99 20 73 70 6f 70 25  2c 26 31 31 38 2c 73 61  |.. spop%,&118,sa|
00004320  72 25 2c 6e 24 20 b8 20  2c 2c 73 70 74 72 25 0d  |r%,n$ . ,,sptr%.|
00004330  16 d0 13 e7 20 73 70 74  72 25 21 33 32 3d 34 34  |.... sptr%!32=44|
00004340  20 8c 0d 16 da 0d 70 61  6c 70 74 72 25 3d 30 0d  | .....palptr%=0.|
00004350  16 e4 05 cc 0d 16 ee 1a  e3 20 67 72 61 62 25 3d  |......... grab%=|
00004360  30 20 b8 20 32 30 34 38  2d 38 20 88 20 38 0d 16  |0 . 2048-8 . 8..|
00004370  f8 28 70 61 6c 74 65 6d  70 25 21 28 67 72 61 62  |.(paltemp%!(grab|
00004380  25 3e 3e 31 29 3d 73 70  74 72 25 21 28 67 72 61  |%>>1)=sptr%!(gra|
00004390  62 25 2b 34 34 29 0d 17  02 05 ed 0d 17 0c 14 70  |b%+44).........p|
000043a0  61 6c 70 74 72 25 3d 70  61 6c 74 65 6d 70 25 0d  |alptr%=paltemp%.|
000043b0  17 16 05 cd 0d 17 20 1f  e3 51 25 3d 30 b8 32 35  |...... ..Q%=0.25|
000043c0  35 3a 70 69 78 74 72 61  6e 73 25 3f 51 25 3d 51  |5:pixtrans%?Q%=Q|
000043d0  25 3a ed 0d 17 2a 17 e7  73 70 74 72 25 21 33 32  |%:...*..sptr%!32|
000043e0  3d 34 34 2b 32 30 34 38  20 8c 0d 17 34 35 e3 51  |=44+2048 ...45.Q|
000043f0  25 3d 30 b8 32 35 35 3a  c8 99 63 74 72 61 6e 25  |%=0.255:..ctran%|
00004400  2c 70 61 6c 70 74 72 25  21 28 51 25 3c 3c 32 29  |,palptr%!(Q%<<2)|
00004410  b8 70 69 78 74 72 61 6e  73 25 3f 51 25 3a ed 0d  |.pixtrans%?Q%:..|
00004420  17 3e 05 cc 0d 17 48 3a  c8 99 20 22 43 6f 6c 6f  |.>....H:.. "Colo|
00004430  75 72 54 72 61 6e 73 5f  53 65 6c 65 63 74 54 61  |urTrans_SelectTa|
00004440  62 6c 65 22 2c 6d 2c 70  61 6c 70 74 72 25 2c 2d  |ble",m,palptr%,-|
00004450  31 2c 2d 31 2c 70 69 78  74 72 61 6e 73 25 0d 17  |1,-1,pixtrans%..|
00004460  52 05 cd 0d 17 5c 36 73  70 78 25 3d 2d 31 3a e3  |R....\6spx%=-1:.|
00004470  51 25 3d 30 b8 32 35 35  3a e7 70 69 78 74 72 61  |Q%=0.255:.pixtra|
00004480  6e 73 25 3f 51 25 3c 3e  51 25 20 73 70 78 25 3d  |ns%?Q%<>Q% spx%=|
00004490  70 69 78 74 72 61 6e 73  25 0d 17 66 05 ed 0d 17  |pixtrans%..f....|
000044a0  70 05 e1 0d 17 84 11 dd  20 a4 64 65 64 75 63 65  |p....... .deduce|
000044b0  6d 6f 64 65 0d 17 8e 0b  ea 20 6d 2c 78 2c 79 0d  |mode..... m,x,y.|
000044c0  17 98 20 e7 a4 67 65 74  69 63 6f 6e 73 74 61 74  |.. ..geticonstat|
000044d0  65 28 6f 75 74 70 75 74  25 2c 31 35 29 20 8c 0d  |e(output%,15) ..|
000044e0  17 a2 1a c8 99 26 33 35  2c 2d 31 2c 39 20 b8 2c  |.....&35,-1,9 .,|
000044f0  2c 6d 3a e7 6d 3e 33 20  8c 0d 17 ac 23 c8 99 26  |,m:.m>3 ....#..&|
00004500  33 35 2c 2d 31 2c 34 20  b8 2c 2c 78 3a c8 99 26  |35,-1,4 .,,x:..&|
00004510  33 35 2c 2d 31 2c 35 20  b8 2c 2c 79 0d 17 b6 1b  |35,-1,5 .,,y....|
00004520  78 3d 31 38 30 2f 28 32  5e 78 29 3a 79 3d 31 38  |x=180/(2^x):y=18|
00004530  30 2f 28 32 5e 79 29 0d  17 c0 1d 3d 22 53 22 2b  |0/(2^y)....="S"+|
00004540  c3 28 32 5e 6d 29 2b 22  2c 22 2b c3 78 2b 22 2c  |.(2^m)+","+.x+",|
00004550  22 2b c3 79 0d 17 ca 05  cc 0d 17 d4 07 3d c3 eb  |"+.y.........=..|
00004560  0d 17 de 05 cd 0d 17 e8  05 cc 0d 17 f2 0d 3d 24  |..............=$|
00004570  61 64 6d 6f 64 65 25 0d  17 fc 05 cd 0d 18 06 06  |admode%.........|
00004580  3d 30 0d 18 1a 15 dd 20  f2 73 68 6f 77 73 63 61  |=0..... .showsca|
00004590  6c 65 74 6f 66 69 74 0d  18 24 0b ea 20 6d 2c 78  |letofit..$.. m,x|
000045a0  2c 79 0d 18 2e 18 24 61  64 6d 6f 64 65 25 3d a4  |,y....$admode%=.|
000045b0  64 65 64 75 63 65 6d 6f  64 65 0d 18 38 14 e7 3f  |deducemode..8..?|
000045c0  61 64 6d 6f 64 65 25 3d  97 22 53 22 20 8c 0d 18  |admode%=."S" ...|
000045d0  42 29 e7 bb c1 24 61 64  6d 6f 64 65 25 2c 35 29  |B)...$admode%,5)|
000045e0  3e bb c1 24 61 64 6d 6f  64 65 25 2c 38 29 20 78  |>..$admode%,8) x|
000045f0  3d 36 20 8b 78 3d 30 0d  18 4c 20 e7 bb c1 24 61  |=6 .x=0..L ...$a|
00004600  64 6d 6f 64 65 25 2c 32  29 3e 31 36 20 78 2b 3d  |dmode%,2)>16 x+=|
00004610  35 20 8b 78 2b 3d 34 0d  18 56 2f c8 99 26 33 35  |5 .x+=4..V/..&35|
00004620  2c 2d 31 2c 31 31 20 b8  2c 2c 74 6f 66 69 74 78  |,-1,11 .,,tofitx|
00004630  3a c8 99 26 33 35 2c 2d  31 2c 31 32 20 b8 2c 2c  |:..&35,-1,12 .,,|
00004640  74 6f 66 69 74 79 0d 18  60 05 cc 0d 18 6a 0f 6d  |tofity..`....j.m|
00004650  3d bb 24 61 64 6d 6f 64  65 25 0d 18 74 2d c8 99  |=.$admode%..t-..|
00004660  26 33 35 2c 6d 2c 31 31  20 b8 2c 2c 74 6f 66 69  |&35,m,11 .,,tofi|
00004670  74 78 3a c8 99 26 33 35  2c 6d 2c 31 32 20 b8 2c  |tx:..&35,m,12 .,|
00004680  2c 74 6f 66 69 74 79 0d  18 7e 2f c8 99 26 33 35  |,tofity..~/..&35|
00004690  2c 6d 2c 34 20 b8 2c 2c  78 3a c8 99 26 33 35 2c  |,m,4 .,,x:..&35,|
000046a0  6d 2c 35 20 b8 2c 2c 79  3a e7 79 3e 78 20 78 3d  |m,5 .,,y:.y>x x=|
000046b0  36 20 8b 78 3d 30 0d 18  88 17 c8 99 26 33 35 2c  |6 .x=0......&35,|
000046c0  6d 2c 39 20 b8 2c 2c 79  3a 78 2b 3d 79 0d 18 92  |m,9 .,,y:x+=y...|
000046d0  05 cd 0d 18 9c 3f 74 6f  66 69 74 78 2b 3d 31 3a  |.....?tofitx+=1:|
000046e0  74 6f 66 69 74 79 2b 3d  31 3a 24 61 64 73 63 61  |tofity+=1:$adsca|
000046f0  6c 65 25 3d 6d 24 28 31  37 29 2b c3 74 6f 66 69  |le%=m$(17)+.tofi|
00004700  74 78 2b 6d 24 28 31 38  29 2b c3 74 6f 66 69 74  |tx+m$(18)+.tofit|
00004710  79 0d 18 a6 3d 71 25 21  31 32 3d 31 3c 3c 32 31  |y...=q%!12=1<<21|
00004720  3a 21 71 25 3d 6f 75 74  70 75 74 25 3a e3 49 25  |:!q%=output%:.I%|
00004730  3d 30 b8 31 31 3a e7 49  25 3d 78 20 71 25 21 38  |=0.11:.I%=x q%!8|
00004740  3d 31 3c 3c 32 31 20 8b  71 25 21 38 3d 30 0d 18  |=1<<21 .q%!8=0..|
00004750  b0 19 71 25 21 34 3d 49  25 3a c8 99 20 53 65 74  |..q%!4=I%:.. Set|
00004760  49 2c 2c 71 25 3a ed 0d  18 ba 05 e1 0d 18 ce 16  |I,,q%:..........|
00004770  dd 20 f2 6b 69 6c 6c 63  75 72 72 65 6e 74 28 6d  |. .killcurrent(m|
00004780  24 29 0d 18 d8 22 71 25  21 31 32 3d 31 3c 3c 32  |$)..."q%!12=1<<2|
00004790  31 3a 21 71 25 3d 6f 75  74 70 75 74 25 3a 71 25  |1:!q%=output%:q%|
000047a0  21 38 3d 30 0d 18 e2 17  71 25 21 34 3d 31 37 3a  |!8=0....q%!4=17:|
000047b0  c8 99 20 53 65 74 49 2c  2c 71 25 0d 18 ec 0f 24  |.. SetI,,q%....$|
000047c0  61 64 6d 6f 64 65 25 3d  6d 24 0d 18 f6 05 e1 0d  |admode%=m$......|
000047d0  19 0a 2b dd a4 5a 53 28  49 25 29 ea 41 24 3a f5  |..+..ZS(I%).A$:.|
000047e0  41 24 2b 3d bd 3f 49 25  3a 49 25 2b 3d 31 3a fd  |A$+=.?I%:I%+=1:.|
000047f0  3f 49 25 3c 31 34 3a 3d  41 24 0d 19 1e 0f dd 20  |?I%<14:=A$..... |
00004800  f2 65 72 72 6f 72 62 6f  78 0d 19 28 0f c8 99 20  |.errorbox..(... |
00004810  44 72 61 67 2c 2c 2d 31  0d 19 32 32 21 62 75 66  |Drag,,-1..22!buf|
00004820  66 65 72 25 3d 9f 3a 24  28 62 75 66 66 65 72 25  |fer%=.:$(buffer%|
00004830  2b 34 29 3d f6 24 2b 22  20 28 63 6f 64 65 20 22  |+4)=.$+" (code "|
00004840  2b c3 9e 2b 22 29 22 2b  bd 30 0d 19 3c 32 c8 99  |+..+")"+.0..<2..|
00004850  20 22 57 69 6d 70 5f 52  65 70 6f 72 74 45 72 72  | "Wimp_ReportErr|
00004860  6f 72 22 2c 62 75 66 66  65 72 25 2c 25 31 31 2c  |or",buffer%,%11,|
00004870  6d 24 28 32 30 29 20 b8  20 2c 41 25 0d 19 46 2b  |m$(20) . ,A%..F+|
00004880  e7 41 25 3d 32 20 f2 72  65 6d 6f 76 65 61 72 65  |.A%=2 .removeare|
00004890  61 3a c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |a:.. "Wimp_Close|
000048a0  44 6f 77 6e 22 3a e0 0d  19 50 05 e1 0d 1a 36 53  |Down":...P....6S|
000048b0  dd 20 a4 43 68 61 6e 67  65 46 53 49 28 41 24 2c  |. .ChangeFSI(A$,|
000048c0  73 70 72 69 74 65 61 72  65 61 25 2c 77 6f 72 6b  |spritearea%,work|
000048d0  73 70 61 63 65 25 2c 77  6f 72 6b 6c 69 6d 69 74  |space%,worklimit|
000048e0  25 2c 6f 6b 73 61 76 65  25 2c 6f 6b 69 6e 66 6f  |%,oksave%,okinfo|
000048f0  25 2c f8 20 72 61 6d 25  2c 66 61 73 74 25 29 0d  |%,. ram%,fast%).|
00004900  1a 40 4d ea 20 41 24 28  29 2c 72 25 28 29 2c 67  |.@M. A$(),r%(),g|
00004910  25 28 29 2c 62 25 28 29  2c 72 70 61 6c 25 28 29  |%(),b%(),rpal%()|
00004920  2c 67 70 61 6c 25 28 29  2c 62 70 61 6c 25 28 29  |,gpal%(),bpal%()|
00004930  2c 74 61 62 6c 65 25 28  29 2c 63 6c 25 28 29 2c  |,table%(),cl%(),|
00004940  78 6c 25 28 29 2c 78 6c  32 25 28 29 0d 1a 4a 44  |xl%(),xl2%()..JD|
00004950  ea 20 78 70 25 28 29 2c  72 6d 25 28 29 2c 72 6d  |. xp%(),rm%(),rm|
00004960  31 25 28 29 2c 72 6d 32  25 28 29 2c 76 61 6c 73  |1%(),rm2%(),vals|
00004970  25 28 29 2c 6e 6c 25 28  29 2c 41 25 28 29 2c 42  |%(),nl%(),A%(),B|
00004980  25 28 29 2c 6e 65 77 25  28 29 2c 73 74 25 28 29  |%(),new%(),st%()|
00004990  0d 1a 54 24 c8 95 c0 41  24 2c 31 29 3c 3e 22 20  |..T$...A$,1)<>" |
000049a0  22 80 a9 41 24 3c 3e 30  20 41 24 3d c1 41 24 2c  |"..A$<>0 A$=.A$,|
000049b0  32 29 3a ce 0d 1a 5e 1c  c8 95 c0 41 24 2c 31 29  |2):...^....A$,1)|
000049c0  3d 22 20 22 20 41 24 3d  c1 41 24 2c 32 29 3a ce  |=" " A$=.A$,2):.|
000049d0  0d 1a 68 1a c8 95 c2 41  24 2c 31 29 3d 22 20 22  |..h....A$,1)=" "|
000049e0  20 41 24 3d c0 41 24 29  3a ce 0d 1a 72 1a e7 a4  | A$=.A$):...r...|
000049f0  75 63 28 c0 41 24 2c 35  29 29 3d 22 2d 51 55 49  |uc(.A$,5))="-QUI|
00004a00  54 22 20 8c 0d 1a 7c 2e  41 24 3d c1 41 24 2c 37  |T" ...|.A$=.A$,7|
00004a10  29 3a c8 95 c0 41 24 2c  31 29 3c 3e 22 20 22 80  |):...A$,1)<>" ".|
00004a20  a9 41 24 3c 3e 30 20 41  24 3d c1 41 24 2c 32 29  |.A$<>0 A$=.A$,2)|
00004a30  3a ce 0d 1a 86 1c c8 95  c0 41 24 2c 31 29 3d 22  |:........A$,1)="|
00004a40  20 22 20 41 24 3d c1 41  24 2c 32 29 3a ce 0d 1a  | " A$=.A$,2):...|
00004a50  90 05 cd 0d 1a 9a 20 de  20 41 24 28 31 30 30 29  |...... . A$(100)|
00004a60  3a 41 52 47 25 3d 30 3a  42 25 3d a7 41 24 2c 22  |:ARG%=0:B%=.A$,"|
00004a70  20 22 29 0d 1a a4 0c c8  95 20 42 25 3c 3e 30 0d  | ")...... B%<>0.|
00004a80  1a ae 2b 41 52 47 25 2b  3d 31 3a 41 24 28 41 52  |..+ARG%+=1:A$(AR|
00004a90  47 25 29 3d c0 41 24 2c  42 25 2d 31 29 3a 41 24  |G%)=.A$,B%-1):A$|
00004aa0  3d c1 41 24 2c 42 25 2b  31 29 0d 1a b8 1d c8 95  |=.A$,B%+1)......|
00004ab0  20 c0 41 24 2c 31 29 3d  22 20 22 3a 41 24 3d c1  | .A$,1)=" ":A$=.|
00004ac0  41 24 2c 32 29 3a ce 0d  1a c2 0f 42 25 3d a7 41  |A$,2):.....B%=.A|
00004ad0  24 2c 22 20 22 29 0d 1a  cc 05 ce 0d 1a d6 1f e7  |$," ")..........|
00004ae0  41 24 3c 3e 22 22 20 41  52 47 25 2b 3d 31 3a 41  |A$<>"" ARG%+=1:A|
00004af0  24 28 41 52 47 25 29 3d  41 24 0d 1a e0 58 69 6e  |$(ARG%)=A$...Xin|
00004b00  76 65 72 74 25 3d a3 3a  72 61 6e 67 65 25 3d a3  |vert%=.:range%=.|
00004b10  3a 73 68 61 72 70 65 6e  25 3d a3 3a 69 6e 66 6f  |:sharpen%=.:info|
00004b20  25 3d a3 3a 63 61 63 68  65 25 3d a3 3a 63 61 63  |%=.:cache%=.:cac|
00004b30  68 65 61 72 65 61 6e 75  6d 62 65 72 25 3d 30 3a  |heareanumber%=0:|
00004b40  64 69 74 68 65 72 25 3d  b9 3a 62 6c 61 63 6b 25  |dither%=.:black%|
00004b50  3d a3 0d 1a ea 43 68 69  73 74 25 3d a3 3a 65 71  |=....Chist%=.:eq|
00004b60  75 61 6c 25 3d a3 3a 76  66 6c 69 70 25 3d a3 3a  |ual%=.:vflip%=.:|
00004b70  68 66 6c 69 70 25 3d a3  3a 73 63 61 6c 65 25 3d  |hflip%=.:scale%=|
00004b80  b9 3a 73 63 61 6c 65 6f  25 3d b9 3a 73 63 72 61  |.:scaleo%=.:scra|
00004b90  70 66 25 3d a3 0d 1a f4  36 67 61 6d 6d 61 3d 31  |pf%=....6gamma=1|
00004ba0  3a 72 6f 74 61 74 65 25  3d a3 3a 6d 61 78 25 3d  |:rotate%=.:max%=|
00004bb0  32 30 30 30 30 30 30 30  3a 62 72 69 67 68 74 25  |20000000:bright%|
00004bc0  3d 31 35 3a 6c 6f 63 6b  25 3d a3 0d 1a fe 1e 72  |=15:lock%=.....r|
00004bd0  77 74 3d 2e 32 39 39 3a  67 77 74 3d 2e 35 38 37  |wt=.299:gwt=.587|
00004be0  3a 62 77 74 3d 2e 31 31  34 0d 1b 08 0d e7 41 52  |:bwt=.114.....AR|
00004bf0  47 25 3c 33 20 8c 0d 1b  12 4a f1 22 43 68 61 6e  |G%<3 ....J."Chan|
00004c00  67 65 46 53 49 20 69 6e  74 65 72 61 63 74 69 76  |geFSI interactiv|
00004c10  65 20 69 6e 70 75 74 20  28 72 65 61 64 20 46 53  |e input (read FS|
00004c20  49 69 6e 66 6f 20 66 6f  72 20 63 6f 6d 6d 61 6e  |Iinfo for comman|
00004c30  64 20 6c 69 6e 65 20 64  65 74 61 69 6c 73 29 22  |d line details)"|
00004c40  0d 1b 1c 3f e8 22 53 6f  75 72 63 65 20 66 69 6c  |...?."Source fil|
00004c50  65 3a 20 22 73 24 2c 22  44 65 73 74 69 6e 61 74  |e: "s$,"Destinat|
00004c60  69 6f 6e 20 66 69 6c 65  3a 20 22 66 24 2c 22 4f  |ion file: "f$,"O|
00004c70  75 74 70 75 74 20 6d 6f  64 65 3a 20 22 6d 24 0d  |utput mode: "m$.|
00004c80  1b 26 2f e8 22 28 58 29  53 63 61 6c 65 20 28 65  |.&/."(X)Scale (e|
00004c90  2e 67 2e 20 32 3a 31 29  3a 20 22 78 73 24 3a e8  |.g. 2:1): "xs$:.|
00004ca0  22 59 20 53 63 61 6c 65  3a 20 22 79 73 24 0d 1b  |"Y Scale: "ys$..|
00004cb0  30 38 e8 22 49 6e 66 6f  20 6f 6e 20 69 6e 70 75  |08."Info on inpu|
00004cc0  74 20 70 69 63 74 75 72  65 3f 22 61 24 3a e7 a4  |t picture?"a$:..|
00004cd0  75 63 28 c0 61 24 2c 31  29 29 3d 22 59 22 20 69  |uc(.a$,1))="Y" i|
00004ce0  6e 66 6f 25 3d b9 0d 1b  3a 3b e8 22 49 6e 76 65  |nfo%=...:;."Inve|
00004cf0  72 74 20 70 69 63 74 75  72 65 20 63 6f 6c 6f 75  |rt picture colou|
00004d00  72 73 3f 22 61 24 3a e7  a4 75 63 28 c0 61 24 2c  |rs?"a$:..uc(.a$,|
00004d10  31 29 29 3d 22 59 22 20  69 6e 76 65 72 74 25 3d  |1))="Y" invert%=|
00004d20  b9 0d 1b 44 3d e8 22 43  6f 6d 70 75 74 65 20 68  |...D=."Compute h|
00004d30  69 73 74 6f 67 72 61 6d  20 6f 66 20 69 6e 70 75  |istogram of inpu|
00004d40  74 3f 22 61 24 3a e7 a4  75 63 28 c0 61 24 2c 31  |t?"a$:..uc(.a$,1|
00004d50  29 29 3d 22 59 22 20 68  69 73 74 25 3d b9 0d 1b  |))="Y" hist%=...|
00004d60  4e 40 e8 22 41 70 70 6c  79 20 68 69 73 74 6f 67  |N@."Apply histog|
00004d70  72 61 6d 20 65 71 75 61  6c 69 73 61 74 69 6f 6e  |ram equalisation|
00004d80  3f 22 61 24 3a e7 a4 75  63 28 c0 61 24 2c 31 29  |?"a$:..uc(.a$,1)|
00004d90  29 3d 22 59 22 20 65 71  75 61 6c 25 3d b9 0d 1b  |)="Y" equal%=...|
00004da0  58 47 e8 22 45 78 70 61  6e 64 20 69 6e 70 75 74  |XG."Expand input|
00004db0  20 64 79 6e 61 6d 69 63  20 72 61 6e 67 65 3f 22  | dynamic range?"|
00004dc0  61 24 3a e7 a4 75 63 28  c0 61 24 2c 31 29 29 3d  |a$:..uc(.a$,1))=|
00004dd0  22 59 22 20 72 61 6e 67  65 25 3d b9 3a 65 71 75  |"Y" range%=.:equ|
00004de0  61 6c 25 3d a3 0d 1b 62  3d e8 22 53 68 61 72 70  |al%=...b=."Sharp|
00004df0  65 6e 20 70 69 63 74 75  72 65 20 62 79 20 28 65  |en picture by (e|
00004e00  2e 67 2e 20 31 32 20 66  6f 72 20 68 61 72 73 68  |.g. 12 for harsh|
00004e10  2c 20 32 34 20 66 6f 72  20 73 6f 66 74 29 20 22  |, 24 for soft) "|
00004e20  61 24 0d 1b 6c 18 e7 61  24 3c 3e 22 22 20 73 68  |a$..l..a$<>"" sh|
00004e30  61 72 70 65 6e 25 3d bb  61 24 0d 1b 76 2b e8 22  |arpen%=.a$..v+."|
00004e40  52 6f 74 61 74 65 3f 22  61 24 3a e7 a4 75 63 28  |Rotate?"a$:..uc(|
00004e50  c0 61 24 2c 31 29 29 3d  22 59 22 20 72 6f 74 61  |.a$,1))="Y" rota|
00004e60  74 65 25 3d 31 0d 1b 80  1e 73 63 61 6c 65 25 3d  |te%=1....scale%=|
00004e70  a3 3a 73 63 61 6c 65 6f  25 3d a3 3a 66 61 73 74  |.:scaleo%=.:fast|
00004e80  25 3d a3 0d 1b 8a 05 cc  0d 1b 94 0d f5 20 41 25  |%=........... A%|
00004e90  3d 41 52 47 25 0d 1b 9e  36 e7 a4 75 63 28 41 24  |=ARG%...6..uc(A$|
00004ea0  28 41 52 47 25 29 29 3d  22 2d 49 4e 46 4f 22 20  |(ARG%))="-INFO" |
00004eb0  69 6e 66 6f 25 3d b9 3a  41 24 28 41 52 47 25 29  |info%=.:A$(ARG%)|
00004ec0  3d 22 22 3a 41 52 47 25  2d 3d 31 0d 1b a8 36 e7  |="":ARG%-=1...6.|
00004ed0  a4 75 63 28 41 24 28 41  52 47 25 29 29 3d 22 2d  |.uc(A$(ARG%))="-|
00004ee0  48 49 53 54 22 20 68 69  73 74 25 3d b9 3a 41 24  |HIST" hist%=.:A$|
00004ef0  28 41 52 47 25 29 3d 22  22 3a 41 52 47 25 2d 3d  |(ARG%)="":ARG%-=|
00004f00  31 0d 1b b2 36 e7 a4 75  63 28 41 24 28 41 52 47  |1...6..uc(A$(ARG|
00004f10  25 29 29 3d 22 2d 4c 4f  43 4b 22 20 6c 6f 63 6b  |%))="-LOCK" lock|
00004f20  25 3d b9 3a 41 24 28 41  52 47 25 29 3d 22 22 3a  |%=.:A$(ARG%)="":|
00004f30  41 52 47 25 2d 3d 31 0d  1b bc 41 e7 a4 75 63 28  |ARG%-=1...A..uc(|
00004f40  41 24 28 41 52 47 25 29  29 3d 22 2d 45 51 55 41  |A$(ARG%))="-EQUA|
00004f50  4c 22 20 65 71 75 61 6c  25 3d b9 3a 72 61 6e 67  |L" equal%=.:rang|
00004f60  65 25 3d a3 3a 41 24 28  41 52 47 25 29 3d 22 22  |e%=.:A$(ARG%)=""|
00004f70  3a 41 52 47 25 2d 3d 31  0d 1b c6 41 e7 a4 75 63  |:ARG%-=1...A..uc|
00004f80  28 41 24 28 41 52 47 25  29 29 3d 22 2d 52 41 4e  |(A$(ARG%))="-RAN|
00004f90  47 45 22 20 72 61 6e 67  65 25 3d b9 3a 65 71 75  |GE" range%=.:equ|
00004fa0  61 6c 25 3d a3 3a 41 24  28 41 52 47 25 29 3d 22  |al%=.:A$(ARG%)="|
00004fb0  22 3a 41 52 47 25 2d 3d  31 0d 1b d0 3a e7 a4 75  |":ARG%-=1...:..u|
00004fc0  63 28 41 24 28 41 52 47  25 29 29 3d 22 2d 49 4e  |c(A$(ARG%))="-IN|
00004fd0  56 45 52 54 22 20 69 6e  76 65 72 74 25 3d b9 3a  |VERT" invert%=.:|
00004fe0  41 24 28 41 52 47 25 29  3d 22 22 3a 41 52 47 25  |A$(ARG%)="":ARG%|
00004ff0  2d 3d 31 0d 1b da 44 e7  a4 75 63 28 41 24 28 41  |-=1...D..uc(A$(A|
00005000  52 47 25 29 29 3d 22 2d  4e 4f 53 43 41 4c 45 22  |RG%))="-NOSCALE"|
00005010  20 73 63 61 6c 65 25 3d  a3 3a 73 63 61 6c 65 6f  | scale%=.:scaleo|
00005020  25 3d a3 3a 41 24 28 41  52 47 25 29 3d 22 22 3a  |%=.:A$(ARG%)="":|
00005030  41 52 47 25 2d 3d 31 0d  1b e4 39 e7 a4 75 63 28  |ARG%-=1...9..uc(|
00005040  41 24 28 41 52 47 25 29  29 3d 22 2d 4e 4f 53 49  |A$(ARG%))="-NOSI|
00005050  5a 45 22 20 73 63 61 6c  65 25 3d a3 3a 41 24 28  |ZE" scale%=.:A$(|
00005060  41 52 47 25 29 3d 22 22  3a 41 52 47 25 2d 3d 31  |ARG%)="":ARG%-=1|
00005070  0d 1b ee 3c e7 a4 75 63  28 41 24 28 41 52 47 25  |...<..uc(A$(ARG%|
00005080  29 29 3d 22 2d 4e 4f 44  49 54 48 45 52 22 20 64  |))="-NODITHER" d|
00005090  69 74 68 65 72 25 3d a3  3a 41 24 28 41 52 47 25  |ither%=.:A$(ARG%|
000050a0  29 3d 22 22 3a 41 52 47  25 2d 3d 31 0d 1b f8 3d  |)="":ARG%-=1...=|
000050b0  e7 a4 75 63 28 41 24 28  41 52 47 25 29 29 3d 22  |..uc(A$(ARG%))="|
000050c0  2d 42 52 49 47 48 54 45  4e 22 20 62 72 69 67 68  |-BRIGHTEN" brigh|
000050d0  74 25 3d 31 36 3a 41 24  28 41 52 47 25 29 3d 22  |t%=16:A$(ARG%)="|
000050e0  22 3a 41 52 47 25 2d 3d  31 0d 1c 02 3a e7 a4 75  |":ARG%-=1...:..u|
000050f0  63 28 41 24 28 41 52 47  25 29 29 3d 22 2d 52 4f  |c(A$(ARG%))="-RO|
00005100  54 41 54 45 22 20 72 6f  74 61 74 65 25 3d 31 3a  |TATE" rotate%=1:|
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 0c 3c e7  a4 75 63 28 41 24 28 41  |-=1...<..uc(A$(A|
00005130  52 47 25 29 29 3d 22 2d  52 4f 54 41 54 45 2d 22  |RG%))="-ROTATE-"|
00005140  20 72 6f 74 61 74 65 25  3d 2d 31 3a 41 24 28 41  | rotate%=-1:A$(A|
00005150  52 47 25 29 3d 22 22 3a  41 52 47 25 2d 3d 31 0d  |RG%)="":ARG%-=1.|
00005160  1c 16 38 e7 a4 75 63 28  41 24 28 41 52 47 25 29  |..8..uc(A$(ARG%)|
00005170  29 3d 22 2d 56 46 4c 49  50 22 20 76 66 6c 69 70  |)="-VFLIP" vflip|
00005180  25 3d b9 3a 41 24 28 41  52 47 25 29 3d 22 22 3a  |%=.:A$(ARG%)="":|
00005190  41 52 47 25 2d 3d 31 0d  1c 20 38 e7 a4 75 63 28  |ARG%-=1.. 8..uc(|
000051a0  41 24 28 41 52 47 25 29  29 3d 22 2d 48 46 4c 49  |A$(ARG%))="-HFLI|
000051b0  50 22 20 68 66 6c 69 70  25 3d b9 3a 41 24 28 41  |P" hflip%=.:A$(A|
000051c0  52 47 25 29 3d 22 22 3a  41 52 47 25 2d 3d 31 0d  |RG%)="":ARG%-=1.|
000051d0  1c 2a 38 e7 a4 75 63 28  41 24 28 41 52 47 25 29  |.*8..uc(A$(ARG%)|
000051e0  29 3d 22 2d 4e 4f 4d 4f  44 45 22 20 66 61 73 74  |)="-NOMODE" fast|
000051f0  25 3d a3 3a 41 24 28 41  52 47 25 29 3d 22 22 3a  |%=.:A$(ARG%)="":|
00005200  41 52 47 25 2d 3d 31 0d  1c 34 21 e7 a4 75 63 28  |ARG%-=1..4!..uc(|
00005210  c0 41 24 28 41 52 47 25  29 2c 36 29 29 3d 22 2d  |.A$(ARG%),6))="-|
00005220  42 4c 41 43 4b 22 20 8c  0d 1c 3e 46 62 6c 61 63  |BLACK" ...>Fblac|
00005230  6b 25 3d 33 32 3a e7 a9  41 24 28 41 52 47 25 29  |k%=32:..A$(ARG%)|
00005240  3e 36 20 62 6c 61 63 6b  25 3d bb c1 41 24 28 41  |>6 black%=..A$(A|
00005250  52 47 25 29 2c 37 29 3a  e7 62 6c 61 63 6b 25 3e  |RG%),7):.black%>|
00005260  31 32 38 20 62 6c 61 63  6b 25 3d 31 32 38 0d 1c  |128 black%=128..|
00005270  48 17 41 24 28 41 52 47  25 29 3d 22 22 3a 41 52  |H.A$(ARG%)="":AR|
00005280  47 25 2d 3d 31 0d 1c 52  05 cd 0d 1c 5c 21 e7 a4  |G%-=1..R....\!..|
00005290  75 63 28 c0 41 24 28 41  52 47 25 29 2c 36 29 29  |uc(.A$(ARG%),6))|
000052a0  3d 22 2d 47 41 4d 4d 41  22 20 8c 0d 1c 66 2e 67  |="-GAMMA" ...f.g|
000052b0  61 6d 6d 61 3d 32 2e 32  3a e7 a9 41 24 28 41 52  |amma=2.2:..A$(AR|
000052c0  47 25 29 3e 36 20 67 61  6d 6d 61 3d bb c1 41 24  |G%)>6 gamma=..A$|
000052d0  28 41 52 47 25 29 2c 37  29 0d 1c 70 17 41 24 28  |(ARG%),7)..p.A$(|
000052e0  41 52 47 25 29 3d 22 22  3a 41 52 47 25 2d 3d 31  |ARG%)="":ARG%-=1|
000052f0  0d 1c 7a 05 cd 0d 1c 84  23 e7 a4 75 63 28 c0 41  |..z.....#..uc(.A|
00005300  24 28 41 52 47 25 29 2c  38 29 29 3d 22 2d 53 48  |$(ARG%),8))="-SH|
00005310  41 52 50 45 4e 22 20 8c  0d 1c 8e 32 73 68 61 72  |ARPEN" ....2shar|
00005320  70 65 6e 25 3d b9 3a e7  a9 41 24 28 41 52 47 25  |pen%=.:..A$(ARG%|
00005330  29 3e 38 20 73 68 61 72  70 65 6e 25 3d bb c1 41  |)>8 sharpen%=..A|
00005340  24 28 41 52 47 25 29 2c  39 29 0d 1c 98 17 41 24  |$(ARG%),9)....A$|
00005350  28 41 52 47 25 29 3d 22  22 3a 41 52 47 25 2d 3d  |(ARG%)="":ARG%-=|
00005360  31 0d 1c a2 05 cd 0d 1c  ac 43 e7 a4 75 63 28 c0  |1........C..uc(.|
00005370  41 24 28 41 52 47 25 29  2c 34 29 29 3d 22 2d 52  |A$(ARG%),4))="-R|
00005380  45 44 22 20 72 77 74 3d  bb c1 41 24 28 41 52 47  |ED" rwt=..A$(ARG|
00005390  25 29 2c 35 29 3a 41 24  28 41 52 47 25 29 3d 22  |%),5):A$(ARG%)="|
000053a0  22 3a 41 52 47 25 2d 3d  31 0d 1c b6 45 e7 a4 75  |":ARG%-=1...E..u|
000053b0  63 28 c0 41 24 28 41 52  47 25 29 2c 36 29 29 3d  |c(.A$(ARG%),6))=|
000053c0  22 2d 47 52 45 45 4e 22  20 67 77 74 3d bb c1 41  |"-GREEN" gwt=..A|
000053d0  24 28 41 52 47 25 29 2c  37 29 3a 41 24 28 41 52  |$(ARG%),7):A$(AR|
000053e0  47 25 29 3d 22 22 3a 41  52 47 25 2d 3d 31 0d 1c  |G%)="":ARG%-=1..|
000053f0  c0 44 e7 a4 75 63 28 c0  41 24 28 41 52 47 25 29  |.D..uc(.A$(ARG%)|
00005400  2c 35 29 29 3d 22 2d 42  4c 55 45 22 20 62 77 74  |,5))="-BLUE" bwt|
00005410  3d bb c1 41 24 28 41 52  47 25 29 2c 36 29 3a 41  |=..A$(ARG%),6):A|
00005420  24 28 41 52 47 25 29 3d  22 22 3a 41 52 47 25 2d  |$(ARG%)="":ARG%-|
00005430  3d 31 0d 1c ca 1f e7 a4  75 63 28 c0 41 24 28 41  |=1......uc(.A$(A|
00005440  52 47 25 29 2c 34 29 29  3d 22 2d 4d 41 58 22 20  |RG%),4))="-MAX" |
00005450  8c 0d 1c d4 44 6d 61 78  25 3d bb c1 41 24 28 41  |....Dmax%=..A$(A|
00005460  52 47 25 29 2c 35 29 3a  e7 a7 41 24 28 41 52 47  |RG%),5):..A$(ARG|
00005470  25 29 2c 22 4b 22 29 84  a7 41 24 28 41 52 47 25  |%),"K")..A$(ARG%|
00005480  29 2c 22 6b 22 29 20 6d  61 78 25 3d 6d 61 78 25  |),"k") max%=max%|
00005490  2a 31 30 32 34 0d 1c de  17 41 24 28 41 52 47 25  |*1024....A$(ARG%|
000054a0  29 3d 22 22 3a 41 52 47  25 2d 3d 31 0d 1c e8 05  |)="":ARG%-=1....|
000054b0  cd 0d 1c f2 0c fd 41 25  3d 41 52 47 25 0d 1c fc  |......A%=ARG%...|
000054c0  32 73 24 3d 41 24 28 31  29 3a 66 24 3d 41 24 28  |2s$=A$(1):f$=A$(|
000054d0  32 29 3a 6d 24 3d 41 24  28 33 29 3a 78 73 24 3d  |2):m$=A$(3):xs$=|
000054e0  41 24 28 34 29 3a 79 73  24 3d 41 24 28 35 29 0d  |A$(4):ys$=A$(5).|
000054f0  1d 06 05 cd 0d 1d 10 15  e7 6f 6b 69 6e 66 6f 25  |.........okinfo%|
00005500  20 8b 69 6e 66 6f 25 3d  a3 0d 1d 1a 14 e7 77 6f  | .info%=......wo|
00005510  72 6b 73 70 61 63 65 25  3e 3d 30 20 8c 0d 1d 24  |rkspace%>=0 ...$|
00005520  0b 66 6c 65 78 25 3d a3  0d 1d 2e 05 cc 0d 1d 38  |.flex%=........8|
00005530  3c e7 77 6f 72 6b 6c 69  6d 69 74 25 3d 30 20 8c  |<.worklimit%=0 .|
00005540  66 6c 65 78 25 3d a3 20  8b 66 6c 65 78 25 3d b9  |flex%=. .flex%=.|
00005550  3a 6e 65 78 74 6c 6f 63  61 74 69 6f 6e 25 3d 77  |:nextlocation%=w|
00005560  6f 72 6b 6c 69 6d 69 74  25 0d 1d 42 05 cd 0d 1d  |orklimit%..B....|
00005570  4c 22 70 6e 6d 24 3d a4  75 63 28 6d 24 29 3a c8  |L"pnm$=.uc(m$):.|
00005580  8e 20 c0 70 6e 6d 24 2b  22 2c 22 2c 33 29 20 ca  |. .pnm$+",",3) .|
00005590  0d 1d 56 15 c9 22 41 49  4d 22 3a 6d 3d 2d 31 3a  |..V.."AIM":m=-1:|
000055a0  6d 24 3d 22 22 0d 1d 60  22 c9 22 50 31 2c 22 2c  |m$=""..`"."P1,",|
000055b0  22 50 34 2c 22 3a 6d 3d  2d 32 3a 6d 24 3d 22 22  |"P4,":m=-2:m$=""|
000055c0  3a 73 70 6d 3d 31 38 0d  1d 6a 23 c9 22 50 32 2c  |:spm=18..j#."P2,|
000055d0  22 2c 22 50 35 2c 22 3a  6d 3d 2d 32 3a 6d 24 3d  |","P5,":m=-2:m$=|
000055e0  22 54 22 3a 73 70 6d 3d  32 30 0d 1d 74 3d c9 22  |"T":spm=20..t=."|
000055f0  50 33 2c 22 2c 22 50 36  2c 22 3a 6d 3d 2d 34 3a  |P3,","P6,":m=-4:|
00005600  70 6e 6d 24 3d c0 70 6e  6d 24 2c 32 29 3a 70 36  |pnm$=.pnm$,2):p6|
00005610  62 69 74 73 3d 38 3a 49  25 3d bb c1 6d 24 2c 34  |bits=8:I%=..m$,4|
00005620  29 3a 6d 24 3d 22 22 0d  1d 7e 18 e7 49 25 3e 30  |):m$=""..~..I%>0|
00005630  e7 49 25 3c 38 20 70 36  62 69 74 73 3d 49 25 0d  |.I%<8 p6bits=I%.|
00005640  1d 88 15 c9 22 50 31 35  22 3a 6d 3d 2d 33 3a 6d  |...."P15":m=-3:m|
00005650  24 3d 22 22 0d 1d 92 15  c9 22 43 31 35 22 3a 6d  |$=""....."C15":m|
00005660  3d 2d 35 3a 6d 24 3d 22  22 0d 1d 9c 1e c9 22 49  |=-5:m$=""....."I|
00005670  52 4c 22 3a 6d 3d 2d 34  3a 6d 24 3d 22 22 3a 70  |RL":m=-4:m$="":p|
00005680  36 62 69 74 73 3d 38 0d  1d a6 15 c9 22 53 31 36  |6bits=8....."S16|
00005690  22 3a 6d 3d 2d 36 3a 6d  24 3d 22 22 0d 1d b0 1e  |":m=-6:m$=""....|
000056a0  c9 22 53 32 34 22 3a 6d  3d 2d 37 3a 6d 24 3d 22  |."S24":m=-7:m$="|
000056b0  22 3a 70 36 62 69 74 73  3d 38 0d 1d ba 1e c9 22  |":p6bits=8....."|
000056c0  53 33 32 22 3a 6d 3d 2d  38 3a 6d 24 3d 22 22 3a  |S32":m=-8:m$="":|
000056d0  70 36 62 69 74 73 3d 38  0d 1d c4 35 7f 3a 6d 3d  |p6bits=8...5.:m=|
000056e0  bb 6d 24 3a 73 70 6d 3d  6d 3a 6d 24 3d a4 75 63  |.m$:spm=m:m$=.uc|
000056f0  28 c2 6d 24 2c 31 29 29  3a e7 a7 22 43 44 52 54  |(.m$,1)):.."CDRT|
00005700  22 2c 6d 24 29 3d 30 20  6d 24 3d 22 22 0d 1d ce  |",m$)=0 m$=""...|
00005710  05 cb 0d 1d d8 1b e7 78  73 24 3d 22 22 20 84 20  |.......xs$="" . |
00005720  c0 78 73 24 2c 31 29 3d  22 2d 22 20 8c 0d 1d e2  |.xs$,1)="-" ....|
00005730  23 78 6d 75 6c 25 3d 31  3a 78 64 69 76 25 3d 31  |#xmul%=1:xdiv%=1|
00005740  3a 79 6d 75 6c 25 3d 31  3a 79 64 69 76 25 3d 31  |:ymul%=1:ydiv%=1|
00005750  0d 1d ec 05 cc 0d 1d f6  13 e7 79 73 24 3d 22 22  |..........ys$=""|
00005760  20 79 73 24 3d 78 73 24  0d 1e 00 27 78 6d 75 6c  | ys$=xs$...'xmul|
00005770  25 3d bb 78 73 24 3a 78  64 69 76 25 3d bb c1 78  |%=.xs$:xdiv%=..x|
00005780  73 24 2c a7 78 73 24 2c  22 3a 22 29 2b 31 29 0d  |s$,.xs$,":")+1).|
00005790  1e 0a 27 79 6d 75 6c 25  3d bb 79 73 24 3a 79 64  |..'ymul%=.ys$:yd|
000057a0  69 76 25 3d bb c1 79 73  24 2c a7 79 73 24 2c 22  |iv%=..ys$,.ys$,"|
000057b0  3a 22 29 2b 31 29 0d 1e  14 05 cd 0d 1e 1e 26 66  |:")+1)........&f|
000057c0  6c 61 67 3d 2d 31 3a c8  99 38 2c 35 2c 73 24 20  |lag=-1:..8,5,s$ |
000057d0  b8 20 72 30 2c 2c 72 32  3a 64 69 72 3d 72 30 3d  |. r0,,r2:dir=r0=|
000057e0  32 0d 1e 28 0a e7 64 69  72 20 8c 0d 1e 32 43 70  |2..(..dir ...2Cp|
000057f0  61 6e 69 63 3d b9 3a c8  99 38 2c 35 2c 73 24 2b  |anic=.:..8,5,s$+|
00005800  22 2e 72 61 77 22 20 b8  20 72 30 2c 2c 72 32 3a  |".raw" . r0,,r2:|
00005810  e7 72 30 3d 31 20 73 24  2b 3d 22 2e 72 61 77 22  |.r0=1 s$+=".raw"|
00005820  3a 64 69 72 3d a3 3a 70  61 6e 69 63 3d a3 0d 1e  |:dir=.:panic=...|
00005830  3c 31 e7 70 61 6e 69 63  20 c8 99 38 2c 35 2c 73  |<1.panic ..8,5,s|
00005840  24 2b 22 2e 72 65 64 22  20 b8 20 72 30 2c 2c 72  |$+".red" . r0,,r|
00005850  32 3a e7 72 30 3d 31 20  70 61 6e 69 63 3d a3 0d  |2:.r0=1 panic=..|
00005860  1e 46 21 e7 70 61 6e 69  63 20 85 20 34 32 2c 22  |.F!.panic . 42,"|
00005870  44 69 72 65 63 74 6f 72  79 20 67 69 76 65 6e 22  |Directory given"|
00005880  0d 1e 50 05 cd 0d 1e 5a  3e 66 74 79 70 65 3d 72  |..P....Z>ftype=r|
00005890  32 3e 3e 38 20 80 20 26  46 46 46 3a 62 69 74 73  |2>>8 . &FFF:bits|
000058a0  3d 32 38 3a 46 3d 32 5e  62 69 74 73 3a 63 25 3d  |=28:F=2^bits:c%=|
000058b0  30 3a 63 63 25 3d 30 3a  63 63 63 25 3d 30 3a 6f  |0:cc%=0:ccc%=0:o|
000058c0  25 3d 30 0d 1e 64 0a e7  64 69 72 20 8c 0d 1e 6e  |%=0..d..dir ...n|
000058d0  3e 63 25 3d 8e 28 73 24  2b 22 2e 72 65 64 22 29  |>c%=.(s$+".red")|
000058e0  3a e7 63 25 3d 30 20 85  20 34 32 2c 22 52 65 64  |:.c%=0 . 42,"Red|
000058f0  20 66 69 6c 65 20 22 2b  73 24 2b 22 2e 72 65 64  | file "+s$+".red|
00005900  20 6e 6f 74 20 66 6f 75  6e 64 22 0d 1e 78 45 63  | not found"..xEc|
00005910  63 25 3d 8e 28 73 24 2b  22 2e 67 72 65 65 6e 22  |c%=.(s$+".green"|
00005920  29 3a e7 63 63 25 3d 30  20 85 34 32 2c 22 47 72  |):.cc%=0 .42,"Gr|
00005930  65 65 6e 20 66 69 6c 65  20 22 2b 73 24 2b 22 2e  |een file "+s$+".|
00005940  67 72 65 65 6e 20 6e 6f  74 20 66 6f 75 6e 64 22  |green not found"|
00005950  0d 1e 82 44 63 63 63 25  3d 8e 28 73 24 2b 22 2e  |...Dccc%=.(s$+".|
00005960  62 6c 75 65 22 29 3a e7  63 63 63 25 3d 30 20 85  |blue"):.ccc%=0 .|
00005970  34 32 2c 22 42 6c 75 65  20 66 69 6c 65 20 22 2b  |42,"Blue file "+|
00005980  73 24 2b 22 2e 62 6c 75  65 20 6e 6f 74 20 66 6f  |s$+".blue not fo|
00005990  75 6e 64 22 0d 1e 8c 05  cc 0d 1e 96 2d 63 25 3d  |und"........-c%=|
000059a0  8e 73 24 3a e7 63 25 3d  30 20 85 20 34 32 2c 22  |.s$:.c%=0 . 42,"|
000059b0  46 69 6c 65 20 22 2b 73  24 2b 22 20 6e 6f 74 20  |File "+s$+" not |
000059c0  66 6f 75 6e 64 22 0d 1e  a0 05 cd 0d 1e aa 07 ea  |found"..........|
000059d0  20 85 0d 1e b4 1b ee 20  85 20 ea 20 f7 20 85 3a  | ...... . . . .:|
000059e0  f2 63 6c 6f 73 65 3a 85  20 9f 2c f6 24 0d 1e be  |.close:. .,.$...|
000059f0  0d de 20 72 25 28 32 35  35 29 0d 1e c8 15 de 20  |.. r%(255)..... |
00005a00  67 25 28 32 35 35 29 2c  62 25 28 32 35 35 29 0d  |g%(255),b%(255).|
00005a10  1e d2 13 c8 99 26 36 36  66 34 64 20 b8 3b 70 63  |.....&66f4d .;pc|
00005a20  64 25 0d 1e dc 0e c8 8e  20 66 74 79 70 65 20 ca  |d%...... ftype .|
00005a30  0d 1e e6 11 c9 20 26 46  46 39 3a 66 6c 61 67 3d  |..... &FF9:flag=|
00005a40  30 0d 1e f0 2e e7 a7 22  2e 22 2b a4 75 63 28 73  |0......"."+.uc(s|
00005a50  24 29 2c 22 2e 48 49 50  2e 22 29 84 a7 a4 75 63  |$),".HIP.")...uc|
00005a60  28 73 24 29 2c 22 3a 48  49 50 2e 22 29 20 8c 0d  |(s$),":HIP.") ..|
00005a70  1e fa 20 66 6c 61 67 3d  33 30 30 3a 49 25 3d a7  |.. flag=300:I%=.|
00005a80  a4 75 63 28 73 24 29 2c  22 48 49 50 2e 22 29 0d  |.uc(s$),"HIP.").|
00005a90  1f 04 3f c1 73 24 2c 49  25 29 3d 22 4c 4f 50 2e  |..?.s$,I%)="LOP.|
00005aa0  22 3a 63 63 25 3d 8e 73  24 3a e7 63 63 25 3d 30  |":cc%=.s$:.cc%=0|
00005ab0  20 85 34 32 2c 22 43 61  6e 27 74 20 66 69 6e 64  | .42,"Can't find|
00005ac0  20 4c 6f 70 20 66 69 6c  65 20 22 2b 73 24 0d 1f  | Lop file "+s$..|
00005ad0  0e 05 cd 0d 1f 18 2b c9  20 26 46 46 30 3a cf 23  |......+. &FF0:.#|
00005ae0  63 25 3d 30 3a 53 24 3d  22 22 3a e3 49 25 3d 31  |c%=0:S$="":.I%=1|
00005af0  b8 34 3a 53 24 2b 3d bd  9a 23 63 25 3a ed 0d 1f  |.4:S$+=..#c%:...|
00005b00  22 26 e7 53 24 3d 22 49  49 2a 22 2b bd 30 20 66  |"&.S$="II*"+.0 f|
00005b10  6c 61 67 3d 31 35 30 30  3a 62 69 67 65 6e 64 69  |lag=1500:bigendi|
00005b20  61 6e 3d a3 0d 1f 2c 29  e7 53 24 3d 22 4d 4d 22  |an=...,).S$="MM"|
00005b30  2b bd 30 2b 22 2a 22 20  66 6c 61 67 3d 31 35 30  |+.0+"*" flag=150|
00005b40  30 3a 62 69 67 65 6e 64  69 61 6e 3d b9 0d 1f 36  |0:bigendian=...6|
00005b50  21 c9 20 26 44 46 41 3a  66 6c 61 67 3d 38 30 30  |!. &DFA:flag=800|
00005b60  3a e7 64 69 72 20 66 6c  61 67 3d 38 30 31 0d 1f  |:.dir flag=801..|
00005b70  40 14 c9 20 26 44 45 32  3a 66 6c 61 67 3d 31 30  |@.. &DE2:flag=10|
00005b80  30 30 0d 1f 4a 20 c9 20  26 42 45 38 3a e7 28 70  |00..J . &BE8:.(p|
00005b90  63 64 25 80 31 29 3d 30  20 66 6c 61 67 3d 33 36  |cd%.1)=0 flag=36|
00005ba0  30 30 0d 1f 54 14 c9 20  26 37 41 30 3a 66 6c 61  |00..T.. &7A0:fla|
00005bb0  67 3d 31 32 30 30 0d 1f  5e 14 c9 20 26 36 39 64  |g=1200..^.. &69d|
00005bc0  3a 66 6c 61 67 3d 32 30  30 30 0d 1f 68 13 c9 20  |:flag=2000..h.. |
00005bd0  26 36 39 39 3a 66 6c 61  67 3d 37 30 30 0d 1f 72  |&699:flag=700..r|
00005be0  13 c9 20 26 36 39 38 3a  66 6c 61 67 3d 31 30 30  |.. &698:flag=100|
00005bf0  0d 1f 7c 14 c9 20 26 36  39 37 3a 66 6c 61 67 3d  |..|.. &697:flag=|
00005c00  31 39 30 30 0d 1f 86 14  c9 20 26 36 39 31 3a 66  |1900..... &691:f|
00005c10  6c 61 67 3d 32 36 30 30  0d 1f 90 14 c9 20 26 36  |lag=2600..... &6|
00005c20  39 30 3a 66 6c 61 67 3d  32 35 30 30 0d 1f 9a 13  |90:flag=2500....|
00005c30  c9 20 26 36 36 36 3a 66  6c 61 67 3d 36 36 36 0d  |. &666:flag=666.|
00005c40  1f a4 14 c9 20 26 36 30  31 3a 66 6c 61 67 3d 33  |.... &601:flag=3|
00005c50  30 30 30 0d 1f ae 14 c9  20 26 33 37 31 3a 66 6c  |000..... &371:fl|
00005c60  61 67 3d 33 31 30 30 0d  1f b8 23 c9 20 26 33 30  |ag=3100...#. &30|
00005c70  30 3a 66 6c 61 67 3d 31  33 30 30 3a e7 64 69 72  |0:flag=1300:.dir|
00005c80  20 66 6c 61 67 3d 31 33  30 31 0d 1f c2 1e c9 20  | flag=1301..... |
00005c90  34 3a 66 6c 61 67 3d 39  30 30 3a e7 64 69 72 20  |4:flag=900:.dir |
00005ca0  66 6c 61 67 3d 39 30 31  0d 1f cc 10 c9 20 36 3a  |flag=901..... 6:|
00005cb0  66 6c 61 67 3d 39 35 30  0d 1f d6 05 cb 0d 1f e0  |flag=950........|
00005cc0  0e e7 66 6c 61 67 3d 2d  31 20 8c 0d 1f ea 25 cf  |..flag=-1 ....%.|
00005cd0  23 63 25 3d 30 3a 53 24  3d 22 22 3a e3 49 25 3d  |#c%=0:S$="":.I%=|
00005ce0  31 b8 31 36 3a 53 24 2b  3d bd 9a 23 63 25 3a ed  |1.16:S$+=..#c%:.|
00005cf0  0d 1f f4 1f e7 c0 53 24  2c 37 29 3d 22 46 53 49  |......S$,7)="FSI|
00005d00  66 69 6c 65 22 20 66 6c  61 67 3d 32 31 30 30 0d  |file" flag=2100.|
00005d10  1f fe 29 e7 66 6c 61 67  3d 2d 31 20 e7 c0 53 24  |..).flag=-1 ..S$|
00005d20  2c 38 29 3d 22 53 49 4d  50 4c 45 20 20 22 20 66  |,8)="SIMPLE  " f|
00005d30  6c 61 67 3d 32 38 30 30  0d 20 08 43 e7 66 6c 61  |lag=2800. .C.fla|
00005d40  67 3d 2d 31 20 e7 a4 75  63 28 c0 53 24 2c 38 29  |g=-1 ..uc(.S$,8)|
00005d50  29 3d 22 4d 45 52 43 53  4f 46 54 22 84 a4 75 63  |)="MERCSOFT"..uc|
00005d60  28 c0 53 24 2c 38 29 29  3d 22 53 4e 41 50 53 48  |(.S$,8))="SNAPSH|
00005d70  4f 54 22 66 6c 61 67 3d  39 30 32 0d 20 12 2d e7  |OT"flag=902. .-.|
00005d80  66 6c 61 67 3d 2d 31 20  e7 a4 75 63 28 c0 53 24  |flag=-1 ..uc(.S$|
00005d90  2c 38 29 29 3d 22 4d 45  52 43 53 4f 46 31 22 20  |,8))="MERCSOF1" |
00005da0  66 6c 61 67 3d 39 30 33  0d 20 1c 34 e7 66 6c 61  |flag=903. .4.fla|
00005db0  67 3d 2d 31 20 e7 a4 75  63 28 c0 53 24 2c 31 33  |g=-1 ..uc(.S$,13|
00005dc0  29 29 3d 22 49 52 4c 41  4d 20 59 55 56 20 34 31  |))="IRLAM YUV 41|
00005dd0  31 22 20 66 6c 61 67 3d  32 32 35 30 0d 20 26 26  |1" flag=2250. &&|
00005de0  e7 66 6c 61 67 3d 2d 31  20 e7 c0 53 24 2c 35 29  |.flag=-1 ..S$,5)|
00005df0  3d 22 49 72 6c 61 6d 22  20 66 6c 61 67 3d 32 32  |="Irlam" flag=22|
00005e00  30 30 0d 20 30 23 e7 66  6c 61 67 3d 2d 31 20 e7  |00. 0#.flag=-1 .|
00005e10  c0 53 24 2c 32 29 3d 22  42 4d 22 20 66 6c 61 67  |.S$,2)="BM" flag|
00005e20  3d 32 34 30 30 0d 20 3a  24 e7 66 6c 61 67 3d 2d  |=2400. :$.flag=-|
00005e30  31 20 e7 c0 53 24 2c 34  29 3d 22 47 49 46 38 22  |1 ..S$,4)="GIF8"|
00005e40  20 66 6c 61 67 3d 35 30  30 0d 20 44 25 e7 66 6c  | flag=500. D%.fl|
00005e50  61 67 3d 2d 31 20 e7 c0  53 24 2c 35 29 3d 22 41  |ag=-1 ..S$,5)="A|
00005e60  56 5f 56 4f 22 20 66 6c  61 67 3d 36 30 30 0d 20  |V_VO" flag=600. |
00005e70  4e 32 e7 66 6c 61 67 3d  2d 31 20 e7 c0 53 24 2c  |N2.flag=-1 ..S$,|
00005e80  34 29 3d bd 26 35 39 2b  bd 26 41 36 2b bd 26 36  |4)=.&59+.&A6+.&6|
00005e90  41 2b bd 26 39 35 20 66  6c 61 67 3d 31 31 30 30  |A+.&95 flag=1100|
00005ea0  0d 20 58 2a e7 66 6c 61  67 3d 2d 31 20 e7 c0 53  |. X*.flag=-1 ..S|
00005eb0  24 2c 34 29 3d bd 30 2b  bd 31 2b bd 30 2b bd 38  |$,4)=.0+.1+.0+.8|
00005ec0  20 66 6c 61 67 3d 31 34  30 30 0d 20 62 2a e7 66  | flag=1400. b*.f|
00005ed0  6c 61 67 3d 2d 31 20 e7  c0 53 24 2c 34 29 3d bd  |lag=-1 ..S$,4)=.|
00005ee0  30 2b bd 31 2b bd 30 2b  bd 31 20 66 6c 61 67 3d  |0+.1+.0+.1 flag=|
00005ef0  32 39 30 30 0d 20 6c 25  e7 66 6c 61 67 3d 2d 31  |2900. l%.flag=-1|
00005f00  20 e7 c0 53 24 2c 34 29  3d 22 52 49 58 33 22 20  | ..S$,4)="RIX3" |
00005f10  66 6c 61 67 3d 32 37 30  30 0d 20 76 33 e7 66 6c  |flag=2700. v3.fl|
00005f20  61 67 3d 2d 31 20 e7 c0  53 24 2c 34 29 3d 22 49  |ag=-1 ..S$,4)="I|
00005f30  49 2a 22 2b bd 30 20 66  6c 61 67 3d 31 35 30 30  |I*"+.0 flag=1500|
00005f40  3a 62 69 67 65 6e 64 69  61 6e 3d a3 0d 20 80 36  |:bigendian=.. .6|
00005f50  e7 66 6c 61 67 3d 2d 31  20 e7 c0 53 24 2c 34 29  |.flag=-1 ..S$,4)|
00005f60  3d 22 4d 4d 22 2b bd 30  2b 22 2a 22 20 66 6c 61  |="MM"+.0+"*" fla|
00005f70  67 3d 31 35 30 30 3a 62  69 67 65 6e 64 69 61 6e  |g=1500:bigendian|
00005f80  3d b9 0d 20 8a 28 e7 66  6c 61 67 3d 2d 31 20 e7  |=.. .(.flag=-1 .|
00005f90  c0 53 24 2c 32 29 3d bd  26 35 32 2b bd 26 43 43  |.S$,2)=.&52+.&CC|
00005fa0  20 66 6c 61 67 3d 32 33  30 30 0d 20 94 44 e7 66  | flag=2300. .D.f|
00005fb0  6c 61 67 3d 2d 31 20 e7  c0 53 24 2c 32 29 3d 22  |lag=-1 ..S$,2)="|
00005fc0  50 34 22 84 c0 53 24 2c  32 29 3d 22 50 35 22 84  |P4"..S$,2)="P5".|
00005fd0  c0 53 24 2c 32 29 3d 22  50 36 22 20 66 6c 61 67  |.S$,2)="P6" flag|
00005fe0  3d 33 33 30 30 3a 69 6e  66 6f 24 3d 22 22 0d 20  |=3300:info$="". |
00005ff0  9e 24 e7 66 6c 61 67 3d  2d 31 20 e7 c0 53 24 2c  |.$.flag=-1 ..S$,|
00006000  33 29 3d 22 50 31 35 22  20 66 6c 61 67 3d 33 34  |3)="P15" flag=34|
00006010  30 30 0d 20 a8 24 e7 66  6c 61 67 3d 2d 31 20 e7  |00. .$.flag=-1 .|
00006020  c0 53 24 2c 33 29 3d 22  50 49 43 22 20 66 6c 61  |.S$,3)="PIC" fla|
00006030  67 3d 33 35 30 30 0d 20  b2 29 e7 66 6c 61 67 3d  |g=3500. .).flag=|
00006040  2d 31 20 e7 a4 75 63 28  c0 53 24 2c 33 29 29 3d  |-1 ..uc(.S$,3))=|
00006050  22 50 31 33 22 20 66 6c  61 67 3d 33 34 35 30 0d  |"P13" flag=3450.|
00006060  20 bc 36 e7 66 6c 61 67  3d 2d 31 20 e7 c0 53 24  | .6.flag=-1 ..S$|
00006070  2c 34 29 3d 22 46 4f 52  4d 22 20 e7 c1 53 24 2c  |,4)="FORM" ..S$,|
00006080  39 2c 34 29 3d 22 49 4c  42 4d 22 20 66 6c 61 67  |9,4)="ILBM" flag|
00006090  3d 31 36 30 30 0d 20 c6  0e e7 66 6c 61 67 3d 2d  |=1600. ...flag=-|
000060a0  31 20 8c 0d 20 d0 23 e7  c1 53 24 2c 37 2c 34 29  |1 .. .#..S$,7,4)|
000060b0  3d 22 4a 46 49 46 22 20  84 20 66 74 79 70 65 3d  |="JFIF" . ftype=|
000060c0  26 43 38 35 20 8c 0d 20  da 2a 6a 70 65 67 62 6c  |&C85 .. .*jpegbl|
000060d0  6b 25 3d a4 64 69 6d 28  32 30 29 3a f2 63 61 63  |k%=.dim(20):.cac|
000060e0  68 65 73 69 7a 65 28 6a  70 65 67 62 6c 6b 25 29  |hesize(jpegblk%)|
000060f0  0d 20 e4 12 e7 63 61 63  68 65 25 3c a2 23 63 25  |. ...cache%<.#c%|
00006100  20 8c 0d 20 ee 18 d9 23  63 25 3a 58 25 3d 8e 22  | .. ...#c%:X%=."|
00006110  52 75 6e 3a 64 6a 70 65  67 22 0d 20 f8 09 e7 58  |Run:djpeg". ...X|
00006120  25 20 8c 0d 21 02 37 d9  23 58 25 3a c8 99 22 57  |% ..!.7.#X%:.."W|
00006130  69 6d 70 5f 53 74 61 72  74 54 61 73 6b 22 2c 22  |imp_StartTask","|
00006140  64 6a 70 65 67 20 22 2b  73 24 2b 22 20 3c 57 69  |djpeg "+s$+" <Wi|
00006150  6d 70 24 53 63 72 61 70  3e 22 0d 21 0c 05 cc 0d  |mp$Scrap>".!....|
00006160  21 16 30 c8 99 22 58 4f  53 5f 43 4c 49 22 2c 22  |!.0.."XOS_CLI","|
00006170  64 6a 70 65 67 20 22 2b  73 24 2b 22 20 3c 57 69  |djpeg "+s$+" <Wi|
00006180  6d 70 24 53 63 72 61 70  3e 22 20 b8 20 3b 56 0d  |mp$Scrap>" . ;V.|
00006190  21 20 0b e7 56 20 80 31  20 8c 0d 21 2a 42 c8 99  |! ..V .1 ..!*B..|
000061a0  22 57 69 6d 70 5f 53 74  61 72 74 54 61 73 6b 22  |"Wimp_StartTask"|
000061b0  2c 22 3c 43 68 61 6e 67  65 46 53 49 24 44 69 72  |,"<ChangeFSI$Dir|
000061c0  3e 2e 64 6a 70 65 67 20  22 2b 73 24 2b 22 20 3c  |>.djpeg "+s$+" <|
000061d0  57 69 6d 70 24 53 63 72  61 70 3e 22 0d 21 34 05  |Wimp$Scrap>".!4.|
000061e0  cd 0d 21 3e 05 cd 0d 21  48 22 63 25 3d 8e 22 3c  |..!>...!H"c%=."<|
000061f0  57 69 6d 70 24 53 63 72  61 70 3e 22 3a e7 63 25  |Wimp$Scrap>":.c%|
00006200  3d 30 20 8c 3d 31 30 30  0d 21 52 3e 73 63 72 61  |=0 .=100.!R>scra|
00006210  70 66 25 3d b9 3a 66 6c  61 67 3d 33 33 30 30 3a  |pf%=.:flag=3300:|
00006220  69 6e 66 6f 24 3d 22 4a  50 45 47 20 28 4a 46 49  |info$="JPEG (JFI|
00006230  46 29 20 66 69 6c 65 20  63 6f 6e 76 65 72 74 65  |F) file converte|
00006240  64 20 74 6f 20 22 0d 21  5c 05 cc 0d 21 66 0d 66  |d to ".!\...!f.f|
00006250  6c 61 67 3d 33 37 30 30  0d 21 70 05 cd 0d 21 7a  |lag=3700.!p...!z|
00006260  05 cd 0d 21 84 05 cd 0d  21 8e 0e e7 66 6c 61 67  |...!....!...flag|
00006270  3d 2d 31 20 8c 0d 21 98  26 cf 23 63 25 3d 26 31  |=-1 ..!.&.#c%=&1|
00006280  30 3a 53 24 3d 22 22 3a  e3 49 25 3d 31 b8 39 3a  |0:S$="":.I%=1.9:|
00006290  53 24 2b 3d bd 9a 23 63  25 3a ed 0d 21 a2 1c e7  |S$+=..#c%:..!...|
000062a0  53 24 3d 22 4d 49 4c 4c  49 50 45 44 45 22 20 66  |S$="MILLIPEDE" f|
000062b0  6c 61 67 3d 32 30 30 0d  21 ac 05 cd 0d 21 b6 0e  |lag=200.!....!..|
000062c0  e7 66 6c 61 67 3d 2d 31  20 8c 0d 21 c0 26 cf 23  |.flag=-1 ..!.&.#|
000062d0  63 25 3d 26 34 31 3a 53  24 3d 22 22 3a e3 49 25  |c%=&41:S$="":.I%|
000062e0  3d 31 b8 38 3a 53 24 2b  3d bd 9a 23 63 25 3a ed  |=1.8:S$+=..#c%:.|
000062f0  0d 21 ca 25 e7 c0 53 24  2c 34 29 3d 22 50 4e 54  |.!.%..S$,4)="PNT|
00006300  47 22 20 66 6c 61 67 3d  31 38 30 30 3a 73 74 25  |G" flag=1800:st%|
00006310  3d 26 32 38 30 0d 21 d4  05 cd 0d 21 de 0e e7 66  |=&280.!....!...f|
00006320  6c 61 67 3d 2d 31 20 8c  0d 21 e8 26 cf 23 63 25  |lag=-1 ..!.&.#c%|
00006330  3d 31 39 36 3a 53 24 3d  22 22 3a e3 49 25 3d 31  |=196:S$="":.I%=1|
00006340  b8 38 3a 53 24 2b 3d bd  9a 23 63 25 3a ed 0d 21  |.8:S$+=..#c%:..!|
00006350  f2 25 e7 c0 53 24 2c 34  29 3d 22 50 4e 54 47 22  |.%..S$,4)="PNTG"|
00006360  20 66 6c 61 67 3d 31 38  30 30 3a 73 74 25 3d 26  | flag=1800:st%=&|
00006370  32 65 32 0d 21 fc 05 cd  0d 22 06 0e e7 66 6c 61  |2e2.!...."...fla|
00006380  67 3d 2d 31 20 8c 0d 22  10 26 cf 23 63 25 3d 35  |g=-1 ..".&.#c%=5|
00006390  32 32 3a 53 24 3d 22 22  3a e3 49 25 3d 31 b8 38  |22:S$="":.I%=1.8|
000063a0  3a 53 24 2b 3d bd 9a 23  63 25 3a ed 0d 22 1a 32  |:S$+=..#c%:..".2|
000063b0  e7 53 24 3d bd 30 2b bd  26 31 31 2b bd 32 2b bd  |.S$=.0+.&11+.2+.|
000063c0  26 66 66 2b bd 26 63 2b  bd 30 2b bd 26 66 66 2b  |&ff+.&c+.0+.&ff+|
000063d0  bd 26 66 65 20 66 6c 61  67 3d 31 38 35 30 0d 22  |.&fe flag=1850."|
000063e0  24 05 cd 0d 22 2e 0e e7  66 6c 61 67 3d 2d 31 20  |$..."...flag=-1 |
000063f0  8c 0d 22 38 15 cf 23 63  25 3d 30 3a e7 9a 23 63  |.."8..#c%=0:..#c|
00006400  25 3d 31 30 20 8c 0d 22  42 2b 43 25 3d 9a 23 63  |%=10 .."B+C%=.#c|
00006410  25 3a e7 43 25 3c 36 20  80 20 43 25 3c 3e 31 20  |%:.C%<6 . C%<>1 |
00006420  80 9a 23 63 25 3d 31 20  66 6c 61 67 3d 31 39 30  |..#c%=1 flag=190|
00006430  30 0d 22 4c 05 cd 0d 22  56 05 cd 0d 22 60 4d e7  |0."L..."V..."`M.|
00006440  66 6c 61 67 3d 2d 31 20  e7 a7 22 2e 22 2b a4 75  |flag=-1 .."."+.u|
00006450  63 28 73 24 29 2c 22 2e  50 43 58 2e 22 29 84 a7  |c(s$),".PCX.")..|
00006460  a4 75 63 28 73 24 29 2c  22 3a 50 43 58 2e 22 29  |.uc(s$),":PCX.")|
00006470  84 c2 73 24 2c 34 29 3d  22 2f 50 43 58 22 20 66  |..s$,4)="/PCX" f|
00006480  6c 61 67 3d 31 39 30 30  0d 22 6a 42 e7 66 6c 61  |lag=1900."jB.fla|
00006490  67 3d 2d 31 20 e7 a7 22  2e 22 2b a4 75 63 28 73  |g=-1 .."."+.uc(s|
000064a0  24 29 2c 22 2e 49 4d 41  47 45 2e 22 29 84 a7 a4  |$),".IMAGE.")...|
000064b0  75 63 28 73 24 29 2c 22  3a 49 4d 41 47 45 2e 22  |uc(s$),":IMAGE."|
000064c0  29 20 66 6c 61 67 3d 34  30 30 0d 22 74 29 e7 66  |) flag=400."t).f|
000064d0  6c 61 67 3d 2d 31 20 e7  a4 75 63 28 c2 73 24 2c  |lag=-1 ..uc(.s$,|
000064e0  34 29 29 3d 22 2e 52 41  57 22 20 66 6c 61 67 3d  |4))=".RAW" flag=|
000064f0  31 30 30 0d 22 7e 29 e7  66 6c 61 67 3d 2d 31 20  |100."~).flag=-1 |
00006500  e7 a4 75 63 28 c2 73 24  2c 33 29 29 3d 22 54 47  |..uc(.s$,3))="TG|
00006510  41 22 20 66 6c 61 67 3d  32 30 30 30 0d 22 88 29  |A" flag=2000.".)|
00006520  e7 66 6c 61 67 3d 2d 31  20 e7 a4 75 63 28 c2 73  |.flag=-1 ..uc(.s|
00006530  24 2c 33 29 29 3d 22 56  44 41 22 20 66 6c 61 67  |$,3))="VDA" flag|
00006540  3d 32 30 30 30 0d 22 92  3e e7 66 6c 61 67 3d 2d  |=2000.".>.flag=-|
00006550  31 20 e7 a7 22 2e 22 2b  a4 75 63 28 73 24 29 2c  |1 .."."+.uc(s$),|
00006560  22 2e 50 49 43 2e 22 29  84 a7 a4 75 63 28 73 24  |".PIC.")...uc(s$|
00006570  29 2c 22 3a 50 49 43 2e  22 29 20 66 6c 61 67 3d  |),":PIC.") flag=|
00006580  37 30 30 0d 22 9c 4d e7  66 6c 61 67 3d 2d 31 20  |700.".M.flag=-1 |
00006590  e7 a7 22 2e 22 2b a4 75  63 28 73 24 29 2c 22 2e  |.."."+.uc(s$),".|
000065a0  49 4d 47 2e 22 29 84 a7  a4 75 63 28 73 24 29 2c  |IMG.")...uc(s$),|
000065b0  22 3a 49 4d 47 2e 22 29  84 c2 73 24 2c 34 29 3d  |":IMG.")..s$,4)=|
000065c0  22 2f 49 4d 47 22 20 66  6c 61 67 3d 31 34 30 30  |"/IMG" flag=1400|
000065d0  0d 22 a6 4d e7 66 6c 61  67 3d 2d 31 20 e7 a7 22  |.".M.flag=-1 .."|
000065e0  2e 22 2b a4 75 63 28 73  24 29 2c 22 2e 44 53 50  |."+.uc(s$),".DSP|
000065f0  2e 22 29 84 a7 a4 75 63  28 73 24 29 2c 22 3a 44  |.")...uc(s$),":D|
00006600  53 50 2e 22 29 84 c2 73  24 2c 34 29 3d 22 2f 44  |SP.")..s$,4)="/D|
00006610  53 50 22 20 66 6c 61 67  3d 31 37 30 30 0d 22 b0  |SP" flag=1700.".|
00006620  2a e7 66 6c 61 67 3d 2d  31 20 e7 a4 75 63 28 c2  |*.flag=-1 ..uc(.|
00006630  73 24 2c 34 29 29 3d 22  2f 52 47 42 22 20 66 6c  |s$,4))="/RGB" fl|
00006640  61 67 3d 33 32 30 30 0d  22 ba 3c e7 66 6c 61 67  |ag=3200.".<.flag|
00006650  3d 2d 31 20 80 28 a4 75  63 28 c2 73 24 2c 34 29  |=-1 .(.uc(.s$,4)|
00006660  29 3d 22 2f 50 43 44 22  84 66 74 79 70 65 3d 26  |)="/PCD".ftype=&|
00006670  62 65 38 29 80 28 28 70  63 64 25 80 31 29 3d 31  |be8).((pcd%.1)=1|
00006680  29 20 8c 0d 22 c4 6f d9  23 63 25 3a c8 99 22 57  |) ..".o.#c%:.."W|
00006690  69 6d 70 5f 53 74 61 72  74 54 61 73 6b 22 2c 22  |imp_StartTask","|
000066a0  3c 43 68 61 6e 67 65 46  53 49 24 44 69 72 3e 2e  |<ChangeFSI$Dir>.|
000066b0  68 70 63 64 74 6f 70 70  6d 20 2d 33 20 2d 61 20  |hpcdtoppm -3 -a |
000066c0  22 2b 73 24 2b 22 20 3c  57 69 6d 70 24 53 63 72  |"+s$+" <Wimp$Scr|
000066d0  61 70 3e 20 7b 20 3e 20  3c 43 68 61 6e 67 65 46  |ap> { > <ChangeF|
000066e0  53 49 24 44 69 72 3e 2e  70 63 64 74 65 6d 70 20  |SI$Dir>.pcdtemp |
000066f0  7d 22 0d 22 ce 4d 63 25  3d 8e 22 3c 57 69 6d 70  |}".".Mc%=."<Wimp|
00006700  24 53 63 72 61 70 3e 22  3a 73 63 72 61 70 66 25  |$Scrap>":scrapf%|
00006710  3d b9 3a 66 6c 61 67 3d  33 33 30 30 3a 69 6e 66  |=.:flag=3300:inf|
00006720  6f 24 3d 22 50 68 6f 74  6f 43 44 20 66 69 6c 65  |o$="PhotoCD file|
00006730  20 63 6f 6e 76 65 72 74  65 64 20 74 6f 20 22 0d  | converted to ".|
00006740  22 d8 05 cd 0d 22 e2 05  cd 0d 22 ec 63 e7 66 6c  |"...."....".c.fl|
00006750  61 67 3d 2d 31 20 f2 63  6c 6f 73 65 3a 85 20 34  |ag=-1 .close:. 4|
00006760  32 2c 22 53 6f 72 72 79  3a 20 66 6f 72 6d 61 74  |2,"Sorry: format|
00006770  20 6e 6f 74 20 72 65 63  6f 67 6e 69 73 65 64 20  | not recognised |
00006780  2d 20 70 6c 65 61 73 65  20 74 72 79 20 61 67 61  |- please try aga|
00006790  69 6e 20 6f 72 20 63 6f  6e 74 61 63 74 20 79 6f  |in or contact yo|
000067a0  75 72 20 73 75 70 70 6c  69 65 72 22 0d 22 f6 42  |ur supplier".".B|
000067b0  73 74 65 70 32 34 3d 31  3a 69 6e 70 75 74 3d 38  |step24=1:input=8|
000067c0  3a 68 61 6d 3d 30 3a 70  6c 61 6e 61 72 25 3d 30  |:ham=0:planar%=0|
000067d0  3a 62 69 67 65 6e 64 69  61 6e 62 69 74 73 3d a3  |:bigendianbits=.|
000067e0  3a 72 24 3d 22 46 4e 22  2b c3 66 6c 61 67 0d 23  |:r$="FN"+.flag.#|
000067f0  00 39 63 6f 6d 70 72 65  73 73 69 6f 6e 3d 30 3a  |.9compression=0:|
00006800  68 70 72 65 64 69 63 74  25 3d 31 3a 73 74 72 69  |hpredict%=1:stri|
00006810  70 72 6f 77 73 25 3d 2d  31 3a 63 61 63 68 65 62  |prows%=-1:cacheb|
00006820  79 74 65 73 25 3d a3 0d  23 0a 1f e7 78 64 69 76  |ytes%=..#...xdiv|
00006830  25 3d 30 20 80 20 79 64  69 76 25 3d 30 20 73 63  |%=0 . ydiv%=0 sc|
00006840  61 6c 65 25 3d a3 0d 23  14 0d c8 8e 20 66 6c 61  |ale%=..#.... fla|
00006850  67 20 ca 0d 23 1e 07 c9  20 30 0d 23 28 40 71 75  |g ..#... 0.#(@qu|
00006860  61 6e 74 25 3d 34 3a cf  23 63 25 3d 34 3a 46 25  |ant%=4:.#c%=4:F%|
00006870  3d a4 57 2b 26 31 43 3a  cf 23 63 25 3d 46 25 3a  |=.W+&1C:.#c%=F%:|
00006880  73 74 25 3d a4 57 2b 46  25 2d 26 32 30 3a 4b 25  |st%=.W+F%-&20:K%|
00006890  3d a4 57 2b 46 25 2d 26  32 30 0d 23 32 13 73 6d  |=.W+F%-&20.#2.sm|
000068a0  3d a4 57 3a e7 73 6d 3c  32 35 36 20 8c 0d 23 3c  |=.W:.sm<256 ..#<|
000068b0  14 c8 99 35 33 2c 73 6d  2c 33 20 b8 20 2c 2c 49  |...53,sm,3 . ,,I|
000068c0  25 0d 23 46 0b c8 8e 20  49 25 20 ca 0d 23 50 25  |%.#F... I% ..#P%|
000068d0  c9 20 31 3a e7 73 74 25  3d 46 25 2b 31 32 20 f2  |. 1:.st%=F%+12 .|
000068e0  64 65 66 70 61 6c 32 20  8b f2 69 70 61 6c 28 32  |defpal2 ..ipal(2|
000068f0  29 0d 23 5a 35 cf 23 63  25 3d 46 25 2d 31 36 3a  |).#Z5.#c%=F%-16:|
00006900  73 78 25 3d 28 a4 57 2b  31 29 2a 33 32 3a 72 6f  |sx%=(.W+1)*32:ro|
00006910  77 62 79 74 65 73 25 3d  73 78 25 3e 3e 33 3a 69  |wbytes%=sx%>>3:i|
00006920  6e 70 75 74 3d 31 0d 23  64 1d 73 79 25 3d a4 57  |nput=1.#d.sy%=.W|
00006930  2b 31 3a 49 25 3d a4 57  3a 73 78 25 2d 3d 33 31  |+1:I%=.W:sx%-=31|
00006940  2d a4 57 0d 23 6e 25 c9  20 33 3a e7 73 74 25 3d  |-.W.#n%. 3:.st%=|
00006950  46 25 2b 31 32 20 f2 64  65 66 70 61 6c 34 20 8b  |F%+12 .defpal4 .|
00006960  f2 69 70 61 6c 28 34 29  0d 23 78 35 cf 23 63 25  |.ipal(4).#x5.#c%|
00006970  3d 46 25 2d 31 36 3a 73  78 25 3d 28 a4 57 2b 31  |=F%-16:sx%=(.W+1|
00006980  29 2a 31 36 3a 72 6f 77  62 79 74 65 73 25 3d 73  |)*16:rowbytes%=s|
00006990  78 25 3e 3e 32 3a 69 6e  70 75 74 3d 32 0d 23 82  |x%>>2:input=2.#.|
000069a0  21 73 79 25 3d a4 57 2b  31 3a 49 25 3d a4 57 3a  |!sy%=.W+1:I%=.W:|
000069b0  73 78 25 2d 3d 28 33 31  2d a4 57 29 81 32 0d 23  |sx%-=(31-.W).2.#|
000069c0  8c 28 c9 20 31 35 3a e7  73 74 25 3d 46 25 2b 31  |.(. 15:.st%=F%+1|
000069d0  32 20 f2 64 65 66 70 61  6c 31 36 20 8b f2 69 70  |2 .defpal16 ..ip|
000069e0  61 6c 28 31 36 29 0d 23  96 34 cf 23 63 25 3d 46  |al(16).#.4.#c%=F|
000069f0  25 2d 31 36 3a 73 78 25  3d 28 a4 57 2b 31 29 2a  |%-16:sx%=(.W+1)*|
00006a00  38 3a 72 6f 77 62 79 74  65 73 25 3d 73 78 25 3e  |8:rowbytes%=sx%>|
00006a10  3e 31 3a 69 6e 70 75 74  3d 34 0d 23 a0 21 73 79  |>1:input=4.#.!sy|
00006a20  25 3d a4 57 2b 31 3a 49  25 3d a4 57 3a 73 78 25  |%=.W+1:I%=.W:sx%|
00006a30  2d 3d 28 33 31 2d a4 57  29 81 34 0d 23 aa 19 c9  |-=(31-.W).4.#...|
00006a40  20 36 33 2c 32 35 35 3a  e7 73 74 25 3d 46 25 2b  | 63,255:.st%=F%+|
00006a50  31 32 20 8c 0d 23 b4 0b  f2 64 65 66 70 61 6c 0d  |12 ..#...defpal.|
00006a60  23 be 05 cc 0d 23 c8 12  e7 4b 25 3e 73 74 25 20  |#....#...K%>st% |
00006a70  4b 25 3d 73 74 25 0d 23  d2 1c e7 4b 25 2d 31 32  |K%=st%.#...K%-12|
00006a80  2d 46 25 3d 32 30 34 38  20 84 49 25 3d 32 35 35  |-F%=2048 .I%=255|
00006a90  20 8c 0d 23 dc 0c cf 23  63 25 3d 26 33 38 0d 23  | ..#...#c%=&38.#|
00006aa0  e6 15 e3 43 25 3d 30 b8  32 35 35 3a 44 25 3d 9a  |...C%=0.255:D%=.|
00006ab0  23 63 25 0d 23 f0 39 72  25 28 43 25 29 3d 9a 23  |#c%.#.9r%(C%)=.#|
00006ac0  63 25 2f 32 35 35 2a 46  3a 67 25 28 43 25 29 3d  |c%/255*F:g%(C%)=|
00006ad0  9a 23 63 25 2f 32 35 35  2a 46 3a 62 25 28 43 25  |.#c%/255*F:b%(C%|
00006ae0  29 3d 9a 23 63 25 2f 32  35 35 2a 46 0d 23 fa 0b  |)=.#c%/255*F.#..|
00006af0  44 25 3d a4 57 3a ed 0d  24 04 05 cc 0d 24 0e 0b  |D%=.W:..$....$..|
00006b00  f2 69 70 61 6c 36 33 0d  24 18 05 cd 0d 24 22 05  |.ipal63.$....$".|
00006b10  cd 0d 24 2c 47 cf 23 63  25 3d 46 25 2d 31 36 3a  |..$,G.#c%=F%-16:|
00006b20  73 78 25 3d 28 a4 57 2b  31 29 2a 34 3a 72 6f 77  |sx%=(.W+1)*4:row|
00006b30  62 79 74 65 73 25 3d 73  78 25 3a 73 79 25 3d a4  |bytes%=sx%:sy%=.|
00006b40  57 2b 31 3a 49 25 3d a4  57 3a 73 78 25 2d 3d 28  |W+1:I%=.W:sx%-=(|
00006b50  33 31 2d a4 57 29 81 38  0d 24 36 29 7f 20 85 34  |31-.W).8.$6). .4|
00006b60  32 2c 22 4e 6f 74 20 75  6e 64 65 72 73 74 6f 6f  |2,"Not understoo|
00006b70  64 20 52 49 53 43 20 4f  53 20 73 70 72 69 74 65  |d RISC OS sprite|
00006b80  22 0d 24 40 05 cb 0d 24  4a 40 72 24 3d 22 46 4e  |".$@...$J@r$="FN|
00006b90  38 22 3a c8 99 35 33 2c  73 6d 2c 34 20 b8 20 2c  |8":..53,sm,4 . ,|
00006ba0  2c 6e 78 3a c8 99 35 33  2c 73 6d 2c 35 20 b8 20  |,nx:..53,sm,5 . |
00006bb0  2c 2c 6e 79 3a 6e 78 3d  31 3c 3c 6e 78 3a 6e 79  |,,ny:nx=1<<nx:ny|
00006bc0  3d 31 3c 3c 6e 79 0d 24  54 2d e7 73 63 61 6c 65  |=1<<ny.$T-.scale|
00006bd0  25 20 78 6d 75 6c 25 3d  78 6d 75 6c 25 2a 6e 78  |% xmul%=xmul%*nx|
00006be0  2f 32 3a 79 6d 75 6c 25  3d 79 6d 75 6c 25 2a 6e  |/2:ymul%=ymul%*n|
00006bf0  79 2f 32 0d 24 5e 53 69  6e 66 6f 24 3d 22 52 49  |y/2.$^Sinfo$="RI|
00006c00  53 43 20 4f 53 20 73 70  72 69 74 65 2c 20 6d 6f  |SC OS sprite, mo|
00006c10  64 65 20 22 2b c3 73 6d  2b 22 20 22 2b c3 73 78  |de "+.sm+" "+.sx|
00006c20  25 2b 22 20 62 79 20 22  2b c3 73 79 25 2b 22 20  |%+" by "+.sy%+" |
00006c30  70 69 78 65 6c 73 2c 20  22 2b a4 62 69 74 73 28  |pixels, "+.bits(|
00006c40  69 6e 70 75 74 29 0d 24  68 05 cc 0d 24 72 19 62  |input).$h...$r.b|
00006c50  70 70 25 3d 73 6d 3e 3e  3e 32 37 3a c8 8e 62 70  |pp%=sm>>>27:..bp|
00006c60  70 25 20 ca 0d 24 7c 39  c9 20 31 3a 62 70 70 25  |p% ..$|9. 1:bpp%|
00006c70  3d 31 3a 72 24 3d 22 46  4e 38 22 3a e7 73 74 25  |=1:r$="FN8":.st%|
00006c80  3d 46 25 2b 31 32 20 f2  64 65 66 70 61 6c 32 20  |=F%+12 .defpal2 |
00006c90  8b f2 6e 65 77 72 6f 70  61 6c 28 32 29 0d 24 86  |..newropal(2).$.|
00006ca0  39 c9 20 32 3a 62 70 70  25 3d 32 3a 72 24 3d 22  |9. 2:bpp%=2:r$="|
00006cb0  46 4e 38 22 3a e7 73 74  25 3d 46 25 2b 31 32 20  |FN8":.st%=F%+12 |
00006cc0  f2 64 65 66 70 61 6c 34  20 8b f2 6e 65 77 72 6f  |.defpal4 ..newro|
00006cd0  70 61 6c 28 34 29 0d 24  90 3b c9 20 33 3a 62 70  |pal(4).$.;. 3:bp|
00006ce0  70 25 3d 34 3a 72 24 3d  22 46 4e 38 22 3a e7 73  |p%=4:r$="FN8":.s|
00006cf0  74 25 3d 46 25 2b 31 32  20 f2 64 65 66 70 61 6c  |t%=F%+12 .defpal|
00006d00  31 36 20 8b f2 6e 65 77  72 6f 70 61 6c 28 31 36  |16 ..newropal(16|
00006d10  29 0d 24 9a 3a c9 20 34  3a 62 70 70 25 3d 38 3a  |).$.:. 4:bpp%=8:|
00006d20  72 24 3d 22 46 4e 38 22  3a e7 73 74 25 3d 46 25  |r$="FN8":.st%=F%|
00006d30  2b 31 32 20 f2 64 65 66  70 61 6c 20 8b f2 6e 65  |+12 .defpal ..ne|
00006d40  77 72 6f 70 61 6c 28 32  35 36 29 0d 24 a4 26 c9  |wropal(256).$.&.|
00006d50  20 35 3a 62 70 70 25 3d  31 36 3a 72 24 3d 22 46  | 5:bpp%=16:r$="F|
00006d60  4e 31 36 22 3a e7 73 74  25 3d 46 25 2b 31 32 20  |N16":.st%=F%+12 |
00006d70  8b 0d 24 ae 24 de 20 72  70 61 6c 25 28 32 35 35  |..$.$. rpal%(255|
00006d80  29 2c 67 70 61 6c 25 28  32 35 35 29 3a 73 74 65  |),gpal%(255):ste|
00006d90  70 32 34 3d 32 0d 24 b8  0d e3 43 25 3d 30 b8 32  |p24=2.$...C%=0.2|
00006da0  35 35 0d 24 c2 22 67 70  61 6c 25 28 43 25 29 3d  |55.$."gpal%(C%)=|
00006db0  28 43 25 3e 3e 35 29 3c  3c 38 20 84 20 28 43 25  |(C%>>5)<<8 . (C%|
00006dc0  80 33 31 29 0d 24 cc 2b  72 70 61 6c 25 28 43 25  |.31).$.+rpal%(C%|
00006dd0  29 3d 28 28 43 25 3e 3e  32 29 80 33 31 29 3c 3c  |)=((C%>>2).31)<<|
00006de0  31 36 20 84 20 28 43 25  80 33 29 3c 3c 31 31 0d  |16 . (C%.3)<<11.|
00006df0  24 d6 05 ed 0d 24 e0 31  e3 43 25 3d 30 b8 33 31  |$....$.1.C%=0.31|
00006e00  3a 72 25 28 43 25 29 3d  43 25 2f 33 31 2a 46 3a  |:r%(C%)=C%/31*F:|
00006e10  ed 3a 67 25 28 29 3d 72  25 28 29 3a 62 25 28 29  |.:g%()=r%():b%()|
00006e20  3d 72 25 28 29 0d 24 ea  2d c9 20 36 3a 62 70 70  |=r%().$.-. 6:bpp|
00006e30  25 3d 33 32 3a 72 24 3d  22 46 4e 32 34 22 3a e7  |%=32:r$="FN24":.|
00006e40  73 74 25 3d 46 25 2b 31  32 20 f2 6e 6f 70 61 6c  |st%=F%+12 .nopal|
00006e50  20 8b 0d 24 f4 21 72 62  6f 25 3d 30 3a 67 62 6f  | ..$.!rbo%=0:gbo|
00006e60  25 3d 31 3a 62 62 6f 25  3d 32 3a 73 74 65 70 32  |%=1:bbo%=2:step2|
00006e70  34 3d 34 0d 24 fe 2d c9  20 38 3a 62 70 70 25 3d  |4=4.$.-. 8:bpp%=|
00006e80  32 34 3a 72 24 3d 22 46  4e 32 34 22 3a e7 73 74  |24:r$="FN24":.st|
00006e90  25 3d 46 25 2b 31 32 20  f2 6e 6f 70 61 6c 20 8b  |%=F%+12 .nopal .|
00006ea0  0d 25 08 18 72 62 6f 25  3d 30 3a 67 62 6f 25 3d  |.%..rbo%=0:gbo%=|
00006eb0  31 3a 62 62 6f 25 3d 32  0d 25 12 38 7f 20 85 34  |1:bbo%=2.%.8. .4|
00006ec0  32 2c 22 4e 6f 74 20 75  6e 64 65 72 73 74 6f 6f  |2,"Not understoo|
00006ed0  64 20 6e 65 77 20 66 6f  72 6d 61 74 20 52 49 53  |d new format RIS|
00006ee0  43 20 4f 53 20 73 70 72  69 74 65 20 62 70 70 22  |C OS sprite bpp"|
00006ef0  0d 25 1c 05 cb 0d 25 26  28 6e 78 3d 28 73 6d 3e  |.%....%&(nx=(sm>|
00006f00  3e 31 29 20 80 26 31 66  66 66 3a 6e 79 3d 28 73  |>1) .&1fff:ny=(s|
00006f10  6d 3e 3e 31 34 29 20 80  26 31 66 66 66 0d 25 30  |m>>14) .&1fff.%0|
00006f20  47 e7 73 63 61 6c 65 25  20 78 64 69 76 25 3d 78  |G.scale% xdiv%=x|
00006f30  64 69 76 25 2a 6e 78 3a  79 64 69 76 25 3d 79 64  |div%*nx:ydiv%=yd|
00006f40  69 76 25 2a 6e 79 3a 78  6d 75 6c 25 3d 78 6d 75  |iv%*ny:xmul%=xmu|
00006f50  6c 25 2a 39 30 3a 79 6d  75 6c 25 3d 79 6d 75 6c  |l%*90:ymul%=ymul|
00006f60  25 2a 39 30 0d 25 3a 5a  cf 23 63 25 3d 46 25 2d  |%*90.%:Z.#c%=F%-|
00006f70  31 36 3a 72 6f 77 62 79  74 65 73 25 3d 28 a4 57  |16:rowbytes%=(.W|
00006f80  2b 31 29 2a 34 3a 73 79  25 3d a4 57 2b 31 3a 49  |+1)*4:sy%=.W+1:I|
00006f90  25 3d a4 57 3a 73 78 25  3d 28 72 6f 77 62 79 74  |%=.W:sx%=(rowbyt|
00006fa0  65 73 25 2a 38 2d 28 33  31 2d a4 57 29 29 2f 62  |es%*8-(31-.W))/b|
00006fb0  70 70 25 3a 69 6e 70 75  74 3d 62 70 70 25 0d 25  |pp%:input=bpp%.%|
00006fc0  44 4a 69 6e 66 6f 24 3d  22 4e 65 77 20 52 49 53  |DJinfo$="New RIS|
00006fd0  43 20 4f 53 20 73 70 72  69 74 65 2c 20 22 2b c3  |C OS sprite, "+.|
00006fe0  73 78 25 2b 22 20 62 79  20 22 2b c3 73 79 25 2b  |sx%+" by "+.sy%+|
00006ff0  22 20 70 69 78 65 6c 73  2c 20 22 2b a4 62 69 74  |" pixels, "+.bit|
00007000  73 28 69 6e 70 75 74 29  0d 25 4e 15 e7 62 70 70  |s(input).%N..bpp|
00007010  25 3d 33 32 20 69 6e 70  75 74 3d 32 34 0d 25 58  |%=32 input=24.%X|
00007020  05 cd 0d 25 62 15 cf 23  63 25 3d 73 74 25 3a 63  |...%b..#c%=st%:c|
00007030  61 63 68 65 25 3d b9 0d  25 6c 09 c9 20 31 30 30  |ache%=..%l.. 100|
00007040  0d 25 76 45 71 75 61 6e  74 25 3d 38 3a cf 23 63  |.%vEquant%=8:.#c|
00007050  25 3d 30 3a 73 78 25 3d  a4 48 57 3a 73 79 25 3d  |%=0:sx%=.HW:sy%=|
00007060  a4 48 57 3a f2 6e 6f 70  61 6c 3a 69 6e 70 75 74  |.HW:.nopal:input|
00007070  3d 32 34 3a 72 6f 77 62  79 74 65 73 25 3d 73 78  |=24:rowbytes%=sx|
00007080  25 2a 33 2b 32 0d 25 80  35 72 62 6f 25 3d 32 3a  |%*3+2.%.5rbo%=2:|
00007090  67 62 6f 25 3d 32 2b 73  78 25 3a 62 62 6f 25 3d  |gbo%=2+sx%:bbo%=|
000070a0  32 2b 32 2a 73 78 25 3a  72 24 3d 22 46 4e 32 34  |2+2*sx%:r$="FN24|
000070b0  22 3a 63 61 63 68 65 25  3d b9 0d 25 8a 4a 69 6e  |":cache%=..%.Jin|
000070c0  66 6f 24 3d 22 51 52 54  20 2e 72 61 77 20 69 6d  |fo$="QRT .raw im|
000070d0  61 67 65 2c 20 22 2b c3  73 78 25 2b 22 20 62 79  |age, "+.sx%+" by|
000070e0  20 22 2b c3 73 79 25 2b  22 20 70 69 78 65 6c 73  | "+.sy%+" pixels|
000070f0  2c 20 32 34 20 62 69 74  73 20 70 65 72 20 70 69  |, 24 bits per pi|
00007100  78 65 6c 22 0d 25 94 09  c9 20 32 30 30 0d 25 9e  |xel".%... 200.%.|
00007110  47 71 75 61 6e 74 25 3d  38 3a cf 23 63 25 3d 35  |Gquant%=8:.#c%=5|
00007120  3a 73 78 25 3d a4 48 57  3a 73 79 25 3d a4 48 57  |:sx%=.HW:sy%=.HW|
00007130  3a 73 78 25 3d 28 a4 48  57 2d 73 78 25 2b 32 29  |:sx%=(.HW-sx%+2)|
00007140  2f 32 3a 73 79 25 3d 28  a4 48 57 2d 73 79 25 2b  |/2:sy%=(.HW-sy%+|
00007150  32 29 2f 32 0d 25 a8 24  cf 23 63 25 3d 26 31 61  |2)/2.%.$.#c%=&1a|
00007160  3a 63 61 64 73 6f 66 74  25 3d 9a 23 63 25 3a cf  |:cadsoft%=.#c%:.|
00007170  23 63 25 3d 26 32 30 30  0d 25 b2 21 e3 43 25 3d  |#c%=&200.%.!.C%=|
00007180  30 b8 32 35 35 3a 72 25  28 43 25 29 3d 9a 23 63  |0.255:r%(C%)=.#c|
00007190  25 2f 32 35 35 2a 46 3a  ed 0d 25 bc 21 e3 43 25  |%/255*F:..%.!.C%|
000071a0  3d 30 b8 32 35 35 3a 67  25 28 43 25 29 3d 9a 23  |=0.255:g%(C%)=.#|
000071b0  63 25 2f 32 35 35 2a 46  3a ed 0d 25 c6 21 e3 43  |c%/255*F:..%.!.C|
000071c0  25 3d 30 b8 32 35 35 3a  62 25 28 43 25 29 3d 9a  |%=0.255:b%(C%)=.|
000071d0  23 63 25 2f 32 35 35 2a  46 3a ed 0d 25 d0 2d cf  |#c%/255*F:..%.-.|
000071e0  23 63 25 3d 26 36 30 30  3a 73 74 25 3d 26 36 30  |#c%=&600:st%=&60|
000071f0  30 3a 63 61 63 68 65 25  3d b9 3a e7 63 61 64 73  |0:cache%=.:.cads|
00007200  6f 66 74 25 3d 32 20 8c  0d 25 da 43 72 65 70 25  |oft%=2 ..%.Crep%|
00007210  3d 30 3a 72 24 3d 22 46  4e 31 31 30 30 22 3a 70  |=0:r$="FN1100":p|
00007220  6c 62 75 66 66 25 3d a4  64 69 6d 28 73 78 25 29  |lbuff%=.dim(sx%)|
00007230  3a 70 6c 62 79 74 65 73  25 3d 73 78 25 3a 63 61  |:plbytes%=sx%:ca|
00007240  63 68 65 62 79 74 65 73  25 3d b9 0d 25 e4 05 cc  |chebytes%=..%...|
00007250  0d 25 ee 1a 72 24 3d 22  46 4e 38 22 3a 72 6f 77  |.%..r$="FN8":row|
00007260  62 79 74 65 73 25 3d 73  78 25 0d 25 f8 05 cd 0d  |bytes%=sx%.%....|
00007270  26 02 5b 69 6e 66 6f 24  3d 22 43 61 64 73 6f 66  |&.[info$="Cadsof|
00007280  74 20 74 79 70 65 20 22  2b c3 63 61 64 73 6f 66  |t type "+.cadsof|
00007290  74 25 2b 22 20 69 6d 61  67 65 2c 20 22 2b c3 73  |t%+" image, "+.s|
000072a0  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
000072b0  20 70 69 78 65 6c 73 2c  20 38 20 62 69 74 73 20  | pixels, 8 bits |
000072c0  70 65 72 20 70 69 78 65  6c 22 0d 26 0c 09 c9 20  |per pixel".&... |
000072d0  33 30 30 0d 26 16 49 71  75 61 6e 74 25 3d 35 3a  |300.&.Iquant%=5:|
000072e0  cf 23 63 25 3d 26 32 63  3a 73 74 25 3d a4 57 2b  |.#c%=&2c:st%=.W+|
000072f0  28 26 33 38 2d 26 32 63  29 3a cf 23 63 63 25 3d  |(&38-&2c):.#cc%=|
00007300  26 32 63 3a 73 74 63 63  25 3d a4 57 31 28 63 63  |&2c:stcc%=.W1(cc|
00007310  25 29 2b 28 26 33 38 2d  26 32 63 29 0d 26 20 37  |%)+(&38-&2c).& 7|
00007320  cf 23 63 25 3d 26 31 63  3a 73 78 25 3d 28 a4 57  |.#c%=&1c:sx%=(.W|
00007330  2b 31 29 2a 34 3a 73 79  25 3d a4 57 2b 31 3a cf  |+1)*4:sy%=.W+1:.|
00007340  23 63 25 3d 73 74 25 3a  cf 23 63 63 25 3d 73 74  |#c%=st%:.#cc%=st|
00007350  63 63 25 0d 26 2a 3b de  20 72 70 61 6c 25 28 32  |cc%.&*;. rpal%(2|
00007360  35 35 29 2c 67 70 61 6c  25 28 32 35 35 29 3a 69  |55),gpal%(255):i|
00007370  6e 70 75 74 3d 31 36 3a  63 61 63 68 65 25 3d b9  |nput=16:cache%=.|
00007380  3a 72 6f 77 62 79 74 65  73 25 3d 73 78 25 0d 26  |:rowbytes%=sx%.&|
00007390  34 0d e3 43 25 3d 30 b8  32 35 35 0d 26 3e 2e 72  |4..C%=0.255.&>.r|
000073a0  70 61 6c 25 28 43 25 29  3d 43 25 80 37 20 84 20  |pal%(C%)=C%.7 . |
000073b0  28 43 25 80 36 34 29 3c  3c 32 20 84 20 28 43 25  |(C%.64)<<2 . (C%|
000073c0  80 26 33 38 29 3c 3c 31  33 0d 26 48 53 67 70 61  |.&38)<<13.&HSgpa|
000073d0  6c 25 28 43 25 29 3d 28  43 25 80 34 29 3c 3c 31  |l%(C%)=(C%.4)<<1|
000073e0  84 43 25 80 31 36 20 84  20 28 28 43 25 80 33 29  |.C%.16 . ((C%.3)|
000073f0  3c 3c 31 84 28 43 25 80  26 36 30 29 3e 3e 32 29  |<<1.(C%.&60)>>2)|
00007400  3c 3c 38 20 84 20 28 43  25 80 38 84 28 43 25 80  |<<8 . (C%.8.(C%.|
00007410  31 32 38 29 3e 3e 33 29  3c 3c 31 36 0d 26 52 05  |128)>>3)<<16.&R.|
00007420  ed 0d 26 5c 31 e3 43 25  3d 30 b8 33 31 3a 72 25  |..&\1.C%=0.31:r%|
00007430  28 43 25 29 3d 43 25 2f  33 31 2a 46 3a ed 3a 67  |(C%)=C%/31*F:.:g|
00007440  25 28 29 3d 72 25 28 29  3a 62 25 28 29 3d 72 25  |%()=r%():b%()=r%|
00007450  28 29 0d 26 66 2a 70 62  75 66 66 25 3d a4 64 69  |().&f*pbuff%=.di|
00007460  6d 28 73 78 25 29 3a e7  73 63 61 6c 65 25 20 79  |m(sx%):.scale% y|
00007470  6d 75 6c 25 3d 79 6d 75  6c 25 2a 32 0d 26 70 47  |mul%=ymul%*2.&pG|
00007480  69 6e 66 6f 24 3d 22 41  72 56 69 73 20 69 6d 61  |info$="ArVis ima|
00007490  67 65 2c 20 22 2b c3 73  78 25 2b 22 20 62 79 20  |ge, "+.sx%+" by |
000074a0  22 2b c3 73 79 25 2b 22  20 70 69 78 65 6c 73 2c  |"+.sy%+" pixels,|
000074b0  20 31 35 20 62 69 74 73  20 70 65 72 20 70 69 78  | 15 bits per pix|
000074c0  65 6c 22 0d 26 7a 09 c9  20 34 30 30 0d 26 84 45  |el".&z.. 400.&.E|
000074d0  71 75 61 6e 74 25 3d 38  3a cf 23 63 25 3d 30 3a  |quant%=8:.#c%=0:|
000074e0  73 78 25 3d a4 62 65 48  57 3a 73 79 25 3d a4 62  |sx%=.beHW:sy%=.b|
000074f0  65 48 57 3a 58 25 3d a4  62 65 48 57 3a 73 74 25  |eHW:X%=.beHW:st%|
00007500  3d 8f 23 63 25 2b 58 25  3a cf 23 63 25 3d 73 74  |=.#c%+X%:.#c%=st|
00007510  25 0d 26 8e 56 70 6c 62  75 66 66 25 3d a4 64 69  |%.&.Vplbuff%=.di|
00007520  6d 28 73 78 25 2a 33 29  3a 70 6c 62 79 74 65 73  |m(sx%*3):plbytes|
00007530  25 3d 73 78 25 2a 33 3a  72 62 25 3d 70 6c 62 75  |%=sx%*3:rb%=plbu|
00007540  66 66 25 3a 67 62 25 3d  70 6c 62 75 66 66 25 2b  |ff%:gb%=plbuff%+|
00007550  31 3a 62 62 25 3d 70 6c  62 75 66 66 25 2b 32 3a  |1:bb%=plbuff%+2:|
00007560  72 62 6f 25 3d 2d 31 0d  26 98 3a f2 6e 6f 70 61  |rbo%=-1.&.:.nopa|
00007570  6c 3a 69 6e 70 75 74 3d  32 34 3a 72 65 70 25 3d  |l:input=24:rep%=|
00007580  30 3a 63 61 63 68 65 62  79 74 65 73 25 3d b9 3a  |0:cachebytes%=.:|
00007590  63 61 63 68 65 25 3d b9  3a 73 74 65 70 32 34 3d  |cache%=.:step24=|
000075a0  33 0d 26 a2 5e 69 6e 66  6f 24 3d 22 52 54 20 69  |3.&.^info$="RT i|
000075b0  6d 61 67 65 2e 20 72 75  6e 20 6c 65 6e 67 74 68  |mage. run length|
000075c0  20 65 6e 63 6f 64 65 64  20 69 6d 61 67 65 2c 20  | encoded image, |
000075d0  22 2b c3 73 78 25 2b 22  20 62 79 20 22 2b c3 73  |"+.sx%+" by "+.s|
000075e0  79 25 2b 22 20 70 69 78  65 6c 73 2c 20 32 34 20  |y%+" pixels, 24 |
000075f0  62 69 74 73 20 70 65 72  20 70 69 78 65 6c 22 0d  |bits per pixel".|
00007600  26 ac 09 c9 20 35 30 30  0d 26 b6 2c 63 6f 6d 70  |&... 500.&.,comp|
00007610  72 65 73 73 69 6f 6e 3d  35 3a cf 23 63 25 3d 36  |ression=5:.#c%=6|
00007620  3a 47 49 46 73 78 3d a4  48 57 3a 47 49 46 73 79  |:GIFsx=.HW:GIFsy|
00007630  3d a4 48 57 0d 26 c0 38  47 49 46 3d 9a 23 63 25  |=.HW.&.8GIF=.#c%|
00007640  3a 47 49 46 62 61 63 6b  3d 9a 23 63 25 3a 47 49  |:GIFback=.#c%:GI|
00007650  46 65 78 74 3d 9a 23 63  25 3a 71 75 61 6e 74 25  |Fext=.#c%:quant%|
00007660  3d 28 47 49 46 20 80 20  37 29 2b 31 0d 26 ca 10  |=(GIF . 7)+1.&..|
00007670  e7 47 49 46 20 80 20 26  38 30 20 8c 0d 26 d4 17  |.GIF . &80 ..&..|
00007680  e3 43 25 3d 30 b8 28 31  3c 3c 71 75 61 6e 74 25  |.C%=0.(1<<quant%|
00007690  29 2d 31 0d 26 de 39 72  25 28 43 25 29 3d 9a 23  |)-1.&.9r%(C%)=.#|
000076a0  63 25 2f 32 35 35 2a 46  3a 67 25 28 43 25 29 3d  |c%/255*F:g%(C%)=|
000076b0  9a 23 63 25 2f 32 35 35  2a 46 3a 62 25 28 43 25  |.#c%/255*F:b%(C%|
000076c0  29 3d 9a 23 63 25 2f 32  35 35 2a 46 0d 26 e8 05  |)=.#c%/255*F.&..|
000076d0  ed 0d 26 f2 05 cd 0d 26  fc 3e 49 25 3d 9a 23 63  |..&....&.>I%=.#c|
000076e0  25 3a e7 49 25 3c 3e 97  22 2c 22 20 85 20 34 32  |%:.I%<>."," . 42|
000076f0  2c 22 47 49 46 20 66 69  6c 65 20 77 69 74 68 6f  |,"GIF file witho|
00007700  75 74 20 2c 20 69 6e 20  72 69 67 68 74 20 70 6c  |ut , in right pl|
00007710  61 63 65 22 0d 27 06 2c  47 49 46 6c 65 66 74 3d  |ace".'.,GIFleft=|
00007720  a4 48 57 3a 47 49 46 72  69 67 68 74 3d a4 48 57  |.HW:GIFright=.HW|
00007730  3a 73 78 25 3d a4 48 57  3a 73 79 25 3d a4 48 57  |:sx%=.HW:sy%=.HW|
00007740  0d 27 10 1c e7 47 49 46  73 78 3c 73 78 25 20 84  |.'...GIFsx<sx% .|
00007750  20 47 49 46 73 79 3c 73  79 25 20 8c 0d 27 1a 0c  | GIFsy<sy% ..'..|
00007760  e7 69 6e 66 6f 25 20 8c  0d 27 24 29 f1 22 47 49  |.info% ..'$)."GI|
00007770  46 20 66 69 6c 65 20 77  69 74 68 20 62 69 67 67  |F file with bigg|
00007780  65 72 20 69 6d 61 67 65  20 69 6e 73 69 64 65 3a  |er image inside:|
00007790  22 0d 27 2e 3b f1 22 53  63 72 65 65 6e 20 22 3b  |".'.;."Screen ";|
000077a0  47 49 46 73 78 22 78 20  62 79 20 22 47 49 46 73  |GIFsx"x by "GIFs|
000077b0  79 22 79 3b 20 69 6d 61  67 65 20 22 73 78 25 22  |y"y; image "sx%"|
000077c0  78 20 62 79 20 22 73 79  25 22 79 22 0d 27 38 2f  |x by "sy%"y".'8/|
000077d0  e8 22 43 6f 6e 74 69 6e  75 65 20 77 69 74 68 20  |."Continue with |
000077e0  6d 6f 6e 69 74 6f 72 27  73 20 73 69 7a 65 20 5b  |monitor's size [|
000077f0  59 20 6f 72 20 79 5d 3f  22 41 24 0d 27 42 26 e7  |Y or y]?"A$.'B&.|
00007800  41 24 3d 22 59 22 84 41  24 3d 22 79 22 20 73 78  |A$="Y".A$="y" sx|
00007810  25 3d 47 49 46 73 78 3a  73 79 25 3d 47 49 46 73  |%=GIFsx:sy%=GIFs|
00007820  79 0d 27 4c 28 f1 22 43  6f 6e 74 69 6e 75 69 6e  |y.'L(."Continuin|
00007830  67 20 77 69 74 68 20 22  3b 73 78 25 22 78 20 62  |g with ";sx%"x b|
00007840  79 20 22 73 79 25 22 79  22 0d 27 56 05 cd 0d 27  |y "sy%"y".'V...'|
00007850  60 05 cd 0d 27 6a 29 47  49 46 3d 9a 23 63 25 3a  |`...'j)GIF=.#c%:|
00007860  e7 47 49 46 20 80 20 26  34 30 20 66 6c 61 67 3d  |.GIF . &40 flag=|
00007870  35 30 31 3a 72 24 3d 22  46 4e 38 22 0d 27 74 4a  |501:r$="FN8".'tJ|
00007880  73 65 74 63 6f 64 65 73  25 3d 9a 23 63 25 3a 63  |setcodes%=.#c%:c|
00007890  6c 65 61 72 63 6f 64 65  25 3d 31 3c 3c 73 65 74  |learcode%=1<<set|
000078a0  63 6f 64 65 73 25 3a 73  74 25 3d 8f 23 63 25 3a  |codes%:st%=.#c%:|
000078b0  63 61 63 68 65 25 3d b9  3a 63 61 63 68 65 62 79  |cache%=.:cacheby|
000078c0  74 65 73 25 3d b9 0d 27  7e 45 de 20 74 61 62 6c  |tes%=..'~E. tabl|
000078d0  65 25 28 31 3c 3c 31 32  29 3a 73 74 6b 25 3d a4  |e%(1<<12):stk%=.|
000078e0  64 69 6d 28 31 3c 3c 31  33 29 3a 62 75 66 25 3d  |dim(1<<13):buf%=|
000078f0  a4 64 69 6d 28 32 38 30  29 3a 70 6c 62 75 66 66  |.dim(280):plbuff|
00007900  25 3d a4 64 69 6d 28 73  78 25 29 0d 27 88 26 e3  |%=.dim(sx%).'.&.|
00007910  49 25 3d 30 b8 63 6c 65  61 72 63 6f 64 65 25 2d  |I%=0.clearcode%-|
00007920  31 3a 74 61 62 6c 65 25  28 49 25 29 3d 49 25 3a  |1:table%(I%)=I%:|
00007930  ed 0d 27 92 41 69 6e 66  6f 24 3d 22 47 49 46 20  |..'.Ainfo$="GIF |
00007940  66 69 6c 65 2c 20 22 2b  c3 73 78 25 2b 22 20 62  |file, "+.sx%+" b|
00007950  79 20 22 2b c3 73 79 25  2b 22 20 70 69 78 65 6c  |y "+.sy%+" pixel|
00007960  73 2c 20 22 2b a4 62 69  74 73 28 71 75 61 6e 74  |s, "+.bits(quant|
00007970  25 29 0d 27 9c 09 c9 20  36 30 30 0d 27 a6 1f 71  |%).'... 600.'..q|
00007980  75 61 6e 74 25 3d 38 3a  cf 23 63 25 3d 26 35 63  |uant%=8:.#c%=&5c|
00007990  3a e3 43 25 3d 30 b8 32  35 35 0d 27 b0 39 72 25  |:.C%=0.255.'.9r%|
000079a0  28 43 25 29 3d 9a 23 63  25 2f 32 35 35 2a 46 3a  |(C%)=.#c%/255*F:|
000079b0  67 25 28 43 25 29 3d 9a  23 63 25 2f 32 35 35 2a  |g%(C%)=.#c%/255*|
000079c0  46 3a 62 25 28 43 25 29  3d 9a 23 63 25 2f 32 35  |F:b%(C%)=.#c%/25|
000079d0  35 2a 46 0d 27 ba 05 ed  0d 27 c4 1d cf 23 63 25  |5*F.'....'...#c%|
000079e0  3d 26 33 36 65 3a 73 79  25 3d a4 48 57 3a 73 78  |=&36e:sy%=.HW:sx|
000079f0  25 3d a4 48 57 0d 27 ce  35 73 74 25 3d 26 33 38  |%=.HW.'.5st%=&38|
00007a00  30 3a cf 23 63 25 3d 73  74 25 3a 72 6f 77 62 79  |0:.#c%=st%:rowby|
00007a10  74 65 73 25 3d 73 78 25  3a 72 24 3d 22 46 4e 38  |tes%=sx%:r$="FN8|
00007a20  22 3a 63 61 63 68 65 25  3d b9 0d 27 d8 45 69 6e  |":cache%=..'.Ein|
00007a30  66 6f 24 3d 22 2e 50 49  43 20 69 6d 61 67 65 2c  |fo$=".PIC image,|
00007a40  20 22 2b c3 73 78 25 2b  22 20 62 79 20 22 2b c3  | "+.sx%+" by "+.|
00007a50  73 79 25 2b 22 20 70 69  78 65 6c 73 2c 20 38 20  |sy%+" pixels, 8 |
00007a60  62 69 74 73 20 70 65 72  20 70 69 78 65 6c 22 0d  |bits per pixel".|
00007a70  27 e2 09 c9 20 37 30 30  0d 27 ec 24 71 75 61 6e  |'... 700.'.$quan|
00007a80  74 25 3d 38 3a cf 23 63  25 3d 30 3a 61 24 3d be  |t%=8:.#c%=0:a$=.|
00007a90  23 63 25 3a 73 74 25 3d  8f 23 63 25 0d 27 f6 20  |#c%:st%=.#c%.'. |
00007aa0  73 78 25 3d bb 61 24 3a  73 79 25 3d bb 28 c1 61  |sx%=.a$:sy%=.(.a|
00007ab0  24 2c a7 61 24 2c 22 20  22 29 29 29 0d 28 00 36  |$,.a$," "))).(.6|
00007ac0  f2 6e 6f 70 61 6c 3a 69  6e 70 75 74 3d 32 34 3a  |.nopal:input=24:|
00007ad0  73 74 65 70 32 34 3d 33  3a 72 6f 77 62 79 74 65  |step24=3:rowbyte|
00007ae0  73 25 3d 73 78 25 2a 33  3a 72 24 3d 22 46 4e 32  |s%=sx%*3:r$="FN2|
00007af0  34 22 0d 28 0a 21 72 62  6f 25 3d 30 3a 67 62 6f  |4".(.!rbo%=0:gbo|
00007b00  25 3d 31 3a 62 62 6f 25  3d 32 3a 63 61 63 68 65  |%=1:bbo%=2:cache|
00007b10  25 3d b9 0d 28 14 4a 69  6e 66 6f 24 3d 22 4d 54  |%=..(.Jinfo$="MT|
00007b20  56 20 2e 70 69 63 20 69  6d 61 67 65 2c 20 22 2b  |V .pic image, "+|
00007b30  c3 73 78 25 2b 22 20 62  79 20 22 2b c3 73 79 25  |.sx%+" by "+.sy%|
00007b40  2b 22 20 70 69 78 65 6c  73 2c 20 32 34 20 62 69  |+" pixels, 24 bi|
00007b50  74 73 20 70 65 72 20 70  69 78 65 6c 22 0d 28 1e  |ts per pixel".(.|
00007b60  09 c9 20 38 30 30 0d 28  28 29 73 78 25 3d 35 31  |.. 800.(()sx%=51|
00007b70  32 3a 73 79 25 3d 32 35  36 3a e7 73 63 61 6c 65  |2:sy%=256:.scale|
00007b80  25 20 79 6d 75 6c 25 3d  79 6d 75 6c 25 2a 32 0d  |% ymul%=ymul%*2.|
00007b90  28 32 34 70 6c 62 75 66  66 25 3d a4 64 69 6d 28  |(24plbuff%=.dim(|
00007ba0  73 78 25 29 3a 72 65 70  25 3d 30 3a 77 74 25 3d  |sx%):rep%=0:wt%=|
00007bb0  30 3a 77 74 73 78 25 3d  70 6c 62 75 66 66 25 2b  |0:wtsx%=plbuff%+|
00007bc0  73 78 25 0d 28 3c 1a 63  61 63 68 65 25 3d b9 3a  |sx%.(<.cache%=.:|
00007bd0  63 61 63 68 65 62 79 74  65 73 25 3d b9 0d 28 46  |cachebytes%=..(F|
00007be0  40 e3 43 25 3d 30 b8 32  35 35 3a 72 25 28 43 25  |@.C%=0.255:r%(C%|
00007bf0  29 3d 28 43 25 80 36 33  29 2f 36 33 2a 46 3a ed  |)=(C%.63)/63*F:.|
00007c00  3a 67 25 28 29 3d 72 25  28 29 3a 62 25 28 29 3d  |:g%()=r%():b%()=|
00007c10  72 25 28 29 3a 71 75 61  6e 74 25 3d 36 0d 28 50  |r%():quant%=6.(P|
00007c20  4a 69 6e 66 6f 24 3d 22  57 61 74 66 6f 72 64 20  |Jinfo$="Watford |
00007c30  64 69 67 69 74 69 73 65  72 20 70 69 63 74 75 72  |digitiser pictur|
00007c40  65 2c 20 35 31 32 20 62  79 20 32 35 36 20 70 69  |e, 512 by 256 pi|
00007c50  78 65 6c 73 2c 20 36 20  62 69 74 73 20 70 65 72  |xels, 6 bits per|
00007c60  20 70 69 78 65 6c 22 0d  28 5a 09 c9 20 38 30 31  | pixel".(Z.. 801|
00007c70  0d 28 64 3b 73 78 25 3d  35 31 32 3a 73 79 25 3d  |.(d;sx%=512:sy%=|
00007c80  32 35 36 3a 69 6e 70 75  74 3d 32 34 3a 71 75 61  |256:input=24:qua|
00007c90  6e 74 25 3d 36 3a e7 73  63 61 6c 65 25 20 79 6d  |nt%=6:.scale% ym|
00007ca0  75 6c 25 3d 79 6d 75 6c  25 2a 32 0d 28 6e 30 72  |ul%=ymul%*2.(n0r|
00007cb0  65 70 31 25 3d 30 3a 77  74 31 25 3d 30 3a 72 65  |ep1%=0:wt1%=0:re|
00007cc0  70 32 25 3d 30 3a 77 74  32 25 3d 30 3a 72 65 70  |p2%=0:wt2%=0:rep|
00007cd0  33 25 3d 30 3a 77 74 33  25 3d 30 0d 28 78 3d 62  |3%=0:wt3%=0.(x=b|
00007ce0  75 66 66 25 3d a4 64 69  6d 28 73 78 25 2a 33 29  |uff%=.dim(sx%*3)|
00007cf0  3a 72 62 25 3d 62 75 66  66 25 3a 67 62 25 3d 62  |:rb%=buff%:gb%=b|
00007d00  75 66 66 25 2b 73 78 25  3a 62 62 25 3d 62 75 66  |uff%+sx%:bb%=buf|
00007d10  66 25 2b 32 2a 73 78 25  0d 28 82 3a 77 74 73 78  |f%+2*sx%.(.:wtsx|
00007d20  31 25 3d 62 75 66 66 25  2b 73 78 25 3a 77 74 73  |1%=buff%+sx%:wts|
00007d30  78 32 25 3d 62 75 66 66  25 2b 32 2a 73 78 25 3a  |x2%=buff%+2*sx%:|
00007d40  77 74 73 78 33 25 3d 62  75 66 66 25 2b 33 2a 73  |wtsx3%=buff%+3*s|
00007d50  78 25 0d 28 8c 37 e3 43  25 3d 30 b8 32 35 35 3a  |x%.(.7.C%=0.255:|
00007d60  72 25 28 43 25 29 3d 28  43 25 80 36 33 29 2f 36  |r%(C%)=(C%.63)/6|
00007d70  33 2a 46 3a ed 3a 67 25  28 29 3d 72 25 28 29 3a  |3*F:.:g%()=r%():|
00007d80  62 25 28 29 3d 72 25 28  29 0d 28 96 52 69 6e 66  |b%()=r%().(.Rinf|
00007d90  6f 24 3d 22 54 72 69 70  6c 65 20 57 61 74 66 6f  |o$="Triple Watfo|
00007da0  72 64 20 64 69 67 69 74  69 73 65 72 20 70 69 63  |rd digitiser pic|
00007db0  74 75 72 65 2c 20 35 31  32 20 62 79 20 32 35 36  |ture, 512 by 256|
00007dc0  20 70 69 78 65 6c 73 2c  20 31 38 20 62 69 74 73  | pixels, 18 bits|
00007dd0  20 70 65 72 20 70 69 78  65 6c 22 0d 28 a0 09 c9  | per pixel".(...|
00007de0  20 39 30 30 0d 28 aa 27  71 75 61 6e 74 25 3d 38  | 900.(.'quant%=8|
00007df0  3a 73 74 25 3d 30 3a cf  23 63 25 3d 30 3a e7 a2  |:st%=0:.#c%=0:..|
00007e00  23 63 25 3d 36 35 35 33  36 20 8c 0d 28 b4 37 73  |#c%=65536 ..(.7s|
00007e10  78 25 3d 32 35 36 3a 73  79 25 3d 32 35 36 3a e7  |x%=256:sy%=256:.|
00007e20  73 63 61 6c 65 25 20 79  6d 75 6c 25 3d 79 6d 75  |scale% ymul%=ymu|
00007e30  6c 25 2a 32 3a 78 6d 75  6c 25 3d 78 6d 75 6c 25  |l%*2:xmul%=xmul%|
00007e40  2a 32 0d 28 be 05 cc 0d  28 c8 13 73 78 25 3d 35  |*2.(....(..sx%=5|
00007e50  31 32 3a 73 79 25 3d 35  31 32 0d 28 d2 05 cd 0d  |12:sy%=512.(....|
00007e60  28 dc 53 e3 43 25 3d 30  b8 32 35 35 3a 72 25 28  |(.S.C%=0.255:r%(|
00007e70  43 25 29 3d 43 25 2f 32  35 35 2a 46 3a ed 3a 67  |C%)=C%/255*F:.:g|
00007e80  25 28 29 3d 72 25 28 29  3a 62 25 28 29 3d 72 25  |%()=r%():b%()=r%|
00007e90  28 29 3a 72 6f 77 62 79  74 65 73 25 3d 73 78 25  |():rowbytes%=sx%|
00007ea0  3a 72 24 3d 22 46 4e 38  22 3a 63 61 63 68 65 25  |:r$="FN8":cache%|
00007eb0  3d b9 0d 28 e6 3f 69 6e  66 6f 24 3d 22 41 49 4d  |=..(.?info$="AIM|
00007ec0  20 2e 72 61 77 20 69 6d  61 67 65 2c 20 32 35 36  | .raw image, 256|
00007ed0  20 62 79 20 32 35 36 20  70 69 78 65 6c 73 2c 20  | by 256 pixels, |
00007ee0  38 20 62 69 74 73 20 70  65 72 20 70 69 78 65 6c  |8 bits per pixel|
00007ef0  22 0d 28 f0 09 c9 20 39  30 31 0d 28 fa 1a 71 75  |".(... 901.(..qu|
00007f00  61 6e 74 25 3d 34 3a e7  a2 23 63 25 3d 36 35 35  |ant%=4:..#c%=655|
00007f10  33 36 20 8c 0d 29 04 37  73 78 25 3d 32 35 36 3a  |36 ..).7sx%=256:|
00007f20  73 79 25 3d 32 35 36 3a  e7 73 63 61 6c 65 25 20  |sy%=256:.scale% |
00007f30  79 6d 75 6c 25 3d 79 6d  75 6c 25 2a 32 3a 78 6d  |ymul%=ymul%*2:xm|
00007f40  75 6c 25 3d 78 6d 75 6c  25 2a 32 0d 29 0e 05 cc  |ul%=xmul%*2.)...|
00007f50  0d 29 18 13 73 78 25 3d  35 31 32 3a 73 79 25 3d  |.)..sx%=512:sy%=|
00007f60  35 31 32 0d 29 22 05 cd  0d 29 2c 3d 62 75 66 66  |512.)"...),=buff|
00007f70  25 3d a4 64 69 6d 28 73  78 25 2a 33 29 3a 72 62  |%=.dim(sx%*3):rb|
00007f80  25 3d 62 75 66 66 25 3a  67 62 25 3d 62 75 66 66  |%=buff%:gb%=buff|
00007f90  25 2b 73 78 25 3a 62 62  25 3d 62 75 66 66 25 2b  |%+sx%:bb%=buff%+|
00007fa0  73 78 25 2a 32 0d 29 36  33 e3 43 25 3d 30 b8 32  |sx%*2.)63.C%=0.2|
00007fb0  35 35 3a 72 25 28 43 25  29 3d 43 25 2f 32 35 35  |55:r%(C%)=C%/255|
00007fc0  2a 46 3a ed 3a 67 25 28  29 3d 72 25 28 29 3a 62  |*F:.:g%()=r%():b|
00007fd0  25 28 29 3d 72 25 28 29  0d 29 40 4f 69 6e 70 75  |%()=r%().)@Oinpu|
00007fe0  74 3d 32 34 3a 69 6e 66  6f 24 3d 22 48 61 77 6b  |t=24:info$="Hawk|
00007ff0  20 56 39 20 54 72 69 70  6c 65 20 69 6d 61 67 65  | V9 Triple image|
00008000  2c 20 32 35 36 20 62 79  20 32 35 36 20 70 69 78  |, 256 by 256 pix|
00008010  65 6c 73 2c 20 32 34 20  62 69 74 73 20 70 65 72  |els, 24 bits per|
00008020  20 70 69 78 65 6c 22 0d  29 4a 09 c9 20 39 30 32  | pixel".)J.. 902|
00008030  0d 29 54 42 71 75 61 6e  74 25 3d 34 3a cf 23 63  |.)TBquant%=4:.#c|
00008040  25 3d 38 3a 73 78 25 3d  a4 57 3a 72 6f 77 62 79  |%=8:sx%=.W:rowby|
00008050  74 65 73 25 3d 73 78 25  2a 33 2f 32 3a 73 79 25  |tes%=sx%*3/2:sy%|
00008060  3d a4 57 3a 73 74 25 3d  32 30 3a cf 23 63 25 3d  |=.W:st%=20:.#c%=|
00008070  32 30 0d 29 5e 19 e7 73  63 61 6c 65 25 20 79 6d  |20.)^..scale% ym|
00008080  75 6c 25 3d 79 6d 75 6c  25 2a 32 0d 29 68 4d 70  |ul%=ymul%*2.)hMp|
00008090  6c 62 75 66 66 25 3d a4  64 69 6d 28 73 78 25 2a  |lbuff%=.dim(sx%*|
000080a0  33 29 3a 72 62 25 3d 70  6c 62 75 66 66 25 3a 67  |3):rb%=plbuff%:g|
000080b0  62 25 3d 70 6c 62 75 66  66 25 2b 73 78 25 3a 62  |b%=plbuff%+sx%:b|
000080c0  62 25 3d 70 6c 62 75 66  66 25 2b 73 78 25 2a 32  |b%=plbuff%+sx%*2|
000080d0  3a 72 62 6f 25 3d 2d 31  0d 29 72 40 e3 43 25 3d  |:rbo%=-1.)r@.C%=|
000080e0  30 b8 32 35 35 3a 72 25  28 43 25 29 3d 28 43 25  |0.255:r%(C%)=(C%|
000080f0  80 26 46 29 2f 26 46 2a  46 3a ed 3a 67 25 28 29  |.&F)/&F*F:.:g%()|
00008100  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 3a  |=r%():b%()=r%():|
00008110  63 61 63 68 65 25 3d b9  0d 29 7c 62 69 6e 70 75  |cache%=..)|binpu|
00008120  74 3d 32 34 3a 69 6e 66  6f 24 3d 22 48 61 77 6b  |t=24:info$="Hawk|
00008130  20 56 39 2f 53 6e 61 70  73 68 6f 74 20 43 6f 6c  | V9/Snapshot Col|
00008140  6f 75 72 20 69 6d 61 67  65 2c 20 22 2b c3 73 78  |our image, "+.sx|
00008150  25 2b 22 20 62 79 20 22  2b c3 73 79 25 2b 22 20  |%+" by "+.sy%+" |
00008160  70 69 78 65 6c 73 2c 20  31 32 20 62 69 74 73 20  |pixels, 12 bits |
00008170  70 65 72 20 70 69 78 65  6c 22 0d 29 86 09 c9 20  |per pixel".)... |
00008180  39 30 33 0d 29 90 5c 71  75 61 6e 74 25 3d 35 3a  |903.).\quant%=5:|
00008190  cf 23 63 25 3d 38 3a 73  78 25 3d a4 57 3a 72 6f  |.#c%=8:sx%=.W:ro|
000081a0  77 62 79 74 65 73 25 3d  73 78 25 2a 32 3a 73 79  |wbytes%=sx%*2:sy|
000081b0  25 3d a4 57 3a 73 74 25  3d 32 30 3a cf 23 63 25  |%=.W:st%=20:.#c%|
000081c0  3d 32 30 3a 63 61 63 68  65 25 3d b9 3a 72 24 3d  |=20:cache%=.:r$=|
000081d0  22 46 4e 31 36 22 3a 66  6c 61 67 3d 37 30 30 0d  |"FN16":flag=700.|
000081e0  29 9a 2d de 20 72 70 61  6c 25 28 32 35 35 29 2c  |).-. rpal%(255),|
000081f0  67 70 61 6c 25 28 32 35  35 29 3a 69 6e 70 75 74  |gpal%(255):input|
00008200  3d 31 36 3a 73 74 65 70  32 34 3d 32 0d 29 a4 0d  |=16:step24=2.)..|
00008210  e3 43 25 3d 30 b8 32 35  35 0d 29 ae 22 67 70 61  |.C%=0.255.)."gpa|
00008220  6c 25 28 43 25 29 3d 28  43 25 3e 3e 35 29 3c 3c  |l%(C%)=(C%>>5)<<|
00008230  38 20 84 20 28 43 25 80  33 31 29 0d 29 b8 2b 72  |8 . (C%.31).).+r|
00008240  70 61 6c 25 28 43 25 29  3d 28 28 43 25 3e 3e 32  |pal%(C%)=((C%>>2|
00008250  29 80 33 31 29 3c 3c 31  36 20 84 20 28 43 25 80  |).31)<<16 . (C%.|
00008260  33 29 3c 3c 31 31 0d 29  c2 05 ed 0d 29 cc 31 e3  |3)<<11.)....).1.|
00008270  43 25 3d 30 b8 33 31 3a  72 25 28 43 25 29 3d 43  |C%=0.31:r%(C%)=C|
00008280  25 2f 33 31 2a 46 3a ed  3a 67 25 28 29 3d 72 25  |%/31*F:.:g%()=r%|
00008290  28 29 3a 62 25 28 29 3d  72 25 28 29 0d 29 d6 5f  |():b%()=r%().)._|
000082a0  69 6e 70 75 74 3d 31 36  3a 69 6e 66 6f 24 3d 22  |input=16:info$="|
000082b0  48 61 77 6b 20 56 39 20  6d 6b 20 49 49 20 43 6f  |Hawk V9 mk II Co|
000082c0  6c 6f 75 72 20 69 6d 61  67 65 2c 20 22 2b c3 73  |lour image, "+.s|
000082d0  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
000082e0  20 70 69 78 65 6c 73 2c  20 31 36 20 62 69 74 73  | pixels, 16 bits|
000082f0  20 70 65 72 20 70 69 78  65 6c 22 0d 29 e0 09 c9  | per pixel".)...|
00008300  20 39 35 30 0d 29 ea 40  71 75 61 6e 74 25 3d 38  | 950.).@quant%=8|
00008310  3a cf 23 63 25 3d 30 3a  73 78 25 3d 35 31 32 3a  |:.#c%=0:sx%=512:|
00008320  72 6f 77 62 79 74 65 73  25 3d 35 31 32 3a 73 79  |rowbytes%=512:sy|
00008330  25 3d 35 31 32 3a 73 74  25 3d 30 3a 66 6c 61 67  |%=512:st%=0:flag|
00008340  3d 39 30 30 0d 29 f4 45  e3 43 25 3d 30 b8 32 35  |=900.).E.C%=0.25|
00008350  35 3a 72 25 28 43 25 29  3d 43 25 2f 32 35 35 2a  |5:r%(C%)=C%/255*|
00008360  46 3a ed 3a 67 25 28 29  3d 72 25 28 29 3a 62 25  |F:.:g%()=r%():b%|
00008370  28 29 3d 72 25 28 29 3a  72 24 3d 22 46 4e 38 22  |()=r%():r$="FN8"|
00008380  3a 63 61 63 68 65 25 3d  b9 0d 29 fe 46 69 6e 66  |:cache%=..).Finf|
00008390  6f 24 3d 22 57 69 6c 64  20 56 69 73 69 6f 6e 20  |o$="Wild Vision |
000083a0  56 31 32 20 69 6d 61 67  65 2c 20 35 31 32 20 62  |V12 image, 512 b|
000083b0  79 20 35 31 32 20 70 69  78 65 6c 73 2c 20 38 20  |y 512 pixels, 8 |
000083c0  62 69 74 73 20 70 65 72  20 70 69 78 65 6c 22 0d  |bits per pixel".|
000083d0  2a 08 0a c9 20 31 30 30  30 0d 2a 12 54 71 75 61  |*... 1000.*.Tqua|
000083e0  6e 74 25 3d 34 3a 73 78  25 3d 36 34 30 3a 73 79  |nt%=4:sx%=640:sy|
000083f0  25 3d 32 35 36 3a f2 64  65 66 70 61 6c 3a 73 74  |%=256:.defpal:st|
00008400  25 3d a4 57 3a 72 24 3d  22 46 4e 22 2b c3 28 31  |%=.W:r$="FN"+.(1|
00008410  30 30 30 2b a4 57 29 3a  e7 73 63 61 6c 65 25 20  |000+.W):.scale% |
00008420  79 6d 75 6c 25 3d 79 6d  75 6c 25 2a 32 0d 2a 26  |ymul%=ymul%*2.*&|
00008430  25 62 75 66 66 25 3d a4  64 69 6d 28 73 78 25 29  |%buff%=.dim(sx%)|
00008440  3a 63 74 61 62 6c 65 25  3d a4 64 69 6d 28 73 74  |:ctable%=.dim(st|
00008450  25 29 0d 2a 30 22 c8 99  31 32 2c 34 2c 63 25 2c  |%).*0"..12,4,c%,|
00008460  63 74 61 62 6c 65 25 2c  73 74 25 3a 73 74 25 3d  |ctable%,st%:st%=|
00008470  8f 23 63 25 0d 2a 3a 2e  70 61 25 3d 63 74 61 62  |.#c%.*:.pa%=ctab|
00008480  6c 65 25 3a 72 65 70 25  3d 30 3a 72 65 70 32 25  |le%:rep%=0:rep2%|
00008490  3d 30 3a 70 61 73 78 25  3d 62 75 66 66 25 2b 73  |=0:pasx%=buff%+s|
000084a0  78 25 0d 2a 44 41 69 6e  66 6f 24 3d 22 50 72 6f  |x%.*DAinfo$="Pro|
000084b0  41 72 74 69 73 61 6e 20  69 6d 61 67 65 2c 20 36  |Artisan image, 6|
000084c0  34 30 20 62 79 20 32 35  36 20 70 69 78 65 6c 73  |40 by 256 pixels|
000084d0  2c 20 38 20 62 69 74 73  20 70 65 72 20 70 69 78  |, 8 bits per pix|
000084e0  65 6c 22 0d 2a 4e 0a c9  20 31 31 30 30 0d 2a 58  |el".*N.. 1100.*X|
000084f0  40 71 75 61 6e 74 25 3d  31 3a cf 23 63 25 3d 34  |@quant%=1:.#c%=4|
00008500  3a 73 78 25 3d a4 62 65  57 3a 73 79 25 3d a4 62  |:sx%=.beW:sy%=.b|
00008510  65 57 3a 69 6e 70 75 74  3d a4 62 65 57 3a 62 69  |eW:input=.beW:bi|
00008520  67 65 6e 64 69 61 6e 62  69 74 73 3d b9 0d 2a 62  |gendianbits=..*b|
00008530  13 53 25 3d a4 62 65 57  3a 53 25 3d a4 62 65 57  |.S%=.beW:S%=.beW|
00008540  0d 2a 6c 49 63 61 63 68  65 25 3d b9 3a e7 53 25  |.*lIcache%=.:.S%|
00008550  3d 32 20 63 61 63 68 65  62 79 74 65 73 25 3d b9  |=2 cachebytes%=.|
00008560  3a 69 6e 66 6f 24 3d 22  42 79 74 65 20 45 6e 63  |:info$="Byte Enc|
00008570  6f 64 65 64 20 22 20 8b  69 6e 66 6f 24 3d 22 22  |oded " .info$=""|
00008580  3a 72 24 3d 22 46 4e 38  22 0d 2a 76 0b 43 25 3d  |:r$="FN8".*v.C%=|
00008590  a4 62 65 57 0d 2a 80 0b  44 25 3d a4 62 65 57 0d  |.beW.*..D%=.beW.|
000085a0  2a 8a 0b c8 8e 20 43 25  20 ca 0d 2a 94 09 c9 20  |*.... C% ..*... |
000085b0  31 2c 32 0d 2a 9e 24 e3  49 25 3d 30 b8 44 25 2f  |1,2.*.$.I%=0.D%/|
000085c0  33 2d 31 3a 72 25 28 49  25 29 3d 9a 23 63 25 2f  |3-1:r%(I%)=.#c%/|
000085d0  32 35 35 2a 46 3a ed 0d  2a a8 24 e3 49 25 3d 30  |255*F:..*.$.I%=0|
000085e0  b8 44 25 2f 33 2d 31 3a  67 25 28 49 25 29 3d 9a  |.D%/3-1:g%(I%)=.|
000085f0  23 63 25 2f 32 35 35 2a  46 3a ed 0d 2a b2 24 e3  |#c%/255*F:..*.$.|
00008600  49 25 3d 30 b8 44 25 2f  33 2d 31 3a 62 25 28 49  |I%=0.D%/3-1:b%(I|
00008610  25 29 3d 9a 23 63 25 2f  32 35 35 2a 46 3a ed 0d  |%)=.#c%/255*F:..|
00008620  2a bc 05 7f 0d 2a c6 0e  c8 8e 20 69 6e 70 75 74  |*....*.... input|
00008630  20 ca 0d 2a d0 1f c9 20  31 3a 72 25 28 30 29 3d  | ..*... 1:r%(0)=|
00008640  46 3a 67 25 28 30 29 3d  46 3a 62 25 28 30 29 3d  |F:g%(0)=F:b%(0)=|
00008650  46 0d 2a da 10 c9 20 34  2c 38 3a f2 6e 6f 70 61  |F.*... 4,8:.nopa|
00008660  6c 0d 2a e4 0f c9 20 32  34 3a f2 6e 6f 70 61 6c  |l.*... 24:.nopal|
00008670  0d 2a ee 05 cb 0d 2a f8  05 cb 0d 2b 02 0e c8 8e  |.*....*....+....|
00008680  20 69 6e 70 75 74 20 ca  0d 2b 0c 20 c9 20 31 3a  | input ..+. . 1:|
00008690  72 6f 77 62 79 74 65 73  25 3d 28 73 78 25 2b 31  |rowbytes%=(sx%+1|
000086a0  35 3e 3e 34 29 3c 3c 31  0d 2b 16 1f c9 20 34 3a  |5>>4)<<1.+... 4:|
000086b0  72 6f 77 62 79 74 65 73  25 3d 28 73 78 25 2b 33  |rowbytes%=(sx%+3|
000086c0  3e 3e 32 29 3c 3c 31 0d  2b 20 1f c9 20 38 3a 72  |>>2)<<1.+ .. 8:r|
000086d0  6f 77 62 79 74 65 73 25  3d 28 73 78 25 2b 31 3e  |owbytes%=(sx%+1>|
000086e0  3e 31 29 3c 3c 31 0d 2b  2a 4a c9 20 32 34 3a 72  |>1)<<1.+*J. 24:r|
000086f0  6f 77 62 79 74 65 73 25  3d 28 33 2a 73 78 25 2b  |owbytes%=(3*sx%+|
00008700  31 3e 3e 31 29 3c 3c 31  3a 72 24 3d 22 46 4e 32  |1>>1)<<1:r$="FN2|
00008710  34 22 3a 72 62 6f 25 3d  30 3a 67 62 6f 25 3d 31  |4":rbo%=0:gbo%=1|
00008720  3a 62 62 6f 25 3d 32 3a  73 74 65 70 32 34 3d 33  |:bbo%=2:step24=3|
00008730  0d 2b 34 17 e7 53 25 3d  31 20 62 62 6f 25 3d 30  |.+4..S%=1 bbo%=0|
00008740  3a 72 62 6f 25 3d 32 0d  2b 3e 26 7f 3a 85 20 34  |:rbo%=2.+>&.:. 4|
00008750  32 2c 22 43 61 6e 27 74  20 64 6f 20 74 68 69 73  |2,"Can't do this|
00008760  20 53 75 6e 20 70 69 78  72 65 63 74 22 0d 2b 48  | Sun pixrect".+H|
00008770  05 cb 0d 2b 52 4d 73 74  25 3d 44 25 2b 26 32 30  |...+RMst%=D%+&20|
00008780  3a 72 65 70 25 3d 30 3a  e7 63 61 63 68 65 62 79  |:rep%=0:.cacheby|
00008790  74 65 73 25 20 70 6c 62  75 66 66 25 3d a4 64 69  |tes% plbuff%=.di|
000087a0  6d 28 72 6f 77 62 79 74  65 73 25 29 3a 70 6c 62  |m(rowbytes%):plb|
000087b0  79 74 65 73 25 3d 72 6f  77 62 79 74 65 73 25 0d  |ytes%=rowbytes%.|
000087c0  2b 5c 42 69 6e 66 6f 24  2b 3d 22 53 75 6e 20 69  |+\Binfo$+="Sun i|
000087d0  6d 61 67 65 2c 20 22 2b  c3 73 78 25 2b 22 20 62  |mage, "+.sx%+" b|
000087e0  79 20 22 2b c3 73 79 25  2b 22 20 70 69 78 65 6c  |y "+.sy%+" pixel|
000087f0  73 2c 20 22 2b a4 62 69  74 73 28 69 6e 70 75 74  |s, "+.bits(input|
00008800  29 0d 2b 66 0a c9 20 31  32 30 30 0d 2b 70 3e 71  |).+f.. 1200.+p>q|
00008810  75 61 6e 74 25 3d 38 3a  73 78 25 3d 38 30 30 3a  |uant%=8:sx%=800:|
00008820  73 79 25 3d 38 30 30 3a  73 74 25 3d 31 36 30 30  |sy%=800:st%=1600|
00008830  3a cf 23 63 25 3d 73 74  25 3a 76 66 6c 69 70 25  |:.#c%=st%:vflip%|
00008840  3d ac 20 76 66 6c 69 70  25 0d 2b 7a 2a f2 6e 6f  |=. vflip%.+z*.no|
00008850  70 61 6c 3a 72 24 3d 22  46 4e 38 22 3a 72 6f 77  |pal:r$="FN8":row|
00008860  62 79 74 65 73 25 3d 73  78 25 3a 63 61 63 68 65  |bytes%=sx%:cache|
00008870  25 3d b9 0d 2b 84 49 69  6e 66 6f 24 3d 22 54 69  |%=..+.Iinfo$="Ti|
00008880  6d 65 53 74 65 70 20 73  61 74 65 6c 6c 69 74 65  |meStep satellite|
00008890  20 69 6d 61 67 65 2c 20  38 30 30 20 62 79 20 38  | image, 800 by 8|
000088a0  30 30 20 70 69 78 65 6c  73 2c 20 38 20 62 69 74  |00 pixels, 8 bit|
000088b0  73 20 70 65 72 20 70 69  78 65 6c 22 0d 2b 8e 0a  |s per pixel".+..|
000088c0  c9 20 31 33 30 30 0d 2b  98 3f 71 75 61 6e 74 25  |. 1300.+.?quant%|
000088d0  3d 38 3a 73 78 25 3d 31  32 38 3a 73 79 25 3d 32  |=8:sx%=128:sy%=2|
000088e0  35 36 3a 73 74 25 3d 30  3a cf 23 63 25 3d 30 3a  |56:st%=0:.#c%=0:|
000088f0  e7 73 63 61 6c 65 25 20  78 6d 75 6c 25 3d 78 6d  |.scale% xmul%=xm|
00008900  75 6c 25 2a 32 0d 2b a2  2a f2 6e 6f 70 61 6c 3a  |ul%*2.+.*.nopal:|
00008910  72 24 3d 22 46 4e 38 22  3a 72 6f 77 62 79 74 65  |r$="FN8":rowbyte|
00008920  73 25 3d 73 78 25 3a 63  61 63 68 65 25 3d b9 0d  |s%=sx%:cache%=..|
00008930  2b ac 40 69 6e 66 6f 24  3d 22 73 61 74 65 6c 6c  |+.@info$="satell|
00008940  69 74 65 20 69 6d 61 67  65 2c 20 31 32 38 20 62  |ite image, 128 b|
00008950  79 20 32 35 36 20 70 69  78 65 6c 73 2c 20 38 20  |y 256 pixels, 8 |
00008960  62 69 74 73 20 70 65 72  20 70 69 78 65 6c 22 0d  |bits per pixel".|
00008970  2b b6 0a c9 20 31 33 30  31 0d 2b c0 3b 69 6e 70  |+... 1301.+.;inp|
00008980  75 74 3d 32 34 3a 71 75  61 6e 74 25 3d 38 3a 73  |ut=24:quant%=8:s|
00008990  78 25 3d 31 32 38 3a 73  79 25 3d 32 35 36 3a e7  |x%=128:sy%=256:.|
000089a0  73 63 61 6c 65 25 20 78  6d 75 6c 25 3d 78 6d 75  |scale% xmul%=xmu|
000089b0  6c 25 2a 32 0d 2b ca 4f  62 75 66 66 25 3d a4 64  |l%*2.+.Obuff%=.d|
000089c0  69 6d 28 73 78 25 2a 33  29 3a 72 62 25 3d 62 75  |im(sx%*3):rb%=bu|
000089d0  66 66 25 3a 67 62 25 3d  62 75 66 66 25 2b 73 78  |ff%:gb%=buff%+sx|
000089e0  25 3a 62 62 25 3d 62 75  66 66 25 2b 32 2a 73 78  |%:bb%=buff%+2*sx|
000089f0  25 3a f2 6e 6f 70 61 6c  3a 72 24 3d 22 46 4e 39  |%:.nopal:r$="FN9|
00008a00  30 31 22 0d 2b d4 48 69  6e 66 6f 24 3d 22 54 72  |01".+.Hinfo$="Tr|
00008a10  69 70 6c 65 20 73 61 74  65 6c 6c 69 74 65 20 69  |iple satellite i|
00008a20  6d 61 67 65 2c 20 31 32  38 20 62 79 20 32 35 36  |mage, 128 by 256|
00008a30  20 70 69 78 65 6c 73 2c  20 32 34 20 62 69 74 73  | pixels, 24 bits|
00008a40  20 70 65 72 20 70 69 78  65 6c 22 0d 2b de 0a c9  | per pixel".+...|
00008a50  20 31 34 30 30 0d 2b e8  25 70 6c 61 6e 61 72 25  | 1400.+.%planar%|
00008a60  3d b9 3a cf 23 63 25 3d  30 3a 5a 25 3d a4 48 57  |=.:.#c%=0:Z%=.HW|
00008a70  3a e7 5a 25 3e 32 35 35  20 8c 0d 2b f2 2b 73 74  |:.Z%>255 ..+.+st|
00008a80  25 3d a4 62 65 48 57 2a  32 3a 70 6c 61 6e 65 73  |%=.beHW*2:planes|
00008a90  25 3d a4 62 65 48 57 3a  70 61 74 6c 65 6e 25 3d  |%=.beHW:patlen%=|
00008aa0  a4 62 65 48 57 0d 2b fc  2b 70 77 25 3d a4 62 65  |.beHW.+.+pw%=.be|
00008ab0  48 57 3a 70 68 25 3d a4  62 65 48 57 3a 73 78 25  |HW:ph%=.beHW:sx%|
00008ac0  3d a4 62 65 48 57 3a 73  79 25 3d a4 62 65 48 57  |=.beHW:sy%=.beHW|
00008ad0  0d 2c 06 05 cc 0d 2c 10  43 73 74 25 3d a4 48 57  |.,....,.Cst%=.HW|
00008ae0  2a 32 3a 69 6e 70 75 74  3d a4 48 57 3a 70 61 74  |*2:input=.HW:pat|
00008af0  6c 65 6e 25 3d a4 48 57  3a 70 77 25 3d a4 48 57  |len%=.HW:pw%=.HW|
00008b00  3a 70 68 25 3d a4 48 57  3a 73 78 25 3d a4 48 57  |:ph%=.HW:sx%=.HW|
00008b10  3a 73 79 25 3d a4 48 57  0d 2c 1a 05 cd 0d 2c 24  |:sy%=.HW.,....,$|
00008b20  0d e7 73 63 61 6c 65 25  20 8c 0d 2c 2e 23 78 6d  |..scale% ..,.#xm|
00008b30  75 6c 25 3d 78 6d 75 6c  25 2a 70 77 25 3a 78 64  |ul%=xmul%*pw%:xd|
00008b40  69 76 25 3d 78 64 69 76  25 2a 32 38 32 0d 2c 38  |iv%=xdiv%*282.,8|
00008b50  23 79 6d 75 6c 25 3d 79  6d 75 6c 25 2a 70 68 25  |#ymul%=ymul%*ph%|
00008b60  3a 79 64 69 76 25 3d 79  64 69 76 25 2a 32 38 32  |:ydiv%=ydiv%*282|
00008b70  0d 2c 42 05 cd 0d 2c 4c  57 72 6f 77 62 79 74 65  |.,B...,LWrowbyte|
00008b80  73 25 3d 73 78 25 2b 37  3e 3e 33 3a 70 62 75 66  |s%=sx%+7>>3:pbuf|
00008b90  66 25 3d a4 64 69 6d 28  73 78 25 29 3a 70 6c 62  |f%=.dim(sx%):plb|
00008ba0  79 74 65 73 25 3d 72 6f  77 62 79 74 65 73 25 2a  |ytes%=rowbytes%*|
00008bb0  70 6c 61 6e 65 73 25 3a  62 75 66 66 25 3d a4 64  |planes%:buff%=.d|
00008bc0  69 6d 28 70 6c 62 79 74  65 73 25 29 0d 2c 56 14  |im(plbytes%).,V.|
00008bd0  cf 23 63 25 3d 73 74 25  3a 76 72 65 70 25 3d 30  |.#c%=st%:vrep%=0|
00008be0  0d 2c 60 4d e3 43 25 3d  30 b8 28 31 3c 3c 70 6c  |.,`M.C%=0.(1<<pl|
00008bf0  61 6e 65 73 25 29 2d 31  3a 72 25 28 43 25 29 3d  |anes%)-1:r%(C%)=|
00008c00  46 2d 43 25 2f 28 28 31  3c 3c 70 6c 61 6e 65 73  |F-C%/((1<<planes|
00008c10  25 29 2d 31 29 2a 46 3a  ed 3a 67 25 28 29 3d 72  |%)-1)*F:.:g%()=r|
00008c20  25 28 29 3a 62 25 28 29  3d 72 25 28 29 0d 2c 6a  |%():b%()=r%().,j|
00008c30  42 69 6e 66 6f 24 3d 22  49 4d 47 20 66 69 6c 65  |Binfo$="IMG file|
00008c40  2c 20 22 2b c3 73 78 25  2b 22 20 62 79 20 22 2b  |, "+.sx%+" by "+|
00008c50  c3 73 79 25 2b 22 20 70  69 78 65 6c 73 2c 20 22  |.sy%+" pixels, "|
00008c60  2b a4 62 69 74 73 28 70  6c 61 6e 65 73 25 29 0d  |+.bits(planes%).|
00008c70  2c 74 0a c9 20 31 35 30  30 0d 2c 7e 22 cf 23 63  |,t.. 1500.,~".#c|
00008c80  25 3d 34 3a 64 69 72 25  3d a4 74 69 66 66 28 34  |%=4:dir%=.tiff(4|
00008c90  29 3a cf 23 63 25 3d 64  69 72 25 0d 2c 88 36 72  |):.#c%=dir%.,.6r|
00008ca0  67 62 3d a3 3a 67 72 65  79 75 6e 69 74 3d 31 30  |gb=.:greyunit=10|
00008cb0  30 3a 70 6c 61 6e 61 72  25 3d 31 3a 66 69 6c 6c  |0:planar%=1:fill|
00008cc0  6f 72 64 65 72 3d 31 3a  72 65 73 75 6e 69 74 3d  |order=1:resunit=|
00008cd0  32 0d 2c 92 29 78 6e 75  6d 25 3d 39 30 3a 78 64  |2.,.)xnum%=90:xd|
00008ce0  65 6e 6f 6d 25 3d 31 3a  79 6e 75 6d 25 3d 39 30  |enom%=1:ynum%=90|
00008cf0  3a 79 64 65 6e 6f 6d 25  3d 31 0d 2c 9c 18 45 25  |:ydenom%=1.,..E%|
00008d00  3d a4 74 69 66 66 28 33  29 3a e3 5a 25 3d 31 b8  |=.tiff(3):.Z%=1.|
00008d10  45 25 0d 2c a6 27 54 25  3d a4 74 69 66 66 28 33  |E%.,.'T%=.tiff(3|
00008d20  29 3a 44 25 3d a4 74 69  66 66 28 33 29 3a 43 25  |):D%=.tiff(3):C%|
00008d30  3d a4 74 69 66 66 28 34  29 0d 2c b0 61 e7 43 25  |=.tiff(4).,.a.C%|
00008d40  3e 31 20 56 25 3d a4 74  69 66 66 28 34 29 20 8b  |>1 V%=.tiff(4) .|
00008d50  e7 44 25 3d 32 20 8f 23  63 25 3d 64 69 72 25 2b  |.D%=2 .#c%=dir%+|
00008d60  32 2b 5a 25 2a 31 32 20  8b e7 44 25 3c 34 20 56  |2+Z%*12 ..D%<4 V|
00008d70  25 3d a4 74 69 66 66 28  44 25 29 3a cf 23 63 25  |%=.tiff(D%):.#c%|
00008d80  3d 64 69 72 25 2b 32 2b  5a 25 2a 31 32 20 8b 56  |=dir%+2+Z%*12 .V|
00008d90  25 3d a4 74 69 66 66 28  34 29 0d 2c c4 0b c8 8e  |%=.tiff(4).,....|
00008da0  20 54 25 20 ca 0d 2c ce  10 c9 20 32 35 36 3a 73  | T% ..,... 256:s|
00008db0  78 25 3d 56 25 0d 2c d8  10 c9 20 32 35 37 3a 73  |x%=V%.,... 257:s|
00008dc0  79 25 3d 56 25 0d 2c e2  11 c9 20 32 35 38 3a e7  |y%=V%.,... 258:.|
00008dd0  43 25 3e 31 20 8c 0d 2c  ec 0e e7 44 25 2a 43 25  |C%>1 ..,...D%*C%|
00008de0  3e 36 20 8c 0d 2c f6 1c  cf 23 63 25 3d 56 25 3a  |>6 ..,...#c%=V%:|
00008df0  71 75 61 6e 74 25 3d a4  74 69 66 66 28 44 25 29  |quant%=.tiff(D%)|
00008e00  0d 2d 00 28 69 6e 70 75  74 3d 71 75 61 6e 74 25  |.-.(input=quant%|
00008e10  3a e3 49 25 3d 31 b8 43  25 2d 31 3a 56 25 3d a4  |:.I%=1.C%-1:V%=.|
00008e20  74 69 66 66 28 44 25 29  0d 2d 0a 50 e7 56 25 3c  |tiff(D%).-.P.V%<|
00008e30  3e 71 75 61 6e 74 25 20  85 34 32 2c 22 43 61 6e  |>quant% .42,"Can|
00008e40  27 74 20 64 6f 20 52 47  42 20 54 49 46 46 20 77  |'t do RGB TIFF w|
00008e50  69 74 68 20 64 69 66 66  65 72 65 6e 74 20 6e 75  |ith different nu|
00008e60  6d 62 65 72 73 20 6f 66  20 62 69 74 73 20 70 65  |mbers of bits pe|
00008e70  72 20 70 69 78 65 6c 22  0d 2d 14 0d 69 6e 70 75  |r pixel".-..inpu|
00008e80  74 2b 3d 56 25 0d 2d 1e  0c ed 3a f2 6e 6f 70 61  |t+=V%.-...:.nopa|
00008e90  6c 0d 2d 28 05 cc 0d 2d  32 20 71 75 61 6e 74 25  |l.-(...-2 quant%|
00008ea0  3d 56 25 20 80 20 26 46  46 3a 69 6e 70 75 74 3d  |=V% . &FF:input=|
00008eb0  71 75 61 6e 74 25 0d 2d  3c 35 e3 49 25 3d 30 b8  |quant%.-<5.I%=0.|
00008ec0  28 31 3c 3c 71 75 61 6e  74 25 29 2d 31 3a 72 25  |(1<<quant%)-1:r%|
00008ed0  28 49 25 29 3d 49 25 2f  28 28 31 3c 3c 71 75 61  |(I%)=I%/((1<<qua|
00008ee0  6e 74 25 29 2d 31 29 2a  46 3a ed 0d 2d 46 17 67  |nt%)-1)*F:..-F.g|
00008ef0  25 28 29 3d 72 25 28 29  3a 62 25 28 29 3d 72 25  |%()=r%():b%()=r%|
00008f00  28 29 0d 2d 50 05 cd 0d  2d 5a 15 cf 23 63 25 3d  |().-P...-Z..#c%=|
00008f10  64 69 72 25 2b 32 2b 5a  25 2a 31 32 0d 2d 64 05  |dir%+2+Z%*12.-d.|
00008f20  cc 0d 2d 6e 1a 71 75 61  6e 74 25 3d 56 25 3a 69  |..-n.quant%=V%:i|
00008f30  6e 70 75 74 3d 71 75 61  6e 74 25 0d 2d 78 35 e3  |nput=quant%.-x5.|
00008f40  49 25 3d 30 b8 28 31 3c  3c 71 75 61 6e 74 25 29  |I%=0.(1<<quant%)|
00008f50  2d 31 3a 72 25 28 49 25  29 3d 49 25 2f 28 28 31  |-1:r%(I%)=I%/((1|
00008f60  3c 3c 71 75 61 6e 74 25  29 2d 31 29 2a 46 3a ed  |<<quant%)-1)*F:.|
00008f70  0d 2d 82 17 67 25 28 29  3d 72 25 28 29 3a 62 25  |.-..g%()=r%():b%|
00008f80  28 29 3d 72 25 28 29 0d  2d 8c 05 cd 0d 2d 96 18  |()=r%().-....-..|
00008f90  c9 20 32 35 39 3a 63 6f  6d 70 72 65 73 73 69 6f  |. 259:compressio|
00008fa0  6e 3d 56 25 0d 2d a0 2f  c9 20 32 36 32 3a 70 68  |n=V%.-./. 262:ph|
00008fb0  6f 74 6f 6d 65 74 72 69  63 3d 56 25 3a e7 56 25  |otometric=V%:.V%|
00008fc0  3d 30 20 69 6e 76 65 72  74 25 3d ac 69 6e 76 65  |=0 invert%=.inve|
00008fd0  72 74 25 0d 2d aa 16 c9  20 32 36 36 3a 66 69 6c  |rt%.-... 266:fil|
00008fe0  6c 6f 72 64 65 72 3d 56  25 0d 2d b4 21 c9 20 32  |lorder=V%.-.!. 2|
00008ff0  37 33 3a 73 74 63 25 3d  43 25 3a 73 74 76 25 3d  |73:stc%=C%:stv%=|
00009000  56 25 3a 73 74 64 25 3d  44 25 0d 2d be 31 c9 20  |V%:std%=D%.-.1. |
00009010  32 37 37 3a 73 61 6d 70  70 65 72 70 69 78 25 3d  |277:sampperpix%=|
00009020  56 25 3a 69 6e 70 75 74  3d 71 75 61 6e 74 25 2a  |V%:input=quant%*|
00009030  56 25 3a 72 67 62 3d 56  25 3d 33 0d 2d c8 17 c9  |V%:rgb=V%=3.-...|
00009040  20 32 37 38 3a 73 74 72  69 70 72 6f 77 73 25 3d  | 278:striprows%=|
00009050  56 25 0d 2d d2 2d c9 20  32 37 39 3a 73 74 63 62  |V%.-.-. 279:stcb|
00009060  79 74 65 25 3d 43 25 3a  73 74 76 62 79 74 65 25  |yte%=C%:stvbyte%|
00009070  3d 56 25 3a 73 74 64 62  79 74 65 25 3d 44 25 0d  |=V%:stdbyte%=D%.|
00009080  2d dc 31 c9 20 32 38 32  3a cf 23 63 25 3d 56 25  |-.1. 282:.#c%=V%|
00009090  3a 78 6e 75 6d 25 3d a4  74 69 66 66 28 34 29 3a  |:xnum%=.tiff(4):|
000090a0  78 64 65 6e 6f 6d 25 3d  a4 74 69 66 66 28 34 29  |xdenom%=.tiff(4)|
000090b0  0d 2d e6 15 cf 23 63 25  3d 64 69 72 25 2b 32 2b  |.-...#c%=dir%+2+|
000090c0  5a 25 2a 31 32 0d 2d f0  31 c9 20 32 38 33 3a cf  |Z%*12.-.1. 283:.|
000090d0  23 63 25 3d 56 25 3a 79  6e 75 6d 25 3d a4 74 69  |#c%=V%:ynum%=.ti|
000090e0  66 66 28 34 29 3a 79 64  65 6e 6f 6d 25 3d a4 74  |ff(4):ydenom%=.t|
000090f0  69 66 66 28 34 29 0d 2d  fa 15 cf 23 63 25 3d 64  |iff(4).-...#c%=d|
00009100  69 72 25 2b 32 2b 5a 25  2a 31 32 0d 2e 04 2c c9  |ir%+2+Z%*12...,.|
00009110  20 32 38 34 3a 70 6c 61  6e 61 72 25 3d 56 25 3a  | 284:planar%=V%:|
00009120  e7 70 6c 61 6e 61 72 25  3d 32 20 69 6e 70 75 74  |.planar%=2 input|
00009130  3d 71 75 61 6e 74 25 0d  2e 0e 18 c9 20 32 39 30  |=quant%..... 290|
00009140  3a 67 72 65 79 75 6e 69  74 3d 31 30 5e 56 25 0d  |:greyunit=10^V%.|
00009150  2e 18 3c c9 20 32 39 31  3a cf 23 63 25 3d 56 25  |..<. 291:.#c%=V%|
00009160  3a e3 49 25 3d 30 b8 43  25 2d 31 3a 72 25 28 49  |:.I%=0.C%-1:r%(I|
00009170  25 29 3d a4 74 69 66 66  28 44 25 29 2f 67 72 65  |%)=.tiff(D%)/gre|
00009180  79 75 6e 69 74 2f 32 2a  46 3a ed 0d 2e 22 17 67  |yunit/2*F:...".g|
00009190  25 28 29 3d 72 25 28 29  3a 62 25 28 29 3d 72 25  |%()=r%():b%()=r%|
000091a0  28 29 0d 2e 2c 15 cf 23  63 25 3d 64 69 72 25 2b  |()..,..#c%=dir%+|
000091b0  32 2b 5a 25 2a 31 32 0d  2e 36 14 c9 20 32 39 36  |2+Z%*12..6.. 296|
000091c0  3a 72 65 73 75 6e 69 74  3d 56 25 0d 2e 40 16 c9  |:resunit=V%..@..|
000091d0  20 33 31 37 3a 68 70 72  65 64 69 63 74 25 3d 56  | 317:hpredict%=V|
000091e0  25 0d 2e 4a 38 c9 20 33  32 30 3a cf 23 63 25 3d  |%..J8. 320:.#c%=|
000091f0  56 25 3a e3 49 25 3d 30  b8 43 25 2f 33 2d 31 3a  |V%:.I%=0.C%/3-1:|
00009200  72 25 28 49 25 29 3d a4  74 69 66 66 28 33 29 2f  |r%(I%)=.tiff(3)/|
00009210  36 35 35 33 35 2a 46 3a  ed 0d 2e 54 2a e3 49 25  |65535*F:...T*.I%|
00009220  3d 30 b8 43 25 2f 33 2d  31 3a 67 25 28 49 25 29  |=0.C%/3-1:g%(I%)|
00009230  3d a4 74 69 66 66 28 33  29 2f 36 35 35 33 35 2a  |=.tiff(3)/65535*|
00009240  46 3a ed 0d 2e 5e 2a e3  49 25 3d 30 b8 43 25 2f  |F:...^*.I%=0.C%/|
00009250  33 2d 31 3a 62 25 28 49  25 29 3d a4 74 69 66 66  |3-1:b%(I%)=.tiff|
00009260  28 33 29 2f 36 35 35 33  35 2a 46 3a ed 0d 2e 68  |(3)/65535*F:...h|
00009270  15 cf 23 63 25 3d 64 69  72 25 2b 32 2b 5a 25 2a  |..#c%=dir%+2+Z%*|
00009280  31 32 0d 2e 72 05 7f 0d  2e 7c 4a e7 69 6e 66 6f  |12..r....|J.info|
00009290  25 20 f1 22 49 67 6e 6f  72 69 6e 67 20 74 61 67  |% ."Ignoring tag|
000092a0  20 22 3b 54 25 22 20 64  61 74 61 74 79 70 65 20  | ";T%" datatype |
000092b0  22 44 25 22 20 63 6f 75  6e 74 20 22 43 25 22 20  |"D%" count "C%" |
000092c0  76 61 6c 75 65 2f 70 6f  69 6e 74 65 72 20 22 56  |value/pointer "V|
000092d0  25 0d 2e 86 05 cb 0d 2e  90 05 ed 0d 2e 9a 19 de  |%...............|
000092e0  20 73 74 25 28 73 74 63  25 29 3a e7 73 74 63 25  | st%(stc%):.stc%|
000092f0  3e 31 20 8c 0d 2e a4 30  cf 23 63 25 3d 73 74 76  |>1 ....0.#c%=stv|
00009300  25 3a e3 49 25 3d 30 b8  73 74 63 25 2d 31 3a 73  |%:.I%=0.stc%-1:s|
00009310  74 25 28 49 25 29 3d a4  74 69 66 66 28 73 74 64  |t%(I%)=.tiff(std|
00009320  25 29 3a ed 0d 2e b8 05  cc 0d 2e c2 0f 73 74 25  |%):..........st%|
00009330  28 30 29 3d 73 74 76 25  0d 2e cc 05 cd 0d 2e d6  |(0)=stv%........|
00009340  14 c8 8e 20 63 6f 6d 70  72 65 73 73 69 6f 6e 20  |... compression |
00009350  ca 0d 2e e0 12 c9 20 30  2c 31 3a 69 6e 66 6f 24  |...... 0,1:info$|
00009360  3d 22 22 0d 2e ea 29 c9  20 32 3a 69 6e 66 6f 24  |=""...). 2:info$|
00009370  3d 22 43 43 49 54 54 20  47 72 6f 75 70 20 33 20  |="CCITT Group 3 |
00009380  63 6f 6d 70 72 65 73 73  65 64 20 22 0d 2e f4 2b  |compressed "...+|
00009390  c9 20 35 3a 69 6e 66 6f  24 3d 22 4c 5a 57 20 63  |. 5:info$="LZW c|
000093a0  6f 6d 70 72 65 73 73 65  64 20 22 3a 72 24 3d 22  |ompressed ":r$="|
000093b0  46 4e 31 35 30 35 22 0d  2e fe 6e e7 68 70 72 65  |FN1505"...n.hpre|
000093c0  64 69 63 74 25 3d 32 20  8c 69 6e 66 6f 24 2b 3d  |dict%=2 .info$+=|
000093d0  22 68 6f 72 69 7a 6f 6e  74 61 6c 20 64 69 66 66  |"horizontal diff|
000093e0  65 72 65 6e 63 65 64 20  22 20 8b e7 68 70 72 65  |erenced " ..hpre|
000093f0  64 69 63 74 25 3e 32 20  69 6e 66 6f 24 2b 3d 22  |dict%>2 info$+="|
00009400  20 75 6e 6b 6e 6f 77 6e  20 70 72 65 64 69 63 74  | unknown predict|
00009410  6f 72 20 28 22 2b c3 68  70 72 65 64 69 63 74 25  |or ("+.hpredict%|
00009420  2b 22 29 20 22 0d 2f 08  27 73 65 74 63 6f 64 65  |+") "./.'setcode|
00009430  73 25 3d 38 3a 63 6c 65  61 72 63 6f 64 65 25 3d  |s%=8:clearcode%=|
00009440  31 3c 3c 73 65 74 63 6f  64 65 73 25 0d 2f 12 33  |1<<setcodes%./.3|
00009450  de 20 74 61 62 6c 65 25  28 31 3c 3c 31 32 29 3a  |. table%(1<<12):|
00009460  73 74 6b 25 3d a4 64 69  6d 28 31 3c 3c 31 33 29  |stk%=.dim(1<<13)|
00009470  3a 62 75 66 25 3d a4 64  69 6d 28 32 38 30 29 0d  |:buf%=.dim(280).|
00009480  2f 1c 26 e3 49 25 3d 30  b8 63 6c 65 61 72 63 6f  |/.&.I%=0.clearco|
00009490  64 65 25 2d 31 3a 74 61  62 6c 65 25 28 49 25 29  |de%-1:table%(I%)|
000094a0  3d 49 25 3a ed 0d 2f 26  34 c9 20 33 32 37 37 33  |=I%:../&4. 32773|
000094b0  3a 69 6e 66 6f 24 3d 22  50 61 63 6b 42 69 74 73  |:info$="PackBits|
000094c0  20 63 6f 6d 70 72 65 73  73 65 64 20 22 3a 72 24  | compressed ":r$|
000094d0  3d 22 46 4e 31 35 30 31  22 0d 2f 30 20 c9 20 36  |="FN1501"./0 . 6|
000094e0  3a 69 6e 66 6f 24 3d 22  4a 50 45 47 20 63 6f 6d  |:info$="JPEG com|
000094f0  70 72 65 73 73 65 64 20  22 0d 2f 3a 32 7f 20 69  |pressed "./:2. i|
00009500  6e 66 6f 24 3d 22 43 6f  6d 70 72 65 73 73 20 22  |nfo$="Compress "|
00009510  2b c3 63 6f 6d 70 72 65  73 73 69 6f 6e 2b 22 20  |+.compression+" |
00009520  2d 20 75 6e 6b 6e 6f 77  6e 20 22 0d 2f 44 05 cb  |- unknown "./D..|
00009530  0d 2f 4e 42 69 6e 66 6f  24 2b 3d 22 54 49 46 46  |./NBinfo$+="TIFF|
00009540  20 66 69 6c 65 2c 20 22  2b c3 73 78 25 2b 22 20  | file, "+.sx%+" |
00009550  62 79 20 22 2b c3 73 79  25 2b 22 20 70 69 78 65  |by "+.sy%+" pixe|
00009560  6c 73 2c 20 22 2b a4 62  69 74 73 28 69 6e 70 75  |ls, "+.bits(inpu|
00009570  74 29 0d 2f 58 53 62 69  67 65 6e 64 69 61 6e 62  |t)./XSbigendianb|
00009580  69 74 73 3d 66 69 6c 6c  6f 72 64 65 72 3d 31 3a  |its=fillorder=1:|
00009590  cf 23 63 25 3d 73 74 25  28 30 29 3a 73 74 72 69  |.#c%=st%(0):stri|
000095a0  70 70 74 72 3d 30 3a e7  73 74 72 69 70 72 6f 77  |pptr=0:.striprow|
000095b0  73 25 3e 3d 73 79 25 20  73 74 72 69 70 72 6f 77  |s%>=sy% striprow|
000095c0  73 25 3d 2d 31 0d 2f 62  0e c8 8e 20 69 6e 70 75  |s%=-1./b... inpu|
000095d0  74 20 ca 0d 2f 6c 1a c9  20 31 3a 72 6f 77 62 79  |t ../l.. 1:rowby|
000095e0  74 65 73 25 3d 73 78 25  2b 37 3e 3e 33 0d 2f 76  |tes%=sx%+7>>3./v|
000095f0  1a c9 20 32 3a 72 6f 77  62 79 74 65 73 25 3d 73  |.. 2:rowbytes%=s|
00009600  78 25 2b 33 3e 3e 32 0d  2f 80 1a c9 20 34 3a 72  |x%+3>>2./... 4:r|
00009610  6f 77 62 79 74 65 73 25  3d 73 78 25 2b 31 3e 3e  |owbytes%=sx%+1>>|
00009620  31 0d 2f 8a 15 c9 20 38  3a 72 6f 77 62 79 74 65  |1./... 8:rowbyte|
00009630  73 25 3d 73 78 25 0d 2f  94 18 c9 20 32 34 3a 72  |s%=sx%./... 24:r|
00009640  6f 77 62 79 74 65 73 25  3d 33 2a 73 78 25 0d 2f  |owbytes%=3*sx%./|
00009650  9e 2b 7f 20 85 20 34 32  2c 22 43 61 6e 27 74 20  |.+. . 42,"Can't |
00009660  64 6f 20 22 2b a4 62 69  74 73 28 69 6e 70 75 74  |do "+.bits(input|
00009670  29 2b 22 20 54 49 46 46  22 0d 2f a8 05 cb 0d 2f  |)+" TIFF"./..../|
00009680  b2 2e e7 70 6c 61 6e 61  72 25 3d 32 20 72 6f 77  |...planar%=2 row|
00009690  62 79 74 65 73 25 3d 72  6f 77 62 79 74 65 73 25  |bytes%=rowbytes%|
000096a0  2a 73 61 6d 70 70 65 72  70 69 78 25 0d 2f bc 49  |*sampperpix%./.I|
000096b0  e7 70 6c 61 6e 61 72 25  3c 3e 31 20 80 20 72 67  |.planar%<>1 . rg|
000096c0  62 3c 3e 30 20 85 34 32  2c 22 43 61 6e 27 74 20  |b<>0 .42,"Can't |
000096d0  64 6f 20 74 68 69 73 20  73 74 79 6c 65 20 6f 66  |do this style of|
000096e0  20 54 49 46 46 20 79 65  74 22 20 8b 70 6c 61 6e  | TIFF yet" .plan|
000096f0  61 72 25 3d a3 0d 2f c6  15 e7 20 63 6f 6d 70 72  |ar%=../... compr|
00009700  65 73 73 69 6f 6e 3c 32  20 8c 0d 2f d0 53 63 61  |ession<2 ../.Sca|
00009710  63 68 65 25 3d b9 3a 73  74 72 69 70 70 74 72 3d  |che%=.:stripptr=|
00009720  2d 31 3a 72 24 3d 22 46  4e 38 22 3a e7 69 6e 70  |-1:r$="FN8":.inp|
00009730  75 74 3d 32 34 20 72 62  6f 25 3d 30 3a 67 62 6f  |ut=24 rbo%=0:gbo|
00009740  25 3d 31 3a 62 62 6f 25  3d 32 3a 73 74 65 70 32  |%=1:bbo%=2:step2|
00009750  34 3d 33 3a 72 24 3d 22  46 4e 32 34 22 0d 2f da  |4=3:r$="FN24"./.|
00009760  05 cc 0d 2f e4 27 e7 63  6f 6d 70 72 65 73 73 69  |.../.'.compressi|
00009770  6f 6e 3d 35 20 84 63 6f  6d 70 72 65 73 73 69 6f  |on=5 .compressio|
00009780  6e 3d 33 32 37 37 33 20  8c 0d 2f ee 2d 63 61 63  |n=32773 ../.-cac|
00009790  68 65 25 3d b9 3a 63 61  63 68 65 62 79 74 65 73  |he%=.:cachebytes|
000097a0  25 3d 72 6f 77 62 79 74  65 73 25 2a 73 74 72 69  |%=rowbytes%*stri|
000097b0  70 72 6f 77 73 25 0d 2f  f8 30 70 6c 62 75 66 66  |prows%./.0plbuff|
000097c0  25 3d a4 64 69 6d 28 72  6f 77 62 79 74 65 73 25  |%=.dim(rowbytes%|
000097d0  29 3a 72 6f 77 73 74 6f  67 6f 25 3d 73 74 72 69  |):rowstogo%=stri|
000097e0  70 72 6f 77 73 25 0d 30  02 5c e7 69 6e 70 75 74  |prows%.0.\.input|
000097f0  3d 32 34 20 72 62 25 3d  70 6c 62 75 66 66 25 3a  |=24 rb%=plbuff%:|
00009800  67 62 25 3d 70 6c 62 75  66 66 25 2b 31 3a 62 62  |gb%=plbuff%+1:bb|
00009810  25 3d 70 6c 62 75 66 66  25 2b 32 3a 72 24 3d 22  |%=plbuff%+2:r$="|
00009820  46 4e 22 2b c3 28 bb c1  72 24 2c 33 29 2b 31 30  |FN"+.(..r$,3)+10|
00009830  29 3a 73 74 65 70 32 34  3d 33 3a 72 62 6f 25 3d  |):step24=3:rbo%=|
00009840  2d 31 0d 30 0c 05 cc 0d  30 16 2e 62 75 66 66 25  |-1.0....0..buff%|
00009850  3d a4 64 69 6d 28 72 6f  77 62 79 74 65 73 25 29  |=.dim(rowbytes%)|
00009860  3a 72 6f 77 73 74 6f 67  6f 25 3d 73 74 72 69 70  |:rowstogo%=strip|
00009870  72 6f 77 73 25 0d 30 20  4e e7 69 6e 70 75 74 3d  |rows%.0 N.input=|
00009880  32 34 20 72 62 25 3d 62  75 66 66 25 3a 67 62 25  |24 rb%=buff%:gb%|
00009890  3d 62 75 66 66 25 2b 31  3a 62 62 25 3d 62 75 66  |=buff%+1:bb%=buf|
000098a0  66 25 2b 32 3a 72 24 3d  22 46 4e 22 2b c3 28 bb  |f%+2:r$="FN"+.(.|
000098b0  c1 72 24 2c 33 29 2b 31  30 29 3a 73 74 65 70 32  |.r$,3)+10):step2|
000098c0  34 3d 33 0d 30 2a 05 cd  0d 30 34 05 cd 0d 30 3e  |4=3.0*...04...0>|
000098d0  0d e7 73 63 61 6c 65 25  20 8c 0d 30 48 1a 53 25  |..scale% ..0H.S%|
000098e0  3d 72 65 73 75 6e 69 74  3a e7 53 25 3d 32 20 53  |=resunit:.S%=2 S|
000098f0  25 3d 39 30 0d 30 52 0f  e7 53 25 3d 33 20 53 25  |%=90.0R..S%=3 S%|
00009900  3d 33 35 0d 30 5c 2c 78  64 69 76 25 3d 78 64 69  |=35.0\,xdiv%=xdi|
00009910  76 25 2a 78 6e 75 6d 25  3a 78 6d 75 6c 25 3d 78  |v%*xnum%:xmul%=x|
00009920  6d 75 6c 25 2a 78 64 65  6e 6f 6d 25 2a 53 25 0d  |mul%*xdenom%*S%.|
00009930  30 66 2c 79 64 69 76 25  3d 79 64 69 76 25 2a 79  |0f,ydiv%=ydiv%*y|
00009940  6e 75 6d 25 3a 79 6d 75  6c 25 3d 79 6d 75 6c 25  |num%:ymul%=ymul%|
00009950  2a 79 64 65 6e 6f 6d 25  2a 53 25 0d 30 70 05 cd  |*ydenom%*S%.0p..|
00009960  0d 30 7a 19 e7 72 24 3d  22 46 4e 31 35 30 30 22  |.0z..r$="FN1500"|
00009970  20 72 24 3d 22 46 4e 38  22 0d 30 84 0a c9 20 31  | r$="FN8".0... 1|
00009980  36 30 30 0d 30 8e 1e cf  23 63 25 3d 31 32 3a 63  |600.0...#c%=12:c|
00009990  61 6d 67 3d 30 3a 70 6c  61 6e 61 72 25 3d b9 3a  |amg=0:planar%=.:|
000099a0  f5 0d 30 98 26 53 24 3d  bd 9a 23 63 25 2b bd 9a  |..0.&S$=..#c%+..|
000099b0  23 63 25 2b bd 9a 23 63  25 2b bd 9a 23 63 25 3a  |#c%+..#c%+..#c%:|
000099c0  53 25 3d a4 62 65 57 0d  30 a2 0b c8 8e 20 53 24  |S%=.beW.0.... S$|
000099d0  20 ca 0d 30 ac 43 c9 20  22 42 4d 48 44 22 3a 73  | ..0.C. "BMHD":s|
000099e0  78 25 3d a4 62 65 48 57  3a 73 79 25 3d a4 62 65  |x%=.beHW:sy%=.be|
000099f0  48 57 3a 53 25 3d a4 57  3a 70 6c 61 6e 65 73 25  |HW:S%=.W:planes%|
00009a00  3d 9a 23 63 25 3a 6d 61  73 6b 69 6e 67 25 3d 9a  |=.#c%:masking%=.|
00009a10  23 63 25 3d 31 0d 30 b6  36 63 6f 6d 70 72 65 73  |#c%=1.0.6compres|
00009a20  73 69 6f 6e 3d 9a 23 63  25 3a 53 25 3d 9a 23 63  |sion=.#c%:S%=.#c|
00009a30  25 2b a4 48 57 3a 55 25  3d 9a 23 63 25 3a 56 25  |%+.HW:U%=.#c%:V%|
00009a40  3d 9a 23 63 25 3a 53 25  3d a4 57 0d 30 c0 29 e7  |=.#c%:S%=.W.0.).|
00009a50  73 63 61 6c 65 25 20 79  6d 75 6c 25 3d 79 6d 75  |scale% ymul%=ymu|
00009a60  6c 25 2a 56 25 3a 79 64  69 76 25 3d 79 64 69 76  |l%*V%:ydiv%=ydiv|
00009a70  25 2a 55 25 0d 30 ca 4b  e3 49 25 3d 30 b8 28 31  |%*U%.0.K.I%=0.(1|
00009a80  3c 3c 70 6c 61 6e 65 73  25 29 2d 31 3a 72 25 28  |<<planes%)-1:r%(|
00009a90  49 25 29 3d 49 25 2f 28  28 31 3c 3c 70 6c 61 6e  |I%)=I%/((1<<plan|
00009aa0  65 73 25 29 2d 31 29 2a  46 3a ed 3a 67 25 28 29  |es%)-1)*F:.:g%()|
00009ab0  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 0d  |=r%():b%()=r%().|
00009ac0  30 d4 42 c9 20 22 43 4d  41 50 22 3a 53 25 3d 8f  |0.B. "CMAP":S%=.|
00009ad0  23 63 25 2b 53 25 3a e3  49 25 3d 30 b8 28 31 3c  |#c%+S%:.I%=0.(1<|
00009ae0  3c 70 6c 61 6e 65 73 25  29 2d 31 3a 72 25 28 49  |<planes%)-1:r%(I|
00009af0  25 29 3d 28 9a 23 63 25  3e 3e 34 29 2f 31 35 2a  |%)=(.#c%>>4)/15*|
00009b00  46 0d 30 de 31 67 25 28  49 25 29 3d 28 9a 23 63  |F.0.1g%(I%)=(.#c|
00009b10  25 3e 3e 34 29 2f 31 35  2a 46 3a 62 25 28 49 25  |%>>4)/15*F:b%(I%|
00009b20  29 3d 28 9a 23 63 25 3e  3e 34 29 2f 31 35 2a 46  |)=(.#c%>>4)/15*F|
00009b30  3a ed 0d 30 e8 47 cf 23  63 25 3d 53 25 3a e7 69  |:..0.G.#c%=S%:.i|
00009b40  6e 66 6f 25 20 f1 22 57  61 72 6e 69 6e 67 3a 20  |nfo% ."Warning: |
00009b50  74 72 75 6e 63 61 74 65  64 20 49 46 46 20 43 4d  |truncated IFF CM|
00009b60  41 50 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 74  |AP information t|
00009b70  6f 20 34 20 62 69 74 73  22 0d 30 f2 3b c9 20 22  |o 4 bits".0.;. "|
00009b80  43 41 4d 47 22 3a 63 61  6d 67 3d a4 62 65 57 3a  |CAMG":camg=.beW:|
00009b90  e7 69 6e 66 6f 25 20 f1  22 41 6d 69 67 61 20 76  |.info% ."Amiga v|
00009ba0  69 65 77 70 6f 72 74 20  6d 6f 64 65 20 22 3b 7e  |iewport mode ";~|
00009bb0  63 61 6d 67 0d 30 fc 15  c9 20 22 42 4f 44 59 22  |camg.0... "BODY"|
00009bc0  3a 73 74 25 3d 8f 23 63  25 0d 31 06 34 7f 20 e7  |:st%=.#c%.1.4. .|
00009bd0  20 69 6e 66 6f 25 20 f1  22 49 67 6e 6f 72 69 6e  | info% ."Ignorin|
00009be0  67 20 49 46 46 20 70 72  6f 70 65 72 74 79 20 22  |g IFF property "|
00009bf0  53 24 22 20 73 69 7a 65  20 22 3b 53 25 0d 31 10  |S$" size ";S%.1.|
00009c00  10 cf 23 63 25 3d 8f 23  63 25 2b 53 25 0d 31 1a  |..#c%=.#c%+S%.1.|
00009c10  05 cb 0d 31 24 39 fd 53  24 3d 22 42 4f 44 59 22  |...1$9.S$="BODY"|
00009c20  3a e7 63 6f 6d 70 72 65  73 73 69 6f 6e 20 69 6e  |:.compression in|
00009c30  66 6f 24 3d 22 43 6f 6d  70 72 65 73 73 65 64 20  |fo$="Compressed |
00009c40  22 20 8b 69 6e 66 6f 24  3d 22 22 0d 31 38 2b 68  |" .info$="".18+h|
00009c50  61 6d 3d 28 63 61 6d 67  20 80 20 26 38 30 30 29  |am=(camg . &800)|
00009c60  3c 3e 30 3a e7 68 61 6d  20 69 6e 66 6f 24 2b 3d  |<>0:.ham info$+=|
00009c70  22 48 41 4d 20 22 0d 31  42 34 68 61 6c 66 3d 28  |"HAM ".1B4half=(|
00009c80  63 61 6d 67 20 80 20 26  38 30 29 3c 3e 30 3a e7  |camg . &80)<>0:.|
00009c90  68 61 6c 66 20 69 6e 66  6f 24 2b 3d 22 68 61 6c  |half info$+="hal|
00009ca0  66 2d 62 72 69 67 68 74  20 22 0d 31 4c 6e e7 68  |f-bright ".1Ln.h|
00009cb0  61 6c 66 20 68 61 6c 66  25 3d 31 3c 3c 70 6c 61  |alf half%=1<<pla|
00009cc0  6e 65 73 25 2d 31 3a e3  49 25 3d 30 b8 68 61 6c  |nes%-1:.I%=0.hal|
00009cd0  66 25 2d 31 3a 72 25 28  49 25 2b 68 61 6c 66 25  |f%-1:r%(I%+half%|
00009ce0  29 3d 72 25 28 49 25 29  2f 32 3a 67 25 28 49 25  |)=r%(I%)/2:g%(I%|
00009cf0  2b 68 61 6c 66 25 29 3d  67 25 28 49 25 29 2f 32  |+half%)=g%(I%)/2|
00009d00  3a 62 25 28 49 25 2b 68  61 6c 66 25 29 3d 62 25  |:b%(I%+half%)=b%|
00009d10  28 49 25 29 2f 32 3a ed  0d 31 56 43 69 6e 66 6f  |(I%)/2:..1VCinfo|
00009d20  24 2b 3d 22 49 46 46 20  66 69 6c 65 2c 20 22 2b  |$+="IFF file, "+|
00009d30  c3 73 78 25 2b 22 20 62  79 20 22 2b c3 73 79 25  |.sx%+" by "+.sy%|
00009d40  2b 22 20 70 69 78 65 6c  73 2c 20 22 2b a4 62 69  |+" pixels, "+.bi|
00009d50  74 73 28 70 6c 61 6e 65  73 25 29 0d 31 60 2b e7  |ts(planes%).1`+.|
00009d60  6d 61 73 6b 69 6e 67 25  20 69 6e 66 6f 24 2b 3d  |masking% info$+=|
00009d70  22 20 77 69 74 68 20 6d  61 73 6b 20 28 69 67 6e  |" with mask (ign|
00009d80  6f 72 65 64 29 22 0d 31  6a 37 72 6f 77 62 79 74  |ored)".1j7rowbyt|
00009d90  65 73 25 3d 28 73 78 25  2b 31 35 3e 3e 34 29 3c  |es%=(sx%+15>>4)<|
00009da0  3c 31 3a 70 6c 62 79 74  65 73 25 3d 72 6f 77 62  |<1:plbytes%=rowb|
00009db0  79 74 65 73 25 2a 70 6c  61 6e 65 73 25 0d 31 74  |ytes%*planes%.1t|
00009dc0  39 70 62 75 66 66 25 3d  a4 64 69 6d 28 73 78 25  |9pbuff%=.dim(sx%|
00009dd0  29 3a 72 24 3d 22 46 4e  22 2b c3 28 31 36 30 30  |):r$="FN"+.(1600|
00009de0  2b 63 6f 6d 70 72 65 73  73 69 6f 6e 29 3a 63 61  |+compression):ca|
00009df0  63 68 65 25 3d b9 0d 31  7e 12 e7 63 6f 6d 70 72  |che%=..1~..compr|
00009e00  65 73 73 69 6f 6e 20 8c  0d 31 88 28 63 61 63 68  |ession ..1.(cach|
00009e10  65 62 79 74 65 73 25 3d  b9 3a 70 6c 62 75 66 66  |ebytes%=.:plbuff|
00009e20  25 3d a4 64 69 6d 28 70  6c 62 79 74 65 73 25 29  |%=.dim(plbytes%)|
00009e30  0d 31 92 05 cc 0d 31 9c  51 72 65 61 6c 72 6f 77  |.1....1.Qrealrow|
00009e40  62 79 74 65 73 25 3d 72  6f 77 62 79 74 65 73 25  |bytes%=rowbytes%|
00009e50  3a 72 6f 77 62 79 74 65  73 25 3d 70 6c 62 79 74  |:rowbytes%=plbyt|
00009e60  65 73 25 3a e7 6d 61 73  6b 69 6e 67 25 20 72 6f  |es%:.masking% ro|
00009e70  77 62 79 74 65 73 25 2b  3d 72 65 61 6c 72 6f 77  |wbytes%+=realrow|
00009e80  62 79 74 65 73 25 0d 31  a6 05 cd 0d 31 b0 0c cf  |bytes%.1....1...|
00009e90  23 63 25 3d 73 74 25 0d  31 ba 0a c9 20 31 37 30  |#c%=st%.1... 170|
00009ea0  30 0d 31 c4 42 73 78 25  3d 36 34 30 3a 72 6f 77  |0.1.Bsx%=640:row|
00009eb0  62 79 74 65 73 25 3d 38  30 3a 73 79 25 3d 33 35  |bytes%=80:sy%=35|
00009ec0  30 3a 70 6c 61 6e 65 73  25 3d 34 3a 70 6c 62 79  |0:planes%=4:plby|
00009ed0  74 65 73 25 3d 34 2a 38  30 3a 70 6c 61 6e 61 72  |tes%=4*80:planar|
00009ee0  25 3d b9 0d 31 ce 33 62  75 66 66 25 3d a4 64 69  |%=..1.3buff%=.di|
00009ef0  6d 28 38 30 2a 34 29 3a  70 62 75 66 66 25 3d a4  |m(80*4):pbuff%=.|
00009f00  64 69 6d 28 36 34 30 29  3a 47 3d 46 2f 33 3a 48  |dim(640):G=F/3:H|
00009f10  3d 46 2a 32 2f 33 0d 31  d8 28 72 25 28 29 3d 30  |=F*2/3.1.(r%()=0|
00009f20  2c 30 2c 30 2c 30 2c 46  2c 46 2c 46 2c 48 2c 47  |,0,0,0,F,F,F,H,G|
00009f30  2c 47 2c 47 2c 47 2c 46  2c 46 2c 46 2c 46 0d 31  |,G,G,G,F,F,F,F.1|
00009f40  e2 28 67 25 28 29 3d 30  2c 30 2c 46 2c 46 2c 30  |.(g%()=0,0,F,F,0|
00009f50  2c 30 2c 46 2c 48 2c 47  2c 47 2c 46 2c 46 2c 47  |,0,F,H,G,G,F,F,G|
00009f60  2c 47 2c 46 2c 46 0d 31  ec 28 62 25 28 29 3d 30  |,G,F,F.1.(b%()=0|
00009f70  2c 46 2c 30 2c 46 2c 30  2c 46 2c 30 2c 48 2c 47  |,F,0,F,0,F,0,H,G|
00009f80  2c 46 2c 47 2c 46 2c 47  2c 46 2c 47 2c 46 0d 31  |,F,G,F,G,F,G,F.1|
00009f90  f6 56 6d 61 73 6b 69 6e  67 25 3d a3 3a 72 24 3d  |.Vmasking%=.:r$=|
00009fa0  22 46 4e 31 36 30 30 22  3a 73 74 25 3d 31 36 3a  |"FN1600":st%=16:|
00009fb0  cf 23 63 25 3d 31 36 3a  63 61 63 68 65 25 3d b9  |.#c%=16:cache%=.|
00009fc0  3a 72 65 61 6c 72 6f 77  62 79 74 65 73 25 3d 38  |:realrowbytes%=8|
00009fd0  30 3a 72 6f 77 62 79 74  65 73 25 3d 70 6c 62 79  |0:rowbytes%=plby|
00009fe0  74 65 73 25 0d 32 00 53  69 6e 66 6f 24 3d 22 50  |tes%.2.Sinfo$="P|
00009ff0  43 20 45 47 41 20 27 2e  64 73 70 27 20 66 69 6c  |C EGA '.dsp' fil|
0000a000  65 2c 20 36 34 30 20 62  79 20 33 35 30 20 70 69  |e, 640 by 350 pi|
0000a010  78 65 6c 73 2c 20 34 20  62 69 74 73 20 70 65 72  |xels, 4 bits per|
0000a020  20 70 69 78 65 6c 20 28  66 69 78 65 64 20 70 61  | pixel (fixed pa|
0000a030  6c 65 74 74 65 29 22 0d  32 0a 0a c9 20 31 38 30  |lette)".2... 180|
0000a040  30 0d 32 14 3f 73 78 25  3d 37 32 2a 38 3a 73 79  |0.2.?sx%=72*8:sy|
0000a050  25 3d 37 32 30 3a 71 75  61 6e 74 25 3d 31 3a 69  |%=720:quant%=1:i|
0000a060  6e 70 75 74 3d 31 3a cf  23 63 25 3d 73 74 25 3a  |nput=1:.#c%=st%:|
0000a070  70 6c 62 75 66 66 25 3d  a4 64 69 6d 28 37 32 29  |plbuff%=.dim(72)|
0000a080  0d 32 1e 1a 63 61 63 68  65 25 3d b9 3a 63 61 63  |.2..cache%=.:cac|
0000a090  68 65 62 79 74 65 73 25  3d b9 0d 32 28 51 72 25  |hebytes%=..2(Qr%|
0000a0a0  28 30 29 3d 46 3a 67 25  28 30 29 3d 46 3a 62 25  |(0)=F:g%(0)=F:b%|
0000a0b0  28 30 29 3d 46 3a 62 69  67 65 6e 64 69 61 6e 62  |(0)=F:bigendianb|
0000a0c0  69 74 73 3d b9 3a 72 6f  77 62 79 74 65 73 25 3d  |its=.:rowbytes%=|
0000a0d0  37 32 3a 72 24 3d 22 46  4e 31 35 30 31 22 3a 72  |72:r$="FN1501":r|
0000a0e0  6f 77 73 74 6f 67 6f 25  3d 2d 31 0d 32 32 47 e7  |owstogo%=-1.22G.|
0000a0f0  73 63 61 6c 65 25 20 78  6d 75 6c 25 3d 78 6d 75  |scale% xmul%=xmu|
0000a100  6c 25 2a 39 30 3a 78 64  69 76 25 3d 78 64 69 76  |l%*90:xdiv%=xdiv|
0000a110  25 2a 37 32 3a 79 6d 75  6c 25 3d 79 6d 75 6c 25  |%*72:ymul%=ymul%|
0000a120  2a 39 30 3a 79 64 69 76  25 3d 79 64 69 76 25 2a  |*90:ydiv%=ydiv%*|
0000a130  37 32 0d 32 3c 3e 69 6e  66 6f 24 3d 22 4d 61 63  |72.2<>info$="Mac|
0000a140  50 61 69 6e 74 20 66 69  6c 65 2c 20 35 37 36 20  |Paint file, 576 |
0000a150  62 79 20 37 32 30 20 62  69 74 73 2c 20 63 72 65  |by 720 bits, cre|
0000a160  61 74 6f 72 20 69 64 20  22 2b c2 53 24 2c 34 29  |ator id "+.S$,4)|
0000a170  0d 32 46 0a c9 20 31 38  35 30 0d 32 50 0c cf 23  |.2F.. 1850.2P..#|
0000a180  63 25 3d 35 35 32 0d 32  5a 34 63 6f 64 65 25 3d  |c%=552.2Z4code%=|
0000a190  a4 62 65 48 57 3a e7 63  6f 64 65 25 3d 31 20 8f  |.beHW:.code%=1 .|
0000a1a0  23 63 25 3d 8f 23 63 25  2b a4 62 65 48 57 3a 63  |#c%=.#c%+.beHW:c|
0000a1b0  6f 64 65 25 3d a4 62 65  48 57 0d 32 64 0e c8 8e  |ode%=.beHW.2d...|
0000a1c0  20 63 6f 64 65 25 20 ca  0d 32 6e 49 c9 20 26 39  | code% ..2nI. &9|
0000a1d0  38 3a 72 6f 77 62 79 74  65 73 25 3d a4 62 65 48  |8:rowbytes%=.beH|
0000a1e0  57 3a e7 28 72 6f 77 62  79 74 65 73 25 20 80 26  |W:.(rowbytes% .&|
0000a1f0  38 30 30 30 29 3d 30 20  85 34 32 2c 22 50 49 43  |8000)=0 .42,"PIC|
0000a200  54 20 77 69 74 68 6f 75  74 20 50 69 78 6d 61 70  |T without Pixmap|
0000a210  22 0d 32 78 33 73 79 25  3d a4 62 65 48 57 3a 73  |".2x3sy%=.beHW:s|
0000a220  78 25 3d a4 62 65 48 57  3a 73 79 25 3d a4 62 65  |x%=.beHW:sy%=.be|
0000a230  48 57 2d 73 79 25 3a 73  78 25 3d a4 62 65 48 57  |HW-sy%:sx%=.beHW|
0000a240  2d 73 78 25 0d 32 82 3c  6a 75 6e 6b 25 3d a4 48  |-sx%.2.<junk%=.H|
0000a250  57 3a 70 61 63 6b 74 79  70 65 25 3d a4 62 65 48  |W:packtype%=.beH|
0000a260  57 3a 6a 75 6e 6b 25 3d  a4 57 3a 72 65 73 78 25  |W:junk%=.W:resx%|
0000a270  3d a4 62 65 57 3a 72 65  73 79 25 3d a4 62 65 57  |=.beW:resy%=.beW|
0000a280  0d 32 8c 46 e7 a4 62 65  48 57 3c 3e 30 20 d9 23  |.2.F..beHW<>0 .#|
0000a290  63 25 3a 85 34 32 2c 22  43 68 61 6e 67 65 46 53  |c%:.42,"ChangeFS|
0000a2a0  49 20 65 78 70 65 63 74  65 64 20 4d 61 63 20 50  |I expected Mac P|
0000a2b0  49 43 54 32 20 70 69 78  65 6c 74 79 70 65 3d 43  |ICT2 pixeltype=C|
0000a2c0  68 75 6e 6b 79 22 0d 32  96 26 62 70 70 25 3d a4  |hunky".2.&bpp%=.|
0000a2d0  62 65 48 57 3a 6a 75 6e  6b 25 3d a4 62 65 48 57  |beHW:junk%=.beHW|
0000a2e0  3a 6a 75 6e 6b 25 3d a4  62 65 48 57 0d 32 a0 24  |:junk%=.beHW.2.$|
0000a2f0  6a 75 6e 6b 25 3d a4 62  65 57 3a 6a 75 6e 6b 25  |junk%=.beW:junk%|
0000a300  3d a4 62 65 57 3a 6a 75  6e 6b 25 3d a4 62 65 57  |=.beW:junk%=.beW|
0000a310  0d 32 aa 1a 6a 75 6e 6b  25 3d a4 62 65 57 3a 6a  |.2..junk%=.beW:j|
0000a320  75 6e 6b 25 3d a4 62 65  48 57 0d 32 b4 5f 43 25  |unk%=.beHW.2._C%|
0000a330  3d a4 62 65 48 57 3a e3  49 25 3d 30 b8 43 25 3a  |=.beHW:.I%=0.C%:|
0000a340  4a 25 3d a4 62 65 48 57  3a 72 25 28 4a 25 29 3d  |J%=.beHW:r%(J%)=|
0000a350  a4 62 65 48 57 2f 36 35  35 33 35 2a 46 3a 67 25  |.beHW/65535*F:g%|
0000a360  28 4a 25 29 3d a4 62 65  48 57 2f 36 35 35 33 35  |(J%)=.beHW/65535|
0000a370  2a 46 3a 62 25 28 4a 25  29 3d a4 62 65 48 57 2f  |*F:b%(J%)=.beHW/|
0000a380  36 35 35 33 35 2a 46 3a  ed 0d 32 be 52 c9 20 26  |65535*F:..2.R. &|
0000a390  39 41 3a 6a 75 6e 6b 25  3d a4 57 3a 72 6f 77 62  |9A:junk%=.W:rowb|
0000a3a0  79 74 65 73 25 3d a4 62  65 48 57 3a e7 28 72 6f  |ytes%=.beHW:.(ro|
0000a3b0  77 62 79 74 65 73 25 20  80 26 38 30 30 30 29 3d  |wbytes% .&8000)=|
0000a3c0  30 20 85 34 32 2c 22 50  49 43 54 20 77 69 74 68  |0 .42,"PICT with|
0000a3d0  6f 75 74 20 50 69 78 6d  61 70 22 0d 32 c8 33 73  |out Pixmap".2.3s|
0000a3e0  79 25 3d a4 62 65 48 57  3a 73 78 25 3d a4 62 65  |y%=.beHW:sx%=.be|
0000a3f0  48 57 3a 73 79 25 3d a4  62 65 48 57 2d 73 79 25  |HW:sy%=.beHW-sy%|
0000a400  3a 73 78 25 3d a4 62 65  48 57 2d 73 78 25 0d 32  |:sx%=.beHW-sx%.2|
0000a410  d2 3c 6a 75 6e 6b 25 3d  a4 48 57 3a 70 61 63 6b  |.<junk%=.HW:pack|
0000a420  74 79 70 65 25 3d a4 62  65 48 57 3a 6a 75 6e 6b  |type%=.beHW:junk|
0000a430  25 3d a4 57 3a 72 65 73  78 25 3d a4 62 65 57 3a  |%=.W:resx%=.beW:|
0000a440  72 65 73 79 25 3d a4 62  65 57 0d 32 dc 4a e7 a4  |resy%=.beW.2.J..|
0000a450  62 65 48 57 3c 3e 31 36  20 d9 23 63 25 3a 85 34  |beHW<>16 .#c%:.4|
0000a460  32 2c 22 43 68 61 6e 67  65 46 53 49 20 65 78 70  |2,"ChangeFSI exp|
0000a470  65 63 74 65 64 20 4d 61  63 20 50 49 43 54 32 20  |ected Mac PICT2 |
0000a480  70 69 78 65 6c 74 79 70  65 3d 52 47 42 44 69 72  |pixeltype=RGBDir|
0000a490  65 63 74 22 0d 32 e6 27  62 70 70 25 3d a4 62 65  |ect".2.'bpp%=.be|
0000a4a0  48 57 3a 63 6f 6d 70 73  25 3d a4 62 65 48 57 3a  |HW:comps%=.beHW:|
0000a4b0  6a 75 6e 6b 25 3d a4 62  65 48 57 0d 32 f0 19 6a  |junk%=.beHW.2..j|
0000a4c0  75 6e 6b 25 3d a4 62 65  57 3a 6a 75 6e 6b 25 3d  |unk%=.beW:junk%=|
0000a4d0  a4 62 65 57 0d 32 fa 1b  6a 75 6e 6b 25 3d a4 62  |.beW.2..junk%=.b|
0000a4e0  65 48 57 3a 6a 75 6e 6b  25 3d a4 62 65 48 57 0d  |eHW:junk%=.beHW.|
0000a4f0  33 04 56 e7 62 70 70 25  3e 31 36 20 f2 6e 6f 70  |3.V.bpp%>16 .nop|
0000a500  61 6c 20 8b 4a 25 3d 32  5e 28 62 70 70 25 81 33  |al .J%=2^(bpp%.3|
0000a510  29 3a e3 49 25 3d 30 b8  4a 25 2d 31 3a 72 25 28  |):.I%=0.J%-1:r%(|
0000a520  49 25 29 3d 49 25 2f 28  4a 25 2d 31 29 2a 46 3a  |I%)=I%/(J%-1)*F:|
0000a530  ed 3a 67 25 28 29 3d 72  25 28 29 3a 62 25 28 29  |.:g%()=r%():b%()|
0000a540  3d 72 25 28 29 0d 33 0e  2f e7 62 70 70 25 3d 33  |=r%().3./.bpp%=3|
0000a550  32 20 80 20 63 6f 6d 70  73 25 3d 33 20 62 70 70  |2 . comps%=3 bpp|
0000a560  25 3d 32 34 3a 72 6f 77  62 79 74 65 73 25 3d 33  |%=24:rowbytes%=3|
0000a570  2a 73 78 25 0d 33 18 43  7f 3a d9 23 63 25 3a 85  |*sx%.3.C.:.#c%:.|
0000a580  34 32 2c 22 43 68 61 6e  67 65 46 53 49 20 63 61  |42,"ChangeFSI ca|
0000a590  6e 27 74 20 75 6e 64 65  72 73 74 61 6e 64 20 4d  |n't understand M|
0000a5a0  61 63 20 50 49 43 54 32  20 63 6f 64 65 20 22 2b  |ac PICT2 code "+|
0000a5b0  c3 7e 63 6f 64 65 25 0d  33 22 05 cb 0d 33 2c 33  |.~code%.3"...3,3|
0000a5c0  6a 75 6e 6b 25 3d a4 62  65 48 57 3a 6a 75 6e 6b  |junk%=.beHW:junk|
0000a5d0  25 3d a4 62 65 48 57 3a  6a 75 6e 6b 25 3d a4 62  |%=.beHW:junk%=.b|
0000a5e0  65 48 57 3a 6a 75 6e 6b  25 3d a4 62 65 48 57 0d  |eHW:junk%=.beHW.|
0000a5f0  33 36 33 6a 75 6e 6b 25  3d a4 62 65 48 57 3a 6a  |363junk%=.beHW:j|
0000a600  75 6e 6b 25 3d a4 62 65  48 57 3a 6a 75 6e 6b 25  |unk%=.beHW:junk%|
0000a610  3d a4 62 65 48 57 3a 6a  75 6e 6b 25 3d a4 62 65  |=.beHW:junk%=.be|
0000a620  48 57 0d 33 40 0f 6a 75  6e 6b 25 3d a4 62 65 48  |HW.3@.junk%=.beH|
0000a630  57 0d 33 4a 4e 63 61 63  68 65 25 3d b9 3a 63 61  |W.3JNcache%=.:ca|
0000a640  63 68 65 62 79 74 65 73  25 3d b9 3a 62 69 67 65  |chebytes%=.:bige|
0000a650  6e 64 69 61 6e 62 69 74  73 3d b9 3a 73 74 25 3d  |ndianbits=.:st%=|
0000a660  8f 23 63 25 3a 72 6f 77  62 79 74 65 73 25 3d 72  |.#c%:rowbytes%=r|
0000a670  6f 77 62 79 74 65 73 25  80 ac 26 38 30 30 30 0d  |owbytes%..&8000.|
0000a680  33 54 57 e7 73 63 61 6c  65 25 20 78 6d 75 6c 25  |3TW.scale% xmul%|
0000a690  3d 78 6d 75 6c 25 2a 39  30 2a 36 35 35 33 36 3a  |=xmul%*90*65536:|
0000a6a0  78 64 69 76 25 3d 78 64  69 76 25 2a 72 65 73 78  |xdiv%=xdiv%*resx|
0000a6b0  3a 79 6d 75 6c 25 3d 79  6d 75 6c 25 2a 39 30 2a  |:ymul%=ymul%*90*|
0000a6c0  36 35 35 33 36 3a 79 64  69 76 25 3d 79 64 69 76  |65536:ydiv%=ydiv|
0000a6d0  25 2a 72 65 73 79 0d 33  5e 40 69 6e 66 6f 24 3d  |%*resy.3^@info$=|
0000a6e0  22 4d 61 63 20 50 49 43  54 32 2c 20 22 2b c3 73  |"Mac PICT2, "+.s|
0000a6f0  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
0000a700  20 70 69 78 65 6c 73 2c  20 22 2b a4 62 69 74 73  | pixels, "+.bits|
0000a710  28 62 70 70 25 29 0d 33  68 25 70 6c 62 75 66 66  |(bpp%).3h%plbuff|
0000a720  25 3d a4 64 69 6d 28 72  6f 77 62 79 74 65 73 25  |%=.dim(rowbytes%|
0000a730  29 3a e7 62 70 70 25 3e  38 20 8c 0d 33 72 54 72  |):.bpp%>8 ..3rTr|
0000a740  62 6f 25 3d 2d 31 3a 72  62 25 3d 70 6c 62 75 66  |bo%=-1:rb%=plbuf|
0000a750  66 25 2b 73 78 25 3a 67  62 25 3d 70 6c 62 75 66  |f%+sx%:gb%=plbuf|
0000a760  66 25 2b 73 78 25 2a 32  3a 62 62 25 3d 70 6c 62  |f%+sx%*2:bb%=plb|
0000a770  75 66 66 25 2b 73 78 25  2a 33 3a 72 24 3d 22 46  |uff%+sx%*3:r$="F|
0000a780  4e 31 38 35 31 22 3a 69  6e 70 75 74 3d 32 34 0d  |N1851":input=24.|
0000a790  33 7c 3b e7 63 6f 6d 70  73 25 3d 33 20 72 62 25  |3|;.comps%=3 rb%|
0000a7a0  3d 70 6c 62 75 66 66 25  3a 67 62 25 3d 70 6c 62  |=plbuff%:gb%=plb|
0000a7b0  75 66 66 25 2b 73 78 25  3a 62 62 25 3d 70 6c 62  |uff%+sx%:bb%=plb|
0000a7c0  75 66 66 25 2b 73 78 25  2a 32 0d 33 86 05 cd 0d  |uff%+sx%*2.3....|
0000a7d0  33 90 0a c9 20 31 39 30  30 0d 33 9a 12 cf 23 63  |3... 1900.3...#c|
0000a7e0  25 3d 31 3a 43 25 3d 9a  23 63 25 0d 33 a4 3f 45  |%=1:C%=.#c%.3.?E|
0000a7f0  25 3d 9a 23 63 25 3a e7  45 25 3c 3e 31 20 85 20  |%=.#c%:.E%<>1 . |
0000a800  34 32 2c 22 5a 53 6f 66  74 20 2e 50 43 58 20 66  |42,"ZSoft .PCX f|
0000a810  69 6c 65 20 77 69 74 68  20 75 6e 6b 6e 6f 77 6e  |ile with unknown|
0000a820  20 65 6e 63 6f 64 69 6e  67 22 0d 33 ae 37 45 25  | encoding".3.7E%|
0000a830  3d 9a 23 63 25 3a 73 78  25 3d a4 48 57 3a 73 79  |=.#c%:sx%=.HW:sy|
0000a840  25 3d a4 48 57 3a 73 78  25 3d a4 48 57 2b 31 2d  |%=.HW:sx%=.HW+1-|
0000a850  73 78 25 3a 73 79 25 3d  a4 48 57 2b 31 2d 73 79  |sx%:sy%=.HW+1-sy|
0000a860  25 0d 33 b8 4e e7 73 63  61 6c 65 25 20 78 6d 75  |%.3.N.scale% xmu|
0000a870  6c 25 3d 78 6d 75 6c 25  2a 39 30 3a 78 64 69 76  |l%=xmul%*90:xdiv|
0000a880  25 3d 78 64 69 76 25 2a  a4 48 57 3a 79 6d 75 6c  |%=xdiv%*.HW:ymul|
0000a890  25 3d 79 6d 75 6c 25 2a  39 30 3a 79 64 69 76 25  |%=ymul%*90:ydiv%|
0000a8a0  3d 79 64 69 76 25 2a a4  48 57 20 8b e7 a4 57 0d  |=ydiv%*.HW ...W.|
0000a8b0  33 c2 48 cf 23 63 25 3d  36 35 3a 70 6c 61 6e 65  |3.H.#c%=65:plane|
0000a8c0  73 25 3d 9a 23 63 25 3a  70 6c 61 6e 61 72 25 3d  |s%=.#c%:planar%=|
0000a8d0  70 6c 61 6e 65 73 25 3e  31 3a 72 6f 77 62 79 74  |planes%>1:rowbyt|
0000a8e0  65 73 25 3d a4 48 57 3a  62 70 70 25 3d 45 25 2a  |es%=.HW:bpp%=E%*|
0000a8f0  70 6c 61 6e 65 73 25 0d  33 cc 1e 70 63 78 70 61  |planes%.3..pcxpa|
0000a900  6c 3d 31 36 3a e7 62 70  70 25 3e 34 20 80 20 43  |l=16:.bpp%>4 . C|
0000a910  25 3d 35 20 8c 0d 33 d6  2a cf 23 63 25 3d a2 23  |%=5 ..3.*.#c%=.#|
0000a920  63 25 2d 37 36 39 3a e7  9a 23 63 25 3d 31 32 20  |c%-769:..#c%=12 |
0000a930  70 63 78 70 61 6c 3d a2  23 63 25 2d 37 36 38 0d  |pcxpal=.#c%-768.|
0000a940  33 e0 05 cd 0d 33 ea 35  cf 23 63 25 3d 70 63 78  |3....3.5.#c%=pcx|
0000a950  70 61 6c 3a 45 25 3d 30  3a e3 43 25 3d 30 b8 28  |pal:E%=0:.C%=0.(|
0000a960  31 3c 3c 62 70 70 25 29  2a 33 2d 31 3a 45 25 3d  |1<<bpp%)*3-1:E%=|
0000a970  45 25 84 9a 23 63 25 3a  ed 0d 33 f4 33 e7 69 6e  |E%..#c%:..3.3.in|
0000a980  66 6f 25 20 f1 22 2e 50  43 58 20 70 61 6c 65 74  |fo% .".PCX palet|
0000a990  74 65 20 6d 61 73 6b 20  65 73 74 61 62 6c 69 73  |te mask establis|
0000a9a0  68 65 64 20 61 74 20 22  3b 7e 45 25 0d 33 fe 0b  |hed at ";~E%.3..|
0000a9b0  e7 45 25 3d 30 20 8c 0d  34 08 45 e3 43 25 3d 30  |.E%=0 ..4.E.C%=0|
0000a9c0  b8 28 31 3c 3c 62 70 70  25 29 2d 31 3a 72 25 28  |.(1<<bpp%)-1:r%(|
0000a9d0  43 25 29 3d 43 25 2f 28  28 31 3c 3c 62 70 70 25  |C%)=C%/((1<<bpp%|
0000a9e0  29 2d 31 29 2a 46 3a ed  3a 67 25 28 29 3d 72 25  |)-1)*F:.:g%()=r%|
0000a9f0  28 29 3a 62 25 28 29 3d  72 25 28 29 0d 34 12 05  |():b%()=r%().4..|
0000aa00  cc 0d 34 1c 21 cf 23 63  25 3d 70 63 78 70 61 6c  |..4.!.#c%=pcxpal|
0000aa10  3a e3 43 25 3d 30 b8 28  31 3c 3c 62 70 70 25 29  |:.C%=0.(1<<bpp%)|
0000aa20  2d 31 0d 34 26 45 72 25  28 43 25 29 3d 28 9a 23  |-1.4&Er%(C%)=(.#|
0000aa30  63 25 80 45 25 29 2f 45  25 2a 46 3a 67 25 28 43  |c%.E%)/E%*F:g%(C|
0000aa40  25 29 3d 28 9a 23 63 25  80 45 25 29 2f 45 25 2a  |%)=(.#c%.E%)/E%*|
0000aa50  46 3a 62 25 28 43 25 29  3d 28 9a 23 63 25 80 45  |F:b%(C%)=(.#c%.E|
0000aa60  25 29 2f 45 25 2a 46 0d  34 30 05 ed 0d 34 3a 05  |%)/E%*F.40...4:.|
0000aa70  cd 0d 34 44 0b f2 72 65  77 69 6e 64 0d 34 4e 4c  |..4D..rewind.4NL|
0000aa80  70 6c 62 79 74 65 73 25  3d 72 6f 77 62 79 74 65  |plbytes%=rowbyte|
0000aa90  73 25 2a 70 6c 61 6e 65  73 25 3a 70 6c 62 75 66  |s%*planes%:plbuf|
0000aaa0  66 25 3d a4 64 69 6d 28  70 6c 62 79 74 65 73 25  |f%=.dim(plbytes%|
0000aab0  29 3a 63 61 63 68 65 25  3d b9 3a 63 61 63 68 65  |):cache%=.:cache|
0000aac0  62 79 74 65 73 25 3d b9  0d 34 58 45 e7 70 6c 61  |bytes%=..4XE.pla|
0000aad0  6e 61 72 25 20 70 62 75  66 66 25 3d a4 64 69 6d  |nar% pbuff%=.dim|
0000aae0  28 73 78 25 29 20 8b 69  6e 70 75 74 3d 62 70 70  |(sx%) .input=bpp|
0000aaf0  25 3a 62 69 67 65 6e 64  69 61 6e 62 69 74 73 3d  |%:bigendianbits=|
0000ab00  b9 3a 72 24 3d 22 46 4e  31 31 30 30 22 0d 34 62  |.:r$="FN1100".4b|
0000ab10  46 69 6e 66 6f 24 3d 22  5a 53 6f 66 74 20 2e 50  |Finfo$="ZSoft .P|
0000ab20  43 58 20 66 69 6c 65 2c  20 22 2b c3 73 78 25 2b  |CX file, "+.sx%+|
0000ab30  22 20 62 79 20 22 2b c3  73 79 25 2b 22 20 70 69  |" by "+.sy%+" pi|
0000ab40  78 65 6c 73 2c 20 22 2b  a4 62 69 74 73 28 62 70  |xels, "+.bits(bp|
0000ab50  70 25 29 0d 34 6c 0a c9  20 32 30 30 30 0d 34 76  |p%).4l.. 2000.4v|
0000ab60  38 cf 23 63 25 3d 30 3a  4c 25 3d 9a 23 63 25 3a  |8.#c%=0:L%=.#c%:|
0000ab70  43 25 3d 9a 23 63 25 3a  49 25 3d 9a 23 63 25 3a  |C%=.#c%:I%=.#c%:|
0000ab80  4a 25 3d a4 48 57 3a 4b  25 3d a4 48 57 3a 4d 25  |J%=.HW:K%=.HW:M%|
0000ab90  3d 9a 23 63 25 0d 34 80  43 73 78 25 3d a4 57 3a  |=.#c%.4.Csx%=.W:|
0000aba0  73 78 25 3d a4 48 57 3a  73 79 25 3d a4 48 57 3a  |sx%=.HW:sy%=.HW:|
0000abb0  42 25 3d 9a 23 63 25 3a  49 44 25 3d 9a 23 63 25  |B%=.#c%:ID%=.#c%|
0000abc0  3a e7 49 44 25 80 26 31  30 20 68 66 6c 69 70 25  |:.ID%.&10 hflip%|
0000abd0  3d ac 68 66 6c 69 70 25  0d 34 8a 20 e7 28 49 44  |=.hflip%.4. .(ID|
0000abe0  25 20 80 26 32 30 29 3d  30 20 76 66 6c 69 70 25  |% .&20)=0 vflip%|
0000abf0  3d ac 76 66 6c 69 70 25  0d 34 94 18 cf 23 63 25  |=.vflip%.4...#c%|
0000ac00  3d 8f 23 63 25 2b 4c 25  3a c8 8e 20 43 25 20 ca  |=.#c%+L%:.. C% .|
0000ac10  0d 34 9e 11 c9 20 31 3a  e7 4d 25 3d 26 31 38 20  |.4... 1:.M%=&18 |
0000ac20  8c 0d 34 a8 0f e3 43 25  3d 4a 25 b8 4b 25 2d 31  |..4...C%=J%.K%-1|
0000ac30  0d 34 b2 39 62 25 28 43  25 29 3d 9a 23 63 25 2f  |.4.9b%(C%)=.#c%/|
0000ac40  32 35 35 2a 46 3a 67 25  28 43 25 29 3d 9a 23 63  |255*F:g%(C%)=.#c|
0000ac50  25 2f 32 35 35 2a 46 3a  72 25 28 43 25 29 3d 9a  |%/255*F:r%(C%)=.|
0000ac60  23 63 25 2f 32 35 35 2a  46 0d 34 bc 05 ed 0d 34  |#c%/255*F.4....4|
0000ac70  c6 05 cc 0d 34 d0 05 cd  0d 34 da 0c 7f 20 f2 6e  |....4....4... .n|
0000ac80  6f 70 61 6c 0d 34 e4 05  cb 0d 34 ee 0c 73 74 25  |opal.4....4..st%|
0000ac90  3d 8f 23 63 25 0d 34 f8  0b c8 8e 20 49 25 20 ca  |=.#c%.4.... I% .|
0000aca0  0d 35 02 1c c9 20 31 2c  32 2c 33 3a 63 61 63 68  |.5... 1,2,3:cach|
0000acb0  65 25 3d b9 3a e7 42 25  3e 38 20 8c 0d 35 0c 0c  |e%=.:.B%>8 ..5..|
0000acc0  e7 42 25 3e 31 36 20 8c  0d 35 16 4c 69 6e 70 75  |.B%>16 ..5.Linpu|
0000acd0  74 3d 32 34 3a 62 62 6f  25 3d 30 3a 67 62 6f 25  |t=24:bbo%=0:gbo%|
0000ace0  3d 31 3a 72 62 6f 25 3d  32 3a 73 74 65 70 32 34  |=1:rbo%=2:step24|
0000acf0  3d 42 25 81 38 3a 72 24  3d 22 46 4e 32 34 22 3a  |=B%.8:r$="FN24":|
0000ad00  72 6f 77 62 79 74 65 73  25 3d 73 74 65 70 32 34  |rowbytes%=step24|
0000ad10  2a 73 78 25 0d 35 20 05  cc 0d 35 2a 13 72 6f 77  |*sx%.5 ...5*.row|
0000ad20  62 79 74 65 73 25 3d 73  78 25 2a 32 0d 35 34 37  |bytes%=sx%*2.547|
0000ad30  de 20 72 70 61 6c 25 28  32 35 35 29 2c 67 70 61  |. rpal%(255),gpa|
0000ad40  6c 25 28 32 35 35 29 3a  69 6e 70 75 74 3d 31 36  |l%(255):input=16|
0000ad50  3a 73 74 65 70 32 34 3d  32 3a 72 24 3d 22 46 4e  |:step24=2:r$="FN|
0000ad60  31 36 22 0d 35 3e 0d e3  43 25 3d 30 b8 32 35 35  |16".5>..C%=0.255|
0000ad70  0d 35 48 26 67 70 61 6c  25 28 43 25 29 3d 28 43  |.5H&gpal%(C%)=(C|
0000ad80  25 3e 3e 35 29 3c 3c 38  20 84 20 28 43 25 80 33  |%>>5)<<8 . (C%.3|
0000ad90  31 29 3c 3c 31 36 0d 35  52 25 72 70 61 6c 25 28  |1)<<16.5R%rpal%(|
0000ada0  43 25 29 3d 28 43 25 3e  3e 32 29 80 33 31 20 84  |C%)=(C%>>2).31 .|
0000adb0  20 28 43 25 80 33 29 3c  3c 31 31 0d 35 5c 05 ed  | (C%.3)<<11.5\..|
0000adc0  0d 35 66 31 e3 43 25 3d  30 b8 33 31 3a 72 25 28  |.5f1.C%=0.31:r%(|
0000add0  43 25 29 3d 43 25 2f 33  31 2a 46 3a ed 3a 67 25  |C%)=C%/31*F:.:g%|
0000ade0  28 29 3d 72 25 28 29 3a  62 25 28 29 3d 72 25 28  |()=r%():b%()=r%(|
0000adf0  29 0d 35 70 05 cd 0d 35  7a 05 cc 0d 35 84 1a 72  |).5p...5z...5..r|
0000ae00  24 3d 22 46 4e 38 22 3a  72 6f 77 62 79 74 65 73  |$="FN8":rowbytes|
0000ae10  25 3d 73 78 25 0d 35 8e  05 cd 0d 35 98 49 69 6e  |%=sx%.5....5.Iin|
0000ae20  66 6f 24 3d 22 54 72 75  65 76 69 73 69 6f 6e 20  |fo$="Truevision |
0000ae30  54 47 41 20 69 6d 61 67  65 2c 20 22 2b c3 73 78  |TGA image, "+.sx|
0000ae40  25 2b 22 20 62 79 20 22  2b c3 73 79 25 2b 22 20  |%+" by "+.sy%+" |
0000ae50  70 69 78 65 6c 73 2c 20  22 2b a4 62 69 74 73 28  |pixels, "+.bits(|
0000ae60  42 25 29 0d 35 a2 44 c9  20 39 2c 31 30 2c 31 31  |B%).5.D. 9,10,11|
0000ae70  3a 73 74 65 70 32 34 3d  42 25 81 38 3a 72 6f 77  |:step24=B%.8:row|
0000ae80  62 79 74 65 73 25 3d 73  74 65 70 32 34 2a 73 78  |bytes%=step24*sx|
0000ae90  25 3a 62 75 66 66 25 3d  a4 64 69 6d 28 72 6f 77  |%:buff%=.dim(row|
0000aea0  62 79 74 65 73 25 29 0d  35 ac 0b e7 42 25 3e 38  |bytes%).5...B%>8|
0000aeb0  20 8c 0d 35 b6 0c e7 42  25 3e 31 36 20 8c 0d 35  | ..5...B%>16 ..5|
0000aec0  c0 3a 69 6e 70 75 74 3d  32 34 3a 62 62 25 3d 62  |.:input=24:bb%=b|
0000aed0  75 66 66 25 3a 67 62 25  3d 62 75 66 66 25 2b 31  |uff%:gb%=buff%+1|
0000aee0  3a 72 62 25 3d 62 75 66  66 25 2b 32 3a 72 24 3d  |:rb%=buff%+2:r$=|
0000aef0  22 46 4e 32 30 30 32 22  0d 35 ca 05 cc 0d 35 d4  |"FN2002".5....5.|
0000af00  39 de 20 72 70 61 6c 25  28 32 35 35 29 2c 67 70  |9. rpal%(255),gp|
0000af10  61 6c 25 28 32 35 35 29  3a 69 6e 70 75 74 3d 31  |al%(255):input=1|
0000af20  36 3a 73 74 65 70 32 34  3d 32 3a 72 24 3d 22 46  |6:step24=2:r$="F|
0000af30  4e 32 30 30 31 22 0d 35  de 0d e3 43 25 3d 30 b8  |N2001".5...C%=0.|
0000af40  32 35 35 0d 35 e8 26 67  70 61 6c 25 28 43 25 29  |255.5.&gpal%(C%)|
0000af50  3d 28 43 25 3e 3e 35 29  3c 3c 38 20 84 20 28 43  |=(C%>>5)<<8 . (C|
0000af60  25 80 33 31 29 3c 3c 31  36 0d 35 f2 25 72 70 61  |%.31)<<16.5.%rpa|
0000af70  6c 25 28 43 25 29 3d 28  43 25 3e 3e 32 29 80 33  |l%(C%)=(C%>>2).3|
0000af80  31 20 84 20 28 43 25 80  33 29 3c 3c 31 31 0d 35  |1 . (C%.3)<<11.5|
0000af90  fc 05 ed 0d 36 06 31 e3  43 25 3d 30 b8 33 31 3a  |....6.1.C%=0.31:|
0000afa0  72 25 28 43 25 29 3d 43  25 2f 33 31 2a 46 3a ed  |r%(C%)=C%/31*F:.|
0000afb0  3a 67 25 28 29 3d 72 25  28 29 3a 62 25 28 29 3d  |:g%()=r%():b%()=|
0000afc0  72 25 28 29 0d 36 10 05  cd 0d 36 1a 05 cd 0d 36  |r%().6....6....6|
0000afd0  24 4d 69 6e 66 6f 24 3d  22 54 72 75 65 76 69 73  |$Minfo$="Truevis|
0000afe0  69 6f 6e 20 54 47 41 20  52 4c 45 20 69 6d 61 67  |ion TGA RLE imag|
0000aff0  65 2c 20 22 2b c3 73 78  25 2b 22 20 62 79 20 22  |e, "+.sx%+" by "|
0000b000  2b c3 73 79 25 2b 22 20  70 69 78 65 6c 73 2c 20  |+.sy%+" pixels, |
0000b010  22 2b a4 62 69 74 73 28  42 25 29 0d 36 2e 05 cb  |"+.bits(B%).6...|
0000b020  0d 36 38 0a c9 20 32 31  30 30 0d 36 42 3f 71 75  |.68.. 2100.6B?qu|
0000b030  61 6e 74 25 3d 36 3a 73  78 25 3d 35 31 32 3a 72  |ant%=6:sx%=512:r|
0000b040  6f 77 62 79 74 65 73 25  3d 32 2a 73 78 25 3a 73  |owbytes%=2*sx%:s|
0000b050  79 25 3d 32 35 36 3a 63  61 63 68 65 25 3d b9 3a  |y%=256:cache%=.:|
0000b060  72 24 3d 22 46 4e 31 36  22 0d 36 4c 2d de 20 72  |r$="FN16".6L-. r|
0000b070  70 61 6c 25 28 32 35 35  29 2c 67 70 61 6c 25 28  |pal%(255),gpal%(|
0000b080  32 35 35 29 3a 69 6e 70  75 74 3d 31 36 3a 73 74  |255):input=16:st|
0000b090  65 70 32 34 3d 32 0d 36  56 0d e3 43 25 3d 30 b8  |ep24=2.6V..C%=0.|
0000b0a0  32 35 35 0d 36 60 20 67  70 61 6c 25 28 43 25 29  |255.6` gpal%(C%)|
0000b0b0  3d 43 25 3e 3e 33 20 84  20 28 43 25 80 37 29 3c  |=C%>>3 . (C%.7)<|
0000b0c0  3c 31 31 0d 36 6a 25 72  70 61 6c 25 28 43 25 29  |<11.6j%rpal%(C%)|
0000b0d0  3d 28 43 25 80 37 29 3c  3c 38 20 84 20 28 43 25  |=(C%.7)<<8 . (C%|
0000b0e0  3e 3e 33 29 3c 3c 31 36  0d 36 74 05 ed 0d 36 7e  |>>3)<<16.6t...6~|
0000b0f0  27 e3 43 25 3d 30 b8 33  31 3a 72 25 28 43 25 29  |'.C%=0.31:r%(C%)|
0000b100  3d 43 25 2f 33 31 2a 46  3a ed 3a 62 25 28 29 3d  |=C%/31*F:.:b%()=|
0000b110  72 25 28 29 0d 36 88 1d  e3 43 25 3d 30 b8 36 33  |r%().6...C%=0.63|
0000b120  3a 67 25 28 43 25 29 3d  43 25 2f 36 33 2a 46 3a  |:g%(C%)=C%/63*F:|
0000b130  ed 0d 36 92 19 e7 73 63  61 6c 65 25 20 79 6d 75  |..6...scale% ymu|
0000b140  6c 25 3d 79 6d 75 6c 25  2a 32 0d 36 9c 48 69 6e  |l%=ymul%*2.6.Hin|
0000b150  66 6f 24 3d 22 50 69 6e  65 61 70 70 6c 65 20 69  |fo$="Pineapple i|
0000b160  6d 61 67 65 2c 20 35 31  32 20 62 79 20 32 35 36  |mage, 512 by 256|
0000b170  20 70 69 78 65 6c 73 2c  20 31 36 20 62 69 74 73  | pixels, 16 bits|
0000b180  20 70 65 72 20 70 69 78  65 6c 22 3a cf 23 63 25  | per pixel":.#c%|
0000b190  3d 37 0d 36 a6 0a c9 20  32 32 30 30 0d 36 b0 39  |=7.6... 2200.6.9|
0000b1a0  71 75 61 6e 74 25 3d 38  3a 73 74 65 70 32 34 3d  |quant%=8:step24=|
0000b1b0  31 3a cf 23 63 25 3d 30  3a 73 24 3d be 23 63 25  |1:.#c%=0:s$=.#c%|
0000b1c0  3a 45 25 3d a7 73 24 2c  22 3a 22 29 3a 73 74 25  |:E%=.s$,":"):st%|
0000b1d0  3d 8f 23 63 25 0d 36 ba  37 73 78 25 3d bb c1 73  |=.#c%.6.7sx%=..s|
0000b1e0  24 2c 45 25 2b 31 29 3a  73 79 25 3d bb c1 73 24  |$,E%+1):sy%=..s$|
0000b1f0  2c 45 25 2b 32 2b a9 c3  73 78 25 29 3a f2 6e 6f  |,E%+2+..sx%):.no|
0000b200  70 61 6c 3a 69 6e 70 75  74 3d 32 34 0d 36 c4 41  |pal:input=24.6.A|
0000b210  72 6f 77 62 79 74 65 73  25 3d 73 78 25 2a 33 3a  |rowbytes%=sx%*3:|
0000b220  72 62 6f 25 3d 30 3a 67  62 6f 25 3d 73 78 25 3a  |rbo%=0:gbo%=sx%:|
0000b230  62 62 6f 25 3d 32 2a 73  78 25 3a 63 61 63 68 65  |bbo%=2*sx%:cache|
0000b240  25 3d b9 3a 72 24 3d 22  46 4e 32 34 22 0d 36 ce  |%=.:r$="FN24".6.|
0000b250  47 69 6e 66 6f 24 3d 22  49 72 6c 61 6d 20 69 6d  |Ginfo$="Irlam im|
0000b260  61 67 65 2c 20 22 2b c3  73 78 25 2b 22 20 62 79  |age, "+.sx%+" by|
0000b270  20 22 2b c3 73 79 25 2b  22 20 70 69 78 65 6c 73  | "+.sy%+" pixels|
0000b280  2c 20 32 34 20 62 69 74  73 20 70 65 72 20 70 69  |, 24 bits per pi|
0000b290  78 65 6c 22 0d 36 d8 0a  c9 20 32 32 35 30 0d 36  |xel".6... 2250.6|
0000b2a0  e2 48 cf 23 63 25 3d 31  36 3a 73 78 25 3d a4 57  |.H.#c%=16:sx%=.W|
0000b2b0  3a 73 79 25 3d a4 57 3a  de 20 72 70 61 6c 25 28  |:sy%=.W:. rpal%(|
0000b2c0  32 35 35 29 2c 67 70 61  6c 25 28 32 35 35 29 2c  |255),gpal%(255),|
0000b2d0  62 70 61 6c 25 28 32 35  35 29 2c 74 61 62 6c 65  |bpal%(255),table|
0000b2e0  25 28 32 35 35 29 0d 36  ec 15 e3 43 25 3d 30 b8  |%(255).6...C%=0.|
0000b2f0  32 35 35 3a 44 25 3d 43  25 84 31 0d 36 f6 1c 74  |255:D%=C%.1.6..t|
0000b300  61 62 6c 65 25 28 43 25  29 3d 28 44 25 2d 31 36  |able%(C%)=(D%-16|
0000b310  29 2f 32 31 39 2a 46 0d  37 00 13 e7 44 25 80 31  |)/219*F.7...D%.1|
0000b320  32 38 20 44 25 2d 3d 32  35 36 0d 37 0a 29 72 25  |28 D%-=256.7.)r%|
0000b330  28 43 25 29 3d a8 28 44  25 2f 31 36 30 2a 46 29  |(C%)=.(D%/160*F)|
0000b340  3a 62 25 28 43 25 29 3d  a8 28 44 25 2f 31 32 36  |:b%(C%)=.(D%/126|
0000b350  2a 46 29 0d 37 14 3e 67  25 28 43 25 29 3d a8 28  |*F).7.>g%(C%)=.(|
0000b360  2d 44 25 2f 31 36 30 2a  72 77 74 2f 67 77 74 2a  |-D%/160*rwt/gwt*|
0000b370  46 29 3a 67 70 61 6c 25  28 43 25 29 3d a8 28 2d  |F):gpal%(C%)=.(-|
0000b380  44 25 2f 31 32 36 2a 62  77 74 2f 67 77 74 2a 46  |D%/126*bwt/gwt*F|
0000b390  29 0d 37 1e 05 ed 0d 37  28 2c 74 61 62 6c 65 25  |).7....7(,table%|
0000b3a0  28 29 3d 30 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |()=0,0,0,0,0,0,0|
0000b3b0  2c 30 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |,0,0,0,0,0,0,0,0|
0000b3c0  2c 30 0d 37 32 35 73 74  25 3d 33 32 3a cf 23 63  |,0.725st%=32:.#c|
0000b3d0  25 3d 33 32 3a 63 61 63  68 65 25 3d b9 3a 72 6f  |%=32:cache%=.:ro|
0000b3e0  77 62 79 74 65 73 25 3d  32 2a 73 78 25 3a 69 6e  |wbytes%=2*sx%:in|
0000b3f0  70 75 74 3d 34 31 31 0d  37 3c 3c 69 6e 66 6f 24  |put=411.7<<info$|
0000b400  3d 22 49 72 6c 61 6d 20  59 55 56 20 34 3a 31 3a  |="Irlam YUV 4:1:|
0000b410  31 20 66 69 6c 65 20 22  2b c3 73 78 25 2b 22 20  |1 file "+.sx%+" |
0000b420  62 79 20 22 2b c3 73 79  25 2b 22 20 70 69 78 65  |by "+.sy%+" pixe|
0000b430  6c 73 22 0d 37 46 0a c9  20 32 33 30 30 0d 37 50  |ls".7F.. 2300.7P|
0000b440  39 cf 23 63 25 3d 36 3a  73 78 25 3d a4 48 57 3a  |9.#c%=6:sx%=.HW:|
0000b450  73 79 25 3d a4 48 57 3a  44 25 3d 9a 23 63 25 3a  |sy%=.HW:D%=.#c%:|
0000b460  6e 63 6f 6c 6f 72 73 25  3d 9a 23 63 25 3a 69 6e  |ncolors%=.#c%:in|
0000b470  70 75 74 3d 32 34 0d 37  5a 3b 76 66 6c 69 70 25  |put=24.7Z;vflip%|
0000b480  3d ac 76 66 6c 69 70 25  3a 71 75 61 6e 74 25 3d  |=.vflip%:quant%=|
0000b490  9a 23 63 25 3a 6e 63 6d  61 70 25 3d 9a 23 63 25  |.#c%:ncmap%=.#c%|
0000b4a0  3a 63 6d 61 70 6c 65 6e  25 3d 31 3c 3c 9a 23 63  |:cmaplen%=1<<.#c|
0000b4b0  25 0d 37 64 21 f2 6e 6f  70 61 6c 3a 62 61 63 6b  |%.7d!.nopal:back|
0000b4c0  25 3d a4 64 69 6d 28 34  29 3a 21 62 61 63 6b 25  |%=.dim(4):!back%|
0000b4d0  3d 30 0d 37 6e 12 63 6c  72 66 69 72 73 74 25 3d  |=0.7n.clrfirst%=|
0000b4e0  44 25 80 31 0d 37 78 0f  e7 28 44 25 80 32 29 3d  |D%.1.7x..(D%.2)=|
0000b4f0  30 20 8c 0d 37 82 24 e3  49 25 3d 30 b8 6e 63 6f  |0 ..7.$.I%=0.nco|
0000b500  6c 6f 72 73 25 2d 31 3a  62 61 63 6b 25 3f 49 25  |lors%-1:back%?I%|
0000b510  3d 9a 23 63 25 3a ed 0d  37 8c 19 e7 28 6e 63 6f  |=.#c%:..7...(nco|
0000b520  6c 6f 72 73 25 80 31 29  3d 30 20 e7 9a 23 63 25  |lors%.1)=0 ..#c%|
0000b530  0d 37 96 05 cd 0d 37 a0  1a e7 44 25 80 34 20 61  |.7....7...D%.4 a|
0000b540  6c 70 68 61 25 3d a4 64  69 6d 28 73 78 25 29 0d  |lpha%=.dim(sx%).|
0000b550  37 aa 0f e7 6e 63 6d 61  70 25 3e 30 20 8c 0d 37  |7...ncmap%>0 ..7|
0000b560  b4 29 e3 49 25 3d 30 b8  63 6d 61 70 6c 65 6e 25  |.).I%=0.cmaplen%|
0000b570  2d 31 3a 72 25 28 49 25  29 3d a4 48 57 2f 26 46  |-1:r%(I%)=.HW/&F|
0000b580  46 30 30 2a 46 3a ed 0d  37 be 29 e3 49 25 3d 30  |F00*F:..7.).I%=0|
0000b590  b8 63 6d 61 70 6c 65 6e  25 2d 31 3a 67 25 28 49  |.cmaplen%-1:g%(I|
0000b5a0  25 29 3d a4 48 57 2f 26  46 46 30 30 2a 46 3a ed  |%)=.HW/&FF00*F:.|
0000b5b0  0d 37 c8 29 e3 49 25 3d  30 b8 63 6d 61 70 6c 65  |.7.).I%=0.cmaple|
0000b5c0  6e 25 2d 31 3a 62 25 28  49 25 29 3d a4 48 57 2f  |n%-1:b%(I%)=.HW/|
0000b5d0  26 46 46 30 30 2a 46 3a  ed 0d 37 d2 05 cd 0d 37  |&FF00*F:..7....7|
0000b5e0  dc 0b e7 44 25 80 38 20  8c 0d 37 e6 25 cf 23 63  |...D%.8 ..7.%.#c|
0000b5f0  25 3d a4 48 57 2b 8f 23  63 25 3a e7 8f 23 63 25  |%=.HW+.#c%:..#c%|
0000b600  80 31 20 8f 23 63 25 3d  8f 23 63 25 2b 31 0d 37  |.1 .#c%=.#c%+1.7|
0000b610  f0 05 cd 0d 37 fa 48 73  74 25 3d 8f 23 63 25 3a  |....7.Hst%=.#c%:|
0000b620  62 75 66 66 25 3d a4 64  69 6d 28 73 78 25 2a 33  |buff%=.dim(sx%*3|
0000b630  29 3a 72 62 25 3d 62 75  66 66 25 3a 67 62 25 3d  |):rb%=buff%:gb%=|
0000b640  62 75 66 66 25 2b 31 2a  73 78 25 3a 62 62 25 3d  |buff%+1*sx%:bb%=|
0000b650  62 75 66 66 25 2b 32 2a  73 78 25 0d 38 04 0b f2  |buff%+2*sx%.8...|
0000b660  72 65 77 69 6e 64 0d 38  0e 50 69 6e 66 6f 24 3d  |rewind.8.Pinfo$=|
0000b670  22 55 74 61 68 20 72 6c  65 20 69 6d 61 67 65 2c  |"Utah rle image,|
0000b680  20 22 2b c3 73 78 25 2b  22 20 62 79 20 22 2b c3  | "+.sx%+" by "+.|
0000b690  73 79 25 2b 22 20 70 69  78 65 6c 73 2c 20 22 2b  |sy%+" pixels, "+|
0000b6a0  a4 62 69 74 73 28 6e 63  6f 6c 6f 72 73 25 2a 71  |.bits(ncolors%*q|
0000b6b0  75 61 6e 74 25 29 0d 38  18 0a c9 20 32 34 30 30  |uant%).8... 2400|
0000b6c0  0d 38 22 29 cf 23 63 25  3d 26 30 61 3a 73 74 25  |.8").#c%=&0a:st%|
0000b6d0  3d a4 57 3a 70 61 6c 25  3d a4 57 3a 73 78 25 3d  |=.W:pal%=.W:sx%=|
0000b6e0  a4 57 3a 73 79 25 3d a4  57 0d 38 2c 36 cf 23 63  |.W:sy%=.W.8,6.#c|
0000b6f0  25 3d 26 31 63 3a 69 6e  70 75 74 3d 9a 23 63 25  |%=&1c:input=.#c%|
0000b700  3a 62 69 67 65 6e 64 69  61 6e 62 69 74 73 3d b9  |:bigendianbits=.|
0000b710  3a 76 66 6c 69 70 25 3d  ac 76 66 6c 69 70 25 0d  |:vflip%=.vflip%.|
0000b720  38 36 0e c8 8e 20 69 6e  70 75 74 20 ca 0d 38 40  |86... input ..8@|
0000b730  1a c9 20 31 3a 72 6f 77  62 79 74 65 73 25 3d 73  |.. 1:rowbytes%=s|
0000b740  78 25 2b 37 3e 3e 33 0d  38 4a 1a c9 20 34 3a 72  |x%+7>>3.8J.. 4:r|
0000b750  6f 77 62 79 74 65 73 25  3d 73 78 25 2b 31 3e 3e  |owbytes%=sx%+1>>|
0000b760  31 0d 38 54 15 c9 20 38  3a 72 6f 77 62 79 74 65  |1.8T.. 8:rowbyte|
0000b770  73 25 3d 73 78 25 0d 38  5e 34 7f 20 85 20 34 32  |s%=sx%.8^4. . 42|
0000b780  2c 22 2e 42 4d 50 20 66  69 6c 65 20 6f 66 20 75  |,".BMP file of u|
0000b790  6e 75 73 75 61 6c 20 64  65 70 74 68 20 28 22 2b  |nusual depth ("+|
0000b7a0  c3 69 6e 70 75 74 2b 22  29 22 0d 38 68 05 cb 0d  |.input+")".8h...|
0000b7b0  38 72 1c 72 6f 77 62 79  74 65 73 25 3d 72 6f 77  |8r.rowbytes%=row|
0000b7c0  62 79 74 65 73 25 2b 33  80 ac 33 0d 38 7c 1c cf  |bytes%+3..3.8|..|
0000b7d0  23 63 25 3d 26 33 36 3a  e3 43 25 3d 30 b8 32 5e  |#c%=&36:.C%=0.2^|
0000b7e0  69 6e 70 75 74 2d 31 0d  38 86 3f 62 25 28 43 25  |input-1.8.?b%(C%|
0000b7f0  29 3d 9a 23 63 25 2f 32  35 35 2a 46 3a 67 25 28  |)=.#c%/255*F:g%(|
0000b800  43 25 29 3d 9a 23 63 25  2f 32 35 35 2a 46 3a 72  |C%)=.#c%/255*F:r|
0000b810  25 28 43 25 29 3d 9a 23  63 25 2f 32 35 35 2a 46  |%(C%)=.#c%/255*F|
0000b820  3a e7 9a 23 63 25 0d 38  90 05 ed 0d 38 9a 1e 72  |:..#c%.8....8..r|
0000b830  24 3d 22 46 4e 38 22 3a  73 74 25 3d 8f 23 63 25  |$="FN8":st%=.#c%|
0000b840  3a 63 61 63 68 65 25 3d  b9 0d 38 a4 4e 69 6e 66  |:cache%=..8.Ninf|
0000b850  6f 24 3d 22 57 69 6e 64  6f 77 73 20 33 2e 30 20  |o$="Windows 3.0 |
0000b860  2e 42 4d 50 20 69 6d 61  67 65 2c 20 22 2b c3 73  |.BMP image, "+.s|
0000b870  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
0000b880  20 70 69 78 65 6c 73 2c  20 22 2b a4 62 69 74 73  | pixels, "+.bits|
0000b890  28 69 6e 70 75 74 29 0d  38 ae 0a c9 20 32 35 30  |(input).8... 250|
0000b8a0  30 0d 38 b8 32 cf 23 63  25 3d 30 3a 73 24 3d 22  |0.8.2.#c%=0:s$="|
0000b8b0  22 3a 43 25 3d 9a 23 63  25 3a c8 95 43 25 3c 3e  |":C%=.#c%:..C%<>|
0000b8c0  30 20 73 24 2b 3d bd 43  25 3a 43 25 3d 9a 23 63  |0 s$+=.C%:C%=.#c|
0000b8d0  25 3a ce 0d 38 c2 37 73  24 2b 3d 22 20 76 65 72  |%:..8.7s$+=" ver|
0000b8e0  73 69 6f 6e 20 22 2b c3  a4 57 3a 73 78 25 3d a4  |sion "+..W:sx%=.|
0000b8f0  57 3a 73 79 25 3d a4 57  3a 69 6e 70 75 74 3d a4  |W:sy%=.W:input=.|
0000b900  57 3a 63 61 63 68 65 25  3d b9 0d 38 cc 5f 69 6e  |W:cache%=..8._in|
0000b910  66 6f 24 3d 22 21 54 72  61 6e 73 6c 61 74 6f 72  |fo$="!Translator|
0000b920  20 43 6c 65 61 72 20 66  6f 72 6d 61 74 20 6d 61  | Clear format ma|
0000b930  64 65 20 62 79 20 22 2b  73 24 2b 22 2c 20 22 2b  |de by "+s$+", "+|
0000b940  c3 73 78 25 2b 22 20 62  79 20 22 2b c3 73 79 25  |.sx%+" by "+.sy%|
0000b950  2b 22 20 70 69 78 65 6c  73 2c 20 22 2b a4 62 69  |+" pixels, "+.bi|
0000b960  74 73 28 69 6e 70 75 74  29 0d 38 d6 0e e7 69 6e  |ts(input).8...in|
0000b970  70 75 74 3e 38 20 8c 0d  38 e0 4b f2 6e 6f 70 61  |put>8 ..8.K.nopa|
0000b980  6c 3a 69 6e 70 75 74 3d  32 34 3a 73 74 65 70 32  |l:input=24:step2|
0000b990  34 3d 33 3a 72 6f 77 62  79 74 65 73 25 3d 33 2a  |4=3:rowbytes%=3*|
0000b9a0  73 78 25 3a 72 62 6f 25  3d 30 3a 67 62 6f 25 3d  |sx%:rbo%=0:gbo%=|
0000b9b0  31 3a 62 62 6f 25 3d 32  3a 72 24 3d 22 46 4e 32  |1:bbo%=2:r$="FN2|
0000b9c0  34 22 0d 38 ea 05 cc 0d  38 f4 13 e3 43 25 3d 30  |4".8....8...C%=0|
0000b9d0  b8 32 5e 69 6e 70 75 74  2d 31 0d 38 fe 39 72 25  |.2^input-1.8.9r%|
0000b9e0  28 43 25 29 3d 9a 23 63  25 2f 32 35 35 2a 46 3a  |(C%)=.#c%/255*F:|
0000b9f0  67 25 28 43 25 29 3d 9a  23 63 25 2f 32 35 35 2a  |g%(C%)=.#c%/255*|
0000ba00  46 3a 62 25 28 43 25 29  3d 9a 23 63 25 2f 32 35  |F:b%(C%)=.#c%/25|
0000ba10  35 2a 46 0d 39 08 05 ed  0d 39 12 22 69 6e 70 75  |5*F.9....9."inpu|
0000ba20  74 3d 38 3a 72 24 3d 22  46 4e 38 22 3a 72 6f 77  |t=8:r$="FN8":row|
0000ba30  62 79 74 65 73 25 3d 73  78 25 0d 39 1c 05 cd 0d  |bytes%=sx%.9....|
0000ba40  39 26 0c 73 74 25 3d 8f  23 63 25 0d 39 30 0a c9  |9&.st%=.#c%.90..|
0000ba50  20 32 36 30 30 0d 39 3a  12 cf 23 63 25 3d 30 3a  | 2600.9:..#c%=0:|
0000ba60  43 25 3d 9a 23 63 25 0d  39 44 13 44 25 3d 9a 23  |C%=.#c%.9D.D%=.#|
0000ba70  63 25 3a c8 8e 20 44 25  20 ca 0d 39 4e 21 c9 20  |c%:.. D% ..9N!. |
0000ba80  30 3a 73 78 25 3d 33 32  30 3a 73 79 25 3d 32 30  |0:sx%=320:sy%=20|
0000ba90  30 3a 70 6c 61 6e 65 73  25 3d 34 0d 39 58 21 c9  |0:planes%=4.9X!.|
0000baa0  20 31 3a 73 78 25 3d 36  34 30 3a 73 79 25 3d 32  | 1:sx%=640:sy%=2|
0000bab0  30 30 3a 70 6c 61 6e 65  73 25 3d 32 0d 39 62 21  |00:planes%=2.9b!|
0000bac0  c9 20 32 3a 73 78 25 3d  36 34 30 3a 73 79 25 3d  |. 2:sx%=640:sy%=|
0000bad0  34 30 30 3a 70 6c 61 6e  65 73 25 3d 31 0d 39 6c  |400:planes%=1.9l|
0000bae0  3f 7f 20 85 34 32 2c 22  43 68 61 6e 67 65 46 53  |?. .42,"ChangeFS|
0000baf0  49 20 6b 6e 6f 77 73 20  6e 6f 74 68 69 6e 67 20  |I knows nothing |
0000bb00  6f 66 20 22 2b c3 43 25  2b 22 20 74 79 70 65 20  |of "+.C%+" type |
0000bb10  44 65 67 61 73 20 66 69  6c 65 73 22 0d 39 76 05  |Degas files".9v.|
0000bb20  cb 0d 39 80 5d e3 49 25  3d 30 b8 28 31 3c 3c 69  |..9.].I%=0.(1<<i|
0000bb30  6e 70 75 74 29 2d 31 3a  44 25 3d a4 62 65 48 57  |nput)-1:D%=.beHW|
0000bb40  3a 72 25 28 49 25 29 3d  28 44 25 3e 3e 38 80 37  |:r%(I%)=(D%>>8.7|
0000bb50  29 2f 37 2a 46 3a 67 25  28 49 25 29 3d 28 44 25  |)/7*F:g%(I%)=(D%|
0000bb60  3e 3e 34 80 37 29 2f 37  2a 46 3a 62 25 28 49 25  |>>4.7)/7*F:b%(I%|
0000bb70  29 3d 28 44 25 80 37 29  2f 37 2a 46 3a ed 0d 39  |)=(D%.7)/7*F:..9|
0000bb80  8a 3c 63 61 63 68 65 25  3d b9 3a 70 6c 61 6e 61  |.<cache%=.:plana|
0000bb90  72 25 3d b9 3a 6d 61 73  6b 69 6e 67 25 3d a3 3a  |r%=.:masking%=.:|
0000bba0  73 74 25 3d 33 34 3a cf  23 63 25 3d 33 34 3a 72  |st%=34:.#c%=34:r|
0000bbb0  24 3d 22 46 4e 31 36 30  30 22 0d 39 94 48 72 6f  |$="FN1600".9.Hro|
0000bbc0  77 62 79 74 65 73 25 3d  28 73 78 25 2b 31 35 3e  |wbytes%=(sx%+15>|
0000bbd0  3e 34 29 3c 3c 31 3a 70  6c 62 79 74 65 73 25 3d  |>4)<<1:plbytes%=|
0000bbe0  72 6f 77 62 79 74 65 73  25 2a 70 6c 61 6e 65 73  |rowbytes%*planes|
0000bbf0  25 3a 70 62 75 66 66 25  3d a4 64 69 6d 28 73 78  |%:pbuff%=.dim(sx|
0000bc00  25 29 0d 39 9e 6a e7 43  25 80 31 32 38 20 72 24  |%).9.j.C%.128 r$|
0000bc10  3d 22 46 4e 31 36 30 31  22 3a 66 6c 61 67 3d 31  |="FN1601":flag=1|
0000bc20  36 30 30 3a 63 61 63 68  65 62 79 74 65 73 25 3d  |600:cachebytes%=|
0000bc30  b9 3a 70 6c 62 75 66 66  25 3d a4 64 69 6d 28 70  |.:plbuff%=.dim(p|
0000bc40  6c 62 79 74 65 73 25 29  20 8b 72 65 61 6c 72 6f  |lbytes%) .realro|
0000bc50  77 62 79 74 65 73 25 3d  32 3a 72 6f 77 62 79 74  |wbytes%=2:rowbyt|
0000bc60  65 73 25 3d 70 6c 62 79  74 65 73 25 0d 39 a8 43  |es%=plbytes%.9.C|
0000bc70  69 6e 66 6f 24 3d 22 44  65 67 61 73 20 66 69 6c  |info$="Degas fil|
0000bc80  65 20 22 2b c3 73 78 25  2b 22 20 62 79 20 22 2b  |e "+.sx%+" by "+|
0000bc90  c3 73 79 25 2b 22 20 70  69 78 65 6c 73 2c 20 22  |.sy%+" pixels, "|
0000bca0  2b a4 62 69 74 73 28 70  6c 61 6e 65 73 25 29 0d  |+.bits(planes%).|
0000bcb0  39 b2 0a c9 20 32 37 30  30 0d 39 bc 1a cf 23 63  |9... 2700.9...#c|
0000bcc0  25 3d 34 3a 73 78 25 3d  a4 48 57 3a 73 79 25 3d  |%=4:sx%=.HW:sy%=|
0000bcd0  a4 48 57 0d 39 c6 0c c8  8e 20 a4 48 57 20 ca 0d  |.HW.9.... .HW ..|
0000bce0  39 d0 32 c9 20 26 41 46  3a 72 6f 77 62 79 74 65  |9.2. &AF:rowbyte|
0000bcf0  73 25 3d 73 78 25 3a 63  61 63 68 65 25 3d b9 3a  |s%=sx%:cache%=.:|
0000bd00  72 24 3d 22 46 4e 38 22  3a 73 74 25 3d 26 33 30  |r$="FN8":st%=&30|
0000bd10  41 0d 39 da 52 7f 20 d9  23 63 25 3a 85 20 34 32  |A.9.R. .#c%:. 42|
0000bd20  2c 22 50 61 6e 69 63 20  69 6e 20 43 6f 6c 6f 52  |,"Panic in ColoR|
0000bd30  49 58 20 72 65 61 64 69  6e 67 20 2d 20 43 68 61  |IX reading - Cha|
0000bd40  6e 67 65 46 53 49 20 6c  61 72 67 65 6c 79 20 69  |ngeFSI largely i|
0000bd50  67 6e 6f 72 61 6e 74 20  6f 66 20 66 6f 72 6d 61  |gnorant of forma|
0000bd60  74 21 22 0d 39 e4 05 cb  0d 39 ee 13 e3 43 25 3d  |t!".9....9...C%=|
0000bd70  30 b8 32 5e 69 6e 70 75  74 2d 31 0d 39 f8 36 72  |0.2^input-1.9.6r|
0000bd80  25 28 43 25 29 3d 9a 23  63 25 2f 36 33 2a 46 3a  |%(C%)=.#c%/63*F:|
0000bd90  67 25 28 43 25 29 3d 9a  23 63 25 2f 36 33 2a 46  |g%(C%)=.#c%/63*F|
0000bda0  3a 62 25 28 43 25 29 3d  9a 23 63 25 2f 36 33 2a  |:b%(C%)=.#c%/63*|
0000bdb0  46 0d 3a 02 05 ed 0d 3a  0c 0c cf 23 63 25 3d 73  |F.:....:...#c%=s|
0000bdc0  74 25 0d 3a 16 43 69 6e  66 6f 24 3d 22 43 6f 6c  |t%.:.Cinfo$="Col|
0000bdd0  6f 52 49 58 20 66 69 6c  65 20 22 2b c3 73 78 25  |oRIX file "+.sx%|
0000bde0  2b 22 20 62 79 20 22 2b  c3 73 79 25 2b 22 20 70  |+" by "+.sy%+" p|
0000bdf0  69 78 65 6c 73 2c 20 22  2b a4 62 69 74 73 28 69  |ixels, "+.bits(i|
0000be00  6e 70 75 74 29 0d 3a 20  0a c9 20 32 38 30 30 0d  |nput).: .. 2800.|
0000be10  3a 2a 21 cf 23 63 25 3d  30 3a f5 20 73 24 3d a4  |:*!.#c%=0:. s$=.|
0000be20  66 69 74 73 3a c8 8e 20  c0 73 24 2c 38 29 20 ca  |fits:.. .s$,8) .|
0000be30  0d 3a 34 51 c9 20 22 53  49 4d 50 4c 45 20 20 22  |.:4Q. "SIMPLE  "|
0000be40  3a e7 c1 73 24 2c 33 30  2c 31 29 3c 3e 22 54 22  |:..s$,30,1)<>"T"|
0000be50  20 85 34 32 2c 22 43 68  61 6e 67 65 46 53 49 20  | .42,"ChangeFSI |
0000be60  63 61 6e 20 6f 6e 6c 79  20 72 65 61 64 20 53 69  |can only read Si|
0000be70  6d 70 6c 65 20 46 49 54  53 20 66 6f 72 6d 61 74  |mple FITS format|
0000be80  22 0d 3a 3e 1f c9 20 22  42 49 54 50 49 58 20 20  |".:>.. "BITPIX  |
0000be90  22 3a 69 6e 70 75 74 3d  bb c1 73 24 2c 31 30 29  |":input=..s$,10)|
0000bea0  0d 3a 48 4a c9 20 22 4e  41 58 49 53 20 20 20 22  |.:HJ. "NAXIS   "|
0000beb0  3a e7 bb c1 73 24 2c 31  30 29 3c 3e 32 20 85 34  |:...s$,10)<>2 .4|
0000bec0  32 2c 22 43 68 61 6e 67  65 46 53 49 20 63 61 6e  |2,"ChangeFSI can|
0000bed0  20 6f 6e 6c 79 20 72 65  61 64 20 32 64 20 46 49  | only read 2d FI|
0000bee0  54 53 20 69 6d 61 67 65  73 22 0d 3a 52 1d c9 20  |TS images".:R.. |
0000bef0  22 4e 41 58 49 53 31 20  20 22 3a 73 78 25 3d bb  |"NAXIS1  ":sx%=.|
0000bf00  c1 73 24 2c 31 30 29 0d  3a 5c 1d c9 20 22 4e 41  |.s$,10).:\.. "NA|
0000bf10  58 49 53 32 20 20 22 3a  73 79 25 3d bb c1 73 24  |XIS2  ":sy%=..s$|
0000bf20  2c 31 30 29 0d 3a 66 10  c9 20 22 45 4e 44 20 20  |,10).:f.. "END  |
0000bf30  20 20 20 22 0d 3a 70 27  7f 20 e7 69 6e 66 6f 25  |   ".:p'. .info%|
0000bf40  20 f1 22 49 67 6e 6f 72  69 6e 67 20 46 49 54 53  | ."Ignoring FITS|
0000bf50  20 72 65 63 6f 72 64 20  22 73 24 0d 3a 7a 05 cb  | record "s$.:z..|
0000bf60  0d 3a 84 16 fd c0 73 24  2c 38 29 3d 22 45 4e 44  |.:....s$,8)="END|
0000bf70  20 20 20 20 20 22 0d 3a  8e 2e 73 74 25 3d 28 8f  |     ".:..st%=(.|
0000bf80  23 63 25 81 32 38 38 30  20 2b 20 31 29 2a 32 38  |#c%.2880 + 1)*28|
0000bf90  38 30 3a 63 61 63 68 65  25 3d b9 3a cf 23 63 25  |80:cache%=.:.#c%|
0000bfa0  3d 73 74 25 0d 3a 98 0e  c8 8e 20 69 6e 70 75 74  |=st%.:.... input|
0000bfb0  20 ca 0d 3a a2 25 c9 20  38 3a 72 24 3d 22 46 4e  | ..:.%. 8:r$="FN|
0000bfc0  38 22 3a 72 6f 77 62 79  74 65 73 25 3d 73 78 25  |8":rowbytes%=sx%|
0000bfd0  3a f2 6e 6f 70 61 6c 0d  3a ac 43 c9 20 31 36 3a  |:.nopal.:.C. 16:|
0000bfe0  72 6f 77 62 79 74 65 73  25 3d 32 2a 73 78 25 3a  |rowbytes%=2*sx%:|
0000bff0  de 20 72 70 61 6c 25 28  32 35 35 29 2c 67 70 61  |. rpal%(255),gpa|
0000c000  6c 25 28 32 35 35 29 3a  73 74 65 70 32 34 3d 32  |l%(255):step24=2|
0000c010  3a 72 24 3d 22 46 4e 31  36 22 0d 3a b6 0d e3 43  |:r$="FN16".:...C|
0000c020  25 3d 30 b8 32 35 35 0d  3a c0 13 67 70 61 6c 25  |%=0.255.:..gpal%|
0000c030  28 43 25 29 3d 43 25 3c  3c 38 0d 3a ca 10 72 70  |(C%)=C%<<8.:..rp|
0000c040  61 6c 25 28 43 25 29 3d  43 25 0d 3a d4 20 ed 3a  |al%(C%)=C%.:. .:|
0000c050  63 68 65 61 74 25 3d 30  3a e7 69 6e 76 65 72 74  |cheat%=0:.invert|
0000c060  25 20 63 68 65 61 74 25  3d 46 0d 3a de 65 e3 43  |% cheat%=F.:.e.C|
0000c070  25 3d 30 b8 32 35 35 3a  72 25 28 43 25 29 3d 63  |%=0.255:r%(C%)=c|
0000c080  68 65 61 74 25 2b 43 25  2f 36 35 35 33 35 2a 46  |heat%+C%/65535*F|
0000c090  3a 67 25 28 43 25 29 3d  28 28 43 25 82 26 38 30  |:g%(C%)=((C%.&80|
0000c0a0  29 3c 3c 38 29 2f 36 35  35 33 35 2a 46 3a 62 25  |)<<8)/65535*F:b%|
0000c0b0  28 43 25 29 3d 63 68 65  61 74 25 3a ed 3a 72 77  |(C%)=cheat%:.:rw|
0000c0c0  74 3d 31 3a 67 77 74 3d  31 3a 62 77 74 3d 31 0d  |t=1:gwt=1:bwt=1.|
0000c0d0  3a e8 51 7f 20 85 20 34  32 2c 22 43 68 61 6e 67  |:.Q. . 42,"Chang|
0000c0e0  65 46 53 49 20 63 61 6e  27 74 20 72 65 61 64 20  |eFSI can't read |
0000c0f0  61 20 46 49 54 53 20 69  6d 61 67 65 20 77 69 74  |a FITS image wit|
0000c100  68 20 74 68 69 73 20 6e  75 6d 62 65 72 20 6f 66  |h this number of|
0000c110  20 62 69 74 73 20 70 65  72 20 70 69 78 65 6c 22  | bits per pixel"|
0000c120  0d 3a f2 05 cb 0d 3a fc  40 69 6e 66 6f 24 3d 22  |.:....:.@info$="|
0000c130  46 49 54 53 20 66 69 6c  65 20 22 2b c3 73 78 25  |FITS file "+.sx%|
0000c140  2b 22 20 62 79 20 22 2b  c3 73 79 25 2b 22 20 70  |+" by "+.sy%+" p|
0000c150  69 78 65 6c 73 2c 20 22  2b a4 62 69 74 73 28 69  |ixels, "+.bits(i|
0000c160  6e 70 75 74 29 0d 3b 06  0a c9 20 32 39 30 30 0d  |nput).;... 2900.|
0000c170  3b 10 3c cf 23 63 25 3d  34 3a 73 78 25 3d a4 62  |;.<.#c%=4:sx%=.b|
0000c180  65 48 57 3a 73 79 25 3d  a4 62 65 48 57 3a cf 23  |eHW:sy%=.beHW:.#|
0000c190  63 25 3d 26 34 32 3a 69  6e 70 75 74 3d a4 62 65  |c%=&42:input=.be|
0000c1a0  48 57 3a 43 25 3d a4 62  65 48 57 0d 3b 1a 3d 72  |HW:C%=.beHW.;.=r|
0000c1b0  6f 77 62 79 74 65 73 25  3d a4 62 65 48 57 3a 43  |owbytes%=.beHW:C|
0000c1c0  25 3d a4 62 65 57 3a 73  74 25 3d a4 62 65 57 3a  |%=.beW:st%=.beW:|
0000c1d0  cf 23 63 25 3d 73 74 25  3a 72 24 3d 22 46 4e 38  |.#c%=st%:r$="FN8|
0000c1e0  22 3a f2 6e 6f 70 61 6c  0d 3b 24 23 de 20 72 70  |":.nopal.;$#. rp|
0000c1f0  61 6c 25 28 31 35 29 2c  67 70 61 6c 25 28 31 35  |al%(15),gpal%(15|
0000c200  29 2c 62 70 61 6c 25 28  31 35 29 0d 3b 2e 49 72  |),bpal%(15).;.Ir|
0000c210  70 61 6c 25 28 29 3d 26  65 36 2c 26 32 33 2c 26  |pal%()=&e6,&23,&|
0000c220  65 36 2c 26 37 66 2c 26  31 37 2c 26 30 30 2c 26  |e6,&7f,&17,&00,&|
0000c230  61 31 2c 26 34 35 2c 26  65 36 2c 26 34 61 2c 26  |a1,&45,&e6,&4a,&|
0000c240  65 36 2c 26 37 33 2c 26  36 65 2c 26 34 37 2c 26  |e6,&73,&6e,&47,&|
0000c250  38 61 2c 30 0d 3b 38 49  67 70 61 6c 25 28 29 3d  |8a,0.;8Igpal%()=|
0000c260  26 65 36 2c 26 37 38 2c  26 30 30 2c 26 32 33 2c  |&e6,&78,&00,&23,|
0000c270  26 61 31 2c 26 37 33 2c  26 32 65 2c 26 32 65 2c  |&a1,&73,&2e,&2e,|
0000c280  26 63 38 2c 26 61 36 2c  26 37 35 2c 26 34 30 2c  |&c8,&a6,&75,&40,|
0000c290  26 62 38 2c 26 37 38 2c  26 35 35 2c 30 0d 3b 42  |&b8,&78,&55,0.;B|
0000c2a0  49 62 70 61 6c 25 28 29  3d 26 62 38 2c 26 65 36  |Ibpal%()=&b8,&e6|
0000c2b0  2c 26 30 30 2c 26 61 31  2c 26 31 37 2c 26 32 65  |,&00,&a1,&17,&2e|
0000c2c0  2c 26 30 63 2c 26 32 65  2c 26 30 30 2c 26 63 36  |,&0c,&2e,&00,&c6|
0000c2d0  2c 26 30 30 2c 26 65 36  2c 26 30 30 2c 26 30 30  |,&00,&e6,&00,&00|
0000c2e0  2c 26 30 30 2c 30 0d 3b  4c 6b e3 43 25 3d 26 38  |,&00,0.;Lk.C%=&8|
0000c2f0  30 b8 26 38 46 3a 72 25  28 43 25 29 3d 72 70 61  |0.&8F:r%(C%)=rpa|
0000c300  6c 25 28 43 25 2d 26 38  30 29 2f 32 35 35 2a 46  |l%(C%-&80)/255*F|
0000c310  3a 67 25 28 43 25 29 3d  67 70 61 6c 25 28 43 25  |:g%(C%)=gpal%(C%|
0000c320  2d 26 38 30 29 2f 32 35  35 2a 46 3a 62 25 28 43  |-&80)/255*F:b%(C|
0000c330  25 29 3d 62 70 61 6c 25  28 43 25 2d 26 38 30 29  |%)=bpal%(C%-&80)|
0000c340  2f 32 35 35 2a 46 3a ed  3a 63 61 63 68 65 25 3d  |/255*F:.:cache%=|
0000c350  b9 0d 3b 56 46 69 6e 66  6f 24 3d 22 41 70 6f 6c  |..;VFinfo$="Apol|
0000c360  6c 6f 20 47 50 52 20 66  69 6c 65 20 22 2b c3 73  |lo GPR file "+.s|
0000c370  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
0000c380  20 70 69 78 65 6c 73 2c  20 22 2b a4 62 69 74 73  | pixels, "+.bits|
0000c390  28 69 6e 70 75 74 29 0d  3b 60 0a c9 20 33 30 30  |(input).;`.. 300|
0000c3a0  30 0d 3b 6a 48 73 78 25  3d 37 32 30 3a 73 79 25  |0.;jHsx%=720:sy%|
0000c3b0  3d a2 23 63 25 2f 31 34  34 30 3a de 20 72 70 61  |=.#c%/1440:. rpa|
0000c3c0  6c 25 28 32 35 35 29 2c  67 70 61 6c 25 28 32 35  |l%(255),gpal%(25|
0000c3d0  35 29 2c 62 70 61 6c 25  28 32 35 35 29 2c 74 61  |5),bpal%(255),ta|
0000c3e0  62 6c 65 25 28 32 35 35  29 0d 3b 7e 08 e7 a3 20  |ble%(255).;~... |
0000c3f0  8c 0d 3b 88 0d e3 43 25  3d 30 b8 32 35 35 0d 3b  |..;...C%=0.255.;|
0000c400  92 1c 74 61 62 6c 65 25  28 43 25 29 3d 28 43 25  |..table%(C%)=(C%|
0000c410  2d 31 36 29 2f 32 31 39  2a 46 0d 3b 9c 3e 72 25  |-16)/219*F.;.>r%|
0000c420  28 43 25 29 3d 28 43 25  2d 31 32 38 29 2f 31 38  |(C%)=(C%-128)/18|
0000c430  36 2a 30 2e 36 32 34 2a  46 3a 72 70 61 6c 25 28  |6*0.624*F:rpal%(|
0000c440  43 25 29 3d 28 43 25 2d  31 32 38 29 2f 31 36 30  |C%)=(C%-128)/160|
0000c450  2a 30 2e 39 35 32 2a 46  0d 3b a6 3f 67 25 28 43  |*0.952*F.;.?g%(C|
0000c460  25 29 3d 2d 28 43 25 2d  31 32 38 29 2f 31 38 36  |%)=-(C%-128)/186|
0000c470  2a 30 2e 36 34 2a 46 3a  67 70 61 6c 25 28 43 25  |*0.64*F:gpal%(C%|
0000c480  29 3d 2d 28 43 25 2d 31  32 38 29 2f 31 36 30 2a  |)=-(C%-128)/160*|
0000c490  30 2e 32 37 37 2a 46 0d  3b b0 3d 62 25 28 43 25  |0.277*F.;.=b%(C%|
0000c4a0  29 3d 28 43 25 2d 31 32  38 29 2f 31 38 36 2a 31  |)=(C%-128)/186*1|
0000c4b0  2e 37 33 2a 46 3a 62 70  61 6c 25 28 43 25 29 3d  |.73*F:bpal%(C%)=|
0000c4c0  2d 28 43 25 2d 31 32 38  29 2f 31 36 30 2a 31 2e  |-(C%-128)/160*1.|
0000c4d0  31 31 2a 46 0d 3b ba 05  ed 0d 3b c4 05 cc 0d 3b  |11*F.;....;....;|
0000c4e0  d8 0d e3 43 25 3d 30 b8  32 35 35 0d 3b e2 1c 74  |...C%=0.255.;..t|
0000c4f0  61 62 6c 65 25 28 43 25  29 3d 28 43 25 2d 31 36  |able%(C%)=(C%-16|
0000c500  29 2f 32 31 39 2a 46 0d  3b ec 35 72 25 28 43 25  |)/219*F.;.5r%(C%|
0000c510  29 3d a8 28 28 43 25 2d  31 32 38 29 2f 31 36 30  |)=.((C%-128)/160|
0000c520  2a 46 29 3a 62 25 28 43  25 29 3d a8 28 28 43 25  |*F):b%(C%)=.((C%|
0000c530  2d 31 32 38 29 2f 31 32  36 2a 46 29 0d 3b f6 4a  |-128)/126*F).;.J|
0000c540  67 25 28 43 25 29 3d a8  28 2d 28 43 25 2d 31 32  |g%(C%)=.(-(C%-12|
0000c550  38 29 2f 31 36 30 2a 72  77 74 2f 67 77 74 2a 46  |8)/160*rwt/gwt*F|
0000c560  29 3a 67 70 61 6c 25 28  43 25 29 3d a8 28 2d 28  |):gpal%(C%)=.(-(|
0000c570  43 25 2d 31 32 38 29 2f  31 32 36 2a 62 77 74 2f  |C%-128)/126*bwt/|
0000c580  67 77 74 2a 46 29 0d 3c  00 05 ed 0d 3c 0a 05 cd  |gwt*F).<....<...|
0000c590  0d 3c 14 3c 74 61 62 6c  65 25 28 29 3d 2d 31 2c  |.<.<table%()=-1,|
0000c5a0  2d 31 2c 2d 31 2c 2d 31  2c 2d 31 2c 2d 31 2c 2d  |-1,-1,-1,-1,-1,-|
0000c5b0  31 2c 2d 31 2c 2d 31 2c  2d 31 2c 2d 31 2c 2d 31  |1,-1,-1,-1,-1,-1|
0000c5c0  2c 2d 31 2c 2d 31 2c 2d  31 2c 2d 31 0d 3c 1e 3a  |,-1,-1,-1,-1.<.:|
0000c5d0  73 74 25 3d 30 3a cf 23  63 25 3d 30 3a 63 61 63  |st%=0:.#c%=0:cac|
0000c5e0  68 65 25 3d b9 3a 72 6f  77 62 79 74 65 73 25 3d  |he%=.:rowbytes%=|
0000c5f0  31 34 34 30 3a 69 6e 70  75 74 3d 34 32 32 3a 67  |1440:input=422:g|
0000c600  61 6d 6d 61 3d 31 0d 3c  28 19 e7 73 63 61 6c 65  |amma=1.<(..scale|
0000c610  25 20 79 6d 75 6c 25 3d  79 6d 75 6c 25 2a 32 0d  |% ymul%=ymul%*2.|
0000c620  3c 32 3a 69 6e 66 6f 24  3d 22 43 43 49 52 36 30  |<2:info$="CCIR60|
0000c630  31 20 34 3a 32 3a 32 20  66 69 6c 65 20 22 2b c3  |1 4:2:2 file "+.|
0000c640  73 78 25 2b 22 20 62 79  20 22 2b c3 73 79 25 2b  |sx%+" by "+.sy%+|
0000c650  22 20 70 69 78 65 6c 73  22 0d 3c 3c 0a c9 20 33  |" pixels".<<.. 3|
0000c660  31 30 30 0d 3c 46 24 71  75 61 6e 74 25 3d 38 3a  |100.<F$quant%=8:|
0000c670  cf 23 63 25 3d 30 3a 61  24 3d be 23 63 25 3a 73  |.#c%=0:a$=.#c%:s|
0000c680  74 25 3d 8f 23 63 25 0d  3c 50 20 73 78 25 3d bb  |t%=.#c%.<P sx%=.|
0000c690  61 24 3a 73 79 25 3d bb  28 c1 61 24 2c a7 61 24  |a$:sy%=.(.a$,.a$|
0000c6a0  2c 22 20 22 29 29 29 0d  3c 5a 2c f2 6e 6f 70 61  |," "))).<Z,.nopa|
0000c6b0  6c 3a 69 6e 70 75 74 3d  32 34 3a 73 74 65 70 32  |l:input=24:step2|
0000c6c0  34 3d 33 3a 72 6f 77 62  79 74 65 73 25 3d 73 78  |4=3:rowbytes%=sx|
0000c6d0  25 2a 33 0d 3c 64 34 72  62 6f 25 3d 30 3a 67 62  |%*3.<d4rbo%=0:gb|
0000c6e0  6f 25 3d 31 3a 62 62 6f  25 3d 32 3a 63 61 63 68  |o%=1:bbo%=2:cach|
0000c6f0  65 25 3d b9 3a 66 6c 61  67 3d 37 30 30 3a 72 24  |e%=.:flag=700:r$|
0000c700  3d 22 46 4e 32 34 22 0d  3c 6e 51 69 6e 66 6f 24  |="FN24".<nQinfo$|
0000c710  3d 22 21 52 61 79 53 68  61 64 65 20 27 52 47 42  |="!RayShade 'RGB|
0000c720  27 20 69 6d 61 67 65 2c  20 22 2b c3 73 78 25 2b  |' image, "+.sx%+|
0000c730  22 20 62 79 20 22 2b c3  73 79 25 2b 22 20 70 69  |" by "+.sy%+" pi|
0000c740  78 65 6c 73 2c 20 32 34  20 62 69 74 73 20 70 65  |xels, 24 bits pe|
0000c750  72 20 70 69 78 65 6c 22  0d 3c 78 0a c9 20 33 32  |r pixel".<x.. 32|
0000c760  30 30 0d 3c 82 19 71 75  61 6e 74 25 3d 38 3a cf  |00.<..quant%=8:.|
0000c770  23 63 25 3d 30 3a 73 74  25 3d 30 0d 3c 8c 1a 73  |#c%=0:st%=0.<..s|
0000c780  78 25 3d bb c1 73 24 2c  a7 73 24 2c 22 5f 22 29  |x%=..s$,.s$,"_")|
0000c790  2b 31 2c 31 29 0d 3c 96  0c c8 8e 20 73 78 25 20  |+1,1).<.... sx% |
0000c7a0  ca 0d 3c a0 17 c9 20 35  3a 73 78 25 3d 37 36 38  |..<... 5:sx%=768|
0000c7b0  3a 73 79 25 3d 35 31 32  0d 3c aa 19 c9 20 32 3a  |:sy%=512.<... 2:|
0000c7c0  73 78 25 3d 33 30 37 32  3a 73 79 25 3d 32 30 34  |sx%=3072:sy%=204|
0000c7d0  38 0d 3c b4 19 c9 20 31  3a 73 78 25 3d 31 35 33  |8.<... 1:sx%=153|
0000c7e0  36 3a 73 79 25 3d 31 30  32 34 0d 3c be 05 cb 0d  |6:sy%=1024.<....|
0000c7f0  3c c8 2c f2 6e 6f 70 61  6c 3a 69 6e 70 75 74 3d  |<.,.nopal:input=|
0000c800  32 34 3a 73 74 65 70 32  34 3d 33 3a 72 6f 77 62  |24:step24=3:rowb|
0000c810  79 74 65 73 25 3d 73 78  25 2a 33 0d 3c d2 34 72  |ytes%=sx%*3.<.4r|
0000c820  62 6f 25 3d 30 3a 67 62  6f 25 3d 31 3a 62 62 6f  |bo%=0:gbo%=1:bbo|
0000c830  25 3d 32 3a 63 61 63 68  65 25 3d b9 3a 66 6c 61  |%=2:cache%=.:fla|
0000c840  67 3d 37 30 30 3a 72 24  3d 22 46 4e 32 34 22 0d  |g=700:r$="FN24".|
0000c850  3c dc 4c 69 6e 66 6f 24  3d 22 4b 6f 64 61 6b 20  |<.Linfo$="Kodak |
0000c860  2f 52 47 42 20 69 6d 61  67 65 2c 20 22 2b c3 73  |/RGB image, "+.s|
0000c870  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
0000c880  20 70 69 78 65 6c 73 2c  20 32 34 20 62 69 74 73  | pixels, 24 bits|
0000c890  20 70 65 72 20 70 69 78  65 6c 22 0d 3c e6 0a c9  | per pixel".<...|
0000c8a0  20 33 33 30 30 0d 3c f0  1a cf 23 63 25 3d 30 3a  | 3300.<...#c%=0:|
0000c8b0  69 6e 70 75 74 3d bb c1  a4 47 45 54 2c 32 29 0d  |input=...GET,2).|
0000c8c0  3c fa 37 73 24 3d a4 47  45 54 3a 73 78 25 3d bb  |<.7s$=.GET:sx%=.|
0000c8d0  73 24 3a 73 79 25 3d bb  c1 73 24 2c a7 73 24 2c  |s$:sy%=..s$,.s$,|
0000c8e0  22 20 22 29 29 3a e7 73  79 25 3d 30 20 73 79 25  |" ")):.sy%=0 sy%|
0000c8f0  3d bb a4 47 45 54 0d 3d  04 17 63 61 63 68 65 25  |=..GET.=..cache%|
0000c900  3d b9 3a c8 8e 20 69 6e  70 75 74 20 ca 0d 3d 0e  |=.:.. input ..=.|
0000c910  44 c9 20 34 3a 69 6e 70  75 74 3d 31 3a 72 24 3d  |D. 4:input=1:r$=|
0000c920  22 46 4e 38 22 3a 72 25  28 30 29 3d 46 3a 67 25  |"FN8":r%(0)=F:g%|
0000c930  28 29 3d 72 25 28 29 3a  62 25 28 29 3d 72 25 28  |()=r%():b%()=r%(|
0000c940  29 3a 62 69 67 65 6e 64  69 61 6e 62 69 74 73 3d  |):bigendianbits=|
0000c950  b9 0d 3d 18 17 72 6f 77  62 79 74 65 73 25 3d 28  |..=..rowbytes%=(|
0000c960  73 78 25 2b 37 29 81 38  0d 3d 22 21 c9 20 35 3a  |sx%+7).8.="!. 5:|
0000c970  69 6e 70 75 74 3d 38 3a  72 24 3d 22 46 4e 38 22  |input=8:r$="FN8"|
0000c980  3a 45 25 3d bb a4 47 45  54 0d 3d 2c 31 e3 43 25  |:E%=..GET.=,1.C%|
0000c990  3d 30 b8 45 25 3a 72 25  28 43 25 29 3d 43 25 2f  |=0.E%:r%(C%)=C%/|
0000c9a0  45 25 2a 46 3a ed 3a 67  25 28 29 3d 72 25 28 29  |E%*F:.:g%()=r%()|
0000c9b0  3a 62 25 28 29 3d 72 25  28 29 0d 3d 36 11 72 6f  |:b%()=r%().=6.ro|
0000c9c0  77 62 79 74 65 73 25 3d  73 78 25 0d 3d 40 41 c9  |wbytes%=sx%.=@A.|
0000c9d0  20 36 3a 69 6e 70 75 74  3d 32 34 3a 72 24 3d 22  | 6:input=24:r$="|
0000c9e0  46 4e 32 34 22 3a 45 25  3d bb a4 47 45 54 3a 73  |FN24":E%=..GET:s|
0000c9f0  74 65 70 32 34 3d 33 3a  72 62 6f 25 3d 30 3a 67  |tep24=3:rbo%=0:g|
0000ca00  62 6f 25 3d 31 3a 62 62  6f 25 3d 32 0d 3d 4a 31  |bo%=1:bbo%=2.=J1|
0000ca10  e3 43 25 3d 30 b8 45 25  3a 72 25 28 43 25 29 3d  |.C%=0.E%:r%(C%)=|
0000ca20  43 25 2f 45 25 2a 46 3a  ed 3a 67 25 28 29 3d 72  |C%/E%*F:.:g%()=r|
0000ca30  25 28 29 3a 62 25 28 29  3d 72 25 28 29 0d 3d 54  |%():b%()=r%().=T|
0000ca40  13 72 6f 77 62 79 74 65  73 25 3d 73 78 25 2a 33  |.rowbytes%=sx%*3|
0000ca50  0d 3d 5e 05 cb 0d 3d 68  15 73 74 25 3d 8f 23 63  |.=^...=h.st%=.#c|
0000ca60  25 3a 66 6c 61 67 3d 37  30 30 0d 3d 72 42 69 6e  |%:flag=700.=rBin|
0000ca70  66 6f 24 2b 3d 22 70 62  6d 20 69 6d 61 67 65 2c  |fo$+="pbm image,|
0000ca80  20 22 2b c3 73 78 25 2b  22 20 62 79 20 22 2b c3  | "+.sx%+" by "+.|
0000ca90  73 79 25 2b 22 20 70 69  78 65 6c 73 2c 20 22 2b  |sy%+" pixels, "+|
0000caa0  a4 62 69 74 73 28 69 6e  70 75 74 29 0d 3d 7c 24  |.bits(input).=|$|
0000cab0  dd 20 a4 47 45 54 20 f5  73 24 3d be 23 63 25 3a  |. .GET .s$=.#c%:|
0000cac0  fd c0 73 24 2c 31 29 3c  3e 22 23 22 3a 3d 73 24  |..s$,1)<>"#":=s$|
0000cad0  0d 3d 86 0a c9 20 33 34  30 30 0d 3d 90 24 cf 23  |.=... 3400.=.$.#|
0000cae0  63 25 3d 30 3a 73 24 3d  a4 47 45 54 3a 69 6e 70  |c%=0:s$=.GET:inp|
0000caf0  75 74 3d 31 36 3a 71 75  61 6e 74 25 3d 35 0d 3d  |ut=16:quant%=5.=|
0000cb00  9a 2e 73 24 3d a4 47 45  54 3a 73 78 25 3d bb 73  |..s$=.GET:sx%=.s|
0000cb10  24 3a 73 79 25 3d bb c1  73 24 2c a7 73 24 2c 22  |$:sy%=..s$,.s$,"|
0000cb20  20 22 29 29 3a 73 24 3d  a4 47 45 54 0d 3d a4 2d  | ")):s$=.GET.=.-|
0000cb30  de 20 72 70 61 6c 25 28  32 35 35 29 2c 67 70 61  |. rpal%(255),gpa|
0000cb40  6c 25 28 32 35 35 29 3a  69 6e 70 75 74 3d 31 36  |l%(255):input=16|
0000cb50  3a 73 74 65 70 32 34 3d  32 0d 3d ae 0d e3 43 25  |:step24=2.=...C%|
0000cb60  3d 30 b8 32 35 35 0d 3d  b8 22 67 70 61 6c 25 28  |=0.255.=."gpal%(|
0000cb70  43 25 29 3d 28 43 25 3e  3e 35 29 3c 3c 38 20 84  |C%)=(C%>>5)<<8 .|
0000cb80  20 28 43 25 80 33 31 29  0d 3d c2 2b 72 70 61 6c  | (C%.31).=.+rpal|
0000cb90  25 28 43 25 29 3d 28 28  43 25 3e 3e 32 29 80 33  |%(C%)=((C%>>2).3|
0000cba0  31 29 3c 3c 31 36 20 84  20 28 43 25 80 33 29 3c  |1)<<16 . (C%.3)<|
0000cbb0  3c 31 31 0d 3d cc 05 ed  0d 3d d6 16 63 61 63 68  |<11.=....=..cach|
0000cbc0  65 25 3d b9 3a 72 24 3d  22 46 4e 31 36 22 0d 3d  |e%=.:r$="FN16".=|
0000cbd0  e0 31 e3 43 25 3d 30 b8  33 31 3a 72 25 28 43 25  |.1.C%=0.31:r%(C%|
0000cbe0  29 3d 43 25 2f 33 31 2a  46 3a ed 3a 67 25 28 29  |)=C%/31*F:.:g%()|
0000cbf0  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 0d  |=r%():b%()=r%().|
0000cc00  3d ea 25 72 6f 77 62 79  74 65 73 25 3d 73 78 25  |=.%rowbytes%=sx%|
0000cc10  2a 32 3a 73 74 25 3d 8f  23 63 25 3a 66 6c 61 67  |*2:st%=.#c%:flag|
0000cc20  3d 37 30 30 0d 3d f4 41  69 6e 66 6f 24 3d 22 70  |=700.=.Ainfo$="p|
0000cc30  31 35 20 69 6d 61 67 65  2c 20 22 2b c3 73 78 25  |15 image, "+.sx%|
0000cc40  2b 22 20 62 79 20 22 2b  c3 73 79 25 2b 22 20 70  |+" by "+.sy%+" p|
0000cc50  69 78 65 6c 73 2c 20 22  2b a4 62 69 74 73 28 69  |ixels, "+.bits(i|
0000cc60  6e 70 75 74 29 0d 3d fe  0a c9 20 33 34 35 30 0d  |nput).=... 3450.|
0000cc70  3e 08 15 cf 23 63 25 3d  30 3a 69 6e 66 6f 24 3d  |>...#c%=0:info$=|
0000cc80  a4 47 45 54 0d 3e 12 33  79 62 69 74 73 25 3d bb  |.GET.>.3ybits%=.|
0000cc90  c1 69 6e 66 6f 24 2c a7  69 6e 66 6f 24 2c 22 20  |.info$,.info$," |
0000cca0  22 29 29 3a 79 6d 61 78  25 3d 28 31 3c 3c 79 62  |")):ymax%=(1<<yb|
0000ccb0  69 74 73 25 29 2d 31 0d  3e 1c 3a 75 62 69 74 73  |its%)-1.>.:ubits|
0000ccc0  25 3d bb c1 69 6e 66 6f  24 2c a7 69 6e 66 6f 24  |%=..info$,.info$|
0000ccd0  2c 22 59 20 22 29 2b 31  29 3a 75 6d 61 78 25 3d  |,"Y ")+1):umax%=|
0000cce0  28 31 3c 3c 28 75 62 69  74 73 25 2d 31 29 29 2d  |(1<<(ubits%-1))-|
0000ccf0  31 0d 3e 26 3a 76 62 69  74 73 25 3d bb c1 69 6e  |1.>&:vbits%=..in|
0000cd00  66 6f 24 2c a7 69 6e 66  6f 24 2c 22 55 20 22 29  |fo$,.info$,"U ")|
0000cd10  2b 31 29 3a 76 6d 61 78  25 3d 28 31 3c 3c 28 76  |+1):vmax%=(1<<(v|
0000cd20  62 69 74 73 25 2d 31 29  29 2d 31 0d 3e 30 26 73  |bits%-1))-1.>0&s|
0000cd30  24 3d a4 47 45 54 3a 73  78 25 3d bb 73 24 3a 73  |$=.GET:sx%=.s$:s|
0000cd40  79 25 3d bb c1 73 24 2c  a7 73 24 2c 22 20 22 29  |y%=..s$,.s$," ")|
0000cd50  29 0d 3e 3a 32 de 20 72  70 61 6c 25 28 32 35 35  |).>:2. rpal%(255|
0000cd60  29 2c 67 70 61 6c 25 28  32 35 35 29 2c 62 70 61  |),gpal%(255),bpa|
0000cd70  6c 25 28 32 35 35 29 2c  74 61 62 6c 65 25 28 32  |l%(255),table%(2|
0000cd80  35 35 29 0d 3e 44 27 e3  43 25 3d 30 b8 79 6d 61  |55).>D'.C%=0.yma|
0000cd90  78 25 3a 74 61 62 6c 65  25 28 43 25 29 3d 43 25  |x%:table%(C%)=C%|
0000cda0  2f 79 6d 61 78 25 2a 46  3a ed 0d 3e 4e 14 44 25  |/ymax%*F:..>N.D%|
0000cdb0  3d 28 31 3c 3c 75 62 69  74 73 25 29 2d 31 0d 3e  |=(1<<ubits%)-1.>|
0000cdc0  58 2d e3 43 25 3d 30 b8  44 25 3a 64 3d 43 25 2f  |X-.C%=0.D%:d=C%/|
0000cdd0  75 6d 61 78 25 3a e7 64  3e 31 20 64 3d 2d 28 44  |umax%:.d>1 d=-(D|
0000cde0  25 2d 43 25 29 2f 75 6d  61 78 25 0d 3e 62 3b 62  |%-C%)/umax%.>b;b|
0000cdf0  25 28 43 25 29 3d a8 28  64 2a 28 31 2d 62 77 74  |%(C%)=.(d*(1-bwt|
0000ce00  29 2a 46 29 3a 67 70 61  6c 25 28 43 25 29 3d a8  |)*F):gpal%(C%)=.|
0000ce10  28 2d 64 2a 28 31 2d 62  77 74 29 2a 62 77 74 2f  |(-d*(1-bwt)*bwt/|
0000ce20  67 77 74 2a 46 29 0d 3e  6c 05 ed 0d 3e 76 14 44  |gwt*F).>l...>v.D|
0000ce30  25 3d 28 31 3c 3c 76 62  69 74 73 25 29 2d 31 0d  |%=(1<<vbits%)-1.|
0000ce40  3e 80 2d e3 43 25 3d 30  b8 44 25 3a 64 3d 43 25  |>.-.C%=0.D%:d=C%|
0000ce50  2f 76 6d 61 78 25 3a e7  64 3e 31 20 64 3d 2d 28  |/vmax%:.d>1 d=-(|
0000ce60  44 25 2d 43 25 29 2f 76  6d 61 78 25 0d 3e 8a 38  |D%-C%)/vmax%.>.8|
0000ce70  72 25 28 43 25 29 3d a8  28 64 2a 28 31 2d 72 77  |r%(C%)=.(d*(1-rw|
0000ce80  74 29 2a 46 29 3a 67 25  28 43 25 29 3d a8 28 2d  |t)*F):g%(C%)=.(-|
0000ce90  64 2a 28 31 2d 72 77 74  29 2a 72 77 74 2f 67 77  |d*(1-rwt)*rwt/gw|
0000cea0  74 2a 46 29 0d 3e 94 05  ed 0d 3e 9e 3b 72 6f 77  |t*F).>....>.;row|
0000ceb0  62 79 74 65 73 25 3d 73  78 25 2a 32 3a 73 74 25  |bytes%=sx%*2:st%|
0000cec0  3d 8f 23 63 25 3a 63 61  63 68 65 25 3d b9 3a 72  |=.#c%:cache%=.:r|
0000ced0  24 3d 22 46 4e 32 32 35  30 22 3a 69 6e 70 75 74  |$="FN2250":input|
0000cee0  3d 35 35 35 0d 3e a8 2a  69 6e 66 6f 24 2b 3d 22  |=555.>.*info$+="|
0000cef0  2c 20 22 2b c3 73 78 25  2b 22 20 62 79 20 22 2b  |, "+.sx%+" by "+|
0000cf00  c3 73 79 25 2b 22 20 70  69 78 65 6c 73 22 0d 3e  |.sy%+" pixels".>|
0000cf10  b2 0a c9 20 33 35 30 30  0d 3e bc 41 71 75 61 6e  |... 3500.>.Aquan|
0000cf20  74 25 3d 31 3a cf 23 63  25 3d 36 3a 45 25 3d a4  |t%=1:.#c%=6:E%=.|
0000cf30  48 57 3a 73 78 25 3d a4  48 57 3a 73 78 25 3d a4  |HW:sx%=.HW:sx%=.|
0000cf40  48 57 3a 73 79 25 3d a4  48 57 3a 73 74 25 3d a4  |HW:sy%=.HW:st%=.|
0000cf50  48 57 3a 73 74 25 3d a4  57 0d 3e c6 38 69 6e 70  |HW:st%=.W.>.8inp|
0000cf60  75 74 3d 31 3a 72 25 28  30 29 3d 46 3a 67 25 28  |ut=1:r%(0)=F:g%(|
0000cf70  30 29 3d 46 3a 62 25 28  30 29 3d 46 3a 72 6f 77  |0)=F:b%(0)=F:row|
0000cf80  62 79 74 65 73 25 3d 73  78 25 2f 38 2b 31 80 ac  |bytes%=sx%/8+1..|
0000cf90  31 0d 3e d0 0b e7 45 25  3d 31 20 8c 0d 3e da 16  |1.>...E%=1 ..>..|
0000cfa0  73 74 25 2b 3d 8f 23 63  25 3a cf 23 63 25 3d 73  |st%+=.#c%:.#c%=s|
0000cfb0  74 25 0d 3e e4 15 63 61  63 68 65 25 3d b9 3a 72  |t%.>..cache%=.:r|
0000cfc0  24 3d 22 46 4e 38 22 0d  3e ee 4b 69 6e 66 6f 24  |$="FN8".>.Kinfo$|
0000cfd0  3d 22 50 6f 63 6b 65 74  62 6f 6f 6b 20 62 69 74  |="Pocketbook bit|
0000cfe0  6d 61 70 2c 20 22 2b c3  73 78 25 2b 22 20 62 79  |map, "+.sx%+" by|
0000cff0  20 22 2b c3 73 79 25 2b  22 20 70 69 78 65 6c 73  | "+.sy%+" pixels|
0000d000  2c 20 31 20 62 69 74 20  70 65 72 20 70 69 78 65  |, 1 bit per pixe|
0000d010  6c 22 0d 3e f8 05 cc 0d  3f 02 17 70 6c 61 6e 61  |l".>....?..plana|
0000d020  72 25 3d b9 3a 70 6c 61  6e 65 73 25 3d 32 0d 3f  |r%=.:planes%=2.?|
0000d030  0c 05 cd 0d 3f 16 0a c9  20 33 36 30 30 0d 3f 20  |....?... 3600.? |
0000d040  42 70 63 64 62 6c 6b 25  3d a4 64 69 6d 28 34 30  |Bpcdblk%=.dim(40|
0000d050  29 3a c8 99 26 32 30 30  32 33 2c 22 43 68 61 6e  |):..&20023,"Chan|
0000d060  67 65 46 53 49 24 50 43  44 69 6e 64 65 78 22 2c  |geFSI$PCDindex",|
0000d070  70 63 64 62 6c 6b 25 2c  32 30 20 b8 2c 2c 5a 0d  |pcdblk%,20 .,,Z.|
0000d080  3f 2a 35 e7 5a 20 8c 70  63 64 62 6c 6b 25 3f 5a  |?*5.Z .pcdblk%?Z|
0000d090  3d 31 33 3a 70 63 64 69  6e 64 65 78 25 3d bb 24  |=13:pcdindex%=.$|
0000d0a0  70 63 64 62 6c 6b 25 20  8b 70 63 64 69 6e 64 65  |pcdblk% .pcdinde|
0000d0b0  78 25 3d 33 0d 3f 34 42  c8 99 22 50 68 6f 74 6f  |x%=3.?4B.."Photo|
0000d0c0  43 44 5f 4f 70 65 6e 22  2c 31 2c 63 25 2c 31 20  |CD_Open",1,c%,1 |
0000d0d0  b8 20 70 63 64 68 25 3a  c8 99 22 50 68 6f 74 6f  |. pcdh%:.."Photo|
0000d0e0  43 44 5f 47 65 74 43 6f  75 6e 74 22 2c 70 63 64  |CD_GetCount",pcd|
0000d0f0  68 25 20 b8 2c 5a 0d 3f  3e 3f e7 28 5a 3e 3e 70  |h% .,Z.?>?.(Z>>p|
0000d100  63 64 69 6e 64 65 78 25  29 3d 30 20 d9 23 63 25  |cdindex%)=0 .#c%|
0000d110  3a 85 34 32 2c 22 44 65  73 69 72 65 64 20 72 65  |:.42,"Desired re|
0000d120  73 6f 6c 75 74 69 6f 6e  20 75 6e 61 76 61 69 6c  |solution unavail|
0000d130  61 62 6c 65 22 0d 3f 48  2b c8 99 22 50 68 6f 74  |able".?H+.."Phot|
0000d140  6f 43 44 5f 47 65 74 52  6f 74 61 74 69 6f 6e 22  |oCD_GetRotation"|
0000d150  2c 70 63 64 68 25 20 b8  2c 2c 70 63 64 74 72 25  |,pcdh% .,,pcdtr%|
0000d160  0d 3f 52 35 c8 99 22 50  68 6f 74 6f 43 44 5f 47  |.?R5.."PhotoCD_G|
0000d170  65 74 53 69 7a 65 22 2c  70 63 64 68 25 2c 2c 70  |etSize",pcdh%,,p|
0000d180  63 64 69 6e 64 65 78 25  20 b8 2c 2c 2c 2c 73 78  |cdindex% .,,,,sx|
0000d190  25 2c 73 79 25 0d 3f 5c  29 70 63 64 62 6c 6b 25  |%,sy%.?\)pcdblk%|
0000d1a0  21 30 3d 30 3a 70 63 64  62 6c 6b 25 21 38 3d 73  |!0=0:pcdblk%!8=s|
0000d1b0  78 25 3a 70 63 64 62 6c  6b 25 21 34 3d 30 0d 3f  |x%:pcdblk%!4=0.?|
0000d1c0  66 37 70 63 64 62 6c 6b  25 21 31 36 3d 30 3a 70  |f7pcdblk%!16=0:p|
0000d1d0  63 64 62 6c 6b 25 21 32  30 3d 32 3a 70 63 64 62  |cdblk%!20=2:pcdb|
0000d1e0  6c 6b 25 21 32 34 3d 31  3a 70 63 64 62 6c 6b 25  |lk%!24=1:pcdblk%|
0000d1f0  21 32 38 3d 33 0d 3f 7a  0f c8 8e 20 70 63 64 74  |!28=3.?z... pcdt|
0000d200  72 25 20 ca 0d 3f 84 07  c9 20 30 0d 3f 8e 1e c9  |r% ..?... 0.?...|
0000d210  20 26 38 30 30 30 30 30  30 30 3a 68 66 6c 69 70  | &80000000:hflip|
0000d220  25 3d ac 68 66 6c 69 70  25 0d 3f 98 08 c9 20 39  |%=.hflip%.?... 9|
0000d230  30 0d 3f a2 10 c8 8e 20  72 6f 74 61 74 65 25 20  |0.?.... rotate% |
0000d240  ca 0d 3f ac 11 c9 20 30  3a 72 6f 74 61 74 65 25  |..?... 0:rotate%|
0000d250  3d 31 0d 3f b6 12 c9 20  2d 31 3a 72 6f 74 61 74  |=1.?... -1:rotat|
0000d260  65 25 3d 30 0d 3f c0 2f  c9 20 31 3a 72 6f 74 61  |e%=0.?./. 1:rota|
0000d270  74 65 25 3d 30 3a 76 66  6c 69 70 25 3d ac 76 66  |te%=0:vflip%=.vf|
0000d280  6c 69 70 25 3a 68 66 6c  69 70 25 3d ac 68 66 6c  |lip%:hflip%=.hfl|
0000d290  69 70 25 0d 3f ca 05 cb  0d 3f d4 0f c9 20 26 38  |ip%.?....?... &8|
0000d2a0  30 30 30 30 30 35 41 0d  3f de 10 c8 8e 20 72 6f  |000005A.?.... ro|
0000d2b0  74 61 74 65 25 20 ca 0d  3f e8 20 c9 20 30 3a 72  |tate% ..?. . 0:r|
0000d2c0  6f 74 61 74 65 25 3d 31  3a 76 66 6c 69 70 25 3d  |otate%=1:vflip%=|
0000d2d0  ac 76 66 6c 69 70 25 0d  3f f2 21 c9 20 2d 31 3a  |.vflip%.?.!. -1:|
0000d2e0  72 6f 74 61 74 65 25 3d  30 3a 76 66 6c 69 70 25  |rotate%=0:vflip%|
0000d2f0  3d ac 76 66 6c 69 70 25  0d 3f fc 20 c9 20 31 3a  |=.vflip%.?. . 1:|
0000d300  72 6f 74 61 74 65 25 3d  30 3a 68 66 6c 69 70 25  |rotate%=0:hflip%|
0000d310  3d ac 68 66 6c 69 70 25  0d 40 06 05 cb 0d 40 10  |=.hflip%.@....@.|
0000d320  27 c9 20 31 38 30 3a 68  66 6c 69 70 25 3d ac 68  |'. 180:hflip%=.h|
0000d330  66 6c 69 70 25 3a 76 66  6c 69 70 25 3d ac 76 66  |flip%:vflip%=.vf|
0000d340  6c 69 70 25 0d 40 1a 1e  c9 20 26 38 30 30 30 30  |lip%.@... &80000|
0000d350  30 42 34 3a 76 66 6c 69  70 25 3d ac 76 66 6c 69  |0B4:vflip%=.vfli|
0000d360  70 25 0d 40 24 09 c9 20  32 37 30 0d 40 2e 10 c8  |p%.@$.. 270.@...|
0000d370  8e 20 72 6f 74 61 74 65  25 20 ca 0d 40 38 12 c9  |. rotate% ..@8..|
0000d380  20 30 3a 72 6f 74 61 74  65 25 3d 2d 31 0d 40 42  | 0:rotate%=-1.@B|
0000d390  11 c9 20 31 3a 72 6f 74  61 74 65 25 3d 30 0d 40  |.. 1:rotate%=0.@|
0000d3a0  4c 30 c9 20 2d 31 3a 72  6f 74 61 74 65 25 3d 30  |L0. -1:rotate%=0|
0000d3b0  3a 76 66 6c 69 70 25 3d  ac 76 66 6c 69 70 25 3a  |:vflip%=.vflip%:|
0000d3c0  68 66 6c 69 70 25 3d ac  68 66 6c 69 70 25 0d 40  |hflip%=.hflip%.@|
0000d3d0  56 05 cb 0d 40 60 0f c9  20 26 38 30 30 30 30 31  |V...@`.. &800001|
0000d3e0  30 45 0d 40 6a 10 c8 8e  20 72 6f 74 61 74 65 25  |0E.@j... rotate%|
0000d3f0  20 ca 0d 40 74 21 c9 20  30 3a 72 6f 74 61 74 65  | ..@t!. 0:rotate|
0000d400  25 3d 2d 31 3a 76 66 6c  69 70 25 3d ac 76 66 6c  |%=-1:vflip%=.vfl|
0000d410  69 70 25 0d 40 7e 20 c9  20 31 3a 72 6f 74 61 74  |ip%.@~ . 1:rotat|
0000d420  65 25 3d 30 3a 76 66 6c  69 70 25 3d ac 76 66 6c  |e%=0:vflip%=.vfl|
0000d430  69 70 25 0d 40 88 21 c9  20 2d 31 3a 72 6f 74 61  |ip%.@.!. -1:rota|
0000d440  74 65 25 3d 30 3a 68 66  6c 69 70 25 3d ac 68 66  |te%=0:hflip%=.hf|
0000d450  6c 69 70 25 0d 40 92 05  cb 0d 40 9c 0b 7f 20 50  |lip%.@....@... P|
0000d460  41 4e 49 43 0d 40 a6 05  cb 0d 40 ba 40 69 6e 70  |ANIC.@....@.@inp|
0000d470  75 74 3d 32 34 3a 73 74  65 70 32 34 3d 33 3a 72  |ut=24:step24=3:r|
0000d480  62 6f 25 3d 30 3a 67 62  6f 25 3d 31 3a 62 62 6f  |bo%=0:gbo%=1:bbo|
0000d490  25 3d 32 3a 70 63 64 63  61 63 68 65 73 69 7a 65  |%=2:pcdcachesize|
0000d4a0  25 3d 33 32 2a 31 30 32  34 0d 40 c4 41 72 6f 77  |%=32*1024.@.Arow|
0000d4b0  62 79 74 65 73 25 3d 73  78 25 2a 33 3a f2 6e 6f  |bytes%=sx%*3:.no|
0000d4c0  70 61 6c 3a 63 61 63 68  65 25 3d b9 3a 70 63 64  |pal:cache%=.:pcd|
0000d4d0  63 61 63 68 65 25 3d a4  64 69 6d 28 70 63 64 63  |cache%=.dim(pcdc|
0000d4e0  61 63 68 65 73 69 7a 65  25 29 0d 40 ce 49 69 6e  |achesize%).@.Iin|
0000d4f0  66 6f 24 3d 22 50 68 6f  74 6f 43 44 20 69 6d 61  |fo$="PhotoCD ima|
0000d500  67 65 2c 20 22 2b c3 73  78 25 2b 22 20 62 79 20  |ge, "+.sx%+" by |
0000d510  22 2b c3 73 79 25 2b 22  20 70 69 78 65 6c 73 2c  |"+.sy%+" pixels,|
0000d520  20 32 34 20 62 69 74 73  20 70 65 72 20 70 69 78  | 24 bits per pix|
0000d530  65 6c 22 0d 40 d8 0a c9  20 33 37 30 30 0d 40 e2  |el".@... 3700.@.|
0000d540  34 41 25 3d 8e 22 3c 43  68 61 6e 67 65 46 53 49  |4A%=."<ChangeFSI|
0000d550  24 44 69 72 3e 2e 43 46  53 49 2d 6a 70 65 67 22  |$Dir>.CFSI-jpeg"|
0000d560  3a 6a 70 65 67 25 3d a4  64 69 6d 28 a2 23 41 25  |:jpeg%=.dim(.#A%|
0000d570  29 0d 40 ec 1d c8 99 31  32 2c 34 2c 41 25 2c 6a  |).@....12,4,A%,j|
0000d580  70 65 67 25 2c a2 23 41  25 3a d9 23 41 25 0d 40  |peg%,.#A%:.#A%.@|
0000d590  f6 43 64 61 74 61 63 61  63 68 65 25 3d a4 63 61  |.Cdatacache%=.ca|
0000d5a0  63 68 65 64 69 6d 28 a2  23 63 25 29 3a e7 64 61  |chedim(.#c%):.da|
0000d5b0  74 61 63 61 63 68 65 25  3d 2d 31 20 64 61 74 61  |tacache%=-1 data|
0000d5c0  63 61 63 68 65 25 3d a4  64 69 6d 28 a2 23 63 25  |cache%=.dim(.#c%|
0000d5d0  29 0d 41 00 24 cf 23 63  25 3d 30 3a c8 99 31 32  |).A.$.#c%=0:..12|
0000d5e0  2c 34 2c 63 25 2c 64 61  74 61 63 61 63 68 65 25  |,4,c%,datacache%|
0000d5f0  2c a2 23 63 25 0d 41 0a  51 41 25 3d 64 61 74 61  |,.#c%.A.QA%=data|
0000d600  63 61 63 68 65 25 3a 42  25 3d 6a 70 65 67 62 6c  |cache%:B%=jpegbl|
0000d610  6b 25 3a 43 25 3d 6a 70  65 67 62 6c 6b 25 2b 34  |k%:C%=jpegblk%+4|
0000d620  3a 44 25 3d 6a 70 65 67  62 6c 6b 25 2b 38 3a 45  |:D%=jpegblk%+8:E|
0000d630  25 3d 6a 70 65 67 62 6c  6b 25 2b 31 32 3a d6 6a  |%=jpegblk%+12:.j|
0000d640  70 65 67 25 2b 38 0d 41  14 26 42 25 3d 6a 70 65  |peg%+8.A.&B%=jpe|
0000d650  67 62 6c 6b 25 21 31 32  3a 6a 70 65 67 73 70 61  |gblk%!12:jpegspa|
0000d660  63 65 25 3d a4 64 69 6d  28 42 25 29 0d 41 1e 27  |ce%=.dim(B%).A.'|
0000d670  43 25 3d 64 61 74 61 63  61 63 68 65 25 3a 41 25  |C%=datacache%:A%|
0000d680  3d 6a 70 65 67 73 70 61  63 65 25 3a 44 25 3d a2  |=jpegspace%:D%=.|
0000d690  23 63 25 0d 41 28 35 d6  6a 70 65 67 25 3a 63 61  |#c%.A(5.jpeg%:ca|
0000d6a0  63 68 65 25 3d a3 3a e7  21 41 25 20 85 34 32 2c  |che%=.:.!A% .42,|
0000d6b0  22 4a 50 45 47 20 63 6f  64 65 20 65 72 72 6f 72  |"JPEG code error|
0000d6c0  3a 20 22 2b c3 21 41 25  0d 41 32 35 73 78 25 3d  |: "+.!A%.A25sx%=|
0000d6d0  41 25 21 32 30 3a 73 79  25 3d 41 25 21 32 34 3a  |A%!20:sy%=A%!24:|
0000d6e0  69 6e 70 75 74 3d 38 2a  41 25 3f 32 38 3a f2 6e  |input=8*A%?28:.n|
0000d6f0  6f 70 61 6c 3a 73 74 65  70 32 34 3d 34 0d 41 3c  |opal:step24=4.A<|
0000d700  42 69 6e 66 6f 24 3d 22  4a 46 49 46 20 69 6d 61  |Binfo$="JFIF ima|
0000d710  67 65 2c 20 22 2b c3 73  78 25 2b 22 20 62 79 20  |ge, "+.sx%+" by |
0000d720  22 2b c3 73 79 25 2b 22  20 70 69 78 65 6c 73 2c  |"+.sy%+" pixels,|
0000d730  20 22 2b a4 62 69 74 73  28 69 6e 70 75 74 29 0d  | "+.bits(input).|
0000d740  41 46 25 6a 70 65 67 79  25 3d 73 79 25 3a 72 24  |AF%jpegy%=sy%:r$|
0000d750  3d 22 46 4e 22 2b c3 a8  28 33 37 30 30 2b 69 6e  |="FN"+..(3700+in|
0000d760  70 75 74 29 0d 41 50 09  c9 20 36 36 36 0d 41 be  |put).AP.. 666.A.|
0000d770  3f 73 74 25 3d 30 3a cf  23 63 25 3d 30 3a 73 78  |?st%=0:.#c%=0:sx|
0000d780  25 3d 31 36 30 3a 73 79  25 3d 31 32 38 3a 69 6e  |%=160:sy%=128:in|
0000d790  70 75 74 3d 38 3a 63 61  63 68 65 25 3d b9 3a 72  |put=8:cache%=.:r|
0000d7a0  6f 77 62 79 74 65 73 25  3d 73 78 25 0d 41 c8 3c  |owbytes%=sx%.A.<|
0000d7b0  e3 43 25 3d 30 b8 32 35  35 3a 72 25 28 43 25 29  |.C%=0.255:r%(C%)|
0000d7c0  3d 43 25 2f 32 35 35 2a  46 3a ed 3a 67 25 28 29  |=C%/255*F:.:g%()|
0000d7d0  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 3a  |=r%():b%()=r%():|
0000d7e0  72 24 3d 22 46 4e 38 22  0d 41 d2 4d 69 6e 66 6f  |r$="FN8".A.Minfo|
0000d7f0  24 3d 22 54 68 65 20 6e  75 6d 62 65 72 20 6f 66  |$="The number of|
0000d800  20 74 68 65 20 62 65 61  73 74 2c 20 31 36 30 20  | the beast, 160 |
0000d810  62 79 20 22 2b c3 73 79  25 2b 22 20 70 69 78 65  |by "+.sy%+" pixe|
0000d820  6c 73 2c 20 38 20 62 69  74 73 20 70 65 72 20 70  |ls, 8 bits per p|
0000d830  69 78 65 6c 22 0d 41 dc  05 cb 0d 41 e6 11 e7 69  |ixel".A....A...i|
0000d840  6e 66 6f 25 20 f1 69 6e  66 6f 24 0d 41 f0 23 c8  |nfo% .info$.A.#.|
0000d850  99 22 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 22 2c  |."Hourglass_On",|
0000d860  31 3a 68 6f 75 72 25 3d  26 34 30 36 63 34 0d 41  |1:hour%=&406c4.A|
0000d870  fa 30 e7 69 6e 76 65 72  74 25 20 72 25 28 29 3d  |.0.invert% r%()=|
0000d880  46 2d 72 25 28 29 3a 67  25 28 29 3d 46 2d 67 25  |F-r%():g%()=F-g%|
0000d890  28 29 3a 62 25 28 29 3d  46 2d 62 25 28 29 0d 42  |():b%()=F-b%().B|
0000d8a0  04 0a c8 8e 20 6d 20 ca  0d 42 0e 44 c9 20 2d 31  |.... m ..B.D. -1|
0000d8b0  3a 78 25 3d 32 35 36 3a  79 25 3d 32 35 36 3a 6e  |:x%=256:y%=256:n|
0000d8c0  63 6f 6c 3d 32 35 36 3a  e7 73 63 61 6c 65 6f 25  |col=256:.scaleo%|
0000d8d0  20 78 64 69 76 25 3d 78  64 69 76 25 2a 32 3a 79  | xdiv%=xdiv%*2:y|
0000d8e0  64 69 76 25 3d 79 64 69  76 25 2a 32 0d 42 18 2e  |div%=ydiv%*2.B..|
0000d8f0  c9 20 2d 32 3a 78 25 3d  73 78 25 3a 79 25 3d 73  |. -2:x%=sx%:y%=s|
0000d900  79 25 3a e7 73 70 6d 3d  31 38 20 6e 63 6f 6c 3d  |y%:.spm=18 ncol=|
0000d910  31 20 8b 6e 63 6f 6c 3d  31 35 0d 42 22 28 c9 20  |1 .ncol=15.B"(. |
0000d920  2d 33 2c 2d 35 2c 2d 36  3a 78 25 3d 73 78 25 3a  |-3,-5,-6:x%=sx%:|
0000d930  79 25 3d 73 79 25 3a 6e  63 6f 6c 3d 32 5e 31 35  |y%=sy%:ncol=2^15|
0000d940  2d 31 0d 42 2c 28 c9 20  2d 34 2c 2d 37 2c 2d 38  |-1.B,(. -4,-7,-8|
0000d950  3a 78 25 3d 73 78 25 3a  79 25 3d 73 79 25 3a 6e  |:x%=sx%:y%=sy%:n|
0000d960  63 6f 6c 3d 32 5e 32 34  2d 31 0d 42 36 05 7f 0d  |col=2^24-1.B6...|
0000d970  42 40 35 c8 99 35 33 2c  6d 2c 34 20 b8 20 2c 2c  |B@5..53,m,4 . ,,|
0000d980  6e 78 3a c8 99 35 33 2c  6d 2c 35 20 b8 20 2c 2c  |nx:..53,m,5 . ,,|
0000d990  6e 79 3a 6e 78 3d 31 3c  3c 6e 78 3a 6e 79 3d 31  |ny:nx=1<<nx:ny=1|
0000d9a0  3c 3c 6e 79 0d 42 4a 31  c8 99 35 33 2c 6d 2c 31  |<<ny.BJ1..53,m,1|
0000d9b0  31 20 b8 20 2c 2c 78 25  3a c8 99 35 33 2c 6d 2c  |1 . ,,x%:..53,m,|
0000d9c0  31 32 20 b8 20 2c 2c 79  25 3a 78 25 2b 3d 31 3a  |12 . ,,y%:x%+=1:|
0000d9d0  79 25 2b 3d 31 0d 42 54  20 c8 99 35 33 2c 6d 2c  |y%+=1.BT ..53,m,|
0000d9e0  33 20 b8 20 2c 2c 6e 63  6f 6c 3a e7 73 63 61 6c  |3 . ,,ncol:.scal|
0000d9f0  65 6f 25 20 8c 0d 42 5e  0e e7 72 6f 74 61 74 65  |eo% ..B^..rotate|
0000da00  25 20 8c 0d 42 68 21 78  64 69 76 25 3d 78 64 69  |% ..Bh!xdiv%=xdi|
0000da10  76 25 2a 6e 79 3a 79 64  69 76 25 3d 79 64 69 76  |v%*ny:ydiv%=ydiv|
0000da20  25 2a 6e 78 0d 42 72 18  e7 78 64 69 76 25 20 79  |%*nx.Br..xdiv% y|
0000da30  6d 75 6c 25 3d 79 6d 75  6c 25 2a 32 0d 42 7c 18  |mul%=ymul%*2.B|.|
0000da40  e7 79 64 69 76 25 20 78  6d 75 6c 25 3d 78 6d 75  |.ydiv% xmul%=xmu|
0000da50  6c 25 2a 32 0d 42 86 05  cc 0d 42 90 21 78 64 69  |l%*2.B....B.!xdi|
0000da60  76 25 3d 78 64 69 76 25  2a 6e 78 3a 79 64 69 76  |v%=xdiv%*nx:ydiv|
0000da70  25 3d 79 64 69 76 25 2a  6e 79 0d 42 9a 18 e7 78  |%=ydiv%*ny.B...x|
0000da80  64 69 76 25 20 78 6d 75  6c 25 3d 78 6d 75 6c 25  |div% xmul%=xmul%|
0000da90  2a 32 0d 42 a4 18 e7 79  64 69 76 25 20 79 6d 75  |*2.B...ydiv% ymu|
0000daa0  6c 25 3d 79 6d 75 6c 25  2a 32 0d 42 ae 05 cd 0d  |l%=ymul%*2.B....|
0000dab0  42 b8 05 cd 0d 42 c2 21  c8 99 26 36 32 41 35 31  |B....B.!..&62A51|
0000dac0  2c 6d 20 b8 20 72 30 3b  56 3a e7 28 56 20 80 31  |,m . r0;V:.(V .1|
0000dad0  29 3d 30 20 8c 0d 42 d6  0b e7 72 30 3d 31 20 8c  |)=0 ..B...r0=1 .|
0000dae0  0d 42 e0 1c 6e 63 6f 6c  3d 32 35 35 3a e7 6d 24  |.B..ncol=255:.m$|
0000daf0  3c 3e 22 44 22 20 6d 24  3d 22 52 22 0d 42 ea 05  |<>"D" m$="R".B..|
0000db00  cd 0d 42 f4 05 cd 0d 42  fe 05 cb 0d 43 08 19 e7  |..B....B....C...|
0000db10  6d 3d 2d 36 20 84 20 6d  3d 2d 37 20 84 20 6d 3d  |m=-6 . m=-7 . m=|
0000db20  2d 38 20 8c 0d 43 12 2a  6e 78 3d bb c1 70 6e 6d  |-8 ..C.*nx=..pnm|
0000db30  24 2c 35 29 3a 6e 79 3d  bb c1 70 6e 6d 24 2c a7  |$,5):ny=..pnm$,.|
0000db40  70 6e 6d 24 2c 22 2c 22  2c 35 29 2b 31 29 0d 43  |pnm$,",",5)+1).C|
0000db50  1c 0e e7 73 63 61 6c 65  6f 25 20 8c 0d 43 26 0e  |...scaleo% ..C&.|
0000db60  e7 72 6f 74 61 74 65 25  20 8c 0d 43 30 19 e7 78  |.rotate% ..C0..x|
0000db70  64 69 76 25 20 79 6d 75  6c 25 3d 79 6d 75 6c 25  |div% ymul%=ymul%|
0000db80  2a 6e 78 0d 43 3a 19 e7  79 64 69 76 25 20 78 6d  |*nx.C:..ydiv% xm|
0000db90  75 6c 25 3d 78 6d 75 6c  25 2a 6e 79 0d 43 44 05  |ul%=xmul%*ny.CD.|
0000dba0  cc 0d 43 4e 19 e7 78 64  69 76 25 20 78 6d 75 6c  |..CN..xdiv% xmul|
0000dbb0  25 3d 78 6d 75 6c 25 2a  6e 78 0d 43 58 19 e7 79  |%=xmul%*nx.CX..y|
0000dbc0  64 69 76 25 20 79 6d 75  6c 25 3d 79 6d 75 6c 25  |div% ymul%=ymul%|
0000dbd0  2a 6e 79 0d 43 62 05 cd  0d 43 6c 21 78 64 69 76  |*ny.Cb...Cl!xdiv|
0000dbe0  25 3d 78 64 69 76 25 2a  39 30 3a 79 64 69 76 25  |%=xdiv%*90:ydiv%|
0000dbf0  3d 79 64 69 76 25 2a 39  30 0d 43 76 05 cd 0d 43  |=ydiv%*90.Cv...C|
0000dc00  80 05 cd 0d 43 8a 15 e7  72 6f 74 61 74 65 25 20  |....C...rotate% |
0000dc10  c8 94 20 78 25 2c 79 25  0d 43 9e 16 e7 78 64 69  |.. x%,y%.C...xdi|
0000dc20  76 25 3d 30 20 78 64 69  76 25 3d 73 78 25 0d 43  |v%=0 xdiv%=sx%.C|
0000dc30  a8 16 e7 79 64 69 76 25  3d 30 20 79 64 69 76 25  |...ydiv%=0 ydiv%|
0000dc40  3d 73 79 25 0d 43 b2 1f  e7 78 73 24 3d 22 3d 22  |=sy%.C...xs$="="|
0000dc50  20 78 6d 75 6c 25 3d 78  25 3a 78 64 69 76 25 3d  | xmul%=x%:xdiv%=|
0000dc60  73 78 25 0d 43 bc 1f e7  79 73 24 3d 22 3d 22 20  |sx%.C...ys$="=" |
0000dc70  79 6d 75 6c 25 3d 79 25  3a 79 64 69 76 25 3d 73  |ymul%=y%:ydiv%=s|
0000dc80  79 25 0d 43 c6 0c e7 6c  6f 63 6b 25 20 8c 0d 43  |y%.C...lock% ..C|
0000dc90  d0 4d e7 78 6d 75 6c 25  2f 78 64 69 76 25 3e 79  |.M.xmul%/xdiv%>y|
0000dca0  6d 75 6c 25 2f 79 64 69  76 25 20 78 6d 75 6c 25  |mul%/ydiv% xmul%|
0000dcb0  3d 79 6d 75 6c 25 3a 78  64 69 76 25 3d 79 64 69  |=ymul%:xdiv%=ydi|
0000dcc0  76 25 20 8b 79 6d 75 6c  25 3d 78 6d 75 6c 25 3a  |v% .ymul%=xmul%:|
0000dcd0  79 64 69 76 25 3d 78 64  69 76 25 0d 43 da 05 cd  |ydiv%=xdiv%.C...|
0000dce0  0d 43 e4 0d e7 6e 63 6f  6c 3d 31 20 8c 0d 43 ee  |.C...ncol=1 ..C.|
0000dcf0  0b c8 8e 20 6d 24 20 ca  0d 43 f8 24 c9 22 43 22  |... m$ ..C.$."C"|
0000dd00  3a 78 64 69 76 25 3d 78  64 69 76 25 2a 34 3a 79  |:xdiv%=xdiv%*4:y|
0000dd10  64 69 76 25 3d 79 64 69  76 25 2a 34 0d 44 02 13  |div%=ydiv%*4.D..|
0000dd20  de 20 41 25 28 31 36 29  2c 42 25 28 31 36 29 0d  |. A%(16),B%(16).|
0000dd30  44 0c aa 41 25 28 29 3d  30 2c 26 30 30 30 30 30  |D..A%()=0,&00000|
0000dd40  30 30 31 2c 26 30 38 30  30 30 30 30 31 2c 26 30  |001,&08000001,&0|
0000dd50  38 30 30 30 31 30 31 2c  26 30 38 30 38 30 31 30  |8000101,&0808010|
0000dd60  31 2c 26 30 38 30 38 30  31 30 33 2c 26 30 43 30  |1,&08080103,&0C0|
0000dd70  38 30 31 30 33 2c 26 30  43 30 38 30 33 30 33 2c  |80103,&0C080303,|
0000dd80  26 30 43 30 43 30 33 30  33 2c 26 30 43 30 45 30  |&0C0C0303,&0C0E0|
0000dd90  33 30 33 2c 26 30 43 30  45 30 37 30 33 2c 26 30  |303,&0C0E0703,&0|
0000dda0  45 30 45 30 37 30 33 2c  26 30 45 30 45 30 37 30  |E0E0703,&0E0E070|
0000ddb0  37 2c 26 30 45 30 46 30  37 30 37 2c 26 30 45 30  |7,&0E0F0707,&0E0|
0000ddc0  46 30 46 30 37 2c 26 30  46 30 46 30 46 30 37 2c  |F0F07,&0F0F0F07,|
0000ddd0  26 30 46 30 46 30 46 30  46 0d 44 16 aa 42 25 28  |&0F0F0F0F.D..B%(|
0000dde0  29 3d 30 2c 26 30 30 30  30 30 30 30 38 2c 26 30  |)=0,&00000008,&0|
0000ddf0  31 30 30 30 30 30 38 2c  26 30 31 30 30 30 38 30  |1000008,&0100080|
0000de00  38 2c 26 30 31 30 31 30  38 30 38 2c 26 30 31 30  |8,&01010808,&010|
0000de10  31 30 38 30 43 2c 26 30  33 30 31 30 38 30 43 2c  |1080C,&0301080C,|
0000de20  26 30 33 30 31 30 43 30  43 2c 26 30 33 30 33 30  |&03010C0C,&03030|
0000de30  43 30 43 2c 26 30 33 30  37 30 43 30 43 2c 26 30  |C0C,&03070C0C,&0|
0000de40  33 30 37 30 45 30 43 2c  26 30 37 30 37 30 45 30  |3070E0C,&07070E0|
0000de50  43 2c 26 30 37 30 37 30  45 30 45 2c 26 30 37 30  |C,&07070E0E,&070|
0000de60  46 30 45 30 45 2c 26 30  37 30 46 30 46 30 45 2c  |F0E0E,&070F0F0E,|
0000de70  26 30 46 30 46 30 46 30  45 2c 26 30 46 30 46 30  |&0F0F0F0E,&0F0F0|
0000de80  46 30 46 0d 44 20 32 65  76 65 6e 5f 67 61 72 64  |F0F.D 2even_gard|
0000de90  3d a4 64 69 6d 28 31 37  2a 33 32 2a 34 29 3a 6f  |=.dim(17*32*4):o|
0000dea0  64 64 5f 67 61 72 64 3d  a4 64 69 6d 28 31 37 2a  |dd_gard=.dim(17*|
0000deb0  33 32 2a 34 29 0d 44 2a  43 e3 49 25 3d 30 b8 31  |32*4).D*C.I%=0.1|
0000dec0  36 3a e3 4a 25 3d 30 b8  31 36 3a 65 76 65 6e 5f  |6:.J%=0.16:even_|
0000ded0  67 61 72 64 21 28 4a 25  2a 33 32 2a 34 2b 49 25  |gard!(J%*32*4+I%|
0000dee0  2a 34 29 3d 41 25 28 49  25 29 84 42 25 28 4a 25  |*4)=A%(I%).B%(J%|
0000def0  29 3c 3c 34 3a ed 3a ed  0d 44 34 42 e3 49 25 3d  |)<<4:.:..D4B.I%=|
0000df00  30 b8 31 36 3a e3 4a 25  3d 30 b8 31 36 3a 6f 64  |0.16:.J%=0.16:od|
0000df10  64 5f 67 61 72 64 21 28  49 25 2a 33 32 2a 34 2b  |d_gard!(I%*32*4+|
0000df20  4a 25 2a 34 29 3d 42 25  28 49 25 29 84 41 25 28  |J%*4)=B%(I%).A%(|
0000df30  4a 25 29 3c 3c 34 3a ed  3a ed 0d 44 3e 24 c9 22  |J%)<<4:.:..D>$."|
0000df40  54 22 3a 78 64 69 76 25  3d 78 64 69 76 25 2a 33  |T":xdiv%=xdiv%*3|
0000df50  3a 79 64 69 76 25 3d 79  64 69 76 25 2a 33 0d 44  |:ydiv%=ydiv%*3.D|
0000df60  48 11 de 20 41 25 28 39  29 2c 42 25 28 39 29 0d  |H.. A%(9),B%(9).|
0000df70  44 52 40 41 25 28 29 3d  30 2c 26 30 30 30 31 2c  |DR@A%()=0,&0001,|
0000df80  26 34 30 30 31 2c 26 34  30 34 31 2c 26 34 30 34  |&4001,&4041,&404|
0000df90  33 2c 26 34 30 43 33 2c  26 36 30 43 33 2c 26 36  |3,&40C3,&60C3,&6|
0000dfa0  31 43 33 2c 26 37 31 43  33 2c 26 37 31 43 37 0d  |1C3,&71C3,&71C7.|
0000dfb0  44 5c 40 42 25 28 29 3d  30 2c 26 30 30 30 34 2c  |D\@B%()=0,&0004,|
0000dfc0  26 31 30 30 34 2c 26 31  31 30 34 2c 26 31 31 30  |&1004,&1104,&110|
0000dfd0  36 2c 26 31 31 38 36 2c  26 33 31 38 36 2c 26 33  |6,&1186,&3186,&3|
0000dfe0  31 43 36 2c 26 37 31 43  36 2c 26 37 31 43 37 0d  |1C6,&71C6,&71C7.|
0000dff0  44 66 32 65 76 65 6e 5f  67 61 72 64 3d a4 64 69  |Df2even_gard=.di|
0000e000  6d 28 31 30 2a 31 36 2a  34 29 3a 6f 64 64 5f 67  |m(10*16*4):odd_g|
0000e010  61 72 64 3d a4 64 69 6d  28 31 30 2a 31 36 2a 34  |ard=.dim(10*16*4|
0000e020  29 0d 44 70 41 e3 49 25  3d 30 b8 39 3a e3 4a 25  |).DpA.I%=0.9:.J%|
0000e030  3d 30 b8 39 3a 65 76 65  6e 5f 67 61 72 64 21 28  |=0.9:even_gard!(|
0000e040  4a 25 2a 31 36 2a 34 2b  49 25 2a 34 29 3d 41 25  |J%*16*4+I%*4)=A%|
0000e050  28 49 25 29 84 42 25 28  4a 25 29 3c 3c 33 3a ed  |(I%).B%(J%)<<3:.|
0000e060  3a ed 0d 44 7a 40 e3 49  25 3d 30 b8 39 3a e3 4a  |:..Dz@.I%=0.9:.J|
0000e070  25 3d 30 b8 39 3a 6f 64  64 5f 67 61 72 64 21 28  |%=0.9:odd_gard!(|
0000e080  49 25 2a 31 36 2a 34 2b  4a 25 2a 34 29 3d 42 25  |I%*16*4+J%*4)=B%|
0000e090  28 49 25 29 84 41 25 28  4a 25 29 3c 3c 33 3a ed  |(I%).A%(J%)<<3:.|
0000e0a0  3a ed 0d 44 84 24 c9 22  44 22 3a 78 64 69 76 25  |:..D.$."D":xdiv%|
0000e0b0  3d 78 64 69 76 25 2a 32  3a 79 64 69 76 25 3d 79  |=xdiv%*2:ydiv%=y|
0000e0c0  64 69 76 25 2a 32 0d 44  8e 11 de 20 41 25 28 34  |div%*2.D... A%(4|
0000e0d0  29 2c 42 25 28 34 29 0d  44 98 19 41 25 28 29 3d  |),B%(4).D..A%()=|
0000e0e0  30 2c 26 31 2c 26 32 31  2c 26 33 31 2c 26 33 33  |0,&1,&21,&31,&33|
0000e0f0  0d 44 a2 19 42 25 28 29  3d 30 2c 26 32 2c 26 31  |.D..B%()=0,&2,&1|
0000e100  32 2c 26 33 32 2c 26 33  33 0d 44 ac 2a 65 76 65  |2,&32,&33.D.*eve|
0000e110  6e 5f 67 61 72 64 3d a4  64 69 6d 28 35 2a 38 29  |n_gard=.dim(5*8)|
0000e120  3a 6f 64 64 5f 67 61 72  64 3d a4 64 69 6d 28 35  |:odd_gard=.dim(5|
0000e130  2a 38 29 0d 44 b6 3c e3  49 25 3d 30 b8 34 3a e3  |*8).D.<.I%=0.4:.|
0000e140  4a 25 3d 30 b8 34 3a 65  76 65 6e 5f 67 61 72 64  |J%=0.4:even_gard|
0000e150  3f 28 4a 25 2a 38 2b 49  25 29 3d 41 25 28 49 25  |?(J%*8+I%)=A%(I%|
0000e160  29 84 42 25 28 4a 25 29  3c 3c 32 3a ed 3a ed 0d  |).B%(J%)<<2:.:..|
0000e170  44 c0 3b e3 49 25 3d 30  b8 34 3a e3 4a 25 3d 30  |D.;.I%=0.4:.J%=0|
0000e180  b8 34 3a 6f 64 64 5f 67  61 72 64 3f 28 49 25 2a  |.4:odd_gard?(I%*|
0000e190  38 2b 4a 25 29 3d 42 25  28 49 25 29 84 41 25 28  |8+J%)=B%(I%).A%(|
0000e1a0  4a 25 29 3c 3c 32 3a ed  3a ed 0d 44 ca 05 cb 0d  |J%)<<2:.:..D....|
0000e1b0  44 d4 05 cd 0d 44 de 2d  f2 72 65 64 75 63 65 28  |D....D.-.reduce(|
0000e1c0  78 6d 75 6c 25 2c 78 64  69 76 25 29 3a f2 72 65  |xmul%,xdiv%):.re|
0000e1d0  64 75 63 65 28 79 6d 75  6c 25 2c 79 64 69 76 25  |duce(ymul%,ydiv%|
0000e1e0  29 0d 44 e8 40 e7 69 6e  66 6f 25 20 f1 22 53 69  |).D.@.info% ."Si|
0000e1f0  7a 65 20 72 61 74 69 6f  73 20 61 72 65 20 78 20  |ze ratios are x |
0000e200  22 3b 78 6d 75 6c 25 22  3a 22 78 64 69 76 25 22  |";xmul%":"xdiv%"|
0000e210  20 79 20 22 79 6d 75 6c  25 22 3a 22 79 64 69 76  | y "ymul%":"ydiv|
0000e220  25 0d 44 f2 3f 78 25 3d  73 78 25 2a 78 6d 75 6c  |%.D.?x%=sx%*xmul|
0000e230  25 2f 78 64 69 76 25 2b  2e 39 39 39 39 3a 79 25  |%/xdiv%+.9999:y%|
0000e240  3d 73 79 25 2a 79 6d 75  6c 25 2f 79 64 69 76 25  |=sy%*ymul%/ydiv%|
0000e250  2b 2e 39 39 39 39 3a 72  6f 77 73 25 3d 73 79 25  |+.9999:rows%=sy%|
0000e260  0d 44 fc 18 6f 72 64 65  72 25 3d 78 25 2a 79 25  |.D..order%=x%*y%|
0000e270  3e 73 78 25 2a 73 79 25  0d 45 06 1a 63 6f 64 65  |>sx%*sy%.E..code|
0000e280  25 3d a4 64 69 6d 28 38  31 39 32 29 3a 53 50 3d  |%=.dim(8192):SP=|
0000e290  31 33 0d 45 10 0d e7 63  61 63 68 65 25 20 8c 0d  |13.E...cache% ..|
0000e2a0  45 1a 15 f2 63 61 63 68  65 73 69 7a 65 28 63 6f  |E...cachesize(co|
0000e2b0  64 65 25 29 0d 45 24 12  e7 63 61 63 68 65 62 79  |de%).E$..cacheby|
0000e2c0  74 65 73 25 20 8c 0d 45  2e 3a 66 69 6c 65 73 69  |tes% ..E.:filesi|
0000e2d0  7a 65 25 3d a2 23 63 25  2d 8f 23 63 25 3a e7 63  |ze%=.#c%-.#c%:.c|
0000e2e0  61 63 68 65 25 3e 66 69  6c 65 73 69 7a 65 25 20  |ache%>filesize% |
0000e2f0  63 61 63 68 65 25 3d 66  69 6c 65 73 69 7a 65 25  |cache%=filesize%|
0000e300  0d 45 38 39 e7 63 61 63  68 65 62 79 74 65 73 25  |.E89.cachebytes%|
0000e310  3e 30 20 e7 63 61 63 68  65 25 3e 63 61 63 68 65  |>0 .cache%>cache|
0000e320  62 79 74 65 73 25 20 63  61 63 68 65 25 3d 63 61  |bytes% cache%=ca|
0000e330  63 68 65 62 79 74 65 73  25 0d 45 42 15 63 61 63  |chebytes%.EB.cac|
0000e340  68 65 72 6f 77 73 25 3d  63 61 63 68 65 25 0d 45  |herows%=cache%.E|
0000e350  4c 05 cc 0d 45 56 3e 66  69 6c 65 73 69 7a 65 25  |L...EV>filesize%|
0000e360  3d 73 79 25 2a 72 6f 77  62 79 74 65 73 25 3a e7  |=sy%*rowbytes%:.|
0000e370  63 61 63 68 65 25 3c 72  6f 77 62 79 74 65 73 25  |cache%<rowbytes%|
0000e380  20 63 61 63 68 65 25 3d  72 6f 77 62 79 74 65 73  | cache%=rowbytes|
0000e390  25 0d 45 60 26 e7 63 61  63 68 65 25 3e 66 69 6c  |%.E`&.cache%>fil|
0000e3a0  65 73 69 7a 65 25 20 63  61 63 68 65 25 3d 66 69  |esize% cache%=fi|
0000e3b0  6c 65 73 69 7a 65 25 0d  45 6a 43 63 61 63 68 65  |lesize%.EjCcache|
0000e3c0  72 6f 77 73 25 3d 73 74  72 69 70 72 6f 77 73 25  |rows%=striprows%|
0000e3d0  3a e7 63 61 63 68 65 72  6f 77 73 25 3c 31 20 63  |:.cacherows%<1 c|
0000e3e0  61 63 68 65 72 6f 77 73  25 3d 63 61 63 68 65 25  |acherows%=cache%|
0000e3f0  81 72 6f 77 62 79 74 65  73 25 0d 45 74 1f 63 61  |.rowbytes%.Et.ca|
0000e400  63 68 65 25 3d 63 61 63  68 65 72 6f 77 73 25 2a  |che%=cacherows%*|
0000e410  72 6f 77 62 79 74 65 73  25 0d 45 7e 05 cd 0d 45  |rowbytes%.E~...E|
0000e420  88 47 64 61 74 61 63 61  63 68 65 25 3d a4 63 61  |.Gdatacache%=.ca|
0000e430  63 68 65 64 69 6d 28 63  61 63 68 65 25 29 3a e7  |chedim(cache%):.|
0000e440  64 61 74 61 63 61 63 68  65 25 3d 2d 31 20 64 61  |datacache%=-1 da|
0000e450  74 61 63 61 63 68 65 25  3d a4 64 69 6d 28 63 61  |tacache%=.dim(ca|
0000e460  63 68 65 25 29 0d 45 92  05 cd 0d 45 9c 1d e7 6e  |che%).E....E...n|
0000e470  63 6f 6c 3d 32 35 35 20  e7 6d 24 3c 3e 22 44 22  |col=255 .m$<>"D"|
0000e480  20 6d 24 3d 22 52 22 0d  45 a6 1f e7 6d 24 3d 22  | m$="R".E...m$="|
0000e490  52 22 20 84 28 6e 63 6f  6c 3d 36 33 20 80 6d 24  |R" .(ncol=63 .m$|
0000e4a0  3d 22 22 29 20 8c 0d 45  b0 2b c8 99 35 33 2c 2d  |="") ..E.+..53,-|
0000e4b0  31 2c 33 20 b8 2c 2c 4a  25 3a e7 6e 63 6f 6c 3d  |1,3 .,,J%:.ncol=|
0000e4c0  32 35 35 20 80 20 eb 3d  6d 20 4a 25 3d 6e 63 6f  |255 . .=m J%=nco|
0000e4d0  6c 0d 45 ba 24 e7 6e 63  6f 6c 3d 36 33 20 80 28  |l.E.$.ncol=63 .(|
0000e4e0  6d 24 3d 22 22 84 6d 24  3d 22 52 22 29 20 4a 25  |m$="".m$="R") J%|
0000e4f0  3d 6e 63 6f 6c 0d 45 c4  50 e7 4a 25 3c 3e 6e 63  |=ncol.E.P.J%<>nc|
0000e500  6f 6c 20 f2 63 6c 6f 73  65 3a 85 34 32 2c 22 59  |ol .close:.42,"Y|
0000e510  6f 75 20 6d 75 73 74 20  62 65 20 69 6e 20 61 20  |ou must be in a |
0000e520  22 2b c3 28 6e 63 6f 6c  2b 31 29 2b 22 20 63 6f  |"+.(ncol+1)+" co|
0000e530  6c 6f 75 72 20 6d 6f 64  65 20 74 6f 20 64 6f 20  |lour mode to do |
0000e540  74 68 69 73 22 0d 45 ce  19 4a 25 3d 6e 63 6f 6c  |this".E..J%=ncol|
0000e550  3a e7 4a 25 3d 36 33 20  4a 25 3d 32 35 35 0d 45  |:.J%=63 J%=255.E|
0000e560  d8 1b 70 61 6c 65 74 74  65 25 3d a4 64 69 6d 28  |..palette%=.dim(|
0000e570  28 4a 25 2b 31 29 2a 34  29 0d 45 e2 0f e7 6e 63  |(J%+1)*4).E...nc|
0000e580  6f 6c 3d 32 35 35 20 8c  0d 45 ec 34 c8 99 22 43  |ol=255 ..E.4.."C|
0000e590  6f 6c 6f 75 72 54 72 61  6e 73 5f 52 65 61 64 50  |olourTrans_ReadP|
0000e5a0  61 6c 65 74 74 65 22 2c  2d 31 2c 2d 31 2c 70 61  |alette",-1,-1,pa|
0000e5b0  6c 65 74 74 65 25 2c 32  35 36 2a 34 0d 45 f6 35  |lette%,256*4.E.5|
0000e5c0  e3 49 25 3d 30 b8 32 35  35 3a 70 61 6c 65 74 74  |.I%=0.255:palett|
0000e5d0  65 25 21 28 49 25 3c 3c  32 29 3d 70 61 6c 65 74  |e%!(I%<<2)=palet|
0000e5e0  74 65 25 21 28 49 25 3c  3c 32 29 3e 3e 3e 38 3a  |te%!(I%<<2)>>>8:|
0000e5f0  ed 0d 46 00 05 cc 0d 46  0a 0e e7 6e 63 6f 6c 3d  |..F....F...ncol=|
0000e600  36 33 20 8c 0d 46 14 0d  e3 49 25 3d 30 b8 32 35  |63 ..F...I%=0.25|
0000e610  35 0d 46 1e 2b 70 61 6c  65 74 74 65 25 21 28 49  |5.F.+palette%!(I|
0000e620  25 3c 3c 32 29 3d 28 49  25 80 37 20 84 20 28 49  |%<<2)=(I%.7 . (I|
0000e630  25 80 31 36 29 3e 3e 31  29 2a 31 37 0d 46 28 2f  |%.16)>>1)*17.F(/|
0000e640  70 61 6c 65 74 74 65 25  3f 28 49 25 3c 3c 32 20  |palette%?(I%<<2 |
0000e650  84 31 29 3d 28 49 25 80  33 20 84 20 28 49 25 80  |.1)=(I%.3 . (I%.|
0000e660  26 36 30 29 3e 3e 33 29  2a 31 37 0d 46 32 3b 70  |&60)>>3)*17.F2;p|
0000e670  61 6c 65 74 74 65 25 3f  28 49 25 3c 3c 32 20 84  |alette%?(I%<<2 .|
0000e680  32 29 3d 28 49 25 80 33  20 84 20 28 49 25 80 38  |2)=(I%.3 . (I%.8|
0000e690  29 3e 3e 31 20 84 20 28  49 25 80 31 32 38 29 3e  |)>>1 . (I%.128)>|
0000e6a0  3e 34 29 2a 31 37 0d 46  3c 05 ed 0d 46 46 05 cc  |>4)*17.F<...FF..|
0000e6b0  0d 46 50 48 e3 49 25 3d  30 b8 6e 63 6f 6c 3a c8  |.FPH.I%=0.ncol:.|
0000e6c0  99 22 4f 53 5f 52 65 61  64 50 61 6c 65 74 74 65  |."OS_ReadPalette|
0000e6d0  22 2c 49 25 2c 31 36 20  b8 20 2c 2c 69 25 3a 70  |",I%,16 . ,,i%:p|
0000e6e0  61 6c 65 74 74 65 25 21  28 49 25 3c 3c 32 29 3d  |alette%!(I%<<2)=|
0000e6f0  69 25 3e 3e 3e 38 3a ed  0d 46 5a 05 cd 0d 46 64  |i%>>>8:..FZ...Fd|
0000e700  05 cd 0d 46 6e 25 74 25  3d b9 3a 6b 25 3d 70 61  |...Fn%t%=.:k%=pa|
0000e710  6c 65 74 74 65 25 2b 31  3a 6e 6b 25 3d 70 61 6c  |lette%+1:nk%=pal|
0000e720  65 74 74 65 25 2b 32 0d  46 78 12 e3 49 25 3d 30  |ette%+2.Fx..I%=0|
0000e730  b8 6e 63 6f 6c 2a 34 88  34 0d 46 82 32 e7 70 61  |.ncol*4.4.F.2.pa|
0000e740  6c 65 74 74 65 25 3f 49  25 3c 3e 6b 25 3f 49 25  |lette%?I%<>k%?I%|
0000e750  20 84 20 70 61 6c 65 74  74 65 25 3f 49 25 3c 3e  | . palette%?I%<>|
0000e760  6e 6b 25 3f 49 25 20 74  25 3d a3 0d 46 8c 05 ed  |nk%?I% t%=..F...|
0000e770  0d 46 96 17 e7 6e 63 6f  6c 3e 31 36 20 e7 74 25  |.F...ncol>16 .t%|
0000e780  20 6d 24 3d 22 44 22 0d  46 a0 17 e7 6e 63 6f 6c  | m$="D".F...ncol|
0000e790  3d 31 35 20 e7 74 25 20  6d 24 3d 22 54 22 0d 46  |=15 .t% m$="T".F|
0000e7a0  aa 0d e7 6d 24 3d 22 52  22 20 8c 0d 46 b4 37 e7  |...m$="R" ..F.7.|
0000e7b0  20 73 78 25 2a 78 6d 75  6c 25 2f 78 64 69 76 25  | sx%*xmul%/xdiv%|
0000e7c0  2a 73 79 25 2a 79 6d 75  6c 25 2f 79 64 69 76 25  |*sy%*ymul%/ydiv%|
0000e7d0  3c 32 30 30 30 30 30 20  6b 25 3d 33 20 8b 6b 25  |<200000 k%=3 .k%|
0000e7e0  3d 34 0d 46 be 0c 6e 6b  25 3d 38 2d 6b 25 0d 46  |=4.F..nk%=8-k%.F|
0000e7f0  c8 0d 74 25 3d 31 3c 3c  6e 6b 25 0d 46 d2 0e 6d  |..t%=1<<nk%.F..m|
0000e800  61 73 6b 25 3d 74 25 2d  31 0d 46 dc 11 74 64 32  |ask%=t%-1.F..td2|
0000e810  25 3d 31 3c 3c 6e 6b 25  2d 31 0d 46 e6 13 73 74  |%=1<<nk%-1.F..st|
0000e820  65 70 25 3d 31 3c 3c 28  38 2d 6b 25 29 0d 46 f0  |ep%=1<<(8-k%).F.|
0000e830  24 6e 63 6f 6c 25 3d 6e  63 6f 6c 2b 31 3a e7 6e  |$ncol%=ncol+1:.n|
0000e840  63 6f 6c 25 3d 36 34 20  6e 63 6f 6c 25 3d 32 35  |col%=64 ncol%=25|
0000e850  36 0d 46 fa 1b 69 63 74  25 3d a4 64 69 6d 28 32  |6.F..ict%=.dim(2|
0000e860  5e 28 6b 25 2a 33 29 2a  34 2d 31 29 0d 47 04 61  |^(k%*3)*4-1).G.a|
0000e870  e7 63 61 63 68 65 25 3c  38 31 39 32 2a 36 20 73  |.cache%<8192*6 s|
0000e880  63 72 61 74 63 68 25 3d  a4 64 69 6d 28 38 31 39  |cratch%=.dim(819|
0000e890  32 2a 36 29 3a 73 63 72  61 74 63 68 73 7a 25 3d  |2*6):scratchsz%=|
0000e8a0  38 31 39 32 2a 36 20 8b  73 63 72 61 74 63 68 25  |8192*6 .scratch%|
0000e8b0  3d 64 61 74 61 63 61 63  68 65 25 3a 73 63 72 61  |=datacache%:scra|
0000e8c0  74 63 68 73 7a 25 3d 63  61 63 68 65 25 0d 47 0e  |tchsz%=cache%.G.|
0000e8d0  3e e7 69 6e 66 6f 25 20  f1 22 42 65 67 69 6e 20  |>.info% ."Begin |
0000e8e0  74 61 62 6c 65 20 67 65  6e 65 72 61 74 69 6f 6e  |table generation|
0000e8f0  20 77 69 74 68 20 22 3b  73 63 72 61 74 63 68 73  | with ";scratchs|
0000e900  7a 25 22 20 62 79 74 65  73 2e 22 0d 47 18 0d e3  |z%" bytes.".G...|
0000e910  5a 25 3d 30 b8 32 88 32  0d 47 22 0c 50 25 3d 63  |Z%=0.2.2.G".P%=c|
0000e920  6f 64 65 25 0d 47 2c 0b  5b 4f 50 54 20 5a 25 0d  |ode%.G,.[OPT Z%.|
0000e930  47 36 0a 2e 6d 61 6b 65  25 0d 47 40 14 53 54 4d  |G6..make%.G@.STM|
0000e940  46 44 20 72 31 33 21 2c  7b 72 31 34 7d 0d 47 4a  |FD r13!,{r14}.GJ|
0000e950  0e 4c 44 52 20 72 34 2c  69 63 74 0d 47 54 13 4d  |.LDR r4,ict.GT.M|
0000e960  4f 56 20 72 32 2c 23 73  74 65 70 25 2f 32 0d 47  |OV r2,#step%/2.G|
0000e970  5e 0d 2e 62 6c 75 65 6c  6f 6f 70 0d 47 68 13 4d  |^..blueloop.Gh.M|
0000e980  4f 56 20 72 31 2c 23 73  74 65 70 25 2f 32 0d 47  |OV r1,#step%/2.G|
0000e990  72 0e 2e 67 72 65 65 6e  6c 6f 6f 70 0d 47 7c 13  |r..greenloop.G|.|
0000e9a0  4d 4f 56 20 72 30 2c 23  73 74 65 70 25 2f 32 0d  |MOV r0,#step%/2.|
0000e9b0  47 86 0c 2e 72 65 64 6c  6f 6f 70 0d 47 9a 16 4d  |G...redloop.G..M|
0000e9c0  4f 56 20 72 33 2c 72 30  2c 4c 53 52 20 23 6e 6b  |OV r3,r0,LSR #nk|
0000e9d0  25 0d 47 a4 17 4d 4f 56  20 72 31 34 2c 72 31 2c  |%.G..MOV r14,r1,|
0000e9e0  4c 53 52 20 23 6e 6b 25  0d 47 ae 16 4d 4f 56 20  |LSR #nk%.G..MOV |
0000e9f0  72 35 2c 72 32 2c 4c 53  52 20 23 6e 6b 25 0d 47  |r5,r2,LSR #nk%.G|
0000ea00  b8 18 84 52 20 72 33 2c  72 33 2c 72 31 34 2c 4c  |...R r3,r3,r14,L|
0000ea10  53 4c 20 23 6b 25 0d 47  c2 19 84 52 20 72 33 2c  |SL #k%.G...R r3,|
0000ea20  72 33 2c 72 35 2c 4c 53  4c 20 23 6b 25 2a 32 0d  |r3,r5,LSL #k%*2.|
0000ea30  47 cc 0e 42 4c 20 64 65  76 69 6f 75 73 0d 47 d6  |G..BL devious.G.|
0000ea40  16 41 44 44 20 72 30 2c  72 30 2c 23 73 74 65 70  |.ADD r0,r0,#step|
0000ea50  25 2a 32 0d 47 e0 0f 43  4d 50 20 72 30 2c 23 32  |%*2.G..CMP r0,#2|
0000ea60  35 36 0d 47 ea 0f 42 43  43 20 72 65 64 6c 6f 6f  |56.G..BCC redloo|
0000ea70  70 0d 47 f4 14 41 44 44  20 72 31 2c 72 31 2c 23  |p.G..ADD r1,r1,#|
0000ea80  73 74 65 70 25 0d 47 fe  0f 43 4d 50 20 72 31 2c  |step%.G..CMP r1,|
0000ea90  23 32 35 36 0d 48 08 11  42 43 43 20 67 72 65 65  |#256.H..BCC gree|
0000eaa0  6e 6c 6f 6f 70 0d 48 12  14 41 44 44 20 72 32 2c  |nloop.H..ADD r2,|
0000eab0  72 32 2c 23 73 74 65 70  25 0d 48 1c 0f 43 4d 50  |r2,#step%.H..CMP|
0000eac0  20 72 32 2c 23 32 35 36  0d 48 26 10 42 43 43 20  | r2,#256.H&.BCC |
0000ead0  62 6c 75 65 6c 6f 6f 70  0d 48 30 14 4c 44 4d 46  |blueloop.H0.LDMF|
0000eae0  44 20 72 31 33 21 2c 7b  70 63 7d 5e 0d 48 3a 14  |D r13!,{pc}^.H:.|
0000eaf0  2e 63 74 20 44 43 44 20  70 61 6c 65 74 74 65 25  |.ct DCD palette%|
0000eb00  0d 48 44 1f 2e 6d 69 6e  20 44 43 44 20 63 6f 64  |.HD..min DCD cod|
0000eb10  65 25 2b 38 31 39 32 2d  32 35 36 2a 32 2a 34 0d  |e%+8192-256*2*4.|
0000eb20  48 4e 11 2e 69 63 74 20  44 43 44 20 69 63 74 25  |HN..ict DCD ict%|
0000eb30  0d 48 58 17 2e 66 73 61  61 64 20 44 43 44 20 73  |.HX..fsaad DCD s|
0000eb40  63 72 61 74 63 68 25 0d  48 62 23 2e 66 73 61 6c  |cratch%.Hb#.fsal|
0000eb50  69 6d 20 44 43 44 20 73  63 72 61 74 63 68 25 2b  |im DCD scratch%+|
0000eb60  73 63 72 61 74 63 68 73  7a 25 0d 48 6c 0c 2e 64  |scratchsz%.Hl..d|
0000eb70  65 76 69 6f 75 73 0d 48  76 26 53 54 4d 46 44 20  |evious.Hv&STMFD |
0000eb80  72 31 33 21 2c 7b 72 30  2c 72 31 2c 72 32 2c 72  |r13!,{r0,r1,r2,r|
0000eb90  33 2c 72 34 2c 72 38 2c  72 31 34 7d 0d 48 80 1c  |3,r4,r8,r14}.H..|
0000eba0  42 49 43 20 72 30 2c 72  30 2c 23 28 6d 61 73 6b  |BIC r0,r0,#(mask|
0000ebb0  25 3c 3c 31 29 2b 31 20  0d 48 8a 14 42 49 43 20  |%<<1)+1 .H..BIC |
0000ebc0  72 31 2c 72 31 2c 23 6d  61 73 6b 25 0d 48 94 14  |r1,r1,#mask%.H..|
0000ebd0  42 49 43 20 72 32 2c 72  32 2c 23 6d 61 73 6b 25  |BIC r2,r2,#mask%|
0000ebe0  0d 48 b2 0d 4d 4f 56 20  72 35 2c 23 30 0d 48 bc  |.H..MOV r5,#0.H.|
0000ebf0  0d 4c 44 52 20 72 36 2c  63 74 0d 48 c6 13 4d 4f  |.LDR r6,ct.H..MO|
0000ec00  56 20 72 39 2c 23 26 66  66 30 30 30 30 0d 48 d0  |V r9,#&ff0000.H.|
0000ec10  14 4d 4f 56 20 72 31 34  2c 23 26 66 66 30 30 30  |.MOV r14,#&ff000|
0000ec20  30 0d 48 da 0f 4c 44 52  20 72 31 32 2c 6d 69 6e  |0.H..LDR r12,min|
0000ec30  0d 48 e4 0c 2e 64 65 76  6c 6f 6f 70 0d 48 ee 1a  |.H...devloop.H..|
0000ec40  4c 44 52 20 72 37 2c 5b  72 36 2c 72 35 2c 4c 53  |LDR r7,[r6,r5,LS|
0000ec50  4c 20 23 32 5d 20 0d 48  f8 16 4d 4f 56 20 72 38  |L #2] .H..MOV r8|
0000ec60  2c 72 37 2c 6c 73 72 20  23 31 36 20 0d 49 02 16  |,r7,lsr #16 .I..|
0000ec70  42 49 43 20 72 31 30 2c  72 38 2c 23 6d 61 73 6b  |BIC r10,r8,#mask|
0000ec80  25 20 0d 49 0c 13 41 44  44 20 72 31 31 2c 72 32  |% .I..ADD r11,r2|
0000ec90  2c 23 74 25 20 0d 49 16  0f 43 4d 50 20 72 31 30  |,#t% .I..CMP r10|
0000eca0  2c 72 32 20 0d 49 20 11  42 45 51 20 62 6c 75 65  |,r2 .I .BEQ blue|
0000ecb0  65 71 75 61 6c 0d 49 2a  14 53 55 42 43 43 20 72  |equal.I*.SUBCC r|
0000ecc0  31 30 2c 72 32 2c 72 38  20 0d 49 34 15 53 55 42  |10,r2,r8 .I4.SUB|
0000ecd0  43 43 20 72 31 31 2c 72  31 31 2c 72 38 20 0d 49  |CC r11,r11,r8 .I|
0000ece0  3e 15 53 55 42 43 53 20  72 31 30 2c 72 38 2c 72  |>.SUBCS r10,r8,r|
0000ecf0  31 31 20 0d 49 48 14 53  55 42 43 53 20 72 31 31  |11 .IH.SUBCS r11|
0000ed00  2c 72 38 2c 72 32 20 0d  49 52 13 4d 55 4c 20 72  |,r8,r2 .IR.MUL r|
0000ed10  33 2c 72 31 30 2c 72 31  30 20 0d 49 5c 0d 2e 64  |3,r10,r10 .I\..d|
0000ed20  6f 6e 65 62 6c 75 65 0d  49 66 13 4d 55 4c 20 72  |oneblue.If.MUL r|
0000ed30  34 2c 72 31 31 2c 72 31  31 20 0d 49 70 14 4d 4f  |4,r11,r11 .Ip.MO|
0000ed40  56 20 72 38 2c 72 37 2c  6c 73 72 20 23 38 0d 49  |V r8,r7,lsr #8.I|
0000ed50  7a 11 80 20 72 38 2c 72  38 2c 23 32 35 35 20 0d  |z.. r8,r8,#255 .|
0000ed60  49 84 16 42 49 43 20 72  31 30 2c 72 38 2c 23 6d  |I..BIC r10,r8,#m|
0000ed70  61 73 6b 25 20 0d 49 8e  13 41 44 44 20 72 31 31  |ask% .I..ADD r11|
0000ed80  2c 72 31 2c 23 74 25 20  0d 49 98 10 43 4d 50 20  |,r1,#t% .I..CMP |
0000ed90  72 31 30 2c 72 31 20 20  0d 49 a2 12 42 45 51 20  |r10,r1  .I..BEQ |
0000eda0  67 72 65 65 6e 65 71 75  61 6c 0d 49 ac 14 53 55  |greenequal.I..SU|
0000edb0  42 43 43 20 72 31 30 2c  72 31 2c 72 38 20 0d 49  |BCC r10,r1,r8 .I|
0000edc0  b6 15 53 55 42 43 43 20  72 31 31 2c 72 31 31 2c  |..SUBCC r11,r11,|
0000edd0  72 38 20 0d 49 c0 15 53  55 42 43 53 20 72 31 30  |r8 .I..SUBCS r10|
0000ede0  2c 72 38 2c 72 31 31 20  0d 49 ca 14 53 55 42 43  |,r8,r11 .I..SUBC|
0000edf0  53 20 72 31 31 2c 72 38  2c 72 31 20 0d 49 d4 16  |S r11,r8,r1 .I..|
0000ee00  4d 4c 41 20 72 33 2c 72  31 30 2c 72 31 30 2c 72  |MLA r3,r10,r10,r|
0000ee10  33 20 0d 49 de 0e 2e 64  6f 6e 65 67 72 65 65 6e  |3 .I...donegreen|
0000ee20  0d 49 e8 16 4d 4c 41 20  72 34 2c 72 31 31 2c 72  |.I..MLA r4,r11,r|
0000ee30  31 31 2c 72 34 20 0d 49  f2 11 80 20 72 38 2c 72  |11,r4 .I... r8,r|
0000ee40  37 2c 23 32 35 35 20 0d  4a 06 16 42 49 43 20 72  |7,#255 .J..BIC r|
0000ee50  31 30 2c 72 38 2c 23 6d  61 73 6b 25 20 0d 4a 10  |10,r8,#mask% .J.|
0000ee60  13 41 44 44 20 72 31 31  2c 72 30 2c 23 74 25 20  |.ADD r11,r0,#t% |
0000ee70  0d 4a 1a 0f 43 4d 50 20  72 31 30 2c 72 30 20 0d  |.J..CMP r10,r0 .|
0000ee80  4a 24 11 42 45 51 20 72  65 64 65 71 75 61 6c 30  |J$.BEQ redequal0|
0000ee90  0d 4a 2e 14 53 55 42 43  43 20 72 31 30 2c 72 30  |.J..SUBCC r10,r0|
0000eea0  2c 72 38 20 0d 4a 38 15  53 55 42 43 43 20 72 31  |,r8 .J8.SUBCC r1|
0000eeb0  31 2c 72 31 31 2c 72 38  20 0d 4a 42 15 53 55 42  |1,r11,r8 .JB.SUB|
0000eec0  43 53 20 72 31 30 2c 72  38 2c 72 31 31 20 0d 4a  |CS r10,r8,r11 .J|
0000eed0  4c 14 53 55 42 43 53 20  72 31 31 2c 72 38 2c 72  |L.SUBCS r11,r8,r|
0000eee0  30 20 0d 4a 56 16 4d 4c  41 20 72 37 2c 72 31 30  |0 .JV.MLA r7,r10|
0000eef0  2c 72 31 30 2c 72 33 20  0d 4a 60 1b 53 54 52 20  |,r10,r3 .J`.STR |
0000ef00  72 37 2c 5b 72 31 32 2c  72 35 2c 4c 53 4c 20 23  |r7,[r12,r5,LSL #|
0000ef10  32 5d 20 0d 4a 6a 0d 2e  64 6f 6e 65 72 65 64 30  |2] .Jj..donered0|
0000ef20  0d 4a 74 16 4d 4c 41 20  72 37 2c 72 31 31 2c 72  |.Jt.MLA r7,r11,r|
0000ef30  31 31 2c 72 34 20 0d 4a  7e 0e 43 4d 50 20 72 37  |11,r4 .J~.CMP r7|
0000ef40  2c 72 39 20 0d 4a 88 10  4d 4f 56 43 43 20 72 39  |,r9 .J..MOVCC r9|
0000ef50  2c 72 37 20 0d 4a 9c 12  41 44 44 20 72 37 2c 72  |,r7 .J..ADD r7,r|
0000ef60  30 2c 23 74 25 20 0d 4a  a6 16 42 49 43 20 72 31  |0,#t% .J..BIC r1|
0000ef70  30 2c 72 38 2c 23 6d 61  73 6b 25 20 0d 4a b0 13  |0,r8,#mask% .J..|
0000ef80  41 44 44 20 72 31 31 2c  72 37 2c 23 74 25 20 0d  |ADD r11,r7,#t% .|
0000ef90  4a ba 0f 43 4d 50 20 72  31 30 2c 72 37 20 0d 4a  |J..CMP r10,r7 .J|
0000efa0  c4 11 42 45 51 20 72 65  64 65 71 75 61 6c 31 0d  |..BEQ redequal1.|
0000efb0  4a ce 14 53 55 42 43 43  20 72 31 30 2c 72 37 2c  |J..SUBCC r10,r7,|
0000efc0  72 38 20 0d 4a d8 15 53  55 42 43 43 20 72 31 31  |r8 .J..SUBCC r11|
0000efd0  2c 72 31 31 2c 72 38 20  0d 4a e2 15 53 55 42 43  |,r11,r8 .J..SUBC|
0000efe0  53 20 72 31 30 2c 72 38  2c 72 31 31 20 0d 4a ec  |S r10,r8,r11 .J.|
0000eff0  14 53 55 42 43 53 20 72  31 31 2c 72 38 2c 72 37  |.SUBCS r11,r8,r7|
0000f000  20 0d 4a f6 16 4d 4c 41  20 72 33 2c 72 31 30 2c  | .J..MLA r3,r10,|
0000f010  72 31 30 2c 72 33 20 0d  4b 00 0d 2e 64 6f 6e 65  |r10,r3 .K...done|
0000f020  72 65 64 31 0d 4b 0a 14  41 44 44 20 72 37 2c 72  |red1.K..ADD r7,r|
0000f030  35 2c 23 6e 63 6f 6c 25  0d 4b 14 1b 53 54 52 20  |5,#ncol%.K..STR |
0000f040  72 33 2c 5b 72 31 32 2c  72 37 2c 4c 53 4c 20 23  |r3,[r12,r7,LSL #|
0000f050  32 5d 20 0d 4b 1e 16 4d  4c 41 20 72 37 2c 72 31  |2] .K..MLA r7,r1|
0000f060  31 2c 72 31 31 2c 72 34  20 0d 4b 28 0f 43 4d 50  |1,r11,r4 .K(.CMP|
0000f070  20 72 37 2c 72 31 34 20  0d 4b 32 11 4d 4f 56 43  | r7,r14 .K2.MOVC|
0000f080  43 20 72 31 34 2c 72 37  20 0d 4b 3c 10 41 44 44  |C r14,r7 .K<.ADD|
0000f090  20 72 35 2c 72 35 2c 23  31 0d 4b 46 11 43 4d 50  | r5,r5,#1.KF.CMP|
0000f0a0  20 72 35 2c 23 6e 63 6f  6c 25 0d 4b 50 0f 42 43  | r5,#ncol%.KP.BC|
0000f0b0  43 20 64 65 76 6c 6f 6f  70 0d 4b 5a 1f 4c 44 4d  |C devloop.KZ.LDM|
0000f0c0  46 44 20 72 31 33 21 2c  7b 72 30 2c 72 31 2c 72  |FD r13!,{r0,r1,r|
0000f0d0  32 2c 72 33 2c 72 34 7d  0d 4b 6e 11 4c 44 52 20  |2,r3,r4}.Kn.LDR |
0000f0e0  72 35 2c 66 73 61 61 64  20 0d 4b 78 0d 4d 4f 56  |r5,fsaad .Kx.MOV|
0000f0f0  20 72 37 2c 72 35 0d 4b  82 0e 4d 4f 56 20 72 31  | r7,r5.K..MOV r1|
0000f100  30 2c 23 30 0d 4b 8c 0d  2e 63 61 6c 63 6e 75 6d  |0,#0.K...calcnum|
0000f110  30 0d 4b 96 18 4c 44 4d  49 41 20 72 31 32 21 2c  |0.K..LDMIA r12!,|
0000f120  7b 72 38 2c 72 31 31 7d  20 0d 4b a0 0e 43 4d 50  |{r8,r11} .K..CMP|
0000f130  20 72 38 2c 72 39 20 0d  4b aa 16 53 54 52 4c 45  | r8,r9 .K..STRLE|
0000f140  42 20 72 31 30 2c 5b 72  37 5d 2c 23 31 0d 4b b4  |B r10,[r7],#1.K.|
0000f150  12 41 44 44 20 72 31 30  2c 72 31 30 2c 23 31 0d  |.ADD r10,r10,#1.|
0000f160  4b be 0f 43 4d 50 20 72  31 31 2c 72 39 20 0d 4b  |K..CMP r11,r9 .K|
0000f170  c8 16 53 54 52 4c 45 42  20 72 31 30 2c 5b 72 37  |..STRLEB r10,[r7|
0000f180  5d 2c 23 31 0d 4b d2 12  41 44 44 20 72 31 30 2c  |],#1.K..ADD r10,|
0000f190  72 31 30 2c 23 31 0d 4b  dc 18 4c 44 4d 49 41 20  |r10,#1.K..LDMIA |
0000f1a0  72 31 32 21 2c 7b 72 38  2c 72 31 31 7d 20 0d 4b  |r12!,{r8,r11} .K|
0000f1b0  e6 0e 43 4d 50 20 72 38  2c 72 39 20 0d 4b f0 16  |..CMP r8,r9 .K..|
0000f1c0  53 54 52 4c 45 42 20 72  31 30 2c 5b 72 37 5d 2c  |STRLEB r10,[r7],|
0000f1d0  23 31 0d 4b fa 12 41 44  44 20 72 31 30 2c 72 31  |#1.K..ADD r10,r1|
0000f1e0  30 2c 23 31 0d 4c 04 0f  43 4d 50 20 72 31 31 2c  |0,#1.L..CMP r11,|
0000f1f0  72 39 20 0d 4c 0e 16 53  54 52 4c 45 42 20 72 31  |r9 .L..STRLEB r1|
0000f200  30 2c 5b 72 37 5d 2c 23  31 0d 4c 18 12 41 44 44  |0,[r7],#1.L..ADD|
0000f210  20 72 31 30 2c 72 31 30  2c 23 31 0d 4c 22 12 43  | r10,r10,#1.L".C|
0000f220  4d 50 20 72 31 30 2c 23  6e 63 6f 6c 25 0d 4c 2c  |MP r10,#ncol%.L,|
0000f230  10 42 43 43 20 63 61 6c  63 6e 75 6d 30 0d 4c 36  |.BCC calcnum0.L6|
0000f240  12 53 55 42 53 20 72 31  30 2c 72 37 2c 72 35 0d  |.SUBS r10,r7,r5.|
0000f250  4c 40 12 53 57 49 45 51  20 32 35 36 2b 97 22 41  |L@.SWIEQ 256+."A|
0000f260  22 0d 4c 4a 19 43 4d 50  20 72 31 30 2c 23 34 20  |".LJ.CMP r10,#4 |
0000f270  3b 69 66 3c 34 20 74 68  65 6e 0d 4c 54 23 4d 4f  |;if<4 then.LT#MO|
0000f280  56 43 43 20 72 37 2c 72  35 20 3b 72 65 73 65 74  |VCC r7,r5 ;reset|
0000f290  20 6c 69 73 74 20 70 6f  69 6e 74 65 72 0d 4c 5e  | list pointer.L^|
0000f2a0  22 4c 44 52 43 43 42 20  72 35 2c 5b 72 37 5d 20  |"LDRCCB r5,[r7] |
0000f2b0  3b 66 69 72 73 74 20 70  6f 73 73 69 62 6c 65 0d  |;first possible.|
0000f2c0  4c 68 26 4c 44 52 43 43  42 20 72 38 2c 5b 72 37  |Lh&LDRCCB r8,[r7|
0000f2d0  2c 23 31 5d 20 3b 73 65  63 6f 6e 64 20 70 6f 73  |,#1] ;second pos|
0000f2e0  73 69 62 6c 65 0d 4c 72  18 84 52 43 43 20 72 35  |sible.Lr..RCC r5|
0000f2f0  2c 72 35 2c 72 38 2c 6c  73 6c 20 23 38 0d 4c 7c  |,r5,r8,lsl #8.L||
0000f300  25 4c 44 52 43 43 42 20  72 38 2c 5b 72 37 2c 23  |%LDRCCB r8,[r7,#|
0000f310  32 5d 20 3b 74 68 69 72  64 20 70 6f 73 73 69 62  |2] ;third possib|
0000f320  6c 65 0d 4c 86 19 84 52  43 43 20 72 35 2c 72 35  |le.L...RCC r5,r5|
0000f330  2c 72 38 2c 6c 73 6c 20  23 31 36 0d 4c 90 19 41  |,r8,lsl #16.L..A|
0000f340  44 44 20 72 35 2c 72 35  2c 72 31 30 2c 6c 73 6c  |DD r5,r5,r10,lsl|
0000f350  20 23 32 34 0d 4c 9a 11  42 49 43 20 72 31 30 2c  | #24.L..BIC r10,|
0000f360  72 33 2c 23 31 0d 4c a4  1a 53 54 52 20 72 35 2c  |r3,#1.L..STR r5,|
0000f370  5b 72 34 2c 72 31 30 2c  4c 53 4c 20 23 32 5d 0d  |[r4,r10,LSL #2].|
0000f380  4c ae 0d 4d 4f 56 20 72  35 2c 72 37 0d 4c b8 0e  |L..MOV r5,r7.L..|
0000f390  4d 4f 56 20 72 31 30 2c  23 30 0d 4c c2 0d 2e 63  |MOV r10,#0.L...c|
0000f3a0  61 6c 63 6e 75 6d 31 0d  4c cc 18 4c 44 4d 49 41  |alcnum1.L..LDMIA|
0000f3b0  20 72 31 32 21 2c 7b 72  38 2c 72 31 31 7d 20 0d  | r12!,{r8,r11} .|
0000f3c0  4c d6 0f 43 4d 50 20 72  38 2c 72 31 34 20 0d 4c  |L..CMP r8,r14 .L|
0000f3d0  e0 16 53 54 52 4c 45 42  20 72 31 30 2c 5b 72 37  |..STRLEB r10,[r7|
0000f3e0  5d 2c 23 31 0d 4c ea 12  41 44 44 20 72 31 30 2c  |],#1.L..ADD r10,|
0000f3f0  72 31 30 2c 23 31 0d 4c  f4 10 43 4d 50 20 72 31  |r10,#1.L..CMP r1|
0000f400  31 2c 72 31 34 20 0d 4c  fe 16 53 54 52 4c 45 42  |1,r14 .L..STRLEB|
0000f410  20 72 31 30 2c 5b 72 37  5d 2c 23 31 0d 4d 08 12  | r10,[r7],#1.M..|
0000f420  41 44 44 20 72 31 30 2c  72 31 30 2c 23 31 0d 4d  |ADD r10,r10,#1.M|
0000f430  12 18 4c 44 4d 49 41 20  72 31 32 21 2c 7b 72 38  |..LDMIA r12!,{r8|
0000f440  2c 72 31 31 7d 20 0d 4d  1c 0f 43 4d 50 20 72 38  |,r11} .M..CMP r8|
0000f450  2c 72 31 34 20 0d 4d 26  16 53 54 52 4c 45 42 20  |,r14 .M&.STRLEB |
0000f460  72 31 30 2c 5b 72 37 5d  2c 23 31 0d 4d 30 12 41  |r10,[r7],#1.M0.A|
0000f470  44 44 20 72 31 30 2c 72  31 30 2c 23 31 0d 4d 3a  |DD r10,r10,#1.M:|
0000f480  10 43 4d 50 20 72 31 31  2c 72 31 34 20 0d 4d 44  |.CMP r11,r14 .MD|
0000f490  16 53 54 52 4c 45 42 20  72 31 30 2c 5b 72 37 5d  |.STRLEB r10,[r7]|
0000f4a0  2c 23 31 0d 4d 4e 12 41  44 44 20 72 31 30 2c 72  |,#1.MN.ADD r10,r|
0000f4b0  31 30 2c 23 31 0d 4d 58  12 43 4d 50 20 72 31 30  |10,#1.MX.CMP r10|
0000f4c0  2c 23 6e 63 6f 6c 25 0d  4d 62 10 42 43 43 20 63  |,#ncol%.Mb.BCC c|
0000f4d0  61 6c 63 6e 75 6d 31 0d  4d 6c 12 53 55 42 53 20  |alcnum1.Ml.SUBS |
0000f4e0  72 31 30 2c 72 37 2c 72  35 0d 4d 76 12 53 57 49  |r10,r7,r5.Mv.SWI|
0000f4f0  45 51 20 32 35 36 2b 97  22 42 22 0d 4d 80 19 43  |EQ 256+."B".M..C|
0000f500  4d 50 20 72 31 30 2c 23  34 20 3b 69 66 3c 34 20  |MP r10,#4 ;if<4 |
0000f510  74 68 65 6e 0d 4d 8a 10  4d 4f 56 43 43 20 72 37  |then.M..MOVCC r7|
0000f520  2c 72 35 20 0d 4d 94 13  4c 44 52 43 43 42 20 72  |,r5 .M..LDRCCB r|
0000f530  35 2c 5b 72 37 5d 20 0d  4d 9e 16 4c 44 52 43 43  |5,[r7] .M..LDRCC|
0000f540  42 20 72 38 2c 5b 72 37  2c 23 31 5d 20 0d 4d a8  |B r8,[r7,#1] .M.|
0000f550  18 84 52 43 43 20 72 35  2c 72 35 2c 72 38 2c 6c  |..RCC r5,r5,r8,l|
0000f560  73 6c 20 23 38 0d 4d b2  16 4c 44 52 43 43 42 20  |sl #8.M..LDRCCB |
0000f570  72 38 2c 5b 72 37 2c 23  32 5d 20 0d 4d bc 19 84  |r8,[r7,#2] .M...|
0000f580  52 43 43 20 72 35 2c 72  35 2c 72 38 2c 6c 73 6c  |RCC r5,r5,r8,lsl|
0000f590  20 23 31 36 0d 4d c6 19  41 44 44 20 72 35 2c 72  | #16.M..ADD r5,r|
0000f5a0  35 2c 72 31 30 2c 6c 73  6c 20 23 32 34 0d 4d d0  |5,r10,lsl #24.M.|
0000f5b0  10 84 52 20 72 31 30 2c  72 33 2c 23 31 0d 4d da  |..R r10,r3,#1.M.|
0000f5c0  1a 53 54 52 20 72 35 2c  5b 72 34 2c 72 31 30 2c  |.STR r5,[r4,r10,|
0000f5d0  4c 53 4c 20 23 32 5d 0d  4d e4 10 53 54 52 20 72  |LSL #2].M..STR r|
0000f5e0  37 2c 66 73 61 61 64 0d  4d ee 11 4c 44 52 20 72  |7,fsaad.M..LDR r|
0000f5f0  38 2c 66 73 61 6c 69 6d  0d 4d f8 0d 43 4d 50 20  |8,fsalim.M..CMP |
0000f600  72 37 2c 72 38 0d 4e 02  12 53 57 49 43 53 20 32  |r7,r8.N..SWICS 2|
0000f610  35 36 2b 97 22 21 22 0d  4e 0c 17 4c 44 4d 46 44  |56+."!".N..LDMFD|
0000f620  20 72 31 33 21 2c 7b 72  38 2c 70 63 7d 5e 0d 4e  | r13!,{r8,pc}^.N|
0000f630  16 0e 2e 72 65 64 65 71  75 61 6c 30 0d 4e 20 1b  |...redequal0.N .|
0000f640  53 54 52 20 72 33 2c 5b  72 31 32 2c 72 35 2c 4c  |STR r3,[r12,r5,L|
0000f650  53 4c 20 23 32 5d 20 0d  4e 2a 10 54 53 54 20 72  |SL #2] .N*.TST r|
0000f660  38 2c 23 74 64 32 25 0d  4e 34 14 53 55 42 4e 45  |8,#td2%.N4.SUBNE|
0000f670  20 72 31 31 2c 72 38 2c  72 30 20 0d 4e 3e 15 53  | r11,r8,r0 .N>.S|
0000f680  55 42 45 51 20 72 31 31  2c 72 31 31 2c 72 38 20  |UBEQ r11,r11,r8 |
0000f690  0d 4e 48 0e 42 20 64 6f  6e 65 72 65 64 30 0d 4e  |.NH.B donered0.N|
0000f6a0  52 0e 2e 72 65 64 65 71  75 61 6c 31 0d 4e 5c 10  |R..redequal1.N\.|
0000f6b0  54 53 54 20 72 38 2c 23  74 64 32 25 0d 4e 66 14  |TST r8,#td2%.Nf.|
0000f6c0  53 55 42 4e 45 20 72 31  31 2c 72 38 2c 72 37 20  |SUBNE r11,r8,r7 |
0000f6d0  0d 4e 70 15 53 55 42 45  51 20 72 31 31 2c 72 31  |.Np.SUBEQ r11,r1|
0000f6e0  31 2c 72 38 20 0d 4e 7a  0e 42 20 64 6f 6e 65 72  |1,r8 .Nz.B doner|
0000f6f0  65 64 31 0d 4e 84 0f 2e  67 72 65 65 6e 65 71 75  |ed1.N...greenequ|
0000f700  61 6c 0d 4e 8e 10 54 53  54 20 72 38 2c 23 74 64  |al.N..TST r8,#td|
0000f710  32 25 0d 4e 98 14 53 55  42 4e 45 20 72 31 31 2c  |2%.N..SUBNE r11,|
0000f720  72 38 2c 72 31 20 0d 4e  a2 15 53 55 42 45 51 20  |r8,r1 .N..SUBEQ |
0000f730  72 31 31 2c 72 31 31 2c  72 38 20 0d 4e ac 0f 42  |r11,r11,r8 .N..B|
0000f740  20 64 6f 6e 65 67 72 65  65 6e 0d 4e b6 0e 2e 62  | donegreen.N...b|
0000f750  6c 75 65 65 71 75 61 6c  0d 4e c0 0e 4d 4f 56 20  |lueequal.N..MOV |
0000f760  72 33 2c 23 30 20 0d 4e  ca 10 54 53 54 20 72 38  |r3,#0 .N..TST r8|
0000f770  2c 23 74 64 32 25 0d 4e  d4 14 53 55 42 4e 45 20  |,#td2%.N..SUBNE |
0000f780  72 31 31 2c 72 38 2c 72  32 20 0d 4e de 15 53 55  |r11,r8,r2 .N..SU|
0000f790  42 45 51 20 72 31 31 2c  72 31 31 2c 72 38 20 0d  |BEQ r11,r11,r8 .|
0000f7a0  4e e8 0e 42 20 64 6f 6e  65 62 6c 75 65 0d 4e f2  |N..B doneblue.N.|
0000f7b0  05 5d 0d 4e fc 05 ed 0d  4f 06 0f 49 25 3d 91 3a  |.].N....O..I%=.:|
0000f7c0  d6 6d 61 6b 65 25 0d 4f  10 6d e7 69 6e 66 6f 25  |.make%.O.m.info%|
0000f7d0  20 f1 22 47 65 6e 65 72  61 74 65 64 20 27 72 27  | ."Generated 'r'|
0000f7e0  22 3b 6b 25 22 20 74 61  62 6c 65 73 20 66 6f 72  |";k%" tables for|
0000f7f0  20 22 3b 6e 63 6f 6c 25  22 20 63 6f 6c 6f 75 72  | ";ncol%" colour|
0000f800  73 20 75 73 69 6e 67 20  22 3b 21 66 73 61 61 64  |s using ";!fsaad|
0000f810  2d 73 63 72 61 74 63 68  25 22 20 62 79 74 65 73  |-scratch%" bytes|
0000f820  2c 20 74 61 6b 69 6e 67  20 22 91 2d 49 25 22 20  |, taking ".-I%" |
0000f830  63 53 22 0d 4f 1a 25 73  61 66 65 73 75 62 69 63  |cS".O.%safesubic|
0000f840  74 25 3d a4 64 69 6d 28  21 66 73 61 61 64 2d 73  |t%=.dim(!fsaad-s|
0000f850  63 72 61 74 63 68 25 29  0d 4f 24 3a e3 49 25 3d  |cratch%).O$:.I%=|
0000f860  30 b8 21 66 73 61 61 64  2d 73 63 72 61 74 63 68  |0.!fsaad-scratch|
0000f870  25 2b 34 88 34 3a 73 61  66 65 73 75 62 69 63 74  |%+4.4:safesubict|
0000f880  25 21 49 25 3d 73 63 72  61 74 63 68 25 21 49 25  |%!I%=scratch%!I%|
0000f890  3a ed 0d 4f 2e 4f e3 49  25 3d 30 b8 32 5e 28 6b  |:..O.O.I%=0.2^(k|
0000f8a0  25 2a 33 29 2a 34 2d 31  88 34 3a e7 28 69 63 74  |%*3)*4-1.4:.(ict|
0000f8b0  25 21 49 25 3e 3e 3e 32  34 29 3e 33 20 69 63 74  |%!I%>>>24)>3 ict|
0000f8c0  25 21 49 25 3d 69 63 74  25 21 49 25 2d 73 63 72  |%!I%=ict%!I%-scr|
0000f8d0  61 74 63 68 25 2b 73 61  66 65 73 75 62 69 63 74  |atch%+safesubict|
0000f8e0  25 0d 4f 38 05 ed 0d 4f  42 05 cd 0d 4f 4c 05 cd  |%.O8...OB...OL..|
0000f8f0  0d 4f 56 13 e7 66 61 73  74 25 20 e7 eb 3c 3e 30  |.OV..fast% ..<>0|
0000f900  20 eb 30 0d 4f 6a 0a c8  8e 20 6d 20 ca 0d 4f 74  | .0.Oj... m ..Ot|
0000f910  0e c9 20 2d 31 3a 63 6f  6c 3d 30 0d 4f 7e 1d c9  |.. -1:col=0.O~..|
0000f920  20 2d 33 2c 2d 34 2c 2d  35 2c 2d 36 2c 2d 37 2c  | -3,-4,-5,-6,-7,|
0000f930  2d 38 3a 63 6f 6c 3d 32  0d 4f 88 05 7f 0d 4f 92  |-8:col=2.O....O.|
0000f940  19 e7 6d 24 3d 22 44 22  20 e7 6e 63 6f 6c 3d 33  |..m$="D" .ncol=3|
0000f950  20 6d 24 3d 22 22 0d 4f  9c 30 63 6f 6c 3d 30 3a  | m$="".O.0col=0:|
0000f960  e7 6e 63 6f 6c 3e 31 35  20 84 6d 24 3d 22 43 22  |.ncol>15 .m$="C"|
0000f970  20 84 6d 24 3d 22 44 22  20 84 6d 24 3d 22 52 22  | .m$="D" .m$="R"|
0000f980  20 63 6f 6c 3d 32 0d 4f  a6 2e e7 6e 63 6f 6c 3d  | col=2.O...ncol=|
0000f990  36 33 20 84 20 6e 63 6f  6c 3d 32 35 35 20 e7 6d  |63 . ncol=255 .m|
0000f9a0  24 3d 22 44 22 20 63 6f  6c 3d 30 3a 6e 63 6f 6c  |$="D" col=0:ncol|
0000f9b0  3d 32 35 36 0d 4f b0 05  cb 0d 4f ba 0d e7 6e 63  |=256.O....O...nc|
0000f9c0  6f 6c 3d 31 20 8c 0d 4f  c4 0b c8 8e 20 6d 24 20  |ol=1 ..O.... m$ |
0000f9d0  ca 0d 4f ce 19 c9 22 43  22 3a 63 6f 6c 3d 30 3a  |..O..."C":col=0:|
0000f9e0  78 25 3d 78 25 2b 31 80  ac 31 0d 4f d8 19 c9 22  |x%=x%+1..1.O..."|
0000f9f0  44 22 3a 63 6f 6c 3d 30  3a 78 25 3d 78 25 2b 33  |D":col=0:x%=x%+3|
0000fa00  80 ac 33 0d 4f e2 19 c9  22 54 22 3a 63 6f 6c 3d  |..3.O..."T":col=|
0000fa10  30 3a 78 25 3d 78 25 2b  31 80 ac 31 0d 4f ec 05  |0:x%=x%+1..1.O..|
0000fa20  cb 0d 4f f6 05 cd 0d 50  00 1b e7 73 68 61 72 70  |..O....P...sharp|
0000fa30  65 6e 25 3d b9 20 73 68  61 72 70 65 6e 25 3d 32  |en%=. sharpen%=2|
0000fa40  34 0d 50 0a 13 de 20 63  6c 25 28 78 25 2b 37 2c  |4.P... cl%(x%+7,|
0000fa50  63 6f 6c 29 0d 50 14 22  de 20 78 6c 25 28 78 25  |col).P.". xl%(x%|
0000fa60  2b 37 2c 63 6f 6c 29 2c  78 70 25 28 73 78 25 2b  |+7,col),xp%(sx%+|
0000fa70  37 2c 63 6f 6c 29 0d 50  1e 14 de 20 78 6c 32 25  |7,col).P... xl2%|
0000fa80  28 78 25 2b 37 2c 63 6f  6c 29 0d 50 28 0f e7 73  |(x%+7,col).P(..s|
0000fa90  68 61 72 70 65 6e 25 20  8c 0d 50 32 0d e7 6f 72  |harpen% ..P2..or|
0000faa0  64 65 72 25 20 8c 0d 50  3c 34 de 20 72 6d 25 28  |der% ..P<4. rm%(|
0000fab0  73 78 25 2b 37 2c 63 6f  6c 29 2c 72 6d 31 25 28  |sx%+7,col),rm1%(|
0000fac0  73 78 25 2b 37 2c 63 6f  6c 29 2c 72 6d 32 25 28  |sx%+7,col),rm2%(|
0000fad0  73 78 25 2b 37 2c 63 6f  6c 29 0d 50 46 05 cc 0d  |sx%+7,col).PF...|
0000fae0  50 50 31 de 20 72 6d 25  28 78 25 2b 37 2c 63 6f  |PP1. rm%(x%+7,co|
0000faf0  6c 29 2c 72 6d 31 25 28  78 25 2b 37 2c 63 6f 6c  |l),rm1%(x%+7,col|
0000fb00  29 2c 72 6d 32 25 28 78  25 2b 37 2c 63 6f 6c 29  |),rm2%(x%+7,col)|
0000fb10  0d 50 5a 05 cd 0d 50 64  05 cd 0d 50 6e 22 e7 68  |.PZ...Pd...Pn".h|
0000fb20  69 73 74 25 84 65 71 75  61 6c 25 20 de 20 76 61  |ist%.equal% . va|
0000fb30  6c 73 25 28 32 35 36 2c  63 6f 6c 29 0d 50 78 13  |ls%(256,col).Px.|
0000fb40  de 20 6e 6c 25 28 78 25  2b 37 2c 63 6f 6c 29 0d  |. nl%(x%+7,col).|
0000fb50  50 82 17 74 6f 74 76 61  6c 73 25 3d 78 25 2a 28  |P..totvals%=x%*(|
0000fb60  63 6f 6c 2b 31 29 0d 50  8c 19 74 6f 74 76 61 6c  |col+1).P..totval|
0000fb70  73 32 25 3d 73 78 25 2a  28 63 6f 6c 2b 31 29 0d  |s2%=sx%*(col+1).|
0000fb80  50 96 15 e3 5a 3d 30 b8  32 88 32 3a 50 25 3d 63  |P...Z=0.2.2:P%=c|
0000fb90  6f 64 65 25 0d 50 a0 0d  c8 8e 20 6e 63 6f 6c 20  |ode%.P.... ncol |
0000fba0  ca 0d 50 aa 0c c9 20 32  5e 32 34 2d 31 0d 50 b4  |..P... 2^24-1.P.|
0000fbb0  0a 5b 4f 50 54 20 5a 0d  50 be 0b 2e 64 69 76 32  |.[OPT Z.P...div2|
0000fbc0  35 35 0d 50 c8 05 5d 0d  50 d2 14 e3 49 25 3d 30  |55.P..].P...I%=0|
0000fbd0  b8 32 5e 70 36 62 69 74  73 2d 31 0d 50 dc 0a 5b  |.2^p6bits-1.P..[|
0000fbe0  4f 50 54 20 5a 0d 50 e6  1a 45 51 55 44 20 49 25  |OPT Z.P..EQUD I%|
0000fbf0  2f 28 32 5e 70 36 62 69  74 73 2d 31 29 2a 46 0d  |/(2^p6bits-1)*F.|
0000fc00  50 f0 05 5d 0d 50 fa 05  ed 0d 51 04 0a 5b 4f 50  |P..].P....Q..[OP|
0000fc10  54 20 5a 0d 51 0e 08 2e  66 73 25 0d 51 18 14 53  |T Z.Q...fs%.Q..S|
0000fc20  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
0000fc30  51 22 21 4c 44 52 20 52  31 2c 5b 52 39 2c 23 35  |Q"!LDR R1,[R9,#5|
0000fc40  2a 38 5d 3a 4c 44 52 20  52 31 2c 5b 52 31 5d 20  |*8]:LDR R1,[R1] |
0000fc50  0d 51 2c 16 4c 44 52 20  52 31 30 2c 5b 52 39 2c  |.Q,.LDR R10,[R9,|
0000fc60  23 34 2a 38 5d 20 0d 51  36 16 4c 44 52 20 52 31  |#4*8] .Q6.LDR R1|
0000fc70  31 2c 5b 52 39 2c 23 33  2a 38 5d 20 0d 51 40 24  |1,[R9,#3*8] .Q@$|
0000fc80  4c 44 52 20 52 31 32 2c  5b 52 39 2c 23 32 2a 38  |LDR R12,[R9,#2*8|
0000fc90  5d 3a 4c 44 52 20 52 31  32 2c 5b 52 31 32 5d 20  |]:LDR R12,[R12] |
0000fca0  0d 51 4a 1f 4c 44 52 20  52 38 2c 5b 52 39 2c 23  |.QJ.LDR R8,[R9,#|
0000fcb0  38 5d 3a 4c 44 52 20 52  38 2c 5b 52 38 5d 20 0d  |8]:LDR R8,[R8] .|
0000fcc0  51 54 1c 4c 44 52 20 52  39 2c 5b 52 39 5d 3a 4c  |QT.LDR R9,[R9]:L|
0000fcd0  44 52 20 52 39 2c 5b 52  39 5d 20 0d 51 5e 11 4c  |DR R9,[R9] .Q^.L|
0000fce0  44 52 20 52 34 2c 5b 52  31 30 5d 20 0d 51 68 14  |DR R4,[R10] .Qh.|
0000fcf0  4c 44 52 20 52 35 2c 5b  52 31 30 2c 23 34 5d 20  |LDR R5,[R10,#4] |
0000fd00  0d 51 72 14 4c 44 52 20  52 36 2c 5b 52 31 30 2c  |.Qr.LDR R6,[R10,|
0000fd10  23 38 5d 20 0d 51 7c 11  41 44 52 20 52 37 2c 64  |#8] .Q|.ADR R7,d|
0000fd20  69 76 32 35 35 0d 51 86  0b 2e 66 73 6c 6f 6f 70  |iv255.Q...fsloop|
0000fd30  0d 51 90 13 41 44 44 20  52 31 30 2c 52 31 30 2c  |.Q..ADD R10,R10,|
0000fd40  52 38 20 0d 51 9a 25 43  4d 50 20 52 34 2c 23 46  |R8 .Q.%CMP R4,#F|
0000fd50  3a 4d 4f 56 43 53 20 52  34 2c 23 30 3a 4d 4f 56  |:MOVCS R4,#0:MOV|
0000fd60  47 45 20 52 34 2c 23 46  0d 51 a4 57 53 55 42 20  |GE R4,#F.Q.WSUB |
0000fd70  52 30 2c 52 34 2c 52 34  2c 4c 53 52 20 23 70 36  |R0,R4,R4,LSR #p6|
0000fd80  62 69 74 73 3a 41 44 44  20 52 30 2c 52 30 2c 23  |bits:ADD R0,R0,#|
0000fd90  31 3c 3c 28 62 69 74 73  2d 70 36 62 69 74 73 2d  |1<<(bits-p6bits-|
0000fda0  31 29 3a 4d 4f 56 20 52  30 2c 52 30 2c 4c 53 52  |1):MOV R0,R0,LSR|
0000fdb0  20 23 28 62 69 74 73 2d  70 36 62 69 74 73 29 0d  | #(bits-p6bits).|
0000fdc0  51 ae 26 4c 44 52 20 52  32 2c 5b 52 37 2c 52 30  |Q.&LDR R2,[R7,R0|
0000fdd0  2c 4c 53 4c 20 23 32 5d  3a 53 55 42 20 52 34 2c  |,LSL #2]:SUB R4,|
0000fde0  52 34 2c 52 32 0d 51 b8  25 43 4d 50 20 52 35 2c  |R4,R2.Q.%CMP R5,|
0000fdf0  23 46 3a 4d 4f 56 43 53  20 52 35 2c 23 30 3a 4d  |#F:MOVCS R5,#0:M|
0000fe00  4f 56 47 45 20 52 35 2c  23 46 0d 51 c2 6a 53 55  |OVGE R5,#F.Q.jSU|
0000fe10  42 20 52 33 2c 52 35 2c  52 35 2c 4c 53 52 20 23  |B R3,R5,R5,LSR #|
0000fe20  70 36 62 69 74 73 3a 41  44 44 20 52 33 2c 52 33  |p6bits:ADD R3,R3|
0000fe30  2c 23 31 3c 3c 28 62 69  74 73 2d 70 36 62 69 74  |,#1<<(bits-p6bit|
0000fe40  73 2d 31 29 3a 4d 4f 56  20 52 33 2c 52 33 2c 4c  |s-1):MOV R3,R3,L|
0000fe50  53 52 20 23 28 62 69 74  73 2d 70 36 62 69 74 73  |SR #(bits-p6bits|
0000fe60  29 3a 84 52 20 52 30 2c  52 30 2c 52 33 2c 4c 53  |):.R R0,R0,R3,LS|
0000fe70  4c 20 23 38 0d 51 cc 26  4c 44 52 20 52 32 2c 5b  |L #8.Q.&LDR R2,[|
0000fe80  52 37 2c 52 33 2c 4c 53  4c 20 23 32 5d 3a 53 55  |R7,R3,LSL #2]:SU|
0000fe90  42 20 52 35 2c 52 35 2c  52 32 0d 51 d6 25 43 4d  |B R5,R5,R2.Q.%CM|
0000fea0  50 20 52 36 2c 23 46 3a  4d 4f 56 43 53 20 52 36  |P R6,#F:MOVCS R6|
0000feb0  2c 23 30 3a 4d 4f 56 47  45 20 52 36 2c 23 46 0d  |,#0:MOVGE R6,#F.|
0000fec0  51 e0 6b 53 55 42 20 52  33 2c 52 36 2c 52 36 2c  |Q.kSUB R3,R6,R6,|
0000fed0  4c 53 52 20 23 70 36 62  69 74 73 3a 41 44 44 20  |LSR #p6bits:ADD |
0000fee0  52 33 2c 52 33 2c 23 31  3c 3c 28 62 69 74 73 2d  |R3,R3,#1<<(bits-|
0000fef0  70 36 62 69 74 73 2d 31  29 3a 4d 4f 56 20 52 33  |p6bits-1):MOV R3|
0000ff00  2c 52 33 2c 4c 53 52 20  23 28 62 69 74 73 2d 70  |,R3,LSR #(bits-p|
0000ff10  36 62 69 74 73 29 3a 84  52 20 52 30 2c 52 30 2c  |6bits):.R R0,R0,|
0000ff20  52 33 2c 4c 53 4c 20 23  31 36 0d 51 ea 26 4c 44  |R3,LSL #16.Q.&LD|
0000ff30  52 20 52 32 2c 5b 52 37  2c 52 33 2c 4c 53 4c 20  |R R2,[R7,R3,LSL |
0000ff40  23 32 5d 3a 53 55 42 20  52 36 2c 52 36 2c 52 32  |#2]:SUB R6,R6,R2|
0000ff50  0d 51 f4 44 53 54 52 42  20 52 30 2c 5b 52 31 32  |.Q.DSTRB R0,[R12|
0000ff60  5d 3a 4d 4f 56 20 52 30  2c 52 30 2c 4c 53 52 20  |]:MOV R0,R0,LSR |
0000ff70  23 38 3a 53 54 52 42 20  52 30 2c 5b 52 31 32 2c  |#8:STRB R0,[R12,|
0000ff80  23 31 5d 3a 4d 4f 56 20  52 30 2c 52 30 2c 4c 53  |#1]:MOV R0,R0,LS|
0000ff90  52 20 23 38 0d 51 fe 14  53 54 52 42 20 52 30 2c  |R #8.Q..STRB R0,|
0000ffa0  5b 52 31 32 2c 23 32 5d  0d 52 08 05 5d 0d 52 12  |[R12,#2].R..].R.|
0000ffb0  0b e7 6d 3d 2d 38 20 8c  0d 52 1c 0a 5b 4f 50 54  |..m=-8 ..R..[OPT|
0000ffc0  20 5a 0d 52 26 19 41 44  44 20 52 31 32 2c 52 31  | Z.R&.ADD R12,R1|
0000ffd0  32 2c 52 31 2c 4c 53 4c  20 23 32 0d 52 30 05 5d  |2,R1,LSL #2.R0.]|
0000ffe0  0d 52 3a 05 cc 0d 52 44  0a 5b 4f 50 54 20 5a 0d  |.R:...RD.[OPT Z.|
0000fff0  52 4e 28 41 44 44 20 52  31 32 2c 52 31 32 2c 52  |RN(ADD R12,R12,R|
00010000  31 2c 4c 53 4c 20 23 31  3a 41 44 44 20 52 31 32  |1,LSL #1:ADD R12|
00010010  2c 52 31 32 2c 52 31 0d  52 58 05 5d 0d 52 62 05  |,R12,R1.RX.].Rb.|
00010020  cd 0d 52 6c 0e e7 64 69  74 68 65 72 25 20 8c 0d  |..Rl..dither% ..|
00010030  52 76 0a 5b 4f 50 54 20  5a 0d 52 80 12 41 44 44  |Rv.[OPT Z.R..ADD|
00010040  20 52 30 2c 52 31 31 2c  23 34 20 0d 52 8a 18 41  | R0,R11,#4 .R..A|
00010050  44 44 20 52 32 2c 52 34  2c 52 34 2c 4c 53 4c 20  |DD R2,R4,R4,LSL |
00010060  23 31 20 0d 52 94 29 4c  44 52 20 52 33 2c 5b 52  |#1 .R.)LDR R3,[R|
00010070  31 31 2c 2d 52 38 5d 3a  41 44 44 20 52 33 2c 52  |11,-R8]:ADD R3,R|
00010080  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 52 9e 14  |3,R2,ASR #4 .R..|
00010090  53 54 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |STR R3,[R11,-R8]|
000100a0  0d 52 a8 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.R..ADD R2,R4,R4|
000100b0  2c 4c 53 4c 20 23 32 20  0d 52 b2 25 4c 44 52 20  |,LSL #2 .R.%LDR |
000100c0  52 33 2c 5b 52 31 31 5d  3a 41 44 44 20 52 33 2c  |R3,[R11]:ADD R3,|
000100d0  52 33 2c 52 32 2c 41 53  52 20 23 34 20 0d 52 bc  |R3,R2,ASR #4 .R.|
000100e0  10 53 54 52 20 52 33 2c  5b 52 31 31 5d 0d 52 c6  |.STR R3,[R11].R.|
000100f0  15 4d 4f 56 20 52 33 2c  52 34 2c 41 53 52 20 23  |.MOV R3,R4,ASR #|
00010100  34 20 0d 52 d0 15 53 54  52 20 52 33 2c 5b 52 31  |4 .R..STR R3,[R1|
00010110  31 2c 52 38 5d 21 20 0d  52 da 18 52 53 42 20 52  |1,R8]! .R..RSB R|
00010120  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 33 20 0d  |2,R4,R4,LSL #3 .|
00010130  52 e4 11 4c 44 52 20 52  34 2c 5b 52 31 30 5d 20  |R..LDR R4,[R10] |
00010140  0d 52 ee 18 41 44 44 20  52 34 2c 52 34 2c 52 32  |.R..ADD R4,R4,R2|
00010150  2c 41 53 52 20 23 34 20  0d 52 f8 18 41 44 44 20  |,ASR #4 .R..ADD |
00010160  52 32 2c 52 35 2c 52 35  2c 4c 53 4c 20 23 31 20  |R2,R5,R5,LSL #1 |
00010170  0d 53 02 28 4c 44 52 20  52 33 2c 5b 52 30 2c 2d  |.S.(LDR R3,[R0,-|
00010180  52 38 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R8]:ADD R3,R3,R2|
00010190  2c 41 53 52 20 23 34 20  0d 53 0c 13 53 54 52 20  |,ASR #4 .S..STR |
000101a0  52 33 2c 5b 52 30 2c 2d  52 38 5d 0d 53 16 15 4d  |R3,[R0,-R8].S..M|
000101b0  4f 56 20 52 33 2c 52 35  2c 41 53 52 20 23 34 20  |OV R3,R5,ASR #4 |
000101c0  0d 53 20 13 53 54 52 20  52 33 2c 5b 52 30 2c 52  |.S .STR R3,[R0,R|
000101d0  38 5d 20 0d 53 2a 18 41  44 44 20 52 32 2c 52 35  |8] .S*.ADD R2,R5|
000101e0  2c 52 35 2c 4c 53 4c 20  23 32 20 0d 53 34 24 4c  |,R5,LSL #2 .S4$L|
000101f0  44 52 20 52 33 2c 5b 52  30 5d 3a 41 44 44 20 52  |DR R3,[R0]:ADD R|
00010200  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00010210  53 3e 13 53 54 52 20 52  33 2c 5b 52 30 5d 2c 23  |S>.STR R3,[R0],#|
00010220  34 20 0d 53 48 18 52 53  42 20 52 32 2c 52 35 2c  |4 .SH.RSB R2,R5,|
00010230  52 35 2c 4c 53 4c 20 23  33 20 0d 53 52 14 4c 44  |R5,LSL #3 .SR.LD|
00010240  52 20 52 35 2c 5b 52 31  30 2c 23 34 5d 20 0d 53  |R R5,[R10,#4] .S|
00010250  5c 18 41 44 44 20 52 35  2c 52 35 2c 52 32 2c 41  |\.ADD R5,R5,R2,A|
00010260  53 52 20 23 34 20 0d 53  66 18 41 44 44 20 52 32  |SR #4 .Sf.ADD R2|
00010270  2c 52 36 2c 52 36 2c 4c  53 4c 20 23 31 20 0d 53  |,R6,R6,LSL #1 .S|
00010280  70 28 4c 44 52 20 52 33  2c 5b 52 30 2c 2d 52 38  |p(LDR R3,[R0,-R8|
00010290  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
000102a0  53 52 20 23 34 20 0d 53  7a 13 53 54 52 20 52 33  |SR #4 .Sz.STR R3|
000102b0  2c 5b 52 30 2c 2d 52 38  5d 0d 53 84 18 41 44 44  |,[R0,-R8].S..ADD|
000102c0  20 52 32 2c 52 36 2c 52  36 2c 4c 53 4c 20 23 32  | R2,R6,R6,LSL #2|
000102d0  20 0d 53 8e 24 4c 44 52  20 52 33 2c 5b 52 30 5d  | .S.$LDR R3,[R0]|
000102e0  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
000102f0  52 20 23 34 20 0d 53 98  0f 53 54 52 20 52 33 2c  |R #4 .S..STR R3,|
00010300  5b 52 30 5d 0d 53 a2 15  4d 4f 56 20 52 33 2c 52  |[R0].S..MOV R3,R|
00010310  36 2c 41 53 52 20 23 34  20 0d 53 ac 13 53 54 52  |6,ASR #4 .S..STR|
00010320  20 52 33 2c 5b 52 30 2c  52 38 5d 20 0d 53 b6 18  | R3,[R0,R8] .S..|
00010330  52 53 42 20 52 32 2c 52  36 2c 52 36 2c 4c 53 4c  |RSB R2,R6,R6,LSL|
00010340  20 23 33 20 0d 53 c0 14  4c 44 52 20 52 36 2c 5b  | #3 .S..LDR R6,[|
00010350  52 31 30 2c 23 38 5d 20  0d 53 ca 18 41 44 44 20  |R10,#8] .S..ADD |
00010360  52 36 2c 52 36 2c 52 32  2c 41 53 52 20 23 34 20  |R6,R6,R2,ASR #4 |
00010370  0d 53 d4 05 5d 0d 53 de  05 cc 0d 53 e8 0a 5b 4f  |.S..].S....S..[O|
00010380  50 54 20 5a 0d 53 f2 18  4c 44 4d 49 41 20 52 31  |PT Z.S..LDMIA R1|
00010390  30 2c 7b 52 34 2c 52 35  2c 52 36 7d 0d 53 fc 05  |0,{R4,R5,R6}.S..|
000103a0  5d 0d 54 06 05 cd 0d 54  10 0a 5b 4f 50 54 20 5a  |].T....T..[OPT Z|
000103b0  0d 54 1a 1c 53 55 42 53  20 52 39 2c 52 39 2c 23  |.T..SUBS R9,R9,#|
000103c0  31 3a 42 4e 45 20 66 73  6c 6f 6f 70 0d 54 24 14  |1:BNE fsloop.T$.|
000103d0  4c 44 4d 46 44 20 53 50  20 21 2c 7b 50 43 7d 5e  |LDMFD SP !,{PC}^|
000103e0  0d 54 2e 05 5d 0d 54 38  0c c9 20 32 5e 31 35 2d  |.T..].T8.. 2^15-|
000103f0  31 0d 54 42 0a 5b 4f 50  54 20 5a 0d 54 4c 0a 2e  |1.TB.[OPT Z.TL..|
00010400  64 69 76 33 31 0d 54 56  05 5d 0d 54 60 0c e3 49  |div31.TV.].T`..I|
00010410  25 3d 30 b8 33 31 0d 54  6a 0a 5b 4f 50 54 20 5a  |%=0.31.Tj.[OPT Z|
00010420  0d 54 74 10 45 51 55 44  20 49 25 2f 33 31 2a 46  |.Tt.EQUD I%/31*F|
00010430  0d 54 7e 05 5d 0d 54 88  05 ed 0d 54 92 0a 5b 4f  |.T~.].T....T..[O|
00010440  50 54 20 5a 0d 54 9c 08  2e 66 73 25 0d 54 a6 14  |PT Z.T...fs%.T..|
00010450  53 54 4d 46 44 20 53 50  20 21 2c 7b 52 31 34 7d  |STMFD SP !,{R14}|
00010460  0d 54 b0 21 4c 44 52 20  52 31 2c 5b 52 39 2c 23  |.T.!LDR R1,[R9,#|
00010470  35 2a 38 5d 3a 4c 44 52  20 52 31 2c 5b 52 31 5d  |5*8]:LDR R1,[R1]|
00010480  20 0d 54 ba 16 4c 44 52  20 52 31 30 2c 5b 52 39  | .T..LDR R10,[R9|
00010490  2c 23 34 2a 38 5d 20 0d  54 c4 16 4c 44 52 20 52  |,#4*8] .T..LDR R|
000104a0  31 31 2c 5b 52 39 2c 23  33 2a 38 5d 20 0d 54 ce  |11,[R9,#3*8] .T.|
000104b0  24 4c 44 52 20 52 31 32  2c 5b 52 39 2c 23 32 2a  |$LDR R12,[R9,#2*|
000104c0  38 5d 3a 4c 44 52 20 52  31 32 2c 5b 52 31 32 5d  |8]:LDR R12,[R12]|
000104d0  20 0d 54 d8 1f 4c 44 52  20 52 38 2c 5b 52 39 2c  | .T..LDR R8,[R9,|
000104e0  23 38 5d 3a 4c 44 52 20  52 38 2c 5b 52 38 5d 20  |#8]:LDR R8,[R8] |
000104f0  0d 54 e2 1c 4c 44 52 20  52 39 2c 5b 52 39 5d 3a  |.T..LDR R9,[R9]:|
00010500  4c 44 52 20 52 39 2c 5b  52 39 5d 20 0d 54 ec 11  |LDR R9,[R9] .T..|
00010510  4c 44 52 20 52 34 2c 5b  52 31 30 5d 20 0d 54 f6  |LDR R4,[R10] .T.|
00010520  14 4c 44 52 20 52 35 2c  5b 52 31 30 2c 23 34 5d  |.LDR R5,[R10,#4]|
00010530  20 0d 55 00 14 4c 44 52  20 52 36 2c 5b 52 31 30  | .U..LDR R6,[R10|
00010540  2c 23 38 5d 20 0d 55 0a  10 41 44 52 20 52 37 2c  |,#8] .U..ADR R7,|
00010550  64 69 76 33 31 0d 55 14  0b 2e 66 73 6c 6f 6f 70  |div31.U...fsloop|
00010560  0d 55 1e 13 41 44 44 20  52 31 30 2c 52 31 30 2c  |.U..ADD R10,R10,|
00010570  52 38 20 0d 55 28 25 43  4d 50 20 52 34 2c 23 46  |R8 .U(%CMP R4,#F|
00010580  3a 4d 4f 56 43 53 20 52  34 2c 23 30 3a 4d 4f 56  |:MOVCS R4,#0:MOV|
00010590  47 45 20 52 34 2c 23 46  0d 55 32 46 53 55 42 20  |GE R4,#F.U2FSUB |
000105a0  52 30 2c 52 34 2c 52 34  2c 4c 53 52 20 23 35 3a  |R0,R4,R4,LSR #5:|
000105b0  41 44 44 20 52 30 2c 52  30 2c 23 31 3c 3c 28 62  |ADD R0,R0,#1<<(b|
000105c0  69 74 73 2d 36 29 3a 4d  4f 56 20 52 30 2c 52 30  |its-6):MOV R0,R0|
000105d0  2c 4c 53 52 20 23 28 62  69 74 73 2d 35 29 0d 55  |,LSR #(bits-5).U|
000105e0  3c 26 4c 44 52 20 52 32  2c 5b 52 37 2c 52 30 2c  |<&LDR R2,[R7,R0,|
000105f0  4c 53 4c 20 23 32 5d 3a  53 55 42 20 52 34 2c 52  |LSL #2]:SUB R4,R|
00010600  34 2c 52 32 0d 55 46 25  43 4d 50 20 52 35 2c 23  |4,R2.UF%CMP R5,#|
00010610  46 3a 4d 4f 56 43 53 20  52 35 2c 23 30 3a 4d 4f  |F:MOVCS R5,#0:MO|
00010620  56 47 45 20 52 35 2c 23  46 0d 55 50 59 53 55 42  |VGE R5,#F.UPYSUB|
00010630  20 52 33 2c 52 35 2c 52  35 2c 4c 53 52 20 23 35  | R3,R5,R5,LSR #5|
00010640  3a 41 44 44 20 52 33 2c  52 33 2c 23 31 3c 3c 28  |:ADD R3,R3,#1<<(|
00010650  62 69 74 73 2d 36 29 3a  4d 4f 56 20 52 33 2c 52  |bits-6):MOV R3,R|
00010660  33 2c 4c 53 52 20 23 28  62 69 74 73 2d 35 29 3a  |3,LSR #(bits-5):|
00010670  84 52 20 52 30 2c 52 30  2c 52 33 2c 4c 53 4c 20  |.R R0,R0,R3,LSL |
00010680  23 35 0d 55 5a 26 4c 44  52 20 52 32 2c 5b 52 37  |#5.UZ&LDR R2,[R7|
00010690  2c 52 33 2c 4c 53 4c 20  23 32 5d 3a 53 55 42 20  |,R3,LSL #2]:SUB |
000106a0  52 35 2c 52 35 2c 52 32  0d 55 64 25 43 4d 50 20  |R5,R5,R2.Ud%CMP |
000106b0  52 36 2c 23 46 3a 4d 4f  56 43 53 20 52 36 2c 23  |R6,#F:MOVCS R6,#|
000106c0  30 3a 4d 4f 56 47 45 20  52 36 2c 23 46 0d 55 6e  |0:MOVGE R6,#F.Un|
000106d0  5a 53 55 42 20 52 33 2c  52 36 2c 52 36 2c 4c 53  |ZSUB R3,R6,R6,LS|
000106e0  52 20 23 35 3a 41 44 44  20 52 33 2c 52 33 2c 23  |R #5:ADD R3,R3,#|
000106f0  31 3c 3c 28 62 69 74 73  2d 36 29 3a 4d 4f 56 20  |1<<(bits-6):MOV |
00010700  52 33 2c 52 33 2c 4c 53  52 20 23 28 62 69 74 73  |R3,R3,LSR #(bits|
00010710  2d 35 29 3a 84 52 20 52  30 2c 52 30 2c 52 33 2c  |-5):.R R0,R0,R3,|
00010720  4c 53 4c 20 23 31 30 0d  55 78 26 4c 44 52 20 52  |LSL #10.Ux&LDR R|
00010730  32 2c 5b 52 37 2c 52 33  2c 4c 53 4c 20 23 32 5d  |2,[R7,R3,LSL #2]|
00010740  3a 53 55 42 20 52 36 2c  52 36 2c 52 32 0d 55 82  |:SUB R6,R6,R2.U.|
00010750  49 53 54 52 42 20 52 30  2c 5b 52 31 32 5d 3a 4d  |ISTRB R0,[R12]:M|
00010760  4f 56 20 52 30 2c 52 30  2c 4c 53 52 20 23 38 3a  |OV R0,R0,LSR #8:|
00010770  53 54 52 42 20 52 30 2c  5b 52 31 32 2c 23 31 5d  |STRB R0,[R12,#1]|
00010780  3a 41 44 44 20 52 31 32  2c 52 31 32 2c 52 31 2c  |:ADD R12,R12,R1,|
00010790  4c 53 4c 20 23 31 0d 55  8c 05 5d 0d 55 96 0e e7  |LSL #1.U..].U...|
000107a0  64 69 74 68 65 72 25 20  8c 0d 55 a0 0a 5b 4f 50  |dither% ..U..[OP|
000107b0  54 20 5a 0d 55 aa 12 41  44 44 20 52 30 2c 52 31  |T Z.U..ADD R0,R1|
000107c0  31 2c 23 34 20 0d 55 b4  18 41 44 44 20 52 32 2c  |1,#4 .U..ADD R2,|
000107d0  52 34 2c 52 34 2c 4c 53  4c 20 23 31 20 0d 55 be  |R4,R4,LSL #1 .U.|
000107e0  29 4c 44 52 20 52 33 2c  5b 52 31 31 2c 2d 52 38  |)LDR R3,[R11,-R8|
000107f0  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00010800  53 52 20 23 34 20 0d 55  c8 14 53 54 52 20 52 33  |SR #4 .U..STR R3|
00010810  2c 5b 52 31 31 2c 2d 52  38 5d 0d 55 d2 18 41 44  |,[R11,-R8].U..AD|
00010820  44 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |D R2,R4,R4,LSL #|
00010830  32 20 0d 55 dc 25 4c 44  52 20 52 33 2c 5b 52 31  |2 .U.%LDR R3,[R1|
00010840  31 5d 3a 41 44 44 20 52  33 2c 52 33 2c 52 32 2c  |1]:ADD R3,R3,R2,|
00010850  41 53 52 20 23 34 20 0d  55 e6 10 53 54 52 20 52  |ASR #4 .U..STR R|
00010860  33 2c 5b 52 31 31 5d 0d  55 f0 15 4d 4f 56 20 52  |3,[R11].U..MOV R|
00010870  33 2c 52 34 2c 41 53 52  20 23 34 20 0d 55 fa 15  |3,R4,ASR #4 .U..|
00010880  53 54 52 20 52 33 2c 5b  52 31 31 2c 52 38 5d 21  |STR R3,[R11,R8]!|
00010890  20 0d 56 04 18 52 53 42  20 52 32 2c 52 34 2c 52  | .V..RSB R2,R4,R|
000108a0  34 2c 4c 53 4c 20 23 33  20 0d 56 0e 11 4c 44 52  |4,LSL #3 .V..LDR|
000108b0  20 52 34 2c 5b 52 31 30  5d 20 0d 56 18 18 41 44  | R4,[R10] .V..AD|
000108c0  44 20 52 34 2c 52 34 2c  52 32 2c 41 53 52 20 23  |D R4,R4,R2,ASR #|
000108d0  34 20 0d 56 22 18 41 44  44 20 52 32 2c 52 35 2c  |4 .V".ADD R2,R5,|
000108e0  52 35 2c 4c 53 4c 20 23  31 20 0d 56 2c 28 4c 44  |R5,LSL #1 .V,(LD|
000108f0  52 20 52 33 2c 5b 52 30  2c 2d 52 38 5d 3a 41 44  |R R3,[R0,-R8]:AD|
00010900  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
00010910  34 20 0d 56 36 13 53 54  52 20 52 33 2c 5b 52 30  |4 .V6.STR R3,[R0|
00010920  2c 2d 52 38 5d 0d 56 40  15 4d 4f 56 20 52 33 2c  |,-R8].V@.MOV R3,|
00010930  52 35 2c 41 53 52 20 23  34 20 0d 56 4a 13 53 54  |R5,ASR #4 .VJ.ST|
00010940  52 20 52 33 2c 5b 52 30  2c 52 38 5d 20 0d 56 54  |R R3,[R0,R8] .VT|
00010950  18 41 44 44 20 52 32 2c  52 35 2c 52 35 2c 4c 53  |.ADD R2,R5,R5,LS|
00010960  4c 20 23 32 20 0d 56 5e  24 4c 44 52 20 52 33 2c  |L #2 .V^$LDR R3,|
00010970  5b 52 30 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |[R0]:ADD R3,R3,R|
00010980  32 2c 41 53 52 20 23 34  20 0d 56 68 13 53 54 52  |2,ASR #4 .Vh.STR|
00010990  20 52 33 2c 5b 52 30 5d  2c 23 34 20 0d 56 72 18  | R3,[R0],#4 .Vr.|
000109a0  52 53 42 20 52 32 2c 52  35 2c 52 35 2c 4c 53 4c  |RSB R2,R5,R5,LSL|
000109b0  20 23 33 20 0d 56 7c 14  4c 44 52 20 52 35 2c 5b  | #3 .V|.LDR R5,[|
000109c0  52 31 30 2c 23 34 5d 20  0d 56 86 18 41 44 44 20  |R10,#4] .V..ADD |
000109d0  52 35 2c 52 35 2c 52 32  2c 41 53 52 20 23 34 20  |R5,R5,R2,ASR #4 |
000109e0  0d 56 90 18 41 44 44 20  52 32 2c 52 36 2c 52 36  |.V..ADD R2,R6,R6|
000109f0  2c 4c 53 4c 20 23 31 20  0d 56 9a 28 4c 44 52 20  |,LSL #1 .V.(LDR |
00010a00  52 33 2c 5b 52 30 2c 2d  52 38 5d 3a 41 44 44 20  |R3,[R0,-R8]:ADD |
00010a10  52 33 2c 52 33 2c 52 32  2c 41 53 52 20 23 34 20  |R3,R3,R2,ASR #4 |
00010a20  0d 56 a4 13 53 54 52 20  52 33 2c 5b 52 30 2c 2d  |.V..STR R3,[R0,-|
00010a30  52 38 5d 0d 56 ae 18 41  44 44 20 52 32 2c 52 36  |R8].V..ADD R2,R6|
00010a40  2c 52 36 2c 4c 53 4c 20  23 32 20 0d 56 b8 24 4c  |,R6,LSL #2 .V.$L|
00010a50  44 52 20 52 33 2c 5b 52  30 5d 3a 41 44 44 20 52  |DR R3,[R0]:ADD R|
00010a60  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00010a70  56 c2 0f 53 54 52 20 52  33 2c 5b 52 30 5d 0d 56  |V..STR R3,[R0].V|
00010a80  cc 15 4d 4f 56 20 52 33  2c 52 36 2c 41 53 52 20  |..MOV R3,R6,ASR |
00010a90  23 34 20 0d 56 d6 13 53  54 52 20 52 33 2c 5b 52  |#4 .V..STR R3,[R|
00010aa0  30 2c 52 38 5d 20 0d 56  e0 18 52 53 42 20 52 32  |0,R8] .V..RSB R2|
00010ab0  2c 52 36 2c 52 36 2c 4c  53 4c 20 23 33 20 0d 56  |,R6,R6,LSL #3 .V|
00010ac0  ea 14 4c 44 52 20 52 36  2c 5b 52 31 30 2c 23 38  |..LDR R6,[R10,#8|
00010ad0  5d 20 0d 56 f4 18 41 44  44 20 52 36 2c 52 36 2c  |] .V..ADD R6,R6,|
00010ae0  52 32 2c 41 53 52 20 23  34 20 0d 56 fe 05 5d 0d  |R2,ASR #4 .V..].|
00010af0  57 08 05 cc 0d 57 12 0a  5b 4f 50 54 20 5a 0d 57  |W....W..[OPT Z.W|
00010b00  1c 18 4c 44 4d 49 41 20  52 31 30 2c 7b 52 34 2c  |..LDMIA R10,{R4,|
00010b10  52 35 2c 52 36 7d 0d 57  26 05 5d 0d 57 30 05 cd  |R5,R6}.W&.].W0..|
00010b20  0d 57 3a 0a 5b 4f 50 54  20 5a 0d 57 44 1c 53 55  |.W:.[OPT Z.WD.SU|
00010b30  42 53 20 52 39 2c 52 39  2c 23 31 3a 42 4e 45 20  |BS R9,R9,#1:BNE |
00010b40  66 73 6c 6f 6f 70 0d 57  4e 14 4c 44 4d 46 44 20  |fsloop.WN.LDMFD |
00010b50  53 50 20 21 2c 7b 50 43  7d 5e 0d 57 58 05 5d 0d  |SP !,{PC}^.WX.].|
00010b60  57 62 09 c9 20 32 35 36  0d 57 6c 0a 5b 4f 50 54  |Wb.. 256.Wl.[OPT|
00010b70  20 5a 0d 57 76 0b 2e 64  69 76 32 35 35 0d 57 80  | Z.Wv..div255.W.|
00010b80  05 5d 0d 57 8a 0d e3 49  25 3d 30 b8 32 35 35 0d  |.].W...I%=0.255.|
00010b90  57 94 0a 5b 4f 50 54 20  5a 0d 57 9e 11 45 51 55  |W..[OPT Z.W..EQU|
00010ba0  44 20 49 25 2f 32 35 35  2a 46 0d 57 a8 05 5d 0d  |D I%/255*F.W..].|
00010bb0  57 b2 05 ed 0d 57 bc 0a  5b 4f 50 54 20 5a 0d 57  |W....W..[OPT Z.W|
00010bc0  d0 08 2e 66 73 25 0d 57  da 14 53 54 4d 46 44 20  |...fs%.W..STMFD |
00010bd0  53 50 20 21 2c 7b 52 31  34 7d 0d 57 e4 16 4c 44  |SP !,{R14}.W..LD|
00010be0  52 20 52 31 30 2c 5b 52  39 2c 23 34 2a 38 5d 20  |R R10,[R9,#4*8] |
00010bf0  0d 57 ee 11 41 44 52 20  52 37 2c 64 69 76 32 35  |.W..ADR R7,div25|
00010c00  35 0d 57 f8 21 4c 44 52  20 52 31 2c 5b 52 39 2c  |5.W.!LDR R1,[R9,|
00010c10  23 35 2a 38 5d 3a 4c 44  52 20 52 31 2c 5b 52 31  |#5*8]:LDR R1,[R1|
00010c20  5d 20 0d 58 02 16 4c 44  52 20 52 31 31 2c 5b 52  |] .X..LDR R11,[R|
00010c30  39 2c 23 33 2a 38 5d 20  0d 58 0c 24 4c 44 52 20  |9,#3*8] .X.$LDR |
00010c40  52 31 32 2c 5b 52 39 2c  23 32 2a 38 5d 3a 4c 44  |R12,[R9,#2*8]:LD|
00010c50  52 20 52 31 32 2c 5b 52  31 32 5d 20 0d 58 16 1f  |R R12,[R12] .X..|
00010c60  4c 44 52 20 52 38 2c 5b  52 39 2c 23 38 5d 3a 4c  |LDR R8,[R9,#8]:L|
00010c70  44 52 20 52 38 2c 5b 52  38 5d 20 0d 58 20 1c 4c  |DR R8,[R8] .X .L|
00010c80  44 52 20 52 39 2c 5b 52  39 5d 3a 4c 44 52 20 52  |DR R9,[R9]:LDR R|
00010c90  39 2c 5b 52 39 5d 20 0d  58 2a 14 4c 44 52 20 52  |9,[R9] .X*.LDR R|
00010ca0  34 2c 5b 52 31 30 5d 2c  52 38 20 0d 58 34 0b 2e  |4,[R10],R8 .X4..|
00010cb0  66 73 6c 6f 6f 70 0d 58  3e 25 43 4d 50 20 52 34  |fsloop.X>%CMP R4|
00010cc0  2c 23 46 3a 4d 4f 56 43  53 20 52 34 2c 23 30 3a  |,#F:MOVCS R4,#0:|
00010cd0  4d 4f 56 47 45 20 52 34  2c 23 46 0d 58 48 57 53  |MOVGE R4,#F.XHWS|
00010ce0  55 42 20 52 30 2c 52 34  2c 52 34 2c 4c 53 52 20  |UB R0,R4,R4,LSR |
00010cf0  23 38 3a 41 44 44 20 52  30 2c 52 30 2c 23 31 3c  |#8:ADD R0,R0,#1<|
00010d00  3c 28 62 69 74 73 2d 39  29 3a 4d 4f 56 20 52 30  |<(bits-9):MOV R0|
00010d10  2c 52 30 2c 4c 53 52 20  23 28 62 69 74 73 2d 38  |,R0,LSR #(bits-8|
00010d20  29 3a 53 54 52 42 20 52  30 2c 5b 52 31 32 5d 2c  |):STRB R0,[R12],|
00010d30  52 31 0d 58 52 19 4c 44  52 20 52 32 2c 5b 52 37  |R1.XR.LDR R2,[R7|
00010d40  2c 52 30 2c 4c 53 4c 20  23 32 5d 0d 58 5c 05 5d  |,R0,LSL #2].X\.]|
00010d50  0d 58 66 0e e7 64 69 74  68 65 72 25 20 8c 0d 58  |.Xf..dither% ..X|
00010d60  70 0a 5b 4f 50 54 20 5a  0d 58 7a 11 53 55 42 20  |p.[OPT Z.Xz.SUB |
00010d70  52 34 2c 52 34 2c 52 32  20 0d 58 84 0f 4d 4f 56  |R4,R4,R2 .X..MOV|
00010d80  43 53 20 52 34 2c 23 30  0d 58 8e 18 41 44 44 20  |CS R4,#0.X..ADD |
00010d90  52 32 2c 52 34 2c 52 34  2c 4c 53 4c 20 23 31 20  |R2,R4,R4,LSL #1 |
00010da0  0d 58 98 29 4c 44 52 20  52 33 2c 5b 52 31 31 2c  |.X.)LDR R3,[R11,|
00010db0  2d 52 38 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |-R8]:ADD R3,R3,R|
00010dc0  32 2c 41 53 52 20 23 34  20 0d 58 a2 14 53 54 52  |2,ASR #4 .X..STR|
00010dd0  20 52 33 2c 5b 52 31 31  2c 2d 52 38 5d 0d 58 ac  | R3,[R11,-R8].X.|
00010de0  18 41 44 44 20 52 32 2c  52 34 2c 52 34 2c 4c 53  |.ADD R2,R4,R4,LS|
00010df0  4c 20 23 32 20 0d 58 b6  25 4c 44 52 20 52 33 2c  |L #2 .X.%LDR R3,|
00010e00  5b 52 31 31 5d 3a 41 44  44 20 52 33 2c 52 33 2c  |[R11]:ADD R3,R3,|
00010e10  52 32 2c 41 53 52 20 23  34 20 0d 58 c0 10 53 54  |R2,ASR #4 .X..ST|
00010e20  52 20 52 33 2c 5b 52 31  31 5d 0d 58 ca 15 4d 4f  |R R3,[R11].X..MO|
00010e30  56 20 52 33 2c 52 34 2c  41 53 52 20 23 34 20 0d  |V R3,R4,ASR #4 .|
00010e40  58 d4 15 53 54 52 20 52  33 2c 5b 52 31 31 2c 52  |X..STR R3,[R11,R|
00010e50  38 5d 21 20 0d 58 de 18  52 53 42 20 52 32 2c 52  |8]! .X..RSB R2,R|
00010e60  34 2c 52 34 2c 4c 53 4c  20 23 33 20 0d 58 e8 14  |4,R4,LSL #3 .X..|
00010e70  4c 44 52 20 52 34 2c 5b  52 31 30 5d 2c 52 38 20  |LDR R4,[R10],R8 |
00010e80  0d 58 f2 18 41 44 44 20  52 34 2c 52 34 2c 52 32  |.X..ADD R4,R4,R2|
00010e90  2c 41 53 52 20 23 34 20  0d 58 fc 05 5d 0d 59 06  |,ASR #4 .X..].Y.|
00010ea0  05 cc 0d 59 10 0a 5b 4f  50 54 20 5a 0d 59 1a 13  |...Y..[OPT Z.Y..|
00010eb0  4c 44 52 20 52 34 2c 5b  52 31 30 5d 2c 52 38 0d  |LDR R4,[R10],R8.|
00010ec0  59 24 05 5d 0d 59 2e 05  cd 0d 59 38 0a 5b 4f 50  |Y$.].Y....Y8.[OP|
00010ed0  54 20 5a 0d 59 42 1c 53  55 42 53 20 52 39 2c 52  |T Z.YB.SUBS R9,R|
00010ee0  39 2c 23 31 3a 42 4e 45  20 66 73 6c 6f 6f 70 0d  |9,#1:BNE fsloop.|
00010ef0  59 4c 14 4c 44 4d 46 44  20 53 50 20 21 2c 7b 50  |YL.LDMFD SP !,{P|
00010f00  43 7d 5e 0d 59 56 05 5d  0d 59 60 0c c9 20 36 33  |C}^.YV.].Y`.. 63|
00010f10  2c 32 35 35 0d 59 6a 1a  64 69 76 31 35 3d 50 25  |,255.Yj.div15=P%|
00010f20  3a e3 49 25 3d 30 b8 32  35 35 2a 34 88 34 0d 59  |:.I%=0.255*4.4.Y|
00010f30  74 0a 5b 4f 50 54 20 5a  0d 59 7e 20 45 51 55 44  |t.[OPT Z.Y~ EQUD|
00010f40  20 28 70 61 6c 65 74 74  65 25 21 49 25 80 26 46  | (palette%!I%.&F|
00010f50  46 29 2f 32 35 35 2a 46  0d 59 88 23 45 51 55 44  |F)/255*F.Y.#EQUD|
00010f60  20 28 70 61 6c 65 74 74  65 25 21 49 25 3e 3e 38  | (palette%!I%>>8|
00010f70  80 26 46 46 29 2f 32 35  35 2a 46 0d 59 92 24 45  |.&FF)/255*F.Y.$E|
00010f80  51 55 44 20 28 70 61 6c  65 74 74 65 25 21 49 25  |QUD (palette%!I%|
00010f90  3e 3e 31 36 80 26 46 46  29 2f 32 35 35 2a 46 0d  |>>16.&FF)/255*F.|
00010fa0  59 9c 05 5d 0d 59 a6 05  ed 0d 59 b0 0d e7 6d 24  |Y..].Y....Y...m$|
00010fb0  3d 22 52 22 20 8c 0d 59  ba 0a 5b 4f 50 54 20 5a  |="R" ..Y..[OPT Z|
00010fc0  0d 59 c4 15 2e 69 63 74  6c 6f 63 20 45 51 55 44  |.Y...ictloc EQUD|
00010fd0  20 69 63 74 25 0d 59 ce  05 5d 0d 59 d8 05 cd 0d  | ict%.Y..].Y....|
00010fe0  59 e2 0a 5b 4f 50 54 20  5a 0d 59 ec 0e 45 51 55  |Y..[OPT Z.Y..EQU|
00010ff0  44 20 64 69 76 31 35 0d  59 f6 08 2e 66 73 25 0d  |D div15.Y...fs%.|
00011000  5a 00 14 53 54 4d 46 44  20 53 50 20 21 2c 7b 52  |Z..STMFD SP !,{R|
00011010  31 34 7d 0d 5a 0a 21 4c  44 52 20 52 31 2c 5b 52  |14}.Z.!LDR R1,[R|
00011020  39 2c 23 35 2a 38 5d 3a  4c 44 52 20 52 31 2c 5b  |9,#5*8]:LDR R1,[|
00011030  52 31 5d 20 0d 5a 14 16  4c 44 52 20 52 31 30 2c  |R1] .Z..LDR R10,|
00011040  5b 52 39 2c 23 34 2a 38  5d 20 0d 5a 1e 16 4c 44  |[R9,#4*8] .Z..LD|
00011050  52 20 52 31 31 2c 5b 52  39 2c 23 33 2a 38 5d 20  |R R11,[R9,#3*8] |
00011060  0d 5a 28 24 4c 44 52 20  52 31 32 2c 5b 52 39 2c  |.Z($LDR R12,[R9,|
00011070  23 32 2a 38 5d 3a 4c 44  52 20 52 31 32 2c 5b 52  |#2*8]:LDR R12,[R|
00011080  31 32 5d 20 0d 5a 32 1f  4c 44 52 20 52 38 2c 5b  |12] .Z2.LDR R8,[|
00011090  52 39 2c 23 38 5d 3a 4c  44 52 20 52 38 2c 5b 52  |R9,#8]:LDR R8,[R|
000110a0  38 5d 20 0d 5a 3c 1c 4c  44 52 20 52 39 2c 5b 52  |8] .Z<.LDR R9,[R|
000110b0  39 5d 3a 4c 44 52 20 52  39 2c 5b 52 39 5d 20 0d  |9]:LDR R9,[R9] .|
000110c0  5a 46 11 4c 44 52 20 52  34 2c 5b 52 31 30 5d 20  |ZF.LDR R4,[R10] |
000110d0  0d 5a 50 14 4c 44 52 20  52 35 2c 5b 52 31 30 2c  |.ZP.LDR R5,[R10,|
000110e0  23 34 5d 20 0d 5a 5a 14  4c 44 52 20 52 36 2c 5b  |#4] .ZZ.LDR R6,[|
000110f0  52 31 30 2c 23 38 5d 20  0d 5a 64 10 4c 44 52 20  |R10,#8] .Zd.LDR |
00011100  52 37 2c 66 73 25 2d 34  0d 5a 6e 0b 2e 66 73 6c  |R7,fs%-4.Zn..fsl|
00011110  6f 6f 70 0d 5a 78 13 41  44 44 20 52 31 30 2c 52  |oop.Zx.ADD R10,R|
00011120  31 30 2c 52 38 20 0d 5a  82 05 5d 0d 5a 8c 0b c8  |10,R8 .Z..].Z...|
00011130  8e 20 6d 24 20 ca 0d 5a  96 08 c9 22 54 22 0d 5a  |. m$ ..Z..."T".Z|
00011140  a0 0a 5b 4f 50 54 20 5a  0d 5a aa 25 43 4d 50 20  |..[OPT Z.Z.%CMP |
00011150  52 34 2c 23 46 3a 4d 4f  56 43 53 20 52 34 2c 23  |R4,#F:MOVCS R4,#|
00011160  30 3a 4d 4f 56 47 45 20  52 34 2c 23 46 0d 5a b4  |0:MOVGE R4,#F.Z.|
00011170  34 4d 4f 56 20 52 30 2c  52 34 2c 4c 53 52 20 23  |4MOV R0,R4,LSR #|
00011180  28 62 69 74 73 2d 34 29  3a 43 4d 50 20 52 30 2c  |(bits-4):CMP R0,|
00011190  23 31 35 3a 4d 4f 56 43  53 20 52 30 2c 23 31 35  |#15:MOVCS R0,#15|
000111a0  20 0d 5a be 25 43 4d 50  20 52 35 2c 23 46 3a 4d  | .Z.%CMP R5,#F:M|
000111b0  4f 56 43 53 20 52 35 2c  23 30 3a 4d 4f 56 47 45  |OVCS R5,#0:MOVGE|
000111c0  20 52 35 2c 23 46 0d 5a  c8 47 4d 4f 56 20 52 33  | R5,#F.Z.GMOV R3|
000111d0  2c 52 35 2c 4c 53 52 20  23 28 62 69 74 73 2d 34  |,R5,LSR #(bits-4|
000111e0  29 3a 43 4d 50 20 52 33  2c 23 31 35 3a 4d 4f 56  |):CMP R3,#15:MOV|
000111f0  43 53 20 52 33 2c 23 31  35 3a 84 52 20 52 30 2c  |CS R3,#15:.R R0,|
00011200  52 30 2c 52 33 2c 4c 53  4c 20 23 34 20 0d 5a d2  |R0,R3,LSL #4 .Z.|
00011210  25 43 4d 50 20 52 36 2c  23 46 3a 4d 4f 56 43 53  |%CMP R6,#F:MOVCS|
00011220  20 52 36 2c 23 30 3a 4d  4f 56 47 45 20 52 36 2c  | R6,#0:MOVGE R6,|
00011230  23 46 0d 5a dc 47 4d 4f  56 20 52 33 2c 52 36 2c  |#F.Z.GMOV R3,R6,|
00011240  4c 53 52 20 23 28 62 69  74 73 2d 34 29 3a 43 4d  |LSR #(bits-4):CM|
00011250  50 20 52 33 2c 23 31 35  3a 4d 4f 56 43 53 20 52  |P R3,#15:MOVCS R|
00011260  33 2c 23 31 35 3a 84 52  20 52 30 2c 52 30 2c 52  |3,#15:.R R0,R0,R|
00011270  33 2c 4c 53 4c 20 23 38  20 0d 5a e6 16 4c 44 52  |3,LSL #8 .Z..LDR|
00011280  20 52 33 2c 63 6f 6c 6d  61 74 63 68 6c 6f 63 0d  | R3,colmatchloc.|
00011290  5a f0 13 4c 44 52 42 20  52 30 2c 5b 52 33 2c 52  |Z..LDRB R0,[R3,R|
000112a0  30 5d 0d 5a fa 2b 41 44  44 20 52 33 2c 52 30 2c  |0].Z.+ADD R3,R0,|
000112b0  52 30 2c 4c 53 4c 20 23  31 3a 41 44 44 20 52 33  |R0,LSL #1:ADD R3|
000112c0  2c 52 37 2c 52 33 2c 4c  53 4c 20 23 32 0d 5b 04  |,R7,R3,LSL #2.[.|
000112d0  1f 4c 44 52 20 52 32 2c  5b 52 33 5d 2c 23 34 3a  |.LDR R2,[R3],#4:|
000112e0  53 55 42 20 52 34 2c 52  34 2c 52 32 0d 5b 0e 2e  |SUB R4,R4,R2.[..|
000112f0  4c 44 4d 49 41 20 52 33  2c 7b 52 32 2c 52 33 7d  |LDMIA R3,{R2,R3}|
00011300  3a 53 55 42 20 52 35 2c  52 35 2c 52 32 3a 53 55  |:SUB R5,R5,R2:SU|
00011310  42 20 52 36 2c 52 36 2c  52 33 0d 5b 18 05 5d 0d  |B R6,R6,R3.[..].|
00011320  5b 22 08 c9 22 52 22 0d  5b 2c 10 f2 73 72 63 68  |[".."R".[,..srch|
00011330  64 65 76 6c 69 73 74 0d  5b 36 05 7f 0d 5b 40 0a  |devlist.[6...[@.|
00011340  5b 4f 50 54 20 5a 0d 5b  4a 25 43 4d 50 20 52 34  |[OPT Z.[J%CMP R4|
00011350  2c 23 46 3a 4d 4f 56 43  53 20 52 34 2c 23 30 3a  |,#F:MOVCS R4,#0:|
00011360  4d 4f 56 47 45 20 52 34  2c 23 46 0d 5b 54 25 43  |MOVGE R4,#F.[T%C|
00011370  4d 50 20 52 35 2c 23 46  3a 4d 4f 56 43 53 20 52  |MP R5,#F:MOVCS R|
00011380  35 2c 23 30 3a 4d 4f 56  47 45 20 52 35 2c 23 46  |5,#0:MOVGE R5,#F|
00011390  0d 5b 5e 25 43 4d 50 20  52 36 2c 23 46 3a 4d 4f  |.[^%CMP R6,#F:MO|
000113a0  56 43 53 20 52 36 2c 23  30 3a 4d 4f 56 47 45 20  |VCS R6,#0:MOVGE |
000113b0  52 36 2c 23 46 0d 5b 68  19 53 54 4d 46 44 20 53  |R6,#F.[h.STMFD S|
000113c0  50 20 21 2c 7b 52 37 2c  52 38 2c 52 39 7d 0d 5b  |P !,{R7,R8,R9}.[|
000113d0  72 0d 4d 56 4e 20 52 32  2c 23 30 0d 5b 7c 13 4d  |r.MVN R2,#0.[|.M|
000113e0  4f 56 20 52 33 2c 23 26  33 30 3c 3c 32 33 0d 5b  |OV R3,#&30<<23.[|
000113f0  86 1c 2e 73 72 63 68 20  52 53 42 20 52 37 2c 52  |...srch RSB R7,R|
00011400  33 2c 23 26 32 30 3c 3c  32 33 0d 5b 90 19 4d 4f  |3,#&20<<23.[..MO|
00011410  56 20 52 38 2c 52 36 2c  4c 53 52 20 23 62 69 74  |V R8,R6,LSR #bit|
00011420  73 2d 38 0d 5b 9a 17 53  55 42 20 52 38 2c 52 38  |s-8.[..SUB R8,R8|
00011430  2c 52 38 2c 4c 53 52 20  23 34 0d 5b a4 19 41 44  |,R8,LSR #4.[..AD|
00011440  44 53 20 52 37 2c 52 37  2c 52 38 2c 4c 53 4c 20  |DS R7,R7,R8,LSL |
00011450  23 32 33 0d 5b ae 18 4d  4f 56 56 53 53 20 52 37  |#23.[..MOVVSS R7|
00011460  2c 23 26 37 46 30 30 30  30 30 30 0d 5b b8 0f 4d  |,#&7F000000.[..M|
00011470  4f 56 4d 49 20 52 37 2c  23 30 0d 5b c2 16 80 20  |OVMI R7,#0.[... |
00011480  52 37 2c 52 37 2c 23 26  36 30 30 30 30 30 30 30  |R7,R7,#&60000000|
00011490  0d 5b cc 10 41 44 44 20  52 37 2c 52 37 2c 52 33  |.[..ADD R7,R7,R3|
000114a0  0d 5b d6 18 41 44 44 20  52 31 34 2c 52 37 2c 52  |.[..ADD R14,R7,R|
000114b0  37 2c 4c 53 52 20 23 34  0d 5b e0 19 41 44 44 20  |7,LSR #4.[..ADD |
000114c0  52 37 2c 52 31 34 2c 52  31 34 2c 4c 53 52 20 23  |R7,R14,R14,LSR #|
000114d0  38 0d 5b ea 18 41 44 44  20 52 37 2c 52 37 2c 52  |8.[..ADD R7,R7,R|
000114e0  37 2c 4c 53 52 20 23 31  36 0d 5b f4 1f 53 55 42  |7,LSR #16.[..SUB|
000114f0  53 20 52 38 2c 52 36 2c  52 31 34 2c 4c 53 52 20  |S R8,R6,R14,LSR |
00011500  23 33 31 2d 62 69 74 73  0d 5b fe 12 52 53 42 4c  |#31-bits.[..RSBL|
00011510  54 20 52 38 2c 52 38 2c  23 30 0d 5c 08 19 4d 4f  |T R8,R8,#0.\..MO|
00011520  56 20 52 38 2c 52 38 2c  4c 53 52 20 23 62 69 74  |V R8,R8,LSR #bit|
00011530  73 2f 32 0d 5c 12 10 4d  55 4c 20 52 39 2c 52 38  |s/2.\..MUL R9,R8|
00011540  2c 52 38 0d 5c 1c 16 52  53 42 20 52 37 2c 52 33  |,R8.\..RSB R7,R3|
00011550  2c 23 26 32 30 3c 3c 32  33 0d 5c 26 19 4d 4f 56  |,#&20<<23.\&.MOV|
00011560  20 52 38 2c 52 35 2c 4c  53 52 20 23 62 69 74 73  | R8,R5,LSR #bits|
00011570  2d 38 0d 5c 30 17 53 55  42 20 52 38 2c 52 38 2c  |-8.\0.SUB R8,R8,|
00011580  52 38 2c 4c 53 52 20 23  34 0d 5c 3a 19 41 44 44  |R8,LSR #4.\:.ADD|
00011590  53 20 52 37 2c 52 37 2c  52 38 2c 4c 53 4c 20 23  |S R7,R7,R8,LSL #|
000115a0  32 33 0d 5c 44 18 4d 4f  56 56 53 53 20 52 37 2c  |23.\D.MOVVSS R7,|
000115b0  23 26 37 46 30 30 30 30  30 30 0d 5c 4e 0f 4d 4f  |#&7F000000.\N.MO|
000115c0  56 4d 49 20 52 37 2c 23  30 0d 5c 58 16 80 20 52  |VMI R7,#0.\X.. R|
000115d0  37 2c 52 37 2c 23 26 36  30 30 30 30 30 30 30 0d  |7,R7,#&60000000.|
000115e0  5c 62 10 41 44 44 20 52  37 2c 52 33 2c 52 37 0d  |\b.ADD R7,R3,R7.|
000115f0  5c 6c 17 41 44 44 20 52  37 2c 52 37 2c 52 37 2c  |\l.ADD R7,R7,R7,|
00011600  4c 53 52 20 23 34 0d 5c  76 18 84 52 20 52 31 34  |LSR #4.\v..R R14|
00011610  2c 52 31 34 2c 52 37 2c  4c 53 52 20 23 38 0d 5c  |,R14,R7,LSR #8.\|
00011620  80 17 41 44 44 20 52 37  2c 52 37 2c 52 37 2c 4c  |..ADD R7,R7,R7,L|
00011630  53 52 20 23 38 0d 5c 8a  18 41 44 44 20 52 37 2c  |SR #8.\..ADD R7,|
00011640  52 37 2c 52 37 2c 4c 53  52 20 23 31 36 0d 5c 94  |R7,R7,LSR #16.\.|
00011650  1e 53 55 42 53 20 52 38  2c 52 35 2c 52 37 2c 4c  |.SUBS R8,R5,R7,L|
00011660  53 52 20 23 33 31 2d 62  69 74 73 0d 5c 9e 12 52  |SR #31-bits.\..R|
00011670  53 42 4c 54 20 52 38 2c  52 38 2c 23 30 0d 5c a8  |SBLT R8,R8,#0.\.|
00011680  19 4d 4f 56 20 52 38 2c  52 38 2c 4c 53 52 20 23  |.MOV R8,R8,LSR #|
00011690  62 69 74 73 2f 32 0d 5c  b2 10 4d 55 4c 20 52 37  |bits/2.\..MUL R7|
000116a0  2c 52 38 2c 52 38 0d 5c  bc 17 41 44 44 20 52 37  |,R8,R8.\..ADD R7|
000116b0  2c 52 37 2c 52 37 2c 4c  53 4c 20 23 32 0d 5c c6  |,R7,R7,LSL #2.\.|
000116c0  17 41 44 44 20 52 39 2c  52 39 2c 52 37 2c 4c 53  |.ADD R9,R9,R7,LS|
000116d0  4c 20 23 31 0d 5c d0 16  52 53 42 20 52 37 2c 52  |L #1.\..RSB R7,R|
000116e0  33 2c 23 26 32 30 3c 3c  32 33 0d 5c da 19 4d 4f  |3,#&20<<23.\..MO|
000116f0  56 20 52 38 2c 52 34 2c  4c 53 52 20 23 62 69 74  |V R8,R4,LSR #bit|
00011700  73 2d 38 0d 5c e4 17 53  55 42 20 52 38 2c 52 38  |s-8.\..SUB R8,R8|
00011710  2c 52 38 2c 4c 53 52 20  23 34 0d 5c ee 19 41 44  |,R8,LSR #4.\..AD|
00011720  44 53 20 52 37 2c 52 37  2c 52 38 2c 4c 53 4c 20  |DS R7,R7,R8,LSL |
00011730  23 32 33 0d 5c f8 18 4d  4f 56 56 53 53 20 52 37  |#23.\..MOVVSS R7|
00011740  2c 23 26 37 46 30 30 30  30 30 30 0d 5d 02 0f 4d  |,#&7F000000.]..M|
00011750  4f 56 4d 49 20 52 37 2c  23 30 0d 5d 0c 16 80 20  |OVMI R7,#0.]... |
00011760  52 37 2c 52 37 2c 23 26  36 30 30 30 30 30 30 30  |R7,R7,#&60000000|
00011770  0d 5d 16 10 41 44 44 20  52 37 2c 52 33 2c 52 37  |.]..ADD R7,R3,R7|
00011780  0d 5d 20 17 41 44 44 20  52 37 2c 52 37 2c 52 37  |.] .ADD R7,R7,R7|
00011790  2c 4c 53 52 20 23 34 0d  5d 2a 19 84 52 20 52 31  |,LSR #4.]*..R R1|
000117a0  34 2c 52 31 34 2c 52 37  2c 4c 53 52 20 23 31 36  |4,R14,R7,LSR #16|
000117b0  0d 5d 34 17 41 44 44 20  52 37 2c 52 37 2c 52 37  |.]4.ADD R7,R7,R7|
000117c0  2c 4c 53 52 20 23 38 0d  5d 3e 18 41 44 44 20 52  |,LSR #8.]>.ADD R|
000117d0  37 2c 52 37 2c 52 37 2c  4c 53 52 20 23 31 36 0d  |7,R7,R7,LSR #16.|
000117e0  5d 48 1e 53 55 42 53 20  52 38 2c 52 34 2c 52 37  |]H.SUBS R8,R4,R7|
000117f0  2c 4c 53 52 20 23 33 31  2d 62 69 74 73 0d 5d 52  |,LSR #31-bits.]R|
00011800  12 52 53 42 4c 54 20 52  38 2c 52 38 2c 23 30 0d  |.RSBLT R8,R8,#0.|
00011810  5d 5c 19 4d 4f 56 20 52  38 2c 52 38 2c 4c 53 52  |]\.MOV R8,R8,LSR|
00011820  20 23 62 69 74 73 2f 32  0d 5d 66 10 4d 55 4c 20  | #bits/2.]f.MUL |
00011830  52 37 2c 52 38 2c 52 38  0d 5d 70 17 41 44 44 20  |R7,R8,R8.]p.ADD |
00011840  52 37 2c 52 37 2c 52 37  2c 4c 53 4c 20 23 31 0d  |R7,R7,R7,LSL #1.|
00011850  5d 7a 10 41 44 44 20 52  39 2c 52 39 2c 52 37 0d  |]z.ADD R9,R9,R7.|
00011860  5d 84 0d 43 4d 50 20 52  39 2c 52 32 0d 5d 8e 0f  |]..CMP R9,R2.]..|
00011870  4d 4f 56 4c 53 20 52 32  2c 52 39 0d 5d 98 10 4d  |MOVLS R2,R9.]..M|
00011880  4f 56 4c 53 20 52 30 2c  52 31 34 0d 5d a2 17 53  |OVLS R0,R14.]..S|
00011890  55 42 53 20 52 33 2c 52  33 2c 23 26 31 30 3c 3c  |UBS R3,R3,#&10<<|
000118a0  32 33 0d 5d ac 0c 42 47  45 20 73 72 63 68 0d 5d  |23.]..BGE srch.]|
000118b0  b6 16 80 20 52 37 2c 52  30 2c 23 26 34 30 30 30  |... R7,R0,#&4000|
000118c0  30 30 30 30 0d 5d c0 15  4d 4f 56 20 52 38 2c 52  |0000.]..MOV R8,R|
000118d0  37 2c 4c 53 52 20 23 32  33 0d 5d ca 14 80 20 52  |7,LSR #23.]... R|
000118e0  37 2c 52 30 2c 23 26 36  30 30 30 30 30 0d 5d d4  |7,R0,#&600000.].|
000118f0  17 84 52 20 52 38 2c 52  38 2c 52 37 2c 4c 53 52  |..R R8,R8,R7,LSR|
00011900  20 23 31 36 0d 5d de 12  80 20 52 37 2c 52 30 2c  | #16.]... R7,R0,|
00011910  23 26 34 30 30 30 0d 5d  e8 17 84 52 20 52 38 2c  |#&4000.]...R R8,|
00011920  52 38 2c 52 37 2c 4c 53  52 20 23 31 30 0d 5d f2  |R8,R7,LSR #10.].|
00011930  16 80 20 52 37 2c 52 30  2c 23 26 32 30 30 30 30  |.. R7,R0,#&20000|
00011940  30 30 30 0d 5d fc 17 84  52 20 52 38 2c 52 38 2c  |000.]...R R8,R8,|
00011950  52 37 2c 4c 53 52 20 23  32 36 0d 5e 06 12 80 20  |R7,LSR #26.^... |
00011960  52 37 2c 52 30 2c 23 26  33 38 30 30 0d 5e 10 17  |R7,R0,#&3800.^..|
00011970  84 52 20 52 30 2c 52 38  2c 52 37 2c 4c 53 52 20  |.R R0,R8,R7,LSR |
00011980  23 31 31 0d 5e 1a 19 4c  44 4d 46 44 20 53 50 20  |#11.^..LDMFD SP |
00011990  21 2c 7b 52 37 2c 52 38  2c 52 39 7d 0d 5e 24 2b  |!,{R7,R8,R9}.^$+|
000119a0  41 44 44 20 52 33 2c 52  30 2c 52 30 2c 4c 53 4c  |ADD R3,R0,R0,LSL|
000119b0  20 23 31 3a 41 44 44 20  52 33 2c 52 37 2c 52 33  | #1:ADD R3,R7,R3|
000119c0  2c 4c 53 4c 20 23 32 0d  5e 2e 1f 4c 44 52 20 52  |,LSL #2.^..LDR R|
000119d0  32 2c 5b 52 33 5d 2c 23  34 3a 53 55 42 20 52 34  |2,[R3],#4:SUB R4|
000119e0  2c 52 34 2c 52 32 0d 5e  38 2e 4c 44 4d 49 41 20  |,R4,R2.^8.LDMIA |
000119f0  52 33 2c 7b 52 32 2c 52  33 7d 3a 53 55 42 20 52  |R3,{R2,R3}:SUB R|
00011a00  35 2c 52 35 2c 52 32 3a  53 55 42 20 52 36 2c 52  |5,R5,R2:SUB R6,R|
00011a10  36 2c 52 33 0d 5e 42 05  5d 0d 5e 4c 05 cb 0d 5e  |6,R3.^B.].^L...^|
00011a20  56 0a 5b 4f 50 54 20 5a  0d 5e 60 14 53 54 52 42  |V.[OPT Z.^`.STRB|
00011a30  20 52 30 2c 5b 52 31 32  5d 2c 52 31 0d 5e 6a 05  | R0,[R12],R1.^j.|
00011a40  5d 0d 5e 74 0e e7 64 69  74 68 65 72 25 20 8c 0d  |].^t..dither% ..|
00011a50  5e 7e 0a 5b 4f 50 54 20  5a 0d 5e 88 12 41 44 44  |^~.[OPT Z.^..ADD|
00011a60  20 52 30 2c 52 31 31 2c  23 34 20 0d 5e 92 18 41  | R0,R11,#4 .^..A|
00011a70  44 44 20 52 32 2c 52 34  2c 52 34 2c 4c 53 4c 20  |DD R2,R4,R4,LSL |
00011a80  23 31 20 0d 5e 9c 29 4c  44 52 20 52 33 2c 5b 52  |#1 .^.)LDR R3,[R|
00011a90  31 31 2c 2d 52 38 5d 3a  41 44 44 20 52 33 2c 52  |11,-R8]:ADD R3,R|
00011aa0  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 5e a6 14  |3,R2,ASR #4 .^..|
00011ab0  53 54 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |STR R3,[R11,-R8]|
00011ac0  0d 5e b0 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.^..ADD R2,R4,R4|
00011ad0  2c 4c 53 4c 20 23 32 20  0d 5e ba 25 4c 44 52 20  |,LSL #2 .^.%LDR |
00011ae0  52 33 2c 5b 52 31 31 5d  3a 41 44 44 20 52 33 2c  |R3,[R11]:ADD R3,|
00011af0  52 33 2c 52 32 2c 41 53  52 20 23 34 20 0d 5e c4  |R3,R2,ASR #4 .^.|
00011b00  10 53 54 52 20 52 33 2c  5b 52 31 31 5d 0d 5e ce  |.STR R3,[R11].^.|
00011b10  15 4d 4f 56 20 52 33 2c  52 34 2c 41 53 52 20 23  |.MOV R3,R4,ASR #|
00011b20  34 20 0d 5e d8 15 53 54  52 20 52 33 2c 5b 52 31  |4 .^..STR R3,[R1|
00011b30  31 2c 52 38 5d 21 20 0d  5e e2 18 52 53 42 20 52  |1,R8]! .^..RSB R|
00011b40  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 33 20 0d  |2,R4,R4,LSL #3 .|
00011b50  5e ec 11 4c 44 52 20 52  34 2c 5b 52 31 30 5d 20  |^..LDR R4,[R10] |
00011b60  0d 5e f6 18 41 44 44 20  52 34 2c 52 34 2c 52 32  |.^..ADD R4,R4,R2|
00011b70  2c 41 53 52 20 23 34 20  0d 5f 00 18 41 44 44 20  |,ASR #4 ._..ADD |
00011b80  52 32 2c 52 35 2c 52 35  2c 4c 53 4c 20 23 31 20  |R2,R5,R5,LSL #1 |
00011b90  0d 5f 0a 28 4c 44 52 20  52 33 2c 5b 52 30 2c 2d  |._.(LDR R3,[R0,-|
00011ba0  52 38 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R8]:ADD R3,R3,R2|
00011bb0  2c 41 53 52 20 23 34 20  0d 5f 14 13 53 54 52 20  |,ASR #4 ._..STR |
00011bc0  52 33 2c 5b 52 30 2c 2d  52 38 5d 0d 5f 1e 15 4d  |R3,[R0,-R8]._..M|
00011bd0  4f 56 20 52 33 2c 52 35  2c 41 53 52 20 23 34 20  |OV R3,R5,ASR #4 |
00011be0  0d 5f 28 13 53 54 52 20  52 33 2c 5b 52 30 2c 52  |._(.STR R3,[R0,R|
00011bf0  38 5d 20 0d 5f 32 18 41  44 44 20 52 32 2c 52 35  |8] ._2.ADD R2,R5|
00011c00  2c 52 35 2c 4c 53 4c 20  23 32 20 0d 5f 3c 24 4c  |,R5,LSL #2 ._<$L|
00011c10  44 52 20 52 33 2c 5b 52  30 5d 3a 41 44 44 20 52  |DR R3,[R0]:ADD R|
00011c20  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00011c30  5f 46 13 53 54 52 20 52  33 2c 5b 52 30 5d 2c 23  |_F.STR R3,[R0],#|
00011c40  34 20 0d 5f 50 18 52 53  42 20 52 32 2c 52 35 2c  |4 ._P.RSB R2,R5,|
00011c50  52 35 2c 4c 53 4c 20 23  33 20 0d 5f 5a 14 4c 44  |R5,LSL #3 ._Z.LD|
00011c60  52 20 52 35 2c 5b 52 31  30 2c 23 34 5d 20 0d 5f  |R R5,[R10,#4] ._|
00011c70  64 18 41 44 44 20 52 35  2c 52 35 2c 52 32 2c 41  |d.ADD R5,R5,R2,A|
00011c80  53 52 20 23 34 20 0d 5f  6e 18 41 44 44 20 52 32  |SR #4 ._n.ADD R2|
00011c90  2c 52 36 2c 52 36 2c 4c  53 4c 20 23 31 20 0d 5f  |,R6,R6,LSL #1 ._|
00011ca0  78 28 4c 44 52 20 52 33  2c 5b 52 30 2c 2d 52 38  |x(LDR R3,[R0,-R8|
00011cb0  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00011cc0  53 52 20 23 34 20 0d 5f  82 13 53 54 52 20 52 33  |SR #4 ._..STR R3|
00011cd0  2c 5b 52 30 2c 2d 52 38  5d 0d 5f 8c 18 41 44 44  |,[R0,-R8]._..ADD|
00011ce0  20 52 32 2c 52 36 2c 52  36 2c 4c 53 4c 20 23 32  | R2,R6,R6,LSL #2|
00011cf0  20 0d 5f 96 24 4c 44 52  20 52 33 2c 5b 52 30 5d  | ._.$LDR R3,[R0]|
00011d00  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
00011d10  52 20 23 34 20 0d 5f a0  0f 53 54 52 20 52 33 2c  |R #4 ._..STR R3,|
00011d20  5b 52 30 5d 0d 5f aa 15  4d 4f 56 20 52 33 2c 52  |[R0]._..MOV R3,R|
00011d30  36 2c 41 53 52 20 23 34  20 0d 5f b4 13 53 54 52  |6,ASR #4 ._..STR|
00011d40  20 52 33 2c 5b 52 30 2c  52 38 5d 20 0d 5f be 18  | R3,[R0,R8] ._..|
00011d50  52 53 42 20 52 32 2c 52  36 2c 52 36 2c 4c 53 4c  |RSB R2,R6,R6,LSL|
00011d60  20 23 33 20 0d 5f c8 14  4c 44 52 20 52 36 2c 5b  | #3 ._..LDR R6,[|
00011d70  52 31 30 2c 23 38 5d 20  0d 5f d2 18 41 44 44 20  |R10,#8] ._..ADD |
00011d80  52 36 2c 52 36 2c 52 32  2c 41 53 52 20 23 34 20  |R6,R6,R2,ASR #4 |
00011d90  0d 5f dc 05 5d 0d 5f e6  05 cc 0d 5f f0 0a 5b 4f  |._..]._...._..[O|
00011da0  50 54 20 5a 0d 5f fa 18  4c 44 4d 49 41 20 52 31  |PT Z._..LDMIA R1|
00011db0  30 2c 7b 52 34 2c 52 35  2c 52 36 7d 0d 60 04 05  |0,{R4,R5,R6}.`..|
00011dc0  5d 0d 60 0e 05 cd 0d 60  18 0a 5b 4f 50 54 20 5a  |].`....`..[OPT Z|
00011dd0  0d 60 22 1c 53 55 42 53  20 52 39 2c 52 39 2c 23  |.`".SUBS R9,R9,#|
00011de0  31 3a 42 4e 45 20 66 73  6c 6f 6f 70 0d 60 2c 14  |1:BNE fsloop.`,.|
00011df0  4c 44 4d 46 44 20 53 50  20 21 2c 7b 50 43 7d 5e  |LDMFD SP !,{PC}^|
00011e00  0d 60 36 05 5d 0d 60 40  08 c9 20 31 35 0d 60 4a  |.`6.].`@.. 15.`J|
00011e10  17 64 69 76 74 61 62 6c  65 3d 50 25 3a c8 8e 20  |.divtable=P%:.. |
00011e20  6d 24 20 ca 0d 60 54 09  c9 20 22 44 22 0d 60 5e  |m$ ..`T.. "D".`^|
00011e30  09 c9 20 22 52 22 0d 60  68 10 e3 49 25 3d 30 b8  |.. "R".`h..I%=0.|
00011e40  31 35 2a 34 88 34 0d 60  72 0a 5b 4f 50 54 20 5a  |15*4.4.`r.[OPT Z|
00011e50  0d 60 7c 26 45 51 55 44  20 28 70 61 6c 65 74 74  |.`|&EQUD (palett|
00011e60  65 25 21 49 25 3e 3e 34  80 26 46 29 2f 62 72 69  |e%!I%>>4.&F)/bri|
00011e70  67 68 74 25 2a 46 0d 60  86 27 45 51 55 44 20 28  |ght%*F.`.'EQUD (|
00011e80  70 61 6c 65 74 74 65 25  21 49 25 3e 3e 31 32 80  |palette%!I%>>12.|
00011e90  26 46 29 2f 62 72 69 67  68 74 25 2a 46 0d 60 90  |&F)/bright%*F.`.|
00011ea0  27 45 51 55 44 20 28 70  61 6c 65 74 74 65 25 21  |'EQUD (palette%!|
00011eb0  49 25 3e 3e 32 30 80 26  46 29 2f 62 72 69 67 68  |I%>>20.&F)/brigh|
00011ec0  74 25 2a 46 0d 60 9a 05  5d 0d 60 a4 05 ed 0d 60  |t%*F.`..].`....`|
00011ed0  ae 0a 5b 4f 50 54 20 5a  0d 60 b8 15 2e 69 63 74  |..[OPT Z.`...ict|
00011ee0  6c 6f 63 20 45 51 55 44  20 69 63 74 25 0d 60 c2  |loc EQUD ict%.`.|
00011ef0  05 5d 0d 60 cc 09 c9 20  22 54 22 0d 60 d6 0c e3  |.].`... "T".`...|
00011f00  49 25 3d 30 b8 31 35 0d  60 e0 0a 5b 4f 50 54 20  |I%=0.15.`..[OPT |
00011f10  5a 0d 60 ea 15 45 51 55  44 20 49 25 2f 62 72 69  |Z.`..EQUD I%/bri|
00011f20  67 68 74 25 2a 46 0d 60  f4 05 5d 0d 60 fe 05 ed  |ght%*F.`..].`...|
00011f30  0d 61 08 05 7f 0d 61 12  0b e3 49 25 3d 30 b8 37  |.a....a...I%=0.7|
00011f40  0d 61 1c 0a 5b 4f 50 54  20 5a 0d 61 26 19 45 51  |.a..[OPT Z.a&.EQ|
00011f50  55 44 20 49 25 2f 28 62  72 69 67 68 74 25 81 32  |UD I%/(bright%.2|
00011f60  29 2a 46 0d 61 30 05 5d  0d 61 3a 05 ed 0d 61 44  |)*F.a0.].a:...aD|
00011f70  05 cb 0d 61 4e 0a 5b 4f  50 54 20 5a 0d 61 58 08  |...aN.[OPT Z.aX.|
00011f80  2e 66 73 25 0d 61 62 14  53 54 4d 46 44 20 53 50  |.fs%.ab.STMFD SP|
00011f90  20 21 2c 7b 52 31 34 7d  0d 61 6c 21 4c 44 52 20  | !,{R14}.al!LDR |
00011fa0  52 31 2c 5b 52 39 2c 23  35 2a 38 5d 3a 4c 44 52  |R1,[R9,#5*8]:LDR|
00011fb0  20 52 31 2c 5b 52 31 5d  20 0d 61 76 16 4c 44 52  | R1,[R1] .av.LDR|
00011fc0  20 52 31 30 2c 5b 52 39  2c 23 34 2a 38 5d 20 0d  | R10,[R9,#4*8] .|
00011fd0  61 80 16 4c 44 52 20 52  31 31 2c 5b 52 39 2c 23  |a..LDR R11,[R9,#|
00011fe0  33 2a 38 5d 20 0d 61 8a  24 4c 44 52 20 52 31 32  |3*8] .a.$LDR R12|
00011ff0  2c 5b 52 39 2c 23 32 2a  38 5d 3a 4c 44 52 20 52  |,[R9,#2*8]:LDR R|
00012000  31 32 2c 5b 52 31 32 5d  20 0d 61 94 1f 4c 44 52  |12,[R12] .a..LDR|
00012010  20 52 38 2c 5b 52 39 2c  23 38 5d 3a 4c 44 52 20  | R8,[R9,#8]:LDR |
00012020  52 38 2c 5b 52 38 5d 20  0d 61 9e 1c 4c 44 52 20  |R8,[R8] .a..LDR |
00012030  52 39 2c 5b 52 39 5d 3a  4c 44 52 20 52 39 2c 5b  |R9,[R9]:LDR R9,[|
00012040  52 39 5d 20 0d 61 a8 05  5d 0d 61 b2 15 e7 6d 24  |R9] .a..].a...m$|
00012050  3d 22 44 22 20 84 6d 24  3d 22 52 22 20 8c 0d 61  |="D" .m$="R" ..a|
00012060  bc 0a 5b 4f 50 54 20 5a  0d 61 c6 11 4c 44 52 20  |..[OPT Z.a..LDR |
00012070  52 34 2c 5b 52 31 30 5d  20 0d 61 d0 14 4c 44 52  |R4,[R10] .a..LDR|
00012080  20 52 35 2c 5b 52 31 30  2c 23 34 5d 20 0d 61 da  | R5,[R10,#4] .a.|
00012090  14 4c 44 52 20 52 36 2c  5b 52 31 30 2c 23 38 5d  |.LDR R6,[R10,#8]|
000120a0  20 0d 61 e4 05 5d 0d 61  ee 05 cc 0d 61 f8 0a 5b  | .a..].a....a..[|
000120b0  4f 50 54 20 5a 0d 62 02  14 4c 44 52 20 52 34 2c  |OPT Z.b..LDR R4,|
000120c0  5b 52 31 30 5d 2c 52 38  20 0d 62 0c 05 5d 0d 62  |[R10],R8 .b..].b|
000120d0  16 05 cd 0d 62 20 0e e7  6d 24 3c 3e 22 44 22 20  |....b ..m$<>"D" |
000120e0  8c 0d 62 2a 0a 5b 4f 50  54 20 5a 0d 62 34 13 41  |..b*.[OPT Z.b4.A|
000120f0  44 52 20 52 37 2c 64 69  76 74 61 62 6c 65 0d 62  |DR R7,divtable.b|
00012100  3e 05 5d 0d 62 48 05 cd  0d 62 52 0a 5b 4f 50 54  |>.].bH...bR.[OPT|
00012110  20 5a 0d 62 5c 0b 2e 66  73 6c 6f 6f 70 0d 62 66  | Z.b\..fsloop.bf|
00012120  05 5d 0d 62 70 0b c8 8e  20 6d 24 20 ca 0d 62 7a  |.].bp... m$ ..bz|
00012130  08 c9 22 52 22 0d 62 84  0a 5b 4f 50 54 20 5a 0d  |.."R".b..[OPT Z.|
00012140  62 8e 12 41 44 44 20 52  31 30 2c 52 31 30 2c 52  |b..ADD R10,R10,R|
00012150  38 0d 62 98 05 5d 0d 62  a2 10 f2 73 72 63 68 64  |8.b..].b...srchd|
00012160  65 76 6c 69 73 74 0d 62  ac 0a 5b 4f 50 54 20 5a  |evlist.b..[OPT Z|
00012170  0d 62 b6 0d 4d 4f 56 20  72 33 2c 72 30 0d 62 c0  |.b..MOV r3,r0.b.|
00012180  05 5d 0d 62 ca 09 c9 20  22 44 22 0d 62 d4 0a 5b  |.].b... "D".b..[|
00012190  4f 50 54 20 5a 0d 62 de  13 41 44 44 20 52 31 30  |OPT Z.b..ADD R10|
000121a0  2c 52 31 30 2c 52 38 20  0d 62 e8 0d 4d 4f 56 20  |,R10,R8 .b..MOV |
000121b0  52 33 2c 23 30 0d 62 f2  25 43 4d 50 20 52 34 2c  |R3,#0.b.%CMP R4,|
000121c0  23 46 3a 4d 4f 56 43 53  20 52 34 2c 23 30 3a 4d  |#F:MOVCS R4,#0:M|
000121d0  4f 56 47 45 20 52 34 2c  23 46 0d 62 fc 11 43 4d  |OVGE R4,#F.b..CM|
000121e0  50 20 52 34 2c 23 46 3e  3e 31 20 0d 63 06 20 53  |P R4,#F>>1 .c. S|
000121f0  55 42 43 53 20 52 34 2c  52 34 2c 23 46 3a 84 52  |UBCS R4,R4,#F:.R|
00012200  43 53 20 52 33 2c 52 33  2c 23 31 0d 63 10 25 43  |CS R3,R3,#1.c.%C|
00012210  4d 50 20 52 35 2c 23 46  3a 4d 4f 56 43 53 20 52  |MP R5,#F:MOVCS R|
00012220  35 2c 23 30 3a 4d 4f 56  47 45 20 52 35 2c 23 46  |5,#0:MOVGE R5,#F|
00012230  0d 63 1a 11 43 4d 50 20  52 35 2c 23 46 3e 3e 31  |.c..CMP R5,#F>>1|
00012240  20 0d 63 24 20 53 55 42  43 53 20 52 35 2c 52 35  | .c$ SUBCS R5,R5|
00012250  2c 23 46 3a 84 52 43 53  20 52 33 2c 52 33 2c 23  |,#F:.RCS R3,R3,#|
00012260  32 0d 63 2e 25 43 4d 50  20 52 36 2c 23 46 3a 4d  |2.c.%CMP R6,#F:M|
00012270  4f 56 43 53 20 52 36 2c  23 30 3a 4d 4f 56 47 45  |OVCS R6,#0:MOVGE|
00012280  20 52 36 2c 23 46 0d 63  38 11 43 4d 50 20 52 36  | R6,#F.c8.CMP R6|
00012290  2c 23 46 3e 3e 31 20 0d  63 42 20 53 55 42 43 53  |,#F>>1 .cB SUBCS|
000122a0  20 52 36 2c 52 36 2c 23  46 3a 84 52 43 53 20 52  | R6,R6,#F:.RCS R|
000122b0  33 2c 52 33 2c 23 34 0d  63 4c 05 5d 0d 63 56 09  |3,R3,#4.cL.].cV.|
000122c0  c9 20 22 54 22 0d 63 60  0a 5b 4f 50 54 20 5a 0d  |. "T".c`.[OPT Z.|
000122d0  63 6a 25 43 4d 50 20 52  34 2c 23 46 3a 4d 4f 56  |cj%CMP R4,#F:MOV|
000122e0  43 53 20 52 34 2c 23 30  3a 4d 4f 56 47 45 20 52  |CS R4,#0:MOVGE R|
000122f0  34 2c 23 46 0d 63 74 3c  52 53 42 20 52 33 2c 52  |4,#F.ct<RSB R3,R|
00012300  34 2c 52 34 2c 4c 53 4c  20 23 34 3a 41 44 44 20  |4,R4,LSL #4:ADD |
00012310  52 33 2c 52 33 2c 23 46  3e 3e 31 3a 4d 4f 56 20  |R3,R3,#F>>1:MOV |
00012320  52 33 2c 52 33 2c 4c 53  52 20 23 62 69 74 73 20  |R3,R3,LSR #bits |
00012330  0d 63 7e 1a 4c 44 52 20  52 32 2c 5b 52 37 2c 52  |.c~.LDR R2,[R7,R|
00012340  33 2c 4c 53 4c 20 23 32  5d 20 0d 63 88 11 53 55  |3,LSL #2] .c..SU|
00012350  42 20 52 34 2c 52 34 2c  52 32 20 0d 63 92 05 5d  |B R4,R4,R2 .c..]|
00012360  0d 63 9c 05 7f 0d 63 a6  0a 5b 4f 50 54 20 5a 0d  |.c....c..[OPT Z.|
00012370  63 b0 25 43 4d 50 20 52  34 2c 23 46 3a 4d 4f 56  |c.%CMP R4,#F:MOV|
00012380  43 53 20 52 34 2c 23 30  3a 4d 4f 56 47 45 20 52  |CS R4,#0:MOVGE R|
00012390  34 2c 23 46 0d 63 ba 3c  52 53 42 20 52 33 2c 52  |4,#F.c.<RSB R3,R|
000123a0  34 2c 52 34 2c 4c 53 4c  20 23 33 3a 41 44 44 20  |4,R4,LSL #3:ADD |
000123b0  52 33 2c 52 33 2c 23 46  3e 3e 31 3a 4d 4f 56 20  |R3,R3,#F>>1:MOV |
000123c0  52 33 2c 52 33 2c 4c 53  52 20 23 62 69 74 73 20  |R3,R3,LSR #bits |
000123d0  0d 63 c4 1a 4c 44 52 20  52 32 2c 5b 52 37 2c 52  |.c..LDR R2,[R7,R|
000123e0  33 2c 4c 53 4c 20 23 32  5d 20 0d 63 ce 11 53 55  |3,LSL #2] .c..SU|
000123f0  42 20 52 34 2c 52 34 2c  52 32 20 0d 63 d8 05 5d  |B R4,R4,R2 .c..]|
00012400  0d 63 e2 05 cb 0d 63 ec  0a 5b 4f 50 54 20 5a 0d  |.c....c..[OPT Z.|
00012410  63 f6 15 4d 4f 56 20 52  32 2c 52 31 32 2c 4c 53  |c..MOV R2,R12,LS|
00012420  52 20 23 31 0d 64 00 0e  54 53 54 20 52 31 32 2c  |R #1.d..TST R12,|
00012430  23 31 0d 64 0a 10 4c 44  52 42 20 52 30 2c 5b 52  |#1.d..LDRB R0,[R|
00012440  32 5d 0d 64 14 20 80 45  51 20 52 30 2c 52 30 2c  |2].d. .EQ R0,R0,|
00012450  23 26 46 30 3a 84 52 45  51 20 52 30 2c 52 30 2c  |#&F0:.REQ R0,R0,|
00012460  52 33 0d 64 1e 27 80 4e  45 20 52 30 2c 52 30 2c  |R3.d.'.NE R0,R0,|
00012470  23 26 30 46 3a 84 52 4e  45 20 52 30 2c 52 30 2c  |#&0F:.RNE R0,R0,|
00012480  52 33 2c 4c 53 4c 20 23  34 0d 64 28 10 53 54 52  |R3,LSL #4.d(.STR|
00012490  42 20 52 30 2c 5b 52 32  5d 0d 64 32 12 41 44 44  |B R0,[R2].d2.ADD|
000124a0  20 52 31 32 2c 52 31 32  2c 52 31 0d 64 3c 05 5d  | R12,R12,R1.d<.]|
000124b0  0d 64 46 15 e7 6d 24 3d  22 44 22 20 84 6d 24 3d  |.dF..m$="D" .m$=|
000124c0  22 52 22 20 8c 0d 64 50  0e e7 64 69 74 68 65 72  |"R" ..dP..dither|
000124d0  25 20 8c 0d 64 5a 0a 5b  4f 50 54 20 5a 0d 64 64  |% ..dZ.[OPT Z.dd|
000124e0  12 41 44 44 20 52 30 2c  52 31 31 2c 23 34 20 0d  |.ADD R0,R11,#4 .|
000124f0  64 6e 18 41 44 44 20 52  32 2c 52 34 2c 52 34 2c  |dn.ADD R2,R4,R4,|
00012500  4c 53 4c 20 23 31 20 0d  64 78 29 4c 44 52 20 52  |LSL #1 .dx)LDR R|
00012510  33 2c 5b 52 31 31 2c 2d  52 38 5d 3a 41 44 44 20  |3,[R11,-R8]:ADD |
00012520  52 33 2c 52 33 2c 52 32  2c 41 53 52 20 23 34 20  |R3,R3,R2,ASR #4 |
00012530  0d 64 82 14 53 54 52 20  52 33 2c 5b 52 31 31 2c  |.d..STR R3,[R11,|
00012540  2d 52 38 5d 0d 64 8c 18  41 44 44 20 52 32 2c 52  |-R8].d..ADD R2,R|
00012550  34 2c 52 34 2c 4c 53 4c  20 23 32 20 0d 64 96 25  |4,R4,LSL #2 .d.%|
00012560  4c 44 52 20 52 33 2c 5b  52 31 31 5d 3a 41 44 44  |LDR R3,[R11]:ADD|
00012570  20 52 33 2c 52 33 2c 52  32 2c 41 53 52 20 23 34  | R3,R3,R2,ASR #4|
00012580  20 0d 64 a0 10 53 54 52  20 52 33 2c 5b 52 31 31  | .d..STR R3,[R11|
00012590  5d 0d 64 aa 15 4d 4f 56  20 52 33 2c 52 34 2c 41  |].d..MOV R3,R4,A|
000125a0  53 52 20 23 34 20 0d 64  b4 15 53 54 52 20 52 33  |SR #4 .d..STR R3|
000125b0  2c 5b 52 31 31 2c 52 38  5d 21 20 0d 64 be 18 52  |,[R11,R8]! .d..R|
000125c0  53 42 20 52 32 2c 52 34  2c 52 34 2c 4c 53 4c 20  |SB R2,R4,R4,LSL |
000125d0  23 33 20 0d 64 c8 11 4c  44 52 20 52 34 2c 5b 52  |#3 .d..LDR R4,[R|
000125e0  31 30 5d 20 0d 64 d2 18  41 44 44 20 52 34 2c 52  |10] .d..ADD R4,R|
000125f0  34 2c 52 32 2c 41 53 52  20 23 34 20 0d 64 dc 18  |4,R2,ASR #4 .d..|
00012600  41 44 44 20 52 32 2c 52  35 2c 52 35 2c 4c 53 4c  |ADD R2,R5,R5,LSL|
00012610  20 23 31 20 0d 64 e6 28  4c 44 52 20 52 33 2c 5b  | #1 .d.(LDR R3,[|
00012620  52 30 2c 2d 52 38 5d 3a  41 44 44 20 52 33 2c 52  |R0,-R8]:ADD R3,R|
00012630  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 64 f0 13  |3,R2,ASR #4 .d..|
00012640  53 54 52 20 52 33 2c 5b  52 30 2c 2d 52 38 5d 0d  |STR R3,[R0,-R8].|
00012650  64 fa 15 4d 4f 56 20 52  33 2c 52 35 2c 41 53 52  |d..MOV R3,R5,ASR|
00012660  20 23 34 20 0d 65 04 13  53 54 52 20 52 33 2c 5b  | #4 .e..STR R3,[|
00012670  52 30 2c 52 38 5d 20 0d  65 0e 18 41 44 44 20 52  |R0,R8] .e..ADD R|
00012680  32 2c 52 35 2c 52 35 2c  4c 53 4c 20 23 32 20 0d  |2,R5,R5,LSL #2 .|
00012690  65 18 24 4c 44 52 20 52  33 2c 5b 52 30 5d 3a 41  |e.$LDR R3,[R0]:A|
000126a0  44 44 20 52 33 2c 52 33  2c 52 32 2c 41 53 52 20  |DD R3,R3,R2,ASR |
000126b0  23 34 20 0d 65 22 13 53  54 52 20 52 33 2c 5b 52  |#4 .e".STR R3,[R|
000126c0  30 5d 2c 23 34 20 0d 65  2c 18 52 53 42 20 52 32  |0],#4 .e,.RSB R2|
000126d0  2c 52 35 2c 52 35 2c 4c  53 4c 20 23 33 20 0d 65  |,R5,R5,LSL #3 .e|
000126e0  36 14 4c 44 52 20 52 35  2c 5b 52 31 30 2c 23 34  |6.LDR R5,[R10,#4|
000126f0  5d 20 0d 65 40 18 41 44  44 20 52 35 2c 52 35 2c  |] .e@.ADD R5,R5,|
00012700  52 32 2c 41 53 52 20 23  34 20 0d 65 4a 18 41 44  |R2,ASR #4 .eJ.AD|
00012710  44 20 52 32 2c 52 36 2c  52 36 2c 4c 53 4c 20 23  |D R2,R6,R6,LSL #|
00012720  31 20 0d 65 54 28 4c 44  52 20 52 33 2c 5b 52 30  |1 .eT(LDR R3,[R0|
00012730  2c 2d 52 38 5d 3a 41 44  44 20 52 33 2c 52 33 2c  |,-R8]:ADD R3,R3,|
00012740  52 32 2c 41 53 52 20 23  34 20 0d 65 5e 13 53 54  |R2,ASR #4 .e^.ST|
00012750  52 20 52 33 2c 5b 52 30  2c 2d 52 38 5d 0d 65 68  |R R3,[R0,-R8].eh|
00012760  18 41 44 44 20 52 32 2c  52 36 2c 52 36 2c 4c 53  |.ADD R2,R6,R6,LS|
00012770  4c 20 23 32 20 0d 65 72  24 4c 44 52 20 52 33 2c  |L #2 .er$LDR R3,|
00012780  5b 52 30 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |[R0]:ADD R3,R3,R|
00012790  32 2c 41 53 52 20 23 34  20 0d 65 7c 0f 53 54 52  |2,ASR #4 .e|.STR|
000127a0  20 52 33 2c 5b 52 30 5d  0d 65 86 15 4d 4f 56 20  | R3,[R0].e..MOV |
000127b0  52 33 2c 52 36 2c 41 53  52 20 23 34 20 0d 65 90  |R3,R6,ASR #4 .e.|
000127c0  13 53 54 52 20 52 33 2c  5b 52 30 2c 52 38 5d 20  |.STR R3,[R0,R8] |
000127d0  0d 65 9a 18 52 53 42 20  52 32 2c 52 36 2c 52 36  |.e..RSB R2,R6,R6|
000127e0  2c 4c 53 4c 20 23 33 20  0d 65 a4 14 4c 44 52 20  |,LSL #3 .e..LDR |
000127f0  52 36 2c 5b 52 31 30 2c  23 38 5d 20 0d 65 ae 18  |R6,[R10,#8] .e..|
00012800  41 44 44 20 52 36 2c 52  36 2c 52 32 2c 41 53 52  |ADD R6,R6,R2,ASR|
00012810  20 23 34 20 0d 65 b8 05  5d 0d 65 c2 05 cc 0d 65  | #4 .e..].e....e|
00012820  cc 0a 5b 4f 50 54 20 5a  0d 65 d6 18 4c 44 4d 49  |..[OPT Z.e..LDMI|
00012830  41 20 52 31 30 2c 7b 52  34 2c 52 35 2c 52 36 7d  |A R10,{R4,R5,R6}|
00012840  0d 65 e0 05 5d 0d 65 ea  05 cd 0d 65 f4 05 cc 0d  |.e..].e....e....|
00012850  65 fe 0e e7 64 69 74 68  65 72 25 20 8c 0d 66 08  |e...dither% ..f.|
00012860  0a 5b 4f 50 54 20 5a 0d  66 12 18 41 44 44 20 52  |.[OPT Z.f..ADD R|
00012870  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 31 20 0d  |2,R4,R4,LSL #1 .|
00012880  66 1c 29 4c 44 52 20 52  33 2c 5b 52 31 31 2c 2d  |f.)LDR R3,[R11,-|
00012890  52 38 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R8]:ADD R3,R3,R2|
000128a0  2c 41 53 52 20 23 34 20  0d 66 26 14 53 54 52 20  |,ASR #4 .f&.STR |
000128b0  52 33 2c 5b 52 31 31 2c  2d 52 38 5d 0d 66 30 18  |R3,[R11,-R8].f0.|
000128c0  41 44 44 20 52 32 2c 52  34 2c 52 34 2c 4c 53 4c  |ADD R2,R4,R4,LSL|
000128d0  20 23 32 20 0d 66 3a 25  4c 44 52 20 52 33 2c 5b  | #2 .f:%LDR R3,[|
000128e0  52 31 31 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |R11]:ADD R3,R3,R|
000128f0  32 2c 41 53 52 20 23 34  20 0d 66 44 10 53 54 52  |2,ASR #4 .fD.STR|
00012900  20 52 33 2c 5b 52 31 31  5d 0d 66 4e 15 4d 4f 56  | R3,[R11].fN.MOV|
00012910  20 52 33 2c 52 34 2c 41  53 52 20 23 34 20 0d 66  | R3,R4,ASR #4 .f|
00012920  58 15 53 54 52 20 52 33  2c 5b 52 31 31 2c 52 38  |X.STR R3,[R11,R8|
00012930  5d 21 20 0d 66 62 18 52  53 42 20 52 32 2c 52 34  |]! .fb.RSB R2,R4|
00012940  2c 52 34 2c 4c 53 4c 20  23 33 20 0d 66 6c 14 4c  |,R4,LSL #3 .fl.L|
00012950  44 52 20 52 34 2c 5b 52  31 30 5d 2c 52 38 20 0d  |DR R4,[R10],R8 .|
00012960  66 76 18 41 44 44 20 52  34 2c 52 34 2c 52 32 2c  |fv.ADD R4,R4,R2,|
00012970  41 53 52 20 23 34 20 0d  66 80 05 5d 0d 66 8a 05  |ASR #4 .f..].f..|
00012980  cc 0d 66 94 0a 5b 4f 50  54 20 5a 0d 66 9e 13 4c  |..f..[OPT Z.f..L|
00012990  44 52 20 52 34 2c 5b 52  31 30 5d 2c 52 38 0d 66  |DR R4,[R10],R8.f|
000129a0  a8 05 5d 0d 66 b2 05 cd  0d 66 bc 05 cd 0d 66 c6  |..].f....f....f.|
000129b0  0a 5b 4f 50 54 20 5a 0d  66 d0 1c 53 55 42 53 20  |.[OPT Z.f..SUBS |
000129c0  52 39 2c 52 39 2c 23 31  3a 42 4e 45 20 66 73 6c  |R9,R9,#1:BNE fsl|
000129d0  6f 6f 70 0d 66 da 14 4c  44 4d 46 44 20 53 50 20  |oop.f..LDMFD SP |
000129e0  21 2c 7b 50 43 7d 5e 0d  66 e4 05 5d 0d 66 ee 07  |!,{PC}^.f..].f..|
000129f0  c9 20 33 0d 66 f8 17 64  69 76 74 61 62 6c 65 3d  |. 3.f..divtable=|
00012a00  50 25 3a c8 8e 20 6d 24  20 ca 0d 67 02 09 c9 20  |P%:.. m$ ..g... |
00012a10  22 43 22 0d 67 0c 09 c9  20 22 52 22 0d 67 16 0f  |"C".g... "R".g..|
00012a20  e3 49 25 3d 30 b8 33 2a  34 88 34 0d 67 20 0a 5b  |.I%=0.3*4.4.g .[|
00012a30  4f 50 54 20 5a 0d 67 2a  26 45 51 55 44 20 28 70  |OPT Z.g*&EQUD (p|
00012a40  61 6c 65 74 74 65 25 21  49 25 3e 3e 34 80 26 46  |alette%!I%>>4.&F|
00012a50  29 2f 62 72 69 67 68 74  25 2a 46 0d 67 34 27 45  |)/bright%*F.g4'E|
00012a60  51 55 44 20 28 70 61 6c  65 74 74 65 25 21 49 25  |QUD (palette%!I%|
00012a70  3e 3e 31 32 80 26 46 29  2f 62 72 69 67 68 74 25  |>>12.&F)/bright%|
00012a80  2a 46 0d 67 3e 27 45 51  55 44 20 28 70 61 6c 65  |*F.g>'EQUD (pale|
00012a90  74 74 65 25 21 49 25 3e  3e 32 30 80 26 46 29 2f  |tte%!I%>>20.&F)/|
00012aa0  62 72 69 67 68 74 25 2a  46 0d 67 48 05 5d 0d 67  |bright%*F.gH.].g|
00012ab0  52 05 ed 0d 67 5c 05 7f  0d 67 66 0a 5b 4f 50 54  |R...g\...gf.[OPT|
00012ac0  20 5a 0d 67 70 0a 45 51  55 44 20 30 0d 67 7a 18  | Z.gp.EQUD 0.gz.|
00012ad0  45 51 55 44 20 31 2f 28  62 72 69 67 68 74 25 81  |EQUD 1/(bright%.|
00012ae0  34 29 2a 46 0d 67 84 18  45 51 55 44 20 32 2f 28  |4)*F.g..EQUD 2/(|
00012af0  62 72 69 67 68 74 25 81  34 29 2a 46 0d 67 8e 0a  |bright%.4)*F.g..|
00012b00  45 51 55 44 20 46 0d 67  98 05 5d 0d 67 a2 05 cb  |EQUD F.g..].g...|
00012b10  0d 67 ac 0a 5b 4f 50 54  20 5a 0d 67 b6 08 2e 66  |.g..[OPT Z.g...f|
00012b20  73 25 0d 67 c0 14 53 54  4d 46 44 20 53 50 20 21  |s%.g..STMFD SP !|
00012b30  2c 7b 52 31 34 7d 0d 67  ca 21 4c 44 52 20 52 31  |,{R14}.g.!LDR R1|
00012b40  2c 5b 52 39 2c 23 35 2a  38 5d 3a 4c 44 52 20 52  |,[R9,#5*8]:LDR R|
00012b50  31 2c 5b 52 31 5d 20 0d  67 d4 16 4c 44 52 20 52  |1,[R1] .g..LDR R|
00012b60  31 30 2c 5b 52 39 2c 23  34 2a 38 5d 20 0d 67 de  |10,[R9,#4*8] .g.|
00012b70  16 4c 44 52 20 52 31 31  2c 5b 52 39 2c 23 33 2a  |.LDR R11,[R9,#3*|
00012b80  38 5d 20 0d 67 e8 16 4c  44 52 20 52 31 32 2c 5b  |8] .g..LDR R12,[|
00012b90  52 39 2c 23 32 2a 38 5d  20 0d 67 f2 12 4c 44 52  |R9,#2*8] .g..LDR|
00012ba0  20 52 31 32 2c 5b 52 31  32 5d 20 0d 67 fc 13 4c  | R12,[R12] .g..L|
00012bb0  44 52 20 52 38 2c 5b 52  39 2c 23 38 5d 20 0d 68  |DR R8,[R9,#8] .h|
00012bc0  06 10 4c 44 52 20 52 38  2c 5b 52 38 5d 20 0d 68  |..LDR R8,[R8] .h|
00012bd0  10 10 4c 44 52 20 52 39  2c 5b 52 39 5d 20 0d 68  |..LDR R9,[R9] .h|
00012be0  1a 10 4c 44 52 20 52 39  2c 5b 52 39 5d 20 0d 68  |..LDR R9,[R9] .h|
00012bf0  24 05 5d 0d 68 2e 15 e7  6d 24 3d 22 43 22 20 84  |$.].h...m$="C" .|
00012c00  6d 24 3d 22 52 22 20 8c  0d 68 38 0a 5b 4f 50 54  |m$="R" ..h8.[OPT|
00012c10  20 5a 0d 68 42 11 4c 44  52 20 52 34 2c 5b 52 31  | Z.hB.LDR R4,[R1|
00012c20  30 5d 20 0d 68 4c 14 4c  44 52 20 52 35 2c 5b 52  |0] .hL.LDR R5,[R|
00012c30  31 30 2c 23 34 5d 20 0d  68 56 14 4c 44 52 20 52  |10,#4] .hV.LDR R|
00012c40  36 2c 5b 52 31 30 2c 23  38 5d 20 0d 68 60 05 5d  |6,[R10,#8] .h`.]|
00012c50  0d 68 6a 05 cc 0d 68 74  0a 5b 4f 50 54 20 5a 0d  |.hj...ht.[OPT Z.|
00012c60  68 7e 14 4c 44 52 20 52  34 2c 5b 52 31 30 5d 2c  |h~.LDR R4,[R10],|
00012c70  52 38 20 0d 68 88 05 5d  0d 68 92 05 cd 0d 68 9c  |R8 .h..].h....h.|
00012c80  0a 5b 4f 50 54 20 5a 0d  68 a6 0b 2e 66 73 6c 6f  |.[OPT Z.h...fslo|
00012c90  6f 70 0d 68 b0 05 5d 0d  68 ba 0d e7 6d 24 3c 3e  |op.h..].h...m$<>|
00012ca0  22 43 22 8c 0d 68 c4 0a  5b 4f 50 54 20 5a 0d 68  |"C"..h..[OPT Z.h|
00012cb0  ce 13 41 44 52 20 52 37  2c 64 69 76 74 61 62 6c  |..ADR R7,divtabl|
00012cc0  65 0d 68 d8 05 5d 0d 68  e2 05 cd 0d 68 ec 0b c8  |e.h..].h....h...|
00012cd0  8e 20 6d 24 20 ca 0d 68  f6 08 c9 22 43 22 0d 69  |. m$ ..h..."C".i|
00012ce0  00 0a 5b 4f 50 54 20 5a  0d 69 0a 13 41 44 44 20  |..[OPT Z.i..ADD |
00012cf0  52 31 30 2c 52 31 30 2c  52 38 20 0d 69 14 25 43  |R10,R10,R8 .i.%C|
00012d00  4d 50 20 52 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |MP R4,#F:MOVCS R|
00012d10  34 2c 23 30 3a 4d 4f 56  47 45 20 52 34 2c 23 46  |4,#0:MOVGE R4,#F|
00012d20  0d 69 1e 25 43 4d 50 20  52 35 2c 23 46 3a 4d 4f  |.i.%CMP R5,#F:MO|
00012d30  56 43 53 20 52 35 2c 23  30 3a 4d 4f 56 47 45 20  |VCS R5,#0:MOVGE |
00012d40  52 35 2c 23 46 0d 69 28  25 43 4d 50 20 52 36 2c  |R5,#F.i(%CMP R6,|
00012d50  23 46 3a 4d 4f 56 43 53  20 52 36 2c 23 30 3a 4d  |#F:MOVCS R6,#0:M|
00012d60  4f 56 47 45 20 52 36 2c  23 46 0d 69 32 0e 4d 4f  |OVGE R6,#F.i2.MO|
00012d70  56 20 52 33 2c 23 30 20  0d 69 3c 1e 43 4d 50 20  |V R3,#0 .i<.CMP |
00012d80  52 34 2c 23 46 3e 3e 31  3a 84 52 43 53 20 52 33  |R4,#F>>1:.RCS R3|
00012d90  2c 52 33 2c 23 31 0d 69  46 1e 43 4d 50 20 52 35  |,R3,#1.iF.CMP R5|
00012da0  2c 23 46 3e 3e 31 3a 84  52 43 53 20 52 33 2c 52  |,#F>>1:.RCS R3,R|
00012db0  33 2c 23 32 0d 69 50 1e  43 4d 50 20 52 36 2c 23  |3,#2.iP.CMP R6,#|
00012dc0  46 3e 3e 31 3a 84 52 43  53 20 52 33 2c 52 33 2c  |F>>1:.RCS R3,R3,|
00012dd0  23 34 0d 69 5a 22 43 4d  50 20 52 33 2c 23 36 3a  |#4.iZ"CMP R3,#6:|
00012de0  ec 51 20 52 33 2c 23 31  3a 42 45 51 20 6f 63 74  |.Q R3,#1:BEQ oct|
00012df0  63 79 61 6e 0d 69 64 10  42 43 53 20 6f 63 74 77  |cyan.id.BCS octw|
00012e00  68 69 74 65 0d 69 6e 19  43 4d 50 20 52 33 2c 23  |hite.in.CMP R3,#|
00012e10  34 3a 42 45 51 20 6f 63  74 62 6c 75 65 0d 69 78  |4:BEQ octblue.ix|
00012e20  1e 4d 4f 56 43 53 20 52  33 2c 23 32 3a 42 43 53  |.MOVCS R3,#2:BCS|
00012e30  20 6f 63 74 6d 61 67 65  6e 74 61 0d 69 82 1a 43  | octmagenta.i..C|
00012e40  4d 50 20 52 33 2c 23 32  3a 42 45 51 20 6f 63 74  |MP R3,#2:BEQ oct|
00012e50  67 72 65 65 6e 0d 69 8c  11 42 43 53 20 6f 63 74  |green.i..BCS oct|
00012e60  79 65 6c 6c 6f 77 0d 69  96 1a 43 4d 50 20 52 33  |yellow.i..CMP R3|
00012e70  2c 23 30 3a 42 45 51 20  6f 63 74 62 6c 61 63 6b  |,#0:BEQ octblack|
00012e80  0d 69 a0 0b 2e 6f 63 74  72 65 64 0d 69 aa 11 52  |.i...octred.i..R|
00012e90  53 42 20 52 30 2c 52 34  2c 23 46 20 0d 69 b4 0e  |SB R0,R4,#F .i..|
00012ea0  43 4d 50 20 52 35 2c 52  30 20 0d 69 be 0f 42 4c  |CMP R5,R0 .i..BL|
00012eb0  54 20 6f 63 74 72 65 64  31 0d 69 c8 0e 43 4d 50  |T octred1.i..CMP|
00012ec0  20 52 35 2c 52 36 20 0d  69 d2 10 4d 4f 56 47 45  | R5,R6 .i..MOVGE|
00012ed0  20 52 33 2c 23 33 20 0d  69 dc 10 4d 4f 56 4c 54  | R3,#3 .i..MOVLT|
00012ee0  20 52 33 2c 23 32 20 0d  69 e6 10 42 20 6f 63 74  | R3,#2 .i..B oct|
00012ef0  63 6f 6e 76 65 72 74 0d  69 f0 0c 2e 6f 63 74 72  |convert.i...octr|
00012f00  65 64 31 0d 69 fa 0e 43  4d 50 20 52 30 2c 52 36  |ed1.i..CMP R0,R6|
00012f10  20 0d 6a 04 10 4d 4f 56  47 45 20 52 33 2c 23 30  | .j..MOVGE R3,#0|
00012f20  20 0d 6a 0e 10 4d 4f 56  4c 54 20 52 33 2c 23 32  | .j..MOVLT R3,#2|
00012f30  20 0d 6a 18 10 42 20 6f  63 74 63 6f 6e 76 65 72  | .j..B octconver|
00012f40  74 0d 6a 22 0d 2e 6f 63  74 67 72 65 65 6e 0d 6a  |t.j"..octgreen.j|
00012f50  2c 11 52 53 42 20 52 30  2c 52 35 2c 23 46 20 0d  |,.RSB R0,R5,#F .|
00012f60  6a 36 0e 43 4d 50 20 52  30 2c 52 34 20 0d 6a 40  |j6.CMP R0,R4 .j@|
00012f70  11 42 4c 54 20 6f 63 74  67 72 65 65 6e 31 0d 6a  |.BLT octgreen1.j|
00012f80  4a 0e 43 4d 50 20 52 30  2c 52 36 20 0d 6a 54 10  |J.CMP R0,R6 .jT.|
00012f90  4d 4f 56 47 45 20 52 33  2c 23 30 20 0d 6a 5e 10  |MOVGE R3,#0 .j^.|
00012fa0  4d 4f 56 4c 54 20 52 33  2c 23 31 20 0d 6a 68 10  |MOVLT R3,#1 .jh.|
00012fb0  42 20 6f 63 74 63 6f 6e  76 65 72 74 0d 6a 72 0e  |B octconvert.jr.|
00012fc0  2e 6f 63 74 67 72 65 65  6e 31 0d 6a 7c 0e 43 4d  |.octgreen1.j|.CM|
00012fd0  50 20 52 34 2c 52 36 20  0d 6a 86 10 4d 4f 56 47  |P R4,R6 .j..MOVG|
00012fe0  45 20 52 33 2c 23 33 20  0d 6a 90 10 4d 4f 56 4c  |E R3,#3 .j..MOVL|
00012ff0  54 20 52 33 2c 23 31 20  0d 6a 9a 10 42 20 6f 63  |T R3,#1 .j..B oc|
00013000  74 63 6f 6e 76 65 72 74  0d 6a a4 0c 2e 6f 63 74  |tconvert.j...oct|
00013010  62 6c 75 65 0d 6a ae 11  52 53 42 20 52 30 2c 52  |blue.j..RSB R0,R|
00013020  36 2c 23 46 20 0d 6a b8  0e 43 4d 50 20 52 30 2c  |6,#F .j..CMP R0,|
00013030  52 34 20 0d 6a c2 10 42  4c 54 20 6f 63 74 62 6c  |R4 .j..BLT octbl|
00013040  75 65 31 0d 6a cc 0e 43  4d 50 20 52 30 2c 52 35  |ue1.j..CMP R0,R5|
00013050  20 0d 6a d6 10 4d 4f 56  47 45 20 52 33 2c 23 30  | .j..MOVGE R3,#0|
00013060  20 0d 6a e0 10 4d 4f 56  4c 54 20 52 33 2c 23 31  | .j..MOVLT R3,#1|
00013070  20 0d 6a ea 10 42 20 6f  63 74 63 6f 6e 76 65 72  | .j..B octconver|
00013080  74 0d 6a f4 0d 2e 6f 63  74 62 6c 75 65 31 0d 6a  |t.j...octblue1.j|
00013090  fe 0e 43 4d 50 20 52 34  2c 52 35 20 0d 6b 08 10  |..CMP R4,R5 .k..|
000130a0  4d 4f 56 47 45 20 52 33  2c 23 32 20 0d 6b 12 10  |MOVGE R3,#2 .k..|
000130b0  4d 4f 56 4c 54 20 52 33  2c 23 31 20 0d 6b 1c 10  |MOVLT R3,#1 .k..|
000130c0  42 20 6f 63 74 63 6f 6e  76 65 72 74 0d 6b 26 0d  |B octconvert.k&.|
000130d0  2e 6f 63 74 77 68 69 74  65 0d 6b 30 0e 43 4d 50  |.octwhite.k0.CMP|
000130e0  20 52 34 2c 52 35 20 0d  6b 3a 11 42 4c 54 20 6f  | R4,R5 .k:.BLT o|
000130f0  63 74 77 68 69 74 65 31  0d 6b 44 0e 43 4d 50 20  |ctwhite1.kD.CMP |
00013100  52 35 2c 52 36 20 0d 6b  4e 10 4d 4f 56 47 45 20  |R5,R6 .kN.MOVGE |
00013110  52 33 2c 23 33 20 0d 6b  58 10 4d 4f 56 4c 54 20  |R3,#3 .kX.MOVLT |
00013120  52 33 2c 23 32 20 0d 6b  62 10 42 20 6f 63 74 63  |R3,#2 .kb.B octc|
00013130  6f 6e 76 65 72 74 0d 6b  6c 0e 2e 6f 63 74 77 68  |onvert.kl..octwh|
00013140  69 74 65 31 0d 6b 76 0e  43 4d 50 20 52 34 2c 52  |ite1.kv.CMP R4,R|
00013150  36 20 0d 6b 80 10 4d 4f  56 47 45 20 52 33 2c 23  |6 .k..MOVGE R3,#|
00013160  33 20 0d 6b 8a 10 4d 4f  56 4c 54 20 52 33 2c 23  |3 .k..MOVLT R3,#|
00013170  31 20 0d 6b 94 0f 2e 6f  63 74 63 6f 6e 76 65 72  |1 .k...octconver|
00013180  74 0d 6b 9e 0e 43 4d 50  20 52 33 2c 23 31 20 0d  |t.k..CMP R3,#1 .|
00013190  6b a8 0c 2e 6f 63 74 63  79 61 6e 0d 6b b2 12 53  |k...octcyan.k..S|
000131a0  55 42 45 51 20 52 35 2c  52 35 2c 23 46 0d 6b bc  |UBEQ R5,R5,#F.k.|
000131b0  12 53 55 42 45 51 20 52  36 2c 52 36 2c 23 46 0d  |.SUBEQ R6,R6,#F.|
000131c0  6b c6 0f 2e 6f 63 74 6d  61 67 65 6e 74 61 0d 6b  |k...octmagenta.k|
000131d0  d0 0e 43 4d 50 20 52 33  2c 23 32 20 0d 6b da 12  |..CMP R3,#2 .k..|
000131e0  53 55 42 45 51 20 52 34  2c 52 34 2c 23 46 0d 6b  |SUBEQ R4,R4,#F.k|
000131f0  e4 12 53 55 42 45 51 20  52 36 2c 52 36 2c 23 46  |..SUBEQ R6,R6,#F|
00013200  0d 6b ee 0e 2e 6f 63 74  79 65 6c 6c 6f 77 0d 6b  |.k...octyellow.k|
00013210  f8 0e 43 4d 50 20 52 33  2c 23 33 20 0d 6c 02 12  |..CMP R3,#3 .l..|
00013220  53 55 42 45 51 20 52 34  2c 52 34 2c 23 46 0d 6c  |SUBEQ R4,R4,#F.l|
00013230  0c 12 53 55 42 45 51 20  52 35 2c 52 35 2c 23 46  |..SUBEQ R5,R5,#F|
00013240  0d 6c 16 0d 2e 6f 63 74  62 6c 61 63 6b 0d 6c 20  |.l...octblack.l |
00013250  15 4d 4f 56 20 52 32 2c  52 31 32 2c 4c 53 52 20  |.MOV R2,R12,LSR |
00013260  23 32 0d 6c 2a 20 80 20  52 37 2c 52 31 32 2c 23  |#2.l* . R7,R12,#|
00013270  33 3a 4d 4f 56 20 52 37  2c 52 37 2c 4c 53 4c 20  |3:MOV R7,R7,LSL |
00013280  23 31 0d 6c 34 0e 4d 4f  56 20 52 31 34 2c 23 33  |#1.l4.MOV R14,#3|
00013290  0d 6c 3e 45 4c 44 52 42  20 52 30 2c 5b 52 32 5d  |.l>ELDRB R0,[R2]|
000132a0  3a 42 49 43 20 52 30 2c  52 30 2c 52 31 34 2c 4c  |:BIC R0,R0,R14,L|
000132b0  53 4c 20 52 37 3a 84 52  20 52 30 2c 52 30 2c 52  |SL R7:.R R0,R0,R|
000132c0  33 2c 4c 53 4c 20 52 37  3a 53 54 52 42 20 52 30  |3,LSL R7:STRB R0|
000132d0  2c 5b 52 32 5d 0d 6c 48  12 41 44 44 20 52 31 32  |,[R2].lH.ADD R12|
000132e0  2c 52 31 32 2c 52 31 0d  6c 52 05 5d 0d 6c 5c 08  |,R12,R1.lR.].l\.|
000132f0  c9 22 52 22 0d 6c 66 0a  5b 4f 50 54 20 5a 0d 6c  |."R".lf.[OPT Z.l|
00013300  70 12 41 44 44 20 52 31  30 2c 52 31 30 2c 52 38  |p.ADD R10,R10,R8|
00013310  0d 6c 7a 25 43 4d 50 20  52 34 2c 23 46 3a 4d 4f  |.lz%CMP R4,#F:MO|
00013320  56 43 53 20 52 34 2c 23  30 3a 4d 4f 56 47 45 20  |VCS R4,#0:MOVGE |
00013330  52 34 2c 23 46 0d 6c 84  25 43 4d 50 20 52 35 2c  |R4,#F.l.%CMP R5,|
00013340  23 46 3a 4d 4f 56 43 53  20 52 35 2c 23 30 3a 4d  |#F:MOVCS R5,#0:M|
00013350  4f 56 47 45 20 52 35 2c  23 46 0d 6c 8e 25 43 4d  |OVGE R5,#F.l.%CM|
00013360  50 20 52 36 2c 23 46 3a  4d 4f 56 43 53 20 52 36  |P R6,#F:MOVCS R6|
00013370  2c 23 30 3a 4d 4f 56 47  45 20 52 36 2c 23 46 0d  |,#0:MOVGE R6,#F.|
00013380  6c 98 1a 53 54 4d 46 44  20 53 50 20 21 2c 7b 52  |l..STMFD SP !,{R|
00013390  38 2c 52 39 2c 52 31 30  7d 0d 6c a2 0d 4d 56 4e  |8,R9,R10}.l..MVN|
000133a0  20 52 32 2c 23 30 0d 6c  ac 0d 4d 4f 56 20 52 33  | R2,#0.l..MOV R3|
000133b0  2c 23 33 0d 6c b6 1e 2e  73 72 63 68 20 41 44 44  |,#3.l...srch ADD|
000133c0  20 52 31 34 2c 52 33 2c  52 33 2c 4c 53 4c 20 23  | R14,R3,R3,LSL #|
000133d0  31 0d 6c c0 19 41 44 44  20 52 31 34 2c 52 37 2c  |1.l..ADD R14,R7,|
000133e0  52 31 34 2c 4c 53 4c 20  23 32 0d 6c ca 19 4c 44  |R14,LSL #2.l..LD|
000133f0  4d 49 41 20 52 31 34 2c  7b 52 38 2c 52 39 2c 52  |MIA R14,{R8,R9,R|
00013400  31 30 7d 0d 6c d4 11 53  55 42 53 20 52 38 2c 52  |10}.l..SUBS R8,R|
00013410  34 2c 52 38 0d 6c de 12  52 53 42 4d 49 20 52 38  |4,R8.l..RSBMI R8|
00013420  2c 52 38 2c 23 30 0d 6c  e8 11 53 55 42 53 20 52  |,R8,#0.l..SUBS R|
00013430  39 2c 52 35 2c 52 39 0d  6c f2 12 52 53 42 4d 49  |9,R5,R9.l..RSBMI|
00013440  20 52 39 2c 52 39 2c 23  30 0d 6c fc 13 53 55 42  | R9,R9,#0.l..SUB|
00013450  53 20 52 31 30 2c 52 36  2c 52 31 30 0d 6d 06 14  |S R10,R6,R10.m..|
00013460  52 53 42 4d 49 20 52 31  30 2c 52 31 30 2c 23 30  |RSBMI R10,R10,#0|
00013470  0d 6d 10 1a 4d 4f 56 20  52 31 34 2c 52 38 2c 4c  |.m..MOV R14,R8,L|
00013480  53 52 20 23 62 69 74 73  2f 32 0d 6d 1a 12 4d 55  |SR #bits/2.m..MU|
00013490  4c 20 52 38 2c 52 31 34  2c 52 31 34 0d 6d 24 1a  |L R8,R14,R14.m$.|
000134a0  4d 4f 56 20 52 31 34 2c  52 39 2c 4c 53 52 20 23  |MOV R14,R9,LSR #|
000134b0  62 69 74 73 2f 32 0d 6d  2e 12 4d 55 4c 20 52 39  |bits/2.m..MUL R9|
000134c0  2c 52 31 34 2c 52 31 34  0d 6d 38 1b 4d 4f 56 20  |,R14,R14.m8.MOV |
000134d0  52 31 34 2c 52 31 30 2c  4c 53 52 20 23 62 69 74  |R14,R10,LSR #bit|
000134e0  73 2f 32 0d 6d 42 13 4d  55 4c 20 52 31 30 2c 52  |s/2.mB.MUL R10,R|
000134f0  31 34 2c 52 31 34 0d 6d  4c 17 41 44 44 20 52 39  |14,R14.mL.ADD R9|
00013500  2c 52 39 2c 52 39 2c 4c  53 4c 20 23 32 0d 6d 56  |,R9,R9,LSL #2.mV|
00013510  17 41 44 44 20 52 38 2c  52 38 2c 52 38 2c 4c 53  |.ADD R8,R8,R8,LS|
00013520  4c 20 23 31 0d 6d 60 18  41 44 44 20 52 31 34 2c  |L #1.m`.ADD R14,|
00013530  52 38 2c 52 39 2c 4c 53  4c 20 23 31 0d 6d 6a 13  |R8,R9,LSL #1.mj.|
00013540  41 44 44 20 52 31 34 2c  52 31 34 2c 52 31 30 0d  |ADD R14,R14,R10.|
00013550  6d 74 0e 43 4d 50 20 52  31 34 2c 52 32 0d 6d 7e  |mt.CMP R14,R2.m~|
00013560  10 4d 4f 56 43 43 20 52  32 2c 52 31 34 0d 6d 88  |.MOVCC R2,R14.m.|
00013570  0f 4d 4f 56 43 43 20 52  30 2c 52 33 0d 6d 92 11  |.MOVCC R0,R3.m..|
00013580  53 55 42 53 20 52 33 2c  52 33 2c 23 31 0d 6d 9c  |SUBS R3,R3,#1.m.|
00013590  0c 42 50 4c 20 73 72 63  68 0d 6d a6 1a 4c 44 4d  |.BPL srch.m..LDM|
000135a0  46 44 20 53 50 20 21 2c  7b 52 38 2c 52 39 2c 52  |FD SP !,{R8,R9,R|
000135b0  31 30 7d 0d 6d b0 2b 41  44 44 20 52 33 2c 52 30  |10}.m.+ADD R3,R0|
000135c0  2c 52 30 2c 4c 53 4c 20  23 31 3a 41 44 44 20 52  |,R0,LSL #1:ADD R|
000135d0  33 2c 52 37 2c 52 33 2c  4c 53 4c 20 23 32 0d 6d  |3,R7,R3,LSL #2.m|
000135e0  ba 1f 4c 44 52 20 52 32  2c 5b 52 33 5d 2c 23 34  |..LDR R2,[R3],#4|
000135f0  3a 53 55 42 20 52 34 2c  52 34 2c 52 32 0d 6d c4  |:SUB R4,R4,R2.m.|
00013600  2e 4c 44 4d 49 41 20 52  33 2c 7b 52 32 2c 52 33  |.LDMIA R3,{R2,R3|
00013610  7d 3a 53 55 42 20 52 35  2c 52 35 2c 52 32 3a 53  |}:SUB R5,R5,R2:S|
00013620  55 42 20 52 36 2c 52 36  2c 52 33 0d 6d ce 0d 4d  |UB R6,R6,R3.m..M|
00013630  4f 56 20 52 33 2c 52 30  0d 6d d8 15 4d 4f 56 20  |OV R3,R0.m..MOV |
00013640  52 32 2c 52 31 32 2c 4c  53 52 20 23 32 0d 6d e2  |R2,R12,LSR #2.m.|
00013650  20 80 20 52 37 2c 52 31  32 2c 23 33 3a 4d 4f 56  | . R7,R12,#3:MOV|
00013660  20 52 37 2c 52 37 2c 4c  53 4c 20 23 31 0d 6d ec  | R7,R7,LSL #1.m.|
00013670  0e 4d 4f 56 20 52 31 34  2c 23 33 0d 6d f6 45 4c  |.MOV R14,#3.m.EL|
00013680  44 52 42 20 52 30 2c 5b  52 32 5d 3a 42 49 43 20  |DRB R0,[R2]:BIC |
00013690  52 30 2c 52 30 2c 52 31  34 2c 4c 53 4c 20 52 37  |R0,R0,R14,LSL R7|
000136a0  3a 84 52 20 52 30 2c 52  30 2c 52 33 2c 4c 53 4c  |:.R R0,R0,R3,LSL|
000136b0  20 52 37 3a 53 54 52 42  20 52 30 2c 5b 52 32 5d  | R7:STRB R0,[R2]|
000136c0  0d 6e 00 12 41 44 44 20  52 31 32 2c 52 31 32 2c  |.n..ADD R12,R12,|
000136d0  52 31 0d 6e 0a 05 5d 0d  6e 14 05 7f 0d 6e 1e 0a  |R1.n..].n....n..|
000136e0  5b 4f 50 54 20 5a 0d 6e  28 25 43 4d 50 20 52 34  |[OPT Z.n(%CMP R4|
000136f0  2c 23 46 3a 4d 4f 56 43  53 20 52 34 2c 23 30 3a  |,#F:MOVCS R4,#0:|
00013700  4d 4f 56 47 45 20 52 34  2c 23 46 0d 6e 32 3b 52  |MOVGE R4,#F.n2;R|
00013710  53 42 20 52 33 2c 52 34  2c 52 34 2c 4c 53 4c 20  |SB R3,R4,R4,LSL |
00013720  23 32 3a 41 44 44 20 52  33 2c 52 33 2c 23 46 3e  |#2:ADD R3,R3,#F>|
00013730  3e 31 3a 4d 4f 56 20 52  33 2c 52 33 2c 4c 53 52  |>1:MOV R3,R3,LSR|
00013740  23 62 69 74 73 20 0d 6e  3c 1a 4c 44 52 20 52 32  |#bits .n<.LDR R2|
00013750  2c 5b 52 37 2c 52 33 2c  4c 53 4c 20 23 32 5d 20  |,[R7,R3,LSL #2] |
00013760  0d 6e 46 11 53 55 42 20  52 34 2c 52 34 2c 52 32  |.nF.SUB R4,R4,R2|
00013770  20 0d 6e 50 15 4d 4f 56  20 52 32 2c 52 31 32 2c  | .nP.MOV R2,R12,|
00013780  4c 53 52 20 23 32 0d 6e  5a 20 80 20 52 35 2c 52  |LSR #2.nZ . R5,R|
00013790  31 32 2c 23 33 3a 4d 4f  56 20 52 35 2c 52 35 2c  |12,#3:MOV R5,R5,|
000137a0  4c 53 4c 20 23 31 0d 6e  64 0d 4d 4f 56 20 52 36  |LSL #1.nd.MOV R6|
000137b0  2c 23 33 0d 6e 6e 44 4c  44 52 42 20 52 30 2c 5b  |,#3.nnDLDRB R0,[|
000137c0  52 32 5d 3a 42 49 43 20  52 30 2c 52 30 2c 52 36  |R2]:BIC R0,R0,R6|
000137d0  2c 4c 53 4c 20 52 35 3a  84 52 20 52 30 2c 52 30  |,LSL R5:.R R0,R0|
000137e0  2c 52 33 2c 4c 53 4c 20  52 35 3a 53 54 52 42 20  |,R3,LSL R5:STRB |
000137f0  52 30 2c 5b 52 32 5d 0d  6e 78 12 41 44 44 20 52  |R0,[R2].nx.ADD R|
00013800  31 32 2c 52 31 32 2c 52  31 0d 6e 82 05 5d 0d 6e  |12,R12,R1.n..].n|
00013810  8c 05 cb 0d 6e 96 15 e7  6d 24 3d 22 43 22 20 84  |....n...m$="C" .|
00013820  6d 24 3d 22 52 22 20 8c  0d 6e a0 0e e7 64 69 74  |m$="R" ..n...dit|
00013830  68 65 72 25 20 8c 0d 6e  aa 0a 5b 4f 50 54 20 5a  |her% ..n..[OPT Z|
00013840  0d 6e b4 12 41 44 44 20  52 30 2c 52 31 31 2c 23  |.n..ADD R0,R11,#|
00013850  34 20 0d 6e be 18 41 44  44 20 52 32 2c 52 34 2c  |4 .n..ADD R2,R4,|
00013860  52 34 2c 4c 53 4c 20 23  31 20 0d 6e c8 29 4c 44  |R4,LSL #1 .n.)LD|
00013870  52 20 52 33 2c 5b 52 31  31 2c 2d 52 38 5d 3a 41  |R R3,[R11,-R8]:A|
00013880  44 44 20 52 33 2c 52 33  2c 52 32 2c 41 53 52 20  |DD R3,R3,R2,ASR |
00013890  23 34 20 0d 6e d2 14 53  54 52 20 52 33 2c 5b 52  |#4 .n..STR R3,[R|
000138a0  31 31 2c 2d 52 38 5d 0d  6e dc 18 41 44 44 20 52  |11,-R8].n..ADD R|
000138b0  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 32 20 0d  |2,R4,R4,LSL #2 .|
000138c0  6e e6 25 4c 44 52 20 52  33 2c 5b 52 31 31 5d 3a  |n.%LDR R3,[R11]:|
000138d0  41 44 44 20 52 33 2c 52  33 2c 52 32 2c 41 53 52  |ADD R3,R3,R2,ASR|
000138e0  20 23 34 20 0d 6e f0 10  53 54 52 20 52 33 2c 5b  | #4 .n..STR R3,[|
000138f0  52 31 31 5d 0d 6e fa 15  4d 4f 56 20 52 33 2c 52  |R11].n..MOV R3,R|
00013900  34 2c 41 53 52 20 23 34  20 0d 6f 04 15 53 54 52  |4,ASR #4 .o..STR|
00013910  20 52 33 2c 5b 52 31 31  2c 52 38 5d 21 20 0d 6f  | R3,[R11,R8]! .o|
00013920  0e 18 52 53 42 20 52 32  2c 52 34 2c 52 34 2c 4c  |..RSB R2,R4,R4,L|
00013930  53 4c 20 23 33 20 0d 6f  18 11 4c 44 52 20 52 34  |SL #3 .o..LDR R4|
00013940  2c 5b 52 31 30 5d 20 0d  6f 22 18 41 44 44 20 52  |,[R10] .o".ADD R|
00013950  34 2c 52 34 2c 52 32 2c  41 53 52 20 23 34 20 0d  |4,R4,R2,ASR #4 .|
00013960  6f 2c 18 41 44 44 20 52  32 2c 52 35 2c 52 35 2c  |o,.ADD R2,R5,R5,|
00013970  4c 53 4c 20 23 31 20 0d  6f 36 28 4c 44 52 20 52  |LSL #1 .o6(LDR R|
00013980  33 2c 5b 52 30 2c 2d 52  38 5d 3a 41 44 44 20 52  |3,[R0,-R8]:ADD R|
00013990  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
000139a0  6f 40 13 53 54 52 20 52  33 2c 5b 52 30 2c 2d 52  |o@.STR R3,[R0,-R|
000139b0  38 5d 0d 6f 4a 15 4d 4f  56 20 52 33 2c 52 35 2c  |8].oJ.MOV R3,R5,|
000139c0  41 53 52 20 23 34 20 0d  6f 54 13 53 54 52 20 52  |ASR #4 .oT.STR R|
000139d0  33 2c 5b 52 30 2c 52 38  5d 20 0d 6f 5e 18 41 44  |3,[R0,R8] .o^.AD|
000139e0  44 20 52 32 2c 52 35 2c  52 35 2c 4c 53 4c 20 23  |D R2,R5,R5,LSL #|
000139f0  32 20 0d 6f 68 24 4c 44  52 20 52 33 2c 5b 52 30  |2 .oh$LDR R3,[R0|
00013a00  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00013a10  53 52 20 23 34 20 0d 6f  72 13 53 54 52 20 52 33  |SR #4 .or.STR R3|
00013a20  2c 5b 52 30 5d 2c 23 34  20 0d 6f 7c 18 52 53 42  |,[R0],#4 .o|.RSB|
00013a30  20 52 32 2c 52 35 2c 52  35 2c 4c 53 4c 20 23 33  | R2,R5,R5,LSL #3|
00013a40  20 0d 6f 86 14 4c 44 52  20 52 35 2c 5b 52 31 30  | .o..LDR R5,[R10|
00013a50  2c 23 34 5d 20 0d 6f 90  18 41 44 44 20 52 35 2c  |,#4] .o..ADD R5,|
00013a60  52 35 2c 52 32 2c 41 53  52 20 23 34 20 0d 6f 9a  |R5,R2,ASR #4 .o.|
00013a70  18 41 44 44 20 52 32 2c  52 36 2c 52 36 2c 4c 53  |.ADD R2,R6,R6,LS|
00013a80  4c 20 23 31 20 0d 6f a4  28 4c 44 52 20 52 33 2c  |L #1 .o.(LDR R3,|
00013a90  5b 52 30 2c 2d 52 38 5d  3a 41 44 44 20 52 33 2c  |[R0,-R8]:ADD R3,|
00013aa0  52 33 2c 52 32 2c 41 53  52 20 23 34 20 0d 6f ae  |R3,R2,ASR #4 .o.|
00013ab0  13 53 54 52 20 52 33 2c  5b 52 30 2c 2d 52 38 5d  |.STR R3,[R0,-R8]|
00013ac0  0d 6f b8 18 41 44 44 20  52 32 2c 52 36 2c 52 36  |.o..ADD R2,R6,R6|
00013ad0  2c 4c 53 4c 20 23 32 20  0d 6f c2 24 4c 44 52 20  |,LSL #2 .o.$LDR |
00013ae0  52 33 2c 5b 52 30 5d 3a  41 44 44 20 52 33 2c 52  |R3,[R0]:ADD R3,R|
00013af0  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 6f cc 0f  |3,R2,ASR #4 .o..|
00013b00  53 54 52 20 52 33 2c 5b  52 30 5d 0d 6f d6 15 4d  |STR R3,[R0].o..M|
00013b10  4f 56 20 52 33 2c 52 36  2c 41 53 52 20 23 34 20  |OV R3,R6,ASR #4 |
00013b20  0d 6f e0 13 53 54 52 20  52 33 2c 5b 52 30 2c 52  |.o..STR R3,[R0,R|
00013b30  38 5d 20 0d 6f ea 18 52  53 42 20 52 32 2c 52 36  |8] .o..RSB R2,R6|
00013b40  2c 52 36 2c 4c 53 4c 20  23 33 20 0d 6f f4 14 4c  |,R6,LSL #3 .o..L|
00013b50  44 52 20 52 36 2c 5b 52  31 30 2c 23 38 5d 20 0d  |DR R6,[R10,#8] .|
00013b60  6f fe 18 41 44 44 20 52  36 2c 52 36 2c 52 32 2c  |o..ADD R6,R6,R2,|
00013b70  41 53 52 20 23 34 20 0d  70 08 05 5d 0d 70 12 05  |ASR #4 .p..].p..|
00013b80  cc 0d 70 1c 0a 5b 4f 50  54 20 5a 0d 70 26 18 4c  |..p..[OPT Z.p&.L|
00013b90  44 4d 49 41 20 52 31 30  2c 7b 52 34 2c 52 35 2c  |DMIA R10,{R4,R5,|
00013ba0  52 36 7d 0d 70 30 05 5d  0d 70 3a 05 cd 0d 70 44  |R6}.p0.].p:...pD|
00013bb0  05 cc 0d 70 4e 0e e7 64  69 74 68 65 72 25 20 8c  |...pN..dither% .|
00013bc0  0d 70 58 0a 5b 4f 50 54  20 5a 0d 70 62 18 41 44  |.pX.[OPT Z.pb.AD|
00013bd0  44 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |D R2,R4,R4,LSL #|
00013be0  31 20 0d 70 6c 29 4c 44  52 20 52 33 2c 5b 52 31  |1 .pl)LDR R3,[R1|
00013bf0  31 2c 2d 52 38 5d 3a 41  44 44 20 52 33 2c 52 33  |1,-R8]:ADD R3,R3|
00013c00  2c 52 32 2c 41 53 52 20  23 34 20 0d 70 76 14 53  |,R2,ASR #4 .pv.S|
00013c10  54 52 20 52 33 2c 5b 52  31 31 2c 2d 52 38 5d 0d  |TR R3,[R11,-R8].|
00013c20  70 80 18 41 44 44 20 52  32 2c 52 34 2c 52 34 2c  |p..ADD R2,R4,R4,|
00013c30  4c 53 4c 20 23 32 20 0d  70 8a 25 4c 44 52 20 52  |LSL #2 .p.%LDR R|
00013c40  33 2c 5b 52 31 31 5d 3a  41 44 44 20 52 33 2c 52  |3,[R11]:ADD R3,R|
00013c50  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 70 94 10  |3,R2,ASR #4 .p..|
00013c60  53 54 52 20 52 33 2c 5b  52 31 31 5d 0d 70 9e 15  |STR R3,[R11].p..|
00013c70  4d 4f 56 20 52 33 2c 52  34 2c 41 53 52 20 23 34  |MOV R3,R4,ASR #4|
00013c80  20 0d 70 a8 15 53 54 52  20 52 33 2c 5b 52 31 31  | .p..STR R3,[R11|
00013c90  2c 52 38 5d 21 20 0d 70  b2 18 52 53 42 20 52 32  |,R8]! .p..RSB R2|
00013ca0  2c 52 34 2c 52 34 2c 4c  53 4c 20 23 33 20 0d 70  |,R4,R4,LSL #3 .p|
00013cb0  bc 14 4c 44 52 20 52 34  2c 5b 52 31 30 5d 2c 52  |..LDR R4,[R10],R|
00013cc0  38 20 0d 70 c6 18 41 44  44 20 52 34 2c 52 34 2c  |8 .p..ADD R4,R4,|
00013cd0  52 32 2c 41 53 52 20 23  34 20 0d 70 d0 05 5d 0d  |R2,ASR #4 .p..].|
00013ce0  70 da 05 cc 0d 70 e4 0a  5b 4f 50 54 20 5a 0d 70  |p....p..[OPT Z.p|
00013cf0  ee 13 4c 44 52 20 52 34  2c 5b 52 31 30 5d 2c 52  |..LDR R4,[R10],R|
00013d00  38 0d 70 f8 05 5d 0d 71  02 05 cd 0d 71 0c 05 cd  |8.p..].q....q...|
00013d10  0d 71 16 0a 5b 4f 50 54  20 5a 0d 71 20 1c 53 55  |.q..[OPT Z.q .SU|
00013d20  42 53 20 52 39 2c 52 39  2c 23 31 3a 42 4e 45 20  |BS R9,R9,#1:BNE |
00013d30  66 73 6c 6f 6f 70 0d 71  2a 14 4c 44 4d 46 44 20  |fsloop.q*.LDMFD |
00013d40  53 50 20 21 2c 7b 50 43  7d 5e 0d 71 34 05 5d 0d  |SP !,{PC}^.q4.].|
00013d50  71 3e 07 c9 20 31 0d 71  48 0b c8 8e 20 6d 24 20  |q>.. 1.qH... m$ |
00013d60  ca 0d 71 52 08 c9 22 43  22 0d 71 5c 0a 5b 4f 50  |..qR.."C".q\.[OP|
00013d70  54 20 5a 0d 71 66 14 2e  64 69 76 74 61 62 6c 65  |T Z.qf..divtable|
00013d80  20 45 51 55 44 20 30 0d  71 70 1e 45 51 55 44 20  | EQUD 0.qp.EQUD |
00013d90  28 31 2d 62 6c 61 63 6b  25 2f 32 35 36 2a 32 29  |(1-black%/256*2)|
00013da0  2f 31 36 2a 46 0d 71 7a  1e 45 51 55 44 20 28 32  |/16*F.qz.EQUD (2|
00013db0  2d 62 6c 61 63 6b 25 2f  32 35 36 2a 34 29 2f 31  |-black%/256*4)/1|
00013dc0  36 2a 46 0d 71 84 1e 45  51 55 44 20 28 33 2d 62  |6*F.q..EQUD (3-b|
00013dd0  6c 61 63 6b 25 2f 32 35  36 2a 35 29 2f 31 36 2a  |lack%/256*5)/16*|
00013de0  46 0d 71 8e 1e 45 51 55  44 20 28 34 2d 62 6c 61  |F.q..EQUD (4-bla|
00013df0  63 6b 25 2f 32 35 36 2a  36 29 2f 31 36 2a 46 0d  |ck%/256*6)/16*F.|
00013e00  71 98 1e 45 51 55 44 20  28 35 2d 62 6c 61 63 6b  |q..EQUD (5-black|
00013e10  25 2f 32 35 36 2a 37 29  2f 31 36 2a 46 0d 71 a2  |%/256*7)/16*F.q.|
00013e20  1e 45 51 55 44 20 28 36  2d 62 6c 61 63 6b 25 2f  |.EQUD (6-black%/|
00013e30  32 35 36 2a 38 29 2f 31  36 2a 46 0d 71 ac 1e 45  |256*8)/16*F.q..E|
00013e40  51 55 44 20 28 37 2d 62  6c 61 63 6b 25 2f 32 35  |QUD (7-black%/25|
00013e50  36 2a 38 29 2f 31 36 2a  46 0d 71 b6 1e 45 51 55  |6*8)/16*F.q..EQU|
00013e60  44 20 28 38 2d 62 6c 61  63 6b 25 2f 32 35 36 2a  |D (8-black%/256*|
00013e70  38 29 2f 31 36 2a 46 0d  71 c0 1e 45 51 55 44 20  |8)/16*F.q..EQUD |
00013e80  28 39 2d 62 6c 61 63 6b  25 2f 32 35 36 2a 38 29  |(9-black%/256*8)|
00013e90  2f 31 36 2a 46 0d 71 ca  1f 45 51 55 44 20 28 31  |/16*F.q..EQUD (1|
00013ea0  30 2d 62 6c 61 63 6b 25  2f 32 35 36 2a 38 29 2f  |0-black%/256*8)/|
00013eb0  31 36 2a 46 0d 71 d4 1f  45 51 55 44 20 28 31 31  |16*F.q..EQUD (11|
00013ec0  2d 62 6c 61 63 6b 25 2f  32 35 36 2a 37 29 2f 31  |-black%/256*7)/1|
00013ed0  36 2a 46 0d 71 de 1f 45  51 55 44 20 28 31 32 2d  |6*F.q..EQUD (12-|
00013ee0  62 6c 61 63 6b 25 2f 32  35 36 2a 36 29 2f 31 36  |black%/256*6)/16|
00013ef0  2a 46 0d 71 e8 1f 45 51  55 44 20 28 31 33 2d 62  |*F.q..EQUD (13-b|
00013f00  6c 61 63 6b 25 2f 32 35  36 2a 35 29 2f 31 36 2a  |lack%/256*5)/16*|
00013f10  46 0d 71 f2 1f 45 51 55  44 20 28 31 34 2d 62 6c  |F.q..EQUD (14-bl|
00013f20  61 63 6b 25 2f 32 35 36  2a 34 29 2f 31 36 2a 46  |ack%/256*4)/16*F|
00013f30  0d 71 fc 1f 45 51 55 44  20 28 31 35 2d 62 6c 61  |.q..EQUD (15-bla|
00013f40  63 6b 25 2f 32 35 36 2a  32 29 2f 31 36 2a 46 0d  |ck%/256*2)/16*F.|
00013f50  72 06 0a 45 51 55 44 20  46 0d 72 10 1f 2e 65 76  |r..EQUD F.r...ev|
00013f60  65 6e 72 6f 77 5f 67 61  72 64 20 44 43 44 20 65  |enrow_gard DCD e|
00013f70  76 65 6e 5f 67 61 72 64  0d 72 1a 1d 2e 6f 64 64  |ven_gard.r...odd|
00013f80  72 6f 77 5f 67 61 72 64  20 44 43 44 20 6f 64 64  |row_gard DCD odd|
00013f90  5f 67 61 72 64 0d 72 24  11 2e 72 6f 77 69 6e 63  |_gard.r$..rowinc|
00013fa0  20 44 43 44 20 30 0d 72  2e 08 2e 66 73 25 0d 72  | DCD 0.r...fs%.r|
00013fb0  38 14 53 54 4d 46 44 20  53 50 20 21 2c 7b 52 31  |8.STMFD SP !,{R1|
00013fc0  34 7d 0d 72 42 21 4c 44  52 20 52 31 2c 5b 52 39  |4}.rB!LDR R1,[R9|
00013fd0  2c 23 35 2a 38 5d 3a 4c  44 52 20 52 31 2c 5b 52  |,#5*8]:LDR R1,[R|
00013fe0  31 5d 20 0d 72 4c 16 4c  44 52 20 52 31 30 2c 5b  |1] .rL.LDR R10,[|
00013ff0  52 39 2c 23 34 2a 38 5d  20 0d 72 56 16 4c 44 52  |R9,#4*8] .rV.LDR|
00014000  20 52 31 31 2c 5b 52 39  2c 23 33 2a 38 5d 20 0d  | R11,[R9,#3*8] .|
00014010  72 60 16 4c 44 52 20 52  31 32 2c 5b 52 39 2c 23  |r`.LDR R12,[R9,#|
00014020  32 2a 38 5d 20 0d 72 6a  12 4c 44 52 20 52 31 32  |2*8] .rj.LDR R12|
00014030  2c 5b 52 31 32 5d 20 0d  72 74 13 4c 44 52 20 52  |,[R12] .rt.LDR R|
00014040  38 2c 5b 52 39 2c 23 38  5d 20 0d 72 7e 10 4c 44  |8,[R9,#8] .r~.LD|
00014050  52 20 52 38 2c 5b 52 38  5d 20 0d 72 88 10 4c 44  |R R8,[R8] .r..LD|
00014060  52 20 52 39 2c 5b 52 39  5d 20 0d 72 92 10 4c 44  |R R9,[R9] .r..LD|
00014070  52 20 52 39 2c 5b 52 39  5d 20 0d 72 9c 14 4c 44  |R R9,[R9] .r..LD|
00014080  52 20 52 34 2c 5b 52 31  30 5d 2c 52 38 20 0d 72  |R R4,[R10],R8 .r|
00014090  a6 0d 54 45 51 20 52 38  2c 23 30 0d 72 b0 19 4c  |..TEQ R8,#0.r..L|
000140a0  44 52 50 4c 20 52 36 2c  65 76 65 6e 72 6f 77 5f  |DRPL R6,evenrow_|
000140b0  67 61 72 64 0d 72 ba 18  4c 44 52 4d 49 20 52 36  |gard.r..LDRMI R6|
000140c0  2c 6f 64 64 72 6f 77 5f  67 61 72 64 0d 72 c4 14  |,oddrow_gard.r..|
000140d0  4d 4f 56 20 52 31 2c 52  31 2c 4c 53 4c 20 23 31  |MOV R1,R1,LSL #1|
000140e0  0d 72 ce 11 4c 44 52 20  52 37 2c 72 6f 77 69 6e  |.r..LDR R7,rowin|
000140f0  63 0d 72 d8 14 41 44 52  20 52 31 34 2c 64 69 76  |c.r..ADR R14,div|
00014100  74 61 62 6c 65 0d 72 e2  0b 2e 66 73 6c 6f 6f 70  |table.r...fsloop|
00014110  0d 72 ec 25 43 4d 50 20  52 34 2c 23 46 3a 4d 4f  |.r.%CMP R4,#F:MO|
00014120  56 43 53 20 52 34 2c 23  30 3a 4d 4f 56 47 45 20  |VCS R4,#0:MOVGE |
00014130  52 34 2c 23 46 0d 72 f6  14 41 44 44 20 52 35 2c  |R4,#F.r..ADD R5,|
00014140  52 34 2c 23 46 3e 3e 35  20 0d 73 00 1b 4d 4f 56  |R4,#F>>5 .s..MOV|
00014150  53 20 52 35 2c 52 35 2c  4c 53 52 20 23 62 69 74  |S R5,R5,LSR #bit|
00014160  73 2d 34 20 0d 73 0a 1c  4c 44 52 4e 45 20 52 30  |s-4 .s..LDRNE R0|
00014170  2c 5b 52 31 34 2c 52 35  2c 4c 53 4c 20 23 32 5d  |,[R14,R5,LSL #2]|
00014180  0d 73 14 13 53 55 42 4e  45 20 52 34 2c 52 34 2c  |.s..SUBNE R4,R4,|
00014190  52 30 20 0d 73 1e 05 5d  0d 73 28 0e e7 64 69 74  |R0 .s..].s(..dit|
000141a0  68 65 72 25 20 8c 0d 73  32 0a 5b 4f 50 54 20 5a  |her% ..s2.[OPT Z|
000141b0  0d 73 3c 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.s<.ADD R2,R4,R4|
000141c0  2c 4c 53 4c 20 23 31 20  0d 73 46 29 4c 44 52 20  |,LSL #1 .sF)LDR |
000141d0  52 33 2c 5b 52 31 31 2c  2d 52 38 5d 3a 41 44 44  |R3,[R11,-R8]:ADD|
000141e0  20 52 33 2c 52 33 2c 52  32 2c 41 53 52 20 23 34  | R3,R3,R2,ASR #4|
000141f0  20 0d 73 50 14 53 54 52  20 52 33 2c 5b 52 31 31  | .sP.STR R3,[R11|
00014200  2c 2d 52 38 5d 0d 73 5a  18 41 44 44 20 52 32 2c  |,-R8].sZ.ADD R2,|
00014210  52 34 2c 52 34 2c 4c 53  4c 20 23 32 20 0d 73 64  |R4,R4,LSL #2 .sd|
00014220  25 4c 44 52 20 52 33 2c  5b 52 31 31 5d 3a 41 44  |%LDR R3,[R11]:AD|
00014230  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
00014240  34 20 0d 73 6e 10 53 54  52 20 52 33 2c 5b 52 31  |4 .sn.STR R3,[R1|
00014250  31 5d 0d 73 78 15 4d 4f  56 20 52 33 2c 52 34 2c  |1].sx.MOV R3,R4,|
00014260  41 53 52 20 23 34 20 0d  73 82 15 53 54 52 20 52  |ASR #4 .s..STR R|
00014270  33 2c 5b 52 31 31 2c 52  38 5d 21 20 0d 73 8c 18  |3,[R11,R8]! .s..|
00014280  52 53 42 20 52 32 2c 52  34 2c 52 34 2c 4c 53 4c  |RSB R2,R4,R4,LSL|
00014290  20 23 33 20 0d 73 96 14  4c 44 52 20 52 34 2c 5b  | #3 .s..LDR R4,[|
000142a0  52 31 30 5d 2c 52 38 20  0d 73 a0 19 41 44 44 53  |R10],R8 .s..ADDS|
000142b0  20 52 34 2c 52 34 2c 52  32 2c 41 53 52 20 23 34  | R4,R4,R2,ASR #4|
000142c0  20 0d 73 aa 05 5d 0d 73  b4 05 cc 0d 73 be 0a 5b  | .s..].s....s..[|
000142d0  4f 50 54 20 5a 0d 73 c8  13 4c 44 52 20 52 34 2c  |OPT Z.s..LDR R4,|
000142e0  5b 52 31 30 5d 2c 52 38  0d 73 d2 05 5d 0d 73 dc  |[R10],R8.s..].s.|
000142f0  05 cd 0d 73 e6 0a 5b 4f  50 54 20 5a 0d 73 f0 25  |...s..[OPT Z.s.%|
00014300  43 4d 50 20 52 34 2c 23  46 3a 4d 4f 56 43 53 20  |CMP R4,#F:MOVCS |
00014310  52 34 2c 23 30 3a 4d 4f  56 47 45 20 52 34 2c 23  |R4,#0:MOVGE R4,#|
00014320  46 0d 73 fa 14 41 44 44  20 52 33 2c 52 34 2c 23  |F.s..ADD R3,R4,#|
00014330  46 3e 3e 35 20 0d 74 04  1b 4d 4f 56 53 20 52 33  |F>>5 .t..MOVS R3|
00014340  2c 52 33 2c 4c 53 52 20  23 62 69 74 73 2d 34 20  |,R3,LSR #bits-4 |
00014350  0d 74 0e 1c 4c 44 52 4e  45 20 52 30 2c 5b 52 31  |.t..LDRNE R0,[R1|
00014360  34 2c 52 33 2c 4c 53 4c  20 23 32 5d 0d 74 18 13  |4,R3,LSL #2].t..|
00014370  53 55 42 4e 45 20 52 34  2c 52 34 2c 52 30 20 0d  |SUBNE R4,R4,R0 .|
00014380  74 22 2d 84 52 20 52 35  2c 52 35 2c 52 33 2c 4c  |t"-.R R5,R5,R3,L|
00014390  53 4c 20 23 35 3a 4c 44  52 20 52 33 2c 5b 52 36  |SL #5:LDR R3,[R6|
000143a0  2c 52 35 2c 4c 53 4c 20  23 32 5d 20 0d 74 2c 46  |,R5,LSL #2] .t,F|
000143b0  4d 4f 56 20 52 32 2c 52  31 32 2c 4c 53 52 20 23  |MOV R2,R12,LSR #|
000143c0  31 3a 53 54 52 42 20 52  33 2c 5b 52 32 5d 2c 52  |1:STRB R3,[R2],R|
000143d0  37 3a 4d 4f 56 20 52 33  2c 52 33 2c 4c 53 52 20  |7:MOV R3,R3,LSR |
000143e0  23 38 3a 53 54 52 42 20  52 33 2c 5b 52 32 5d 2c  |#8:STRB R3,[R2],|
000143f0  52 37 0d 74 36 42 4d 4f  56 20 52 33 2c 52 33 2c  |R7.t6BMOV R3,R3,|
00014400  4c 53 52 20 23 38 3a 53  54 52 42 20 52 33 2c 5b  |LSR #8:STRB R3,[|
00014410  52 32 5d 2c 52 37 3a 4d  4f 56 20 52 33 2c 52 33  |R2],R7:MOV R3,R3|
00014420  2c 4c 53 52 20 23 38 3a  53 54 52 42 20 52 33 2c  |,LSR #8:STRB R3,|
00014430  5b 52 32 5d 0d 74 40 12  41 44 44 20 52 31 32 2c  |[R2].t@.ADD R12,|
00014440  52 31 32 2c 52 31 0d 74  4a 05 5d 0d 74 54 0e e7  |R12,R1.tJ.].tT..|
00014450  64 69 74 68 65 72 25 20  8c 0d 74 5e 0a 5b 4f 50  |dither% ..t^.[OP|
00014460  54 20 5a 0d 74 68 18 41  44 44 20 52 32 2c 52 34  |T Z.th.ADD R2,R4|
00014470  2c 52 34 2c 4c 53 4c 20  23 31 20 0d 74 72 29 4c  |,R4,LSL #1 .tr)L|
00014480  44 52 20 52 33 2c 5b 52  31 31 2c 2d 52 38 5d 3a  |DR R3,[R11,-R8]:|
00014490  41 44 44 20 52 33 2c 52  33 2c 52 32 2c 41 53 52  |ADD R3,R3,R2,ASR|
000144a0  20 23 34 20 0d 74 7c 14  53 54 52 20 52 33 2c 5b  | #4 .t|.STR R3,[|
000144b0  52 31 31 2c 2d 52 38 5d  0d 74 86 18 41 44 44 20  |R11,-R8].t..ADD |
000144c0  52 32 2c 52 34 2c 52 34  2c 4c 53 4c 20 23 32 20  |R2,R4,R4,LSL #2 |
000144d0  0d 74 90 25 4c 44 52 20  52 33 2c 5b 52 31 31 5d  |.t.%LDR R3,[R11]|
000144e0  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
000144f0  52 20 23 34 20 0d 74 9a  10 53 54 52 20 52 33 2c  |R #4 .t..STR R3,|
00014500  5b 52 31 31 5d 0d 74 a4  15 4d 4f 56 20 52 33 2c  |[R11].t..MOV R3,|
00014510  52 34 2c 41 53 52 20 23  34 20 0d 74 ae 15 53 54  |R4,ASR #4 .t..ST|
00014520  52 20 52 33 2c 5b 52 31  31 2c 52 38 5d 21 20 0d  |R R3,[R11,R8]! .|
00014530  74 b8 18 52 53 42 20 52  32 2c 52 34 2c 52 34 2c  |t..RSB R2,R4,R4,|
00014540  4c 53 4c 20 23 33 20 0d  74 c2 14 4c 44 52 20 52  |LSL #3 .t..LDR R|
00014550  34 2c 5b 52 31 30 5d 2c  52 38 20 0d 74 cc 18 41  |4,[R10],R8 .t..A|
00014560  44 44 20 52 34 2c 52 34  2c 52 32 2c 41 53 52 20  |DD R4,R4,R2,ASR |
00014570  23 34 20 0d 74 d6 05 5d  0d 74 e0 05 cc 0d 74 ea  |#4 .t..].t....t.|
00014580  0a 5b 4f 50 54 20 5a 0d  74 f4 13 4c 44 52 20 52  |.[OPT Z.t..LDR R|
00014590  34 2c 5b 52 31 30 5d 2c  52 38 0d 74 fe 05 5d 0d  |4,[R10],R8.t..].|
000145a0  75 08 05 cd 0d 75 12 0a  5b 4f 50 54 20 5a 0d 75  |u....u..[OPT Z.u|
000145b0  1c 1c 53 55 42 53 20 52  39 2c 52 39 2c 23 32 3a  |..SUBS R9,R9,#2:|
000145c0  42 4e 45 20 66 73 6c 6f  6f 70 0d 75 26 14 4c 44  |BNE fsloop.u&.LD|
000145d0  4d 46 44 20 53 50 20 21  2c 7b 50 43 7d 5e 0d 75  |MFD SP !,{PC}^.u|
000145e0  30 05 5d 0d 75 3a 08 c9  22 54 22 0d 75 44 0a 5b  |0.].u:.."T".uD.[|
000145f0  4f 50 54 20 5a 0d 75 4e  14 2e 64 69 76 74 61 62  |OPT Z.uN..divtab|
00014600  6c 65 20 45 51 55 44 20  30 0d 75 58 1d 45 51 55  |le EQUD 0.uX.EQU|
00014610  44 20 28 31 2d 62 6c 61  63 6b 25 2f 32 35 36 2a  |D (1-black%/256*|
00014620  32 29 2f 39 2a 46 0d 75  62 1d 45 51 55 44 20 28  |2)/9*F.ub.EQUD (|
00014630  32 2d 62 6c 61 63 6b 25  2f 32 35 36 2a 34 29 2f  |2-black%/256*4)/|
00014640  39 2a 46 0d 75 6c 1d 45  51 55 44 20 28 33 2d 62  |9*F.ul.EQUD (3-b|
00014650  6c 61 63 6b 25 2f 32 35  36 2a 35 29 2f 39 2a 46  |lack%/256*5)/9*F|
00014660  0d 75 76 1d 45 51 55 44  20 28 34 2d 62 6c 61 63  |.uv.EQUD (4-blac|
00014670  6b 25 2f 32 35 36 2a 36  29 2f 39 2a 46 0d 75 80  |k%/256*6)/9*F.u.|
00014680  1d 45 51 55 44 20 28 35  2d 62 6c 61 63 6b 25 2f  |.EQUD (5-black%/|
00014690  32 35 36 2a 36 29 2f 39  2a 46 0d 75 8a 1d 45 51  |256*6)/9*F.u..EQ|
000146a0  55 44 20 28 36 2d 62 6c  61 63 6b 25 2f 32 35 36  |UD (6-black%/256|
000146b0  2a 35 29 2f 39 2a 46 0d  75 94 1d 45 51 55 44 20  |*5)/9*F.u..EQUD |
000146c0  28 37 2d 62 6c 61 63 6b  25 2f 32 35 36 2a 34 29  |(7-black%/256*4)|
000146d0  2f 39 2a 46 0d 75 9e 1d  45 51 55 44 20 28 38 2d  |/9*F.u..EQUD (8-|
000146e0  62 6c 61 63 6b 25 2f 32  35 36 2a 32 29 2f 39 2a  |black%/256*2)/9*|
000146f0  46 0d 75 a8 0a 45 51 55  44 20 46 0d 75 b2 1f 2e  |F.u..EQUD F.u...|
00014700  65 76 65 6e 72 6f 77 5f  67 61 72 64 20 44 43 44  |evenrow_gard DCD|
00014710  20 65 76 65 6e 5f 67 61  72 64 0d 75 bc 1d 2e 6f  | even_gard.u...o|
00014720  64 64 72 6f 77 5f 67 61  72 64 20 44 43 44 20 6f  |ddrow_gard DCD o|
00014730  64 64 5f 67 61 72 64 0d  75 c6 11 2e 72 6f 77 69  |dd_gard.u...rowi|
00014740  6e 63 20 44 43 44 20 30  0d 75 d0 08 2e 66 73 25  |nc DCD 0.u...fs%|
00014750  0d 75 da 14 53 54 4d 46  44 20 53 50 20 21 2c 7b  |.u..STMFD SP !,{|
00014760  52 31 34 7d 0d 75 e4 21  4c 44 52 20 52 31 2c 5b  |R14}.u.!LDR R1,[|
00014770  52 39 2c 23 35 2a 38 5d  3a 4c 44 52 20 52 31 2c  |R9,#5*8]:LDR R1,|
00014780  5b 52 31 5d 20 0d 75 ee  16 4c 44 52 20 52 31 30  |[R1] .u..LDR R10|
00014790  2c 5b 52 39 2c 23 34 2a  38 5d 20 0d 75 f8 16 4c  |,[R9,#4*8] .u..L|
000147a0  44 52 20 52 31 31 2c 5b  52 39 2c 23 33 2a 38 5d  |DR R11,[R9,#3*8]|
000147b0  20 0d 76 02 16 4c 44 52  20 52 31 32 2c 5b 52 39  | .v..LDR R12,[R9|
000147c0  2c 23 32 2a 38 5d 20 0d  76 0c 12 4c 44 52 20 52  |,#2*8] .v..LDR R|
000147d0  31 32 2c 5b 52 31 32 5d  20 0d 76 16 13 4c 44 52  |12,[R12] .v..LDR|
000147e0  20 52 38 2c 5b 52 39 2c  23 38 5d 20 0d 76 20 10  | R8,[R9,#8] .v .|
000147f0  4c 44 52 20 52 38 2c 5b  52 38 5d 20 0d 76 2a 10  |LDR R8,[R8] .v*.|
00014800  4c 44 52 20 52 39 2c 5b  52 39 5d 20 0d 76 34 10  |LDR R9,[R9] .v4.|
00014810  4c 44 52 20 52 39 2c 5b  52 39 5d 20 0d 76 3e 14  |LDR R9,[R9] .v>.|
00014820  4c 44 52 20 52 34 2c 5b  52 31 30 5d 2c 52 38 20  |LDR R4,[R10],R8 |
00014830  0d 76 48 0d 54 45 51 20  52 38 2c 23 30 0d 76 52  |.vH.TEQ R8,#0.vR|
00014840  19 4c 44 52 50 4c 20 52  36 2c 65 76 65 6e 72 6f  |.LDRPL R6,evenro|
00014850  77 5f 67 61 72 64 0d 76  5c 18 4c 44 52 4d 49 20  |w_gard.v\.LDRMI |
00014860  52 36 2c 6f 64 64 72 6f  77 5f 67 61 72 64 0d 76  |R6,oddrow_gard.v|
00014870  66 14 4d 4f 56 20 52 31  2c 52 31 2c 4c 53 4c 20  |f.MOV R1,R1,LSL |
00014880  23 31 0d 76 70 11 4c 44  52 20 52 37 2c 72 6f 77  |#1.vp.LDR R7,row|
00014890  69 6e 63 0d 76 7a 14 41  44 52 20 52 31 34 2c 64  |inc.vz.ADR R14,d|
000148a0  69 76 74 61 62 6c 65 0d  76 84 0b 2e 66 73 6c 6f  |ivtable.v...fslo|
000148b0  6f 70 0d 76 8e 25 43 4d  50 20 52 34 2c 23 46 3a  |op.v.%CMP R4,#F:|
000148c0  4d 4f 56 43 53 20 52 34  2c 23 30 3a 4d 4f 56 47  |MOVCS R4,#0:MOVG|
000148d0  45 20 52 34 2c 23 46 0d  76 98 14 41 44 44 20 52  |E R4,#F.v..ADD R|
000148e0  35 2c 52 34 2c 23 46 3e  3e 34 20 0d 76 a2 18 41  |5,R4,#F>>4 .v..A|
000148f0  44 44 20 52 35 2c 52 35  2c 52 35 2c 4c 53 4c 20  |DD R5,R5,R5,LSL |
00014900  23 33 20 0d 76 ac 19 4d  4f 56 53 20 52 35 2c 52  |#3 .v..MOVS R5,R|
00014910  35 2c 4c 53 52 20 23 62  69 74 73 20 0d 76 b6 1c  |5,LSR #bits .v..|
00014920  4c 44 52 4e 45 20 52 30  2c 5b 52 31 34 2c 52 35  |LDRNE R0,[R14,R5|
00014930  2c 4c 53 4c 20 23 32 5d  0d 76 c0 13 53 55 42 4e  |,LSL #2].v..SUBN|
00014940  45 20 52 34 2c 52 34 2c  52 30 20 0d 76 ca 05 5d  |E R4,R4,R0 .v..]|
00014950  0d 76 d4 0e e7 64 69 74  68 65 72 25 20 8c 0d 76  |.v...dither% ..v|
00014960  de 0a 5b 4f 50 54 20 5a  0d 76 e8 18 41 44 44 20  |..[OPT Z.v..ADD |
00014970  52 32 2c 52 34 2c 52 34  2c 4c 53 4c 20 23 31 20  |R2,R4,R4,LSL #1 |
00014980  0d 76 f2 29 4c 44 52 20  52 33 2c 5b 52 31 31 2c  |.v.)LDR R3,[R11,|
00014990  2d 52 38 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |-R8]:ADD R3,R3,R|
000149a0  32 2c 41 53 52 20 23 34  20 0d 76 fc 14 53 54 52  |2,ASR #4 .v..STR|
000149b0  20 52 33 2c 5b 52 31 31  2c 2d 52 38 5d 0d 77 06  | R3,[R11,-R8].w.|
000149c0  18 41 44 44 20 52 32 2c  52 34 2c 52 34 2c 4c 53  |.ADD R2,R4,R4,LS|
000149d0  4c 20 23 32 20 0d 77 10  25 4c 44 52 20 52 33 2c  |L #2 .w.%LDR R3,|
000149e0  5b 52 31 31 5d 3a 41 44  44 20 52 33 2c 52 33 2c  |[R11]:ADD R3,R3,|
000149f0  52 32 2c 41 53 52 20 23  34 20 0d 77 1a 10 53 54  |R2,ASR #4 .w..ST|
00014a00  52 20 52 33 2c 5b 52 31  31 5d 0d 77 24 15 4d 4f  |R R3,[R11].w$.MO|
00014a10  56 20 52 33 2c 52 34 2c  41 53 52 20 23 34 20 0d  |V R3,R4,ASR #4 .|
00014a20  77 2e 15 53 54 52 20 52  33 2c 5b 52 31 31 2c 52  |w..STR R3,[R11,R|
00014a30  38 5d 21 20 0d 77 38 18  52 53 42 20 52 32 2c 52  |8]! .w8.RSB R2,R|
00014a40  34 2c 52 34 2c 4c 53 4c  20 23 33 20 0d 77 42 14  |4,R4,LSL #3 .wB.|
00014a50  4c 44 52 20 52 34 2c 5b  52 31 30 5d 2c 52 38 20  |LDR R4,[R10],R8 |
00014a60  0d 77 4c 19 41 44 44 53  20 52 34 2c 52 34 2c 52  |.wL.ADDS R4,R4,R|
00014a70  32 2c 41 53 52 20 23 34  20 0d 77 56 05 5d 0d 77  |2,ASR #4 .wV.].w|
00014a80  60 05 cc 0d 77 6a 0a 5b  4f 50 54 20 5a 0d 77 74  |`...wj.[OPT Z.wt|
00014a90  13 4c 44 52 20 52 34 2c  5b 52 31 30 5d 2c 52 38  |.LDR R4,[R10],R8|
00014aa0  0d 77 7e 05 5d 0d 77 88  05 cd 0d 77 92 0a 5b 4f  |.w~.].w....w..[O|
00014ab0  50 54 20 5a 0d 77 9c 25  43 4d 50 20 52 34 2c 23  |PT Z.w.%CMP R4,#|
00014ac0  46 3a 4d 4f 56 43 53 20  52 34 2c 23 30 3a 4d 4f  |F:MOVCS R4,#0:MO|
00014ad0  56 47 45 20 52 34 2c 23  46 0d 77 a6 14 41 44 44  |VGE R4,#F.w..ADD|
00014ae0  20 52 33 2c 52 34 2c 23  46 3e 3e 34 20 0d 77 b0  | R3,R4,#F>>4 .w.|
00014af0  18 41 44 44 20 52 33 2c  52 33 2c 52 33 2c 4c 53  |.ADD R3,R3,R3,LS|
00014b00  4c 20 23 33 20 0d 77 ba  19 4d 4f 56 53 20 52 33  |L #3 .w..MOVS R3|
00014b10  2c 52 33 2c 4c 53 52 20  23 62 69 74 73 20 0d 77  |,R3,LSR #bits .w|
00014b20  c4 1c 4c 44 52 4e 45 20  52 30 2c 5b 52 31 34 2c  |..LDRNE R0,[R14,|
00014b30  52 33 2c 4c 53 4c 20 23  32 5d 0d 77 ce 13 53 55  |R3,LSL #2].w..SU|
00014b40  42 4e 45 20 52 34 2c 52  34 2c 52 30 20 0d 77 d8  |BNE R4,R4,R0 .w.|
00014b50  2d 84 52 20 52 35 2c 52  35 2c 52 33 2c 4c 53 4c  |-.R R5,R5,R3,LSL|
00014b60  20 23 34 3a 4c 44 52 20  52 35 2c 5b 52 36 2c 52  | #4:LDR R5,[R6,R|
00014b70  35 2c 4c 53 4c 20 23 32  5d 20 0d 77 e2 15 4d 4f  |5,LSL #2] .w..MO|
00014b80  56 20 52 32 2c 52 31 32  2c 4c 53 52 20 23 31 0d  |V R2,R12,LSR #1.|
00014b90  77 ec 10 80 20 52 33 2c  52 35 2c 23 26 33 46 0d  |w... R3,R5,#&3F.|
00014ba0  77 f6 13 53 54 52 42 20  52 33 2c 5b 52 32 5d 2c  |w..STRB R3,[R2],|
00014bb0  52 37 0d 78 00 21 4d 4f  56 20 52 33 2c 52 35 2c  |R7.x.!MOV R3,R5,|
00014bc0  4c 53 52 20 23 36 3a 80  20 52 33 2c 52 33 2c 23  |LSR #6:. R3,R3,#|
00014bd0  26 33 46 0d 78 0a 13 53  54 52 42 20 52 33 2c 5b  |&3F.x..STRB R3,[|
00014be0  52 32 5d 2c 52 37 0d 78  14 22 4d 4f 56 20 52 33  |R2],R7.x."MOV R3|
00014bf0  2c 52 35 2c 4c 53 52 20  23 31 32 3a 53 54 52 42  |,R5,LSR #12:STRB|
00014c00  20 52 33 2c 5b 52 32 5d  0d 78 1e 12 41 44 44 20  | R3,[R2].x..ADD |
00014c10  52 31 32 2c 52 31 32 2c  52 31 0d 78 28 05 5d 0d  |R12,R12,R1.x(.].|
00014c20  78 32 0e e7 64 69 74 68  65 72 25 20 8c 0d 78 3c  |x2..dither% ..x<|
00014c30  0a 5b 4f 50 54 20 5a 0d  78 46 18 41 44 44 20 52  |.[OPT Z.xF.ADD R|
00014c40  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 31 20 0d  |2,R4,R4,LSL #1 .|
00014c50  78 50 29 4c 44 52 20 52  33 2c 5b 52 31 31 2c 2d  |xP)LDR R3,[R11,-|
00014c60  52 38 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R8]:ADD R3,R3,R2|
00014c70  2c 41 53 52 20 23 34 20  0d 78 5a 14 53 54 52 20  |,ASR #4 .xZ.STR |
00014c80  52 33 2c 5b 52 31 31 2c  2d 52 38 5d 0d 78 64 18  |R3,[R11,-R8].xd.|
00014c90  41 44 44 20 52 32 2c 52  34 2c 52 34 2c 4c 53 4c  |ADD R2,R4,R4,LSL|
00014ca0  20 23 32 20 0d 78 6e 25  4c 44 52 20 52 33 2c 5b  | #2 .xn%LDR R3,[|
00014cb0  52 31 31 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |R11]:ADD R3,R3,R|
00014cc0  32 2c 41 53 52 20 23 34  20 0d 78 78 10 53 54 52  |2,ASR #4 .xx.STR|
00014cd0  20 52 33 2c 5b 52 31 31  5d 0d 78 82 15 4d 4f 56  | R3,[R11].x..MOV|
00014ce0  20 52 33 2c 52 34 2c 41  53 52 20 23 34 20 0d 78  | R3,R4,ASR #4 .x|
00014cf0  8c 15 53 54 52 20 52 33  2c 5b 52 31 31 2c 52 38  |..STR R3,[R11,R8|
00014d00  5d 21 20 0d 78 96 18 52  53 42 20 52 32 2c 52 34  |]! .x..RSB R2,R4|
00014d10  2c 52 34 2c 4c 53 4c 20  23 33 20 0d 78 a0 14 4c  |,R4,LSL #3 .x..L|
00014d20  44 52 20 52 34 2c 5b 52  31 30 5d 2c 52 38 20 0d  |DR R4,[R10],R8 .|
00014d30  78 aa 18 41 44 44 20 52  34 2c 52 34 2c 52 32 2c  |x..ADD R4,R4,R2,|
00014d40  41 53 52 20 23 34 20 0d  78 b4 05 5d 0d 78 be 05  |ASR #4 .x..].x..|
00014d50  cc 0d 78 c8 0a 5b 4f 50  54 20 5a 0d 78 d2 13 4c  |..x..[OPT Z.x..L|
00014d60  44 52 20 52 34 2c 5b 52  31 30 5d 2c 52 38 0d 78  |DR R4,[R10],R8.x|
00014d70  dc 05 5d 0d 78 e6 05 cd  0d 78 f0 0a 5b 4f 50 54  |..].x....x..[OPT|
00014d80  20 5a 0d 78 fa 1c 53 55  42 53 20 52 39 2c 52 39  | Z.x..SUBS R9,R9|
00014d90  2c 23 32 3a 42 4e 45 20  66 73 6c 6f 6f 70 0d 79  |,#2:BNE fsloop.y|
00014da0  04 14 4c 44 4d 46 44 20  53 50 20 21 2c 7b 50 43  |..LDMFD SP !,{PC|
00014db0  7d 5e 0d 79 0e 05 5d 0d  79 18 08 c9 22 44 22 0d  |}^.y..].y..."D".|
00014dc0  79 22 0a 5b 4f 50 54 20  5a 0d 79 2c 14 2e 64 69  |y".[OPT Z.y,..di|
00014dd0  76 74 61 62 6c 65 20 45  51 55 44 20 30 0d 79 36  |vtable EQUD 0.y6|
00014de0  1d 45 51 55 44 20 28 31  2d 62 6c 61 63 6b 25 2f  |.EQUD (1-black%/|
00014df0  32 35 36 2a 32 29 2f 34  2a 46 0d 79 40 1d 45 51  |256*2)/4*F.y@.EQ|
00014e00  55 44 20 28 32 2d 62 6c  61 63 6b 25 2f 32 35 36  |UD (2-black%/256|
00014e10  2a 34 29 2f 34 2a 46 0d  79 4a 1d 45 51 55 44 20  |*4)/4*F.yJ.EQUD |
00014e20  28 33 2d 62 6c 61 63 6b  25 2f 32 35 36 2a 32 29  |(3-black%/256*2)|
00014e30  2f 34 2a 46 0d 79 54 0a  45 51 55 44 20 46 0d 79  |/4*F.yT.EQUD F.y|
00014e40  5e 1f 2e 65 76 65 6e 72  6f 77 5f 67 61 72 64 20  |^..evenrow_gard |
00014e50  44 43 44 20 65 76 65 6e  5f 67 61 72 64 0d 79 68  |DCD even_gard.yh|
00014e60  1d 2e 6f 64 64 72 6f 77  5f 67 61 72 64 20 44 43  |..oddrow_gard DC|
00014e70  44 20 6f 64 64 5f 67 61  72 64 0d 79 72 11 2e 72  |D odd_gard.yr..r|
00014e80  6f 77 69 6e 63 20 44 43  44 20 30 0d 79 7c 08 2e  |owinc DCD 0.y|..|
00014e90  66 73 25 0d 79 86 14 53  54 4d 46 44 20 53 50 20  |fs%.y..STMFD SP |
00014ea0  21 2c 7b 52 31 34 7d 0d  79 90 21 4c 44 52 20 52  |!,{R14}.y.!LDR R|
00014eb0  31 2c 5b 52 39 2c 23 35  2a 38 5d 3a 4c 44 52 20  |1,[R9,#5*8]:LDR |
00014ec0  52 31 2c 5b 52 31 5d 20  0d 79 9a 16 4c 44 52 20  |R1,[R1] .y..LDR |
00014ed0  52 31 30 2c 5b 52 39 2c  23 34 2a 38 5d 20 0d 79  |R10,[R9,#4*8] .y|
00014ee0  a4 16 4c 44 52 20 52 31  31 2c 5b 52 39 2c 23 33  |..LDR R11,[R9,#3|
00014ef0  2a 38 5d 20 0d 79 ae 16  4c 44 52 20 52 31 32 2c  |*8] .y..LDR R12,|
00014f00  5b 52 39 2c 23 32 2a 38  5d 20 0d 79 b8 12 4c 44  |[R9,#2*8] .y..LD|
00014f10  52 20 52 31 32 2c 5b 52  31 32 5d 20 0d 79 c2 13  |R R12,[R12] .y..|
00014f20  4c 44 52 20 52 38 2c 5b  52 39 2c 23 38 5d 20 0d  |LDR R8,[R9,#8] .|
00014f30  79 cc 10 4c 44 52 20 52  38 2c 5b 52 38 5d 20 0d  |y..LDR R8,[R8] .|
00014f40  79 d6 10 4c 44 52 20 52  39 2c 5b 52 39 5d 20 0d  |y..LDR R9,[R9] .|
00014f50  79 e0 10 4c 44 52 20 52  39 2c 5b 52 39 5d 20 0d  |y..LDR R9,[R9] .|
00014f60  79 ea 14 4c 44 52 20 52  34 2c 5b 52 31 30 5d 2c  |y..LDR R4,[R10],|
00014f70  52 38 20 0d 79 f4 0d 54  45 51 20 52 38 2c 23 30  |R8 .y..TEQ R8,#0|
00014f80  0d 79 fe 19 4c 44 52 50  4c 20 52 36 2c 65 76 65  |.y..LDRPL R6,eve|
00014f90  6e 72 6f 77 5f 67 61 72  64 0d 7a 08 18 4c 44 52  |nrow_gard.z..LDR|
00014fa0  4d 49 20 52 36 2c 6f 64  64 72 6f 77 5f 67 61 72  |MI R6,oddrow_gar|
00014fb0  64 0d 7a 12 14 4d 4f 56  20 52 31 2c 52 31 2c 4c  |d.z..MOV R1,R1,L|
00014fc0  53 4c 20 23 31 0d 7a 1c  11 4c 44 52 20 52 37 2c  |SL #1.z..LDR R7,|
00014fd0  72 6f 77 69 6e 63 0d 7a  26 14 41 44 52 20 52 31  |rowinc.z&.ADR R1|
00014fe0  34 2c 64 69 76 74 61 62  6c 65 0d 7a 30 0b 2e 66  |4,divtable.z0..f|
00014ff0  73 6c 6f 6f 70 0d 7a 3a  25 43 4d 50 20 52 34 2c  |sloop.z:%CMP R4,|
00015000  23 46 3a 4d 4f 56 43 53  20 52 34 2c 23 30 3a 4d  |#F:MOVCS R4,#0:M|
00015010  4f 56 47 45 20 52 34 2c  23 46 0d 7a 44 14 41 44  |OVGE R4,#F.zD.AD|
00015020  44 20 52 35 2c 52 34 2c  23 46 3e 3e 33 20 0d 7a  |D R5,R4,#F>>3 .z|
00015030  4e 1b 4d 4f 56 53 20 52  35 2c 52 35 2c 4c 53 52  |N.MOVS R5,R5,LSR|
00015040  20 23 62 69 74 73 2d 32  20 0d 7a 58 1c 4c 44 52  | #bits-2 .zX.LDR|
00015050  4e 45 20 52 30 2c 5b 52  31 34 2c 52 35 2c 4c 53  |NE R0,[R14,R5,LS|
00015060  4c 20 23 32 5d 0d 7a 62  13 53 55 42 4e 45 20 52  |L #2].zb.SUBNE R|
00015070  34 2c 52 34 2c 52 30 20  0d 7a 6c 05 5d 0d 7a 76  |4,R4,R0 .zl.].zv|
00015080  0e e7 64 69 74 68 65 72  25 20 8c 0d 7a 80 0a 5b  |..dither% ..z..[|
00015090  4f 50 54 20 5a 0d 7a 8a  18 41 44 44 20 52 32 2c  |OPT Z.z..ADD R2,|
000150a0  52 34 2c 52 34 2c 4c 53  4c 20 23 31 20 0d 7a 94  |R4,R4,LSL #1 .z.|
000150b0  29 4c 44 52 20 52 33 2c  5b 52 31 31 2c 2d 52 38  |)LDR R3,[R11,-R8|
000150c0  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
000150d0  53 52 20 23 34 20 0d 7a  9e 14 53 54 52 20 52 33  |SR #4 .z..STR R3|
000150e0  2c 5b 52 31 31 2c 2d 52  38 5d 0d 7a a8 18 41 44  |,[R11,-R8].z..AD|
000150f0  44 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |D R2,R4,R4,LSL #|
00015100  32 20 0d 7a b2 25 4c 44  52 20 52 33 2c 5b 52 31  |2 .z.%LDR R3,[R1|
00015110  31 5d 3a 41 44 44 20 52  33 2c 52 33 2c 52 32 2c  |1]:ADD R3,R3,R2,|
00015120  41 53 52 20 23 34 20 0d  7a bc 10 53 54 52 20 52  |ASR #4 .z..STR R|
00015130  33 2c 5b 52 31 31 5d 0d  7a c6 15 4d 4f 56 20 52  |3,[R11].z..MOV R|
00015140  33 2c 52 34 2c 41 53 52  20 23 34 20 0d 7a d0 15  |3,R4,ASR #4 .z..|
00015150  53 54 52 20 52 33 2c 5b  52 31 31 2c 52 38 5d 21  |STR R3,[R11,R8]!|
00015160  20 0d 7a da 18 52 53 42  20 52 32 2c 52 34 2c 52  | .z..RSB R2,R4,R|
00015170  34 2c 4c 53 4c 20 23 33  20 0d 7a e4 14 4c 44 52  |4,LSL #3 .z..LDR|
00015180  20 52 34 2c 5b 52 31 30  5d 2c 52 38 20 0d 7a ee  | R4,[R10],R8 .z.|
00015190  19 41 44 44 53 20 52 34  2c 52 34 2c 52 32 2c 41  |.ADDS R4,R4,R2,A|
000151a0  53 52 20 23 34 20 0d 7a  f8 05 5d 0d 7b 02 05 cc  |SR #4 .z..].{...|
000151b0  0d 7b 0c 0a 5b 4f 50 54  20 5a 0d 7b 16 13 4c 44  |.{..[OPT Z.{..LD|
000151c0  52 20 52 34 2c 5b 52 31  30 5d 2c 52 38 0d 7b 20  |R R4,[R10],R8.{ |
000151d0  05 5d 0d 7b 2a 05 cd 0d  7b 34 0a 5b 4f 50 54 20  |.].{*...{4.[OPT |
000151e0  5a 0d 7b 3e 25 43 4d 50  20 52 34 2c 23 46 3a 4d  |Z.{>%CMP R4,#F:M|
000151f0  4f 56 43 53 20 52 34 2c  23 30 3a 4d 4f 56 47 45  |OVCS R4,#0:MOVGE|
00015200  20 52 34 2c 23 46 0d 7b  48 14 41 44 44 20 52 33  | R4,#F.{H.ADD R3|
00015210  2c 52 34 2c 23 46 3e 3e  33 20 0d 7b 52 1b 4d 4f  |,R4,#F>>3 .{R.MO|
00015220  56 53 20 52 33 2c 52 33  2c 4c 53 52 20 23 62 69  |VS R3,R3,LSR #bi|
00015230  74 73 2d 32 20 0d 7b 5c  1c 4c 44 52 4e 45 20 52  |ts-2 .{\.LDRNE R|
00015240  30 2c 5b 52 31 34 2c 52  33 2c 4c 53 4c 20 23 32  |0,[R14,R3,LSL #2|
00015250  5d 0d 7b 66 13 53 55 42  4e 45 20 52 34 2c 52 34  |].{f.SUBNE R4,R4|
00015260  2c 52 30 20 0d 7b 70 27  84 52 20 52 35 2c 52 35  |,R0 .{p'.R R5,R5|
00015270  2c 52 33 2c 4c 53 4c 20  23 33 3a 4c 44 52 42 20  |,R3,LSL #3:LDRB |
00015280  52 35 2c 5b 52 36 2c 52  35 5d 20 0d 7b 7a 15 4d  |R5,[R6,R5] .{z.M|
00015290  4f 56 20 52 32 2c 52 31  32 2c 4c 53 52 20 23 32  |OV R2,R12,LSR #2|
000152a0  0d 7b 84 0e 54 53 54 20  52 31 32 2c 23 32 0d 7b  |.{..TST R12,#2.{|
000152b0  8e 1c 80 20 52 33 2c 52  35 2c 23 26 46 3a 4c 44  |... R3,R5,#&F:LD|
000152c0  52 42 20 52 30 2c 5b 52  32 5d 0d 7b 98 20 80 45  |RB R0,[R2].{. .E|
000152d0  51 20 52 30 2c 52 30 2c  23 26 46 30 3a 84 52 45  |Q R0,R0,#&F0:.RE|
000152e0  51 20 52 30 2c 52 30 2c  52 33 0d 7b a2 27 80 4e  |Q R0,R0,R3.{.'.N|
000152f0  45 20 52 30 2c 52 30 2c  23 26 30 46 3a 84 52 4e  |E R0,R0,#&0F:.RN|
00015300  45 20 52 30 2c 52 30 2c  52 33 2c 4c 53 4c 20 23  |E R0,R0,R3,LSL #|
00015310  34 0d 7b ac 13 53 54 52  42 20 52 30 2c 5b 52 32  |4.{..STRB R0,[R2|
00015320  5d 2c 52 37 0d 7b b6 21  4d 4f 56 20 52 33 2c 52  |],R7.{.!MOV R3,R|
00015330  35 2c 4c 53 52 20 23 34  3a 4c 44 52 42 20 52 30  |5,LSR #4:LDRB R0|
00015340  2c 5b 52 32 5d 0d 7b c0  20 80 45 51 20 52 30 2c  |,[R2].{. .EQ R0,|
00015350  52 30 2c 23 26 46 30 3a  84 52 45 51 20 52 30 2c  |R0,#&F0:.REQ R0,|
00015360  52 30 2c 52 33 0d 7b ca  27 80 4e 45 20 52 30 2c  |R0,R3.{.'.NE R0,|
00015370  52 30 2c 23 26 30 46 3a  84 52 4e 45 20 52 30 2c  |R0,#&0F:.RNE R0,|
00015380  52 30 2c 52 33 2c 4c 53  4c 20 23 34 0d 7b d4 10  |R0,R3,LSL #4.{..|
00015390  53 54 52 42 20 52 30 2c  5b 52 32 5d 0d 7b de 12  |STRB R0,[R2].{..|
000153a0  41 44 44 20 52 31 32 2c  52 31 32 2c 52 31 0d 7b  |ADD R12,R12,R1.{|
000153b0  e8 05 5d 0d 7b f2 0e e7  64 69 74 68 65 72 25 20  |..].{...dither% |
000153c0  8c 0d 7b fc 0a 5b 4f 50  54 20 5a 0d 7c 06 18 41  |..{..[OPT Z.|..A|
000153d0  44 44 20 52 32 2c 52 34  2c 52 34 2c 4c 53 4c 20  |DD R2,R4,R4,LSL |
000153e0  23 31 20 0d 7c 10 29 4c  44 52 20 52 33 2c 5b 52  |#1 .|.)LDR R3,[R|
000153f0  31 31 2c 2d 52 38 5d 3a  41 44 44 20 52 33 2c 52  |11,-R8]:ADD R3,R|
00015400  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 7c 1a 14  |3,R2,ASR #4 .|..|
00015410  53 54 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |STR R3,[R11,-R8]|
00015420  0d 7c 24 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.|$.ADD R2,R4,R4|
00015430  2c 4c 53 4c 20 23 32 20  0d 7c 2e 25 4c 44 52 20  |,LSL #2 .|.%LDR |
00015440  52 33 2c 5b 52 31 31 5d  3a 41 44 44 20 52 33 2c  |R3,[R11]:ADD R3,|
00015450  52 33 2c 52 32 2c 41 53  52 20 23 34 20 0d 7c 38  |R3,R2,ASR #4 .|8|
00015460  10 53 54 52 20 52 33 2c  5b 52 31 31 5d 0d 7c 42  |.STR R3,[R11].|B|
00015470  15 4d 4f 56 20 52 33 2c  52 34 2c 41 53 52 20 23  |.MOV R3,R4,ASR #|
00015480  34 20 0d 7c 4c 15 53 54  52 20 52 33 2c 5b 52 31  |4 .|L.STR R3,[R1|
00015490  31 2c 52 38 5d 21 20 0d  7c 56 18 52 53 42 20 52  |1,R8]! .|V.RSB R|
000154a0  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 33 20 0d  |2,R4,R4,LSL #3 .|
000154b0  7c 60 14 4c 44 52 20 52  34 2c 5b 52 31 30 5d 2c  ||`.LDR R4,[R10],|
000154c0  52 38 20 0d 7c 6a 18 41  44 44 20 52 34 2c 52 34  |R8 .|j.ADD R4,R4|
000154d0  2c 52 32 2c 41 53 52 20  23 34 20 0d 7c 74 05 5d  |,R2,ASR #4 .|t.]|
000154e0  0d 7c 7e 05 cc 0d 7c 88  0a 5b 4f 50 54 20 5a 0d  |.|~...|..[OPT Z.|
000154f0  7c 92 13 4c 44 52 20 52  34 2c 5b 52 31 30 5d 2c  ||..LDR R4,[R10],|
00015500  52 38 0d 7c 9c 05 5d 0d  7c a6 05 cd 0d 7c b0 0a  |R8.|..].|....|..|
00015510  5b 4f 50 54 20 5a 0d 7c  ba 1c 53 55 42 53 20 52  |[OPT Z.|..SUBS R|
00015520  39 2c 52 39 2c 23 32 3a  42 4e 45 20 66 73 6c 6f  |9,R9,#2:BNE fslo|
00015530  6f 70 0d 7c c4 14 4c 44  4d 46 44 20 53 50 20 21  |op.|..LDMFD SP !|
00015540  2c 7b 50 43 7d 5e 0d 7c  ce 05 5d 0d 7c d8 05 7f  |,{PC}^.|..].|...|
00015550  0d 7c e2 0a 5b 4f 50 54  20 5a 0d 7c ec 08 2e 66  |.|..[OPT Z.|...f|
00015560  73 25 0d 7c f6 14 53 54  4d 46 44 20 53 50 20 21  |s%.|..STMFD SP !|
00015570  2c 7b 52 31 34 7d 0d 7d  00 21 4c 44 52 20 52 31  |,{R14}.}.!LDR R1|
00015580  2c 5b 52 39 2c 23 35 2a  38 5d 3a 4c 44 52 20 52  |,[R9,#5*8]:LDR R|
00015590  31 2c 5b 52 31 5d 20 0d  7d 0a 16 4c 44 52 20 52  |1,[R1] .}..LDR R|
000155a0  31 30 2c 5b 52 39 2c 23  34 2a 38 5d 20 0d 7d 14  |10,[R9,#4*8] .}.|
000155b0  16 4c 44 52 20 52 31 31  2c 5b 52 39 2c 23 33 2a  |.LDR R11,[R9,#3*|
000155c0  38 5d 20 0d 7d 1e 16 4c  44 52 20 52 31 32 2c 5b  |8] .}..LDR R12,[|
000155d0  52 39 2c 23 32 2a 38 5d  20 0d 7d 28 12 4c 44 52  |R9,#2*8] .}(.LDR|
000155e0  20 52 31 32 2c 5b 52 31  32 5d 20 0d 7d 32 13 4c  | R12,[R12] .}2.L|
000155f0  44 52 20 52 38 2c 5b 52  39 2c 23 38 5d 20 0d 7d  |DR R8,[R9,#8] .}|
00015600  3c 10 4c 44 52 20 52 38  2c 5b 52 38 5d 20 0d 7d  |<.LDR R8,[R8] .}|
00015610  46 10 4c 44 52 20 52 39  2c 5b 52 39 5d 20 0d 7d  |F.LDR R9,[R9] .}|
00015620  50 10 4c 44 52 20 52 39  2c 5b 52 39 5d 20 0d 7d  |P.LDR R9,[R9] .}|
00015630  5a 14 4c 44 52 20 52 34  2c 5b 52 31 30 5d 2c 52  |Z.LDR R4,[R10],R|
00015640  38 20 0d 7d 64 0e 4d 4f  56 20 52 37 2c 23 31 20  |8 .}d.MOV R7,#1 |
00015650  0d 7d 6e 0b 2e 66 73 6c  6f 6f 70 0d 7d 78 25 43  |.}n..fsloop.}x%C|
00015660  4d 50 20 52 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |MP R4,#F:MOVCS R|
00015670  34 2c 23 30 3a 4d 4f 56  47 45 20 52 34 2c 23 46  |4,#0:MOVGE R4,#F|
00015680  0d 7d 82 05 5d 0d 7d 8c  0d e7 62 6c 61 63 6b 25  |.}..].}...black%|
00015690  20 8c 0d 7d 96 0a 5b 4f  50 54 20 5a 0d 7d a0 15  | ..}..[OPT Z.}..|
000156a0  4d 4f 56 20 52 32 2c 52  31 32 2c 4c 53 52 20 23  |MOV R2,R12,LSR #|
000156b0  33 0d 7d aa 19 80 20 52  35 2c 52 31 32 2c 23 37  |3.}... R5,R12,#7|
000156c0  3a 4d 4f 56 20 52 36 2c  23 31 0d 7d b4 1d 4c 44  |:MOV R6,#1.}..LD|
000156d0  52 42 20 52 30 2c 5b 52  32 2c 23 2d 28 78 25 2b  |RB R0,[R2,#-(x%+|
000156e0  37 3e 3e 33 29 5d 20 0d  7d be 11 53 55 42 20 52  |7>>3)] .}..SUB R|
000156f0  33 2c 52 34 2c 23 46 20  0d 7d c8 0d 43 4d 50 20  |3,R4,#F .}..CMP |
00015700  52 37 2c 23 30 0d 7d d2  22 41 44 44 4e 45 20 52  |R7,#0.}."ADDNE R|
00015710  34 2c 52 34 2c 23 62 6c  61 63 6b 25 3c 3c 28 62  |4,R4,#black%<<(b|
00015720  69 74 73 2d 38 29 20 0d  7d dc 22 41 44 44 45 51  |its-8) .}."ADDEQ|
00015730  20 52 33 2c 52 33 2c 23  62 6c 61 63 6b 25 3c 3c  | R3,R3,#black%<<|
00015740  28 62 69 74 73 2d 38 29  20 0d 7d e6 14 54 53 54  |(bits-8) .}..TST|
00015750  20 52 30 2c 52 36 2c 4c  53 4c 20 52 35 0d 7d f0  | R0,R6,LSL R5.}.|
00015760  22 41 44 44 4e 45 20 52  34 2c 52 34 2c 23 62 6c  |"ADDNE R4,R4,#bl|
00015770  61 63 6b 25 3c 3c 28 62  69 74 73 2d 38 29 20 0d  |ack%<<(bits-8) .|
00015780  7d fa 22 41 44 44 45 51  20 52 33 2c 52 33 2c 23  |}."ADDEQ R3,R3,#|
00015790  62 6c 61 63 6b 25 3c 3c  28 62 69 74 73 2d 38 29  |black%<<(bits-8)|
000157a0  20 0d 7e 04 1e 4d 4f 56  53 20 52 30 2c 52 33 3a  | .~..MOVS R0,R3:|
000157b0  52 53 42 4d 49 20 52 30  2c 52 33 2c 23 30 20 0d  |RSBMI R0,R3,#0 .|
000157c0  7e 0e 0e 43 4d 50 20 52  34 2c 52 30 20 0d 7e 18  |~..CMP R4,R0 .~.|
000157d0  10 4d 4f 56 43 43 20 52  33 2c 23 30 20 0d 7e 22  |.MOVCC R3,#0 .~"|
000157e0  1c 4d 4f 56 43 53 20 52  34 2c 52 33 3a 4d 4f 56  |.MOVCS R4,R3:MOV|
000157f0  43 53 20 52 33 2c 23 31  20 0d 7e 2c 0e 4d 4f 56  |CS R3,#1 .~,.MOV|
00015800  20 52 37 2c 52 33 20 0d  7e 36 05 5d 0d 7e 40 05  | R7,R3 .~6.].~@.|
00015810  cc 0d 7e 4a 0a 5b 4f 50  54 20 5a 0d 7e 54 28 41  |..~J.[OPT Z.~T(A|
00015820  44 44 20 52 33 2c 52 34  2c 23 46 3e 3e 31 3a 4d  |DD R3,R4,#F>>1:M|
00015830  4f 56 20 52 33 2c 52 33  2c 4c 53 52 20 23 62 69  |OV R3,R3,LSR #bi|
00015840  74 73 20 0d 7e 5e 1a 53  55 42 20 52 34 2c 52 34  |ts .~^.SUB R4,R4|
00015850  2c 52 33 2c 4c 53 4c 20  23 62 69 74 73 0d 7e 68  |,R3,LSL #bits.~h|
00015860  15 4d 4f 56 20 52 32 2c  52 31 32 2c 4c 53 52 20  |.MOV R2,R12,LSR |
00015870  23 33 0d 7e 72 19 80 20  52 35 2c 52 31 32 2c 23  |#3.~r.. R5,R12,#|
00015880  37 3a 4d 4f 56 20 52 36  2c 23 31 0d 7e 7c 05 5d  |7:MOV R6,#1.~|.]|
00015890  0d 7e 86 05 cd 0d 7e 90  0a 5b 4f 50 54 20 5a 0d  |.~....~..[OPT Z.|
000158a0  7e 9a 37 4c 44 52 42 20  52 30 2c 5b 52 32 5d 3a  |~.7LDRB R0,[R2]:|
000158b0  42 49 43 20 52 30 2c 52  30 2c 52 36 2c 4c 53 4c  |BIC R0,R0,R6,LSL|
000158c0  20 52 35 3a 84 52 20 52  30 2c 52 30 2c 52 33 2c  | R5:.R R0,R0,R3,|
000158d0  4c 53 4c 20 52 35 0d 7e  a4 10 53 54 52 42 20 52  |LSL R5.~..STRB R|
000158e0  30 2c 5b 52 32 5d 0d 7e  ae 12 41 44 44 20 52 31  |0,[R2].~..ADD R1|
000158f0  32 2c 52 31 32 2c 52 31  0d 7e b8 05 5d 0d 7e c2  |2,R12,R1.~..].~.|
00015900  0e e7 64 69 74 68 65 72  25 20 8c 0d 7e cc 0a 5b  |..dither% ..~..[|
00015910  4f 50 54 20 5a 0d 7e d6  18 41 44 44 20 52 32 2c  |OPT Z.~..ADD R2,|
00015920  52 34 2c 52 34 2c 4c 53  4c 20 23 31 20 0d 7e e0  |R4,R4,LSL #1 .~.|
00015930  29 4c 44 52 20 52 33 2c  5b 52 31 31 2c 2d 52 38  |)LDR R3,[R11,-R8|
00015940  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00015950  53 52 20 23 34 20 0d 7e  ea 14 53 54 52 20 52 33  |SR #4 .~..STR R3|
00015960  2c 5b 52 31 31 2c 2d 52  38 5d 0d 7e f4 18 41 44  |,[R11,-R8].~..AD|
00015970  44 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |D R2,R4,R4,LSL #|
00015980  32 20 0d 7e fe 25 4c 44  52 20 52 33 2c 5b 52 31  |2 .~.%LDR R3,[R1|
00015990  31 5d 3a 41 44 44 20 52  33 2c 52 33 2c 52 32 2c  |1]:ADD R3,R3,R2,|
000159a0  41 53 52 20 23 34 20 0d  7f 08 10 53 54 52 20 52  |ASR #4 ....STR R|
000159b0  33 2c 5b 52 31 31 5d 0d  7f 12 15 4d 4f 56 20 52  |3,[R11]....MOV R|
000159c0  33 2c 52 34 2c 41 53 52  20 23 34 20 0d 7f 1c 15  |3,R4,ASR #4 ....|
000159d0  53 54 52 20 52 33 2c 5b  52 31 31 2c 52 38 5d 21  |STR R3,[R11,R8]!|
000159e0  20 0d 7f 26 18 52 53 42  20 52 32 2c 52 34 2c 52  | ..&.RSB R2,R4,R|
000159f0  34 2c 4c 53 4c 20 23 33  20 0d 7f 30 14 4c 44 52  |4,LSL #3 ..0.LDR|
00015a00  20 52 34 2c 5b 52 31 30  5d 2c 52 38 20 0d 7f 3a  | R4,[R10],R8 ..:|
00015a10  18 41 44 44 20 52 34 2c  52 34 2c 52 32 2c 41 53  |.ADD R4,R4,R2,AS|
00015a20  52 20 23 34 20 0d 7f 44  05 5d 0d 7f 4e 05 cc 0d  |R #4 ..D.]..N...|
00015a30  7f 58 0a 5b 4f 50 54 20  5a 0d 7f 62 13 4c 44 52  |.X.[OPT Z..b.LDR|
00015a40  20 52 34 2c 5b 52 31 30  5d 2c 52 38 0d 7f 6c 05  | R4,[R10],R8..l.|
00015a50  5d 0d 7f 76 05 cd 0d 7f  80 0a 5b 4f 50 54 20 5a  |]..v......[OPT Z|
00015a60  0d 7f 8a 1c 53 55 42 53  20 52 39 2c 52 39 2c 23  |....SUBS R9,R9,#|
00015a70  31 3a 42 4e 45 20 66 73  6c 6f 6f 70 0d 7f 94 14  |1:BNE fsloop....|
00015a80  4c 44 4d 46 44 20 53 50  20 21 2c 7b 50 43 7d 5e  |LDMFD SP !,{PC}^|
00015a90  0d 7f 9e 05 5d 0d 7f a8  05 cb 0d 7f b2 05 cb 0d  |....]...........|
00015aa0  7f bc 0a 5b 4f 50 54 20  5a 0d 7f c6 12 2e 73 78  |...[OPT Z.....sx|
00015ab0  6c 6f 63 20 44 43 44 20  73 78 25 0d 7f d0 05 5d  |loc DCD sx%....]|
00015ac0  0d 7f da 0c c8 8e 20 63  6f 6c 20 ca 0d 7f e4 07  |...... col .....|
00015ad0  c9 20 30 0d 7f ee 0f e7  69 6e 70 75 74 3c 3d 38  |. 0.....input<=8|
00015ae0  20 8c 0d 7f f8 0a 5b 4f  50 54 20 5a 0d 80 02 0d  | .....[OPT Z....|
00015af0  2e 6d 61 70 70 69 78 25  20 0d 80 0c 11 4c 44 52  |.mappix% ....LDR|
00015b00  20 52 30 2c 73 78 6c 6f  63 20 0d 80 16 1c 4c 44  | R0,sxloc ....LD|
00015b10  52 20 52 31 2c 5b 52 39  5d 3a 4c 44 52 20 52 31  |R R1,[R9]:LDR R1|
00015b20  2c 5b 52 31 5d 20 0d 80  20 15 4c 44 52 20 52 32  |,[R1] .. .LDR R2|
00015b30  2c 5b 52 39 2c 23 33 2a  38 5d 20 0d 80 2a 15 4c  |,[R9,#3*8] ..*.L|
00015b40  44 52 20 52 35 2c 5b 52  39 2c 23 34 2a 38 5d 20  |DR R5,[R9,#4*8] |
00015b50  0d 80 34 0d 4d 4f 56 20  52 38 2c 23 30 0d 80 3e  |..4.MOV R8,#0..>|
00015b60  0d 2e 6d 61 70 70 69 78  6c 70 0d 80 48 18 4c 44  |..mappixlp..H.LD|
00015b70  52 42 20 52 36 2c 5b 52  31 5d 2c 23 73 74 65 70  |RB R6,[R1],#step|
00015b80  32 34 0d 80 52 05 5d 0d  80 5c 05 cd 0d 80 66 0e  |24..R.]..\....f.|
00015b90  c8 8e 20 69 6e 70 75 74  20 ca 0d 80 70 07 c9 20  |.. input ...p.. |
00015ba0  38 0d 80 7a 0a e7 68 61  6d 20 8c 0d 80 84 0a 5b  |8..z..ham .....[|
00015bb0  4f 50 54 20 5a 0d 80 8e  11 41 44 52 20 52 39 2c  |OPT Z....ADR R9,|
00015bc0  6c 74 61 62 6c 65 0d 80  98 21 4d 4f 56 53 20 52  |ltable...!MOVS R|
00015bd0  37 2c 52 36 2c 4c 53 52  20 23 34 3a 80 20 52 36  |7,R6,LSR #4:. R6|
00015be0  2c 52 36 2c 23 31 35 0d  80 a2 32 4c 44 52 45 51  |,R6,#15...2LDREQ|
00015bf0  20 52 31 30 2c 5b 52 32  2c 52 36 2c 4c 53 4c 20  | R10,[R2,R6,LSL |
00015c00  23 32 5d 3a ec 51 20 52  31 31 2c 52 31 30 3a ec  |#2]:.Q R11,R10:.|
00015c10  51 20 52 31 32 2c 52 31  30 0d 80 ac 26 43 4d 50  |Q R12,R10...&CMP|
00015c20  20 52 37 2c 23 31 3a 4c  44 52 45 51 20 52 31 32  | R7,#1:LDREQ R12|
00015c30  2c 5b 52 39 2c 52 36 2c  4c 53 4c 20 23 32 5d 0d  |,[R9,R6,LSL #2].|
00015c40  80 b6 26 43 4d 50 20 52  37 2c 23 32 3a 4c 44 52  |..&CMP R7,#2:LDR|
00015c50  45 51 20 52 31 30 2c 5b  52 39 2c 52 36 2c 4c 53  |EQ R10,[R9,R6,LS|
00015c60  4c 20 23 32 5d 0d 80 c0  26 43 4d 50 20 52 37 2c  |L #2]...&CMP R7,|
00015c70  23 33 3a 4c 44 52 45 51  20 52 31 31 2c 5b 52 39  |#3:LDREQ R11,[R9|
00015c80  2c 52 36 2c 4c 53 4c 20  23 32 5d 0d 80 ca 12 41  |,R6,LSL #2]....A|
00015c90  44 44 20 52 33 2c 52 31  30 2c 52 31 31 0d 80 d4  |DD R3,R10,R11...|
00015ca0  11 41 44 44 20 52 33 2c  52 33 2c 52 31 32 0d 80  |.ADD R3,R3,R12..|
00015cb0  de 14 4d 4f 56 20 52 33  2c 52 33 2c 4c 53 52 20  |..MOV R3,R3,LSR |
00015cc0  23 32 0d 80 e8 12 53 54  4d 49 41 20 52 35 21 2c  |#2....STMIA R5!,|
00015cd0  7b 52 33 7d 0d 80 f2 1e  53 55 42 53 20 52 30 2c  |{R3}....SUBS R0,|
00015ce0  52 30 2c 23 31 3a 42 4e  45 20 6d 61 70 70 69 78  |R0,#1:BNE mappix|
00015cf0  6c 70 0d 80 fc 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp....MOVS PC,R1|
00015d00  34 0d 81 06 0b 2e 6c 74  61 62 6c 65 0d 81 10 05  |4.....ltable....|
00015d10  5d 0d 81 1a 0c e3 49 25  3d 30 b8 31 35 0d 81 24  |].....I%=0.15..$|
00015d20  0a 5b 4f 50 54 20 5a 0d  81 2e 10 45 51 55 44 20  |.[OPT Z....EQUD |
00015d30  49 25 2f 31 35 2a 46 0d  81 38 05 5d 0d 81 42 05  |I%/15*F..8.]..B.|
00015d40  ed 0d 81 4c 05 cc 0d 81  56 12 e7 68 70 72 65 64  |...L....V..hpred|
00015d50  69 63 74 25 3d 32 20 8c  0d 81 60 0a 5b 4f 50 54  |ict%=2 ...`.[OPT|
00015d60  20 5a 0d 81 6a 10 41 44  44 20 52 36 2c 52 36 2c  | Z..j.ADD R6,R6,|
00015d70  52 38 0d 81 74 10 80 20  52 36 2c 52 36 2c 23 32  |R8..t.. R6,R6,#2|
00015d80  35 35 0d 81 7e 0d 4d 4f  56 20 52 38 2c 52 36 0d  |55..~.MOV R8,R6.|
00015d90  81 88 05 5d 0d 81 92 05  cd 0d 81 9c 0a 5b 4f 50  |...].........[OP|
00015da0  54 20 5a 0d 81 a6 28 4c  44 52 20 52 37 2c 5b 52  |T Z...(LDR R7,[R|
00015db0  32 2c 52 36 2c 4c 53 4c  20 23 32 5d 3a 53 54 52  |2,R6,LSL #2]:STR|
00015dc0  20 52 37 2c 5b 52 35 5d  2c 23 34 0d 81 b0 1e 53  | R7,[R5],#4....S|
00015dd0  55 42 53 20 52 30 2c 52  30 2c 23 31 3a 42 4e 45  |UBS R0,R0,#1:BNE|
00015de0  20 6d 61 70 70 69 78 6c  70 0d 81 ba 0f 4d 4f 56  | mappixlp....MOV|
00015df0  53 20 50 43 2c 52 31 34  0d 81 c4 05 5d 0d 81 ce  |S PC,R14....]...|
00015e00  05 cd 0d 81 d8 07 c9 20  34 0d 81 e2 14 e7 62 69  |....... 4.....bi|
00015e10  67 65 6e 64 69 61 6e 62  69 74 73 20 8c 0d 81 ec  |gendianbits ....|
00015e20  0a 5b 4f 50 54 20 5a 0d  81 f6 15 4d 4f 56 20 52  |.[OPT Z....MOV R|
00015e30  31 30 2c 52 36 2c 4c 53  52 20 23 34 0d 82 00 1a  |10,R6,LSR #4....|
00015e40  4c 44 52 20 52 37 2c 5b  52 32 2c 52 31 30 2c 4c  |LDR R7,[R2,R10,L|
00015e50  53 4c 20 23 32 5d 0d 82  0a 10 80 20 52 31 30 2c  |SL #2]..... R10,|
00015e60  52 36 2c 23 26 46 0d 82  14 05 5d 0d 82 1e 05 cc  |R6,#&F....].....|
00015e70  0d 82 28 0a 5b 4f 50 54  20 5a 0d 82 32 10 80 20  |..(.[OPT Z..2.. |
00015e80  52 31 30 2c 52 36 2c 23  26 46 0d 82 3c 1a 4c 44  |R10,R6,#&F..<.LD|
00015e90  52 20 52 37 2c 5b 52 32  2c 52 31 30 2c 4c 53 4c  |R R7,[R2,R10,LSL|
00015ea0  20 23 32 5d 0d 82 46 15  4d 4f 56 20 52 31 30 2c  | #2]..F.MOV R10,|
00015eb0  52 36 2c 4c 53 52 20 23  34 0d 82 50 05 5d 0d 82  |R6,LSR #4..P.]..|
00015ec0  5a 05 cd 0d 82 64 0a 5b  4f 50 54 20 5a 0d 82 6e  |Z....d.[OPT Z..n|
00015ed0  2c 4c 44 52 20 52 38 2c  5b 52 32 2c 52 31 30 2c  |,LDR R8,[R2,R10,|
00015ee0  4c 53 4c 20 23 32 5d 3a  53 54 4d 49 41 20 52 35  |LSL #2]:STMIA R5|
00015ef0  21 2c 7b 52 37 2c 52 38  7d 0d 82 78 1e 53 55 42  |!,{R7,R8}..x.SUB|
00015f00  53 20 52 30 2c 52 30 2c  23 32 3a 42 48 49 20 6d  |S R0,R0,#2:BHI m|
00015f10  61 70 70 69 78 6c 70 0d  82 82 0f 4d 4f 56 53 20  |appixlp....MOVS |
00015f20  50 43 2c 52 31 34 0d 82  8c 05 5d 0d 82 96 07 c9  |PC,R14....].....|
00015f30  20 32 0d 82 a0 14 e7 62  69 67 65 6e 64 69 61 6e  | 2.....bigendian|
00015f40  62 69 74 73 20 8c 0d 82  aa 0a 5b 4f 50 54 20 5a  |bits .....[OPT Z|
00015f50  0d 82 b4 15 4d 4f 56 20  52 31 30 2c 52 36 2c 4c  |....MOV R10,R6,L|
00015f60  53 52 20 23 36 0d 82 be  1a 4c 44 52 20 52 37 2c  |SR #6....LDR R7,|
00015f70  5b 52 32 2c 52 31 30 2c  4c 53 4c 20 23 32 5d 0d  |[R2,R10,LSL #2].|
00015f80  82 c8 11 80 20 52 31 30  2c 52 36 2c 23 26 33 30  |.... R10,R6,#&30|
00015f90  0d 82 d2 1a 4c 44 52 20  52 38 2c 5b 52 32 2c 52  |....LDR R8,[R2,R|
00015fa0  31 30 2c 4c 53 52 20 23  32 5d 0d 82 dc 10 80 20  |10,LSR #2]..... |
00015fb0  52 31 30 2c 52 36 2c 23  26 43 0d 82 e6 13 4c 44  |R10,R6,#&C....LD|
00015fc0  52 20 52 39 2c 5b 52 32  2c 52 31 30 5d 0d 82 f0  |R R9,[R2,R10]...|
00015fd0  10 80 20 52 31 30 2c 52  36 2c 23 26 33 0d 82 fa  |.. R10,R6,#&3...|
00015fe0  05 5d 0d 83 04 05 cc 0d  83 0e 0a 5b 4f 50 54 20  |.].........[OPT |
00015ff0  5a 0d 83 18 10 80 20 52  31 30 2c 52 36 2c 23 26  |Z..... R10,R6,#&|
00016000  33 0d 83 22 1a 4c 44 52  20 52 37 2c 5b 52 32 2c  |3..".LDR R7,[R2,|
00016010  52 31 30 2c 4c 53 4c 20  23 32 5d 0d 83 2c 10 80  |R10,LSL #2]..,..|
00016020  20 52 31 30 2c 52 36 2c  23 26 43 0d 83 36 13 4c  | R10,R6,#&C..6.L|
00016030  44 52 20 52 38 2c 5b 52  32 2c 52 31 30 5d 0d 83  |DR R8,[R2,R10]..|
00016040  40 11 80 20 52 31 30 2c  52 36 2c 23 26 33 30 0d  |@.. R10,R6,#&30.|
00016050  83 4a 1a 4c 44 52 20 52  39 2c 5b 52 32 2c 52 31  |.J.LDR R9,[R2,R1|
00016060  30 2c 4c 53 52 20 23 32  5d 0d 83 54 15 4d 4f 56  |0,LSR #2]..T.MOV|
00016070  20 52 31 30 2c 52 36 2c  4c 53 52 20 23 36 0d 83  | R10,R6,LSR #6..|
00016080  5e 05 5d 0d 83 68 05 cd  0d 83 72 0a 5b 4f 50 54  |^.]..h....r.[OPT|
00016090  20 5a 0d 83 7c 34 4c 44  52 20 52 31 30 2c 5b 52  | Z..|4LDR R10,[R|
000160a0  32 2c 52 31 30 2c 4c 53  4c 20 23 32 5d 3a 53 54  |2,R10,LSL #2]:ST|
000160b0  4d 49 41 20 52 35 21 2c  7b 52 37 2c 52 38 2c 52  |MIA R5!,{R7,R8,R|
000160c0  39 2c 52 31 30 7d 0d 83  86 1e 53 55 42 53 20 52  |9,R10}....SUBS R|
000160d0  30 2c 52 30 2c 23 34 3a  42 48 49 20 6d 61 70 70  |0,R0,#4:BHI mapp|
000160e0  69 78 6c 70 0d 83 90 0f  4d 4f 56 53 20 50 43 2c  |ixlp....MOVS PC,|
000160f0  52 31 34 0d 83 9a 05 5d  0d 83 a4 07 c9 20 31 0d  |R14....]..... 1.|
00016100  83 ae 14 e7 62 69 67 65  6e 64 69 61 6e 62 69 74  |....bigendianbit|
00016110  73 20 8c 0d 83 b8 0a 5b  4f 50 54 20 5a 0d 83 c2  |s .....[OPT Z...|
00016120  11 80 20 52 31 30 2c 52  36 2c 23 26 38 30 0d 83  |.. R10,R6,#&80..|
00016130  cc 1a 4c 44 52 20 52 37  2c 5b 52 32 2c 52 31 30  |..LDR R7,[R2,R10|
00016140  2c 4c 53 52 20 23 35 5d  0d 83 d6 11 80 20 52 31  |,LSR #5]..... R1|
00016150  30 2c 52 36 2c 23 26 34  30 0d 83 e0 1a 4c 44 52  |0,R6,#&40....LDR|
00016160  20 52 38 2c 5b 52 32 2c  52 31 30 2c 4c 53 52 20  | R8,[R2,R10,LSR |
00016170  23 34 5d 0d 83 ea 11 80  20 52 31 30 2c 52 36 2c  |#4]..... R10,R6,|
00016180  23 26 32 30 0d 83 f4 1a  4c 44 52 20 52 39 2c 5b  |#&20....LDR R9,[|
00016190  52 32 2c 52 31 30 2c 4c  53 52 20 23 33 5d 0d 83  |R2,R10,LSR #3]..|
000161a0  fe 11 80 20 52 31 30 2c  52 36 2c 23 26 31 30 0d  |... R10,R6,#&10.|
000161b0  84 08 34 4c 44 52 20 52  31 30 2c 5b 52 32 2c 52  |..4LDR R10,[R2,R|
000161c0  31 30 2c 4c 53 52 20 23  32 5d 3a 53 54 4d 49 41  |10,LSR #2]:STMIA|
000161d0  20 52 35 21 2c 7b 52 37  2c 52 38 2c 52 39 2c 52  | R5!,{R7,R8,R9,R|
000161e0  31 30 7d 0d 84 12 10 80  20 52 31 30 2c 52 36 2c  |10}..... R10,R6,|
000161f0  23 26 38 0d 84 1c 1a 4c  44 52 20 52 37 2c 5b 52  |#&8....LDR R7,[R|
00016200  32 2c 52 31 30 2c 4c 53  52 20 23 31 5d 0d 84 26  |2,R10,LSR #1]..&|
00016210  10 80 20 52 31 30 2c 52  36 2c 23 26 34 0d 84 30  |.. R10,R6,#&4..0|
00016220  13 4c 44 52 20 52 38 2c  5b 52 32 2c 52 31 30 5d  |.LDR R8,[R2,R10]|
00016230  0d 84 3a 10 80 20 52 31  30 2c 52 36 2c 23 26 32  |..:.. R10,R6,#&2|
00016240  0d 84 44 1a 4c 44 52 20  52 39 2c 5b 52 32 2c 52  |..D.LDR R9,[R2,R|
00016250  31 30 2c 4c 53 4c 20 23  31 5d 0d 84 4e 10 80 20  |10,LSL #1]..N.. |
00016260  52 31 30 2c 52 36 2c 23  26 31 0d 84 58 05 5d 0d  |R10,R6,#&1..X.].|
00016270  84 62 05 cc 0d 84 6c 0a  5b 4f 50 54 20 5a 0d 84  |.b....l.[OPT Z..|
00016280  76 10 80 20 52 31 30 2c  52 36 2c 23 26 31 0d 84  |v.. R10,R6,#&1..|
00016290  80 1a 4c 44 52 20 52 37  2c 5b 52 32 2c 52 31 30  |..LDR R7,[R2,R10|
000162a0  2c 4c 53 4c 20 23 32 5d  0d 84 8a 10 80 20 52 31  |,LSL #2]..... R1|
000162b0  30 2c 52 36 2c 23 26 32  0d 84 94 1a 4c 44 52 20  |0,R6,#&2....LDR |
000162c0  52 38 2c 5b 52 32 2c 52  31 30 2c 4c 53 4c 20 23  |R8,[R2,R10,LSL #|
000162d0  31 5d 0d 84 9e 10 80 20  52 31 30 2c 52 36 2c 23  |1]..... R10,R6,#|
000162e0  26 34 0d 84 a8 13 4c 44  52 20 52 39 2c 5b 52 32  |&4....LDR R9,[R2|
000162f0  2c 52 31 30 5d 0d 84 b2  10 80 20 52 31 30 2c 52  |,R10]..... R10,R|
00016300  36 2c 23 26 38 0d 84 bc  34 4c 44 52 20 52 31 30  |6,#&8...4LDR R10|
00016310  2c 5b 52 32 2c 52 31 30  2c 4c 53 52 20 23 31 5d  |,[R2,R10,LSR #1]|
00016320  3a 53 54 4d 49 41 20 52  35 21 2c 7b 52 37 2c 52  |:STMIA R5!,{R7,R|
00016330  38 2c 52 39 2c 52 31 30  7d 0d 84 c6 11 80 20 52  |8,R9,R10}..... R|
00016340  31 30 2c 52 36 2c 23 26  31 30 0d 84 d0 1a 4c 44  |10,R6,#&10....LD|
00016350  52 20 52 37 2c 5b 52 32  2c 52 31 30 2c 4c 53 52  |R R7,[R2,R10,LSR|
00016360  20 23 32 5d 0d 84 da 11  80 20 52 31 30 2c 52 36  | #2]..... R10,R6|
00016370  2c 23 26 32 30 0d 84 e4  1a 4c 44 52 20 52 38 2c  |,#&20....LDR R8,|
00016380  5b 52 32 2c 52 31 30 2c  4c 53 52 20 23 33 5d 0d  |[R2,R10,LSR #3].|
00016390  84 ee 11 80 20 52 31 30  2c 52 36 2c 23 26 34 30  |.... R10,R6,#&40|
000163a0  0d 84 f8 1a 4c 44 52 20  52 39 2c 5b 52 32 2c 52  |....LDR R9,[R2,R|
000163b0  31 30 2c 4c 53 52 20 23  34 5d 0d 85 02 15 4d 4f  |10,LSR #4]....MO|
000163c0  56 20 52 31 30 2c 52 36  2c 4c 53 52 20 23 37 0d  |V R10,R6,LSR #7.|
000163d0  85 0c 05 5d 0d 85 16 05  cd 0d 85 20 0a 5b 4f 50  |...]....... .[OP|
000163e0  54 20 5a 0d 85 2a 34 4c  44 52 20 52 31 30 2c 5b  |T Z..*4LDR R10,[|
000163f0  52 32 2c 52 31 30 2c 4c  53 4c 20 23 32 5d 3a 53  |R2,R10,LSL #2]:S|
00016400  54 4d 49 41 20 52 35 21  2c 7b 52 37 2c 52 38 2c  |TMIA R5!,{R7,R8,|
00016410  52 39 2c 52 31 30 7d 0d  85 34 1e 53 55 42 53 20  |R9,R10}..4.SUBS |
00016420  52 30 2c 52 30 2c 23 38  3a 42 48 49 20 6d 61 70  |R0,R0,#8:BHI map|
00016430  70 69 78 6c 70 0d 85 3e  0f 4d 4f 56 53 20 50 43  |pixlp..>.MOVS PC|
00016440  2c 52 31 34 0d 85 48 05  5d 0d 85 52 08 c9 20 31  |,R14..H.]..R.. 1|
00016450  36 0d 85 5c 0a 5b 4f 50  54 20 5a 0d 85 66 0d 2e  |6..\.[OPT Z..f..|
00016460  6d 61 70 70 69 78 25 20  0d 85 70 11 4c 44 52 20  |mappix% ..p.LDR |
00016470  52 30 2c 73 78 6c 6f 63  20 0d 85 7a 1c 4c 44 52  |R0,sxloc ..z.LDR|
00016480  20 52 31 2c 5b 52 39 5d  3a 4c 44 52 20 52 31 2c  | R1,[R9]:LDR R1,|
00016490  5b 52 31 5d 20 0d 85 84  1f 4c 44 52 20 52 32 2c  |[R1] ....LDR R2,|
000164a0  5b 52 39 2c 23 38 5d 3a  4c 44 52 20 52 32 2c 5b  |[R9,#8]:LDR R2,[|
000164b0  52 32 5d 20 0d 85 8e 15  4c 44 52 20 52 33 2c 5b  |R2] ....LDR R3,[|
000164c0  52 39 2c 23 34 2a 38 5d  20 0d 85 98 15 4c 44 52  |R9,#4*8] ....LDR|
000164d0  20 52 34 2c 5b 52 39 2c  23 33 2a 38 5d 20 0d 85  | R4,[R9,#3*8] ..|
000164e0  a2 15 4c 44 52 20 52 35  2c 5b 52 39 2c 23 32 2a  |..LDR R5,[R9,#2*|
000164f0  38 5d 20 0d 85 ac 15 4c  44 52 20 52 36 2c 5b 52  |8] ....LDR R6,[R|
00016500  39 2c 23 35 2a 38 5d 20  0d 85 b6 15 4c 44 52 20  |9,#5*8] ....LDR |
00016510  52 37 2c 5b 52 39 2c 23  36 2a 38 5d 20 0d 85 c0  |R7,[R9,#6*8] ...|
00016520  15 4c 44 52 20 52 38 2c  5b 52 39 2c 23 37 2a 38  |.LDR R8,[R9,#7*8|
00016530  5d 20 0d 85 ca 0d 43 4d  50 20 52 31 2c 52 32 0d  |] ....CMP R1,R2.|
00016540  85 d4 12 41 44 44 45 51  20 52 32 2c 52 32 2c 23  |...ADDEQ R2,R2,#|
00016550  31 0d 85 de 0d 2e 6d 61  70 70 69 78 6c 70 0d 85  |1.....mappixlp..|
00016560  e8 2e 4c 44 52 42 20 52  39 2c 5b 52 31 5d 2c 23  |..LDRB R9,[R1],#|
00016570  73 74 65 70 32 34 3a 4c  44 52 42 20 52 31 30 2c  |step24:LDRB R10,|
00016580  5b 52 32 5d 2c 23 73 74  65 70 32 34 0d 85 f2 3e  |[R2],#step24...>|
00016590  4c 44 52 20 52 39 2c 5b  52 36 2c 52 39 2c 4c 53  |LDR R9,[R6,R9,LS|
000165a0  4c 20 23 32 5d 3a 4c 44  52 20 52 31 30 2c 5b 52  |L #2]:LDR R10,[R|
000165b0  37 2c 52 31 30 2c 4c 53  4c 20 23 32 5d 3a 84 52  |7,R10,LSL #2]:.R|
000165c0  20 52 39 2c 52 39 2c 52  31 30 0d 85 fc 29 80 20  | R9,R9,R10...). |
000165d0  52 31 30 2c 52 39 2c 23  32 35 35 3a 4c 44 52 20  |R10,R9,#255:LDR |
000165e0  52 31 30 2c 5b 52 33 2c  52 31 30 2c 4c 53 4c 20  |R10,[R3,R10,LSL |
000165f0  23 32 5d 0d 86 06 3c 4d  4f 56 20 52 31 31 2c 52  |#2]...<MOV R11,R|
00016600  39 2c 4c 53 52 20 23 38  3a 80 20 52 31 31 2c 52  |9,LSR #8:. R11,R|
00016610  31 31 2c 23 32 35 35 3a  4c 44 52 20 52 31 31 2c  |11,#255:LDR R11,|
00016620  5b 52 34 2c 52 31 31 2c  4c 53 4c 20 23 32 5d 0d  |[R4,R11,LSL #2].|
00016630  86 10 2e 4d 4f 56 20 52  31 32 2c 52 39 2c 4c 53  |...MOV R12,R9,LS|
00016640  52 20 23 31 36 3a 4c 44  52 20 52 31 32 2c 5b 52  |R #16:LDR R12,[R|
00016650  35 2c 52 31 32 2c 4c 53  4c 20 23 32 5d 0d 86 1a  |5,R12,LSL #2]...|
00016660  33 41 44 44 20 52 31 30  2c 52 31 30 2c 52 31 31  |3ADD R10,R10,R11|
00016670  3a 41 44 44 20 52 31 30  2c 52 31 30 2c 52 31 32  |:ADD R10,R10,R12|
00016680  3a 53 54 4d 49 41 20 52  38 21 2c 7b 52 31 30 7d  |:STMIA R8!,{R10}|
00016690  0d 86 24 1e 53 55 42 53  20 52 30 2c 52 30 2c 23  |..$.SUBS R0,R0,#|
000166a0  31 3a 42 4e 45 20 6d 61  70 70 69 78 6c 70 0d 86  |1:BNE mappixlp..|
000166b0  2e 0f 4d 4f 56 53 20 50  43 2c 52 31 34 0d 86 38  |..MOVS PC,R14..8|
000166c0  05 5d 0d 86 42 08 c9 20  32 34 0d 86 4c 0a 5b 4f  |.]..B.. 24..L.[O|
000166d0  50 54 20 5a 0d 86 56 0d  2e 6d 61 70 70 69 78 25  |PT Z..V..mappix%|
000166e0  20 0d 86 60 11 4c 44 52  20 52 30 2c 73 78 6c 6f  | ..`.LDR R0,sxlo|
000166f0  63 20 0d 86 6a 21 4c 44  52 20 52 31 2c 5b 52 39  |c ..j!LDR R1,[R9|
00016700  2c 23 32 2a 38 5d 3a 4c  44 52 20 52 31 2c 5b 52  |,#2*8]:LDR R1,[R|
00016710  31 5d 20 0d 86 74 1f 4c  44 52 20 52 32 2c 5b 52  |1] ..t.LDR R2,[R|
00016720  39 2c 23 38 5d 3a 4c 44  52 20 52 32 2c 5b 52 32  |9,#8]:LDR R2,[R2|
00016730  5d 20 0d 86 7e 1c 4c 44  52 20 52 33 2c 5b 52 39  |] ..~.LDR R3,[R9|
00016740  5d 3a 4c 44 52 20 52 33  2c 5b 52 33 5d 20 0d 86  |]:LDR R3,[R3] ..|
00016750  88 15 4c 44 52 20 52 34  2c 5b 52 39 2c 23 35 2a  |..LDR R4,[R9,#5*|
00016760  38 5d 20 0d 86 92 15 4c  44 52 20 52 35 2c 5b 52  |8] ....LDR R5,[R|
00016770  39 2c 23 34 2a 38 5d 20  0d 86 9c 15 4c 44 52 20  |9,#4*8] ....LDR |
00016780  52 36 2c 5b 52 39 2c 23  33 2a 38 5d 20 0d 86 a6  |R6,[R9,#3*8] ...|
00016790  15 4c 44 52 20 52 37 2c  5b 52 39 2c 23 36 2a 38  |.LDR R7,[R9,#6*8|
000167a0  5d 20 0d 86 b0 0d 2e 6d  61 70 70 69 78 6c 70 0d  |] .....mappixlp.|
000167b0  86 ba 2e 4c 44 52 42 20  52 38 2c 5b 52 31 5d 2c  |...LDRB R8,[R1],|
000167c0  23 73 74 65 70 32 34 3a  4c 44 52 20 52 38 2c 5b  |#step24:LDR R8,[|
000167d0  52 34 2c 52 38 2c 4c 53  4c 20 23 32 5d 0d 86 c4  |R4,R8,LSL #2]...|
000167e0  3b 4c 44 52 42 20 52 39  2c 5b 52 32 5d 2c 23 73  |;LDRB R9,[R2],#s|
000167f0  74 65 70 32 34 3a 4c 44  52 20 52 39 2c 5b 52 35  |tep24:LDR R9,[R5|
00016800  2c 52 39 2c 4c 53 4c 20  23 32 5d 3a 41 44 44 20  |,R9,LSL #2]:ADD |
00016810  52 38 2c 52 38 2c 52 39  0d 86 ce 4a 4c 44 52 42  |R8,R8,R9...JLDRB|
00016820  20 52 39 2c 5b 52 33 5d  2c 23 73 74 65 70 32 34  | R9,[R3],#step24|
00016830  3a 4c 44 52 20 52 39 2c  5b 52 36 2c 52 39 2c 4c  |:LDR R9,[R6,R9,L|
00016840  53 4c 20 23 32 5d 3a 41  44 44 20 52 38 2c 52 38  |SL #2]:ADD R8,R8|
00016850  2c 52 39 3a 53 54 52 20  52 38 2c 5b 52 37 5d 2c  |,R9:STR R8,[R7],|
00016860  23 34 0d 86 d8 1e 53 55  42 53 20 52 30 2c 52 30  |#4....SUBS R0,R0|
00016870  2c 23 31 3a 42 4e 45 20  6d 61 70 70 69 78 6c 70  |,#1:BNE mappixlp|
00016880  0d 86 e2 0f 4d 4f 56 53  20 50 43 2c 52 31 34 0d  |....MOVS PC,R14.|
00016890  86 ec 05 5d 0d 86 f6 09  c9 20 34 31 31 0d 87 00  |...]..... 411...|
000168a0  0a 5b 4f 50 54 20 5a 0d  87 0a 0d 2e 6d 61 70 70  |.[OPT Z.....mapp|
000168b0  69 78 25 20 0d 87 14 11  4c 44 52 20 52 30 2c 73  |ix% ....LDR R0,s|
000168c0  78 6c 6f 63 20 0d 87 1e  1c 4c 44 52 20 52 31 2c  |xloc ....LDR R1,|
000168d0  5b 52 39 5d 3a 4c 44 52  20 52 31 2c 5b 52 31 5d  |[R9]:LDR R1,[R1]|
000168e0  20 0d 87 28 15 4c 44 52  20 52 34 2c 5b 52 39 2c  | ..(.LDR R4,[R9,|
000168f0  23 31 2a 38 5d 20 0d 87  32 15 4c 44 52 20 52 37  |#1*8] ..2.LDR R7|
00016900  2c 5b 52 39 2c 23 38 2a  38 5d 20 0d 87 3c 0d 2e  |,[R9,#8*8] ..<..|
00016910  6d 61 70 70 69 78 6c 70  0d 87 46 14 4c 44 52 42  |mappixlp..F.LDRB|
00016920  20 52 38 2c 5b 52 31 5d  2c 23 32 20 0d 87 50 3e  | R8,[R1],#2 ..P>|
00016930  4c 44 52 20 52 38 2c 5b  52 34 2c 52 38 2c 4c 53  |LDR R8,[R4,R8,LS|
00016940  4c 20 23 32 5d 3a 43 4d  50 20 52 38 2c 23 46 3a  |L #2]:CMP R8,#F:|
00016950  4d 4f 56 43 53 20 52 38  2c 23 46 3a 53 54 52 20  |MOVCS R8,#F:STR |
00016960  52 38 2c 5b 52 37 5d 2c  23 34 0d 87 5a 1e 53 55  |R8,[R7],#4..Z.SU|
00016970  42 53 20 52 30 2c 52 30  2c 23 31 3a 42 4e 45 20  |BS R0,R0,#1:BNE |
00016980  6d 61 70 70 69 78 6c 70  0d 87 64 0f 4d 4f 56 53  |mappixlp..d.MOVS|
00016990  20 50 43 2c 52 31 34 0d  87 6e 05 5d 0d 87 78 09  | PC,R14..n.]..x.|
000169a0  c9 20 34 32 32 0d 87 82  0a 5b 4f 50 54 20 5a 0d  |. 422....[OPT Z.|
000169b0  87 8c 0d 2e 6d 61 70 70  69 78 25 20 0d 87 96 11  |....mappix% ....|
000169c0  4c 44 52 20 52 30 2c 73  78 6c 6f 63 20 0d 87 a0  |LDR R0,sxloc ...|
000169d0  1c 4c 44 52 20 52 31 2c  5b 52 39 5d 3a 4c 44 52  |.LDR R1,[R9]:LDR|
000169e0  20 52 31 2c 5b 52 31 5d  20 0d 87 aa 11 41 44 44  | R1,[R1] ....ADD|
000169f0  20 52 31 2c 52 31 2c 23  31 20 0d 87 b4 15 4c 44  | R1,R1,#1 ....LD|
00016a00  52 20 52 34 2c 5b 52 39  2c 23 31 2a 38 5d 20 0d  |R R4,[R9,#1*8] .|
00016a10  87 be 15 4c 44 52 20 52  37 2c 5b 52 39 2c 23 38  |...LDR R7,[R9,#8|
00016a20  2a 38 5d 20 0d 87 c8 0d  2e 6d 61 70 70 69 78 6c  |*8] .....mappixl|
00016a30  70 0d 87 d2 14 4c 44 52  42 20 52 38 2c 5b 52 31  |p....LDRB R8,[R1|
00016a40  5d 2c 23 32 20 0d 87 dc  3e 4c 44 52 20 52 38 2c  |],#2 ...>LDR R8,|
00016a50  5b 52 34 2c 52 38 2c 4c  53 4c 20 23 32 5d 3a 43  |[R4,R8,LSL #2]:C|
00016a60  4d 50 20 52 38 2c 23 46  3a 4d 4f 56 43 53 20 52  |MP R8,#F:MOVCS R|
00016a70  38 2c 23 46 3a 53 54 52  20 52 38 2c 5b 52 37 5d  |8,#F:STR R8,[R7]|
00016a80  2c 23 34 0d 87 e6 1e 53  55 42 53 20 52 30 2c 52  |,#4....SUBS R0,R|
00016a90  30 2c 23 31 3a 42 4e 45  20 6d 61 70 70 69 78 6c  |0,#1:BNE mappixl|
00016aa0  70 0d 87 f0 0f 4d 4f 56  53 20 50 43 2c 52 31 34  |p....MOVS PC,R14|
00016ab0  0d 87 fa 05 5d 0d 88 04  09 c9 20 35 35 35 0d 88  |....]..... 555..|
00016ac0  0e 0a 5b 4f 50 54 20 5a  0d 88 18 0d 2e 6d 61 70  |..[OPT Z.....map|
00016ad0  70 69 78 25 20 0d 88 22  11 4c 44 52 20 52 30 2c  |pix% ..".LDR R0,|
00016ae0  73 78 6c 6f 63 20 0d 88  2c 1c 4c 44 52 20 52 31  |sxloc ..,.LDR R1|
00016af0  2c 5b 52 39 5d 3a 4c 44  52 20 52 31 2c 5b 52 31  |,[R9]:LDR R1,[R1|
00016b00  5d 20 0d 88 36 11 41 44  44 20 52 31 2c 52 31 2c  |] ..6.ADD R1,R1,|
00016b10  23 31 20 0d 88 40 15 4c  44 52 20 52 34 2c 5b 52  |#1 ..@.LDR R4,[R|
00016b20  39 2c 23 31 2a 38 5d 20  0d 88 4a 15 4c 44 52 20  |9,#1*8] ..J.LDR |
00016b30  52 37 2c 5b 52 39 2c 23  38 2a 38 5d 20 0d 88 54  |R7,[R9,#8*8] ..T|
00016b40  0d 2e 6d 61 70 70 69 78  6c 70 0d 88 5e 14 4c 44  |..mappixlp..^.LD|
00016b50  52 42 20 52 38 2c 5b 52  31 5d 2c 23 32 20 0d 88  |RB R8,[R1],#2 ..|
00016b60  68 12 80 20 52 38 2c 52  38 2c 23 79 6d 61 78 25  |h.. R8,R8,#ymax%|
00016b70  0d 88 72 3e 4c 44 52 20  52 38 2c 5b 52 34 2c 52  |..r>LDR R8,[R4,R|
00016b80  38 2c 4c 53 4c 20 23 32  5d 3a 43 4d 50 20 52 38  |8,LSL #2]:CMP R8|
00016b90  2c 23 46 3a 4d 4f 56 43  53 20 52 38 2c 23 46 3a  |,#F:MOVCS R8,#F:|
00016ba0  53 54 52 20 52 38 2c 5b  52 37 5d 2c 23 34 0d 88  |STR R8,[R7],#4..|
00016bb0  7c 1e 53 55 42 53 20 52  30 2c 52 30 2c 23 31 3a  ||.SUBS R0,R0,#1:|
00016bc0  42 4e 45 20 6d 61 70 70  69 78 6c 70 0d 88 86 0f  |BNE mappixlp....|
00016bd0  4d 4f 56 53 20 50 43 2c  52 31 34 0d 88 90 05 5d  |MOVS PC,R14....]|
00016be0  0d 88 9a 05 cb 0d 88 a4  18 e7 78 6d 75 6c 25 3d  |..........xmul%=|
00016bf0  32 20 80 20 78 64 69 76  25 3d 31 20 8c 0d 88 ae  |2 . xdiv%=1 ....|
00016c00  0a 5b 4f 50 54 20 5a 0d  88 c2 0d 2e 78 73 61 6d  |.[OPT Z.....xsam|
00016c10  70 6c 65 25 0d 88 cc 1c  4c 44 52 20 52 30 2c 5b  |ple%....LDR R0,[|
00016c20  52 39 5d 3a 4c 44 52 20  52 30 2c 5b 52 30 5d 20  |R9]:LDR R0,[R0] |
00016c30  0d 88 d6 13 4c 44 52 20  52 31 2c 5b 52 39 2c 23  |....LDR R1,[R9,#|
00016c40  38 5d 20 0d 88 e0 15 4c  44 52 20 52 32 2c 5b 52  |8] ....LDR R2,[R|
00016c50  39 2c 23 32 2a 38 5d 20  0d 88 ea 0e 2e 78 73 61  |9,#2*8] .....xsa|
00016c60  6d 70 6c 65 6c 70 0d 88  f4 14 4c 44 4d 49 41 20  |mplelp....LDMIA |
00016c70  52 31 2c 7b 52 35 2c 52  36 7d 0d 88 fe 10 41 44  |R1,{R5,R6}....AD|
00016c80  44 20 52 36 2c 52 36 2c  52 35 0d 89 08 14 4d 4f  |D R6,R6,R5....MO|
00016c90  56 20 52 36 2c 52 36 2c  4c 53 52 20 23 31 0d 89  |V R6,R6,LSR #1..|
00016ca0  12 15 53 54 4d 49 41 20  52 32 21 2c 7b 52 35 2c  |..STMIA R2!,{R5,|
00016cb0  52 36 7d 0d 89 1c 10 41  44 44 20 52 31 2c 52 31  |R6}....ADD R1,R1|
00016cc0  2c 23 34 0d 89 26 1f 53  55 42 53 20 52 30 2c 52  |,#4..&.SUBS R0,R|
00016cd0  30 2c 23 32 3a 42 50 4c  20 78 73 61 6d 70 6c 65  |0,#2:BPL xsample|
00016ce0  6c 70 0d 89 30 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp..0.MOVS PC,R1|
00016cf0  34 0d 89 3a 05 5d 0d 89  44 05 cc 0d 89 4e 0a 5b  |4..:.]..D....N.[|
00016d00  4f 50 54 20 5a 0d 89 62  0d 2e 78 73 61 6d 70 6c  |OPT Z..b..xsampl|
00016d10  65 25 0d 89 6c 1c 4c 44  52 20 52 30 2c 5b 52 39  |e%..l.LDR R0,[R9|
00016d20  5d 3a 4c 44 52 20 52 30  2c 5b 52 30 5d 20 0d 89  |]:LDR R0,[R0] ..|
00016d30  76 13 4c 44 52 20 52 31  2c 5b 52 39 2c 23 38 5d  |v.LDR R1,[R9,#8]|
00016d40  20 0d 89 80 15 4c 44 52  20 52 32 2c 5b 52 39 2c  | ....LDR R2,[R9,|
00016d50  23 32 2a 38 5d 20 0d 89  8a 21 4c 44 52 20 52 33  |#2*8] ...!LDR R3|
00016d60  2c 5b 52 39 2c 23 33 2a  38 5d 3a 4c 44 52 20 52  |,[R9,#3*8]:LDR R|
00016d70  33 2c 5b 52 33 5d 20 0d  89 94 21 4c 44 52 20 52  |3,[R3] ...!LDR R|
00016d80  34 2c 5b 52 39 2c 23 34  2a 38 5d 3a 4c 44 52 20  |4,[R9,#4*8]:LDR |
00016d90  52 34 2c 5b 52 34 5d 20  0d 89 9e 0e 4d 4f 56 20  |R4,[R4] ....MOV |
00016da0  52 31 31 2c 52 34 0d 89  a8 0e 2e 78 73 61 6d 70  |R11,R4.....xsamp|
00016db0  6c 65 6c 70 0d 89 b2 11  4c 44 4d 49 41 20 52 31  |lelp....LDMIA R1|
00016dc0  2c 7b 52 35 7d 0d 89 bc  2c 53 55 42 53 20 52 31  |,{R5}...,SUBS R1|
00016dd0  31 2c 52 31 31 2c 23 31  3a ec 51 20 52 31 31 2c  |1,R11,#1:.Q R11,|
00016de0  52 34 3a 41 44 44 45 51  20 52 31 2c 52 31 2c 23  |R4:ADDEQ R1,R1,#|
00016df0  34 0d 89 c6 13 53 55 42  53 20 52 31 32 2c 52 33  |4....SUBS R12,R3|
00016e00  2c 23 31 20 0d 89 d0 10  42 45 51 20 78 64 6f 6e  |,#1 ....BEQ xdon|
00016e10  65 64 69 76 0d 89 da 0b  2e 78 64 69 76 6c 70 0d  |ediv.....xdivlp.|
00016e20  89 e4 0f 43 4d 50 20 52  31 32 2c 52 31 31 0d 89  |...CMP R12,R11..|
00016e30  ee 0f 42 43 43 20 78 64  69 76 6c 70 32 0d 89 f8  |..BCC xdivlp2...|
00016e40  23 4c 44 4d 49 41 20 52  31 21 2c 7b 52 38 7d 3a  |#LDMIA R1!,{R8}:|
00016e50  4d 4c 41 20 52 35 2c 52  38 2c 52 31 31 2c 52 35  |MLA R5,R8,R11,R5|
00016e60  0d 8a 02 1f 53 55 42 53  20 52 31 32 2c 52 31 32  |....SUBS R12,R12|
00016e70  2c 52 31 31 3a 4d 4f 56  20 52 31 31 2c 52 34 0d  |,R11:MOV R11,R4.|
00016e80  8a 0c 0e 42 4e 45 20 78  64 69 76 6c 70 0d 8a 16  |...BNE xdivlp...|
00016e90  0e 42 20 78 64 6f 6e 65  64 69 76 0d 8a 20 0c 2e  |.B xdonediv.. ..|
00016ea0  78 64 69 76 6c 70 32 0d  8a 2a 11 4c 44 4d 49 41  |xdivlp2..*.LDMIA|
00016eb0  20 52 31 2c 7b 52 38 7d  0d 8a 34 2c 53 55 42 53  | R1,{R8}..4,SUBS|
00016ec0  20 52 31 31 2c 52 31 31  2c 23 31 3a ec 51 20 52  | R11,R11,#1:.Q R|
00016ed0  31 31 2c 52 34 3a 41 44  44 45 51 20 52 31 2c 52  |11,R4:ADDEQ R1,R|
00016ee0  31 2c 23 34 0d 8a 3e 10  41 44 44 20 52 35 2c 52  |1,#4..>.ADD R5,R|
00016ef0  35 2c 52 38 0d 8a 48 1e  53 55 42 53 20 52 31 32  |5,R8..H.SUBS R12|
00016f00  2c 52 31 32 2c 23 31 3a  42 4e 45 20 78 64 69 76  |,R12,#1:BNE xdiv|
00016f10  6c 70 0d 8a 52 0d 2e 78  64 6f 6e 65 64 69 76 0d  |lp..R..xdonediv.|
00016f20  8a 5c 12 53 54 4d 49 41  20 52 32 21 2c 7b 52 35  |.\.STMIA R2!,{R5|
00016f30  7d 0d 8a 66 1f 53 55 42  53 20 52 30 2c 52 30 2c  |}..f.SUBS R0,R0,|
00016f40  23 31 3a 42 50 4c 20 78  73 61 6d 70 6c 65 6c 70  |#1:BPL xsamplelp|
00016f50  0d 8a 70 0f 4d 4f 56 53  20 50 43 2c 52 31 34 0d  |..p.MOVS PC,R14.|
00016f60  8a 7a 05 5d 0d 8a 84 05  cd 0d 8a 8e 07 c9 20 32  |.z.].......... 2|
00016f70  0d 8a 98 0f e7 69 6e 70  75 74 3c 3d 38 20 8c 0d  |.....input<=8 ..|
00016f80  8a a2 0a 5b 4f 50 54 20  5a 0d 8a ac 0d 2e 6d 61  |...[OPT Z.....ma|
00016f90  70 70 69 78 25 20 0d 8a  b6 11 4c 44 52 20 52 30  |ppix% ....LDR R0|
00016fa0  2c 73 78 6c 6f 63 20 0d  8a c0 1c 4c 44 52 20 52  |,sxloc ....LDR R|
00016fb0  31 2c 5b 52 39 5d 3a 4c  44 52 20 52 31 2c 5b 52  |1,[R9]:LDR R1,[R|
00016fc0  31 5d 20 0d 8a ca 15 4c  44 52 20 52 32 2c 5b 52  |1] ....LDR R2,[R|
00016fd0  39 2c 23 33 2a 38 5d 20  0d 8a d4 15 4c 44 52 20  |9,#3*8] ....LDR |
00016fe0  52 33 2c 5b 52 39 2c 23  32 2a 38 5d 20 0d 8a de  |R3,[R9,#2*8] ...|
00016ff0  13 4c 44 52 20 52 34 2c  5b 52 39 2c 23 38 5d 20  |.LDR R4,[R9,#8] |
00017000  0d 8a e8 15 4c 44 52 20  52 35 2c 5b 52 39 2c 23  |....LDR R5,[R9,#|
00017010  34 2a 38 5d 20 0d 8a f2  0e 4d 4f 56 20 52 31 30  |4*8] ....MOV R10|
00017020  2c 23 30 0d 8a fc 0d 2e  6d 61 70 70 69 78 6c 70  |,#0.....mappixlp|
00017030  0d 8b 06 18 4c 44 52 42  20 52 36 2c 5b 52 31 5d  |....LDRB R6,[R1]|
00017040  2c 23 73 74 65 70 32 34  0d 8b 10 05 5d 0d 8b 1a  |,#step24....]...|
00017050  05 cd 0d 8b 24 0e c8 8e  20 69 6e 70 75 74 20 ca  |....$... input .|
00017060  0d 8b 2e 07 c9 20 38 0d  8b 38 0a e7 68 61 6d 20  |..... 8..8..ham |
00017070  8c 0d 8b 42 0a 5b 4f 50  54 20 5a 0d 8b 4c 11 41  |...B.[OPT Z..L.A|
00017080  44 52 20 52 39 2c 6c 74  61 62 6c 65 0d 8b 56 21  |DR R9,ltable..V!|
00017090  4d 4f 56 53 20 52 37 2c  52 36 2c 4c 53 52 20 23  |MOVS R7,R6,LSR #|
000170a0  34 3a 80 20 52 36 2c 52  36 2c 23 31 35 0d 8b 60  |4:. R6,R6,#15..`|
000170b0  4e 4c 44 52 45 51 20 52  31 30 2c 5b 52 32 2c 52  |NLDREQ R10,[R2,R|
000170c0  36 2c 4c 53 4c 20 23 32  5d 3a 4c 44 52 45 51 20  |6,LSL #2]:LDREQ |
000170d0  52 31 31 2c 5b 52 33 2c  52 36 2c 4c 53 4c 20 23  |R11,[R3,R6,LSL #|
000170e0  32 5d 3a 4c 44 52 45 51  20 52 31 32 2c 5b 52 34  |2]:LDREQ R12,[R4|
000170f0  2c 52 36 2c 4c 53 4c 20  23 32 5d 0d 8b 6a 26 43  |,R6,LSL #2]..j&C|
00017100  4d 50 20 52 37 2c 23 31  3a 4c 44 52 45 51 20 52  |MP R7,#1:LDREQ R|
00017110  31 32 2c 5b 52 39 2c 52  36 2c 4c 53 4c 20 23 32  |12,[R9,R6,LSL #2|
00017120  5d 0d 8b 74 26 43 4d 50  20 52 37 2c 23 32 3a 4c  |]..t&CMP R7,#2:L|
00017130  44 52 45 51 20 52 31 30  2c 5b 52 39 2c 52 36 2c  |DREQ R10,[R9,R6,|
00017140  4c 53 4c 20 23 32 5d 0d  8b 7e 26 43 4d 50 20 52  |LSL #2]..~&CMP R|
00017150  37 2c 23 33 3a 4c 44 52  45 51 20 52 31 31 2c 5b  |7,#3:LDREQ R11,[|
00017160  52 39 2c 52 36 2c 4c 53  4c 20 23 32 5d 0d 8b 88  |R9,R6,LSL #2]...|
00017170  1b 53 54 4d 49 41 20 52  35 21 2c 7b 52 31 30 2c  |.STMIA R5!,{R10,|
00017180  52 31 31 2c 52 31 32 7d  0d 8b 92 1e 53 55 42 53  |R11,R12}....SUBS|
00017190  20 52 30 2c 52 30 2c 23  31 3a 42 4e 45 20 6d 61  | R0,R0,#1:BNE ma|
000171a0  70 70 69 78 6c 70 0d 8b  9c 0f 4d 4f 56 53 20 50  |ppixlp....MOVS P|
000171b0  43 2c 52 31 34 0d 8b a6  0b 2e 6c 74 61 62 6c 65  |C,R14.....ltable|
000171c0  0d 8b b0 05 5d 0d 8b ba  0c e3 49 25 3d 30 b8 31  |....].....I%=0.1|
000171d0  35 0d 8b c4 0a 5b 4f 50  54 20 5a 0d 8b ce 10 45  |5....[OPT Z....E|
000171e0  51 55 44 20 49 25 2f 31  35 2a 46 0d 8b d8 05 5d  |QUD I%/15*F....]|
000171f0  0d 8b e2 05 ed 0d 8b ec  05 cc 0d 8b f6 12 e7 68  |...............h|
00017200  70 72 65 64 69 63 74 25  3d 32 20 8c 0d 8c 00 0a  |predict%=2 .....|
00017210  5b 4f 50 54 20 5a 0d 8c  0a 11 41 44 44 20 52 36  |[OPT Z....ADD R6|
00017220  2c 52 36 2c 52 31 30 0d  8c 14 10 80 20 52 36 2c  |,R6,R10..... R6,|
00017230  52 36 2c 23 32 35 35 0d  8c 1e 0e 4d 4f 56 20 52  |R6,#255....MOV R|
00017240  31 30 2c 52 36 0d 8c 28  05 5d 0d 8c 32 05 cd 0d  |10,R6..(.]..2...|
00017250  8c 3c 0a 5b 4f 50 54 20  5a 0d 8c 46 45 4c 44 52  |.<.[OPT Z..FELDR|
00017260  20 52 37 2c 5b 52 32 2c  52 36 2c 4c 53 4c 20 23  | R7,[R2,R6,LSL #|
00017270  32 5d 3a 4c 44 52 20 52  38 2c 5b 52 33 2c 52 36  |2]:LDR R8,[R3,R6|
00017280  2c 4c 53 4c 20 23 32 5d  3a 4c 44 52 20 52 39 2c  |,LSL #2]:LDR R9,|
00017290  5b 52 34 2c 52 36 2c 4c  53 4c 20 23 32 5d 0d 8c  |[R4,R6,LSL #2]..|
000172a0  50 18 53 54 4d 49 41 20  52 35 21 2c 7b 52 37 2c  |P.STMIA R5!,{R7,|
000172b0  52 38 2c 52 39 7d 0d 8c  5a 1e 53 55 42 53 20 52  |R8,R9}..Z.SUBS R|
000172c0  30 2c 52 30 2c 23 31 3a  42 4e 45 20 6d 61 70 70  |0,R0,#1:BNE mapp|
000172d0  69 78 6c 70 0d 8c 64 0f  4d 4f 56 53 20 50 43 2c  |ixlp..d.MOVS PC,|
000172e0  52 31 34 0d 8c 6e 05 5d  0d 8c 78 05 cd 0d 8c 82  |R14..n.]..x.....|
000172f0  07 c9 20 34 0d 8c 8c 14  e7 62 69 67 65 6e 64 69  |.. 4.....bigendi|
00017300  61 6e 62 69 74 73 20 8c  0d 8c 96 0a 5b 4f 50 54  |anbits .....[OPT|
00017310  20 5a 0d 8c a0 15 4d 4f  56 20 52 31 30 2c 52 36  | Z....MOV R10,R6|
00017320  2c 4c 53 52 20 23 34 0d  8c aa 48 4c 44 52 20 52  |,LSR #4...HLDR R|
00017330  37 2c 5b 52 32 2c 52 31  30 2c 4c 53 4c 20 23 32  |7,[R2,R10,LSL #2|
00017340  5d 3a 4c 44 52 20 52 38  2c 5b 52 33 2c 52 31 30  |]:LDR R8,[R3,R10|
00017350  2c 4c 53 4c 20 23 32 5d  3a 4c 44 52 20 52 39 2c  |,LSL #2]:LDR R9,|
00017360  5b 52 34 2c 52 31 30 2c  4c 53 4c 20 23 32 5d 0d  |[R4,R10,LSL #2].|
00017370  8c b4 18 53 54 4d 49 41  20 52 35 21 2c 7b 52 37  |...STMIA R5!,{R7|
00017380  2c 52 38 2c 52 39 7d 0d  8c be 10 80 20 52 31 30  |,R8,R9}..... R10|
00017390  2c 52 36 2c 23 26 46 0d  8c c8 05 5d 0d 8c d2 05  |,R6,#&F....]....|
000173a0  cc 0d 8c dc 0a 5b 4f 50  54 20 5a 0d 8c e6 10 80  |.....[OPT Z.....|
000173b0  20 52 31 30 2c 52 36 2c  23 26 46 0d 8c f0 48 4c  | R10,R6,#&F...HL|
000173c0  44 52 20 52 37 2c 5b 52  32 2c 52 31 30 2c 4c 53  |DR R7,[R2,R10,LS|
000173d0  4c 20 23 32 5d 3a 4c 44  52 20 52 38 2c 5b 52 33  |L #2]:LDR R8,[R3|
000173e0  2c 52 31 30 2c 4c 53 4c  20 23 32 5d 3a 4c 44 52  |,R10,LSL #2]:LDR|
000173f0  20 52 39 2c 5b 52 34 2c  52 31 30 2c 4c 53 4c 20  | R9,[R4,R10,LSL |
00017400  23 32 5d 0d 8c fa 18 53  54 4d 49 41 20 52 35 21  |#2]....STMIA R5!|
00017410  2c 7b 52 37 2c 52 38 2c  52 39 7d 0d 8d 04 15 4d  |,{R7,R8,R9}....M|
00017420  4f 56 20 52 31 30 2c 52  36 2c 4c 53 52 20 23 34  |OV R10,R6,LSR #4|
00017430  0d 8d 0e 05 5d 0d 8d 18  05 cd 0d 8d 22 0a 5b 4f  |....].......".[O|
00017440  50 54 20 5a 0d 8d 2c 48  4c 44 52 20 52 37 2c 5b  |PT Z..,HLDR R7,[|
00017450  52 32 2c 52 31 30 2c 4c  53 4c 20 23 32 5d 3a 4c  |R2,R10,LSL #2]:L|
00017460  44 52 20 52 38 2c 5b 52  33 2c 52 31 30 2c 4c 53  |DR R8,[R3,R10,LS|
00017470  4c 20 23 32 5d 3a 4c 44  52 20 52 39 2c 5b 52 34  |L #2]:LDR R9,[R4|
00017480  2c 52 31 30 2c 4c 53 4c  20 23 32 5d 0d 8d 36 18  |,R10,LSL #2]..6.|
00017490  53 54 4d 49 41 20 52 35  21 2c 7b 52 37 2c 52 38  |STMIA R5!,{R7,R8|
000174a0  2c 52 39 7d 0d 8d 40 1e  53 55 42 53 20 52 30 2c  |,R9}..@.SUBS R0,|
000174b0  52 30 2c 23 32 3a 42 48  49 20 6d 61 70 70 69 78  |R0,#2:BHI mappix|
000174c0  6c 70 0d 8d 4a 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp..J.MOVS PC,R1|
000174d0  34 0d 8d 54 05 5d 0d 8d  5e 07 c9 20 32 0d 8d 68  |4..T.]..^.. 2..h|
000174e0  14 e7 62 69 67 65 6e 64  69 61 6e 62 69 74 73 20  |..bigendianbits |
000174f0  8c 0d 8d 72 0a 5b 4f 50  54 20 5a 0d 8d 7c 15 4d  |...r.[OPT Z..|.M|
00017500  4f 56 20 52 31 30 2c 52  36 2c 4c 53 52 20 23 36  |OV R10,R6,LSR #6|
00017510  0d 8d 86 48 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |...HLDR R7,[R2,R|
00017520  31 30 2c 4c 53 4c 20 23  32 5d 3a 4c 44 52 20 52  |10,LSL #2]:LDR R|
00017530  38 2c 5b 52 33 2c 52 31  30 2c 4c 53 4c 20 23 32  |8,[R3,R10,LSL #2|
00017540  5d 3a 4c 44 52 20 52 39  2c 5b 52 34 2c 52 31 30  |]:LDR R9,[R4,R10|
00017550  2c 4c 53 4c 20 23 32 5d  0d 8d 90 18 53 54 4d 49  |,LSL #2]....STMI|
00017560  41 20 52 35 21 2c 7b 52  37 2c 52 38 2c 52 39 7d  |A R5!,{R7,R8,R9}|
00017570  0d 8d 9a 11 80 20 52 31  30 2c 52 36 2c 23 26 33  |..... R10,R6,#&3|
00017580  30 0d 8d a4 48 4c 44 52  20 52 37 2c 5b 52 32 2c  |0...HLDR R7,[R2,|
00017590  52 31 30 2c 4c 53 52 20  23 32 5d 3a 4c 44 52 20  |R10,LSR #2]:LDR |
000175a0  52 38 2c 5b 52 33 2c 52  31 30 2c 4c 53 52 20 23  |R8,[R3,R10,LSR #|
000175b0  32 5d 3a 4c 44 52 20 52  39 2c 5b 52 34 2c 52 31  |2]:LDR R9,[R4,R1|
000175c0  30 2c 4c 53 52 20 23 32  5d 0d 8d ae 18 53 54 4d  |0,LSR #2]....STM|
000175d0  49 41 20 52 35 21 2c 7b  52 37 2c 52 38 2c 52 39  |IA R5!,{R7,R8,R9|
000175e0  7d 0d 8d b8 10 80 20 52  31 30 2c 52 36 2c 23 26  |}..... R10,R6,#&|
000175f0  43 0d 8d c2 33 4c 44 52  20 52 37 2c 5b 52 32 2c  |C...3LDR R7,[R2,|
00017600  52 31 30 5d 3a 4c 44 52  20 52 38 2c 5b 52 33 2c  |R10]:LDR R8,[R3,|
00017610  52 31 30 5d 3a 4c 44 52  20 52 39 2c 5b 52 34 2c  |R10]:LDR R9,[R4,|
00017620  52 31 30 5d 0d 8d cc 18  53 54 4d 49 41 20 52 35  |R10]....STMIA R5|
00017630  21 2c 7b 52 37 2c 52 38  2c 52 39 7d 0d 8d d6 10  |!,{R7,R8,R9}....|
00017640  80 20 52 31 30 2c 52 36  2c 23 26 33 0d 8d e0 05  |. R10,R6,#&3....|
00017650  5d 0d 8d ea 05 cc 0d 8d  f4 0a 5b 4f 50 54 20 5a  |].........[OPT Z|
00017660  0d 8d fe 10 80 20 52 31  30 2c 52 36 2c 23 26 33  |..... R10,R6,#&3|
00017670  0d 8e 08 48 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |...HLDR R7,[R2,R|
00017680  31 30 2c 4c 53 4c 20 23  32 5d 3a 4c 44 52 20 52  |10,LSL #2]:LDR R|
00017690  38 2c 5b 52 33 2c 52 31  30 2c 4c 53 4c 20 23 32  |8,[R3,R10,LSL #2|
000176a0  5d 3a 4c 44 52 20 52 39  2c 5b 52 34 2c 52 31 30  |]:LDR R9,[R4,R10|
000176b0  2c 4c 53 4c 20 23 32 5d  0d 8e 12 18 53 54 4d 49  |,LSL #2]....STMI|
000176c0  41 20 52 35 21 2c 7b 52  37 2c 52 38 2c 52 39 7d  |A R5!,{R7,R8,R9}|
000176d0  0d 8e 1c 10 80 20 52 31  30 2c 52 36 2c 23 26 43  |..... R10,R6,#&C|
000176e0  0d 8e 26 33 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |..&3LDR R7,[R2,R|
000176f0  31 30 5d 3a 4c 44 52 20  52 38 2c 5b 52 33 2c 52  |10]:LDR R8,[R3,R|
00017700  31 30 5d 3a 4c 44 52 20  52 39 2c 5b 52 34 2c 52  |10]:LDR R9,[R4,R|
00017710  31 30 5d 0d 8e 30 18 53  54 4d 49 41 20 52 35 21  |10]..0.STMIA R5!|
00017720  2c 7b 52 37 2c 52 38 2c  52 39 7d 0d 8e 3a 11 80  |,{R7,R8,R9}..:..|
00017730  20 52 31 30 2c 52 36 2c  23 26 33 30 0d 8e 44 48  | R10,R6,#&30..DH|
00017740  4c 44 52 20 52 37 2c 5b  52 32 2c 52 31 30 2c 4c  |LDR R7,[R2,R10,L|
00017750  53 52 20 23 32 5d 3a 4c  44 52 20 52 38 2c 5b 52  |SR #2]:LDR R8,[R|
00017760  33 2c 52 31 30 2c 4c 53  52 20 23 32 5d 3a 4c 44  |3,R10,LSR #2]:LD|
00017770  52 20 52 39 2c 5b 52 34  2c 52 31 30 2c 4c 53 52  |R R9,[R4,R10,LSR|
00017780  20 23 32 5d 0d 8e 4e 18  53 54 4d 49 41 20 52 35  | #2]..N.STMIA R5|
00017790  21 2c 7b 52 37 2c 52 38  2c 52 39 7d 0d 8e 58 15  |!,{R7,R8,R9}..X.|
000177a0  4d 4f 56 20 52 31 30 2c  52 36 2c 4c 53 52 20 23  |MOV R10,R6,LSR #|
000177b0  36 0d 8e 62 05 5d 0d 8e  6c 05 cd 0d 8e 76 0a 5b  |6..b.]..l....v.[|
000177c0  4f 50 54 20 5a 0d 8e 80  48 4c 44 52 20 52 37 2c  |OPT Z...HLDR R7,|
000177d0  5b 52 32 2c 52 31 30 2c  4c 53 4c 20 23 32 5d 3a  |[R2,R10,LSL #2]:|
000177e0  4c 44 52 20 52 38 2c 5b  52 33 2c 52 31 30 2c 4c  |LDR R8,[R3,R10,L|
000177f0  53 4c 20 23 32 5d 3a 4c  44 52 20 52 39 2c 5b 52  |SL #2]:LDR R9,[R|
00017800  34 2c 52 31 30 2c 4c 53  4c 20 23 32 5d 0d 8e 8a  |4,R10,LSL #2]...|
00017810  18 53 54 4d 49 41 20 52  35 21 2c 7b 52 37 2c 52  |.STMIA R5!,{R7,R|
00017820  38 2c 52 39 7d 0d 8e 94  1e 53 55 42 53 20 52 30  |8,R9}....SUBS R0|
00017830  2c 52 30 2c 23 34 3a 42  48 49 20 6d 61 70 70 69  |,R0,#4:BHI mappi|
00017840  78 6c 70 0d 8e 9e 0f 4d  4f 56 53 20 50 43 2c 52  |xlp....MOVS PC,R|
00017850  31 34 0d 8e a8 05 5d 0d  8e b2 07 c9 20 31 0d 8e  |14....]..... 1..|
00017860  bc 14 e7 62 69 67 65 6e  64 69 61 6e 62 69 74 73  |...bigendianbits|
00017870  20 8c 0d 8e c6 0a 5b 4f  50 54 20 5a 0d 8e d0 11  | .....[OPT Z....|
00017880  80 20 52 31 30 2c 52 36  2c 23 26 38 30 0d 8e da  |. R10,R6,#&80...|
00017890  48 4c 44 52 20 52 37 2c  5b 52 32 2c 52 31 30 2c  |HLDR R7,[R2,R10,|
000178a0  4c 53 52 20 23 35 5d 3a  4c 44 52 20 52 38 2c 5b  |LSR #5]:LDR R8,[|
000178b0  52 33 2c 52 31 30 2c 4c  53 52 20 23 35 5d 3a 4c  |R3,R10,LSR #5]:L|
000178c0  44 52 20 52 39 2c 5b 52  34 2c 52 31 30 2c 4c 53  |DR R9,[R4,R10,LS|
000178d0  52 20 23 35 5d 0d 8e e4  18 53 54 4d 49 41 20 52  |R #5]....STMIA R|
000178e0  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 8e ee  |5!,{R7,R8,R9}...|
000178f0  11 80 20 52 31 30 2c 52  36 2c 23 26 34 30 0d 8e  |.. R10,R6,#&40..|
00017900  f8 48 4c 44 52 20 52 37  2c 5b 52 32 2c 52 31 30  |.HLDR R7,[R2,R10|
00017910  2c 4c 53 52 20 23 34 5d  3a 4c 44 52 20 52 38 2c  |,LSR #4]:LDR R8,|
00017920  5b 52 33 2c 52 31 30 2c  4c 53 52 20 23 34 5d 3a  |[R3,R10,LSR #4]:|
00017930  4c 44 52 20 52 39 2c 5b  52 34 2c 52 31 30 2c 4c  |LDR R9,[R4,R10,L|
00017940  53 52 20 23 34 5d 0d 8f  02 18 53 54 4d 49 41 20  |SR #4]....STMIA |
00017950  52 35 21 2c 7b 52 37 2c  52 38 2c 52 39 7d 0d 8f  |R5!,{R7,R8,R9}..|
00017960  0c 11 80 20 52 31 30 2c  52 36 2c 23 26 32 30 0d  |... R10,R6,#&20.|
00017970  8f 16 48 4c 44 52 20 52  37 2c 5b 52 32 2c 52 31  |..HLDR R7,[R2,R1|
00017980  30 2c 4c 53 52 20 23 33  5d 3a 4c 44 52 20 52 38  |0,LSR #3]:LDR R8|
00017990  2c 5b 52 33 2c 52 31 30  2c 4c 53 52 20 23 33 5d  |,[R3,R10,LSR #3]|
000179a0  3a 4c 44 52 20 52 39 2c  5b 52 34 2c 52 31 30 2c  |:LDR R9,[R4,R10,|
000179b0  4c 53 52 20 23 33 5d 0d  8f 20 18 53 54 4d 49 41  |LSR #3].. .STMIA|
000179c0  20 52 35 21 2c 7b 52 37  2c 52 38 2c 52 39 7d 0d  | R5!,{R7,R8,R9}.|
000179d0  8f 2a 11 80 20 52 31 30  2c 52 36 2c 23 26 31 30  |.*.. R10,R6,#&10|
000179e0  0d 8f 34 48 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |..4HLDR R7,[R2,R|
000179f0  31 30 2c 4c 53 52 20 23  32 5d 3a 4c 44 52 20 52  |10,LSR #2]:LDR R|
00017a00  38 2c 5b 52 33 2c 52 31  30 2c 4c 53 52 20 23 32  |8,[R3,R10,LSR #2|
00017a10  5d 3a 4c 44 52 20 52 39  2c 5b 52 34 2c 52 31 30  |]:LDR R9,[R4,R10|
00017a20  2c 4c 53 52 20 23 32 5d  0d 8f 3e 18 53 54 4d 49  |,LSR #2]..>.STMI|
00017a30  41 20 52 35 21 2c 7b 52  37 2c 52 38 2c 52 39 7d  |A R5!,{R7,R8,R9}|
00017a40  0d 8f 48 10 80 20 52 31  30 2c 52 36 2c 23 26 38  |..H.. R10,R6,#&8|
00017a50  0d 8f 52 48 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |..RHLDR R7,[R2,R|
00017a60  31 30 2c 4c 53 52 20 23  31 5d 3a 4c 44 52 20 52  |10,LSR #1]:LDR R|
00017a70  38 2c 5b 52 33 2c 52 31  30 2c 4c 53 52 20 23 31  |8,[R3,R10,LSR #1|
00017a80  5d 3a 4c 44 52 20 52 39  2c 5b 52 34 2c 52 31 30  |]:LDR R9,[R4,R10|
00017a90  2c 4c 53 52 20 23 31 5d  0d 8f 5c 18 53 54 4d 49  |,LSR #1]..\.STMI|
00017aa0  41 20 52 35 21 2c 7b 52  37 2c 52 38 2c 52 39 7d  |A R5!,{R7,R8,R9}|
00017ab0  0d 8f 66 10 80 20 52 31  30 2c 52 36 2c 23 26 34  |..f.. R10,R6,#&4|
00017ac0  0d 8f 70 33 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |..p3LDR R7,[R2,R|
00017ad0  31 30 5d 3a 4c 44 52 20  52 38 2c 5b 52 33 2c 52  |10]:LDR R8,[R3,R|
00017ae0  31 30 5d 3a 4c 44 52 20  52 39 2c 5b 52 34 2c 52  |10]:LDR R9,[R4,R|
00017af0  31 30 5d 0d 8f 7a 18 53  54 4d 49 41 20 52 35 21  |10]..z.STMIA R5!|
00017b00  2c 7b 52 37 2c 52 38 2c  52 39 7d 0d 8f 84 10 80  |,{R7,R8,R9}.....|
00017b10  20 52 31 30 2c 52 36 2c  23 26 32 0d 8f 8e 48 4c  | R10,R6,#&2...HL|
00017b20  44 52 20 52 37 2c 5b 52  32 2c 52 31 30 2c 4c 53  |DR R7,[R2,R10,LS|
00017b30  4c 20 23 31 5d 3a 4c 44  52 20 52 38 2c 5b 52 33  |L #1]:LDR R8,[R3|
00017b40  2c 52 31 30 2c 4c 53 4c  20 23 31 5d 3a 4c 44 52  |,R10,LSL #1]:LDR|
00017b50  20 52 39 2c 5b 52 34 2c  52 31 30 2c 4c 53 4c 20  | R9,[R4,R10,LSL |
00017b60  23 31 5d 0d 8f 98 18 53  54 4d 49 41 20 52 35 21  |#1]....STMIA R5!|
00017b70  2c 7b 52 37 2c 52 38 2c  52 39 7d 0d 8f a2 10 80  |,{R7,R8,R9}.....|
00017b80  20 52 31 30 2c 52 36 2c  23 26 31 0d 8f ac 05 5d  | R10,R6,#&1....]|
00017b90  0d 8f b6 05 cc 0d 8f c0  0a 5b 4f 50 54 20 5a 0d  |.........[OPT Z.|
00017ba0  8f ca 10 80 20 52 31 30  2c 52 36 2c 23 26 31 0d  |.... R10,R6,#&1.|
00017bb0  8f d4 48 4c 44 52 20 52  37 2c 5b 52 32 2c 52 31  |..HLDR R7,[R2,R1|
00017bc0  30 2c 4c 53 4c 20 23 32  5d 3a 4c 44 52 20 52 38  |0,LSL #2]:LDR R8|
00017bd0  2c 5b 52 33 2c 52 31 30  2c 4c 53 4c 20 23 32 5d  |,[R3,R10,LSL #2]|
00017be0  3a 4c 44 52 20 52 39 2c  5b 52 34 2c 52 31 30 2c  |:LDR R9,[R4,R10,|
00017bf0  4c 53 4c 20 23 32 5d 0d  8f de 18 53 54 4d 49 41  |LSL #2]....STMIA|
00017c00  20 52 35 21 2c 7b 52 37  2c 52 38 2c 52 39 7d 0d  | R5!,{R7,R8,R9}.|
00017c10  8f e8 10 80 20 52 31 30  2c 52 36 2c 23 26 32 0d  |.... R10,R6,#&2.|
00017c20  8f f2 48 4c 44 52 20 52  37 2c 5b 52 32 2c 52 31  |..HLDR R7,[R2,R1|
00017c30  30 2c 4c 53 4c 20 23 31  5d 3a 4c 44 52 20 52 38  |0,LSL #1]:LDR R8|
00017c40  2c 5b 52 33 2c 52 31 30  2c 4c 53 4c 20 23 31 5d  |,[R3,R10,LSL #1]|
00017c50  3a 4c 44 52 20 52 39 2c  5b 52 34 2c 52 31 30 2c  |:LDR R9,[R4,R10,|
00017c60  4c 53 4c 20 23 31 5d 0d  8f fc 18 53 54 4d 49 41  |LSL #1]....STMIA|
00017c70  20 52 35 21 2c 7b 52 37  2c 52 38 2c 52 39 7d 0d  | R5!,{R7,R8,R9}.|
00017c80  90 06 10 80 20 52 31 30  2c 52 36 2c 23 26 34 0d  |.... R10,R6,#&4.|
00017c90  90 10 33 4c 44 52 20 52  37 2c 5b 52 32 2c 52 31  |..3LDR R7,[R2,R1|
00017ca0  30 5d 3a 4c 44 52 20 52  38 2c 5b 52 33 2c 52 31  |0]:LDR R8,[R3,R1|
00017cb0  30 5d 3a 4c 44 52 20 52  39 2c 5b 52 34 2c 52 31  |0]:LDR R9,[R4,R1|
00017cc0  30 5d 0d 90 1a 18 53 54  4d 49 41 20 52 35 21 2c  |0]....STMIA R5!,|
00017cd0  7b 52 37 2c 52 38 2c 52  39 7d 0d 90 24 10 80 20  |{R7,R8,R9}..$.. |
00017ce0  52 31 30 2c 52 36 2c 23  26 38 0d 90 2e 48 4c 44  |R10,R6,#&8...HLD|
00017cf0  52 20 52 37 2c 5b 52 32  2c 52 31 30 2c 4c 53 52  |R R7,[R2,R10,LSR|
00017d00  20 23 31 5d 3a 4c 44 52  20 52 38 2c 5b 52 33 2c  | #1]:LDR R8,[R3,|
00017d10  52 31 30 2c 4c 53 52 20  23 31 5d 3a 4c 44 52 20  |R10,LSR #1]:LDR |
00017d20  52 39 2c 5b 52 34 2c 52  31 30 2c 4c 53 52 20 23  |R9,[R4,R10,LSR #|
00017d30  31 5d 0d 90 38 18 53 54  4d 49 41 20 52 35 21 2c  |1]..8.STMIA R5!,|
00017d40  7b 52 37 2c 52 38 2c 52  39 7d 0d 90 42 11 80 20  |{R7,R8,R9}..B.. |
00017d50  52 31 30 2c 52 36 2c 23  26 31 30 0d 90 4c 48 4c  |R10,R6,#&10..LHL|
00017d60  44 52 20 52 37 2c 5b 52  32 2c 52 31 30 2c 4c 53  |DR R7,[R2,R10,LS|
00017d70  52 20 23 32 5d 3a 4c 44  52 20 52 38 2c 5b 52 33  |R #2]:LDR R8,[R3|
00017d80  2c 52 31 30 2c 4c 53 52  20 23 32 5d 3a 4c 44 52  |,R10,LSR #2]:LDR|
00017d90  20 52 39 2c 5b 52 34 2c  52 31 30 2c 4c 53 52 20  | R9,[R4,R10,LSR |
00017da0  23 32 5d 0d 90 56 18 53  54 4d 49 41 20 52 35 21  |#2]..V.STMIA R5!|
00017db0  2c 7b 52 37 2c 52 38 2c  52 39 7d 0d 90 60 11 80  |,{R7,R8,R9}..`..|
00017dc0  20 52 31 30 2c 52 36 2c  23 26 32 30 0d 90 6a 48  | R10,R6,#&20..jH|
00017dd0  4c 44 52 20 52 37 2c 5b  52 32 2c 52 31 30 2c 4c  |LDR R7,[R2,R10,L|
00017de0  53 52 20 23 33 5d 3a 4c  44 52 20 52 38 2c 5b 52  |SR #3]:LDR R8,[R|
00017df0  33 2c 52 31 30 2c 4c 53  52 20 23 33 5d 3a 4c 44  |3,R10,LSR #3]:LD|
00017e00  52 20 52 39 2c 5b 52 34  2c 52 31 30 2c 4c 53 52  |R R9,[R4,R10,LSR|
00017e10  20 23 33 5d 0d 90 74 18  53 54 4d 49 41 20 52 35  | #3]..t.STMIA R5|
00017e20  21 2c 7b 52 37 2c 52 38  2c 52 39 7d 0d 90 7e 11  |!,{R7,R8,R9}..~.|
00017e30  80 20 52 31 30 2c 52 36  2c 23 26 34 30 0d 90 88  |. R10,R6,#&40...|
00017e40  48 4c 44 52 20 52 37 2c  5b 52 32 2c 52 31 30 2c  |HLDR R7,[R2,R10,|
00017e50  4c 53 52 20 23 34 5d 3a  4c 44 52 20 52 38 2c 5b  |LSR #4]:LDR R8,[|
00017e60  52 33 2c 52 31 30 2c 4c  53 52 20 23 34 5d 3a 4c  |R3,R10,LSR #4]:L|
00017e70  44 52 20 52 39 2c 5b 52  34 2c 52 31 30 2c 4c 53  |DR R9,[R4,R10,LS|
00017e80  52 20 23 34 5d 0d 90 92  18 53 54 4d 49 41 20 52  |R #4]....STMIA R|
00017e90  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 90 9c  |5!,{R7,R8,R9}...|
00017ea0  15 4d 4f 56 20 52 31 30  2c 52 36 2c 4c 53 52 20  |.MOV R10,R6,LSR |
00017eb0  23 37 0d 90 a6 05 5d 0d  90 b0 05 cd 0d 90 ba 0a  |#7....].........|
00017ec0  5b 4f 50 54 20 5a 0d 90  c4 48 4c 44 52 20 52 37  |[OPT Z...HLDR R7|
00017ed0  2c 5b 52 32 2c 52 31 30  2c 4c 53 4c 20 23 32 5d  |,[R2,R10,LSL #2]|
00017ee0  3a 4c 44 52 20 52 38 2c  5b 52 33 2c 52 31 30 2c  |:LDR R8,[R3,R10,|
00017ef0  4c 53 4c 20 23 32 5d 3a  4c 44 52 20 52 39 2c 5b  |LSL #2]:LDR R9,[|
00017f00  52 34 2c 52 31 30 2c 4c  53 4c 20 23 32 5d 0d 90  |R4,R10,LSL #2]..|
00017f10  ce 18 53 54 4d 49 41 20  52 35 21 2c 7b 52 37 2c  |..STMIA R5!,{R7,|
00017f20  52 38 2c 52 39 7d 0d 90  d8 1e 53 55 42 53 20 52  |R8,R9}....SUBS R|
00017f30  30 2c 52 30 2c 23 38 3a  42 48 49 20 6d 61 70 70  |0,R0,#8:BHI mapp|
00017f40  69 78 6c 70 0d 90 e2 0f  4d 4f 56 53 20 50 43 2c  |ixlp....MOVS PC,|
00017f50  52 31 34 0d 90 ec 05 5d  0d 90 f6 08 c9 20 31 36  |R14....]..... 16|
00017f60  0d 91 00 0a 5b 4f 50 54  20 5a 0d 91 0a 0d 2e 6d  |....[OPT Z.....m|
00017f70  61 70 70 69 78 25 20 0d  91 14 11 4c 44 52 20 52  |appix% ....LDR R|
00017f80  30 2c 73 78 6c 6f 63 20  0d 91 1e 1c 4c 44 52 20  |0,sxloc ....LDR |
00017f90  52 31 2c 5b 52 39 5d 3a  4c 44 52 20 52 31 2c 5b  |R1,[R9]:LDR R1,[|
00017fa0  52 31 5d 20 0d 91 28 1f  4c 44 52 20 52 32 2c 5b  |R1] ..(.LDR R2,[|
00017fb0  52 39 2c 23 38 5d 3a 4c  44 52 20 52 32 2c 5b 52  |R9,#8]:LDR R2,[R|
00017fc0  32 5d 20 0d 91 32 15 4c  44 52 20 52 33 2c 5b 52  |2] ..2.LDR R3,[R|
00017fd0  39 2c 23 34 2a 38 5d 20  0d 91 3c 15 4c 44 52 20  |9,#4*8] ..<.LDR |
00017fe0  52 34 2c 5b 52 39 2c 23  33 2a 38 5d 20 0d 91 46  |R4,[R9,#3*8] ..F|
00017ff0  15 4c 44 52 20 52 35 2c  5b 52 39 2c 23 32 2a 38  |.LDR R5,[R9,#2*8|
00018000  5d 20 0d 91 50 15 4c 44  52 20 52 36 2c 5b 52 39  |] ..P.LDR R6,[R9|
00018010  2c 23 35 2a 38 5d 20 0d  91 5a 15 4c 44 52 20 52  |,#5*8] ..Z.LDR R|
00018020  37 2c 5b 52 39 2c 23 36  2a 38 5d 20 0d 91 64 15  |7,[R9,#6*8] ..d.|
00018030  4c 44 52 20 52 38 2c 5b  52 39 2c 23 37 2a 38 5d  |LDR R8,[R9,#7*8]|
00018040  20 0d 91 6e 0d 43 4d 50  20 52 31 2c 52 32 0d 91  | ..n.CMP R1,R2..|
00018050  78 12 41 44 44 45 51 20  52 32 2c 52 32 2c 23 31  |x.ADDEQ R2,R2,#1|
00018060  0d 91 82 0d 2e 6d 61 70  70 69 78 6c 70 0d 91 8c  |.....mappixlp...|
00018070  2e 4c 44 52 42 20 52 39  2c 5b 52 31 5d 2c 23 73  |.LDRB R9,[R1],#s|
00018080  74 65 70 32 34 3a 4c 44  52 42 20 52 31 30 2c 5b  |tep24:LDRB R10,[|
00018090  52 32 5d 2c 23 73 74 65  70 32 34 0d 91 96 3e 4c  |R2],#step24...>L|
000180a0  44 52 20 52 39 2c 5b 52  36 2c 52 39 2c 4c 53 4c  |DR R9,[R6,R9,LSL|
000180b0  20 23 32 5d 3a 4c 44 52  20 52 31 30 2c 5b 52 37  | #2]:LDR R10,[R7|
000180c0  2c 52 31 30 2c 4c 53 4c  20 23 32 5d 3a 84 52 20  |,R10,LSL #2]:.R |
000180d0  52 39 2c 52 39 2c 52 31  30 0d 91 a0 29 80 20 52  |R9,R9,R10...). R|
000180e0  31 30 2c 52 39 2c 23 32  35 35 3a 4c 44 52 20 52  |10,R9,#255:LDR R|
000180f0  31 30 2c 5b 52 33 2c 52  31 30 2c 4c 53 4c 20 23  |10,[R3,R10,LSL #|
00018100  32 5d 0d 91 aa 3c 4d 4f  56 20 52 31 31 2c 52 39  |2]...<MOV R11,R9|
00018110  2c 4c 53 52 20 23 38 3a  80 20 52 31 31 2c 52 31  |,LSR #8:. R11,R1|
00018120  31 2c 23 32 35 35 3a 4c  44 52 20 52 31 31 2c 5b  |1,#255:LDR R11,[|
00018130  52 34 2c 52 31 31 2c 4c  53 4c 20 23 32 5d 0d 91  |R4,R11,LSL #2]..|
00018140  b4 2e 4d 4f 56 20 52 31  32 2c 52 39 2c 4c 53 52  |..MOV R12,R9,LSR|
00018150  20 23 31 36 3a 4c 44 52  20 52 31 32 2c 5b 52 35  | #16:LDR R12,[R5|
00018160  2c 52 31 32 2c 4c 53 4c  20 23 32 5d 0d 91 be 1b  |,R12,LSL #2]....|
00018170  53 54 4d 49 41 20 52 38  21 2c 7b 52 31 30 2c 52  |STMIA R8!,{R10,R|
00018180  31 31 2c 52 31 32 7d 0d  91 c8 1e 53 55 42 53 20  |11,R12}....SUBS |
00018190  52 30 2c 52 30 2c 23 31  3a 42 4e 45 20 6d 61 70  |R0,R0,#1:BNE map|
000181a0  70 69 78 6c 70 0d 91 d2  0f 4d 4f 56 53 20 50 43  |pixlp....MOVS PC|
000181b0  2c 52 31 34 0d 91 dc 05  5d 0d 91 e6 08 c9 20 32  |,R14....]..... 2|
000181c0  34 0d 91 f0 0a 5b 4f 50  54 20 5a 0d 91 fa 0d 2e  |4....[OPT Z.....|
000181d0  6d 61 70 70 69 78 25 20  0d 92 04 11 4c 44 52 20  |mappix% ....LDR |
000181e0  52 30 2c 73 78 6c 6f 63  20 0d 92 0e 21 4c 44 52  |R0,sxloc ...!LDR|
000181f0  20 52 31 2c 5b 52 39 2c  23 32 2a 38 5d 3a 4c 44  | R1,[R9,#2*8]:LD|
00018200  52 20 52 31 2c 5b 52 31  5d 20 0d 92 18 1f 4c 44  |R R1,[R1] ....LD|
00018210  52 20 52 32 2c 5b 52 39  2c 23 38 5d 3a 4c 44 52  |R R2,[R9,#8]:LDR|
00018220  20 52 32 2c 5b 52 32 5d  20 0d 92 22 1c 4c 44 52  | R2,[R2] ..".LDR|
00018230  20 52 33 2c 5b 52 39 5d  3a 4c 44 52 20 52 33 2c  | R3,[R9]:LDR R3,|
00018240  5b 52 33 5d 20 0d 92 2c  15 4c 44 52 20 52 34 2c  |[R3] ..,.LDR R4,|
00018250  5b 52 39 2c 23 35 2a 38  5d 20 0d 92 36 15 4c 44  |[R9,#5*8] ..6.LD|
00018260  52 20 52 35 2c 5b 52 39  2c 23 34 2a 38 5d 20 0d  |R R5,[R9,#4*8] .|
00018270  92 40 15 4c 44 52 20 52  36 2c 5b 52 39 2c 23 33  |.@.LDR R6,[R9,#3|
00018280  2a 38 5d 20 0d 92 4a 15  4c 44 52 20 52 37 2c 5b  |*8] ..J.LDR R7,[|
00018290  52 39 2c 23 36 2a 38 5d  20 0d 92 54 0d 2e 6d 61  |R9,#6*8] ..T..ma|
000182a0  70 70 69 78 6c 70 0d 92  5e 2e 4c 44 52 42 20 52  |ppixlp..^.LDRB R|
000182b0  38 2c 5b 52 31 5d 2c 23  73 74 65 70 32 34 3a 4c  |8,[R1],#step24:L|
000182c0  44 52 20 52 39 2c 5b 52  34 2c 52 38 2c 4c 53 4c  |DR R9,[R4,R8,LSL|
000182d0  20 23 32 5d 0d 92 68 2f  4c 44 52 42 20 52 38 2c  | #2]..h/LDRB R8,|
000182e0  5b 52 32 5d 2c 23 73 74  65 70 32 34 3a 4c 44 52  |[R2],#step24:LDR|
000182f0  20 52 31 30 2c 5b 52 35  2c 52 38 2c 4c 53 4c 20  | R10,[R5,R8,LSL |
00018300  23 32 5d 0d 92 72 2f 4c  44 52 42 20 52 38 2c 5b  |#2]..r/LDRB R8,[|
00018310  52 33 5d 2c 23 73 74 65  70 32 34 3a 4c 44 52 20  |R3],#step24:LDR |
00018320  52 31 31 2c 5b 52 36 2c  52 38 2c 4c 53 4c 20 23  |R11,[R6,R8,LSL #|
00018330  32 5d 0d 92 7c 1a 53 54  4d 49 41 20 52 37 21 2c  |2]..|.STMIA R7!,|
00018340  7b 52 39 2c 52 31 30 2c  52 31 31 7d 0d 92 86 1e  |{R9,R10,R11}....|
00018350  53 55 42 53 20 52 30 2c  52 30 2c 23 31 3a 42 4e  |SUBS R0,R0,#1:BN|
00018360  45 20 6d 61 70 70 69 78  6c 70 0d 92 90 0f 4d 4f  |E mappixlp....MO|
00018370  56 53 20 50 43 2c 52 31  34 0d 92 9a 05 5d 0d 92  |VS PC,R14....]..|
00018380  a4 09 c9 20 34 31 31 0d  92 b8 0a 5b 4f 50 54 20  |... 411....[OPT |
00018390  5a 0d 92 c2 0d 2e 6d 61  70 70 69 78 25 20 0d 92  |Z.....mappix% ..|
000183a0  cc 11 4c 44 52 20 52 30  2c 73 78 6c 6f 63 20 0d  |..LDR R0,sxloc .|
000183b0  92 d6 1c 4c 44 52 20 52  31 2c 5b 52 39 5d 3a 4c  |...LDR R1,[R9]:L|
000183c0  44 52 20 52 31 2c 5b 52  31 5d 20 0d 92 e0 15 4c  |DR R1,[R1] ....L|
000183d0  44 52 20 52 32 2c 5b 52  39 2c 23 31 2a 38 5d 20  |DR R2,[R9,#1*8] |
000183e0  0d 92 ea 15 4c 44 52 20  52 33 2c 5b 52 39 2c 23  |....LDR R3,[R9,#|
000183f0  32 2a 38 5d 20 0d 92 f4  15 4c 44 52 20 52 35 2c  |2*8] ....LDR R5,|
00018400  5b 52 39 2c 23 34 2a 38  5d 20 0d 92 fe 15 4c 44  |[R9,#4*8] ....LD|
00018410  52 20 52 36 2c 5b 52 39  2c 23 35 2a 38 5d 20 0d  |R R6,[R9,#5*8] .|
00018420  93 08 15 4c 44 52 20 52  37 2c 5b 52 39 2c 23 36  |...LDR R7,[R9,#6|
00018430  2a 38 5d 20 0d 93 12 15  4c 44 52 20 52 39 2c 5b  |*8] ....LDR R9,[|
00018440  52 39 2c 23 38 2a 38 5d  20 0d 93 1c 14 53 54 4d  |R9,#8*8] ....STM|
00018450  46 44 20 53 50 20 21 2c  7b 52 31 34 7d 0d 93 26  |FD SP !,{R14}..&|
00018460  0d 2e 6d 61 70 70 69 78  6c 70 0d 93 30 17 4c 44  |..mappixlp..0.LD|
00018470  4d 49 41 20 52 31 21 2c  7b 52 34 2c 52 31 30 7d  |MIA R1!,{R4,R10}|
00018480  20 0d 93 3a 12 80 20 52  38 2c 52 34 2c 23 26 43  | ..:.. R8,R4,#&C|
00018490  30 30 30 0d 93 44 14 4d  4f 56 20 52 38 2c 52 38  |000..D.MOV R8,R8|
000184a0  2c 4c 53 52 20 23 38 0d  93 4e 17 80 20 52 31 34  |,LSR #8..N.. R14|
000184b0  2c 52 34 2c 23 26 43 30  30 30 30 30 30 30 0d 93  |,R4,#&C0000000..|
000184c0  58 1c 84 52 20 52 38 2c  52 38 2c 52 31 34 2c 4c  |X..R R8,R8,R14,L|
000184d0  53 52 20 23 31 36 2b 38  2b 32 0d 93 62 14 80 20  |SR #16+8+2..b.. |
000184e0  52 31 34 2c 52 31 30 2c  23 26 43 30 30 30 0d 93  |R14,R10,#&C000..|
000184f0  6c 19 84 52 20 52 38 2c  52 38 2c 52 31 34 2c 4c  |l..R R8,R8,R14,L|
00018500  53 52 20 23 38 2b 34 0d  93 76 1d 84 52 20 52 38  |SR #8+4..v..R R8|
00018510  2c 52 38 2c 52 31 30 2c  4c 53 52 20 23 31 36 2b  |,R8,R10,LSR #16+|
00018520  38 2b 36 20 0d 93 80 13  80 20 52 31 31 2c 52 34  |8+6 ..... R11,R4|
00018530  2c 23 26 33 30 30 30 0d  93 8a 16 4d 4f 56 20 52  |,#&3000....MOV R|
00018540  31 31 2c 52 31 31 2c 4c  53 52 20 23 36 0d 93 94  |11,R11,LSR #6...|
00018550  17 80 20 52 31 34 2c 52  34 2c 23 26 33 30 30 30  |.. R14,R4,#&3000|
00018560  30 30 30 30 0d 93 9e 1e  84 52 20 52 31 31 2c 52  |0000.....R R11,R|
00018570  31 31 2c 52 31 34 2c 4c  53 52 20 23 31 36 2b 36  |11,R14,LSR #16+6|
00018580  2b 32 0d 93 a8 14 80 20  52 31 34 2c 52 31 30 2c  |+2..... R14,R10,|
00018590  23 26 33 30 30 30 0d 93  b2 1b 84 52 20 52 31 31  |#&3000.....R R11|
000185a0  2c 52 31 31 2c 52 31 34  2c 4c 53 52 20 23 36 2b  |,R11,R14,LSR #6+|
000185b0  34 0d 93 bc 18 80 20 52  31 34 2c 52 31 30 2c 23  |4..... R14,R10,#|
000185c0  26 33 30 30 30 30 30 30  30 0d 93 c6 1f 84 52 20  |&30000000.....R |
000185d0  52 31 31 2c 52 31 31 2c  52 31 34 2c 4c 53 52 20  |R11,R11,R14,LSR |
000185e0  23 31 36 2b 36 2b 36 20  0d 93 da 12 80 20 52 31  |#16+6+6 ..... R1|
000185f0  32 2c 52 34 2c 23 26 46  46 20 0d 93 e4 1c 4c 44  |2,R4,#&FF ....LD|
00018600  52 20 52 31 32 2c 5b 52  32 2c 52 31 32 2c 4c 53  |R R12,[R2,R12,LS|
00018610  4c 20 23 32 5d 20 0d 93  ee 2c 4c 44 52 20 52 31  |L #2] ...,LDR R1|
00018620  34 2c 5b 52 37 2c 52 31  31 2c 4c 53 4c 20 23 32  |4,[R7,R11,LSL #2|
00018630  5d 3a 41 44 44 53 20 52  31 34 2c 52 31 34 2c 52  |]:ADDS R14,R14,R|
00018640  31 32 0d 93 f8 38 4d 4f  56 4d 49 20 52 31 34 2c  |12...8MOVMI R14,|
00018650  23 30 3a 43 4d 50 20 52  31 34 2c 23 46 3a 4d 4f  |#0:CMP R14,#F:MO|
00018660  56 43 53 20 52 31 34 2c  23 46 3a 53 54 52 20 52  |VCS R14,#F:STR R|
00018670  31 34 2c 5b 52 39 5d 2c  23 34 0d 94 02 2a 4c 44  |14,[R9],#4...*LD|
00018680  52 20 52 31 34 2c 5b 52  36 2c 52 38 2c 4c 53 4c  |R R14,[R6,R8,LSL|
00018690  20 23 32 5d 3a 41 44 44  20 52 31 34 2c 52 31 34  | #2]:ADD R14,R14|
000186a0  2c 52 31 32 0d 94 0c 2c  4c 44 52 20 52 31 32 2c  |,R12...,LDR R12,|
000186b0  5b 52 35 2c 52 31 31 2c  4c 53 4c 20 23 32 5d 3a  |[R5,R11,LSL #2]:|
000186c0  41 44 44 53 20 52 31 34  2c 52 31 34 2c 52 31 32  |ADDS R14,R14,R12|
000186d0  0d 94 16 38 4d 4f 56 4d  49 20 52 31 34 2c 23 30  |...8MOVMI R14,#0|
000186e0  3a 43 4d 50 20 52 31 34  2c 23 46 3a 4d 4f 56 43  |:CMP R14,#F:MOVC|
000186f0  53 20 52 31 34 2c 23 46  3a 53 54 52 20 52 31 34  |S R14,#F:STR R14|
00018700  2c 5b 52 39 5d 2c 23 34  0d 94 20 12 80 20 52 31  |,[R9],#4.. .. R1|
00018710  32 2c 52 34 2c 23 26 46  46 20 0d 94 2a 1c 4c 44  |2,R4,#&FF ..*.LD|
00018720  52 20 52 31 32 2c 5b 52  32 2c 52 31 32 2c 4c 53  |R R12,[R2,R12,LS|
00018730  4c 20 23 32 5d 20 0d 94  34 2b 4c 44 52 20 52 31  |L #2] ..4+LDR R1|
00018740  34 2c 5b 52 33 2c 52 38  2c 4c 53 4c 20 23 32 5d  |4,[R3,R8,LSL #2]|
00018750  3a 41 44 44 53 20 52 31  34 2c 52 31 32 2c 52 31  |:ADDS R14,R12,R1|
00018760  34 0d 94 3e 38 4d 4f 56  4d 49 20 52 31 34 2c 23  |4..>8MOVMI R14,#|
00018770  30 3a 43 4d 50 20 52 31  34 2c 23 46 3a 4d 4f 56  |0:CMP R14,#F:MOV|
00018780  43 53 20 52 31 34 2c 23  46 3a 53 54 52 20 52 31  |CS R14,#F:STR R1|
00018790  34 2c 5b 52 39 5d 2c 23  34 0d 94 52 15 4d 4f 56  |4,[R9],#4..R.MOV|
000187a0  20 52 34 2c 52 34 2c 4c  53 52 20 23 31 36 0d 94  | R4,R4,LSR #16..|
000187b0  5c 12 80 20 52 31 32 2c  52 34 2c 23 26 46 46 20  |\.. R12,R4,#&FF |
000187c0  0d 94 66 1c 4c 44 52 20  52 31 32 2c 5b 52 32 2c  |..f.LDR R12,[R2,|
000187d0  52 31 32 2c 4c 53 4c 20  23 32 5d 20 0d 94 70 2c  |R12,LSL #2] ..p,|
000187e0  4c 44 52 20 52 31 34 2c  5b 52 37 2c 52 31 31 2c  |LDR R14,[R7,R11,|
000187f0  4c 53 4c 20 23 32 5d 3a  41 44 44 53 20 52 31 34  |LSL #2]:ADDS R14|
00018800  2c 52 31 34 2c 52 31 32  0d 94 7a 38 4d 4f 56 4d  |,R14,R12..z8MOVM|
00018810  49 20 52 31 34 2c 23 30  3a 43 4d 50 20 52 31 34  |I R14,#0:CMP R14|
00018820  2c 23 46 3a 4d 4f 56 43  53 20 52 31 34 2c 23 46  |,#F:MOVCS R14,#F|
00018830  3a 53 54 52 20 52 31 34  2c 5b 52 39 5d 2c 23 34  |:STR R14,[R9],#4|
00018840  0d 94 84 2a 4c 44 52 20  52 31 34 2c 5b 52 36 2c  |...*LDR R14,[R6,|
00018850  52 38 2c 4c 53 4c 20 23  32 5d 3a 41 44 44 20 52  |R8,LSL #2]:ADD R|
00018860  31 34 2c 52 31 34 2c 52  31 32 0d 94 8e 2c 4c 44  |14,R14,R12...,LD|
00018870  52 20 52 31 32 2c 5b 52  35 2c 52 31 31 2c 4c 53  |R R12,[R5,R11,LS|
00018880  4c 20 23 32 5d 3a 41 44  44 53 20 52 31 34 2c 52  |L #2]:ADDS R14,R|
00018890  31 34 2c 52 31 32 0d 94  98 38 4d 4f 56 4d 49 20  |14,R12...8MOVMI |
000188a0  52 31 34 2c 23 30 3a 43  4d 50 20 52 31 34 2c 23  |R14,#0:CMP R14,#|
000188b0  46 3a 4d 4f 56 43 53 20  52 31 34 2c 23 46 3a 53  |F:MOVCS R14,#F:S|
000188c0  54 52 20 52 31 34 2c 5b  52 39 5d 2c 23 34 0d 94  |TR R14,[R9],#4..|
000188d0  a2 12 80 20 52 31 32 2c  52 34 2c 23 26 46 46 20  |... R12,R4,#&FF |
000188e0  0d 94 ac 1c 4c 44 52 20  52 31 32 2c 5b 52 32 2c  |....LDR R12,[R2,|
000188f0  52 31 32 2c 4c 53 4c 20  23 32 5d 20 0d 94 b6 2b  |R12,LSL #2] ...+|
00018900  4c 44 52 20 52 31 34 2c  5b 52 33 2c 52 38 2c 4c  |LDR R14,[R3,R8,L|
00018910  53 4c 20 23 32 5d 3a 41  44 44 53 20 52 31 34 2c  |SL #2]:ADDS R14,|
00018920  52 31 32 2c 52 31 34 0d  94 c0 38 4d 4f 56 4d 49  |R12,R14...8MOVMI|
00018930  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00018940  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00018950  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00018960  94 d4 13 80 20 52 31 32  2c 52 31 30 2c 23 26 46  |.... R12,R10,#&F|
00018970  46 20 0d 94 de 1c 4c 44  52 20 52 31 32 2c 5b 52  |F ....LDR R12,[R|
00018980  32 2c 52 31 32 2c 4c 53  4c 20 23 32 5d 20 0d 94  |2,R12,LSL #2] ..|
00018990  e8 2c 4c 44 52 20 52 31  34 2c 5b 52 37 2c 52 31  |.,LDR R14,[R7,R1|
000189a0  31 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 53 20 52  |1,LSL #2]:ADDS R|
000189b0  31 34 2c 52 31 34 2c 52  31 32 0d 94 f2 38 4d 4f  |14,R14,R12...8MO|
000189c0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
000189d0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
000189e0  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
000189f0  23 34 0d 94 fc 2a 4c 44  52 20 52 31 34 2c 5b 52  |#4...*LDR R14,[R|
00018a00  36 2c 52 38 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |6,R8,LSL #2]:ADD|
00018a10  20 52 31 34 2c 52 31 34  2c 52 31 32 0d 95 06 2c  | R14,R14,R12...,|
00018a20  4c 44 52 20 52 31 32 2c  5b 52 35 2c 52 31 31 2c  |LDR R12,[R5,R11,|
00018a30  4c 53 4c 20 23 32 5d 3a  41 44 44 53 20 52 31 34  |LSL #2]:ADDS R14|
00018a40  2c 52 31 34 2c 52 31 32  0d 95 10 38 4d 4f 56 4d  |,R14,R12...8MOVM|
00018a50  49 20 52 31 34 2c 23 30  3a 43 4d 50 20 52 31 34  |I R14,#0:CMP R14|
00018a60  2c 23 46 3a 4d 4f 56 43  53 20 52 31 34 2c 23 46  |,#F:MOVCS R14,#F|
00018a70  3a 53 54 52 20 52 31 34  2c 5b 52 39 5d 2c 23 34  |:STR R14,[R9],#4|
00018a80  0d 95 1a 13 80 20 52 31  32 2c 52 31 30 2c 23 26  |..... R12,R10,#&|
00018a90  46 46 20 0d 95 24 1c 4c  44 52 20 52 31 32 2c 5b  |FF ..$.LDR R12,[|
00018aa0  52 32 2c 52 31 32 2c 4c  53 4c 20 23 32 5d 20 0d  |R2,R12,LSL #2] .|
00018ab0  95 2e 2b 4c 44 52 20 52  31 34 2c 5b 52 33 2c 52  |..+LDR R14,[R3,R|
00018ac0  38 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 53 20 52  |8,LSL #2]:ADDS R|
00018ad0  31 34 2c 52 31 32 2c 52  31 34 0d 95 38 38 4d 4f  |14,R12,R14..88MO|
00018ae0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
00018af0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
00018b00  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
00018b10  23 34 0d 95 4c 17 4d 4f  56 20 52 31 30 2c 52 31  |#4..L.MOV R10,R1|
00018b20  30 2c 4c 53 52 20 23 31  36 0d 95 56 13 80 20 52  |0,LSR #16..V.. R|
00018b30  31 32 2c 52 31 30 2c 23  26 46 46 20 0d 95 60 1c  |12,R10,#&FF ..`.|
00018b40  4c 44 52 20 52 31 32 2c  5b 52 32 2c 52 31 32 2c  |LDR R12,[R2,R12,|
00018b50  4c 53 4c 20 23 32 5d 20  0d 95 6a 2c 4c 44 52 20  |LSL #2] ..j,LDR |
00018b60  52 31 34 2c 5b 52 37 2c  52 31 31 2c 4c 53 4c 20  |R14,[R7,R11,LSL |
00018b70  23 32 5d 3a 41 44 44 53  20 52 31 34 2c 52 31 34  |#2]:ADDS R14,R14|
00018b80  2c 52 31 32 0d 95 74 38  4d 4f 56 4d 49 20 52 31  |,R12..t8MOVMI R1|
00018b90  34 2c 23 30 3a 43 4d 50  20 52 31 34 2c 23 46 3a  |4,#0:CMP R14,#F:|
00018ba0  4d 4f 56 43 53 20 52 31  34 2c 23 46 3a 53 54 52  |MOVCS R14,#F:STR|
00018bb0  20 52 31 34 2c 5b 52 39  5d 2c 23 34 0d 95 7e 2a  | R14,[R9],#4..~*|
00018bc0  4c 44 52 20 52 31 34 2c  5b 52 36 2c 52 38 2c 4c  |LDR R14,[R6,R8,L|
00018bd0  53 4c 20 23 32 5d 3a 41  44 44 20 52 31 34 2c 52  |SL #2]:ADD R14,R|
00018be0  31 34 2c 52 31 32 0d 95  88 2c 4c 44 52 20 52 31  |14,R12...,LDR R1|
00018bf0  32 2c 5b 52 35 2c 52 31  31 2c 4c 53 4c 20 23 32  |2,[R5,R11,LSL #2|
00018c00  5d 3a 41 44 44 53 20 52  31 34 2c 52 31 34 2c 52  |]:ADDS R14,R14,R|
00018c10  31 32 0d 95 92 38 4d 4f  56 4d 49 20 52 31 34 2c  |12...8MOVMI R14,|
00018c20  23 30 3a 43 4d 50 20 52  31 34 2c 23 46 3a 4d 4f  |#0:CMP R14,#F:MO|
00018c30  56 43 53 20 52 31 34 2c  23 46 3a 53 54 52 20 52  |VCS R14,#F:STR R|
00018c40  31 34 2c 5b 52 39 5d 2c  23 34 0d 95 9c 13 80 20  |14,[R9],#4..... |
00018c50  52 31 32 2c 52 31 30 2c  23 26 46 46 20 0d 95 a6  |R12,R10,#&FF ...|
00018c60  1c 4c 44 52 20 52 31 32  2c 5b 52 32 2c 52 31 32  |.LDR R12,[R2,R12|
00018c70  2c 4c 53 4c 20 23 32 5d  20 0d 95 b0 2b 4c 44 52  |,LSL #2] ...+LDR|
00018c80  20 52 31 34 2c 5b 52 33  2c 52 38 2c 4c 53 4c 20  | R14,[R3,R8,LSL |
00018c90  23 32 5d 3a 41 44 44 53  20 52 31 34 2c 52 31 32  |#2]:ADDS R14,R12|
00018ca0  2c 52 31 34 0d 95 ba 38  4d 4f 56 4d 49 20 52 31  |,R14...8MOVMI R1|
00018cb0  34 2c 23 30 3a 43 4d 50  20 52 31 34 2c 23 46 3a  |4,#0:CMP R14,#F:|
00018cc0  4d 4f 56 43 53 20 52 31  34 2c 23 46 3a 53 54 52  |MOVCS R14,#F:STR|
00018cd0  20 52 31 34 2c 5b 52 39  5d 2c 23 34 0d 95 ce 1e  | R14,[R9],#4....|
00018ce0  53 55 42 53 20 52 30 2c  52 30 2c 23 34 3a 42 4e  |SUBS R0,R0,#4:BN|
00018cf0  45 20 6d 61 70 70 69 78  6c 70 0d 95 d8 14 4c 44  |E mappixlp....LD|
00018d00  4d 46 44 20 53 50 20 21  2c 7b 50 43 7d 5e 0d 95  |MFD SP !,{PC}^..|
00018d10  e2 05 5d 0d 95 ec 09 c9  20 34 32 33 0d 95 f6 0a  |..]..... 423....|
00018d20  5b 4f 50 54 20 5a 0d 96  00 0d 2e 6d 61 70 70 69  |[OPT Z.....mappi|
00018d30  78 25 20 0d 96 0a 11 4c  44 52 20 52 30 2c 73 78  |x% ....LDR R0,sx|
00018d40  6c 6f 63 20 0d 96 14 1c  4c 44 52 20 52 31 2c 5b  |loc ....LDR R1,[|
00018d50  52 39 5d 3a 4c 44 52 20  52 31 2c 5b 52 31 5d 20  |R9]:LDR R1,[R1] |
00018d60  0d 96 1e 15 4c 44 52 20  52 32 2c 5b 52 39 2c 23  |....LDR R2,[R9,#|
00018d70  31 2a 38 5d 20 0d 96 28  15 4c 44 52 20 52 33 2c  |1*8] ..(.LDR R3,|
00018d80  5b 52 39 2c 23 32 2a 38  5d 20 0d 96 32 15 4c 44  |[R9,#2*8] ..2.LD|
00018d90  52 20 52 34 2c 5b 52 39  2c 23 33 2a 38 5d 20 0d  |R R4,[R9,#3*8] .|
00018da0  96 3c 15 4c 44 52 20 52  35 2c 5b 52 39 2c 23 34  |.<.LDR R5,[R9,#4|
00018db0  2a 38 5d 20 0d 96 46 15  4c 44 52 20 52 36 2c 5b  |*8] ..F.LDR R6,[|
00018dc0  52 39 2c 23 35 2a 38 5d  20 0d 96 50 15 4c 44 52  |R9,#5*8] ..P.LDR|
00018dd0  20 52 37 2c 5b 52 39 2c  23 36 2a 38 5d 20 0d 96  | R7,[R9,#6*8] ..|
00018de0  5a 15 4c 44 52 20 52 38  2c 5b 52 39 2c 23 37 2a  |Z.LDR R8,[R9,#7*|
00018df0  38 5d 20 0d 96 64 15 4c  44 52 20 52 39 2c 5b 52  |8] ..d.LDR R9,[R|
00018e00  39 2c 23 38 2a 38 5d 20  0d 96 6e 14 53 54 4d 46  |9,#8*8] ..n.STMF|
00018e10  44 20 53 50 20 21 2c 7b  52 31 34 7d 0d 96 78 0d  |D SP !,{R14}..x.|
00018e20  2e 6d 61 70 70 69 78 6c  70 0d 96 82 14 4c 44 52  |.mappixlp....LDR|
00018e30  20 52 31 30 2c 5b 52 31  5d 2c 23 34 20 0d 96 8c  | R10,[R1],#4 ...|
00018e40  15 80 20 52 31 31 2c 52  31 30 2c 23 26 46 46 30  |.. R11,R10,#&FF0|
00018e50  30 20 0d 96 96 1b 4c 44  52 20 52 31 31 2c 5b 52  |0 ....LDR R11,[R|
00018e60  32 2c 52 31 31 2c 4c 53  52 20 23 36 5d 0d 96 a0  |2,R11,LSR #6]...|
00018e70  3a 80 20 52 31 32 2c 52  31 30 2c 23 26 46 46 3a  |:. R12,R10,#&FF:|
00018e80  4c 44 52 20 52 31 32 2c  5b 52 37 2c 52 31 32 2c  |LDR R12,[R7,R12,|
00018e90  4c 53 4c 20 23 32 5d 3a  41 44 44 20 52 31 34 2c  |LSL #2]:ADD R14,|
00018ea0  52 31 32 2c 52 31 31 0d  96 aa 40 80 20 52 31 32  |R12,R11...@. R12|
00018eb0  2c 52 31 30 2c 23 26 46  46 30 30 30 30 3a 4c 44  |,R10,#&FF0000:LD|
00018ec0  52 20 52 31 32 2c 5b 52  38 2c 52 31 32 2c 4c 53  |R R12,[R8,R12,LS|
00018ed0  52 20 23 31 34 5d 3a 41  44 44 53 20 52 31 34 2c  |R #14]:ADDS R14,|
00018ee0  52 31 34 2c 52 31 32 0d  96 b4 38 4d 4f 56 4d 49  |R14,R12...8MOVMI|
00018ef0  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00018f00  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00018f10  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00018f20  96 be 3a 80 20 52 31 32  2c 52 31 30 2c 23 26 46  |..:. R12,R10,#&F|
00018f30  46 3a 4c 44 52 20 52 31  32 2c 5b 52 35 2c 52 31  |F:LDR R12,[R5,R1|
00018f40  32 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 20 52 31  |2,LSL #2]:ADD R1|
00018f50  34 2c 52 31 32 2c 52 31  31 0d 96 c8 40 80 20 52  |4,R12,R11...@. R|
00018f60  31 32 2c 52 31 30 2c 23  26 46 46 30 30 30 30 3a  |12,R10,#&FF0000:|
00018f70  4c 44 52 20 52 31 32 2c  5b 52 36 2c 52 31 32 2c  |LDR R12,[R6,R12,|
00018f80  4c 53 52 20 23 31 34 5d  3a 41 44 44 53 20 52 31  |LSR #14]:ADDS R1|
00018f90  34 2c 52 31 34 2c 52 31  32 0d 96 d2 38 4d 4f 56  |4,R14,R12...8MOV|
00018fa0  4d 49 20 52 31 34 2c 23  30 3a 43 4d 50 20 52 31  |MI R14,#0:CMP R1|
00018fb0  34 2c 23 46 3a 4d 4f 56  43 53 20 52 31 34 2c 23  |4,#F:MOVCS R14,#|
00018fc0  46 3a 53 54 52 20 52 31  34 2c 5b 52 39 5d 2c 23  |F:STR R14,[R9],#|
00018fd0  34 0d 96 dc 3a 80 20 52  31 32 2c 52 31 30 2c 23  |4...:. R12,R10,#|
00018fe0  26 46 46 3a 4c 44 52 20  52 31 32 2c 5b 52 33 2c  |&FF:LDR R12,[R3,|
00018ff0  52 31 32 2c 4c 53 4c 20  23 32 5d 3a 41 44 44 20  |R12,LSL #2]:ADD |
00019000  52 31 34 2c 52 31 32 2c  52 31 31 0d 96 e6 40 80  |R14,R12,R11...@.|
00019010  20 52 31 32 2c 52 31 30  2c 23 26 46 46 30 30 30  | R12,R10,#&FF000|
00019020  30 3a 4c 44 52 20 52 31  32 2c 5b 52 34 2c 52 31  |0:LDR R12,[R4,R1|
00019030  32 2c 4c 53 52 20 23 31  34 5d 3a 41 44 44 53 20  |2,LSR #14]:ADDS |
00019040  52 31 34 2c 52 31 34 2c  52 31 32 0d 96 f0 38 4d  |R14,R14,R12...8M|
00019050  4f 56 4d 49 20 52 31 34  2c 23 30 3a 43 4d 50 20  |OVMI R14,#0:CMP |
00019060  52 31 34 2c 23 46 3a 4d  4f 56 43 53 20 52 31 34  |R14,#F:MOVCS R14|
00019070  2c 23 46 3a 53 54 52 20  52 31 34 2c 5b 52 39 5d  |,#F:STR R14,[R9]|
00019080  2c 23 34 0d 96 fa 19 80  20 52 31 31 2c 52 31 30  |,#4..... R11,R10|
00019090  2c 23 26 46 46 30 30 30  30 30 30 20 0d 97 04 1c  |,#&FF000000 ....|
000190a0  4c 44 52 20 52 31 31 2c  5b 52 32 2c 52 31 31 2c  |LDR R11,[R2,R11,|
000190b0  4c 53 52 20 23 32 32 5d  0d 97 0e 3a 80 20 52 31  |LSR #22]...:. R1|
000190c0  32 2c 52 31 30 2c 23 26  46 46 3a 4c 44 52 20 52  |2,R10,#&FF:LDR R|
000190d0  31 32 2c 5b 52 37 2c 52  31 32 2c 4c 53 4c 20 23  |12,[R7,R12,LSL #|
000190e0  32 5d 3a 41 44 44 20 52  31 34 2c 52 31 32 2c 52  |2]:ADD R14,R12,R|
000190f0  31 31 0d 97 18 40 80 20  52 31 32 2c 52 31 30 2c  |11...@. R12,R10,|
00019100  23 26 46 46 30 30 30 30  3a 4c 44 52 20 52 31 32  |#&FF0000:LDR R12|
00019110  2c 5b 52 38 2c 52 31 32  2c 4c 53 52 20 23 31 34  |,[R8,R12,LSR #14|
00019120  5d 3a 41 44 44 53 20 52  31 34 2c 52 31 34 2c 52  |]:ADDS R14,R14,R|
00019130  31 32 0d 97 22 38 4d 4f  56 4d 49 20 52 31 34 2c  |12.."8MOVMI R14,|
00019140  23 30 3a 43 4d 50 20 52  31 34 2c 23 46 3a 4d 4f  |#0:CMP R14,#F:MO|
00019150  56 43 53 20 52 31 34 2c  23 46 3a 53 54 52 20 52  |VCS R14,#F:STR R|
00019160  31 34 2c 5b 52 39 5d 2c  23 34 0d 97 2c 3a 80 20  |14,[R9],#4..,:. |
00019170  52 31 32 2c 52 31 30 2c  23 26 46 46 3a 4c 44 52  |R12,R10,#&FF:LDR|
00019180  20 52 31 32 2c 5b 52 35  2c 52 31 32 2c 4c 53 4c  | R12,[R5,R12,LSL|
00019190  20 23 32 5d 3a 41 44 44  20 52 31 34 2c 52 31 32  | #2]:ADD R14,R12|
000191a0  2c 52 31 31 0d 97 36 40  80 20 52 31 32 2c 52 31  |,R11..6@. R12,R1|
000191b0  30 2c 23 26 46 46 30 30  30 30 3a 4c 44 52 20 52  |0,#&FF0000:LDR R|
000191c0  31 32 2c 5b 52 36 2c 52  31 32 2c 4c 53 52 20 23  |12,[R6,R12,LSR #|
000191d0  31 34 5d 3a 41 44 44 53  20 52 31 34 2c 52 31 34  |14]:ADDS R14,R14|
000191e0  2c 52 31 32 0d 97 40 38  4d 4f 56 4d 49 20 52 31  |,R12..@8MOVMI R1|
000191f0  34 2c 23 30 3a 43 4d 50  20 52 31 34 2c 23 46 3a  |4,#0:CMP R14,#F:|
00019200  4d 4f 56 43 53 20 52 31  34 2c 23 46 3a 53 54 52  |MOVCS R14,#F:STR|
00019210  20 52 31 34 2c 5b 52 39  5d 2c 23 34 0d 97 4a 3a  | R14,[R9],#4..J:|
00019220  80 20 52 31 32 2c 52 31  30 2c 23 26 46 46 3a 4c  |. R12,R10,#&FF:L|
00019230  44 52 20 52 31 32 2c 5b  52 33 2c 52 31 32 2c 4c  |DR R12,[R3,R12,L|
00019240  53 4c 20 23 32 5d 3a 41  44 44 20 52 31 34 2c 52  |SL #2]:ADD R14,R|
00019250  31 32 2c 52 31 31 0d 97  54 40 80 20 52 31 32 2c  |12,R11..T@. R12,|
00019260  52 31 30 2c 23 26 46 46  30 30 30 30 3a 4c 44 52  |R10,#&FF0000:LDR|
00019270  20 52 31 32 2c 5b 52 34  2c 52 31 32 2c 4c 53 52  | R12,[R4,R12,LSR|
00019280  20 23 31 34 5d 3a 41 44  44 53 20 52 31 34 2c 52  | #14]:ADDS R14,R|
00019290  31 34 2c 52 31 32 0d 97  5e 38 4d 4f 56 4d 49 20  |14,R12..^8MOVMI |
000192a0  52 31 34 2c 23 30 3a 43  4d 50 20 52 31 34 2c 23  |R14,#0:CMP R14,#|
000192b0  46 3a 4d 4f 56 43 53 20  52 31 34 2c 23 46 3a 53  |F:MOVCS R14,#F:S|
000192c0  54 52 20 52 31 34 2c 5b  52 39 5d 2c 23 34 0d 97  |TR R14,[R9],#4..|
000192d0  68 1e 53 55 42 53 20 52  30 2c 52 30 2c 23 32 3a  |h.SUBS R0,R0,#2:|
000192e0  42 4e 45 20 6d 61 70 70  69 78 6c 70 0d 97 72 14  |BNE mappixlp..r.|
000192f0  4c 44 4d 46 44 20 53 50  20 21 2c 7b 50 43 7d 5e  |LDMFD SP !,{PC}^|
00019300  0d 97 7c 05 5d 0d 97 86  09 c9 20 34 32 32 0d 97  |..|.]..... 422..|
00019310  90 0a 5b 4f 50 54 20 5a  0d 97 9a 0d 2e 6d 61 70  |..[OPT Z.....map|
00019320  70 69 78 25 20 0d 97 a4  11 4c 44 52 20 52 30 2c  |pix% ....LDR R0,|
00019330  73 78 6c 6f 63 20 0d 97  ae 1c 4c 44 52 20 52 31  |sxloc ....LDR R1|
00019340  2c 5b 52 39 5d 3a 4c 44  52 20 52 31 2c 5b 52 31  |,[R9]:LDR R1,[R1|
00019350  5d 20 0d 97 b8 15 4c 44  52 20 52 32 2c 5b 52 39  |] ....LDR R2,[R9|
00019360  2c 23 31 2a 38 5d 20 0d  97 c2 15 4c 44 52 20 52  |,#1*8] ....LDR R|
00019370  33 2c 5b 52 39 2c 23 32  2a 38 5d 20 0d 97 cc 15  |3,[R9,#2*8] ....|
00019380  4c 44 52 20 52 35 2c 5b  52 39 2c 23 34 2a 38 5d  |LDR R5,[R9,#4*8]|
00019390  20 0d 97 d6 15 4c 44 52  20 52 36 2c 5b 52 39 2c  | ....LDR R6,[R9,|
000193a0  23 35 2a 38 5d 20 0d 97  e0 15 4c 44 52 20 52 37  |#5*8] ....LDR R7|
000193b0  2c 5b 52 39 2c 23 36 2a  38 5d 20 0d 97 ea 15 4c  |,[R9,#6*8] ....L|
000193c0  44 52 20 52 39 2c 5b 52  39 2c 23 38 2a 38 5d 20  |DR R9,[R9,#8*8] |
000193d0  0d 97 f4 14 53 54 4d 46  44 20 53 50 20 21 2c 7b  |....STMFD SP !,{|
000193e0  52 31 34 7d 0d 97 fe 0d  2e 6d 61 70 70 69 78 6c  |R14}.....mappixl|
000193f0  70 0d 98 08 14 4c 44 52  20 52 31 30 2c 5b 52 31  |p....LDR R10,[R1|
00019400  5d 2c 23 34 20 0d 98 12  15 80 20 52 31 31 2c 52  |],#4 ..... R11,R|
00019410  31 30 2c 23 26 46 46 30  30 20 0d 98 1c 1b 4c 44  |10,#&FF00 ....LD|
00019420  52 20 52 31 31 2c 5b 52  32 2c 52 31 31 2c 4c 53  |R R11,[R2,R11,LS|
00019430  52 20 23 36 5d 0d 98 26  40 80 20 52 31 32 2c 52  |R #6]..&@. R12,R|
00019440  31 30 2c 23 26 46 46 30  30 30 30 3a 4c 44 52 20  |10,#&FF0000:LDR |
00019450  52 31 32 2c 5b 52 37 2c  52 31 32 2c 4c 53 52 20  |R12,[R7,R12,LSR |
00019460  23 31 34 5d 3a 41 44 44  53 20 52 31 34 2c 52 31  |#14]:ADDS R14,R1|
00019470  32 2c 52 31 31 0d 98 30  38 4d 4f 56 4d 49 20 52  |2,R11..08MOVMI R|
00019480  31 34 2c 23 30 3a 43 4d  50 20 52 31 34 2c 23 46  |14,#0:CMP R14,#F|
00019490  3a 4d 4f 56 43 53 20 52  31 34 2c 23 46 3a 53 54  |:MOVCS R14,#F:ST|
000194a0  52 20 52 31 34 2c 5b 52  39 5d 2c 23 34 0d 98 3a  |R R14,[R9],#4..:|
000194b0  3a 80 20 52 31 32 2c 52  31 30 2c 23 26 46 46 3a  |:. R12,R10,#&FF:|
000194c0  4c 44 52 20 52 31 32 2c  5b 52 35 2c 52 31 32 2c  |LDR R12,[R5,R12,|
000194d0  4c 53 4c 20 23 32 5d 3a  41 44 44 20 52 31 34 2c  |LSL #2]:ADD R14,|
000194e0  52 31 32 2c 52 31 31 0d  98 44 40 80 20 52 31 32  |R12,R11..D@. R12|
000194f0  2c 52 31 30 2c 23 26 46  46 30 30 30 30 3a 4c 44  |,R10,#&FF0000:LD|
00019500  52 20 52 31 32 2c 5b 52  36 2c 52 31 32 2c 4c 53  |R R12,[R6,R12,LS|
00019510  52 20 23 31 34 5d 3a 41  44 44 53 20 52 31 34 2c  |R #14]:ADDS R14,|
00019520  52 31 34 2c 52 31 32 0d  98 4e 38 4d 4f 56 4d 49  |R14,R12..N8MOVMI|
00019530  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00019540  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00019550  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00019560  98 58 3b 80 20 52 31 32  2c 52 31 30 2c 23 26 46  |.X;. R12,R10,#&F|
00019570  46 3a 4c 44 52 20 52 31  32 2c 5b 52 33 2c 52 31  |F:LDR R12,[R3,R1|
00019580  32 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 53 20 52  |2,LSL #2]:ADDS R|
00019590  31 34 2c 52 31 32 2c 52  31 31 0d 98 62 38 4d 4f  |14,R12,R11..b8MO|
000195a0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
000195b0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
000195c0  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
000195d0  23 34 0d 98 6c 19 80 20  52 31 31 2c 52 31 30 2c  |#4..l.. R11,R10,|
000195e0  23 26 46 46 30 30 30 30  30 30 20 0d 98 76 1c 4c  |#&FF000000 ..v.L|
000195f0  44 52 20 52 31 31 2c 5b  52 32 2c 52 31 31 2c 4c  |DR R11,[R2,R11,L|
00019600  53 52 20 23 32 32 5d 0d  98 80 40 80 20 52 31 32  |SR #22]...@. R12|
00019610  2c 52 31 30 2c 23 26 46  46 30 30 30 30 3a 4c 44  |,R10,#&FF0000:LD|
00019620  52 20 52 31 32 2c 5b 52  37 2c 52 31 32 2c 4c 53  |R R12,[R7,R12,LS|
00019630  52 20 23 31 34 5d 3a 41  44 44 53 20 52 31 34 2c  |R #14]:ADDS R14,|
00019640  52 31 32 2c 52 31 31 0d  98 8a 38 4d 4f 56 4d 49  |R12,R11...8MOVMI|
00019650  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00019660  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00019670  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00019680  98 94 3a 80 20 52 31 32  2c 52 31 30 2c 23 26 46  |..:. R12,R10,#&F|
00019690  46 3a 4c 44 52 20 52 31  32 2c 5b 52 35 2c 52 31  |F:LDR R12,[R5,R1|
000196a0  32 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 20 52 31  |2,LSL #2]:ADD R1|
000196b0  34 2c 52 31 32 2c 52 31  31 0d 98 9e 40 80 20 52  |4,R12,R11...@. R|
000196c0  31 32 2c 52 31 30 2c 23  26 46 46 30 30 30 30 3a  |12,R10,#&FF0000:|
000196d0  4c 44 52 20 52 31 32 2c  5b 52 36 2c 52 31 32 2c  |LDR R12,[R6,R12,|
000196e0  4c 53 52 20 23 31 34 5d  3a 41 44 44 53 20 52 31  |LSR #14]:ADDS R1|
000196f0  34 2c 52 31 34 2c 52 31  32 0d 98 a8 38 4d 4f 56  |4,R14,R12...8MOV|
00019700  4d 49 20 52 31 34 2c 23  30 3a 43 4d 50 20 52 31  |MI R14,#0:CMP R1|
00019710  34 2c 23 46 3a 4d 4f 56  43 53 20 52 31 34 2c 23  |4,#F:MOVCS R14,#|
00019720  46 3a 53 54 52 20 52 31  34 2c 5b 52 39 5d 2c 23  |F:STR R14,[R9],#|
00019730  34 0d 98 b2 3b 80 20 52  31 32 2c 52 31 30 2c 23  |4...;. R12,R10,#|
00019740  26 46 46 3a 4c 44 52 20  52 31 32 2c 5b 52 33 2c  |&FF:LDR R12,[R3,|
00019750  52 31 32 2c 4c 53 4c 20  23 32 5d 3a 41 44 44 53  |R12,LSL #2]:ADDS|
00019760  20 52 31 34 2c 52 31 32  2c 52 31 31 0d 98 bc 38  | R14,R12,R11...8|
00019770  4d 4f 56 4d 49 20 52 31  34 2c 23 30 3a 43 4d 50  |MOVMI R14,#0:CMP|
00019780  20 52 31 34 2c 23 46 3a  4d 4f 56 43 53 20 52 31  | R14,#F:MOVCS R1|
00019790  34 2c 23 46 3a 53 54 52  20 52 31 34 2c 5b 52 39  |4,#F:STR R14,[R9|
000197a0  5d 2c 23 34 0d 98 c6 1e  53 55 42 53 20 52 30 2c  |],#4....SUBS R0,|
000197b0  52 30 2c 23 32 3a 42 4e  45 20 6d 61 70 70 69 78  |R0,#2:BNE mappix|
000197c0  6c 70 0d 98 d0 14 4c 44  4d 46 44 20 53 50 20 21  |lp....LDMFD SP !|
000197d0  2c 7b 50 43 7d 5e 0d 98  da 05 5d 0d 98 e4 09 c9  |,{PC}^....].....|
000197e0  20 35 35 35 0d 98 f8 0a  5b 4f 50 54 20 5a 0d 99  | 555....[OPT Z..|
000197f0  02 0d 2e 6d 61 70 70 69  78 25 20 0d 99 0c 11 4c  |...mappix% ....L|
00019800  44 52 20 52 30 2c 73 78  6c 6f 63 20 0d 99 16 1c  |DR R0,sxloc ....|
00019810  4c 44 52 20 52 31 2c 5b  52 39 5d 3a 4c 44 52 20  |LDR R1,[R9]:LDR |
00019820  52 31 2c 5b 52 31 5d 20  0d 99 20 15 4c 44 52 20  |R1,[R1] .. .LDR |
00019830  52 32 2c 5b 52 39 2c 23  31 2a 38 5d 20 0d 99 2a  |R2,[R9,#1*8] ..*|
00019840  15 4c 44 52 20 52 33 2c  5b 52 39 2c 23 32 2a 38  |.LDR R3,[R9,#2*8|
00019850  5d 20 0d 99 34 15 4c 44  52 20 52 35 2c 5b 52 39  |] ..4.LDR R5,[R9|
00019860  2c 23 34 2a 38 5d 20 0d  99 3e 15 4c 44 52 20 52  |,#4*8] ..>.LDR R|
00019870  36 2c 5b 52 39 2c 23 35  2a 38 5d 20 0d 99 48 15  |6,[R9,#5*8] ..H.|
00019880  4c 44 52 20 52 37 2c 5b  52 39 2c 23 36 2a 38 5d  |LDR R7,[R9,#6*8]|
00019890  20 0d 99 52 15 4c 44 52  20 52 39 2c 5b 52 39 2c  | ..R.LDR R9,[R9,|
000198a0  23 38 2a 38 5d 20 0d 99  5c 14 53 54 4d 46 44 20  |#8*8] ..\.STMFD |
000198b0  53 50 20 21 2c 7b 52 31  34 7d 0d 99 66 0d 2e 6d  |SP !,{R14}..f..m|
000198c0  61 70 70 69 78 6c 70 0d  99 70 14 4c 44 52 20 52  |appixlp..p.LDR R|
000198d0  31 30 2c 5b 52 31 5d 2c  23 32 20 0d 99 7a 15 80  |10,[R1],#2 ..z..|
000198e0  20 52 31 31 2c 52 31 30  2c 23 79 6d 61 78 25 20  | R11,R10,#ymax% |
000198f0  0d 99 84 1b 4c 44 52 20  52 31 31 2c 5b 52 32 2c  |....LDR R11,[R2,|
00019900  52 31 31 2c 4c 53 4c 20  23 32 5d 0d 99 8e 2f 80  |R11,LSL #2].../.|
00019910  20 52 38 2c 52 31 30 2c  23 28 28 31 3c 3c 76 62  | R8,R10,#((1<<vb|
00019920  69 74 73 25 29 2d 31 29  3c 3c 28 79 62 69 74 73  |its%)-1)<<(ybits|
00019930  25 2b 75 62 69 74 73 25  29 20 0d 99 98 27 80 20  |%+ubits%) ...'. |
00019940  52 31 30 2c 52 31 30 2c  23 28 28 31 3c 3c 75 62  |R10,R10,#((1<<ub|
00019950  69 74 73 25 29 2d 31 29  3c 3c 79 62 69 74 73 25  |its%)-1)<<ybits%|
00019960  20 0d 99 ac 39 4c 44 52  20 52 31 32 2c 5b 52 37  | ...9LDR R12,[R7|
00019970  2c 52 38 2c 4c 53 52 20  23 79 62 69 74 73 25 2b  |,R8,LSR #ybits%+|
00019980  75 62 69 74 73 25 2d 32  5d 3a 41 44 44 53 20 52  |ubits%-2]:ADDS R|
00019990  31 34 2c 52 31 32 2c 52  31 31 0d 99 b6 39 4d 4f  |14,R12,R11...9MO|
000199a0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
000199b0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
000199c0  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
000199d0  23 34 20 0d 99 c0 38 4c  44 52 20 52 31 32 2c 5b  |#4 ...8LDR R12,[|
000199e0  52 35 2c 52 38 2c 4c 53  52 20 23 79 62 69 74 73  |R5,R8,LSR #ybits|
000199f0  25 2b 75 62 69 74 73 25  2d 32 5d 3a 41 44 44 20  |%+ubits%-2]:ADD |
00019a00  52 31 34 2c 52 31 32 2c  52 31 31 0d 99 ca 33 4c  |R14,R12,R11...3L|
00019a10  44 52 20 52 31 32 2c 5b  52 36 2c 52 31 30 2c 4c  |DR R12,[R6,R10,L|
00019a20  53 52 20 23 79 62 69 74  73 25 2d 32 5d 3a 41 44  |SR #ybits%-2]:AD|
00019a30  44 53 20 52 31 34 2c 52  31 34 2c 52 31 32 0d 99  |DS R14,R14,R12..|
00019a40  d4 39 4d 4f 56 4d 49 20  52 31 34 2c 23 30 3a 43  |.9MOVMI R14,#0:C|
00019a50  4d 50 20 52 31 34 2c 23  46 3a 4d 4f 56 43 53 20  |MP R14,#F:MOVCS |
00019a60  52 31 34 2c 23 46 3a 53  54 52 20 52 31 34 2c 5b  |R14,#F:STR R14,[|
00019a70  52 39 5d 2c 23 34 20 0d  99 de 33 4c 44 52 20 52  |R9],#4 ...3LDR R|
00019a80  31 32 2c 5b 52 33 2c 52  31 30 2c 4c 53 52 20 23  |12,[R3,R10,LSR #|
00019a90  79 62 69 74 73 25 2d 32  5d 3a 41 44 44 53 20 52  |ybits%-2]:ADDS R|
00019aa0  31 34 2c 52 31 32 2c 52  31 31 0d 99 e8 39 4d 4f  |14,R12,R11...9MO|
00019ab0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
00019ac0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
00019ad0  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
00019ae0  23 34 20 0d 99 f2 1e 53  55 42 53 20 52 30 2c 52  |#4 ....SUBS R0,R|
00019af0  30 2c 23 31 3a 42 4e 45  20 6d 61 70 70 69 78 6c  |0,#1:BNE mappixl|
00019b00  70 0d 99 fc 14 4c 44 4d  46 44 20 53 50 20 21 2c  |p....LDMFD SP !,|
00019b10  7b 50 43 7d 5e 0d 9a 06  05 5d 0d 9a 10 05 cb 0d  |{PC}^....]......|
00019b20  9a 1a 18 e7 78 6d 75 6c  25 3d 32 20 80 20 78 64  |....xmul%=2 . xd|
00019b30  69 76 25 3d 31 20 8c 0d  9a 24 0a 5b 4f 50 54 20  |iv%=1 ...$.[OPT |
00019b40  5a 0d 9a 38 0d 2e 78 73  61 6d 70 6c 65 25 0d 9a  |Z..8..xsample%..|
00019b50  42 1c 4c 44 52 20 52 30  2c 5b 52 39 5d 3a 4c 44  |B.LDR R0,[R9]:LD|
00019b60  52 20 52 30 2c 5b 52 30  5d 20 0d 9a 4c 13 4c 44  |R R0,[R0] ..L.LD|
00019b70  52 20 52 31 2c 5b 52 39  2c 23 38 5d 20 0d 9a 56  |R R1,[R9,#8] ..V|
00019b80  15 4c 44 52 20 52 32 2c  5b 52 39 2c 23 32 2a 38  |.LDR R2,[R9,#2*8|
00019b90  5d 20 0d 9a 60 0e 2e 78  73 61 6d 70 6c 65 6c 70  |] ..`..xsamplelp|
00019ba0  0d 9a 6a 21 4c 44 4d 49  41 20 52 31 2c 7b 52 35  |..j!LDMIA R1,{R5|
00019bb0  2c 52 36 2c 52 37 2c 52  38 2c 52 39 2c 52 31 30  |,R6,R7,R8,R9,R10|
00019bc0  7d 0d 9a 74 10 41 44 44  20 52 38 2c 52 38 2c 52  |}..t.ADD R8,R8,R|
00019bd0  35 0d 9a 7e 14 4d 4f 56  20 52 38 2c 52 38 2c 4c  |5..~.MOV R8,R8,L|
00019be0  53 52 20 23 31 0d 9a 88  10 41 44 44 20 52 39 2c  |SR #1....ADD R9,|
00019bf0  52 39 2c 52 36 0d 9a 92  14 4d 4f 56 20 52 39 2c  |R9,R6....MOV R9,|
00019c00  52 39 2c 4c 53 52 20 23  31 0d 9a 9c 12 41 44 44  |R9,LSR #1....ADD|
00019c10  20 52 31 30 2c 52 31 30  2c 52 37 0d 9a a6 16 4d  | R10,R10,R7....M|
00019c20  4f 56 20 52 31 30 2c 52  31 30 2c 4c 53 52 20 23  |OV R10,R10,LSR #|
00019c30  31 0d 9a b0 22 53 54 4d  49 41 20 52 32 21 2c 7b  |1..."STMIA R2!,{|
00019c40  52 35 2c 52 36 2c 52 37  2c 52 38 2c 52 39 2c 52  |R5,R6,R7,R8,R9,R|
00019c50  31 30 7d 0d 9a ba 11 41  44 44 20 52 31 2c 52 31  |10}....ADD R1,R1|
00019c60  2c 23 31 32 0d 9a c4 1f  53 55 42 53 20 52 30 2c  |,#12....SUBS R0,|
00019c70  52 30 2c 23 32 3a 42 50  4c 20 78 73 61 6d 70 6c  |R0,#2:BPL xsampl|
00019c80  65 6c 70 0d 9a ce 0f 4d  4f 56 53 20 50 43 2c 52  |elp....MOVS PC,R|
00019c90  31 34 0d 9a d8 05 5d 0d  9a e2 05 cc 0d 9a ec 0a  |14....].........|
00019ca0  5b 4f 50 54 20 5a 0d 9b  00 0d 2e 78 73 61 6d 70  |[OPT Z.....xsamp|
00019cb0  6c 65 25 0d 9b 0a 1c 4c  44 52 20 52 30 2c 5b 52  |le%....LDR R0,[R|
00019cc0  39 5d 3a 4c 44 52 20 52  30 2c 5b 52 30 5d 20 0d  |9]:LDR R0,[R0] .|
00019cd0  9b 14 13 4c 44 52 20 52  31 2c 5b 52 39 2c 23 38  |...LDR R1,[R9,#8|
00019ce0  5d 20 0d 9b 1e 15 4c 44  52 20 52 32 2c 5b 52 39  |] ....LDR R2,[R9|
00019cf0  2c 23 32 2a 38 5d 20 0d  9b 28 21 4c 44 52 20 52  |,#2*8] ..(!LDR R|
00019d00  33 2c 5b 52 39 2c 23 33  2a 38 5d 3a 4c 44 52 20  |3,[R9,#3*8]:LDR |
00019d10  52 33 2c 5b 52 33 5d 20  0d 9b 32 21 4c 44 52 20  |R3,[R3] ..2!LDR |
00019d20  52 34 2c 5b 52 39 2c 23  34 2a 38 5d 3a 4c 44 52  |R4,[R9,#4*8]:LDR|
00019d30  20 52 34 2c 5b 52 34 5d  20 0d 9b 3c 0e 4d 4f 56  | R4,[R4] ..<.MOV|
00019d40  20 52 31 31 2c 52 34 0d  9b 46 0e 2e 78 73 61 6d  | R11,R4..F..xsam|
00019d50  70 6c 65 6c 70 0d 9b 50  17 4c 44 4d 49 41 20 52  |plelp..P.LDMIA R|
00019d60  31 2c 7b 52 35 2c 52 36  2c 52 37 7d 0d 9b 5a 2d  |1,{R5,R6,R7}..Z-|
00019d70  53 55 42 53 20 52 31 31  2c 52 31 31 2c 23 31 3a  |SUBS R11,R11,#1:|
00019d80  ec 51 20 52 31 31 2c 52  34 3a 41 44 44 45 51 20  |.Q R11,R4:ADDEQ |
00019d90  52 31 2c 52 31 2c 23 31  32 0d 9b 64 13 53 55 42  |R1,R1,#12..d.SUB|
00019da0  53 20 52 31 32 2c 52 33  2c 23 31 20 0d 9b 6e 10  |S R12,R3,#1 ..n.|
00019db0  42 45 51 20 78 64 6f 6e  65 64 69 76 0d 9b 78 0b  |BEQ xdonediv..x.|
00019dc0  2e 78 64 69 76 6c 70 0d  9b 82 0f 43 4d 50 20 52  |.xdivlp....CMP R|
00019dd0  31 32 2c 52 31 31 0d 9b  8c 0f 42 43 43 20 78 64  |12,R11....BCC xd|
00019de0  69 76 6c 70 32 0d 9b 96  4d 4c 44 4d 49 41 20 52  |ivlp2...MLDMIA R|
00019df0  31 21 2c 7b 52 38 2c 52  39 2c 52 31 30 7d 3a 4d  |1!,{R8,R9,R10}:M|
00019e00  4c 41 20 52 35 2c 52 38  2c 52 31 31 2c 52 35 3a  |LA R5,R8,R11,R5:|
00019e10  4d 4c 41 20 52 36 2c 52  39 2c 52 31 31 2c 52 36  |MLA R6,R9,R11,R6|
00019e20  3a 4d 4c 41 20 52 37 2c  52 31 30 2c 52 31 31 2c  |:MLA R7,R10,R11,|
00019e30  52 37 0d 9b a0 1f 53 55  42 53 20 52 31 32 2c 52  |R7....SUBS R12,R|
00019e40  31 32 2c 52 31 31 3a 4d  4f 56 20 52 31 31 2c 52  |12,R11:MOV R11,R|
00019e50  34 0d 9b aa 0e 42 4e 45  20 78 64 69 76 6c 70 0d  |4....BNE xdivlp.|
00019e60  9b b4 0e 42 20 78 64 6f  6e 65 64 69 76 0d 9b be  |...B xdonediv...|
00019e70  0c 2e 78 64 69 76 6c 70  32 0d 9b c8 18 4c 44 4d  |..xdivlp2....LDM|
00019e80  49 41 20 52 31 2c 7b 52  38 2c 52 39 2c 52 31 30  |IA R1,{R8,R9,R10|
00019e90  7d 0d 9b d2 2d 53 55 42  53 20 52 31 31 2c 52 31  |}...-SUBS R11,R1|
00019ea0  31 2c 23 31 3a ec 51 20  52 31 31 2c 52 34 3a 41  |1,#1:.Q R11,R4:A|
00019eb0  44 44 45 51 20 52 31 2c  52 31 2c 23 31 32 0d 9b  |DDEQ R1,R1,#12..|
00019ec0  dc 2b 41 44 44 20 52 35  2c 52 35 2c 52 38 3a 41  |.+ADD R5,R5,R8:A|
00019ed0  44 44 20 52 36 2c 52 36  2c 52 39 3a 41 44 44 20  |DD R6,R6,R9:ADD |
00019ee0  52 37 2c 52 37 2c 52 31  30 0d 9b e6 1e 53 55 42  |R7,R7,R10....SUB|
00019ef0  53 20 52 31 32 2c 52 31  32 2c 23 31 3a 42 4e 45  |S R12,R12,#1:BNE|
00019f00  20 78 64 69 76 6c 70 0d  9b f0 0d 2e 78 64 6f 6e  | xdivlp.....xdon|
00019f10  65 64 69 76 0d 9b fa 18  53 54 4d 49 41 20 52 32  |ediv....STMIA R2|
00019f20  21 2c 7b 52 35 2c 52 36  2c 52 37 7d 0d 9c 04 1f  |!,{R5,R6,R7}....|
00019f30  53 55 42 53 20 52 30 2c  52 30 2c 23 31 3a 42 50  |SUBS R0,R0,#1:BP|
00019f40  4c 20 78 73 61 6d 70 6c  65 6c 70 0d 9c 0e 0f 4d  |L xsamplelp....M|
00019f50  4f 56 53 20 50 43 2c 52  31 34 0d 9c 18 05 5d 0d  |OVS PC,R14....].|
00019f60  9c 22 05 cd 0d 9c 2c 05  cb 0d 9c 36 14 e7 63 6f  |."....,....6..co|
00019f70  6d 70 72 65 73 73 69 6f  6e 3d 35 20 8c 0d 9c 40  |mpression=5 ...@|
00019f80  0a 5b 4f 50 54 20 5a 0d  9c 54 14 2e 66 69 72 73  |.[OPT Z..T..firs|
00019f90  74 63 6f 64 65 20 44 43  44 20 30 0d 9c 5e 12 2e  |tcode DCD 0..^..|
00019fa0  6f 6c 64 63 6f 64 65 20  44 43 44 20 30 0d 9c 68  |oldcode DCD 0..h|
00019fb0  1d 2e 63 6f 64 65 73 69  7a 65 20 44 43 44 20 73  |..codesize DCD s|
00019fc0  65 74 63 6f 64 65 73 25  2b 31 0d 9c 72 13 2e 73  |etcodes%+1..r..s|
00019fd0  74 61 63 6b 20 44 43 44  20 73 74 6b 25 0d 9c 7c  |tack DCD stk%..||
00019fe0  10 2e 73 70 20 44 43 44  20 73 74 6b 25 0d 9c 86  |..sp DCD stk%...|
00019ff0  1d 2e 6d 61 78 63 6f 64  65 20 44 43 44 20 63 6c  |..maxcode DCD cl|
0001a000  65 61 72 63 6f 64 65 25  2b 32 0d 9c 90 21 2e 6d  |earcode%+2...!.m|
0001a010  61 78 63 6f 64 65 73 69  7a 65 20 44 43 44 20 32  |axcodesize DCD 2|
0001a020  2a 63 6c 65 61 72 63 6f  64 65 25 0d 9c 9a 0f 2e  |*clearcode%.....|
0001a030  4c 5a 57 64 65 63 6f 64  65 25 0d 9c a4 40 4c 44  |LZWdecode%...@LD|
0001a040  52 20 52 32 2c 66 69 72  73 74 63 6f 64 65 3a 4c  |R R2,firstcode:L|
0001a050  44 52 20 52 33 2c 6f 6c  64 63 6f 64 65 3a 4c 44  |DR R3,oldcode:LD|
0001a060  52 20 52 34 2c 73 74 61  63 6b 3a 4c 44 52 20 52  |R R4,stack:LDR R|
0001a070  35 2c 63 6f 64 65 73 69  7a 65 0d 9c ae 2f 4c 44  |5,codesize.../LD|
0001a080  52 20 52 36 2c 73 70 3a  4c 44 52 20 52 37 2c 6d  |R R6,sp:LDR R7,m|
0001a090  61 78 63 6f 64 65 3a 4c  44 52 20 52 38 2c 6d 61  |axcode:LDR R8,ma|
0001a0a0  78 63 6f 64 65 73 69 7a  65 0d 9c b8 1f 4c 44 52  |xcodesize....LDR|
0001a0b0  20 52 31 30 2c 5b 52 39  5d 3a 4c 44 52 20 52 31  | R10,[R9]:LDR R1|
0001a0c0  30 2c 5b 52 31 30 5d 20  0d 9c c2 22 4c 44 52 20  |0,[R10] ..."LDR |
0001a0d0  52 31 31 2c 5b 52 39 2c  23 38 5d 3a 4c 44 52 20  |R11,[R9,#8]:LDR |
0001a0e0  52 31 31 2c 5b 52 31 31  5d 20 0d 9c cc 15 4c 44  |R11,[R11] ....LD|
0001a0f0  52 20 52 31 32 2c 5b 52  39 2c 23 32 34 5d 20 0d  |R R12,[R9,#24] .|
0001a100  9c d6 14 53 54 4d 46 44  20 53 50 20 21 2c 7b 52  |...STMFD SP !,{R|
0001a110  31 34 7d 0d 9c e0 0c 2e  6c 7a 77 6c 6f 6f 70 0d  |14}.....lzwloop.|
0001a120  9c ea 0d 43 4d 50 20 52  36 2c 52 34 0d 9c f4 12  |...CMP R6,R4....|
0001a130  42 48 49 20 6c 7a 77 75  6e 73 74 61 63 6b 0d 9c  |BHI lzwunstack..|
0001a140  fe 0e 2e 6c 7a 77 65 6e  67 69 6e 65 0d 9d 08 0e  |...lzwengine....|
0001a150  42 4c 20 67 65 74 63 6f  64 65 0d 9d 12 16 43 4d  |BL getcode....CM|
0001a160  50 20 52 30 2c 23 63 6c  65 61 72 63 6f 64 65 25  |P R0,#clearcode%|
0001a170  0d 9d 1c 10 42 45 51 20  6c 7a 77 63 6c 65 61 72  |....BEQ lzwclear|
0001a180  0d 9d 30 0e 4d 4f 56 20  52 31 2c 52 30 20 0d 9d  |..0.MOV R1,R0 ..|
0001a190  3a 0e 43 4d 50 20 52 30  2c 52 37 20 0d 9d 44 16  |:.CMP R0,R7 ..D.|
0001a1a0  53 54 52 43 53 42 20 52  32 2c 5b 52 36 5d 2c 23  |STRCSB R2,[R6],#|
0001a1b0  31 20 0d 9d 4e 10 4d 4f  56 43 53 20 52 30 2c 52  |1 ..N.MOVCS R0,R|
0001a1c0  33 20 0d 9d 58 16 43 4d  50 20 52 30 2c 23 63 6c  |3 ..X.CMP R0,#cl|
0001a1d0  65 61 72 63 6f 64 65 25  0d 9d 62 13 42 43 43 20  |earcode%..b.BCC |
0001a1e0  6c 7a 77 64 6f 6e 65 70  75 73 68 0d 9d 6c 11 2e  |lzwdonepush..l..|
0001a1f0  6c 7a 77 70 75 73 68 74  61 62 6c 65 0d 9d 76 1c  |lzwpushtable..v.|
0001a200  4c 44 52 20 52 31 34 2c  5b 52 31 32 2c 52 30 2c  |LDR R14,[R12,R0,|
0001a210  4c 53 4c 20 23 32 5d 20  0d 9d 80 15 53 54 52 42  |LSL #2] ....STRB|
0001a220  20 52 31 34 2c 5b 52 36  5d 2c 23 31 20 0d 9d 8a  | R14,[R6],#1 ...|
0001a230  17 4d 4f 56 20 52 30 2c  52 31 34 2c 4c 53 52 20  |.MOV R0,R14,LSR |
0001a240  23 31 36 20 0d 9d 94 16  43 4d 50 20 52 30 2c 23  |#16 ....CMP R0,#|
0001a250  63 6c 65 61 72 63 6f 64  65 25 0d 9d 9e 14 42 43  |clearcode%....BC|
0001a260  53 20 6c 7a 77 70 75 73  68 74 61 62 6c 65 0d 9d  |S lzwpushtable..|
0001a270  a8 10 2e 6c 7a 77 64 6f  6e 65 70 75 73 68 0d 9d  |...lzwdonepush..|
0001a280  b2 1a 4c 44 52 20 52 32  2c 5b 52 31 32 2c 52 30  |..LDR R2,[R12,R0|
0001a290  2c 4c 53 4c 20 23 32 5d  0d 9d bc 16 42 49 43 20  |,LSL #2]....BIC |
0001a2a0  52 32 2c 52 32 2c 23 26  46 46 30 30 30 30 0d 9d  |R2,R2,#&FF0000..|
0001a2b0  c6 19 42 49 43 20 52 32  2c 52 32 2c 23 26 46 46  |..BIC R2,R2,#&FF|
0001a2c0  30 30 30 30 30 30 20 0d  9d d0 14 53 54 52 42 20  |000000 ....STRB |
0001a2d0  52 32 2c 5b 52 36 5d 2c  23 31 20 0d 9d da 10 43  |R2,[R6],#1 ....C|
0001a2e0  4d 50 20 52 37 2c 23 34  30 39 36 0d 9d e4 11 42  |MP R7,#4096....B|
0001a2f0  43 53 20 6c 7a 77 6e 6f  63 6f 64 65 0d 9d ee 17  |CS lzwnocode....|
0001a300  84 52 20 52 30 2c 52 32  2c 52 33 2c 4c 53 4c 20  |.R R0,R2,R3,LSL |
0001a310  23 31 36 0d 9d f8 1b 53  54 52 20 52 30 2c 5b 52  |#16....STR R0,[R|
0001a320  31 32 2c 52 37 2c 4c 53  4c 20 23 32 5d 20 0d 9e  |12,R7,LSL #2] ..|
0001a330  02 11 41 44 44 20 52 37  2c 52 37 2c 23 31 20 0d  |..ADD R7,R7,#1 .|
0001a340  9e 0c 0d 43 4d 50 20 52  37 2c 52 38 0d 9e 16 12  |...CMP R7,R8....|
0001a350  42 43 43 20 6c 7a 77 6e  6f 63 6f 64 65 20 0d 9e  |BCC lzwnocode ..|
0001a360  20 11 43 4d 50 20 52 38  2c 23 34 30 39 36 20 0d  | .CMP R8,#4096 .|
0001a370  9e 2a 13 41 44 44 43 43  20 52 35 2c 52 35 2c 23  |.*.ADDCC R5,R5,#|
0001a380  31 20 0d 9e 34 17 4d 4f  56 43 43 20 52 38 2c 52  |1 ..4.MOVCC R8,R|
0001a390  38 2c 4c 53 4c 20 23 31  20 0d 9e 3e 05 5d 0d 9e  |8,LSL #1 ..>.]..|
0001a3a0  48 10 e7 66 6c 61 67 3d  31 35 30 30 20 8c 0d 9e  |H..flag=1500 ...|
0001a3b0  52 0a 5b 4f 50 54 20 5a  0d 9e 5c 11 84 52 43 43  |R.[OPT Z..\..RCC|
0001a3c0  20 52 38 2c 52 38 2c 23  31 0d 9e 66 05 5d 0d 9e  | R8,R8,#1..f.]..|
0001a3d0  70 05 cd 0d 9e 7a 0a 5b  4f 50 54 20 5a 0d 9e 84  |p....z.[OPT Z...|
0001a3e0  0e 2e 6c 7a 77 6e 6f 63  6f 64 65 0d 9e 8e 0e 4d  |..lzwnocode....M|
0001a3f0  4f 56 20 52 33 2c 52 31  20 0d 9e 98 0e 43 4d 50  |OV R3,R1 ....CMP|
0001a400  20 52 36 2c 52 34 20 0d  9e a2 11 42 4c 53 20 6c  | R6,R4 ....BLS l|
0001a410  7a 77 65 6e 67 69 6e 65  0d 9e ac 0f 2e 6c 7a 77  |zwengine.....lzw|
0001a420  75 6e 73 74 61 63 6b 0d  9e b6 16 4c 44 52 42 20  |unstack....LDRB |
0001a430  52 30 2c 5b 52 36 2c 23  2d 31 5d 21 20 0d 9e c0  |R0,[R6,#-1]! ...|
0001a440  0f 2e 6c 7a 77 6c 6f 6f  70 65 6e 64 0d 9e ca 14  |..lzwloopend....|
0001a450  53 54 52 42 20 52 30 2c  5b 52 31 31 5d 2c 23 31  |STRB R0,[R11],#1|
0001a460  0d 9e d4 13 53 55 42 53  20 52 31 30 2c 52 31 30  |....SUBS R10,R10|
0001a470  2c 23 31 0d 9e de 0f 42  4e 45 20 6c 7a 77 6c 6f  |,#1....BNE lzwlo|
0001a480  6f 70 0d 9e e8 33 53 54  52 20 52 32 2c 66 69 72  |op...3STR R2,fir|
0001a490  73 74 63 6f 64 65 3a 53  54 52 20 52 33 2c 6f 6c  |stcode:STR R3,ol|
0001a4a0  64 63 6f 64 65 3a 53 54  52 20 52 35 2c 63 6f 64  |dcode:STR R5,cod|
0001a4b0  65 73 69 7a 65 0d 9e f2  2f 53 54 52 20 52 36 2c  |esize.../STR R6,|
0001a4c0  73 70 3a 53 54 52 20 52  37 2c 6d 61 78 63 6f 64  |sp:STR R7,maxcod|
0001a4d0  65 3a 53 54 52 20 52 38  2c 6d 61 78 63 6f 64 65  |e:STR R8,maxcode|
0001a4e0  73 69 7a 65 0d 9e fc 14  4c 44 4d 46 44 20 53 50  |size....LDMFD SP|
0001a4f0  20 21 2c 7b 50 43 7d 5e  0d 9f 06 0d 2e 6c 7a 77  | !,{PC}^.....lzw|
0001a500  63 6c 65 61 72 0d 9f 10  0d 4d 4f 56 20 52 30 2c  |clear....MOV R0,|
0001a510  23 30 0d 9f 1a 0e 4d 4f  56 20 52 33 2c 52 31 32  |#0....MOV R3,R12|
0001a520  0d 9f 24 14 2e 6c 7a 77  64 65 66 61 75 6c 74 74  |..$..lzwdefaultt|
0001a530  61 62 6c 65 0d 9f 2e 12  53 54 52 20 52 30 2c 5b  |able....STR R0,[|
0001a540  52 33 5d 2c 23 34 0d 9f  38 23 41 44 44 20 52 30  |R3],#4..8#ADD R0|
0001a550  2c 52 30 2c 23 31 3a 43  4d 50 20 52 30 2c 23 63  |,R0,#1:CMP R0,#c|
0001a560  6c 65 61 72 63 6f 64 65  25 0d 9f 42 17 42 43 43  |learcode%..B.BCC|
0001a570  20 6c 7a 77 64 65 66 61  75 6c 74 74 61 62 6c 65  | lzwdefaulttable|
0001a580  0d 9f 4c 17 4d 4f 56 20  52 35 2c 23 73 65 74 63  |..L.MOV R5,#setc|
0001a590  6f 64 65 73 25 2b 31 0d  9f 56 16 4d 4f 56 20 52  |odes%+1..V.MOV R|
0001a5a0  37 2c 23 63 6c 65 61 72  63 6f 64 65 25 0d 9f 60  |7,#clearcode%..`|
0001a5b0  15 4d 4f 56 20 52 38 2c  52 37 2c 4c 53 4c 20 23  |.MOV R8,R7,LSL #|
0001a5c0  31 20 0d 9f 6a 05 5d 0d  9f 74 10 e7 66 6c 61 67  |1 ..j.]..t..flag|
0001a5d0  3d 31 35 30 30 20 8c 0d  9f 7e 0a 5b 4f 50 54 20  |=1500 ...~.[OPT |
0001a5e0  5a 0d 9f 88 10 53 55 42  20 52 38 2c 52 38 2c 23  |Z....SUB R8,R8,#|
0001a5f0  31 0d 9f 92 05 5d 0d 9f  9c 05 cd 0d 9f a6 0a 5b  |1....].........[|
0001a600  4f 50 54 20 5a 0d 9f b0  11 41 44 44 20 52 37 2c  |OPT Z....ADD R7,|
0001a610  52 37 2c 23 32 20 0d 9f  ba 0e 42 4c 20 67 65 74  |R7,#2 ....BL get|
0001a620  63 6f 64 65 0d 9f c4 0e  4d 4f 56 20 52 32 2c 52  |code....MOV R2,R|
0001a630  30 20 0d 9f ce 0e 4d 4f  56 20 52 33 2c 52 30 20  |0 ....MOV R3,R0 |
0001a640  0d 9f d8 0e 4d 4f 56 20  52 36 2c 52 34 20 0d 9f  |....MOV R6,R4 ..|
0001a650  e2 10 42 20 6c 7a 77 6c  6f 6f 70 65 6e 64 0d 9f  |..B lzwloopend..|
0001a660  f6 11 2e 63 75 72 62 69  74 20 44 43 44 20 30 0d  |...curbit DCD 0.|
0001a670  a0 00 12 2e 6c 61 73 74  62 69 74 20 44 43 44 20  |....lastbit DCD |
0001a680  30 0d a0 0a 11 2e 62 75  66 20 44 43 44 20 62 75  |0.....buf DCD bu|
0001a690  66 25 0d a0 14 0c 2e 67  65 74 63 6f 64 65 0d a0  |f%.....getcode..|
0001a6a0  1e 19 53 54 4d 46 44 20  53 50 20 21 2c 7b 52 36  |..STMFD SP !,{R6|
0001a6b0  2c 52 37 2c 52 38 7d 0d  a0 28 11 41 44 52 20 52  |,R7,R8}..(.ADR R|
0001a6c0  36 2c 63 75 72 62 69 74  0d a0 32 17 4c 44 4d 49  |6,curbit..2.LDMI|
0001a6d0  41 20 52 36 2c 7b 52 36  2c 52 37 2c 52 38 7d 0d  |A R6,{R6,R7,R8}.|
0001a6e0  a0 3c 11 41 44 44 20 52  31 2c 52 35 2c 52 36 20  |.<.ADD R1,R5,R6 |
0001a6f0  0d a0 46 0d 43 4d 50 20  52 31 2c 52 37 0d a0 50  |..F.CMP R1,R7..P|
0001a700  14 42 43 53 20 6e 65 65  64 6d 6f 72 65 64 61 74  |.BCS needmoredat|
0001a710  61 0d a0 5a 0f 2e 73 69  6d 70 6c 65 63 6f 64 65  |a..Z..simplecode|
0001a720  0d a0 64 17 41 44 44 20  52 37 2c 52 38 2c 52 36  |..d.ADD R7,R8,R6|
0001a730  2c 4c 53 52 20 23 33 0d  a0 6e 10 42 49 43 20 52  |,LSR #3..n.BIC R|
0001a740  37 2c 52 37 2c 23 33 0d  a0 78 14 4c 44 4d 49 41  |7,R7,#3..x.LDMIA|
0001a750  20 52 37 2c 7b 52 30 2c  52 37 7d 0d a0 82 05 5d  | R7,{R0,R7}....]|
0001a760  0d a0 8c 10 e7 66 6c 61  67 3d 31 35 30 30 20 8c  |.....flag=1500 .|
0001a770  0d a0 96 0a 5b 4f 50 54  20 5a 0d a0 a0 16 82 20  |....[OPT Z..... |
0001a780  52 31 2c 52 30 2c 52 30  2c 52 4f 52 20 23 31 36  |R1,R0,R0,ROR #16|
0001a790  0d a0 aa 16 42 49 43 20  52 31 2c 52 31 2c 23 26  |....BIC R1,R1,#&|
0001a7a0  46 46 30 30 30 30 0d a0  b4 14 4d 4f 56 20 52 30  |FF0000....MOV R0|
0001a7b0  2c 52 30 2c 52 4f 52 20  23 38 0d a0 be 15 82 20  |,R0,ROR #8..... |
0001a7c0  52 30 2c 52 30 2c 52 31  2c 4c 53 52 20 23 38 0d  |R0,R0,R1,LSR #8.|
0001a7d0  a0 c8 16 82 20 52 31 2c  52 37 2c 52 37 2c 52 4f  |.... R1,R7,R7,RO|
0001a7e0  52 20 23 31 36 0d a0 d2  16 42 49 43 20 52 31 2c  |R #16....BIC R1,|
0001a7f0  52 31 2c 23 26 46 46 30  30 30 30 0d a0 dc 14 4d  |R1,#&FF0000....M|
0001a800  4f 56 20 52 37 2c 52 37  2c 52 4f 52 20 23 38 0d  |OV R7,R7,ROR #8.|
0001a810  a0 e6 15 82 20 52 37 2c  52 37 2c 52 31 2c 4c 53  |.... R7,R7,R1,LS|
0001a820  52 20 23 38 0d a0 f0 48  80 53 20 52 31 2c 52 36  |R #8...H.S R1,R6|
0001a830  2c 23 33 31 3a 4d 4f 56  4e 45 20 52 30 2c 52 30  |,#31:MOVNE R0,R0|
0001a840  2c 4c 53 4c 20 52 31 3a  52 53 42 4e 45 20 52 31  |,LSL R1:RSBNE R1|
0001a850  2c 52 31 2c 23 33 32 3a  84 52 4e 45 20 52 30 2c  |,R1,#32:.RNE R0,|
0001a860  52 30 2c 52 37 2c 4c 53  52 20 52 31 0d a0 fa 11  |R0,R7,LSR R1....|
0001a870  52 53 42 20 52 31 2c 52  35 2c 23 33 32 0d a1 04  |RSB R1,R5,#32...|
0001a880  14 4d 4f 56 20 52 30 2c  52 30 2c 4c 53 52 20 52  |.MOV R0,R0,LSR R|
0001a890  31 0d a1 0e 05 5d 0d a1  18 05 cc 0d a1 22 0a 5b  |1....].......".[|
0001a8a0  4f 50 54 20 5a 0d a1 2c  48 80 53 20 52 31 2c 52  |OPT Z..,H.S R1,R|
0001a8b0  36 2c 23 33 31 3a 4d 4f  56 4e 45 20 52 30 2c 52  |6,#31:MOVNE R0,R|
0001a8c0  30 2c 4c 53 52 20 52 31  3a 52 53 42 4e 45 20 52  |0,LSR R1:RSBNE R|
0001a8d0  31 2c 52 31 2c 23 33 32  3a 84 52 4e 45 20 52 30  |1,R1,#32:.RNE R0|
0001a8e0  2c 52 30 2c 52 37 2c 4c  53 4c 20 52 31 0d a1 36  |,R0,R7,LSL R1..6|
0001a8f0  21 4d 56 4e 20 52 31 2c  23 30 3a 42 49 43 20 52  |!MVN R1,#0:BIC R|
0001a900  30 2c 52 30 2c 52 31 2c  4c 53 4c 20 52 35 0d a1  |0,R0,R1,LSL R5..|
0001a910  40 05 5d 0d a1 4a 05 cd  0d a1 54 0a 5b 4f 50 54  |@.]..J....T.[OPT|
0001a920  20 5a 0d a1 5e 10 41 44  44 20 52 36 2c 52 36 2c  | Z..^.ADD R6,R6,|
0001a930  52 35 0d a1 68 11 53 54  52 20 52 36 2c 63 75 72  |R5..h.STR R6,cur|
0001a940  62 69 74 0d a1 72 19 4c  44 4d 46 44 20 53 50 20  |bit..r.LDMFD SP |
0001a950  21 2c 7b 52 36 2c 52 37  2c 52 38 7d 0d a1 7c 0e  |!,{R6,R7,R8}..|.|
0001a960  4d 4f 56 20 50 43 2c 52  31 34 0d a1 86 11 2e 6e  |MOV PC,R14.....n|
0001a970  65 65 64 6d 6f 72 65 64  61 74 61 0d a1 90 1d 53  |eedmoredata....S|
0001a980  54 4d 46 44 20 53 50 20  21 2c 7b 52 32 2c 52 33  |TMFD SP !,{R2,R3|
0001a990  2c 52 34 2c 52 31 34 7d  0d a1 9a 14 4d 4f 56 20  |,R4,R14}....MOV |
0001a9a0  52 33 2c 52 37 2c 4c 53  52 20 23 33 0d a1 a4 11  |R3,R7,LSR #3....|
0001a9b0  53 55 42 20 52 30 2c 52  33 2c 23 32 20 0d a1 ae  |SUB R0,R3,#2 ...|
0001a9c0  13 4c 44 52 42 20 52 30  2c 5b 52 38 2c 52 30 5d  |.LDRB R0,[R8,R0]|
0001a9d0  0d a1 b8 10 53 54 52 42  20 52 30 2c 5b 52 38 5d  |....STRB R0,[R8]|
0001a9e0  0d a1 c2 11 53 55 42 20  52 30 2c 52 33 2c 23 31  |....SUB R0,R3,#1|
0001a9f0  20 0d a1 cc 13 4c 44 52  42 20 52 30 2c 5b 52 38  | ....LDRB R0,[R8|
0001aa00  2c 52 30 5d 0d a1 d6 13  53 54 52 42 20 52 30 2c  |,R0]....STRB R0,|
0001aa10  5b 52 38 2c 23 31 5d 0d  a1 e0 13 4c 44 52 20 52  |[R8,#1]....LDR R|
0001aa20  31 2c 5b 52 39 2c 23 31  36 5d 0d a1 ea 10 4c 44  |1,[R9,#16]....LD|
0001aa30  52 20 52 31 2c 5b 52 31  5d 20 0d a1 f4 05 5d 0d  |R R1,[R1] ....].|
0001aa40  a1 fe 10 e7 66 6c 61 67  3d 31 35 30 30 20 8c 0d  |....flag=1500 ..|
0001aa50  a2 08 0a 5b 4f 50 54 20  5a 0d a2 12 0f 4d 4f 56  |...[OPT Z....MOV|
0001aa60  20 52 30 2c 23 32 35 36  0d a2 1c 0f 4d 4f 56 20  | R0,#256....MOV |
0001aa70  52 33 2c 23 32 35 36 0d  a2 26 05 5d 0d a2 30 05  |R3,#256..&.]..0.|
0001aa80  cc 0d a2 3a 0a 5b 4f 50  54 20 5a 0d a2 44 15 42  |...:.[OPT Z..D.B|
0001aa90  4c 20 62 79 74 65 66 72  6f 6d 63 61 63 68 65 25  |L bytefromcache%|
0001aaa0  0d a2 4e 0f 4d 4f 56 53  20 52 33 2c 52 30 20 0d  |..N.MOVS R3,R0 .|
0001aab0  a2 58 13 42 45 51 20 73  69 6d 70 6c 65 63 6f 64  |.X.BEQ simplecod|
0001aac0  65 31 0d a2 62 05 5d 0d  a2 6c 05 cd 0d a2 76 0a  |e1..b.]..l....v.|
0001aad0  5b 4f 50 54 20 5a 0d a2  80 11 53 55 42 20 52 36  |[OPT Z....SUB R6|
0001aae0  2c 52 36 2c 52 37 20 0d  a2 8a 11 41 44 44 20 52  |,R6,R7 ....ADD R|
0001aaf0  36 2c 52 36 2c 23 31 36  0d a2 94 11 41 44 44 20  |6,R6,#16....ADD |
0001ab00  52 30 2c 52 30 2c 23 32  20 0d a2 9e 14 4d 4f 56  |R0,R0,#2 ....MOV|
0001ab10  20 52 37 2c 52 30 2c 4c  53 4c 20 23 33 0d a2 a8  | R7,R0,LSL #3...|
0001ab20  12 53 54 52 20 52 37 2c  6c 61 73 74 62 69 74 0d  |.STR R7,lastbit.|
0001ab30  a2 b2 11 41 44 44 20 52  32 2c 52 38 2c 23 32 20  |...ADD R2,R8,#2 |
0001ab40  0d a2 bc 1a 42 4c 20 6d  75 6c 74 69 62 79 74 65  |....BL multibyte|
0001ab50  66 72 6f 6d 63 61 63 68  65 25 0d a2 c6 10 2e 73  |fromcache%.....s|
0001ab60  69 6d 70 6c 65 63 6f 64  65 31 0d a2 d0 1d 4c 44  |implecode1....LD|
0001ab70  4d 46 44 20 53 50 20 21  2c 7b 52 32 2c 52 33 2c  |MFD SP !,{R2,R3,|
0001ab80  52 34 2c 52 31 34 7d 0d  a2 da 10 42 20 73 69 6d  |R4,R14}....B sim|
0001ab90  70 6c 65 63 6f 64 65 0d  a2 e4 05 5d 0d a2 ee 05  |plecode....]....|
0001aba0  cd 0d a2 f8 0d e7 72 61  6e 67 65 25 20 8c 0d a3  |......range% ...|
0001abb0  02 0a 5b 4f 50 54 20 5a  0d a3 16 0c 2e 6d 61 78  |..[OPT Z.....max|
0001abc0  6d 69 6e 25 0d a3 20 1c  4c 44 52 20 52 30 2c 5b  |min%.. .LDR R0,[|
0001abd0  52 39 5d 3a 4c 44 52 20  52 30 2c 5b 52 30 5d 20  |R9]:LDR R0,[R0] |
0001abe0  0d a3 2a 13 4c 44 52 20  52 31 2c 5b 52 39 2c 23  |..*.LDR R1,[R9,#|
0001abf0  38 5d 20 0d a3 34 0e 4c  44 52 20 52 32 2c 6d 69  |8] ..4.LDR R2,mi|
0001ac00  6e 0d a3 3e 0e 4c 44 52  20 52 33 2c 6d 61 78 0d  |n..>.LDR R3,max.|
0001ac10  a3 48 0d 2e 6d 61 78 6d  69 6e 6c 70 0d a3 52 12  |.H..maxminlp..R.|
0001ac20  4c 44 52 20 52 34 2c 5b  52 31 5d 2c 23 34 0d a3  |LDR R4,[R1],#4..|
0001ac30  5c 1a 43 4d 50 20 52 34  2c 52 33 3a 4d 4f 56 43  |\.CMP R4,R3:MOVC|
0001ac40  53 20 52 33 2c 52 34 20  0d a3 66 1a 43 4d 50 20  |S R3,R4 ..f.CMP |
0001ac50  52 34 2c 52 32 3a 4d 4f  56 43 43 20 52 32 2c 52  |R4,R2:MOVCC R2,R|
0001ac60  34 20 0d a3 70 1e 53 55  42 53 20 52 30 2c 52 30  |4 ..p.SUBS R0,R0|
0001ac70  2c 23 31 3a 42 4e 45 20  6d 61 78 6d 69 6e 6c 70  |,#1:BNE maxminlp|
0001ac80  0d a3 7a 0e 53 54 52 20  52 32 2c 6d 69 6e 0d a3  |..z.STR R2,min..|
0001ac90  84 0e 53 54 52 20 52 33  2c 6d 61 78 0d a3 8e 0f  |..STR R3,max....|
0001aca0  4d 4f 56 53 20 50 43 2c  52 31 34 0d a3 98 0e 2e  |MOVS PC,R14.....|
0001acb0  6d 69 6e 20 44 43 44 20  46 0d a3 a2 0e 2e 6d 61  |min DCD F.....ma|
0001acc0  78 20 44 43 44 20 30 0d  a3 ac 05 5d 0d a3 b6 05  |x DCD 0....]....|
0001acd0  cd 0d a3 c0 0f e7 73 68  61 72 70 65 6e 25 20 8c  |......sharpen% .|
0001ace0  0d a3 ca 39 73 68 61 72  70 3d 28 63 6f 6c 2b 31  |...9sharp=(col+1|
0001acf0  29 2a 34 3a e7 73 68 61  72 70 65 6e 25 3c 3e 38  |)*4:.sharpen%<>8|
0001ad00  20 73 68 61 72 70 6d 75  6c 25 3d 46 2f 28 73 68  | sharpmul%=F/(sh|
0001ad10  61 72 70 65 6e 25 2d 38  29 0d a3 d4 0a 5b 4f 50  |arpen%-8)....[OP|
0001ad20  54 20 5a 0d a3 e8 0b 2e  73 68 61 72 70 25 0d a3  |T Z.....sharp%..|
0001ad30  f2 1c 4c 44 52 20 52 30  2c 5b 52 39 5d 3a 4c 44  |..LDR R0,[R9]:LD|
0001ad40  52 20 52 30 2c 5b 52 30  5d 20 0d a3 fc 13 4c 44  |R R0,[R0] ....LD|
0001ad50  52 20 52 31 2c 5b 52 39  2c 23 38 5d 20 0d a4 06  |R R1,[R9,#8] ...|
0001ad60  14 4c 44 52 20 52 32 2c  5b 52 39 2c 23 31 36 5d  |.LDR R2,[R9,#16]|
0001ad70  20 0d a4 10 14 4c 44 52  20 52 33 2c 5b 52 39 2c  | ....LDR R3,[R9,|
0001ad80  23 32 34 5d 20 0d a4 1a  14 4c 44 52 20 52 34 2c  |#24] ....LDR R4,|
0001ad90  5b 52 39 2c 23 33 32 5d  20 0d a4 24 05 5d 0d a4  |[R9,#32] ..$.]..|
0001ada0  2e 11 c8 8e 20 73 68 61  72 70 65 6e 25 20 ca 0d  |.... sharpen% ..|
0001adb0  a4 38 12 c9 20 38 2c 39  2c 31 32 2c 31 36 2c 32  |.8.. 8,9,12,16,2|
0001adc0  34 0d a4 42 05 7f 0d a4  4c 0a 5b 4f 50 54 20 5a  |4..B....L.[OPT Z|
0001add0  0d a4 56 1b 4d 4f 56 20  52 38 2c 23 73 68 61 72  |..V.MOV R8,#shar|
0001ade0  70 6d 75 6c 25 20 80 20  26 46 46 0d a4 60 1f 84  |pmul% . &FF..`..|
0001adf0  52 20 52 38 2c 52 38 2c  23 73 68 61 72 70 6d 75  |R R8,R8,#sharpmu|
0001ae00  6c 25 20 80 20 26 46 46  30 30 0d a4 6a 23 4d 4f  |l% . &FF00..j#MO|
0001ae10  56 20 52 39 2c 23 28 73  68 61 72 70 6d 75 6c 25  |V R9,#(sharpmul%|
0001ae20  20 3e 3e 20 31 36 29 20  80 20 26 46 46 0d a4 74  | >> 16) . &FF..t|
0001ae30  27 84 52 20 52 39 2c 52  39 2c 23 28 73 68 61 72  |'.R R9,R9,#(shar|
0001ae40  70 6d 75 6c 25 20 3e 3e  20 31 36 29 20 80 20 26  |pmul% >> 16) . &|
0001ae50  46 46 30 30 0d a4 7e 05  5d 0d a4 88 05 cb 0d a4  |FF00..~.].......|
0001ae60  92 0a 5b 4f 50 54 20 5a  0d a4 9c 0c 2e 73 68 61  |..[OPT Z.....sha|
0001ae70  72 70 6c 70 0d a4 a6 17  4c 44 52 20 52 35 2c 5b  |rplp....LDR R5,[|
0001ae80  52 31 2c 23 2d 73 68 61  72 70 5d 0d a4 b0 23 4c  |R1,#-sharp]...#L|
0001ae90  44 52 20 52 36 2c 5b 52  31 2c 23 73 68 61 72 70  |DR R6,[R1,#sharp|
0001aea0  5d 3a 41 44 44 20 52 35  2c 52 35 2c 52 36 0d a4  |]:ADD R5,R5,R6..|
0001aeb0  ba 1f 4c 44 52 20 52 36  2c 5b 52 31 5d 2c 23 34  |..LDR R6,[R1],#4|
0001aec0  3a 41 44 44 20 52 35 2c  52 35 2c 52 36 0d a4 c4  |:ADD R5,R5,R6...|
0001aed0  24 4c 44 52 20 52 36 2c  5b 52 33 2c 23 2d 73 68  |$LDR R6,[R3,#-sh|
0001aee0  61 72 70 5d 3a 41 44 44  20 52 35 2c 52 35 2c 52  |arp]:ADD R5,R5,R|
0001aef0  36 0d a4 ce 23 4c 44 52  20 52 36 2c 5b 52 33 2c  |6...#LDR R6,[R3,|
0001af00  23 73 68 61 72 70 5d 3a  41 44 44 20 52 35 2c 52  |#sharp]:ADD R5,R|
0001af10  35 2c 52 36 0d a4 d8 1f  4c 44 52 20 52 36 2c 5b  |5,R6....LDR R6,[|
0001af20  52 33 5d 2c 23 34 3a 41  44 44 20 52 35 2c 52 35  |R3],#4:ADD R5,R5|
0001af30  2c 52 36 0d a4 e2 24 4c  44 52 20 52 36 2c 5b 52  |,R6...$LDR R6,[R|
0001af40  32 2c 23 2d 73 68 61 72  70 5d 3a 41 44 44 20 52  |2,#-sharp]:ADD R|
0001af50  35 2c 52 35 2c 52 36 0d  a4 ec 24 4c 44 52 20 52  |5,R5,R6...$LDR R|
0001af60  36 2c 5b 52 32 2c 23 73  68 61 72 70 5d 3a 41 44  |6,[R2,#sharp]:AD|
0001af70  44 20 52 35 2c 52 35 2c  52 36 20 0d a4 f6 13 4c  |D R5,R5,R6 ....L|
0001af80  44 52 20 52 36 2c 5b 52  32 5d 2c 23 34 20 0d a5  |DR R6,[R2],#4 ..|
0001af90  00 14 4d 4f 56 20 52 36  2c 52 36 2c 4c 53 52 20  |..MOV R6,R6,LSR |
0001afa0  23 31 0d a5 0a 14 4d 4f  56 20 52 37 2c 23 73 68  |#1....MOV R7,#sh|
0001afb0  61 72 70 65 6e 25 0d a5  14 11 4d 55 4c 20 52 37  |arpen%....MUL R7|
0001afc0  2c 52 36 2c 52 37 20 0d  a5 1e 18 53 55 42 53 20  |,R6,R7 ....SUBS |
0001afd0  52 35 2c 52 37 2c 52 35  2c 4c 53 52 20 23 31 0d  |R5,R7,R5,LSR #1.|
0001afe0  a5 28 10 4d 4f 56 43 43  20 52 35 2c 23 30 20 0d  |.(.MOVCC R5,#0 .|
0001aff0  a5 32 05 5d 0d a5 3c 11  c8 8e 20 73 68 61 72 70  |.2.]..<... sharp|
0001b000  65 6e 25 20 ca 0d a5 46  09 c9 20 38 2c 39 0d a5  |en% ...F.. 8,9..|
0001b010  50 0a 5b 4f 50 54 20 5a  0d a5 5a 14 4d 4f 56 20  |P.[OPT Z..Z.MOV |
0001b020  52 36 2c 52 35 2c 4c 53  4c 20 23 31 0d a5 64 05  |R6,R5,LSL #1..d.|
0001b030  5d 0d a5 6e 08 c9 20 31  30 0d a5 78 0a 5b 4f 50  |]..n.. 10..x.[OP|
0001b040  54 20 5a 0d a5 82 0d 4d  4f 56 20 52 36 2c 52 35  |T Z....MOV R6,R5|
0001b050  0d a5 8c 05 5d 0d a5 96  08 c9 20 31 32 0d a5 a0  |....]..... 12...|
0001b060  0a 5b 4f 50 54 20 5a 0d  a5 aa 14 4d 4f 56 20 52  |.[OPT Z....MOV R|
0001b070  36 2c 52 35 2c 4c 53 52  20 23 31 0d a5 b4 05 5d  |6,R5,LSR #1....]|
0001b080  0d a5 be 08 c9 20 31 36  0d a5 c8 0a 5b 4f 50 54  |..... 16....[OPT|
0001b090  20 5a 0d a5 d2 14 4d 4f  56 20 52 36 2c 52 35 2c  | Z....MOV R6,R5,|
0001b0a0  4c 53 52 20 23 32 0d a5  dc 05 5d 0d a5 e6 08 c9  |LSR #2....].....|
0001b0b0  20 32 34 0d a5 f0 0a 5b  4f 50 54 20 5a 0d a5 fa  | 24....[OPT Z...|
0001b0c0  14 4d 4f 56 20 52 36 2c  52 35 2c 4c 53 52 20 23  |.MOV R6,R5,LSR #|
0001b0d0  33 0d a6 04 05 5d 0d a6  0e 05 7f 0d a6 18 0a 5b  |3....].........[|
0001b0e0  4f 50 54 20 5a 0d a6 22  15 4d 4f 56 20 52 36 2c  |OPT Z..".MOV R6,|
0001b0f0  52 35 2c 4c 53 52 20 23  31 36 0d a6 2c 16 82 20  |R5,LSR #16..,.. |
0001b100  52 35 2c 52 35 2c 52 36  2c 4c 53 4c 20 23 31 36  |R5,R5,R6,LSL #16|
0001b110  0d a6 36 10 4d 55 4c 20  52 37 2c 52 38 2c 52 35  |..6.MUL R7,R8,R5|
0001b120  0d a6 40 10 4d 55 4c 20  52 35 2c 52 39 2c 52 35  |..@.MUL R5,R9,R5|
0001b130  0d a6 4a 11 4d 55 4c 20  52 31 30 2c 52 36 2c 52  |..J.MUL R10,R6,R|
0001b140  38 0d a6 54 10 4d 55 4c  20 52 36 2c 52 39 2c 52  |8..T.MUL R6,R9,R|
0001b150  36 0d a6 5e 13 41 44 44  53 20 52 31 30 2c 52 35  |6..^.ADDS R10,R5|
0001b160  2c 52 31 30 0d a6 68 17  41 44 44 43 53 20 52 36  |,R10..h.ADDCS R6|
0001b170  2c 52 36 2c 23 26 31 30  30 30 30 0d a6 72 1a 41  |,R6,#&10000..r.A|
0001b180  44 44 53 20 52 37 2c 52  37 2c 52 31 30 2c 4c 53  |DDS R7,R7,R10,LS|
0001b190  4c 20 23 31 36 0d a6 7c  19 41 44 43 20 52 36 2c  |L #16..|.ADC R6,|
0001b1a0  52 36 2c 52 31 30 2c 4c  53 52 20 23 31 36 0d a6  |R6,R10,LSR #16..|
0001b1b0  86 1a 4d 4f 56 20 52 36  2c 52 36 2c 4c 53 4c 20  |..MOV R6,R6,LSL |
0001b1c0  23 28 33 32 2d 32 37 29  0d a6 90 18 84 52 53 20  |#(32-27).....RS |
0001b1d0  52 36 2c 52 36 2c 52 37  2c 4c 53 52 20 23 32 37  |R6,R6,R7,LSR #27|
0001b1e0  0d a6 9a 13 41 44 44 43  53 20 52 36 2c 52 36 2c  |....ADDCS R6,R6,|
0001b1f0  23 31 20 0d a6 a4 05 5d  0d a6 ae 05 cb 0d a6 b8  |#1 ....]........|
0001b200  0a 5b 4f 50 54 20 5a 0d  a6 c2 19 43 4d 50 20 52  |.[OPT Z....CMP R|
0001b210  36 2c 23 46 3a 4d 4f 56  43 53 20 52 36 2c 23 46  |6,#F:MOVCS R6,#F|
0001b220  0d a6 cc 12 53 54 52 20  52 36 2c 5b 52 34 5d 2c  |....STR R6,[R4],|
0001b230  23 34 0d a6 d6 11 53 55  42 53 20 52 30 2c 52 30  |#4....SUBS R0,R0|
0001b240  2c 23 31 0d a6 e0 0f 42  4e 45 20 73 68 61 72 70  |,#1....BNE sharp|
0001b250  6c 70 0d a6 ea 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp....MOVS PC,R1|
0001b260  34 0d a6 f4 05 5d 0d a6  fe 05 cd 0d a7 08 13 e7  |4....]..........|
0001b270  68 69 73 74 25 84 65 71  75 61 6c 25 20 8c 0d a7  |hist%.equal% ...|
0001b280  12 0a 5b 4f 50 54 20 5a  0d a7 26 0b 2e 68 69 73  |..[OPT Z..&..his|
0001b290  74 6f 25 0d a7 30 1c 4c  44 52 20 52 30 2c 5b 52  |to%..0.LDR R0,[R|
0001b2a0  39 5d 3a 4c 44 52 20 52  30 2c 5b 52 30 5d 20 0d  |9]:LDR R0,[R0] .|
0001b2b0  a7 3a 13 4c 44 52 20 52  31 2c 5b 52 39 2c 23 38  |.:.LDR R1,[R9,#8|
0001b2c0  5d 20 0d a7 44 13 4c 44  52 20 52 32 2c 5b 52 39  |] ..D.LDR R2,[R9|
0001b2d0  2c 23 31 36 5d 0d a7 4e  0b 2e 68 69 73 74 6c 70  |,#16]..N..histlp|
0001b2e0  0d a7 58 28 4c 44 52 20  52 33 2c 5b 52 32 5d 2c  |..X(LDR R3,[R2],|
0001b2f0  23 34 3a 43 4d 50 20 52  33 2c 23 46 3a 4d 4f 56  |#4:CMP R3,#F:MOV|
0001b300  43 53 20 52 33 2c 23 46  0d a7 62 19 4d 4f 56 20  |CS R3,#F..b.MOV |
0001b310  52 33 2c 52 33 2c 4c 53  52 20 23 62 69 74 73 2d  |R3,R3,LSR #bits-|
0001b320  38 0d a7 6c 05 5d 0d a7  76 0c e7 63 6f 6c 3d 32  |8..l.]..v..col=2|
0001b330  20 8c 0d a7 80 0a 5b 4f  50 54 20 5a 0d a7 8a 17  | .....[OPT Z....|
0001b340  41 44 44 20 52 33 2c 52  33 2c 52 33 2c 4c 53 4c  |ADD R3,R3,R3,LSL|
0001b350  20 23 31 0d a7 94 3c 4c  44 52 20 52 34 2c 5b 52  | #1...<LDR R4,[R|
0001b360  31 2c 52 33 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |1,R3,LSL #2]:ADD|
0001b370  20 52 34 2c 52 34 2c 23  31 3a 53 54 52 20 52 34  | R4,R4,#1:STR R4|
0001b380  2c 5b 52 31 2c 52 33 2c  4c 53 4c 20 23 32 5d 0d  |,[R1,R3,LSL #2].|
0001b390  a7 9e 28 4c 44 52 20 52  33 2c 5b 52 32 5d 2c 23  |..(LDR R3,[R2],#|
0001b3a0  34 3a 43 4d 50 20 52 33  2c 23 46 3a 4d 4f 56 43  |4:CMP R3,#F:MOVC|
0001b3b0  53 20 52 33 2c 23 46 0d  a7 a8 19 4d 4f 56 20 52  |S R3,#F....MOV R|
0001b3c0  33 2c 52 33 2c 4c 53 52  20 23 62 69 74 73 2d 38  |3,R3,LSR #bits-8|
0001b3d0  0d a7 b2 24 41 44 44 20  52 33 2c 52 33 2c 52 33  |...$ADD R3,R3,R3|
0001b3e0  2c 4c 53 4c 20 23 31 3a  41 44 44 20 52 33 2c 52  |,LSL #1:ADD R3,R|
0001b3f0  33 2c 23 31 0d a7 bc 3c  4c 44 52 20 52 34 2c 5b  |3,#1...<LDR R4,[|
0001b400  52 31 2c 52 33 2c 4c 53  4c 20 23 32 5d 3a 41 44  |R1,R3,LSL #2]:AD|
0001b410  44 20 52 34 2c 52 34 2c  23 31 3a 53 54 52 20 52  |D R4,R4,#1:STR R|
0001b420  34 2c 5b 52 31 2c 52 33  2c 4c 53 4c 20 23 32 5d  |4,[R1,R3,LSL #2]|
0001b430  0d a7 c6 28 4c 44 52 20  52 33 2c 5b 52 32 5d 2c  |...(LDR R3,[R2],|
0001b440  23 34 3a 43 4d 50 20 52  33 2c 23 46 3a 4d 4f 56  |#4:CMP R3,#F:MOV|
0001b450  43 53 20 52 33 2c 23 46  0d a7 d0 19 4d 4f 56 20  |CS R3,#F....MOV |
0001b460  52 33 2c 52 33 2c 4c 53  52 20 23 62 69 74 73 2d  |R3,R3,LSR #bits-|
0001b470  38 0d a7 da 24 41 44 44  20 52 33 2c 52 33 2c 52  |8...$ADD R3,R3,R|
0001b480  33 2c 4c 53 4c 20 23 31  3a 41 44 44 20 52 33 2c  |3,LSL #1:ADD R3,|
0001b490  52 33 2c 23 32 0d a7 e4  05 5d 0d a7 ee 05 cd 0d  |R3,#2....]......|
0001b4a0  a7 f8 0a 5b 4f 50 54 20  5a 0d a8 02 3c 4c 44 52  |...[OPT Z...<LDR|
0001b4b0  20 52 34 2c 5b 52 31 2c  52 33 2c 4c 53 4c 20 23  | R4,[R1,R3,LSL #|
0001b4c0  32 5d 3a 41 44 44 20 52  34 2c 52 34 2c 23 31 3a  |2]:ADD R4,R4,#1:|
0001b4d0  53 54 52 20 52 34 2c 5b  52 31 2c 52 33 2c 4c 53  |STR R4,[R1,R3,LS|
0001b4e0  4c 20 23 32 5d 0d a8 0c  11 53 55 42 53 20 52 30  |L #2]....SUBS R0|
0001b4f0  2c 52 30 2c 23 31 0d a8  16 0e 42 4e 45 20 68 69  |,R0,#1....BNE hi|
0001b500  73 74 6c 70 0d a8 20 0f  4d 4f 56 53 20 50 43 2c  |stlp.. .MOVS PC,|
0001b510  52 31 34 0d a8 2a 05 5d  0d a8 34 05 cd 0d a8 3e  |R14..*.]..4....>|
0001b520  0d e7 65 71 75 61 6c 25  20 8c 0d a8 48 0a 5b 4f  |..equal% ...H.[O|
0001b530  50 54 20 5a 0d a8 5c 0f  2e 68 69 73 74 65 71 75  |PT Z..\..histequ|
0001b540  61 6c 25 0d a8 66 1c 4c  44 52 20 52 30 2c 5b 52  |al%..f.LDR R0,[R|
0001b550  39 5d 3a 4c 44 52 20 52  30 2c 5b 52 30 5d 20 0d  |9]:LDR R0,[R0] .|
0001b560  a8 70 13 4c 44 52 20 52  31 2c 5b 52 39 2c 23 38  |.p.LDR R1,[R9,#8|
0001b570  5d 20 0d a8 7a 14 4c 44  52 20 52 32 2c 5b 52 39  |] ..z.LDR R2,[R9|
0001b580  2c 23 31 36 5d 20 0d a8  84 0c 2e 65 71 75 61 6c  |,#16] .....equal|
0001b590  6c 70 0d a8 8e 25 4c 44  52 20 52 33 2c 5b 52 32  |lp...%LDR R3,[R2|
0001b5a0  5d 3a 43 4d 50 20 52 33  2c 23 46 3a 4d 4f 56 43  |]:CMP R3,#F:MOVC|
0001b5b0  53 20 52 33 2c 23 46 0d  a8 98 19 4d 4f 56 20 52  |S R3,#F....MOV R|
0001b5c0  33 2c 52 33 2c 4c 53 52  20 23 62 69 74 73 2d 38  |3,R3,LSR #bits-8|
0001b5d0  0d a8 a2 05 5d 0d a8 ac  0c e7 63 6f 6c 3d 32 20  |....].....col=2 |
0001b5e0  8c 0d a8 b6 0a 5b 4f 50  54 20 5a 0d a8 c0 25 4c  |.....[OPT Z...%L|
0001b5f0  44 52 20 52 33 2c 5b 52  32 5d 3a 43 4d 50 20 52  |DR R3,[R2]:CMP R|
0001b600  33 2c 23 46 3a 4d 4f 56  43 53 20 52 33 2c 23 46  |3,#F:MOVCS R3,#F|
0001b610  0d a8 ca 19 4d 4f 56 20  52 33 2c 52 33 2c 4c 53  |....MOV R3,R3,LS|
0001b620  52 20 23 62 69 74 73 2d  38 0d a8 d4 17 41 44 44  |R #bits-8....ADD|
0001b630  20 52 33 2c 52 33 2c 52  33 2c 4c 53 4c 20 23 31  | R3,R3,R3,LSL #1|
0001b640  0d a8 de 28 4c 44 52 20  52 34 2c 5b 52 31 2c 52  |...(LDR R4,[R1,R|
0001b650  33 2c 4c 53 4c 20 23 32  5d 3a 53 54 52 20 52 34  |3,LSL #2]:STR R4|
0001b660  2c 5b 52 32 5d 2c 23 34  0d a8 e8 25 4c 44 52 20  |,[R2],#4...%LDR |
0001b670  52 33 2c 5b 52 32 5d 3a  43 4d 50 20 52 33 2c 23  |R3,[R2]:CMP R3,#|
0001b680  46 3a 4d 4f 56 43 53 20  52 33 2c 23 46 0d a8 f2  |F:MOVCS R3,#F...|
0001b690  19 4d 4f 56 20 52 33 2c  52 33 2c 4c 53 52 20 23  |.MOV R3,R3,LSR #|
0001b6a0  62 69 74 73 2d 38 0d a8  fc 24 41 44 44 20 52 33  |bits-8...$ADD R3|
0001b6b0  2c 52 33 2c 52 33 2c 4c  53 4c 20 23 31 3a 41 44  |,R3,R3,LSL #1:AD|
0001b6c0  44 20 52 33 2c 52 33 2c  23 31 0d a9 06 28 4c 44  |D R3,R3,#1...(LD|
0001b6d0  52 20 52 34 2c 5b 52 31  2c 52 33 2c 4c 53 4c 20  |R R4,[R1,R3,LSL |
0001b6e0  23 32 5d 3a 53 54 52 20  52 34 2c 5b 52 32 5d 2c  |#2]:STR R4,[R2],|
0001b6f0  23 34 0d a9 10 25 4c 44  52 20 52 33 2c 5b 52 32  |#4...%LDR R3,[R2|
0001b700  5d 3a 43 4d 50 20 52 33  2c 23 46 3a 4d 4f 56 43  |]:CMP R3,#F:MOVC|
0001b710  53 20 52 33 2c 23 46 0d  a9 1a 19 4d 4f 56 20 52  |S R3,#F....MOV R|
0001b720  33 2c 52 33 2c 4c 53 52  20 23 62 69 74 73 2d 38  |3,R3,LSR #bits-8|
0001b730  0d a9 24 24 41 44 44 20  52 33 2c 52 33 2c 52 33  |..$$ADD R3,R3,R3|
0001b740  2c 4c 53 4c 20 23 31 3a  41 44 44 20 52 33 2c 52  |,LSL #1:ADD R3,R|
0001b750  33 2c 23 32 0d a9 2e 05  5d 0d a9 38 05 cd 0d a9  |3,#2....]..8....|
0001b760  42 0a 5b 4f 50 54 20 5a  0d a9 4c 28 4c 44 52 20  |B.[OPT Z..L(LDR |
0001b770  52 34 2c 5b 52 31 2c 52  33 2c 4c 53 4c 20 23 32  |R4,[R1,R3,LSL #2|
0001b780  5d 3a 53 54 52 20 52 34  2c 5b 52 32 5d 2c 23 34  |]:STR R4,[R2],#4|
0001b790  0d a9 56 11 53 55 42 53  20 52 30 2c 52 30 2c 23  |..V.SUBS R0,R0,#|
0001b7a0  31 0d a9 60 0f 42 4e 45  20 65 71 75 61 6c 6c 70  |1..`.BNE equallp|
0001b7b0  0d a9 6a 0f 4d 4f 56 53  20 50 43 2c 52 31 34 0d  |..j.MOVS PC,R14.|
0001b7c0  a9 74 05 5d 0d a9 7e 05  cd 0d a9 88 0b c8 8e 20  |.t.]..~........ |
0001b7d0  72 24 20 ca 0d a9 92 27  c9 20 22 46 4e 38 30 30  |r$ ....'. "FN800|
0001b7e0  22 2c 22 46 4e 38 30 31  22 2c 22 46 4e 31 30 30  |","FN801","FN100|
0001b7f0  30 22 2c 22 46 4e 31 30  30 31 22 0d a9 9c 0a 5b  |0","FN1001"....[|
0001b800  4f 50 54 20 5a 0d a9 ba  0e 2e 72 6c 65 78 70 61  |OPT Z.....rlexpa|
0001b810  6e 64 25 0d a9 c4 10 4c  44 52 20 52 30 2c 5b 52  |nd%....LDR R0,[R|
0001b820  39 5d 20 0d a9 ce 10 4c  44 52 20 52 31 2c 5b 52  |9] ....LDR R1,[R|
0001b830  30 5d 20 0d a9 d8 1f 4c  44 52 20 52 32 2c 5b 52  |0] ....LDR R2,[R|
0001b840  39 2c 23 38 5d 3a 4c 44  52 20 52 32 2c 5b 52 32  |9,#8]:LDR R2,[R2|
0001b850  5d 20 0d a9 e2 14 4c 44  52 20 52 33 2c 5b 52 39  |] ....LDR R3,[R9|
0001b860  2c 23 31 36 5d 20 0d a9  ec 10 4c 44 52 20 52 34  |,#16] ....LDR R4|
0001b870  2c 5b 52 33 5d 20 0d a9  f6 1b 43 4d 50 20 52 34  |,[R3] ....CMP R4|
0001b880  2c 23 31 3a 4d 4f 56 4c  54 53 20 50 43 2c 52 31  |,#1:MOVLTS PC,R1|
0001b890  34 0d aa 00 20 4c 44 52  20 52 35 2c 5b 52 39 2c  |4... LDR R5,[R9,|
0001b8a0  23 32 34 5d 3a 4c 44 52  20 52 35 2c 5b 52 35 5d  |#24]:LDR R5,[R5]|
0001b8b0  20 0d aa 0a 08 2e 72 6c  65 0d aa 14 13 53 54 52  | .....rle....STR|
0001b8c0  42 20 52 32 2c 5b 52 31  5d 2c 23 31 0d aa 1e 10  |B R2,[R1],#1....|
0001b8d0  53 55 42 20 52 34 2c 52  34 2c 23 31 0d aa 28 0d  |SUB R4,R4,#1..(.|
0001b8e0  43 4d 50 20 52 31 2c 52  35 0d aa 32 0f 54 45 51  |CMP R1,R5..2.TEQ|
0001b8f0  4e 45 20 52 34 2c 23 30  0d aa 3c 0b 42 4e 45 20  |NE R4,#0..<.BNE |
0001b900  72 6c 65 0d aa 46 0b 2e  72 6c 65 78 69 74 0d aa  |rle..F..rlexit..|
0001b910  50 10 53 54 52 20 52 31  2c 5b 52 30 5d 20 0d aa  |P.STR R1,[R0] ..|
0001b920  5a 10 53 54 52 20 52 34  2c 5b 52 33 5d 20 0d aa  |Z.STR R4,[R3] ..|
0001b930  64 0f 4d 4f 56 53 20 50  43 2c 52 31 34 0d aa 6e  |d.MOVS PC,R14..n|
0001b940  05 5d 0d aa 78 0d c9 20  22 46 4e 39 30 32 22 0d  |.]..x.. "FN902".|
0001b950  aa 82 0a 5b 4f 50 54 20  5a 0d aa 8c 0c 2e 75 6e  |...[OPT Z.....un|
0001b960  70 61 63 6b 25 0d aa 96  10 4c 44 52 20 52 30 2c  |pack%....LDR R0,|
0001b970  5b 52 39 5d 20 0d aa a0  10 4c 44 52 20 52 30 2c  |[R9] ....LDR R0,|
0001b980  5b 52 30 5d 20 0d aa aa  11 4c 44 52 20 52 31 2c  |[R0] ....LDR R1,|
0001b990  70 6c 62 75 66 66 0d aa  b4 12 41 44 44 20 52 32  |plbuff....ADD R2|
0001b9a0  2c 52 30 2c 23 37 36 38  0d aa be 0f 2e 75 6e 70  |,R0,#768.....unp|
0001b9b0  61 63 6b 6c 6f 6f 70 0d  aa c8 12 4c 44 52 20 52  |ackloop....LDR R|
0001b9c0  33 2c 5b 52 30 5d 2c 23  34 0d aa d2 0d 4d 4f 56  |3,[R0],#4....MOV|
0001b9d0  20 52 35 2c 23 30 0d aa  dc 0c 2e 62 69 74 6c 6f  | R5,#0.....bitlo|
0001b9e0  6f 70 0d aa e6 14 4d 4f  56 20 52 36 2c 52 33 2c  |op....MOV R6,R3,|
0001b9f0  4c 53 52 20 52 35 0d aa  f0 0f 80 20 52 36 2c 52  |LSR R5..... R6,R|
0001ba00  36 2c 23 31 35 0d aa fa  10 41 44 44 20 52 35 2c  |6,#15....ADD R5,|
0001ba10  52 35 2c 23 34 0d ab 04  14 4d 4f 56 20 52 37 2c  |R5,#4....MOV R7,|
0001ba20  52 33 2c 4c 53 52 20 52  35 0d ab 0e 0f 80 20 52  |R3,LSR R5..... R|
0001ba30  37 2c 52 37 2c 23 31 35  0d ab 18 10 41 44 44 20  |7,R7,#15....ADD |
0001ba40  52 35 2c 52 35 2c 23 34  0d ab 22 13 53 54 52 42  |R5,R5,#4..".STRB|
0001ba50  20 52 37 2c 5b 52 31 5d  2c 23 31 0d ab 2c 13 53  | R7,[R1],#1..,.S|
0001ba60  54 52 42 20 52 36 2c 5b  52 31 5d 2c 23 31 0d ab  |TRB R6,[R1],#1..|
0001ba70  36 0e 43 4d 50 20 52 35  2c 23 33 32 0d ab 40 0f  |6.CMP R5,#32..@.|
0001ba80  42 4e 45 20 62 69 74 6c  6f 6f 70 0d ab 4a 0d 43  |BNE bitloop..J.C|
0001ba90  4d 50 20 52 32 2c 52 30  0d ab 54 12 42 4e 45 20  |MP R2,R0..T.BNE |
0001baa0  75 6e 70 61 63 6b 6c 6f  6f 70 0d ab 5e 0e 4d 4f  |unpackloop..^.MO|
0001bab0  56 20 50 43 2c 52 31 34  0d ab 68 18 2e 70 6c 62  |V PC,R14..h..plb|
0001bac0  75 66 66 20 45 51 55 44  20 70 6c 62 75 66 66 25  |uff EQUD plbuff%|
0001bad0  0d ab 72 05 5d 0d ab 7c  29 c9 20 22 46 4e 31 36  |..r.]..|). "FN16|
0001bae0  30 31 22 2c 22 46 4e 31  35 30 31 22 2c 22 46 4e  |01","FN1501","FN|
0001baf0  31 38 35 30 22 2c 22 46  4e 31 38 35 31 22 0d ab  |1850","FN1851"..|
0001bb00  86 0a 5b 4f 50 54 20 5a  0d ab 9a 0d 2e 72 65 61  |..[OPT Z.....rea|
0001bb10  64 69 66 66 25 0d ab a4  0e 4d 4f 56 20 52 31 2c  |diff%....MOV R1,|
0001bb20  23 63 25 0d ab ae 1c 4c  44 52 20 52 38 2c 5b 52  |#c%....LDR R8,[R|
0001bb30  39 5d 3a 4c 44 52 20 52  38 2c 5b 52 38 5d 20 0d  |9]:LDR R8,[R8] .|
0001bb40  ab b8 2c 4c 44 52 20 52  37 2c 5b 52 39 2c 23 38  |..,LDR R7,[R9,#8|
0001bb50  5d 3a 4c 44 52 20 52 37  2c 5b 52 37 5d 3a 41 44  |]:LDR R7,[R7]:AD|
0001bb60  44 20 52 37 2c 52 37 2c  52 38 20 0d ab c2 14 53  |D R7,R7,R8 ....S|
0001bb70  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
0001bb80  ab cc 05 5d 0d ab d6 20  e7 72 24 3d 22 46 4e 31  |...]... .r$="FN1|
0001bb90  38 35 30 22 20 84 20 72  24 3d 22 46 4e 31 38 35  |850" . r$="FN185|
0001bba0  31 22 20 8c 0d ab e0 0a  5b 4f 50 54 20 5a 0d ab  |1" .....[OPT Z..|
0001bbb0  ea 15 42 4c 20 62 79 74  65 66 72 6f 6d 63 61 63  |..BL bytefromcac|
0001bbc0  68 65 25 0d ab f4 05 5d  0d ab fe 0e e7 73 79 25  |he%....].....sy%|
0001bbd0  3e 32 35 30 20 8c 0d ac  08 0a 5b 4f 50 54 20 5a  |>250 .....[OPT Z|
0001bbe0  0d ac 12 15 42 4c 20 62  79 74 65 66 72 6f 6d 63  |....BL bytefromc|
0001bbf0  61 63 68 65 25 0d ac 1c  05 5d 0d ac 26 05 cd 0d  |ache%....]..&...|
0001bc00  ac 30 05 cd 0d ac 3a 0a  5b 4f 50 54 20 5a 0d ac  |.0....:.[OPT Z..|
0001bc10  44 08 2e 72 6c 65 0d ac  4e 15 42 4c 20 62 79 74  |D..rle..N.BL byt|
0001bc20  65 66 72 6f 6d 63 61 63  68 65 25 0d ac 58 0f 43  |efromcache%..X.C|
0001bc30  4d 50 20 52 30 2c 23 31  32 38 0d ac 62 0c 42 43  |MP R0,#128..b.BC|
0001bc40  43 20 72 6c 65 31 0d ac  6c 12 52 53 42 20 52 32  |C rle1..l.RSB R2|
0001bc50  2c 52 30 2c 23 32 35 36  0d ac 76 15 42 4c 20 62  |,R0,#256..v.BL b|
0001bc60  79 74 65 66 72 6f 6d 63  61 63 68 65 25 0d ac 80  |ytefromcache%...|
0001bc70  19 2e 72 6c 65 30 20 53  54 52 42 20 52 30 2c 5b  |..rle0 STRB R0,[|
0001bc80  52 38 5d 2c 23 31 0d ac  8a 11 53 55 42 53 20 52  |R8],#1....SUBS R|
0001bc90  32 2c 52 32 2c 23 31 0d  ac 94 0c 42 50 4c 20 72  |2,R2,#1....BPL r|
0001bca0  6c 65 30 0d ac 9e 0a 42  20 72 6c 65 32 0d ac a8  |le0....B rle2...|
0001bcb0  09 2e 72 6c 65 31 0d ac  b2 10 41 44 44 20 52 33  |..rle1....ADD R3|
0001bcc0  2c 52 30 2c 23 31 0d ac  bc 0d 4d 4f 56 20 52 32  |,R0,#1....MOV R2|
0001bcd0  2c 52 38 0d ac c6 10 41  44 44 20 52 38 2c 52 38  |,R8....ADD R8,R8|
0001bce0  2c 52 33 0d ac d0 1a 42  4c 20 6d 75 6c 74 69 62  |,R3....BL multib|
0001bcf0  79 74 65 66 72 6f 6d 63  61 63 68 65 25 0d ac da  |ytefromcache%...|
0001bd00  09 2e 72 6c 65 32 0d ac  e4 0d 43 4d 50 20 52 38  |..rle2....CMP R8|
0001bd10  2c 52 37 0d ac ee 0b 42  43 43 20 72 6c 65 0d ac  |,R7....BCC rle..|
0001bd20  f8 14 4c 44 4d 46 44 20  53 50 20 21 2c 7b 52 31  |..LDMFD SP !,{R1|
0001bd30  34 7d 0d ad 02 0f 4d 4f  56 53 20 50 43 2c 52 31  |4}....MOVS PC,R1|
0001bd40  34 0d ad 0c 05 5d 0d ad  16 1f c9 20 22 46 4e 31  |4....]..... "FN1|
0001bd50  39 30 30 22 2c 22 46 4e  31 31 30 30 22 2c 22 46  |900","FN1100","F|
0001bd60  4e 34 30 30 22 0d ad 20  0a 5b 4f 50 54 20 5a 0d  |N400".. .[OPT Z.|
0001bd70  ad 34 0e 2e 72 65 61 64  6c 69 6e 65 25 0d ad 3e  |.4..readline%..>|
0001bd80  1c 4c 44 52 20 52 32 2c  5b 52 39 5d 3a 4c 44 52  |.LDR R2,[R9]:LDR|
0001bd90  20 52 32 2c 5b 52 32 5d  20 0d ad 48 13 4c 44 52  | R2,[R2] ..H.LDR|
0001bda0  20 52 33 2c 5b 52 39 2c  23 38 5d 20 0d ad 52 0f  | R3,[R9,#8] ..R.|
0001bdb0  4c 44 52 20 52 30 2c 5b  52 33 5d 0d ad 5c 14 4c  |LDR R0,[R3]..\.L|
0001bdc0  44 52 20 52 34 2c 5b 52  39 2c 23 31 36 5d 20 0d  |DR R4,[R9,#16] .|
0001bdd0  ad 66 0f 4c 44 52 20 52  35 2c 5b 52 34 5d 0d ad  |.f.LDR R5,[R4]..|
0001bde0  70 2d 4c 44 52 20 52 36  2c 5b 52 39 2c 23 32 34  |p-LDR R6,[R9,#24|
0001bdf0  5d 3a 4c 44 52 20 52 36  2c 5b 52 36 5d 3a 41 44  |]:LDR R6,[R6]:AD|
0001be00  44 20 52 36 2c 52 36 2c  52 32 20 0d ad 7a 14 53  |D R6,R6,R2 ..z.S|
0001be10  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
0001be20  ad 84 08 2e 72 6c 65 0d  ad 8e 0d 43 4d 50 20 52  |....rle....CMP R|
0001be30  35 2c 23 31 0d ad 98 0c  42 47 45 20 72 6c 65 31  |5,#1....BGE rle1|
0001be40  0d ad a2 15 42 4c 20 62  79 74 65 66 72 6f 6d 63  |....BL bytefromc|
0001be50  61 63 68 65 25 0d ad ac  0d 4d 4f 56 20 52 35 2c  |ache%....MOV R5,|
0001be60  23 31 0d ad b6 05 5d 0d  ad c0 10 e7 66 6c 61 67  |#1....].....flag|
0001be70  3d 31 39 30 30 20 8c 0d  ad ca 0a 5b 4f 50 54 20  |=1900 .....[OPT |
0001be80  5a 0d ad d4 0f 43 4d 50  20 52 30 2c 23 31 39 32  |Z....CMP R0,#192|
0001be90  0d ad de 25 80 43 53 20  52 35 2c 52 30 2c 23 36  |...%.CS R5,R0,#6|
0001bea0  33 3a 42 4c 43 53 20 62  79 74 65 66 72 6f 6d 63  |3:BLCS bytefromc|
0001beb0  61 63 68 65 25 0d ad e8  05 5d 0d ad f2 05 cd 0d  |ache%....]......|
0001bec0  ad fc 10 e7 66 6c 61 67  3d 31 31 30 30 20 8c 0d  |....flag=1100 ..|
0001bed0  ae 06 0a 5b 4f 50 54 20  5a 0d ae 10 0f 43 4d 50  |...[OPT Z....CMP|
0001bee0  20 52 30 2c 23 31 32 38  0d ae 1a 0c 42 4e 45 20  | R0,#128....BNE |
0001bef0  72 6c 65 31 0d ae 24 15  42 4c 20 62 79 74 65 66  |rle1..$.BL bytef|
0001bf00  72 6f 6d 63 61 63 68 65  25 0d ae 2e 0d 54 45 51  |romcache%....TEQ|
0001bf10  20 52 30 2c 23 30 0d ae  38 0e ec 51 20 52 30 2c  | R0,#0..8..Q R0,|
0001bf20  23 31 32 38 0d ae 42 0c  42 45 51 20 72 6c 65 31  |#128..B.BEQ rle1|
0001bf30  0d ae 4c 10 41 44 44 20  52 35 2c 52 30 2c 23 31  |..L.ADD R5,R0,#1|
0001bf40  0d ae 56 15 42 4c 20 62  79 74 65 66 72 6f 6d 63  |..V.BL bytefromc|
0001bf50  61 63 68 65 25 0d ae 60  05 5d 0d ae 6a 05 cd 0d  |ache%..`.]..j...|
0001bf60  ae 74 0f e7 66 6c 61 67  3d 34 30 30 20 8c 0d ae  |.t..flag=400 ...|
0001bf70  7e 0a 5b 4f 50 54 20 5a  0d ae 88 0e 4d 4f 56 20  |~.[OPT Z....MOV |
0001bf80  52 31 2c 52 30 20 0d ae  92 16 42 4c 20 62 79 74  |R1,R0 ....BL byt|
0001bf90  65 66 72 6f 6d 63 61 63  68 65 25 20 0d ae 9c 16  |efromcache% ....|
0001bfa0  84 52 20 52 31 2c 52 31  2c 52 30 2c 4c 53 4c 20  |.R R1,R1,R0,LSL |
0001bfb0  23 38 0d ae a6 16 42 4c  20 62 79 74 65 66 72 6f  |#8....BL bytefro|
0001bfc0  6d 63 61 63 68 65 25 20  0d ae b0 17 84 52 20 52  |mcache% .....R R|
0001bfd0  31 2c 52 31 2c 52 30 2c  4c 53 4c 20 23 31 36 0d  |1,R1,R0,LSL #16.|
0001bfe0  ae ba 15 42 4c 20 62 79  74 65 66 72 6f 6d 63 61  |...BL bytefromca|
0001bff0  63 68 65 25 0d ae c4 10  41 44 44 20 52 35 2c 52  |che%....ADD R5,R|
0001c000  30 2c 23 31 0d ae ce 0d  4d 4f 56 20 52 30 2c 52  |0,#1....MOV R0,R|
0001c010  31 0d ae d8 05 5d 0d ae  e2 05 cd 0d ae ec 0f e7  |1....]..........|
0001c020  66 6c 61 67 3d 32 30 30  20 8c 0d ae f6 0a 5b 4f  |flag=200 .....[O|
0001c030  50 54 20 5a 0d af 00 10  41 44 44 20 52 35 2c 52  |PT Z....ADD R5,R|
0001c040  30 2c 23 31 0d af 0a 15  42 4c 20 62 79 74 65 66  |0,#1....BL bytef|
0001c050  72 6f 6d 63 61 63 68 65  25 0d af 14 05 5d 0d af  |romcache%....]..|
0001c060  1e 05 cd 0d af 28 0a 5b  4f 50 54 20 5a 0d af 32  |.....(.[OPT Z..2|
0001c070  09 2e 72 6c 65 31 0d af  3c 13 53 54 52 42 20 52  |..rle1..<.STRB R|
0001c080  30 2c 5b 52 32 5d 2c 23  31 0d af 46 05 5d 0d af  |0,[R2],#1..F.]..|
0001c090  50 0f e7 66 6c 61 67 3d  34 30 30 20 8c 0d af 5a  |P..flag=400 ...Z|
0001c0a0  0a 5b 4f 50 54 20 5a 0d  af 64 14 4d 4f 56 20 52  |.[OPT Z..d.MOV R|
0001c0b0  31 2c 52 30 2c 4c 53 52  20 23 38 0d af 6e 13 53  |1,R0,LSR #8..n.S|
0001c0c0  54 52 42 20 52 31 2c 5b  52 32 5d 2c 23 31 0d af  |TRB R1,[R2],#1..|
0001c0d0  78 15 4d 4f 56 20 52 31  2c 52 30 2c 4c 53 52 20  |x.MOV R1,R0,LSR |
0001c0e0  23 31 36 0d af 82 13 53  54 52 42 20 52 31 2c 5b  |#16....STRB R1,[|
0001c0f0  52 32 5d 2c 23 31 0d af  8c 05 5d 0d af 96 05 cd  |R2],#1....].....|
0001c100  0d af a0 0a 5b 4f 50 54  20 5a 0d af aa 10 53 55  |....[OPT Z....SU|
0001c110  42 20 52 35 2c 52 35 2c  23 31 0d af b4 0d 54 45  |B R5,R5,#1....TE|
0001c120  51 20 52 32 2c 52 36 0d  af be 0b 42 4e 45 20 72  |Q R2,R6....BNE r|
0001c130  6c 65 0d af c8 0b 2e 72  6c 65 78 69 74 0d af d2  |le.....rlexit...|
0001c140  1b 53 54 52 20 52 30 2c  5b 52 33 5d 3a 53 54 52  |.STR R0,[R3]:STR|
0001c150  20 52 35 2c 5b 52 34 5d  0d af dc 14 4c 44 4d 46  | R5,[R4]....LDMF|
0001c160  44 20 53 50 20 21 2c 7b  50 43 7d 5e 0d af e6 05  |D SP !,{PC}^....|
0001c170  5d 0d af f0 05 cb 0d af  fa 12 e7 63 61 63 68 65  |]..........cache|
0001c180  62 79 74 65 73 25 20 8c  0d b0 04 0a 5b 4f 50 54  |bytes% .....[OPT|
0001c190  20 5a 0d b0 0e 13 2e 62  79 74 65 66 72 6f 6d 63  | Z.....bytefromc|
0001c1a0  61 63 68 65 25 0d b0 18  16 53 54 4d 46 44 20 53  |ache%....STMFD S|
0001c1b0  50 20 21 2c 7b 52 31 2c  52 32 7d 0d b0 22 15 4c  |P !,{R1,R2}..".L|
0001c1c0  44 52 20 52 31 2c 69 6e  63 61 63 68 65 70 74 72  |DR R1,incacheptr|
0001c1d0  0d b0 2c 16 4c 44 52 20  52 32 2c 6e 75 6d 6c 65  |..,.LDR R2,numle|
0001c1e0  66 74 74 6f 67 6f 0d b0  36 13 4c 44 52 42 20 52  |fttogo..6.LDRB R|
0001c1f0  30 2c 5b 52 31 5d 2c 23  31 0d b0 40 11 53 55 42  |0,[R1],#1..@.SUB|
0001c200  53 20 52 32 2c 52 32 2c  23 31 0d b0 4a 17 53 54  |S R2,R2,#1..J.ST|
0001c210  52 4e 45 20 52 31 2c 69  6e 63 61 63 68 65 70 74  |RNE R1,incachept|
0001c220  72 0d b0 54 18 53 54 52  4e 45 20 52 32 2c 6e 75  |r..T.STRNE R2,nu|
0001c230  6d 6c 65 66 74 74 6f 67  6f 0d b0 5e 16 4c 44 4d  |mlefttogo..^.LDM|
0001c240  46 44 20 53 50 20 21 2c  7b 52 31 2c 52 32 7d 0d  |FD SP !,{R1,R2}.|
0001c250  b0 68 10 4d 4f 56 4e 45  20 50 43 2c 52 31 34 0d  |.h.MOVNE PC,R14.|
0001c260  b0 72 1f 53 54 4d 46 44  20 53 50 20 21 2c 7b 52  |.r.STMFD SP !,{R|
0001c270  30 2c 52 31 2c 52 32 2c  52 33 2c 52 34 7d 0d b0  |0,R1,R2,R3,R4}..|
0001c280  7c 17 4c 44 52 20 52 32  2c 76 61 6c 64 61 74 61  ||.LDR R2,valdata|
0001c290  63 61 63 68 65 0d b0 86  15 53 54 52 20 52 32 2c  |cache....STR R2,|
0001c2a0  69 6e 63 61 63 68 65 70  74 72 0d b0 90 13 4c 44  |incacheptr....LD|
0001c2b0  52 20 52 33 2c 76 61 6c  63 61 63 68 65 0d b0 9a  |R R3,valcache...|
0001c2c0  16 53 54 52 20 52 33 2c  6e 75 6d 6c 65 66 74 74  |.STR R3,numleftt|
0001c2d0  6f 67 6f 0d b0 a4 0d 4d  4f 56 20 52 30 2c 23 34  |ogo....MOV R0,#4|
0001c2e0  0d b0 ae 0e 4d 4f 56 20  52 31 2c 23 63 25 0d b0  |....MOV R1,#c%..|
0001c2f0  b8 11 53 57 49 20 22 4f  53 5f 47 42 50 42 22 0d  |..SWI "OS_GBPB".|
0001c300  b0 c2 1f 4c 44 4d 46 44  20 53 50 20 21 2c 7b 52  |...LDMFD SP !,{R|
0001c310  30 2c 52 31 2c 52 32 2c  52 33 2c 52 34 7d 0d b0  |0,R1,R2,R3,R4}..|
0001c320  cc 0e 4d 4f 56 20 50 43  2c 52 31 34 0d b0 d6 20  |..MOV PC,R14... |
0001c330  2e 76 61 6c 64 61 74 61  63 61 63 68 65 20 44 43  |.valdatacache DC|
0001c340  44 20 64 61 74 61 63 61  63 68 65 25 0d b0 e0 18  |D datacache%....|
0001c350  2e 76 61 6c 63 61 63 68  65 20 44 43 44 20 63 61  |.valcache DCD ca|
0001c360  63 68 65 25 0d b0 ea 1e  2e 69 6e 63 61 63 68 65  |che%.....incache|
0001c370  70 74 72 20 44 43 44 20  64 61 74 61 63 61 63 68  |ptr DCD datacach|
0001c380  65 25 0d b0 f4 1b 2e 6e  75 6d 6c 65 66 74 74 6f  |e%.....numleftto|
0001c390  67 6f 20 44 43 44 20 63  61 63 68 65 25 0d b0 fe  |go DCD cache%...|
0001c3a0  18 2e 6d 75 6c 74 69 62  79 74 65 66 72 6f 6d 63  |..multibytefromc|
0001c3b0  61 63 68 65 25 0d b1 08  0d 43 4d 50 20 52 33 2c  |ache%....CMP R3,|
0001c3c0  23 30 0d b1 12 0d ec 51  20 50 43 2c 52 31 34 0d  |#0.....Q PC,R14.|
0001c3d0  b1 1c 17 53 54 4d 46 44  20 53 50 20 21 2c 7b 52  |...STMFD SP !,{R|
0001c3e0  30 2c 52 31 34 7d 0d b1  26 18 2e 6d 75 6c 74 69  |0,R14}..&..multi|
0001c3f0  62 79 74 65 66 72 6f 6d  63 61 63 68 65 6c 0d b1  |bytefromcachel..|
0001c400  30 15 42 4c 20 62 79 74  65 66 72 6f 6d 63 61 63  |0.BL bytefromcac|
0001c410  68 65 25 0d b1 3a 13 53  54 52 42 20 52 30 2c 5b  |he%..:.STRB R0,[|
0001c420  52 32 5d 2c 23 31 0d b1  44 11 53 55 42 53 20 52  |R2],#1..D.SUBS R|
0001c430  33 2c 52 33 2c 23 31 0d  b1 4e 1b 42 4e 45 20 6d  |3,R3,#1..N.BNE m|
0001c440  75 6c 74 69 62 79 74 65  66 72 6f 6d 63 61 63 68  |ultibytefromcach|
0001c450  65 6c 0d b1 58 17 4c 44  4d 46 44 20 53 50 20 21  |el..X.LDMFD SP !|
0001c460  2c 7b 52 30 2c 52 31 34  7d 0d b1 62 0e 4d 4f 56  |,{R0,R14}..b.MOV|
0001c470  20 50 43 2c 52 31 34 0d  b1 6c 05 5d 0d b1 76 05  | PC,R14..l.]..v.|
0001c480  cd 0d b1 80 10 e7 70 6c  61 6e 61 72 25 3c 30 20  |......planar%<0 |
0001c490  8c 0d b1 8a 19 43 25 3d  37 3a e7 66 6c 61 67 3d  |.....C%=7:.flag=|
0001c4a0  32 36 30 30 20 43 25 3d  31 35 0d b1 94 0a 5b 4f  |2600 C%=15....[O|
0001c4b0  50 54 20 5a 0d b1 9e 0e  2e 70 6c 61 6e 63 6e 76  |PT Z.....plancnv|
0001c4c0  25 20 0d b1 a8 11 4c 44  52 20 52 30 2c 73 78 6c  |% ....LDR R0,sxl|
0001c4d0  6f 63 20 0d b1 b2 1c 4c  44 52 20 52 31 2c 5b 52  |oc ....LDR R1,[R|
0001c4e0  39 5d 3a 4c 44 52 20 52  31 2c 5b 52 31 5d 20 0d  |9]:LDR R1,[R1] .|
0001c4f0  b1 bc 1f 4c 44 52 20 52  33 2c 5b 52 39 2c 23 38  |...LDR R3,[R9,#8|
0001c500  5d 3a 4c 44 52 20 52 33  2c 5b 52 33 5d 20 0d b1  |]:LDR R3,[R3] ..|
0001c510  c6 20 4c 44 52 20 52 34  2c 5b 52 39 2c 23 31 36  |. LDR R4,[R9,#16|
0001c520  5d 3a 4c 44 52 20 52 34  2c 5b 52 34 5d 20 0d b1  |]:LDR R4,[R4] ..|
0001c530  d0 0e 4d 4f 56 20 52 39  2c 23 43 25 0d b1 da 0c  |..MOV R9,#C%....|
0001c540  2e 70 6c 61 6e 65 6c 70  0d b1 e4 0d 4d 4f 56 20  |.planelp....MOV |
0001c550  52 37 2c 23 30 0d b1 ee  0d 4d 4f 56 20 52 35 2c  |R7,#0....MOV R5,|
0001c560  52 33 0d b1 f8 05 5d 0d  b2 02 11 e3 4e 25 3d 31  |R3....].....N%=1|
0001c570  b8 70 6c 61 6e 65 73 25  0d b2 0c 0a 5b 4f 50 54  |.planes%....[OPT|
0001c580  20 5a 0d b2 16 12 4c 44  52 20 52 36 2c 5b 52 35  | Z....LDR R6,[R5|
0001c590  5d 2c 52 34 0d b2 20 05  5d 0d b2 2a 10 e7 66 6c  |],R4.. .]..*..fl|
0001c5a0  61 67 3d 32 36 30 30 20  8c 0d b2 34 0a 5b 4f 50  |ag=2600 ...4.[OP|
0001c5b0  54 20 5a 0d b2 3e 14 4d  4f 56 20 52 36 2c 52 36  |T Z..>.MOV R6,R6|
0001c5c0  2c 4c 53 4c 20 23 38 0d  b2 48 18 42 49 43 20 52  |,LSL #8..H.BIC R|
0001c5d0  36 2c 52 36 2c 23 26 46  46 30 30 30 30 30 30 0d  |6,R6,#&FF000000.|
0001c5e0  b2 52 17 84 52 20 52 36  2c 52 36 2c 52 36 2c 4c  |.R..R R6,R6,R6,L|
0001c5f0  53 52 20 23 31 36 0d b2  5c 05 5d 0d b2 66 05 cd  |SR #16..\.]..f..|
0001c600  0d b2 70 0a 5b 4f 50 54  20 5a 0d b2 7a 14 4d 4f  |..p.[OPT Z..z.MO|
0001c610  56 20 52 36 2c 52 36 2c  4c 53 52 20 52 39 0d b2  |V R6,R6,LSR R9..|
0001c620  84 0e 80 20 52 36 2c 52  36 2c 23 31 0d b2 8e 1b  |... R6,R6,#1....|
0001c630  84 52 20 52 37 2c 52 37  2c 52 36 2c 4c 53 4c 20  |.R R7,R7,R6,LSL |
0001c640  23 28 4e 25 2d 31 29 0d  b2 98 05 5d 0d b2 a2 05  |#(N%-1)....]....|
0001c650  ed 0d b2 ac 0a 5b 4f 50  54 20 5a 0d b2 b6 13 53  |.....[OPT Z....S|
0001c660  54 52 42 20 52 37 2c 5b  52 31 5d 2c 23 31 0d b2  |TRB R7,[R1],#1..|
0001c670  c0 1e 53 55 42 53 20 52  39 2c 52 39 2c 23 31 3a  |..SUBS R9,R9,#1:|
0001c680  4d 4f 56 4d 49 20 52 39  2c 23 43 25 0d b2 ca 05  |MOVMI R9,#C%....|
0001c690  5d 0d b2 d4 10 e7 66 6c  61 67 3d 32 36 30 30 20  |].....flag=2600 |
0001c6a0  8c 0d b2 de 0a 5b 4f 50  54 20 5a 0d b2 e8 0f 4d  |.....[OPT Z....M|
0001c6b0  4f 56 4d 49 20 52 33 2c  52 35 0d b2 f2 05 5d 0d  |OVMI R3,R5....].|
0001c6c0  b2 fc 05 cc 0d b3 06 0a  5b 4f 50 54 20 5a 0d b3  |........[OPT Z..|
0001c6d0  10 12 41 44 44 4d 49 20  52 33 2c 52 33 2c 23 31  |..ADDMI R3,R3,#1|
0001c6e0  0d b3 1a 05 5d 0d b3 24  05 cd 0d b3 2e 0a 5b 4f  |....]..$......[O|
0001c6f0  50 54 20 5a 0d b3 38 1d  53 55 42 53 20 52 30 2c  |PT Z..8.SUBS R0,|
0001c700  52 30 2c 23 31 3a 42 4e  45 20 70 6c 61 6e 65 6c  |R0,#1:BNE planel|
0001c710  70 0d b3 42 0f 4d 4f 56  53 20 50 43 2c 52 31 34  |p..B.MOVS PC,R14|
0001c720  0d b3 4c 05 5d 0d b3 56  05 cd 0d b3 60 05 ed 0d  |..L.]..V....`...|
0001c730  b3 6a 0e 63 70 75 74 69  6d 65 25 3d 91 0d b3 74  |.j.cputime%=...t|
0001c740  0d e7 63 61 63 68 65 25  20 8c 0d b3 7e 10 e7 66  |..cache% ...~..f|
0001c750  6c 61 67 3d 33 36 30 30  20 8c 0d b3 88 44 70 63  |lag=3600 ....Dpc|
0001c760  64 62 6c 6b 25 21 31 32  3d 63 61 63 68 65 72 6f  |dblk%!12=cachero|
0001c770  77 73 25 3a f2 72 65 66  69 6c 6c 70 63 64 3a e7  |ws%:.refillpcd:.|
0001c780  63 61 63 68 65 25 3e 3d  66 69 6c 65 73 69 7a 65  |cache%>=filesize|
0001c790  25 20 72 6f 77 73 74 6f  67 6f 25 3d 2d 31 0d b3  |% rowstogo%=-1..|
0001c7a0  92 05 cc 0d b3 9c 21 e7  73 74 72 69 70 72 6f 77  |......!.striprow|
0001c7b0  73 25 3e 30 80 63 6f 6d  70 72 65 73 73 69 6f 6e  |s%>0.compression|
0001c7c0  3e 31 20 8c 0d b3 b0 1f  c8 99 31 32 2c 34 2c 63  |>1 .......12,4,c|
0001c7d0  25 2c 64 61 74 61 63 61  63 68 65 25 2c 63 61 63  |%,datacache%,cac|
0001c7e0  68 65 25 0d b3 ba 3b e7  63 61 63 68 65 62 79 74  |he%...;.cachebyt|
0001c7f0  65 73 25 20 21 69 6e 63  61 63 68 65 70 74 72 3d  |es% !incacheptr=|
0001c800  64 61 74 61 63 61 63 68  65 25 3a 21 6e 75 6d 6c  |datacache%:!numl|
0001c810  65 66 74 74 6f 67 6f 3d  63 61 63 68 65 25 0d b3  |efttogo=cache%..|
0001c820  c4 05 cc 0d b3 ce 2b f2  72 65 66 69 6c 6c 3a e7  |......+.refill:.|
0001c830  63 61 63 68 65 25 3e 3d  66 69 6c 65 73 69 7a 65  |cache%>=filesize|
0001c840  25 20 72 6f 77 73 74 6f  67 6f 25 3d 2d 31 0d b3  |% rowstogo%=-1..|
0001c850  d8 05 cd 0d b3 e2 05 cd  0d b3 ec 05 cd 0d b3 f6  |................|
0001c860  0d c8 8e 20 6e 63 6f 6c  20 ca 0d b4 00 14 c9 20  |... ncol ...... |
0001c870  32 5e 32 34 2d 31 3a 73  69 7a 65 25 3d 31 0d b4  |2^24-1:size%=1..|
0001c880  0a 14 c9 20 32 5e 31 35  2d 31 3a 73 69 7a 65 25  |... 2^15-1:size%|
0001c890  3d 31 0d b4 14 18 c9 20  36 33 2c 32 35 35 2c 32  |=1..... 63,255,2|
0001c8a0  35 36 3a 73 69 7a 65 25  3d 31 0d b4 1e 10 c9 20  |56:size%=1..... |
0001c8b0  31 35 3a 73 69 7a 65 25  3d 32 0d b4 28 0f c9 20  |15:size%=2..(.. |
0001c8c0  33 3a 73 69 7a 65 25 3d  34 0d b4 32 1f c9 20 31  |3:size%=4..2.. 1|
0001c8d0  3a 73 69 7a 65 25 3d 38  3a e7 6d 24 3d 22 43 22  |:size%=8:.m$="C"|
0001c8e0  20 73 69 7a 65 25 3d 32  0d b4 3c 13 e7 6d 24 3d  | size%=2..<..m$=|
0001c8f0  22 44 22 20 73 69 7a 65  25 3d 34 0d b4 46 13 e7  |"D" size%=4..F..|
0001c900  6d 24 3d 22 54 22 20 73  69 7a 65 25 3d 32 0d b4  |m$="T" size%=2..|
0001c910  50 05 cb 0d b4 64 0d c8  8e 20 66 6c 61 67 20 ca  |P....d... flag .|
0001c920  0d b4 6e 2a c9 20 35 30  31 3a e7 69 6e 66 6f 25  |..n*. 501:.info%|
0001c930  20 f1 22 52 65 61 64 69  6e 67 20 69 6e 74 65 72  | ."Reading inter|
0001c940  6c 61 63 65 64 20 47 49  46 22 0d b4 78 25 73 7a  |laced GIF"..x%sz|
0001c950  25 3d 73 78 25 2a 73 79  25 3a 70 6c 62 75 66 66  |%=sx%*sy%:plbuff|
0001c960  25 3d a4 64 69 6d 28 73  7a 25 2b 31 30 30 29 0d  |%=.dim(sz%+100).|
0001c970  b4 82 46 e3 59 25 3d 30  b8 73 79 25 2d 31 88 38  |..F.Y%=0.sy%-1.8|
0001c980  3a 58 25 3d 70 6c 62 75  66 66 25 2b 59 25 2a 73  |:X%=plbuff%+Y%*s|
0001c990  78 25 3a d6 20 4c 5a 57  64 65 63 6f 64 65 25 2c  |x%:. LZWdecode%,|
0001c9a0  74 61 62 6c 65 25 28 30  29 2c 63 25 2c 58 25 2c  |table%(0),c%,X%,|
0001c9b0  73 78 25 3a ed 0d b4 8c  46 e3 59 25 3d 34 b8 73  |sx%:....F.Y%=4.s|
0001c9c0  79 25 2d 31 88 38 3a 58  25 3d 70 6c 62 75 66 66  |y%-1.8:X%=plbuff|
0001c9d0  25 2b 59 25 2a 73 78 25  3a d6 20 4c 5a 57 64 65  |%+Y%*sx%:. LZWde|
0001c9e0  63 6f 64 65 25 2c 74 61  62 6c 65 25 28 30 29 2c  |code%,table%(0),|
0001c9f0  63 25 2c 58 25 2c 73 78  25 3a ed 0d b4 96 46 e3  |c%,X%,sx%:....F.|
0001ca00  59 25 3d 32 b8 73 79 25  2d 31 88 34 3a 58 25 3d  |Y%=2.sy%-1.4:X%=|
0001ca10  70 6c 62 75 66 66 25 2b  59 25 2a 73 78 25 3a d6  |plbuff%+Y%*sx%:.|
0001ca20  20 4c 5a 57 64 65 63 6f  64 65 25 2c 74 61 62 6c  | LZWdecode%,tabl|
0001ca30  65 25 28 30 29 2c 63 25  2c 58 25 2c 73 78 25 3a  |e%(0),c%,X%,sx%:|
0001ca40  ed 0d b4 a0 46 e3 59 25  3d 31 b8 73 79 25 2d 31  |....F.Y%=1.sy%-1|
0001ca50  88 32 3a 58 25 3d 70 6c  62 75 66 66 25 2b 59 25  |.2:X%=plbuff%+Y%|
0001ca60  2a 73 78 25 3a d6 20 4c  5a 57 64 65 63 6f 64 65  |*sx%:. LZWdecode|
0001ca70  25 2c 74 61 62 6c 65 25  28 30 29 2c 63 25 2c 58  |%,table%(0),c%,X|
0001ca80  25 2c 73 78 25 3a ed 0d  b4 aa 3f 64 61 74 61 63  |%,sx%:....?datac|
0001ca90  61 63 68 65 25 3d 70 6c  62 75 66 66 25 3a 62 75  |ache%=plbuff%:bu|
0001caa0  66 66 25 3d 70 6c 62 75  66 66 25 3a 72 6f 77 62  |ff%=plbuff%:rowb|
0001cab0  79 74 65 73 25 3d 73 78  25 3a 72 6f 77 73 74 6f  |ytes%=sx%:rowsto|
0001cac0  67 6f 25 3d 2d 31 0d b4  b4 05 cb 0d b4 be 1a e7  |go%=-1..........|
0001cad0  67 61 6d 6d 61 3c 3e 31  20 80 20 67 61 6d 6d 61  |gamma<>1 . gamma|
0001cae0  3c 3e 30 20 8c 0d b4 c8  17 6b 3d 31 2f 67 61 6d  |<>0 .....k=1/gam|
0001caf0  6d 61 3a e3 43 25 3d 30  b8 32 35 35 0d b4 d2 23  |ma:.C%=0.255...#|
0001cb00  e7 72 25 28 43 25 29 20  72 25 28 43 25 29 3d 28  |.r%(C%) r%(C%)=(|
0001cb10  28 72 25 28 43 25 29 2f  46 29 5e 6b 29 2a 46 0d  |(r%(C%)/F)^k)*F.|
0001cb20  b4 dc 23 e7 67 25 28 43  25 29 20 67 25 28 43 25  |..#.g%(C%) g%(C%|
0001cb30  29 3d 28 28 67 25 28 43  25 29 2f 46 29 5e 6b 29  |)=((g%(C%)/F)^k)|
0001cb40  2a 46 0d b4 e6 23 e7 62  25 28 43 25 29 20 62 25  |*F...#.b%(C%) b%|
0001cb50  28 43 25 29 3d 28 28 62  25 28 43 25 29 2f 46 29  |(C%)=((b%(C%)/F)|
0001cb60  5e 6b 29 2a 46 0d b4 f0  05 ed 0d b4 fa 05 cd 0d  |^k)*F...........|
0001cb70  b5 04 18 72 6d 61 78 3d  46 3a 67 6d 61 78 3d 46  |...rmax=F:gmax=F|
0001cb80  3a 62 6d 61 78 3d 46 0d  b5 0e 0c e7 63 6f 6c 3d  |:bmax=F.....col=|
0001cb90  30 20 8c 0d b5 18 0e e7  69 6e 70 75 74 3c 39 20  |0 ......input<9 |
0001cba0  8c 0d b5 22 37 e3 43 25  3d 30 b8 32 35 35 3a 72  |..."7.C%=0.255:r|
0001cbb0  25 28 43 25 29 3d 72 25  28 43 25 29 2a 72 77 74  |%(C%)=r%(C%)*rwt|
0001cbc0  2b 67 25 28 43 25 29 2a  67 77 74 2b 62 25 28 43  |+g%(C%)*gwt+b%(C|
0001cbd0  25 29 2a 62 77 74 3a ed  0d b5 2c 05 cc 0d b5 36  |%)*bwt:...,....6|
0001cbe0  10 e7 69 6e 70 75 74 3c  34 30 30 20 8c 0d b5 40  |..input<400 ...@|
0001cbf0  24 72 6d 61 78 3d 46 2a  72 77 74 3a 67 6d 61 78  |$rmax=F*rwt:gmax|
0001cc00  3d 46 2a 67 77 74 3a 62  6d 61 78 3d 46 2a 62 77  |=F*gwt:bmax=F*bw|
0001cc10  74 0d b5 4a 45 e3 43 25  3d 30 b8 32 35 35 3a 72  |t..JE.C%=0.255:r|
0001cc20  25 28 43 25 29 3d 72 25  28 43 25 29 2a 72 77 74  |%(C%)=r%(C%)*rwt|
0001cc30  3a 67 25 28 43 25 29 3d  67 25 28 43 25 29 2a 67  |:g%(C%)=g%(C%)*g|
0001cc40  77 74 3a 62 25 28 43 25  29 3d 62 25 28 43 25 29  |wt:b%(C%)=b%(C%)|
0001cc50  2a 62 77 74 3a ed 0d b5  54 05 cd 0d b5 5e 05 cd  |*bwt:...T....^..|
0001cc60  0d b5 68 05 cd 0d b5 72  2c e7 ac 6f 72 64 65 72  |..h....r,..order|
0001cc70  25 20 f2 61 64 6a 75 73  74 70 61 6c 65 74 74 65  |% .adjustpalette|
0001cc80  28 31 2f 79 64 69 76 25  2f 78 64 69 76 25 2c 30  |(1/ydiv%/xdiv%,0|
0001cc90  29 0d b5 86 0d e7 72 61  6e 67 65 25 20 8c 0d b5  |).....range% ...|
0001cca0  90 3e e7 69 6e 66 6f 25  20 f1 22 53 63 61 6e 6e  |.>.info% ."Scann|
0001ccb0  69 6e 67 20 64 61 74 61  20 74 6f 20 63 6f 6d 70  |ing data to comp|
0001ccc0  75 74 65 20 70 61 72 61  6d 65 74 65 72 73 20 66  |ute parameters f|
0001ccd0  6f 72 20 27 2d 72 61 6e  67 65 27 22 0d b5 9a 0d  |or '-range'"....|
0001cce0  e7 6f 72 64 65 72 25 20  8c 0d b5 a4 1d 59 25 3d  |.order% .....Y%=|
0001ccf0  30 3a f5 20 c8 99 68 6f  75 72 25 2c 59 25 2a 31  |0:. ..hour%,Y%*1|
0001cd00  30 30 81 73 79 25 0d b5  ae 38 57 25 3d a0 28 72  |00.sy%...8W%=.(r|
0001cd10  24 2b 22 28 78 70 25 28  29 29 22 29 3a d6 6d 61  |$+"(xp%())"):.ma|
0001cd20  78 6d 69 6e 25 2c 78 70  25 28 31 2c 30 29 2c 74  |xmin%,xp%(1,0),t|
0001cd30  6f 74 76 61 6c 73 32 25  3a 59 25 2b 3d 31 0d b5  |otvals2%:Y%+=1..|
0001cd40  b8 22 fd 59 25 3d 73 79  25 20 84 21 6d 69 6e 3c  |.".Y%=sy% .!min<|
0001cd50  32 35 35 20 80 21 6d 61  78 2b 32 35 35 3e 3d 46  |255 .!max+255>=F|
0001cd60  0d b5 c2 05 cc 0d b5 cc  25 59 25 3d 30 3a 79 73  |........%Y%=0:ys|
0001cd70  61 6d 70 25 3d 31 3a f5  20 c8 99 68 6f 75 72 25  |amp%=1:. ..hour%|
0001cd80  2c 59 25 2a 31 30 30 81  79 25 0d b5 d6 3b f2 73  |,Y%*100.y%...;.s|
0001cd90  63 61 6c 65 64 70 69 78  65 6c 72 6f 77 28 63 6c  |caledpixelrow(cl|
0001cda0  25 28 29 29 3a d6 6d 61  78 6d 69 6e 25 2c 63 6c  |%()):.maxmin%,cl|
0001cdb0  25 28 31 2c 30 29 2c 74  6f 74 76 61 6c 73 25 3a  |%(1,0),totvals%:|
0001cdc0  59 25 2b 3d 31 0d b5 e0  23 fd 59 25 3d 79 25 20  |Y%+=1...#.Y%=y% |
0001cdd0  84 20 21 6d 69 6e 3c 32  35 35 20 80 20 21 6d 61  |. !min<255 . !ma|
0001cde0  78 2b 32 35 35 3e 3d 46  0d b5 ea 05 cd 0d b5 f4  |x+255>=F........|
0001cdf0  4f e7 21 6d 61 78 2b 32  35 35 3e 3d 46 20 80 21  |O.!max+255>=F .!|
0001ce00  6d 69 6e 3c 32 35 35 20  72 61 6e 67 65 25 3d a3  |min<255 range%=.|
0001ce10  3a 72 61 6e 67 65 24 3d  22 4e 6f 20 70 6f 69 6e  |:range$="No poin|
0001ce20  74 20 69 6e 20 27 2d 72  61 6e 67 65 27 20 6f 6e  |t in '-range' on|
0001ce30  20 74 68 69 73 20 69 6d  61 67 65 22 0d b5 fe 85  | this image"....|
0001ce40  e7 72 61 6e 67 65 25 20  f2 61 64 6a 75 73 74 70  |.range% .adjustp|
0001ce50  61 6c 65 74 74 65 28 46  2f 28 21 6d 61 78 2d 21  |alette(F/(!max-!|
0001ce60  6d 69 6e 29 2c 21 6d 69  6e 2f 79 64 69 76 25 2f  |min),!min/ydiv%/|
0001ce70  78 64 69 76 25 29 3a 72  61 6e 67 65 24 3d 22 49  |xdiv%):range$="I|
0001ce80  6e 70 75 74 20 69 6d 61  67 65 20 6d 61 78 69 6d  |nput image maxim|
0001ce90  75 6d 20 22 2b c3 28 21  6d 61 78 2f 46 2a 31 30  |um "+.(!max/F*10|
0001cea0  30 29 2b 22 25 20 6d 69  6e 69 6d 75 6d 20 22 2b  |0)+"% minimum "+|
0001ceb0  c3 28 21 6d 69 6e 2f 46  2a 31 30 30 29 2b 22 25  |.(!min/F*100)+"%|
0001cec0  22 0d b6 08 1a f2 72 65  77 69 6e 64 3a e7 69 6e  |".....rewind:.in|
0001ced0  66 6f 25 20 f1 72 61 6e  67 65 24 0d b6 12 05 cd  |fo% .range$.....|
0001cee0  0d b6 1c 14 e7 68 69 73  74 25 20 84 65 71 75 61  |.....hist% .equa|
0001cef0  6c 25 20 8c 0d b6 26 46  e7 65 71 75 61 6c 25 20  |l% ...&F.equal% |
0001cf00  e7 69 6e 66 6f 25 20 f1  22 53 63 61 6e 6e 69 6e  |.info% ."Scannin|
0001cf10  67 20 64 61 74 61 20 74  6f 20 63 6f 6d 70 75 74  |g data to comput|
0001cf20  65 20 70 61 72 61 6d 65  74 65 72 73 20 66 6f 72  |e parameters for|
0001cf30  20 27 2d 65 71 75 61 6c  27 22 0d b6 30 0d e7 6f  | '-equal'"..0..o|
0001cf40  72 64 65 72 25 20 8c 0d  b6 3a 24 e3 79 72 25 3d  |rder% ...:$.yr%=|
0001cf50  30 b8 73 79 25 2d 31 3a  c8 99 68 6f 75 72 25 2c  |0.sy%-1:..hour%,|
0001cf60  79 72 25 2a 31 30 30 81  73 79 25 0d b6 44 36 57  |yr%*100.sy%..D6W|
0001cf70  25 3d a0 28 72 24 2b 22  28 78 70 25 28 29 29 22  |%=.(r$+"(xp%())"|
0001cf80  29 3a d6 68 69 73 74 6f  25 2c 78 70 25 28 31 2c  |):.histo%,xp%(1,|
0001cf90  30 29 2c 76 61 6c 73 25  28 30 2c 30 29 2c 73 78  |0),vals%(0,0),sx|
0001cfa0  25 0d b6 4e 05 ed 0d b6  58 05 cc 0d b6 62 2b 79  |%..N....X....b+y|
0001cfb0  73 61 6d 70 25 3d 31 3a  e3 79 72 25 3d 30 b8 79  |samp%=1:.yr%=0.y|
0001cfc0  25 2d 31 3a c8 99 68 6f  75 72 25 2c 79 72 25 2a  |%-1:..hour%,yr%*|
0001cfd0  31 30 30 81 79 25 0d b6  6c 39 f2 73 63 61 6c 65  |100.y%..l9.scale|
0001cfe0  64 70 69 78 65 6c 72 6f  77 28 63 6c 25 28 29 29  |dpixelrow(cl%())|
0001cff0  3a d6 68 69 73 74 6f 25  2c 63 6c 25 28 31 2c 30  |:.histo%,cl%(1,0|
0001d000  29 2c 76 61 6c 73 25 28  30 2c 30 29 2c 78 25 0d  |),vals%(0,0),x%.|
0001d010  b6 76 05 ed 0d b6 80 05  cd 0d b6 8a 2e e7 69 6e  |.v............in|
0001d020  66 6f 25 20 f1 22 44 6f  6e 65 2e 20 4e 6f 77 20  |fo% ."Done. Now |
0001d030  70 72 6f 63 65 73 73 69  6e 67 20 74 68 65 20 70  |processing the p|
0001d040  69 63 74 75 72 65 22 0d  b6 94 05 cd 0d b6 9e 10  |icture".........|
0001d050  e7 69 6e 70 75 74 3c 34  30 30 20 8c 0d b6 a8 0d  |.input<400 .....|
0001d060  e3 43 25 3d 30 b8 32 35  35 0d b6 b2 16 e7 72 25  |.C%=0.255.....r%|
0001d070  28 43 25 29 3c 30 20 72  25 28 43 25 29 3d 30 0d  |(C%)<0 r%(C%)=0.|
0001d080  b6 bc 16 e7 67 25 28 43  25 29 3c 30 20 67 25 28  |....g%(C%)<0 g%(|
0001d090  43 25 29 3d 30 0d b6 c6  16 e7 62 25 28 43 25 29  |C%)=0.....b%(C%)|
0001d0a0  3c 30 20 62 25 28 43 25  29 3d 30 0d b6 d0 1c e7  |<0 b%(C%)=0.....|
0001d0b0  72 25 28 43 25 29 3e 72  6d 61 78 20 72 25 28 43  |r%(C%)>rmax r%(C|
0001d0c0  25 29 3d 72 6d 61 78 0d  b6 da 1c e7 67 25 28 43  |%)=rmax.....g%(C|
0001d0d0  25 29 3e 67 6d 61 78 20  67 25 28 43 25 29 3d 67  |%)>gmax g%(C%)=g|
0001d0e0  6d 61 78 0d b6 e4 1c e7  62 25 28 43 25 29 3e 62  |max.....b%(C%)>b|
0001d0f0  6d 61 78 20 62 25 28 43  25 29 3d 62 6d 61 78 0d  |max b%(C%)=bmax.|
0001d100  b6 ee 05 ed 0d b6 f8 05  cd 0d b7 02 0c e7 68 69  |..............hi|
0001d110  73 74 25 20 8c 0d b7 0c  19 4d 25 3d 30 3a 5a 4d  |st% .....M%=0:ZM|
0001d120  25 3d 2d 31 3a e3 43 25  3d 30 b8 63 6f 6c 0d b7  |%=-1:.C%=0.col..|
0001d130  16 35 e3 5a 25 3d 30 b8  32 35 36 3a e7 76 61 6c  |.5.Z%=0.256:.val|
0001d140  73 25 28 5a 25 2c 43 25  29 3e 4d 25 20 4d 25 3d  |s%(Z%,C%)>M% M%=|
0001d150  76 61 6c 73 25 28 5a 25  2c 43 25 29 3a 5a 4d 25  |vals%(Z%,C%):ZM%|
0001d160  3d 5a 25 0d b7 20 07 ed  3a ed 0d b7 2a 1d e7 5a  |=Z%.. ..:...*..Z|
0001d170  4d 25 3d 2d 31 20 84 20  6f 6b 69 6e 66 6f 25 3d  |M%=-1 . okinfo%=|
0001d180  30 20 8c 3d 31 30 30 0d  b7 34 0d e7 20 63 6f 6c  |0 .=100..4.. col|
0001d190  3e 30 20 8c 0d b7 3e 0e  eb 36 36 3a 68 74 3d 35  |>0 ...>..66:ht=5|
0001d1a0  30 30 0d b7 48 15 e7 eb  3c 3e 36 36 20 eb 31 36  |00..H...<>66 .16|
0001d1b0  3a 68 74 3d 34 30 30 0d  b7 52 0f 86 30 2c 36 2c  |:ht=400..R..0,6,|
0001d1c0  32 30 30 30 2c 36 0d b7  5c 05 cc 0d b7 66 1a eb  |2000,6..\....f..|
0001d1d0  31 38 3a 68 74 3d 34 30  30 3a 86 30 2c 36 2c 31  |18:ht=400:.0,6,1|
0001d1e0  30 32 34 2c 36 0d b7 70  05 cd 0d b7 7a 23 4d 3d  |024,6..p....z#M=|
0001d1f0  4d 25 2f 28 68 74 2a 32  2d 38 29 3a e3 43 25 3d  |M%/(ht*2-8):.C%=|
0001d200  30 b8 63 6f 6c 3a c8 8e  20 43 25 20 ca 0d b7 84  |0.col:.. C% ....|
0001d210  0a c9 20 30 3a e6 31 0d  b7 8e 0a c9 20 31 3a e6  |.. 0:.1..... 1:.|
0001d220  32 0d b7 98 0a c9 20 32  3a e6 34 0d b7 a2 05 cb  |2..... 2:.4.....|
0001d230  0d b7 ac 0d e7 20 63 6f  6c 3e 30 20 8c 0d b7 b6  |..... col>0 ....|
0001d240  43 e3 5a 25 3d 30 b8 32  35 36 3a e7 76 61 6c 73  |C.Z%=0.256:.vals|
0001d250  25 28 5a 25 2c 43 25 29  20 58 25 3d 5a 25 2a 33  |%(Z%,C%) X%=Z%*3|
0001d260  2b 43 25 3c 3c 31 3a 86  58 25 2c 38 2c 58 25 2c  |+C%<<1:.X%,8,X%,|
0001d270  76 61 6c 73 25 28 5a 25  2c 43 25 29 2f 4d 2b 38  |vals%(Z%,C%)/M+8|
0001d280  0d b7 c0 05 ed 0d b7 ca  05 cc 0d b7 d4 3f e3 5a  |.............?.Z|
0001d290  25 3d 30 b8 32 35 36 3a  e7 76 61 6c 73 25 28 5a  |%=0.256:.vals%(Z|
0001d2a0  25 2c 43 25 29 20 58 25  3d 5a 25 3c 3c 32 3a c8  |%,C%) X%=Z%<<2:.|
0001d2b0  93 20 c8 90 58 25 2c 38  2c 32 2c 76 61 6c 73 25  |. ..X%,8,2,vals%|
0001d2c0  28 5a 25 2c 43 25 29 2f  4d 0d b7 de 05 ed 0d b7  |(Z%,C%)/M.......|
0001d2d0  e8 05 cd 0d b7 f2 05 ed  0d b7 fc 1c f2 63 6c 6f  |.............clo|
0001d2e0  73 65 3a c8 99 22 48 6f  75 72 67 6c 61 73 73 5f  |se:.."Hourglass_|
0001d2f0  4f 66 66 22 0d b8 06 08  3d 31 30 30 0d b8 10 05  |Off"....=100....|
0001d300  cd 0d b8 1a 25 e7 6d 3e  3d 30 20 6f 6e 61 6d 65  |....%.m>=0 oname|
0001d310  24 3d 22 70 22 2b c3 6d  2b 6d 24 20 8b 6f 6e 61  |$="p"+.m+m$ .ona|
0001d320  6d 65 24 3d 6d 24 0d b8  24 21 e7 6d 3d 2d 36 20  |me$=m$..$!.m=-6 |
0001d330  84 6d 3d 2d 37 20 84 6d  3d 2d 38 20 6f 6e 61 6d  |.m=-7 .m=-8 onam|
0001d340  65 24 3d 70 6e 6d 24 0d  b8 2e 17 e7 72 61 6e 67  |e$=pnm$.....rang|
0001d350  65 25 20 6f 6e 61 6d 65  24 2b 3d 22 72 22 0d b8  |e% oname$+="r"..|
0001d360  38 17 e7 65 71 75 61 6c  25 20 6f 6e 61 6d 65 24  |8..equal% oname$|
0001d370  2b 3d 22 65 22 0d b8 42  23 e7 73 68 61 72 70 65  |+="e"..B#.sharpe|
0001d380  6e 25 20 6f 6e 61 6d 65  24 2b 3d 22 73 22 2b c3  |n% oname$+="s"+.|
0001d390  73 68 61 72 70 65 6e 25  0d b8 4c 1f e7 62 6c 61  |sharpen%..L..bla|
0001d3a0  63 6b 25 20 6f 6e 61 6d  65 24 2b 3d 22 62 22 2b  |ck% oname$+="b"+|
0001d3b0  c3 62 6c 61 63 6b 25 0d  b8 56 38 e7 67 61 6d 6d  |.black%..V8.gamm|
0001d3c0  61 3c 3e 31 20 41 25 3d  40 25 3a 40 25 3d 26 31  |a<>1 A%=@%:@%=&1|
0001d3d0  30 32 30 31 30 30 3a 6f  6e 61 6d 65 24 2b 3d 22  |020100:oname$+="|
0001d3e0  67 22 2b c3 67 61 6d 6d  61 3a 40 25 3d 41 25 0d  |g"+.gamma:@%=A%.|
0001d3f0  b8 60 1b e7 62 72 69 67  68 74 25 3d 31 36 20 6f  |.`..bright%=16 o|
0001d400  6e 61 6d 65 24 2b 3d 22  62 22 0d b8 6a 29 78 73  |name$+="b"..j)xs|
0001d410  70 25 3d 78 25 3a 79 73  70 25 3d 79 25 3a e7 72  |p%=x%:ysp%=y%:.r|
0001d420  6f 74 61 74 65 25 20 c8  94 20 78 73 70 25 2c 79  |otate% .. xsp%,y|
0001d430  73 70 25 0d b8 74 0a c8  8e 20 6d 20 ca 0d b8 7e  |sp%..t... m ...~|
0001d440  2e c9 20 2d 31 3a 78 77  6f 72 64 73 25 3d 78 73  |.. -1:xwords%=xs|
0001d450  70 25 3a 73 7a 25 3d 78  77 6f 72 64 73 25 2a 79  |p%:sz%=xwords%*y|
0001d460  73 70 25 3a 59 25 3d 79  73 70 25 0d b8 88 2b f2  |sp%:Y%=ysp%...+.|
0001d470  67 65 74 6f 75 74 70 75  74 28 73 7a 25 2c 30 2c  |getoutput(sz%,0,|
0001d480  78 77 6f 72 64 73 25 2c  59 25 29 3a 62 61 73 65  |xwords%,Y%):base|
0001d490  25 3d 72 61 6d 25 0d b8  92 33 c9 20 2d 33 2c 2d  |%=ram%...3. -3,-|
0001d4a0  35 3a 78 77 6f 72 64 73  25 3d 78 73 70 25 2a 32  |5:xwords%=xsp%*2|
0001d4b0  3a 73 7a 25 3d 78 77 6f  72 64 73 25 2a 79 73 70  |:sz%=xwords%*ysp|
0001d4c0  25 3a 59 25 3d 79 73 70  25 0d b8 9c 2b f2 67 65  |%:Y%=ysp%...+.ge|
0001d4d0  74 6f 75 74 70 75 74 28  73 7a 25 2c 30 2c 78 77  |toutput(sz%,0,xw|
0001d4e0  6f 72 64 73 25 2c 59 25  29 3a 62 61 73 65 25 3d  |ords%,Y%):base%=|
0001d4f0  72 61 6d 25 0d b8 a6 30  c9 20 2d 34 3a 78 77 6f  |ram%...0. -4:xwo|
0001d500  72 64 73 25 3d 78 73 70  25 2a 33 3a 73 7a 25 3d  |rds%=xsp%*3:sz%=|
0001d510  78 77 6f 72 64 73 25 2a  79 73 70 25 3a 59 25 3d  |xwords%*ysp%:Y%=|
0001d520  79 73 70 25 0d b8 b0 2b  f2 67 65 74 6f 75 74 70  |ysp%...+.getoutp|
0001d530  75 74 28 73 7a 25 2c 30  2c 78 77 6f 72 64 73 25  |ut(sz%,0,xwords%|
0001d540  2c 59 25 29 3a 62 61 73  65 25 3d 72 61 6d 25 0d  |,Y%):base%=ram%.|
0001d550  b8 ba 35 c9 20 2d 36 3a  78 77 6f 72 64 73 25 3d  |..5. -6:xwords%=|
0001d560  78 73 70 25 2a 32 2b 33  80 ac 33 3a 73 7a 25 3d  |xsp%*2+3..3:sz%=|
0001d570  78 77 6f 72 64 73 25 2a  79 73 70 25 3a 59 25 3d  |xwords%*ysp%:Y%=|
0001d580  79 73 70 25 0d b8 c4 27  41 25 3d 59 25 3a f2 67  |ysp%...'A%=Y%:.g|
0001d590  65 74 6f 75 74 70 75 74  28 73 7a 25 2c 36 34 2c  |etoutput(sz%,64,|
0001d5a0  78 77 6f 72 64 73 25 2c  59 25 29 0d b8 ce 31 72  |xwords%,Y%)...1r|
0001d5b0  61 6d 25 21 34 3d 30 3a  72 61 6d 25 21 38 3d 31  |am%!4=0:ram%!8=1|
0001d5c0  36 3a 72 61 6d 25 21 31  32 3d 31 36 3a c8 99 26  |6:ram%!12=16:..&|
0001d5d0  32 65 2c 26 31 30 39 2c  72 61 6d 25 0d b8 d8 29  |2e,&109,ram%...)|
0001d5e0  c8 99 26 32 65 2c 26 31  30 66 2c 72 61 6d 25 2c  |..&2e,&10f,ram%,|
0001d5f0  6f 6e 61 6d 65 24 2c 30  2c 78 73 70 25 2a 32 2c  |oname$,0,xsp%*2,|
0001d600  59 25 2c 32 38 0d b8 e2  4a 62 61 73 65 25 3d 72  |Y%,28...Jbase%=r|
0001d610  61 6d 25 2b 72 61 6d 25  21 38 3a 62 61 73 65 25  |am%+ram%!8:base%|
0001d620  21 28 35 2a 34 29 3d 41  25 2d 31 3a 21 62 61 73  |!(5*4)=A%-1:!bas|
0001d630  65 25 3d 21 62 61 73 65  25 2d 59 25 2a 78 77 6f  |e%=!base%-Y%*xwo|
0001d640  72 64 73 25 2b 41 25 2a  78 77 6f 72 64 73 25 0d  |rds%+A%*xwords%.|
0001d650  b8 ec 29 72 61 6d 25 21  31 32 3d 72 61 6d 25 21  |..)ram%!12=ram%!|
0001d660  31 32 2d 59 25 2a 78 77  6f 72 64 73 25 2b 41 25  |12-Y%*xwords%+A%|
0001d670  2a 78 77 6f 72 64 73 25  0d b8 f6 3e 62 61 73 65  |*xwords%...>base|
0001d680  25 21 28 31 30 2a 34 29  3d 35 3c 3c 32 37 20 84  |%!(10*4)=5<<27 .|
0001d690  20 6e 78 3c 3c 31 20 84  20 6e 79 3c 3c 31 34 20  | nx<<1 . ny<<14 |
0001d6a0  84 20 31 3a 62 61 73 65  25 2b 3d 62 61 73 65 25  |. 1:base%+=base%|
0001d6b0  21 28 38 2a 34 29 0d b9  00 35 c9 20 2d 37 3a 78  |!(8*4)...5. -7:x|
0001d6c0  77 6f 72 64 73 25 3d 78  73 70 25 2a 33 2b 33 80  |words%=xsp%*3+3.|
0001d6d0  ac 33 3a 73 7a 25 3d 78  77 6f 72 64 73 25 2a 79  |.3:sz%=xwords%*y|
0001d6e0  73 70 25 3a 59 25 3d 79  73 70 25 0d b9 0a 27 41  |sp%:Y%=ysp%...'A|
0001d6f0  25 3d 59 25 3a f2 67 65  74 6f 75 74 70 75 74 28  |%=Y%:.getoutput(|
0001d700  73 7a 25 2c 36 34 2c 78  77 6f 72 64 73 25 2c 59  |sz%,64,xwords%,Y|
0001d710  25 29 0d b9 14 31 72 61  6d 25 21 34 3d 30 3a 72  |%)...1ram%!4=0:r|
0001d720  61 6d 25 21 38 3d 31 36  3a 72 61 6d 25 21 31 32  |am%!8=16:ram%!12|
0001d730  3d 31 36 3a c8 99 26 32  65 2c 26 31 30 39 2c 72  |=16:..&2e,&109,r|
0001d740  61 6d 25 0d b9 1e 29 c8  99 26 32 65 2c 26 31 30  |am%...)..&2e,&10|
0001d750  66 2c 72 61 6d 25 2c 6f  6e 61 6d 65 24 2c 30 2c  |f,ram%,oname$,0,|
0001d760  78 73 70 25 2a 33 2c 59  25 2c 32 38 0d b9 28 4a  |xsp%*3,Y%,28..(J|
0001d770  62 61 73 65 25 3d 72 61  6d 25 2b 72 61 6d 25 21  |base%=ram%+ram%!|
0001d780  38 3a 62 61 73 65 25 21  28 35 2a 34 29 3d 41 25  |8:base%!(5*4)=A%|
0001d790  2d 31 3a 21 62 61 73 65  25 3d 21 62 61 73 65 25  |-1:!base%=!base%|
0001d7a0  2d 59 25 2a 78 77 6f 72  64 73 25 2b 41 25 2a 78  |-Y%*xwords%+A%*x|
0001d7b0  77 6f 72 64 73 25 0d b9  32 29 72 61 6d 25 21 31  |words%..2)ram%!1|
0001d7c0  32 3d 72 61 6d 25 21 31  32 2d 59 25 2a 78 77 6f  |2=ram%!12-Y%*xwo|
0001d7d0  72 64 73 25 2b 41 25 2a  78 77 6f 72 64 73 25 0d  |rds%+A%*xwords%.|
0001d7e0  b9 3c 42 62 61 73 65 25  21 28 31 30 2a 34 29 3d  |.<Bbase%!(10*4)=|
0001d7f0  70 61 6e 69 63 3c 3c 32  37 20 84 20 6e 78 3c 3c  |panic<<27 . nx<<|
0001d800  31 20 84 20 6e 79 3c 3c  31 34 20 84 20 31 3a 62  |1 . ny<<14 . 1:b|
0001d810  61 73 65 25 2b 3d 62 61  73 65 25 21 28 38 2a 34  |ase%+=base%!(8*4|
0001d820  29 0d b9 46 34 6e 6f 20  6d 61 67 69 63 20 6e 75  |)..F4no magic nu|
0001d830  6d 62 65 72 20 79 65 74  20 66 6f 72 20 6e 65 77  |mber yet for new|
0001d840  20 66 6f 72 6d 61 74 20  32 34 62 70 70 20 73 70  | format 24bpp sp|
0001d850  72 69 74 65 73 0d b9 50  30 c9 20 2d 38 3a 78 77  |rites..P0. -8:xw|
0001d860  6f 72 64 73 25 3d 78 73  70 25 2a 34 3a 73 7a 25  |ords%=xsp%*4:sz%|
0001d870  3d 78 77 6f 72 64 73 25  2a 79 73 70 25 3a 59 25  |=xwords%*ysp%:Y%|
0001d880  3d 79 73 70 25 0d b9 5a  27 41 25 3d 59 25 3a f2  |=ysp%..Z'A%=Y%:.|
0001d890  67 65 74 6f 75 74 70 75  74 28 73 7a 25 2c 36 34  |getoutput(sz%,64|
0001d8a0  2c 78 77 6f 72 64 73 25  2c 59 25 29 0d b9 64 31  |,xwords%,Y%)..d1|
0001d8b0  72 61 6d 25 21 34 3d 30  3a 72 61 6d 25 21 38 3d  |ram%!4=0:ram%!8=|
0001d8c0  31 36 3a 72 61 6d 25 21  31 32 3d 31 36 3a c8 99  |16:ram%!12=16:..|
0001d8d0  26 32 65 2c 26 31 30 39  2c 72 61 6d 25 0d b9 6e  |&2e,&109,ram%..n|
0001d8e0  29 c8 99 26 32 65 2c 26  31 30 66 2c 72 61 6d 25  |)..&2e,&10f,ram%|
0001d8f0  2c 6f 6e 61 6d 65 24 2c  30 2c 78 73 70 25 2a 34  |,oname$,0,xsp%*4|
0001d900  2c 59 25 2c 32 38 0d b9  78 4a 62 61 73 65 25 3d  |,Y%,28..xJbase%=|
0001d910  72 61 6d 25 2b 72 61 6d  25 21 38 3a 62 61 73 65  |ram%+ram%!8:base|
0001d920  25 21 28 35 2a 34 29 3d  41 25 2d 31 3a 21 62 61  |%!(5*4)=A%-1:!ba|
0001d930  73 65 25 3d 21 62 61 73  65 25 2d 59 25 2a 78 77  |se%=!base%-Y%*xw|
0001d940  6f 72 64 73 25 2b 41 25  2a 78 77 6f 72 64 73 25  |ords%+A%*xwords%|
0001d950  0d b9 82 29 72 61 6d 25  21 31 32 3d 72 61 6d 25  |...)ram%!12=ram%|
0001d960  21 31 32 2d 59 25 2a 78  77 6f 72 64 73 25 2b 41  |!12-Y%*xwords%+A|
0001d970  25 2a 78 77 6f 72 64 73  25 0d b9 8c 3e 62 61 73  |%*xwords%...>bas|
0001d980  65 25 21 28 31 30 2a 34  29 3d 36 3c 3c 32 37 20  |e%!(10*4)=6<<27 |
0001d990  84 20 6e 78 3c 3c 31 20  84 20 6e 79 3c 3c 31 34  |. nx<<1 . ny<<14|
0001d9a0  20 84 20 31 3a 62 61 73  65 25 2b 3d 62 61 73 65  | . 1:base%+=base|
0001d9b0  25 21 28 38 2a 34 29 0d  b9 96 43 7f 3a 78 77 6f  |%!(8*4)...C.:xwo|
0001d9c0  72 64 73 25 3d 78 73 70  25 2f 73 69 7a 65 25 2b  |rds%=xsp%/size%+|
0001d9d0  33 2e 39 39 39 39 80 ac  33 3a 73 7a 25 3d 78 77  |3.9999..3:sz%=xw|
0001d9e0  6f 72 64 73 25 2a 79 73  70 25 3a 58 25 3d 78 73  |ords%*ysp%:X%=xs|
0001d9f0  70 25 3a 59 25 3d 79 73  70 25 0d b9 a0 0d e7 6e  |p%:Y%=ysp%.....n|
0001da00  63 6f 6c 3d 31 20 8c 0d  b9 aa 0b c8 8e 20 6d 24  |col=1 ....... m$|
0001da10  20 ca 0d b9 b4 4f c9 22  43 22 3a 21 72 6f 77 69  | ....O."C":!rowi|
0001da20  6e 63 3d 78 77 6f 72 64  73 25 3a 78 77 6f 72 64  |nc=xwords%:xword|
0001da30  73 25 3d 78 77 6f 72 64  73 25 2a 34 3a 73 7a 25  |s%=xwords%*4:sz%|
0001da40  3d 78 77 6f 72 64 73 25  2a 79 73 70 25 3a 58 25  |=xwords%*ysp%:X%|
0001da50  3d 78 73 70 25 2a 34 3a  59 25 3d 79 73 70 25 2a  |=xsp%*4:Y%=ysp%*|
0001da60  34 0d b9 be 4f c9 22 54  22 3a 21 72 6f 77 69 6e  |4...O."T":!rowin|
0001da70  63 3d 78 77 6f 72 64 73  25 3a 78 77 6f 72 64 73  |c=xwords%:xwords|
0001da80  25 3d 78 77 6f 72 64 73  25 2a 33 3a 73 7a 25 3d  |%=xwords%*3:sz%=|
0001da90  78 77 6f 72 64 73 25 2a  79 73 70 25 3a 58 25 3d  |xwords%*ysp%:X%=|
0001daa0  78 73 70 25 2a 34 3a 59  25 3d 79 73 70 25 2a 33  |xsp%*4:Y%=ysp%*3|
0001dab0  0d b9 c8 4f c9 22 44 22  3a 21 72 6f 77 69 6e 63  |...O."D":!rowinc|
0001dac0  3d 78 77 6f 72 64 73 25  3a 78 77 6f 72 64 73 25  |=xwords%:xwords%|
0001dad0  3d 78 77 6f 72 64 73 25  2a 32 3a 73 7a 25 3d 78  |=xwords%*2:sz%=x|
0001dae0  77 6f 72 64 73 25 2a 79  73 70 25 3a 58 25 3d 78  |words%*ysp%:X%=x|
0001daf0  73 70 25 2a 32 3a 59 25  3d 79 73 70 25 2a 32 0d  |sp%*2:Y%=ysp%*2.|
0001db00  b9 d2 05 cb 0d b9 dc 05  cd 0d b9 e6 2c 41 25 3d  |............,A%=|
0001db10  59 25 3a f2 67 65 74 6f  75 74 70 75 74 28 73 7a  |Y%:.getoutput(sz|
0001db20  25 2c 32 30 34 38 2b 36  34 2c 78 77 6f 72 64 73  |%,2048+64,xwords|
0001db30  25 2c 59 25 29 0d b9 f0  31 72 61 6d 25 21 34 3d  |%,Y%)...1ram%!4=|
0001db40  30 3a 72 61 6d 25 21 38  3d 31 36 3a 72 61 6d 25  |0:ram%!8=16:ram%|
0001db50  21 31 32 3d 31 36 3a c8  99 26 32 65 2c 26 31 30  |!12=16:..&2e,&10|
0001db60  39 2c 72 61 6d 25 0d b9  fa 30 c8 99 26 32 65 2c  |9,ram%...0..&2e,|
0001db70  26 31 30 66 2c 72 61 6d  25 2c 6f 6e 61 6d 65 24  |&10f,ram%,oname$|
0001db80  2c 28 6e 63 6f 6c 3c 36  33 29 80 31 2c 58 25 2c  |,(ncol<63).1,X%,|
0001db90  59 25 2c 73 70 6d 0d ba  04 4a 62 61 73 65 25 3d  |Y%,spm...Jbase%=|
0001dba0  72 61 6d 25 2b 72 61 6d  25 21 38 3a 62 61 73 65  |ram%+ram%!8:base|
0001dbb0  25 21 28 35 2a 34 29 3d  41 25 2d 31 3a 21 62 61  |%!(5*4)=A%-1:!ba|
0001dbc0  73 65 25 3d 21 62 61 73  65 25 2d 59 25 2a 78 77  |se%=!base%-Y%*xw|
0001dbd0  6f 72 64 73 25 2b 41 25  2a 78 77 6f 72 64 73 25  |ords%+A%*xwords%|
0001dbe0  0d ba 0e 29 72 61 6d 25  21 31 32 3d 72 61 6d 25  |...)ram%!12=ram%|
0001dbf0  21 31 32 2d 59 25 2a 78  77 6f 72 64 73 25 2b 41  |!12-Y%*xwords%+A|
0001dc00  25 2a 78 77 6f 72 64 73  25 0d ba 18 26 70 61 6c  |%*xwords%...&pal|
0001dc10  25 3d 62 61 73 65 25 2b  31 31 2a 34 3a 62 61 73  |%=base%+11*4:bas|
0001dc20  65 25 2b 3d 62 61 73 65  25 21 28 38 2a 34 29 0d  |e%+=base%!(8*4).|
0001dc30  ba 22 0d c8 8e 20 6e 63  6f 6c 20 ca 0d ba 2c 09  |."... ncol ...,.|
0001dc40  c9 20 32 35 36 0d ba 36  52 21 28 70 61 6c 25 2d  |. 256..6R!(pal%-|
0001dc50  38 29 2b 3d 32 30 34 38  3a 21 28 70 61 6c 25 2d  |8)+=2048:!(pal%-|
0001dc60  31 32 29 2b 3d 32 30 34  38 3a 62 61 73 65 25 2b  |12)+=2048:base%+|
0001dc70  3d 32 30 34 38 3a 21 28  72 61 6d 25 2b 31 32 29  |=2048:!(ram%+12)|
0001dc80  2b 3d 32 30 34 38 3a 21  28 70 61 6c 25 2d 34 34  |+=2048:!(pal%-44|
0001dc90  29 2b 3d 32 30 34 38 0d  ba 40 29 e3 5a 25 3d 30  |)+=2048..@).Z%=0|
0001dca0  b8 32 35 35 3a 42 25 3d  5a 25 84 5a 25 3c 3c 38  |.255:B%=Z%.Z%<<8|
0001dcb0  84 5a 25 3c 3c 31 36 3a  42 25 3d 42 25 3c 3c 38  |.Z%<<16:B%=B%<<8|
0001dcc0  0d ba 4a 25 70 61 6c 25  21 28 5a 25 2a 38 29 3d  |..J%pal%!(Z%*8)=|
0001dcd0  42 25 3a 70 61 6c 25 21  28 5a 25 2a 38 2b 34 29  |B%:pal%!(Z%*8+4)|
0001dce0  3d 42 25 3a ed 0d ba 54  09 c9 20 32 35 35 0d ba  |=B%:...T.. 255..|
0001dcf0  5e 52 21 28 70 61 6c 25  2d 38 29 2b 3d 32 30 34  |^R!(pal%-8)+=204|
0001dd00  38 3a 21 28 70 61 6c 25  2d 31 32 29 2b 3d 32 30  |8:!(pal%-12)+=20|
0001dd10  34 38 3a 62 61 73 65 25  2b 3d 32 30 34 38 3a 21  |48:base%+=2048:!|
0001dd20  28 72 61 6d 25 2b 31 32  29 2b 3d 32 30 34 38 3a  |(ram%+12)+=2048:|
0001dd30  21 28 70 61 6c 25 2d 34  34 29 2b 3d 32 30 34 38  |!(pal%-44)+=2048|
0001dd40  0d ba 68 24 e3 5a 25 3d  30 b8 32 35 35 3a 42 25  |..h$.Z%=0.255:B%|
0001dd50  3d 70 61 6c 65 74 74 65  25 21 28 5a 25 3c 3c 32  |=palette%!(Z%<<2|
0001dd60  29 3c 3c 38 0d ba 72 25  70 61 6c 25 21 28 5a 25  |)<<8..r%pal%!(Z%|
0001dd70  2a 38 29 3d 42 25 3a 70  61 6c 25 21 28 5a 25 2a  |*8)=B%:pal%!(Z%*|
0001dd80  38 2b 34 29 3d 42 25 3a  ed 0d ba 7c 08 c9 20 31  |8+4)=B%:...|.. 1|
0001dd90  35 0d ba 86 0b c8 8e 20  6d 24 20 ca 0d ba 90 09  |5...... m$ .....|
0001dda0  c9 20 22 52 22 0d ba 9a  30 e3 5a 25 3d 30 b8 31  |. "R"...0.Z%=0.1|
0001ddb0  35 3a f2 63 6f 6c 28 5a  25 2c 70 61 6c 65 74 74  |5:.col(Z%,palett|
0001ddc0  65 25 21 28 5a 25 3c 3c  32 29 80 26 46 30 46 30  |e%!(Z%<<2).&F0F0|
0001ddd0  46 30 29 3a ed 0d ba a4  09 c9 20 22 44 22 0d ba  |F0):...... "D"..|
0001dde0  ae 1e e3 5a 25 3d 30 b8  37 3a 41 25 3d 30 3a e7  |...Z%=0.7:A%=0:.|
0001ddf0  5a 25 80 31 20 41 25 2b  3d 26 46 30 0d ba b8 13  |Z%.1 A%+=&F0....|
0001de00  e7 5a 25 80 32 20 41 25  2b 3d 26 46 30 30 30 0d  |.Z%.2 A%+=&F000.|
0001de10  ba c2 15 e7 5a 25 80 34  20 41 25 2b 3d 26 46 30  |....Z%.4 A%+=&F0|
0001de20  30 30 30 30 0d ba cc 11  f2 63 6f 6c 28 5a 25 2c  |0000.....col(Z%,|
0001de30  41 25 29 3a ed 0d ba d6  09 c9 20 22 54 22 0d ba  |A%):...... "T"..|
0001de40  e0 30 e3 5a 25 3d 30 b8  31 35 3a 41 25 3d 5a 25  |.0.Z%=0.15:A%=Z%|
0001de50  3c 3c 34 3a f2 63 6f 6c  28 5a 25 2c 41 25 84 41  |<<4:.col(Z%,A%.A|
0001de60  25 3c 3c 38 84 41 25 3c  3c 31 36 29 3a ed 0d ba  |%<<8.A%<<16):...|
0001de70  ea 05 7f 0d ba f4 3c e3  5a 25 3d 30 b8 31 35 3a  |......<.Z%=0.15:|
0001de80  41 25 3d 28 5a 25 80 37  29 2f 37 2a 31 35 2b 2e  |A%=(Z%.7)/7*15+.|
0001de90  32 3c 3c 34 3a f2 63 6f  6c 28 5a 25 2c 41 25 84  |2<<4:.col(Z%,A%.|
0001dea0  41 25 3c 3c 38 84 41 25  3c 3c 31 36 29 3a ed 0d  |A%<<8.A%<<16):..|
0001deb0  ba fe 05 cb 0d bb 08 07  c9 20 33 0d bb 12 0a c8  |......... 3.....|
0001dec0  8e 6d 24 20 ca 0d bb 1c  09 c9 20 22 43 22 0d bb  |.m$ ...... "C"..|
0001ded0  26 3b f2 63 6f 6c 28 30  2c 30 29 3a f2 63 6f 6c  |&;.col(0,0):.col|
0001dee0  28 31 2c 26 46 30 46 30  30 30 29 3a f2 63 6f 6c  |(1,&F0F000):.col|
0001def0  28 32 2c 26 46 30 30 30  46 30 29 3a f2 63 6f 6c  |(2,&F000F0):.col|
0001df00  28 33 2c 26 46 30 46 30  29 0d bb 30 09 c9 20 22  |(3,&F0F0)..0.. "|
0001df10  52 22 0d bb 3a 2f e3 5a  25 3d 30 b8 33 3a f2 63  |R"..:/.Z%=0.3:.c|
0001df20  6f 6c 28 5a 25 2c 70 61  6c 65 74 74 65 25 21 28  |ol(Z%,palette%!(|
0001df30  5a 25 3c 3c 32 29 80 26  46 30 46 30 46 30 29 3a  |Z%<<2).&F0F0F0):|
0001df40  ed 0d bb 44 05 7f 0d bb  4e 31 e3 5a 25 3d 30 b8  |...D....N1.Z%=0.|
0001df50  33 3a 41 25 3d 5a 25 2a  35 3c 3c 34 3a f2 63 6f  |3:A%=Z%*5<<4:.co|
0001df60  6c 28 5a 25 2c 41 25 84  41 25 3c 3c 38 84 41 25  |l(Z%,A%.A%<<8.A%|
0001df70  3c 3c 31 36 29 3a ed 0d  bb 58 05 cb 0d bb 62 21  |<<16):...X....b!|
0001df80  c9 20 31 3a f2 63 6f 6c  28 30 2c 30 29 3a f2 63  |. 1:.col(0,0):.c|
0001df90  6f 6c 28 31 2c 26 46 30  46 30 46 30 29 0d bb 6c  |ol(1,&F0F0F0)..l|
0001dfa0  05 cb 0d bb 76 05 cb 0d  bb 8a 0c e7 66 6c 65 78  |....v.......flex|
0001dfb0  25 20 8c 0d bb 9e 05 cc  0d bb a8 13 e7 77 6f 72  |% ...........wor|
0001dfc0  6b 73 70 61 63 65 25 3c  30 20 8c 0d bb b2 2e 50  |kspace%<0 .....P|
0001dfd0  25 3d e0 3a 5b 4f 50 54  20 30 3a 53 54 52 20 72  |%=.:[OPT 0:STR r|
0001dfe0  31 33 2c 50 25 2b 31 36  3a 4d 4f 56 53 20 50 63  |13,P%+16:MOVS Pc|
0001dff0  2c 72 31 34 3a 5d 3a d6  e0 0d bb bc 17 e0 3d e0  |,r14:]:.......=.|
0001e000  2b 33 32 2a 31 30 32 34  2b 93 2d 50 25 21 31 36  |+32*1024+.-P%!16|
0001e010  0d bb c6 05 cc 0d bb da  05 cd 0d bb e4 05 cd 0d  |................|
0001e020  bb ee 07 ea 20 85 0d bb  f8 2f ee 20 85 20 ea 3a  |.... ..../. . .:|
0001e030  f7 20 85 3a f2 53 61 76  65 3a 85 20 9f 2c f6 24  |. .:.Save:. .,.$|
0001e040  2b 22 20 69 6e 74 65 72  6e 61 6c 20 28 22 2b c3  |+" internal ("+.|
0001e050  9e 2b 22 29 22 0d bc 02  18 c8 99 22 48 6f 75 72  |.+")"......"Hour|
0001e060  67 6c 61 73 73 5f 4c 45  44 73 22 2c 33 0d bc 0c  |glass_LEDs",3...|
0001e070  24 79 73 61 6d 70 25 3d  31 3a 6e 6c 25 28 29 3d  |$ysamp%=1:nl%()=|
0001e080  30 3a 73 74 65 70 25 3d  34 2a 28 63 6f 6c 2b 31  |0:step%=4*(col+1|
0001e090  29 0d bc 16 44 61 64 64  72 25 3d 62 61 73 65 25  |)...Daddr%=base%|
0001e0a0  2a 73 69 7a 65 25 3a 72  6f 77 73 74 65 70 25 3d  |*size%:rowstep%=|
0001e0b0  78 77 6f 72 64 73 25 2a  73 69 7a 65 25 3a 63 6f  |xwords%*size%:co|
0001e0c0  6c 73 74 65 70 25 3d 31  3a 64 69 73 74 25 3d 78  |lstep%=1:dist%=x|
0001e0d0  73 70 25 2d 31 0d bc 20  21 e7 6d 3d 2d 33 84 6d  |sp%-1.. !.m=-3.m|
0001e0e0  3d 2d 35 84 6d 3d 2d 36  20 64 69 73 74 25 3d 64  |=-5.m=-6 dist%=d|
0001e0f0  69 73 74 25 2a 32 0d bc  2a 1c e7 6d 3d 2d 34 84  |ist%*2..*..m=-4.|
0001e100  6d 3d 2d 37 20 64 69 73  74 25 3d 64 69 73 74 25  |m=-7 dist%=dist%|
0001e110  2a 33 0d bc 34 17 e7 6d  3d 2d 38 20 64 69 73 74  |*3..4..m=-8 dist|
0001e120  25 3d 64 69 73 74 25 2a  34 0d bc 3e 0e e7 72 6f  |%=dist%*4..>..ro|
0001e130  74 61 74 65 25 20 8c 0d  bc 48 36 6f 64 69 73 74  |tate% ...H6odist|
0001e140  25 3d 64 69 73 74 25 3a  c8 94 20 63 6f 6c 73 74  |%=dist%:.. colst|
0001e150  65 70 25 2c 72 6f 77 73  74 65 70 25 3a c8 94 20  |ep%,rowstep%:.. |
0001e160  68 66 6c 69 70 25 2c 76  66 6c 69 70 25 0d bc 52  |hflip%,vflip%..R|
0001e170  10 e7 72 6f 74 61 74 65  25 3d 31 20 8c 0d bc 5c  |..rotate%=1 ...\|
0001e180  47 61 64 64 72 25 2b 3d  28 79 73 70 25 2d 31 29  |Gaddr%+=(ysp%-1)|
0001e190  2a 63 6f 6c 73 74 65 70  25 3a 63 6f 6c 73 74 65  |*colstep%:colste|
0001e1a0  70 25 3d 2d 63 6f 6c 73  74 65 70 25 3a 64 69 73  |p%=-colstep%:dis|
0001e1b0  74 25 3d 28 79 73 70 25  2d 31 29 2a 63 6f 6c 73  |t%=(ysp%-1)*cols|
0001e1c0  74 65 70 25 0d bc 66 05  cc 0d bc 70 3b 61 64 64  |tep%..f....p;add|
0001e1d0  72 25 2b 3d 64 69 73 74  25 3a 72 6f 77 73 74 65  |r%+=dist%:rowste|
0001e1e0  70 25 3d 2d 72 6f 77 73  74 65 70 25 3a 64 69 73  |p%=-rowstep%:dis|
0001e1f0  74 25 3d 28 79 73 70 25  2d 31 29 2a 63 6f 6c 73  |t%=(ysp%-1)*cols|
0001e200  74 65 70 25 0d bc 7a 05  cd 0d bc 84 3b e7 6d 3d  |tep%..z.....;.m=|
0001e210  2d 33 84 6d 3d 2d 35 84  6d 3d 2d 36 20 63 6f 6c  |-3.m=-5.m=-6 col|
0001e220  73 74 65 70 25 3d 63 6f  6c 73 74 65 70 25 2f 32  |step%=colstep%/2|
0001e230  3a 72 6f 77 73 74 65 70  25 3d 72 6f 77 73 74 65  |:rowstep%=rowste|
0001e240  70 25 2a 32 0d bc 8e 36  e7 6d 3d 2d 34 84 6d 3d  |p%*2...6.m=-4.m=|
0001e250  2d 37 20 63 6f 6c 73 74  65 70 25 3d 63 6f 6c 73  |-7 colstep%=cols|
0001e260  74 65 70 25 2f 33 3a 72  6f 77 73 74 65 70 25 3d  |tep%/3:rowstep%=|
0001e270  72 6f 77 73 74 65 70 25  2a 33 0d bc 98 31 e7 6d  |rowstep%*3...1.m|
0001e280  3d 2d 38 20 63 6f 6c 73  74 65 70 25 3d 63 6f 6c  |=-8 colstep%=col|
0001e290  73 74 65 70 25 2f 34 3a  72 6f 77 73 74 65 70 25  |step%/4:rowstep%|
0001e2a0  3d 72 6f 77 73 74 65 70  25 2a 34 0d bc a2 05 cd  |=rowstep%*4.....|
0001e2b0  0d bc ac 0d e7 68 66 6c  69 70 25 20 8c 0d bc b6  |.....hflip% ....|
0001e2c0  30 61 64 64 72 25 2b 3d  64 69 73 74 25 3a 64 69  |0addr%+=dist%:di|
0001e2d0  73 74 25 3d 2d 64 69 73  74 25 3a 63 6f 6c 73 74  |st%=-dist%:colst|
0001e2e0  65 70 25 3d 2d 63 6f 6c  73 74 65 70 25 0d bc c0  |ep%=-colstep%...|
0001e2f0  05 cd 0d bc ca 0d e7 76  66 6c 69 70 25 20 8c 0d  |.......vflip% ..|
0001e300  bc d4 0e e7 72 6f 74 61  74 65 25 20 8c 0d bc de  |....rotate% ....|
0001e310  2c 61 64 64 72 25 2b 3d  6f 64 69 73 74 25 2a 72  |,addr%+=odist%*r|
0001e320  6f 74 61 74 65 25 3a 72  6f 77 73 74 65 70 25 3d  |otate%:rowstep%=|
0001e330  2d 72 6f 77 73 74 65 70  25 0d bc e8 05 cc 0d bc  |-rowstep%.......|
0001e340  f2 2f 61 64 64 72 25 2b  3d 28 79 73 70 25 2d 31  |./addr%+=(ysp%-1|
0001e350  29 2a 72 6f 77 73 74 65  70 25 3a 72 6f 77 73 74  |)*rowstep%:rowst|
0001e360  65 70 25 3d 2d 72 6f 77  73 74 65 70 25 0d bc fc  |ep%=-rowstep%...|
0001e370  05 cd 0d bd 06 05 cd 0d  bd 10 4c 6f 75 74 6c 69  |..........Loutli|
0001e380  6d 25 3d 28 62 61 73 65  25 2b 78 77 6f 72 64 73  |m%=(base%+xwords|
0001e390  25 2a 59 25 29 2a 73 69  7a 65 25 2d 31 3a 6f 64  |%*Y%)*size%-1:od|
0001e3a0  64 63 6f 6c 73 74 65 70  25 3d 2d 63 6f 6c 73 74  |dcolstep%=-colst|
0001e3b0  65 70 25 3a 6f 64 64 73  74 65 70 25 3d 2d 73 74  |ep%:oddstep%=-st|
0001e3c0  65 70 25 0d bd 1a 2b e7  6f 72 64 65 72 25 20 f2  |ep%...+.order% .|
0001e3d0  61 64 6a 75 73 74 70 61  6c 65 74 74 65 28 31 2f  |adjustpalette(1/|
0001e3e0  79 64 69 76 25 2f 78 64  69 76 25 2c 30 29 0d bd  |ydiv%/xdiv%,0)..|
0001e3f0  24 39 e7 73 79 25 3d 79  25 20 80 20 73 78 25 3d  |$9.sy%=y% . sx%=|
0001e400  78 25 20 80 20 72 61 6e  67 65 25 3d a3 20 80 20  |x% . range%=. . |
0001e410  73 68 61 72 70 65 6e 25  3d a3 20 80 20 65 71 75  |sharpen%=. . equ|
0001e420  61 6c 25 3d a3 20 8c 0d  bd 2e 0e e7 64 69 74 68  |al%=. ......dith|
0001e430  65 72 25 20 8c 0d bd 38  40 e3 79 72 25 3d 30 20  |er% ...8@.yr%=0 |
0001e440  b8 20 79 25 2d 31 3a c8  99 68 6f 75 72 25 2c 79  |. y%-1:..hour%,y|
0001e450  72 25 2a 31 30 30 81 79  25 3a e7 61 64 64 72 25  |r%*100.y%:.addr%|
0001e460  3e 6f 75 74 6c 69 6d 25  20 f2 66 6c 75 73 68 6f  |>outlim% .flusho|
0001e470  75 74 70 75 74 0d bd 42  4f 57 25 3d a0 28 72 24  |utput..BOW%=.(r$|
0001e480  2b 22 28 63 6c 25 28 29  29 22 29 3a 63 6c 25 28  |+"(cl%())"):cl%(|
0001e490  29 3d 63 6c 25 28 29 2b  6e 6c 25 28 29 3a 6e 6c  |)=cl%()+nl%():nl|
0001e4a0  25 28 29 3d 30 3a 42 25  3d 78 25 3a 41 25 3d 61  |%()=0:B%=x%:A%=a|
0001e4b0  64 64 72 25 3a 61 64 64  72 25 2b 3d 72 6f 77 73  |ddr%:addr%+=rows|
0001e4c0  74 65 70 25 0d bd 4c 0c  e7 79 72 25 80 31 20 8c  |tep%..L..yr%.1 .|
0001e4d0  0d bd 56 2f d6 66 73 25  2c 63 6f 6c 73 74 65 70  |..V/.fs%,colstep|
0001e4e0  25 2c 63 6c 25 28 31 2c  30 29 2c 6e 6c 25 28 31  |%,cl%(1,0),nl%(1|
0001e4f0  2c 30 29 2c 41 25 2c 73  74 65 70 25 2c 42 25 0d  |,0),A%,step%,B%.|
0001e500  bd 60 05 cc 0d bd 6a 41  41 25 2b 3d 64 69 73 74  |.`....jAA%+=dist|
0001e510  25 3a d6 66 73 25 2c 6f  64 64 63 6f 6c 73 74 65  |%:.fs%,oddcolste|
0001e520  70 25 2c 63 6c 25 28 78  25 2c 30 29 2c 6e 6c 25  |p%,cl%(x%,0),nl%|
0001e530  28 78 25 2c 30 29 2c 41  25 2c 6f 64 64 73 74 65  |(x%,0),A%,oddste|
0001e540  70 25 2c 42 25 0d bd 74  05 cd 0d bd 7e 05 ed 0d  |p%,B%..t....~...|
0001e550  bd 88 05 cc 0d bd 92 47  49 25 3d 73 74 65 70 25  |.......GI%=step%|
0001e560  3a e3 79 72 25 3d 30 b8  79 25 2d 31 3a c8 99 68  |:.yr%=0.y%-1:..h|
0001e570  6f 75 72 25 2c 79 72 25  2a 31 30 30 81 79 25 3a  |our%,yr%*100.y%:|
0001e580  e7 61 64 64 72 25 3e 6f  75 74 6c 69 6d 25 20 f2  |.addr%>outlim% .|
0001e590  66 6c 75 73 68 6f 75 74  70 75 74 0d bd 9c 58 57  |flushoutput...XW|
0001e5a0  25 3d a0 28 72 24 2b 22  28 63 6c 25 28 29 29 22  |%=.(r$+"(cl%())"|
0001e5b0  29 3a 42 25 3d 78 25 3a  41 25 3d 61 64 64 72 25  |):B%=x%:A%=addr%|
0001e5c0  3a 61 64 64 72 25 2b 3d  72 6f 77 73 74 65 70 25  |:addr%+=rowstep%|
0001e5d0  3a d6 66 73 25 2c 63 6f  6c 73 74 65 70 25 2c 63  |:.fs%,colstep%,c|
0001e5e0  6c 25 28 31 2c 30 29 2c  49 25 2c 41 25 2c 49 25  |l%(1,0),I%,A%,I%|
0001e5f0  2c 42 25 0d bd a6 05 ed  0d bd b0 05 cd 0d bd ba  |,B%.............|
0001e600  05 cc 0d bd c4 0d e7 65  71 75 61 6c 25 20 8c 0d  |.......equal% ..|
0001e610  bd ce 39 f2 72 65 77 69  6e 64 3a 48 61 76 67 25  |..9.rewind:Havg%|
0001e620  3d c6 8e 28 76 61 6c 73  25 28 29 29 2f 32 35 36  |=..(vals%())/256|
0001e630  2f 28 63 6f 6c 2b 31 29  3a de 20 6e 65 77 25 28  |/(col+1):. new%(|
0001e640  32 35 36 2c 63 6f 6c 29  0d bd d8 3e e3 42 25 3d  |256,col)...>.B%=|
0001e650  30 b8 63 6f 6c 3a 52 25  3d 30 3a 48 69 6e 74 25  |0.col:R%=0:Hint%|
0001e660  3d 30 3a e3 5a 25 3d 30  b8 32 35 36 3a 4c 25 3d  |=0:.Z%=0.256:L%=|
0001e670  52 25 3a 48 69 6e 74 25  2b 3d 76 61 6c 73 25 28  |R%:Hint%+=vals%(|
0001e680  5a 25 2c 42 25 29 0d bd  e2 26 c8 95 48 69 6e 74  |Z%,B%)...&..Hint|
0001e690  25 3e 48 61 76 67 25 3a  48 69 6e 74 25 2d 3d 48  |%>Havg%:Hint%-=H|
0001e6a0  61 76 67 25 3a 52 25 2b  3d 31 3a ce 0d bd ec 1f  |avg%:R%+=1:.....|
0001e6b0  6e 65 77 25 28 5a 25 2c  42 25 29 3d 28 4c 25 2b  |new%(Z%,B%)=(L%+|
0001e6c0  52 25 29 2f 32 2a 46 2f  32 35 36 0d bd f6 07 ed  |R%)/2*F/256.....|
0001e6d0  3a ed 0d be 00 05 cd 0d  be 0a 0f e7 73 68 61 72  |:...........shar|
0001e6e0  70 65 6e 25 20 8c 0d be  14 0d e7 6f 72 64 65 72  |pen% ......order|
0001e6f0  25 20 8c 0d be 1e 3a 79  72 65 61 64 25 3d 73 79  |% ....:yread%=sy|
0001e700  25 2d 31 3a 57 25 3d a0  28 72 24 2b 22 28 72 6d  |%-1:W%=.(r$+"(rm|
0001e710  31 25 28 29 29 22 29 3a  e7 65 71 75 61 6c 25 20  |1%())"):.equal% |
0001e720  f2 66 69 74 32 28 72 6d  31 25 28 29 29 0d be 28  |.fit2(rm1%())..(|
0001e730  41 e3 42 25 3d 30 b8 63  6f 6c 3a 72 6d 31 25 28  |A.B%=0.col:rm1%(|
0001e740  30 2c 42 25 29 3d 72 6d  31 25 28 31 2c 42 25 29  |0,B%)=rm1%(1,B%)|
0001e750  3a 72 6d 31 25 28 73 78  25 2b 31 2c 42 25 29 3d  |:rm1%(sx%+1,B%)=|
0001e760  72 6d 31 25 28 73 78 25  2c 42 25 29 3a ed 0d be  |rm1%(sx%,B%):...|
0001e770  32 05 cc 0d be 3c 3c 79  72 65 61 64 25 3d 79 25  |2....<<yread%=y%|
0001e780  2d 31 3a f2 73 63 61 6c  65 64 70 69 78 65 6c 72  |-1:.scaledpixelr|
0001e790  6f 77 28 72 6d 31 25 28  29 29 3a e7 65 71 75 61  |ow(rm1%()):.equa|
0001e7a0  6c 25 20 f2 66 69 74 28  72 6d 31 25 28 29 29 0d  |l% .fit(rm1%()).|
0001e7b0  be 46 3f e3 42 25 3d 30  b8 63 6f 6c 3a 72 6d 31  |.F?.B%=0.col:rm1|
0001e7c0  25 28 30 2c 42 25 29 3d  72 6d 31 25 28 31 2c 42  |%(0,B%)=rm1%(1,B|
0001e7d0  25 29 3a 72 6d 31 25 28  78 25 2b 31 2c 42 25 29  |%):rm1%(x%+1,B%)|
0001e7e0  3d 72 6d 31 25 28 78 25  2c 42 25 29 3a ed 0d be  |=rm1%(x%,B%):...|
0001e7f0  50 05 cd 0d be 5a 11 72  6d 32 25 28 29 3d 72 6d  |P....Z.rm2%()=rm|
0001e800  31 25 28 29 0d be 64 05  cd 0d be 6e 0d e7 6f 72  |1%()..d....n..or|
0001e810  64 65 72 25 20 8c 0d be  78 11 e3 79 72 25 3d 30  |der% ...x..yr%=0|
0001e820  20 b8 20 79 25 2d 31 0d  be 82 32 c8 99 68 6f 75  | . y%-1...2..hou|
0001e830  72 25 2c 79 72 25 2a 31  30 30 81 79 25 3a e7 61  |r%,yr%*100.y%:.a|
0001e840  64 64 72 25 3e 6f 75 74  6c 69 6d 25 20 f2 66 6c  |ddr%>outlim% .fl|
0001e850  75 73 68 6f 75 74 70 75  74 0d be 8c 0d e7 73 79  |ushoutput.....sy|
0001e860  25 3d 79 25 20 8c 0d be  96 19 f2 73 68 61 72 70  |%=y% ......sharp|
0001e870  70 69 78 65 6c 72 6f 77  28 63 6c 25 28 29 29 0d  |pixelrow(cl%()).|
0001e880  be a0 05 cc 0d be aa 3a  79 73 61 6d 70 25 2d 3d  |.......:ysamp%-=|
0001e890  31 3a e7 79 73 61 6d 70  25 3d 30 20 f2 73 68 61  |1:.ysamp%=0 .sha|
0001e8a0  72 70 70 69 78 65 6c 72  6f 77 28 78 6c 25 28 29  |rppixelrow(xl%()|
0001e8b0  29 3a 79 73 61 6d 70 25  3d 79 6d 75 6c 25 0d be  |):ysamp%=ymul%..|
0001e8c0  b4 0e e7 79 64 69 76 25  3d 31 20 8c 0d be be 0f  |...ydiv%=1 .....|
0001e8d0  63 6c 25 28 29 3d 78 6c  25 28 29 0d be c8 05 cc  |cl%()=xl%().....|
0001e8e0  0d be d2 14 e7 79 73 61  6d 70 25 3e 3d 79 64 69  |.....ysamp%>=ydi|
0001e8f0  76 25 20 8c 0d be dc 23  79 73 61 6d 70 25 2d 3d  |v% ....#ysamp%-=|
0001e900  79 64 69 76 25 3a 63 6c  25 28 29 3d 78 6c 25 28  |ydiv%:cl%()=xl%(|
0001e910  29 2a 79 64 69 76 25 0d  be e6 05 cc 0d be f0 2f  |)*ydiv%......../|
0001e920  63 6c 25 28 29 3d 78 6c  25 28 29 2a 79 73 61 6d  |cl%()=xl%()*ysam|
0001e930  70 25 3a 59 25 3d 79 64  69 76 25 2d 79 73 61 6d  |p%:Y%=ydiv%-ysam|
0001e940  70 25 3a 79 73 61 6d 70  25 3d 30 0d be fa 05 f5  |p%:ysamp%=0.....|
0001e950  0d bf 04 30 e7 79 73 61  6d 70 25 3d 30 20 f2 73  |...0.ysamp%=0 .s|
0001e960  68 61 72 70 70 69 78 65  6c 72 6f 77 28 78 6c 25  |harppixelrow(xl%|
0001e970  28 29 29 3a 79 73 61 6d  70 25 3d 79 6d 75 6c 25  |()):ysamp%=ymul%|
0001e980  0d bf 0e 10 e7 79 73 61  6d 70 25 3e 59 25 20 8c  |.....ysamp%>Y% .|
0001e990  0d bf 18 36 79 73 61 6d  70 25 2d 3d 59 25 3a 78  |...6ysamp%-=Y%:x|
0001e9a0  6c 32 25 28 29 3d 78 6c  25 28 29 2a 59 25 3a 63  |l2%()=xl%()*Y%:c|
0001e9b0  6c 25 28 29 3d 63 6c 25  28 29 2b 78 6c 32 25 28  |l%()=cl%()+xl2%(|
0001e9c0  29 3a 59 25 3d 30 0d bf  22 05 cc 0d bf 2c 3e 59  |):Y%=0.."....,>Y|
0001e9d0  25 2d 3d 79 73 61 6d 70  25 3a 78 6c 32 25 28 29  |%-=ysamp%:xl2%()|
0001e9e0  3d 78 6c 25 28 29 2a 79  73 61 6d 70 25 3a 63 6c  |=xl%()*ysamp%:cl|
0001e9f0  25 28 29 3d 63 6c 25 28  29 2b 78 6c 32 25 28 29  |%()=cl%()+xl2%()|
0001ea00  3a 79 73 61 6d 70 25 3d  30 0d bf 36 05 cd 0d bf  |:ysamp%=0..6....|
0001ea10  40 0a fd 20 59 25 3d 30  0d bf 4a 05 cd 0d bf 54  |@.. Y%=0..J....T|
0001ea20  0d 79 73 61 6d 70 25 2b  3d 31 0d bf 5e 05 cd 0d  |.ysamp%+=1..^...|
0001ea30  bf 68 05 cd 0d bf 72 3c  63 6c 25 28 29 3d 63 6c  |.h....r<cl%()=cl|
0001ea40  25 28 29 2b 6e 6c 25 28  29 3a 6e 6c 25 28 29 3d  |%()+nl%():nl%()=|
0001ea50  30 3a 42 25 3d 78 25 3a  41 25 3d 61 64 64 72 25  |0:B%=x%:A%=addr%|
0001ea60  3a 61 64 64 72 25 2b 3d  72 6f 77 73 74 65 70 25  |:addr%+=rowstep%|
0001ea70  0d bf 7c 0c e7 79 72 25  80 31 20 8c 0d bf 86 2f  |..|..yr%.1 ..../|
0001ea80  d6 66 73 25 2c 63 6f 6c  73 74 65 70 25 2c 63 6c  |.fs%,colstep%,cl|
0001ea90  25 28 31 2c 30 29 2c 6e  6c 25 28 31 2c 30 29 2c  |%(1,0),nl%(1,0),|
0001eaa0  41 25 2c 73 74 65 70 25  2c 42 25 0d bf 90 05 cc  |A%,step%,B%.....|
0001eab0  0d bf 9a 41 41 25 2b 3d  64 69 73 74 25 3a d6 66  |...AA%+=dist%:.f|
0001eac0  73 25 2c 6f 64 64 63 6f  6c 73 74 65 70 25 2c 63  |s%,oddcolstep%,c|
0001ead0  6c 25 28 78 25 2c 30 29  2c 6e 6c 25 28 78 25 2c  |l%(x%,0),nl%(x%,|
0001eae0  30 29 2c 41 25 2c 6f 64  64 73 74 65 70 25 2c 42  |0),A%,oddstep%,B|
0001eaf0  25 0d bf a4 05 cd 0d bf  ae 05 ed 0d bf b8 05 cc  |%...............|
0001eb00  0d bf c2 11 e3 79 72 25  3d 30 20 b8 20 79 25 2d  |.....yr%=0 . y%-|
0001eb10  31 0d bf cc 32 c8 99 68  6f 75 72 25 2c 79 72 25  |1...2..hour%,yr%|
0001eb20  2a 31 30 30 81 79 25 3a  e7 61 64 64 72 25 3e 6f  |*100.y%:.addr%>o|
0001eb30  75 74 6c 69 6d 25 20 f2  66 6c 75 73 68 6f 75 74  |utlim% .flushout|
0001eb40  70 75 74 0d bf d6 0f e7  73 68 61 72 70 65 6e 25  |put.....sharpen%|
0001eb50  20 8c 0d bf e0 40 e7 79  72 65 61 64 25 20 79 72  | ....@.yread% yr|
0001eb60  65 61 64 25 2d 3d 31 3a  f2 73 63 61 6c 65 64 70  |ead%-=1:.scaledp|
0001eb70  69 78 65 6c 72 6f 77 28  72 6d 25 28 29 29 3a e7  |ixelrow(rm%()):.|
0001eb80  65 71 75 61 6c 25 20 f2  66 69 74 28 72 6d 25 28  |equal% .fit(rm%(|
0001eb90  29 29 0d bf ea 3b e3 42  25 3d 30 b8 63 6f 6c 3a  |))...;.B%=0.col:|
0001eba0  72 6d 25 28 30 2c 42 25  29 3d 72 6d 25 28 31 2c  |rm%(0,B%)=rm%(1,|
0001ebb0  42 25 29 3a 72 6d 25 28  78 25 2b 31 2c 42 25 29  |B%):rm%(x%+1,B%)|
0001ebc0  3d 72 6d 25 28 78 25 2c  42 25 29 3a ed 0d bf f4  |=rm%(x%,B%):....|
0001ebd0  3b d6 20 73 68 61 72 70  25 2c 63 6c 25 28 31 2c  |;. sharp%,cl%(1,|
0001ebe0  30 29 2c 72 6d 25 28 31  2c 30 29 2c 72 6d 31 25  |0),rm%(1,0),rm1%|
0001ebf0  28 31 2c 30 29 2c 72 6d  32 25 28 31 2c 30 29 2c  |(1,0),rm2%(1,0),|
0001ec00  74 6f 74 76 61 6c 73 25  0d bf fe 21 c8 94 20 72  |totvals%...!.. r|
0001ec10  6d 32 25 28 29 2c 72 6d  31 25 28 29 3a 72 6d 31  |m2%(),rm1%():rm1|
0001ec20  25 28 29 3d 72 6d 25 28  29 0d c0 08 05 cc 0d c0  |%()=rm%().......|
0001ec30  12 2e f2 73 63 61 6c 65  64 70 69 78 65 6c 72 6f  |...scaledpixelro|
0001ec40  77 28 63 6c 25 28 29 29  3a e7 65 71 75 61 6c 25  |w(cl%()):.equal%|
0001ec50  20 f2 66 69 74 28 63 6c  25 28 29 29 0d c0 1c 05  | .fit(cl%())....|
0001ec60  cd 0d c0 26 3c 63 6c 25  28 29 3d 63 6c 25 28 29  |...&<cl%()=cl%()|
0001ec70  2b 6e 6c 25 28 29 3a 6e  6c 25 28 29 3d 30 3a 42  |+nl%():nl%()=0:B|
0001ec80  25 3d 78 25 3a 41 25 3d  61 64 64 72 25 3a 61 64  |%=x%:A%=addr%:ad|
0001ec90  64 72 25 2b 3d 72 6f 77  73 74 65 70 25 0d c0 30  |dr%+=rowstep%..0|
0001eca0  0c e7 79 72 25 80 31 20  8c 0d c0 3a 2f d6 66 73  |..yr%.1 ...:/.fs|
0001ecb0  25 2c 63 6f 6c 73 74 65  70 25 2c 63 6c 25 28 31  |%,colstep%,cl%(1|
0001ecc0  2c 30 29 2c 6e 6c 25 28  31 2c 30 29 2c 41 25 2c  |,0),nl%(1,0),A%,|
0001ecd0  73 74 65 70 25 2c 42 25  0d c0 44 05 cc 0d c0 4e  |step%,B%..D....N|
0001ece0  41 41 25 2b 3d 64 69 73  74 25 3a d6 66 73 25 2c  |AA%+=dist%:.fs%,|
0001ecf0  6f 64 64 63 6f 6c 73 74  65 70 25 2c 63 6c 25 28  |oddcolstep%,cl%(|
0001ed00  78 25 2c 30 29 2c 6e 6c  25 28 78 25 2c 30 29 2c  |x%,0),nl%(x%,0),|
0001ed10  41 25 2c 6f 64 64 73 74  65 70 25 2c 42 25 0d c0  |A%,oddstep%,B%..|
0001ed20  58 05 cd 0d c0 62 05 ed  0d c0 6c 05 cd 0d c0 76  |X....b....l....v|
0001ed30  05 cd 0d c0 80 17 63 70  75 74 69 6d 65 25 3d 91  |......cputime%=.|
0001ed40  2d 63 70 75 74 69 6d 65  25 0d c0 8a 09 f2 53 61  |-cputime%.....Sa|
0001ed50  76 65 0d c0 94 06 3d 30  0d c0 9e 12 dd 20 f2 73  |ve....=0..... .s|
0001ed60  72 63 68 64 65 76 6c 69  73 74 0d c0 a8 0a 5b 4f  |rchdevlist....[O|
0001ed70  50 54 20 5a 0d c0 c6 25  43 4d 50 20 52 34 2c 23  |PT Z...%CMP R4,#|
0001ed80  46 3a 4d 4f 56 43 53 20  52 34 2c 23 30 3a 4d 4f  |F:MOVCS R4,#0:MO|
0001ed90  56 47 45 20 52 34 2c 23  46 0d c0 d0 3f 4d 4f 56  |VGE R4,#F...?MOV|
0001eda0  20 52 30 2c 52 34 2c 4c  53 52 20 23 28 62 69 74  | R0,R4,LSR #(bit|
0001edb0  73 2d 6b 25 29 3a 43 4d  50 20 52 30 2c 23 31 3c  |s-k%):CMP R0,#1<|
0001edc0  3c 6b 25 3a 4d 4f 56 43  53 20 52 30 2c 23 28 31  |<k%:MOVCS R0,#(1|
0001edd0  3c 3c 6b 25 29 2d 31 20  0d c0 da 25 43 4d 50 20  |<<k%)-1 ...%CMP |
0001ede0  52 35 2c 23 46 3a 4d 4f  56 43 53 20 52 35 2c 23  |R5,#F:MOVCS R5,#|
0001edf0  30 3a 4d 4f 56 47 45 20  52 35 2c 23 46 0d c0 e4  |0:MOVGE R5,#F...|
0001ee00  53 4d 4f 56 20 52 33 2c  52 35 2c 4c 53 52 20 23  |SMOV R3,R5,LSR #|
0001ee10  28 62 69 74 73 2d 6b 25  29 3a 43 4d 50 20 52 33  |(bits-k%):CMP R3|
0001ee20  2c 23 31 3c 3c 6b 25 3a  4d 4f 56 43 53 20 52 33  |,#1<<k%:MOVCS R3|
0001ee30  2c 23 28 31 3c 3c 6b 25  29 2d 31 3a 84 52 20 52  |,#(1<<k%)-1:.R R|
0001ee40  30 2c 52 30 2c 52 33 2c  4c 53 4c 20 23 6b 25 20  |0,R0,R3,LSL #k% |
0001ee50  0d c0 ee 25 43 4d 50 20  52 36 2c 23 46 3a 4d 4f  |...%CMP R6,#F:MO|
0001ee60  56 43 53 20 52 36 2c 23  30 3a 4d 4f 56 47 45 20  |VCS R6,#0:MOVGE |
0001ee70  52 36 2c 23 46 0d c0 f8  55 4d 4f 56 20 52 33 2c  |R6,#F...UMOV R3,|
0001ee80  52 36 2c 4c 53 52 20 23  28 62 69 74 73 2d 6b 25  |R6,LSR #(bits-k%|
0001ee90  29 3a 43 4d 50 20 52 33  2c 23 31 3c 3c 6b 25 3a  |):CMP R3,#1<<k%:|
0001eea0  4d 4f 56 43 53 20 52 33  2c 23 28 31 3c 3c 6b 25  |MOVCS R3,#(1<<k%|
0001eeb0  29 2d 31 3a 84 52 20 52  30 2c 52 30 2c 52 33 2c  |)-1:.R R0,R0,R3,|
0001eec0  4c 53 4c 20 23 6b 25 2a  32 20 0d c1 16 1e 53 54  |LSL #k%*2 ....ST|
0001eed0  4d 46 44 20 53 50 20 21  2c 7b 52 38 2c 52 39 2c  |MFD SP !,{R8,R9,|
0001eee0  52 31 30 2c 52 31 31 7d  0d c1 20 11 4c 44 52 20  |R10,R11}.. .LDR |
0001eef0  72 33 2c 69 63 74 6c 6f  63 0d c1 2a 19 4c 44 52  |r3,ictloc..*.LDR|
0001ef00  20 72 32 2c 5b 72 33 2c  72 30 2c 4c 53 4c 20 23  | r2,[r3,r0,LSL #|
0001ef10  32 5d 0d c1 3e 17 4d 4f  56 20 72 31 34 2c 72 32  |2]..>.MOV r14,r2|
0001ef20  2c 6c 73 72 20 23 32 34  20 0d c1 48 0e 43 4d 50  |,lsr #24 ..H.CMP|
0001ef30  20 72 31 34 2c 23 34 0d  c1 52 1a 41 44 44 43 43  | r14,#4..R.ADDCC|
0001ef40  20 72 32 2c 72 33 2c 72  30 2c 6c 73 6c 20 23 32  | r2,r3,r0,lsl #2|
0001ef50  20 0d c1 5c 1b 42 49 43  43 53 20 72 32 2c 72 32  | ..\.BICCS r2,r2|
0001ef60  2c 23 26 66 66 30 30 30  30 30 30 20 0d c1 66 14  |,#&ff000000 ..f.|
0001ef70  4c 44 52 42 20 72 30 2c  5b 72 32 5d 2c 23 31 20  |LDRB r0,[r2],#1 |
0001ef80  0d c1 70 13 53 55 42 53  20 72 31 34 2c 72 31 34  |..p.SUBS r14,r14|
0001ef90  2c 23 31 0d c1 7a 0d 42  45 51 20 67 6f 74 69 74  |,#1..z.BEQ gotit|
0001efa0  0d c1 8e 17 41 44 44 20  72 33 2c 72 30 2c 72 30  |....ADD r3,r0,r0|
0001efb0  2c 6c 73 6c 20 23 31 0d  c1 98 17 41 44 44 20 72  |,lsl #1....ADD r|
0001efc0  33 2c 72 37 2c 72 33 2c  6c 73 6c 20 23 32 0d c1  |3,r7,r3,lsl #2..|
0001efd0  a2 18 4c 44 4d 49 41 20  72 33 2c 7b 72 38 2c 72  |..LDMIA r3,{r8,r|
0001efe0  39 2c 72 31 30 7d 0d c1  ac 11 53 55 42 53 20 72  |9,r10}....SUBS r|
0001eff0  38 2c 72 38 2c 72 34 0d  c1 b6 12 52 53 42 4d 49  |8,r8,r4....RSBMI|
0001f000  20 72 38 2c 72 38 2c 23  30 0d c1 c0 1a 4d 4f 56  | r8,r8,#0....MOV|
0001f010  20 72 38 2c 72 38 2c 6c  73 72 20 23 62 69 74 73  | r8,r8,lsr #bits|
0001f020  2f 32 20 0d c1 ca 11 53  55 42 53 20 72 39 2c 72  |/2 ....SUBS r9,r|
0001f030  39 2c 72 35 0d c1 d4 12  52 53 42 4d 49 20 72 39  |9,r5....RSBMI r9|
0001f040  2c 72 39 2c 23 30 0d c1  de 1a 4d 4f 56 20 72 39  |,r9,#0....MOV r9|
0001f050  2c 72 39 2c 6c 73 72 20  23 62 69 74 73 2f 32 20  |,r9,lsr #bits/2 |
0001f060  0d c1 e8 13 53 55 42 53  20 72 31 30 2c 72 31 30  |....SUBS r10,r10|
0001f070  2c 72 36 0d c1 f2 14 52  53 42 4d 49 20 72 31 30  |,r6....RSBMI r10|
0001f080  2c 72 31 30 2c 23 30 0d  c1 fc 1c 4d 4f 56 20 72  |,r10,#0....MOV r|
0001f090  31 30 2c 72 31 30 2c 6c  73 72 20 23 62 69 74 73  |10,r10,lsr #bits|
0001f0a0  2f 32 20 0d c2 06 10 4d  55 4c 20 72 33 2c 72 38  |/2 ....MUL r3,r8|
0001f0b0  2c 72 38 0d c2 10 11 4d  55 4c 20 72 31 31 2c 72  |,r8....MUL r11,r|
0001f0c0  39 2c 72 39 0d c2 1a 1a  41 44 44 20 72 31 31 2c  |9,r9....ADD r11,|
0001f0d0  72 31 31 2c 72 31 31 2c  4c 53 4c 20 23 32 0d c2  |r11,r11,LSL #2..|
0001f0e0  24 17 41 44 44 20 72 33  2c 72 33 2c 72 33 2c 4c  |$.ADD r3,r3,r3,L|
0001f0f0  53 4c 20 23 31 0d c2 2e  18 41 44 44 20 72 33 2c  |SL #1....ADD r3,|
0001f100  72 33 2c 72 31 31 2c 4c  53 4c 20 23 31 0d c2 38  |r3,r11,LSL #1..8|
0001f110  17 4d 4c 41 20 72 31 31  2c 72 31 30 2c 72 31 30  |.MLA r11,r10,r10|
0001f120  2c 72 33 20 0d c2 4c 0d  2e 73 72 63 68 6c 69 73  |,r3 ..L..srchlis|
0001f130  74 0d c2 56 13 4c 44 52  42 20 72 33 2c 5b 72 32  |t..V.LDRB r3,[r2|
0001f140  5d 2c 23 31 0d c2 60 17  41 44 44 20 52 38 2c 52  |],#1..`.ADD R8,R|
0001f150  33 2c 52 33 2c 4c 53 4c  20 23 31 0d c2 6a 17 41  |3,R3,LSL #1..j.A|
0001f160  44 44 20 52 38 2c 52 37  2c 52 38 2c 4c 53 4c 20  |DD R8,R7,R8,LSL |
0001f170  23 32 0d c2 74 18 4c 44  4d 49 41 20 52 38 2c 7b  |#2..t.LDMIA R8,{|
0001f180  52 38 2c 52 39 2c 52 31  30 7d 0d c2 7e 11 53 55  |R8,R9,R10}..~.SU|
0001f190  42 53 20 52 39 2c 52 35  2c 52 39 0d c2 88 12 52  |BS R9,R5,R9....R|
0001f1a0  53 42 4d 49 20 52 39 2c  52 39 2c 23 30 0d c2 92  |SBMI R9,R9,#0...|
0001f1b0  19 4d 4f 56 20 52 33 2c  52 39 2c 4c 53 52 20 23  |.MOV R3,R9,LSR #|
0001f1c0  62 69 74 73 2f 32 0d c2  9c 10 4d 55 4c 20 52 39  |bits/2....MUL R9|
0001f1d0  2c 52 33 2c 52 33 0d c2  a6 17 41 44 44 20 72 39  |,R3,R3....ADD r9|
0001f1e0  2c 72 39 2c 72 39 2c 4c  53 4c 20 23 32 0d c2 b0  |,r9,r9,LSL #2...|
0001f1f0  15 43 4d 50 20 52 31 31  2c 52 39 2c 4c 53 4c 20  |.CMP R11,R9,LSL |
0001f200  23 31 0d c2 ba 11 42 43  43 20 73 72 63 68 71 75  |#1....BCC srchqu|
0001f210  69 63 6b 0d c2 c4 11 53  55 42 53 20 52 38 2c 52  |ick....SUBS R8,R|
0001f220  34 2c 52 38 0d c2 ce 12  52 53 42 4d 49 20 52 38  |4,R8....RSBMI R8|
0001f230  2c 52 38 2c 23 30 0d c2  d8 19 4d 4f 56 20 52 33  |,R8,#0....MOV R3|
0001f240  2c 52 38 2c 4c 53 52 20  23 62 69 74 73 2f 32 0d  |,R8,LSR #bits/2.|
0001f250  c2 e2 10 4d 55 4c 20 52  38 2c 72 33 2c 72 33 0d  |...MUL R8,r3,r3.|
0001f260  c2 ec 17 41 44 44 20 72  38 2c 72 38 2c 72 38 2c  |...ADD r8,r8,r8,|
0001f270  4c 53 4c 20 23 31 0d c2  f6 17 41 44 44 20 72 38  |LSL #1....ADD r8|
0001f280  2c 72 38 2c 72 39 2c 4c  53 4c 20 23 31 0d c3 00  |,r8,r9,LSL #1...|
0001f290  13 53 55 42 53 20 52 31  30 2c 52 36 2c 52 31 30  |.SUBS R10,R6,R10|
0001f2a0  0d c3 0a 14 52 53 42 4d  49 20 52 31 30 2c 52 31  |....RSBMI R10,R1|
0001f2b0  30 2c 23 30 0d c3 14 1a  4d 4f 56 20 52 33 2c 52  |0,#0....MOV R3,R|
0001f2c0  31 30 2c 4c 53 52 20 23  62 69 74 73 2f 32 0d c3  |10,LSR #bits/2..|
0001f2d0  1e 14 4d 4c 41 20 52 31  30 2c 52 33 2c 52 33 2c  |..MLA R10,R3,R3,|
0001f2e0  52 38 0d c3 28 0f 43 4d  50 20 52 31 30 2c 52 31  |R8..(.CMP R10,R1|
0001f2f0  31 0d c3 32 11 4d 4f 56  43 43 20 52 31 31 2c 52  |1..2.MOVCC R11,R|
0001f300  31 30 0d c3 3c 16 4c 44  52 43 43 42 20 52 30 2c  |10..<.LDRCCB R0,|
0001f310  5b 72 32 2c 23 2d 31 5d  0d c3 46 0e 2e 73 72 63  |[r2,#-1]..F..src|
0001f320  68 71 75 69 63 6b 0d c3  50 13 53 55 42 53 20 52  |hquick..P.SUBS R|
0001f330  31 34 2c 52 31 34 2c 23  31 0d c3 5a 10 42 4e 45  |14,R14,#1..Z.BNE|
0001f340  20 73 72 63 68 6c 69 73  74 0d c3 64 0a 2e 67 6f  | srchlist..d..go|
0001f350  74 69 74 0d c3 6e 2b 41  44 44 20 52 33 2c 52 30  |tit..n+ADD R3,R0|
0001f360  2c 52 30 2c 4c 53 4c 20  23 31 3a 41 44 44 20 52  |,R0,LSL #1:ADD R|
0001f370  33 2c 52 37 2c 52 33 2c  4c 53 4c 20 23 32 0d c3  |3,R7,R3,LSL #2..|
0001f380  78 18 4c 44 4d 49 41 20  52 33 2c 7b 52 38 2c 52  |x.LDMIA R3,{R8,R|
0001f390  39 2c 52 31 30 7d 0d c3  82 2b 53 55 42 20 52 34  |9,R10}...+SUB R4|
0001f3a0  2c 52 34 2c 52 38 3a 53  55 42 20 52 35 2c 52 35  |,R4,R8:SUB R5,R5|
0001f3b0  2c 52 39 3a 53 55 42 20  52 36 2c 52 36 2c 52 31  |,R9:SUB R6,R6,R1|
0001f3c0  30 0d c3 8c 1e 4c 44 4d  46 44 20 72 31 33 21 2c  |0....LDMFD r13!,|
0001f3d0  7b 52 38 2c 52 39 2c 52  31 30 2c 52 31 31 7d 0d  |{R8,R9,R10,R11}.|
0001f3e0  c3 96 05 5d 0d c3 a0 05  e1 0d c3 aa 1f dd 20 f2  |...].......... .|
0001f3f0  67 65 74 6f 75 74 70 75  74 28 41 25 2c 45 25 2c  |getoutput(A%,E%,|
0001f400  42 25 2c f8 20 43 25 29  0d c3 b4 25 e7 41 25 3e  |B%,. C%)...%.A%>|
0001f410  6d 61 78 25 20 80 20 72  6f 74 61 74 65 25 3d a3  |max% . rotate%=.|
0001f420  20 80 20 76 66 6c 69 70  25 3d a3 20 8c 0d c3 be  | . vflip%=. ....|
0001f430  31 43 25 3d 6d 61 78 25  81 42 25 2b 31 3a 41 25  |1C%=max%.B%+1:A%|
0001f440  3d 78 77 6f 72 64 73 25  2a 43 25 2b 45 25 3a 66  |=xwords%*C%+E%:f|
0001f450  69 72 73 74 25 3d b9 3a  6f 25 3d ae 66 24 0d c3  |irst%=.:o%=.f$..|
0001f460  c8 05 cc 0d c3 d2 0a 41  25 2b 3d 45 25 0d c3 dc  |.......A%+=E%...|
0001f470  05 cd 0d c3 e6 14 e7 73  70 72 69 74 65 61 72 65  |.......spriteare|
0001f480  61 25 3c 30 20 8c 0d c3  f0 2f 72 61 6d 25 3d a4  |a%<0 ..../ram%=.|
0001f490  63 72 65 61 74 65 61 72  65 61 28 41 25 29 3a e7  |createarea(A%):.|
0001f4a0  72 61 6d 25 3d 2d 31 20  72 61 6d 25 3d a4 64 69  |ram%=-1 ram%=.di|
0001f4b0  6d 28 41 25 29 0d c3 fa  05 cc 0d c4 04 14 72 61  |m(A%).........ra|
0001f4c0  6d 25 3d 73 70 72 69 74  65 61 72 65 61 25 0d c4  |m%=spritearea%..|
0001f4d0  0e 05 cd 0d c4 18 0c 21  72 61 6d 25 3d 41 25 0d  |.......!ram%=A%.|
0001f4e0  c4 22 05 e1 0d c4 36 18  dd 20 a4 63 72 65 61 74  |."....6.. .creat|
0001f4f0  65 61 72 65 61 28 73 69  7a 65 25 29 0d c4 40 07  |earea(size%)..@.|
0001f500  ea 20 85 0d c4 4a 0d ee  20 85 20 ea 3a 3d 2d 31  |. ...J.. . .:=-1|
0001f510  0d c4 54 5f c8 99 20 26  32 30 30 36 36 2c 30 2c  |..T_.. &20066,0,|
0001f520  2d 31 2c 73 69 7a 65 25  2c 2d 31 2c 25 31 30 30  |-1,size%,-1,%100|
0001f530  30 30 30 30 30 2c 73 69  7a 65 25 2c 30 2c 30 2c  |00000,size%,0,0,|
0001f540  22 43 68 61 6e 67 65 46  53 49 20 73 70 72 69 74  |"ChangeFSI sprit|
0001f550  65 22 20 b8 20 2c 61 72  65 61 6e 75 6d 62 65 72  |e" . ,areanumber|
0001f560  25 2c 2c 61 72 65 61 62  61 73 65 25 3b 56 25 0d  |%,,areabase%;V%.|
0001f570  c4 5e 1c e7 56 25 80 31  20 8c 61 72 65 61 6e 75  |.^..V%.1 .areanu|
0001f580  6d 62 65 72 25 3d 30 3a  3d 2d 31 0d c4 9a 34 c8  |mber%=0:=-1...4.|
0001f590  99 20 22 4f 53 5f 52 65  61 64 44 79 6e 61 6d 69  |. "OS_ReadDynami|
0001f5a0  63 41 72 65 61 22 2c 61  72 65 61 6e 75 6d 62 65  |cArea",areanumbe|
0001f5b0  72 25 20 b8 20 2c 61 72  65 61 73 69 7a 65 25 0d  |r% . ,areasize%.|
0001f5c0  c4 a4 3d e7 20 61 72 65  61 73 69 7a 65 25 3c 73  |..=. areasize%<s|
0001f5d0  69 7a 65 25 20 f2 72 65  6d 6f 76 65 61 72 65 61  |ize% .removearea|
0001f5e0  3a 85 20 34 32 2c 22 43  6f 75 6c 64 6e 27 74 20  |:. 42,"Couldn't |
0001f5f0  63 72 65 61 74 65 20 61  72 65 61 22 0d c4 ae 0e  |create area"....|
0001f600  3d 61 72 65 61 62 61 73  65 25 0d c4 c2 11 dd 20  |=areabase%..... |
0001f610  f2 72 65 6d 6f 76 65 61  72 65 61 0d c4 cc 40 e7  |.removearea...@.|
0001f620  61 72 65 61 6e 75 6d 62  65 72 25 20 c8 99 20 22  |areanumber% .. "|
0001f630  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 22 2c  |OS_DynamicArea",|
0001f640  31 2c 61 72 65 61 6e 75  6d 62 65 72 25 3a 61 72  |1,areanumber%:ar|
0001f650  65 61 6e 75 6d 62 65 72  25 3d 30 0d c4 d6 05 e1  |eanumber%=0.....|
0001f660  0d c4 ea 16 dd 20 a4 63  61 63 68 65 64 69 6d 28  |..... .cachedim(|
0001f670  73 69 7a 65 25 29 0d c4  f4 07 ea 20 85 0d c4 fe  |size%)..... ....|
0001f680  19 ee 20 85 20 ea 3a ef  34 2c 33 30 3a f1 f6 24  |.. . .:.4,30:..$|
0001f690  3a ef 35 3d 2d 31 0d c5  08 68 c8 99 20 26 32 30  |:.5=-1...h.. &20|
0001f6a0  30 36 36 2c 30 2c 2d 31  2c 73 69 7a 65 25 2c 2d  |066,0,-1,size%,-|
0001f6b0  31 2c 25 31 30 30 30 30  30 30 30 2c 73 69 7a 65  |1,%10000000,size|
0001f6c0  25 2c 30 2c 30 2c 22 43  68 61 6e 67 65 46 53 49  |%,0,0,"ChangeFSI|
0001f6d0  20 63 61 63 68 65 22 20  b8 20 2c 63 61 63 68 65  | cache" . ,cache|
0001f6e0  61 72 65 61 6e 75 6d 62  65 72 25 2c 2c 63 61 63  |areanumber%,,cac|
0001f6f0  68 65 61 72 65 61 62 61  73 65 25 3b 56 25 0d c5  |heareabase%;V%..|
0001f700  12 21 e7 56 25 80 31 20  8c 63 61 63 68 65 61 72  |.!.V%.1 .cachear|
0001f710  65 61 6e 75 6d 62 65 72  25 3d 30 3a 3d 2d 31 0d  |eanumber%=0:=-1.|
0001f720  c5 1c 3e c8 99 20 22 4f  53 5f 52 65 61 64 44 79  |..>.. "OS_ReadDy|
0001f730  6e 61 6d 69 63 41 72 65  61 22 2c 63 61 63 68 65  |namicArea",cache|
0001f740  61 72 65 61 6e 75 6d 62  65 72 25 20 b8 20 2c 63  |areanumber% . ,c|
0001f750  61 63 68 65 61 72 65 61  73 69 7a 65 25 0d c5 26  |acheareasize%..&|
0001f760  47 e7 20 63 61 63 68 65  61 72 65 61 73 69 7a 65  |G. cacheareasize|
0001f770  25 3c 73 69 7a 65 25 20  f2 72 65 6d 6f 76 65 63  |%<size% .removec|
0001f780  61 63 68 65 61 72 65 61  3a 85 20 34 32 2c 22 43  |achearea:. 42,"C|
0001f790  6f 75 6c 64 6e 27 74 20  63 72 65 61 74 65 20 61  |ouldn't create a|
0001f7a0  72 65 61 22 0d c5 30 13  3d 63 61 63 68 65 61 72  |rea"..0.=cachear|
0001f7b0  65 61 62 61 73 65 25 0d  c5 44 16 dd 20 f2 72 65  |eabase%..D.. .re|
0001f7c0  6d 6f 76 65 63 61 63 68  65 61 72 65 61 0d c5 4e  |movecachearea..N|
0001f7d0  4f e7 63 61 63 68 65 61  72 65 61 6e 75 6d 62 65  |O.cacheareanumbe|
0001f7e0  72 25 20 c8 99 20 22 4f  53 5f 44 79 6e 61 6d 69  |r% .. "OS_Dynami|
0001f7f0  63 41 72 65 61 22 2c 31  2c 63 61 63 68 65 61 72  |cArea",1,cachear|
0001f800  65 61 6e 75 6d 62 65 72  25 3a 63 61 63 68 65 61  |eanumber%:cachea|
0001f810  72 65 61 6e 75 6d 62 65  72 25 3d 30 0d c5 58 05  |reanumber%=0..X.|
0001f820  e1 0d c5 6c 12 dd 20 f2  66 6c 75 73 68 6f 75 74  |...l.. .flushout|
0001f830  70 75 74 0d c5 76 1d e7  73 70 72 69 74 65 61 72  |put..v..spritear|
0001f840  65 61 25 3c 30 20 80 6f  6b 73 61 76 65 25 20 8c  |ea%<0 .oksave% .|
0001f850  0d c5 80 27 41 25 3d 62  61 73 65 25 3a e7 66 69  |...'A%=base%:.fi|
0001f860  72 73 74 25 20 41 25 3d  72 61 6d 25 2b 34 3a 66  |rst% A%=ram%+4:f|
0001f870  69 72 73 74 25 3d a3 0d  c5 8a 1f c8 99 31 32 2c  |irst%=.......12,|
0001f880  32 2c 6f 25 2c 41 25 2c  61 64 64 72 25 81 73 69  |2,o%,A%,addr%.si|
0001f890  7a 65 25 2d 41 25 0d c5  94 05 cd 0d c5 9e 15 61  |ze%-A%.........a|
0001f8a0  64 64 72 25 3d 62 61 73  65 25 2a 73 69 7a 65 25  |ddr%=base%*size%|
0001f8b0  0d c5 a8 05 e1 0d c5 b2  0c dd 20 f2 63 6c 6f 73  |.......... .clos|
0001f8c0  65 0d c5 bc 2c e7 63 25  20 e7 66 6c 61 67 3d 33  |e...,.c% .flag=3|
0001f8d0  36 30 30 20 c8 99 22 50  68 6f 74 6f 43 44 5f 43  |600 .."PhotoCD_C|
0001f8e0  6c 6f 73 65 22 2c 70 63  64 68 25 2c 31 0d c5 c6  |lose",pcdh%,1...|
0001f8f0  3b e7 63 25 20 d9 23 63  25 3a 63 25 3d 30 3a e7  |;.c% .#c%:c%=0:.|
0001f900  73 63 72 61 70 66 25 20  73 63 72 61 70 66 25 3d  |scrapf% scrapf%=|
0001f910  a3 3a ff 22 52 65 6d 6f  76 65 20 3c 57 69 6d 70  |.:."Remove <Wimp|
0001f920  24 53 63 72 61 70 3e 22  0d c5 d0 14 e7 63 63 25  |$Scrap>".....cc%|
0001f930  20 d9 23 63 63 25 3a 63  63 25 3d 30 0d c5 da 17  | .#cc%:cc%=0....|
0001f940  e7 63 63 63 25 20 d9 23  63 63 63 25 3a 63 63 63  |.ccc% .#ccc%:ccc|
0001f950  25 3d 30 0d c5 e4 14 f2  72 65 6d 6f 76 65 63 61  |%=0.....removeca|
0001f960  63 68 65 61 72 65 61 0d  c5 ee 05 e1 0d c5 f8 0b  |chearea.........|
0001f970  dd 20 f2 53 61 76 65 0d  c6 02 0a f2 63 6c 6f 73  |. .Save.....clos|
0001f980  65 0d c6 0c 0a c8 8e 20  6d 20 ca 0d c6 16 22 c9  |e...... m ....".|
0001f990  20 2d 31 3a e7 73 70 72  69 74 65 61 72 65 61 25  | -1:.spritearea%|
0001f9a0  3c 30 20 80 6f 6b 73 61  76 65 25 20 8c 0d c6 20  |<0 .oksave% ... |
0001f9b0  3b e7 6f 25 20 f2 66 6c  75 73 68 6f 75 74 70 75  |;.o% .flushoutpu|
0001f9c0  74 20 8b c8 99 22 4f 53  5f 46 69 6c 65 22 2c 31  |t ..."OS_File",1|
0001f9d0  30 2c 66 24 2c 26 30 30  34 2c 2c 72 61 6d 25 2c  |0,f$,&004,,ram%,|
0001f9e0  72 61 6d 25 2b 73 7a 25  0d c6 2a 05 cd 0d c6 34  |ram%+sz%..*....4|
0001f9f0  19 c9 20 2d 32 3a 6f 25  3d ae 66 24 3a d5 23 6f  |.. -2:o%=.f$:.#o|
0001fa00  25 2c 70 6e 6d 24 0d c6  3e 0d c8 8e 20 70 6e 6d  |%,pnm$..>... pnm|
0001fa10  24 20 ca 0d c6 48 0a c9  20 22 50 31 22 0d c6 52  |$ ...H.. "P1"..R|
0001fa20  2c d5 23 6f 25 2c 22 23  20 22 2b 66 24 2b 22 2e  |,.#o%,"# "+f$+".|
0001fa30  70 62 6d 20 28 6f 70 74  69 6f 6e 73 20 22 2b 6f  |pbm (options "+o|
0001fa40  6e 61 6d 65 24 2b 22 29  22 0d c6 5c 18 d5 23 6f  |name$+")"..\..#o|
0001fa50  25 2c c3 78 73 70 25 2b  22 20 22 2b c3 79 73 70  |%,.xsp%+" "+.ysp|
0001fa60  25 0d c6 66 24 e3 59 25  3d 30 b8 79 73 70 25 2d  |%..f$.Y%=0.ysp%-|
0001fa70  31 3a 42 25 3d 62 61 73  65 25 2b 59 25 2a 78 77  |1:B%=base%+Y%*xw|
0001fa80  6f 72 64 73 25 0d c6 70  3d e3 58 25 3d 30 b8 78  |ords%..p=.X%=0.x|
0001fa90  73 70 25 2d 31 3a e7 42  25 3f 28 58 25 3e 3e 33  |sp%-1:.B%?(X%>>3|
0001faa0  29 80 28 31 3c 3c 28 58  25 80 37 29 29 20 d5 23  |).(1<<(X%.7)) .#|
0001fab0  6f 25 2c 22 31 22 3b 20  8b d5 23 6f 25 2c 22 30  |o%,"1"; ..#o%,"0|
0001fac0  22 3b 0d c6 7a 05 ed 0d  c6 84 0b d5 23 6f 25 2c  |";..z.......#o%,|
0001fad0  22 22 0d c6 8e 05 ed 0d  c6 98 0a c9 20 22 50 34  |"".......... "P4|
0001fae0  22 0d c6 a2 3b d5 23 6f  25 2c 22 23 20 22 2b 66  |"...;.#o%,"# "+f|
0001faf0  24 2b 22 2e 70 62 6d 20  28 6f 70 74 69 6f 6e 73  |$+".pbm (options|
0001fb00  20 22 2b 6f 6e 61 6d 65  24 2b 22 29 20 62 69 6e  | "+oname$+") bin|
0001fb10  61 72 79 20 65 6e 63 6f  64 65 64 22 0d c6 ac 18  |ary encoded"....|
0001fb20  d5 23 6f 25 2c c3 78 73  70 25 2b 22 20 22 2b c3  |.#o%,.xsp%+" "+.|
0001fb30  79 73 70 25 0d c6 b6 66  e3 58 25 3d 30 b8 32 35  |ysp%...f.X%=0.25|
0001fb40  35 3a 63 6f 64 65 25 3f  58 25 3d 58 25 3c 3c 37  |5:code%?X%=X%<<7|
0001fb50  20 84 20 58 25 3c 3c 35  80 26 34 30 20 84 20 58  | . X%<<5.&40 . X|
0001fb60  25 3c 3c 33 80 26 32 30  20 84 20 58 25 3c 3c 31  |%<<3.&20 . X%<<1|
0001fb70  80 26 31 30 20 84 20 58  25 3e 3e 31 80 38 20 84  |.&10 . X%>>1.8 .|
0001fb80  20 58 25 3e 3e 33 80 34  20 84 58 25 3e 3e 35 80  | X%>>3.4 .X%>>5.|
0001fb90  32 20 84 58 25 3e 3e 37  3a ed 0d c6 c0 24 e3 59  |2 .X%>>7:....$.Y|
0001fba0  25 3d 30 b8 79 73 70 25  2d 31 3a 42 25 3d 62 61  |%=0.ysp%-1:B%=ba|
0001fbb0  73 65 25 2b 59 25 2a 78  77 6f 72 64 73 25 0d c6  |se%+Y%*xwords%..|
0001fbc0  ca 2c e3 58 25 3d 30 b8  78 73 70 25 2d 31 88 38  |.,.X%=0.xsp%-1.8|
0001fbd0  3a d5 23 6f 25 2c 63 6f  64 65 25 3f 28 42 25 3f  |:.#o%,code%?(B%?|
0001fbe0  28 58 25 3e 3e 33 29 29  3a ed 0d c6 d4 05 ed 0d  |(X%>>3)):.......|
0001fbf0  c6 de 0a c9 20 22 50 32  22 0d c6 e8 2c d5 23 6f  |.... "P2"...,.#o|
0001fc00  25 2c 22 23 20 22 2b 66  24 2b 22 2e 70 67 6d 20  |%,"# "+f$+".pgm |
0001fc10  28 6f 70 74 69 6f 6e 73  20 22 2b 6f 6e 61 6d 65  |(options "+oname|
0001fc20  24 2b 22 29 22 0d c6 f2  18 d5 23 6f 25 2c c3 78  |$+")".....#o%,.x|
0001fc30  73 70 25 2b 22 20 22 2b  c3 79 73 70 25 0d c6 fc  |sp%+" "+.ysp%...|
0001fc40  0d d5 23 6f 25 2c 22 31  35 22 0d c7 06 24 e3 59  |..#o%,"15"...$.Y|
0001fc50  25 3d 30 b8 79 73 70 25  2d 31 3a 42 25 3d 62 61  |%=0.ysp%-1:B%=ba|
0001fc60  73 65 25 2b 59 25 2a 78  77 6f 72 64 73 25 0d c7  |se%+Y%*xwords%..|
0001fc70  10 37 e3 58 25 3d 30 b8  78 73 70 25 2d 31 3a 43  |.7.X%=0.xsp%-1:C|
0001fc80  25 3d 42 25 3f 28 58 25  3e 3e 31 29 3a e7 58 25  |%=B%?(X%>>1):.X%|
0001fc90  80 31 20 43 25 3d 43 25  3e 3e 34 20 8b 43 25 3d  |.1 C%=C%>>4 .C%=|
0001fca0  43 25 80 31 35 0d c7 1a  11 d5 23 6f 25 2c 22 20  |C%.15.....#o%," |
0001fcb0  22 2b c3 43 25 3b 0d c7  24 05 ed 0d c7 2e 0b d5  |"+.C%;..$.......|
0001fcc0  23 6f 25 2c 22 22 0d c7  38 05 ed 0d c7 42 0a c9  |#o%,""..8....B..|
0001fcd0  20 22 50 35 22 0d c7 4c  3b d5 23 6f 25 2c 22 23  | "P5"..L;.#o%,"#|
0001fce0  20 22 2b 66 24 2b 22 2e  70 67 6d 20 28 6f 70 74  | "+f$+".pgm (opt|
0001fcf0  69 6f 6e 73 20 22 2b 6f  6e 61 6d 65 24 2b 22 29  |ions "+oname$+")|
0001fd00  20 62 69 6e 61 72 79 20  65 6e 63 6f 64 65 64 22  | binary encoded"|
0001fd10  0d c7 56 18 d5 23 6f 25  2c c3 78 73 70 25 2b 22  |..V..#o%,.xsp%+"|
0001fd20  20 22 2b c3 79 73 70 25  0d c7 60 0d d5 23 6f 25  | "+.ysp%..`..#o%|
0001fd30  2c 22 31 35 22 0d c7 6a  24 e3 59 25 3d 30 b8 79  |,"15"..j$.Y%=0.y|
0001fd40  73 70 25 2d 31 3a 42 25  3d 62 61 73 65 25 2b 59  |sp%-1:B%=base%+Y|
0001fd50  25 2a 78 77 6f 72 64 73  25 0d c7 74 37 e3 58 25  |%*xwords%..t7.X%|
0001fd60  3d 30 b8 78 73 70 25 2d  31 3a 43 25 3d 42 25 3f  |=0.xsp%-1:C%=B%?|
0001fd70  28 58 25 3e 3e 31 29 3a  e7 58 25 80 31 20 43 25  |(X%>>1):.X%.1 C%|
0001fd80  3d 43 25 3e 3e 34 20 8b  43 25 3d 43 25 80 31 35  |=C%>>4 .C%=C%.15|
0001fd90  0d c7 7e 0b d5 23 6f 25  2c 43 25 0d c7 88 05 ed  |..~..#o%,C%.....|
0001fda0  0d c7 92 05 ed 0d c7 9c  05 cb 0d c7 a6 0d d9 23  |...............#|
0001fdb0  6f 25 3a 6f 25 3d 30 0d  c7 b0 2f e7 70 6e 6d 24  |o%:o%=0.../.pnm$|
0001fdc0  3d 22 50 32 22 84 70 6e  6d 24 3d 22 50 31 22 20  |="P2".pnm$="P1" |
0001fdd0  ff 22 53 65 74 74 79 70  65 20 22 2b 66 24 2b 22  |."Settype "+f$+"|
0001fde0  20 26 46 46 46 22 0d c7  ba 19 c9 20 2d 33 3a 6f  | &FFF"..... -3:o|
0001fdf0  25 3d ae 66 24 3a d5 23  6f 25 2c 70 6e 6d 24 0d  |%=.f$:.#o%,pnm$.|
0001fe00  c7 c4 4f d5 23 6f 25 2c  22 23 20 22 2b 66 24 2b  |..O.#o%,"# "+f$+|
0001fe10  22 2e 70 63 6d 20 28 6f  70 74 69 6f 6e 73 20 22  |".pcm (options "|
0001fe20  2b 6f 6e 61 6d 65 24 2b  22 29 20 62 69 6e 61 72  |+oname$+") binar|
0001fe30  79 20 65 6e 63 6f 64 65  64 20 31 35 62 70 70 20  |y encoded 15bpp |
0001fe40  28 35 62 69 74 73 20 72  2c 67 2c 62 29 22 0d c7  |(5bits r,g,b)"..|
0001fe50  ce 18 d5 23 6f 25 2c c3  78 73 70 25 2b 22 20 22  |...#o%,.xsp%+" "|
0001fe60  2b c3 79 73 70 25 0d c7  d8 0d d5 23 6f 25 2c 22  |+.ysp%.....#o%,"|
0001fe70  33 31 22 0d c7 e2 1e c8  99 31 32 2c 32 2c 6f 25  |31"......12,2,o%|
0001fe80  2c 72 61 6d 25 2c 78 73  70 25 2a 79 73 70 25 2a  |,ram%,xsp%*ysp%*|
0001fe90  32 0d c7 ec 0d d9 23 6f  25 3a 6f 25 3d 30 0d c7  |2.....#o%:o%=0..|
0001fea0  f6 1e c9 20 2d 34 3a 6f  25 3d ae 66 24 3a e7 70  |... -4:o%=.f$:.p|
0001feb0  6e 6d 24 3d 22 49 52 4c  41 4d 22 8c 0d c8 00 25  |nm$="IRLAM"....%|
0001fec0  d5 23 6f 25 2c 22 49 72  6c 61 6d 20 32 34 3a 20  |.#o%,"Irlam 24: |
0001fed0  22 2b c3 78 73 70 25 2b  22 20 22 2b c3 79 73 70  |"+.xsp%+" "+.ysp|
0001fee0  25 0d c8 0a 23 e3 59 25  3d 30 b8 79 73 70 25 2d  |%...#.Y%=0.ysp%-|
0001fef0  31 3a 42 25 3d 72 61 6d  25 2b 59 25 2a 78 77 6f  |1:B%=ram%+Y%*xwo|
0001ff00  72 64 73 25 0d c8 14 21  e3 58 25 3d 30 b8 78 73  |rds%...!.X%=0.xs|
0001ff10  70 25 2a 33 2d 31 88 33  3a d5 23 6f 25 2c 42 25  |p%*3-1.3:.#o%,B%|
0001ff20  3f 58 25 3a ed 0d c8 1e  27 42 25 2b 3d 31 3a e3  |?X%:....'B%+=1:.|
0001ff30  58 25 3d 30 b8 78 73 70  25 2a 33 2d 31 88 33 3a  |X%=0.xsp%*3-1.3:|
0001ff40  d5 23 6f 25 2c 42 25 3f  58 25 3a ed 0d c8 28 27  |.#o%,B%?X%:...('|
0001ff50  42 25 2b 3d 31 3a e3 58  25 3d 30 b8 78 73 70 25  |B%+=1:.X%=0.xsp%|
0001ff60  2a 33 2d 31 88 33 3a d5  23 6f 25 2c 42 25 3f 58  |*3-1.3:.#o%,B%?X|
0001ff70  25 3a ed 0d c8 32 05 ed  0d c8 3c 05 cc 0d c8 46  |%:...2....<....F|
0001ff80  0d d5 23 6f 25 2c 70 6e  6d 24 0d c8 50 10 e7 70  |..#o%,pnm$..P..p|
0001ff90  6e 6d 24 3d 22 50 36 22  20 8c 0d c8 5a 47 d5 23  |nm$="P6" ...ZG.#|
0001ffa0  6f 25 2c 22 23 20 22 2b  66 24 2b 22 2e 70 70 6d  |o%,"# "+f$+".ppm|
0001ffb0  20 28 6f 70 74 69 6f 6e  73 20 22 2b 6f 6e 61 6d  | (options "+onam|
0001ffc0  65 24 2b 22 29 20 62 69  6e 61 72 79 20 65 6e 63  |e$+") binary enc|
0001ffd0  6f 64 65 64 20 32 34 62  70 70 20 72 2c 67 2c 62  |oded 24bpp r,g,b|
0001ffe0  22 0d c8 64 05 cc 0d c8  6e 45 d5 23 6f 25 2c 22  |"..d....nE.#o%,"|
0001fff0  23 20 22 2b 66 24 2b 22  2e 70 70 6d 20 28 6f 70  |# "+f$+".ppm (op|
00020000  74 69 6f 6e 73 20 22 2b  6f 6e 61 6d 65 24 2b 22  |tions "+oname$+"|
00020010  29 20 22 2b c3 28 70 36  62 69 74 73 2a 33 29 2b  |) "+.(p6bits*3)+|
00020020  22 62 70 70 20 72 2c 67  2c 62 22 0d c8 78 05 cd  |"bpp r,g,b"..x..|
00020030  0d c8 82 18 d5 23 6f 25  2c c3 78 73 70 25 2b 22  |.....#o%,.xsp%+"|
00020040  20 22 2b c3 79 73 70 25  0d c8 8c 16 d5 23 6f 25  | "+.ysp%.....#o%|
00020050  2c c3 28 32 5e 70 36 62  69 74 73 2d 31 29 0d c8  |,.(2^p6bits-1)..|
00020060  96 10 e7 70 6e 6d 24 3d  22 50 36 22 20 8c 0d c8  |...pnm$="P6" ...|
00020070  a0 1e c8 99 31 32 2c 32  2c 6f 25 2c 72 61 6d 25  |....12,2,o%,ram%|
00020080  2c 78 73 70 25 2a 79 73  70 25 2a 33 0d c8 aa 05  |,xsp%*ysp%*3....|
00020090  cc 0d c8 b4 23 e3 59 25  3d 30 b8 79 73 70 25 2d  |....#.Y%=0.ysp%-|
000200a0  31 3a 42 25 3d 72 61 6d  25 2b 59 25 2a 78 77 6f  |1:B%=ram%+Y%*xwo|
000200b0  72 64 73 25 0d c8 be 58  e3 58 25 3d 30 b8 78 73  |rds%...X.X%=0.xs|
000200c0  70 25 2d 31 3a 43 25 3d  42 25 21 28 58 25 2a 33  |p%-1:C%=B%!(X%*3|
000200d0  29 3a d5 23 6f 25 2c 22  20 22 2b c3 28 43 25 80  |):.#o%," "+.(C%.|
000200e0  32 35 35 29 2b 22 20 22  2b c3 28 28 43 25 3e 3e  |255)+" "+.((C%>>|
000200f0  38 29 80 26 46 46 29 2b  22 20 22 2b c3 28 28 43  |8).&FF)+" "+.((C|
00020100  25 3e 3e 31 36 29 80 32  35 35 29 3b 0d c8 c8 05  |%>>16).255);....|
00020110  ed 0d c8 d2 0b d5 23 6f  25 2c 22 22 0d c8 dc 05  |......#o%,""....|
00020120  ed 0d c8 e6 05 cd 0d c8  f0 05 cd 0d c8 fa 0d d9  |................|
00020130  23 6f 25 3a 6f 25 3d 30  0d c9 04 25 e7 70 6e 6d  |#o%:o%=0...%.pnm|
00020140  24 3d 22 50 33 22 20 ff  22 53 65 74 74 79 70 65  |$="P3" ."Settype|
00020150  20 22 2b 66 24 2b 22 20  26 46 46 46 22 0d c9 0e  | "+f$+" &FFF"...|
00020160  19 c9 20 2d 35 3a 6f 25  3d ae 66 24 3a d5 23 6f  |.. -5:o%=.f$:.#o|
00020170  25 2c 70 6e 6d 24 0d c9  18 4f d5 23 6f 25 2c 22  |%,pnm$...O.#o%,"|
00020180  23 20 22 2b 66 24 2b 22  2e 70 63 6d 20 28 6f 70  |# "+f$+".pcm (op|
00020190  74 69 6f 6e 73 20 22 2b  6f 6e 61 6d 65 24 2b 22  |tions "+oname$+"|
000201a0  29 20 62 69 6e 61 72 79  20 65 6e 63 6f 64 65 64  |) binary encoded|
000201b0  20 31 35 62 70 70 20 28  35 62 69 74 73 20 79 2c  | 15bpp (5bits y,|
000201c0  75 2c 76 29 22 0d c9 22  18 d5 23 6f 25 2c c3 78  |u,v)".."..#o%,.x|
000201d0  73 70 25 2b 22 20 22 2b  c3 79 73 70 25 0d c9 2c  |sp%+" "+.ysp%..,|
000201e0  13 d5 23 6f 25 2c 22 33  31 20 32 37 20 32 31 22  |..#o%,"31 27 21"|
000201f0  0d c9 36 1e c8 99 31 32  2c 32 2c 6f 25 2c 72 61  |..6...12,2,o%,ra|
00020200  6d 25 2c 78 73 70 25 2a  79 73 70 25 2a 32 0d c9  |m%,xsp%*ysp%*2..|
00020210  40 0d d9 23 6f 25 3a 6f  25 3d 30 0d c9 4a 05 7f  |@..#o%:o%=0..J..|
00020220  0d c9 54 14 e7 6e 63 6f  6c 3d 31 80 6d 24 3d 22  |..T..ncol=1.m$="|
00020230  54 22 20 8c 0d c9 5e 1d  e3 58 25 3d 28 78 73 70  |T" ...^..X%=(xsp|
00020240  25 2a 34 2d 31 29 81 38  2a 38 2b 36 b8 36 88 2d  |%*4-1).8*8+6.6.-|
00020250  38 0d c9 68 1d c8 99 26  32 65 2c 26 31 32 65 2c  |8..h...&2e,&12e,|
00020260  72 61 6d 25 2c 6f 6e 61  6d 65 24 2c 58 25 0d c9  |ram%,oname$,X%..|
00020270  72 1d c8 99 26 32 65 2c  26 31 32 65 2c 72 61 6d  |r...&2e,&12e,ram|
00020280  25 2c 6f 6e 61 6d 65 24  2c 58 25 0d c9 7c 05 ed  |%,oname$,X%..|..|
00020290  0d c9 86 05 cd 0d c9 90  1d e7 73 70 72 69 74 65  |..........sprite|
000202a0  61 72 65 61 25 3c 30 20  80 6f 6b 73 61 76 65 25  |area%<0 .oksave%|
000202b0  20 8c 0d c9 9a 28 e7 6f  25 20 f2 66 6c 75 73 68  | ....(.o% .flush|
000202c0  6f 75 74 70 75 74 20 8b  c8 99 26 32 65 2c 26 31  |output ...&2e,&1|
000202d0  30 63 2c 72 61 6d 25 2c  66 24 0d c9 a4 05 cd 0d  |0c,ram%,f$......|
000202e0  c9 ae 05 cb 0d c9 b8 34  e7 6f 25 20 d9 23 6f 25  |.......4.o% .#o%|
000202f0  3a 6f 25 3d 30 3a ff 22  73 65 74 74 79 70 65 20  |:o%=0:."settype |
00020300  22 2b 66 24 2b 22 20 26  66 66 39 22 3a f2 72 65  |"+f$+" &ff9":.re|
00020310  6d 6f 76 65 61 72 65 61  0d c9 c2 15 c8 99 22 48  |movearea......"H|
00020320  6f 75 72 67 6c 61 73 73  5f 4f 66 66 22 0d c9 cc  |ourglass_Off"...|
00020330  05 e1 0d c9 d6 0c dd f2  64 65 66 70 61 6c 0d c9  |........defpal..|
00020340  e0 0d e3 43 25 3d 30 b8  32 35 35 0d c9 ea 23 72  |...C%=0.255...#r|
00020350  25 28 43 25 29 3d 28 43  25 80 37 20 84 20 28 43  |%(C%)=(C%.7 . (C|
00020360  25 80 31 36 29 3e 3e 31  29 2f 31 35 2a 46 0d c9  |%.16)>>1)/15*F..|
00020370  f4 24 67 25 28 43 25 29  3d 28 43 25 80 33 20 84  |.$g%(C%)=(C%.3 .|
00020380  20 28 43 25 80 26 36 30  29 3e 3e 33 29 2f 31 35  | (C%.&60)>>3)/15|
00020390  2a 46 0d c9 fe 30 62 25  28 43 25 29 3d 28 43 25  |*F...0b%(C%)=(C%|
000203a0  80 33 20 84 20 28 43 25  80 38 29 3e 3e 31 20 84  |.3 . (C%.8)>>1 .|
000203b0  20 28 43 25 80 31 32 38  29 3e 3e 34 29 2f 31 35  | (C%.128)>>4)/15|
000203c0  2a 46 0d ca 08 05 ed 0d  ca 12 05 e1 0d ca 1c 0d  |*F..............|
000203d0  dd f2 64 65 66 70 61 6c  32 0d ca 26 1b 72 25 28  |..defpal2..&.r%(|
000203e0  30 29 3d 46 3a 67 25 28  30 29 3d 46 3a 62 25 28  |0)=F:g%(0)=F:b%(|
000203f0  30 29 3d 46 0d ca 30 05  e1 0d ca 3a 0d dd f2 64  |0)=F..0....:...d|
00020400  65 66 70 61 6c 34 0d ca  44 2f 72 25 28 29 3d 31  |efpal4..D/r%()=1|
00020410  35 2c 31 30 2c 35 2c 30  3a e3 43 25 3d 30 b8 33  |5,10,5,0:.C%=0.3|
00020420  3a 72 25 28 43 25 29 3d  72 25 28 43 25 29 2f 31  |:r%(C%)=r%(C%)/1|
00020430  35 2a 46 3a ed 0d ca 4e  17 67 25 28 29 3d 72 25  |5*F:...N.g%()=r%|
00020440  28 29 3a 62 25 28 29 3d  72 25 28 29 0d ca 58 05  |():b%()=r%()..X.|
00020450  e1 0d ca 62 0e dd f2 64  65 66 70 61 6c 31 36 0d  |...b...defpal16.|
00020460  ca 6c 31 72 25 28 29 3d  31 35 2c 31 33 2c 31 31  |.l1r%()=15,13,11|
00020470  2c 39 2c 37 2c 35 2c 33  2c 30 2c 30 2c 31 34 2c  |,9,7,5,3,0,0,14,|
00020480  20 30 2c 31 33 2c 31 34  2c 35 2c 31 35 2c 20 30  | 0,13,14,5,15, 0|
00020490  0d ca 76 31 67 25 28 29  3d 31 35 2c 31 33 2c 31  |..v1g%()=15,13,1|
000204a0  31 2c 39 2c 37 2c 35 2c  33 2c 30 2c 34 2c 31 34  |1,9,7,5,3,0,4,14|
000204b0  2c 31 32 2c 20 30 2c 31  34 2c 38 2c 31 31 2c 31  |,12, 0,14,8,11,1|
000204c0  30 0d ca 80 31 62 25 28  29 3d 31 35 2c 31 33 2c  |0...1b%()=15,13,|
000204d0  31 31 2c 39 2c 37 2c 35  2c 33 2c 30 2c 39 2c 20  |11,9,7,5,3,0,9, |
000204e0  30 2c 20 30 2c 20 30 2c  31 31 2c 30 2c 20 30 2c  |0, 0, 0,11,0, 0,|
000204f0  31 35 0d ca 8a 47 e3 43  25 3d 30 b8 31 35 3a 72  |15...G.C%=0.15:r|
00020500  25 28 43 25 29 3d 72 25  28 43 25 29 2f 31 35 2a  |%(C%)=r%(C%)/15*|
00020510  46 3a 67 25 28 43 25 29  3d 67 25 28 43 25 29 2f  |F:g%(C%)=g%(C%)/|
00020520  31 35 2a 46 3a 62 25 28  43 25 29 3d 62 25 28 43  |15*F:b%(C%)=b%(C|
00020530  25 29 2f 31 35 2a 46 3a  ed 0d ca 94 05 e1 0d ca  |%)/15*F:........|
00020540  9e 0c dd f2 69 70 61 6c  36 33 0d ca a8 2c cf 23  |....ipal63...,.#|
00020550  63 25 3d 26 33 38 3a de  20 72 70 61 6c 25 28 31  |c%=&38:. rpal%(1|
00020560  35 29 2c 67 70 61 6c 25  28 31 35 29 2c 62 70 61  |5),gpal%(15),bpa|
00020570  6c 25 28 31 35 29 0d ca  b2 14 e3 43 25 3d 30 b8  |l%(15).....C%=0.|
00020580  31 35 3a 44 25 3d 9a 23  63 25 0d ca bc 19 72 70  |15:D%=.#c%....rp|
00020590  61 6c 25 28 43 25 29 3d  9a 23 63 25 3e 3e 34 20  |al%(C%)=.#c%>>4 |
000205a0  80 20 37 0d ca c6 19 67  70 61 6c 25 28 43 25 29  |. 7....gpal%(C%)|
000205b0  3d 9a 23 63 25 3e 3e 34  20 80 20 33 0d ca d0 19  |=.#c%>>4 . 3....|
000205c0  62 70 61 6c 25 28 43 25  29 3d 9a 23 63 25 3e 3e  |bpal%(C%)=.#c%>>|
000205d0  34 20 80 20 37 0d ca da  0b 44 25 3d a4 57 3a ed  |4 . 7....D%=.W:.|
000205e0  0d ca e4 0d e3 43 25 3d  30 b8 32 35 35 0d ca ee  |.....C%=0.255...|
000205f0  29 72 25 28 43 25 29 3d  28 72 70 61 6c 25 28 43  |)r%(C%)=(rpal%(C|
00020600  25 80 31 35 29 84 28 43  25 80 31 36 29 3e 3e 31  |%.15).(C%.16)>>1|
00020610  29 2f 31 35 2a 46 0d ca  f8 2a 67 25 28 43 25 29  |)/15*F...*g%(C%)|
00020620  3d 28 67 70 61 6c 25 28  43 25 80 31 35 29 84 28  |=(gpal%(C%.15).(|
00020630  43 25 80 26 36 30 29 3e  3e 33 29 2f 31 35 2a 46  |C%.&60)>>3)/15*F|
00020640  0d cb 02 2a 62 25 28 43  25 29 3d 28 62 70 61 6c  |...*b%(C%)=(bpal|
00020650  25 28 43 25 80 31 35 29  84 28 43 25 80 31 32 38  |%(C%.15).(C%.128|
00020660  29 3e 3e 34 29 2f 31 35  2a 46 0d cb 0c 05 ed 0d  |)>>4)/15*F......|
00020670  cb 16 05 e1 0d cb 20 0e  dd f2 69 70 61 6c 28 44  |...... ...ipal(D|
00020680  25 29 0d cb 2a 0c cf 23  63 25 3d 26 33 38 0d cb  |%)..*..#c%=&38..|
00020690  34 16 e3 43 25 3d 30 b8  44 25 2d 31 3a 44 25 3d  |4..C%=0.D%-1:D%=|
000206a0  9a 23 63 25 0d cb 3e 19  72 25 28 43 25 29 3d 28  |.#c%..>.r%(C%)=(|
000206b0  9a 23 63 25 3e 3e 34 29  2f 31 35 2a 46 0d cb 48  |.#c%>>4)/15*F..H|
000206c0  19 67 25 28 43 25 29 3d  28 9a 23 63 25 3e 3e 34  |.g%(C%)=(.#c%>>4|
000206d0  29 2f 31 35 2a 46 0d cb  52 19 62 25 28 43 25 29  |)/15*F..R.b%(C%)|
000206e0  3d 28 9a 23 63 25 3e 3e  34 29 2f 31 35 2a 46 0d  |=(.#c%>>4)/15*F.|
000206f0  cb 5c 0b 44 25 3d a4 57  3a ed 0d cb 66 05 e1 0d  |.\.D%=.W:...f...|
00020700  cb 70 13 dd 20 f2 6e 65  77 72 6f 70 61 6c 28 44  |.p.. .newropal(D|
00020710  25 29 0d cb 7a 0c cf 23  63 25 3d 26 33 38 0d cb  |%)..z..#c%=&38..|
00020720  84 14 e3 43 25 3d 30 b8  44 25 2d 31 3a 44 25 3d  |...C%=0.D%-1:D%=|
00020730  a4 57 0d cb 8e 19 72 25  28 43 25 29 3d 28 44 25  |.W....r%(C%)=(D%|
00020740  80 32 35 35 29 2f 32 35  35 2a 46 0d cb 98 1c 67  |.255)/255*F....g|
00020750  25 28 43 25 29 3d 28 44  25 3e 3e 38 80 32 35 35  |%(C%)=(D%>>8.255|
00020760  29 2f 32 35 35 2a 46 0d  cb a2 1d 62 25 28 43 25  |)/255*F....b%(C%|
00020770  29 3d 28 44 25 3e 3e 31  36 80 32 35 35 29 2f 32  |)=(D%>>16.255)/2|
00020780  35 35 2a 46 0d cb ac 0b  44 25 3d a4 57 3a ed 0d  |55*F....D%=.W:..|
00020790  cb b6 05 e1 0d cb c0 0c  dd 20 f2 6e 6f 70 61 6c  |......... .nopal|
000207a0  0d cb ca 33 e3 43 25 3d  30 b8 32 35 35 3a 72 25  |...3.C%=0.255:r%|
000207b0  28 43 25 29 3d 43 25 2f  32 35 35 2a 46 3a ed 3a  |(C%)=C%/255*F:.:|
000207c0  67 25 28 29 3d 72 25 28  29 3a 62 25 28 29 3d 72  |g%()=r%():b%()=r|
000207d0  25 28 29 0d cb d4 05 e1  0d cb de 11 dd 20 f2 63  |%().......... .c|
000207e0  6f 6c 28 41 25 2c 42 25  29 0d cb e8 36 42 25 3d  |ol(A%,B%)...6B%=|
000207f0  42 25 3c 3c 38 84 42 25  3c 3c 34 84 26 31 30 3a  |B%<<8.B%<<4.&10:|
00020800  70 61 6c 25 21 28 41 25  2a 38 29 3d 42 25 3a 70  |pal%!(A%*8)=B%:p|
00020810  61 6c 25 21 28 41 25 2a  38 2b 34 29 3d 42 25 0d  |al%!(A%*8+4)=B%.|
00020820  cb f2 05 e1 0d cb fc 0f  dd 20 a4 62 69 74 73 28  |......... .bits(|
00020830  41 25 29 0d cc 06 35 e7  41 25 3d 31 20 8c 3d 22  |A%)...5.A%=1 .="|
00020840  31 20 62 69 74 20 70 65  72 20 70 69 78 65 6c 22  |1 bit per pixel"|
00020850  20 8b 3d c3 41 25 2b 22  20 62 69 74 73 20 70 65  | .=.A%+" bits pe|
00020860  72 20 70 69 78 65 6c 22  0d cc 10 0b dd 20 a4 66  |r pixel"..... .f|
00020870  69 74 73 0d cc 1a 0a ea  5a 25 2c 73 24 0d cc 24  |its.....Z%,s$..$|
00020880  18 e3 5a 25 3d 31 b8 38  30 3a 73 24 2b 3d bd 9a  |..Z%=1.80:s$+=..|
00020890  23 63 25 3a ed 0d cc 2e  07 3d 73 24 0d cc 38 0d  |#c%:.....=s$..8.|
000208a0  dd 20 a4 75 63 28 61 24  29 0d cc 42 0d ea 5a 25  |. .uc(a$)..B..Z%|
000208b0  2c 7a 24 2c 62 24 0d cc  4c 0d e3 5a 25 3d 31 b8  |,z$,b$..L..Z%=1.|
000208c0  a9 61 24 0d cc 56 10 7a  24 3d c1 61 24 2c 5a 25  |.a$..V.z$=.a$,Z%|
000208d0  2c 31 29 0d cc 60 21 e7  7a 24 3e 3d 22 61 22 e7  |,1)..`!.z$>="a".|
000208e0  7a 24 3c 3d 22 7a 22 20  7a 24 3d bd 28 97 7a 24  |z$<="z" z$=.(.z$|
000208f0  2d 33 32 29 0d cc 6a 0c  62 24 2b 3d 7a 24 3a ed  |-32)..j.b$+=z$:.|
00020900  0d cc 74 07 3d 62 24 0d  cc 7e 0e dd 20 a4 64 69  |..t.=b$..~.. .di|
00020910  6d 28 41 25 29 0d cc 88  08 ea 20 42 25 0d cc 92  |m(A%)..... B%...|
00020920  0c e7 66 6c 65 78 25 20  8c 0d cc 9c 31 42 25 3d  |..flex% ....1B%=|
00020930  6e 65 78 74 6c 6f 63 61  74 69 6f 6e 25 3a 41 25  |nextlocation%:A%|
00020940  3d 41 25 2b 33 80 ac 33  3a 6e 65 78 74 6c 6f 63  |=A%+3..3:nextloc|
00020950  61 74 69 6f 6e 25 2b 3d  41 25 0d cc a6 2a c8 99  |ation%+=A%...*..|
00020960  22 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 22 2c  |"Wimp_SlotSize",|
00020970  2d 31 2c 2d 31 20 b8 20  63 75 72 72 65 6e 74 73  |-1,-1 . currents|
00020980  6c 6f 74 25 0d cc b0 27  e7 63 75 72 72 65 6e 74  |lot%...'.current|
00020990  73 6c 6f 74 25 2b 26 38  30 30 30 3c 6e 65 78 74  |slot%+&8000<next|
000209a0  6c 6f 63 61 74 69 6f 6e  25 20 8c 0d cc ba 3c c8  |location% ....<.|
000209b0  99 20 22 57 69 6d 70 5f  53 6c 6f 74 53 69 7a 65  |. "Wimp_SlotSize|
000209c0  22 2c 6e 65 78 74 6c 6f  63 61 74 69 6f 6e 25 2d  |",nextlocation%-|
000209d0  26 38 30 30 30 2c 2d 31  20 b8 20 63 75 72 72 65  |&8000,-1 . curre|
000209e0  6e 74 73 6c 6f 74 25 0d  cc c4 55 e7 63 75 72 72  |ntslot%...U.curr|
000209f0  65 6e 74 73 6c 6f 74 25  2b 26 38 30 30 30 3c 6e  |entslot%+&8000<n|
00020a00  65 78 74 6c 6f 63 61 74  69 6f 6e 25 20 85 20 34  |extlocation% . 4|
00020a10  32 2c 22 43 61 6e 27 74  20 67 65 74 20 65 6e 6f  |2,"Can't get eno|
00020a20  75 67 68 20 6d 65 6d 6f  72 79 20 74 6f 20 70 72  |ugh memory to pr|
00020a30  6f 63 65 73 73 20 69 6d  61 67 65 22 0d cc ce 05  |ocess image"....|
00020a40  cd 0d cc d8 05 cc 0d cc  e2 13 e7 77 6f 72 6b 73  |...........works|
00020a50  70 61 63 65 25 3c 30 20  8c 0d cc ec 0b de 20 42  |pace%<0 ...... B|
00020a60  25 20 41 25 0d cc f6 05  cc 0d cd 00 57 42 25 3d  |% A%........WB%=|
00020a70  77 6f 72 6b 73 70 61 63  65 25 3a 77 6f 72 6b 73  |workspace%:works|
00020a80  70 61 63 65 25 2b 3d 41  25 2b 33 80 ac 33 3a e7  |pace%+=A%+3..3:.|
00020a90  77 6f 72 6b 73 70 61 63  65 25 3e 77 6f 72 6b 6c  |workspace%>workl|
00020aa0  69 6d 69 74 25 20 85 34  32 2c 22 4e 6f 74 20 65  |imit% .42,"Not e|
00020ab0  6e 6f 75 67 68 20 77 6f  72 6b 73 70 61 63 65 22  |nough workspace"|
00020ac0  0d cd 0a 05 cd 0d cd 14  05 cd 0d cd 1e 07 3d 42  |..............=B|
00020ad0  25 0d cd 32 10 dd 20 a4  57 3d a4 57 31 28 63 25  |%..2.. .W=.W1(c%|
00020ae0  29 0d cd 3c 32 dd 20 a4  57 31 28 63 25 29 3d 9a  |)..<2. .W1(c%)=.|
00020af0  23 63 25 20 84 20 9a 23  63 25 3c 3c 38 20 84 20  |#c% . .#c%<<8 . |
00020b00  9a 23 63 25 3c 3c 31 36  20 84 20 9a 23 63 25 3c  |.#c%<<16 . .#c%<|
00020b10  3c 32 34 0d cd 50 18 dd  20 a4 48 57 3d 9a 23 63  |<24..P.. .HW=.#c|
00020b20  25 20 84 20 9a 23 63 25  3c 3c 38 0d cd 64 1a dd  |% . .#c%<<8..d..|
00020b30  20 a4 62 65 48 57 3d 9a  23 63 25 3c 3c 38 20 84  | .beHW=.#c%<<8 .|
00020b40  20 9a 23 63 25 0d cd 78  2f dd 20 a4 62 65 57 3d  | .#c%..x/. .beW=|
00020b50  9a 23 63 25 3c 3c 32 34  20 84 20 9a 23 63 25 3c  |.#c%<<24 . .#c%<|
00020b60  3c 31 36 20 84 20 9a 23  63 25 3c 3c 38 20 84 20  |<16 . .#c%<<8 . |
00020b70  9a 23 63 25 0d cd 8c 0f  dd 20 a4 74 69 66 66 28  |.#c%..... .tiff(|
00020b80  54 25 29 0d cd 96 0b c8  8e 20 54 25 20 ca 0d cd  |T%)...... T% ...|
00020b90  a0 0f c9 20 31 2c 37 3a  3d 9a 23 63 25 0d cd aa  |... 1,7:=.#c%...|
00020ba0  2a c9 20 32 3a ea 73 24  2c 74 24 3a f5 73 24 2b  |*. 2:.s$,t$:.s$+|
00020bb0  3d 74 24 3a 74 24 3d bd  9a 23 63 25 3a fd 74 24  |=t$:t$=..#c%:.t$|
00020bc0  3d bd 30 3a 3d 73 24 0d  cd b4 34 c9 20 33 3a e7  |=.0:=s$...4. 3:.|
00020bd0  62 69 67 65 6e 64 69 61  6e 20 8c 3d 9a 23 63 25  |bigendian .=.#c%|
00020be0  3c 3c 38 20 84 20 9a 23  63 25 20 8b 3d 9a 23 63  |<<8 . .#c% .=.#c|
00020bf0  25 20 84 20 9a 23 63 25  3c 3c 38 0d cd be 25 c9  |% . .#c%<<8...%.|
00020c00  20 34 2c 39 3a e7 62 69  67 65 6e 64 69 61 6e 20  | 4,9:.bigendian |
00020c10  8c 3d a4 62 65 57 20 8b  3d a4 57 31 28 63 25 29  |.=.beW .=.W1(c%)|
00020c20  0d cd c8 17 c9 20 36 3a  3d 28 9a 23 63 25 3c 3c  |..... 6:=(.#c%<<|
00020c30  32 34 29 3e 3e 32 34 0d  cd d2 1b c9 20 38 3a 3d  |24)>>24..... 8:=|
00020c40  28 a4 74 69 66 66 28 33  29 3c 3c 31 36 29 3e 3e  |(.tiff(3)<<16)>>|
00020c50  31 36 0d cd dc 05 cb 0d  cd e6 1e 85 20 34 32 2c  |16.......... 42,|
00020c60  22 53 69 6c 6c 79 20 54  49 46 46 20 74 61 67 3a  |"Silly TIFF tag:|
00020c70  22 2b c3 54 25 0d cd f0  10 dd 20 f2 6e 65 78 74  |"+.T%..... .next|
00020c80  73 74 72 69 70 0d cd fa  18 72 6f 77 73 74 6f 67  |strip....rowstog|
00020c90  6f 25 3d 73 74 72 69 70  72 6f 77 73 25 0d ce 04  |o%=striprows%...|
00020ca0  22 73 74 72 69 70 70 74  72 2b 3d 31 3a cf 23 63  |"stripptr+=1:.#c|
00020cb0  25 3d 73 74 25 28 73 74  72 69 70 70 74 72 29 0d  |%=st%(stripptr).|
00020cc0  ce 0e 14 e7 63 6f 6d 70  72 65 73 73 69 6f 6e 3d  |....compression=|
00020cd0  35 20 8c 0d ce 18 46 21  66 69 72 73 74 63 6f 64  |5 ....F!firstcod|
00020ce0  65 3d 30 3a 21 6f 6c 64  63 6f 64 65 3d 30 3a 21  |e=0:!oldcode=0:!|
00020cf0  63 6f 64 65 73 69 7a 65  3d 73 65 74 63 6f 64 65  |codesize=setcode|
00020d00  73 25 2b 31 3a 21 73 74  61 63 6b 3d 73 74 6b 25  |s%+1:!stack=stk%|
00020d10  3a 21 73 70 3d 73 74 6b  25 0d ce 22 48 21 6d 61  |:!sp=stk%.."H!ma|
00020d20  78 63 6f 64 65 3d 63 6c  65 61 72 63 6f 64 65 25  |xcode=clearcode%|
00020d30  2b 32 3a 21 6d 61 78 63  6f 64 65 73 69 7a 65 3d  |+2:!maxcodesize=|
00020d40  32 2a 63 6c 65 61 72 63  6f 64 65 25 3a 21 63 75  |2*clearcode%:!cu|
00020d50  72 62 69 74 3d 30 3a 21  6c 61 73 74 62 69 74 3d  |rbit=0:!lastbit=|
00020d60  30 0d ce 2c 05 cd 0d ce  36 28 e7 63 6f 6d 70 72  |0..,....6(.compr|
00020d70  65 73 73 69 6f 6e 3d 35  20 84 20 63 6f 6d 70 72  |ession=5 . compr|
00020d80  65 73 73 69 6f 6e 3d 33  32 37 37 33 20 8c 0d ce  |ession=32773 ...|
00020d90  40 2e 21 69 6e 63 61 63  68 65 70 74 72 3d 64 61  |@.!incacheptr=da|
00020da0  74 61 63 61 63 68 65 25  3a 21 6e 75 6d 6c 65 66  |tacache%:!numlef|
00020db0  74 74 6f 67 6f 3d 63 61  63 68 65 25 0d ce 4a 1f  |ttogo=cache%..J.|
00020dc0  c8 99 31 32 2c 34 2c 63  25 2c 64 61 74 61 63 61  |..12,4,c%,dataca|
00020dd0  63 68 65 25 2c 63 61 63  68 65 25 0d ce 54 05 cd  |che%,cache%..T..|
00020de0  0d ce 5e 05 e1 0d ce 68  28 dd 20 f2 77 61 74 66  |..^....h(. .watf|
00020df0  6f 72 64 28 77 74 73 78  25 2c f8 20 72 65 70 25  |ord(wtsx%,. rep%|
00020e00  2c f8 20 77 74 25 2c 58  25 2c 63 25 29 0d ce 72  |,. wt%,X%,c%)..r|
00020e10  20 d6 72 6c 65 78 70 61  6e 64 25 2c 77 74 73 78  | .rlexpand%,wtsx|
00020e20  25 2c 72 65 70 25 2c 77  74 25 2c 58 25 0d ce 7c  |%,rep%,wt%,X%..||
00020e30  18 f5 20 43 25 3d 9a 23  63 25 3a c8 8e 20 43 25  |.. C%=.#c%:.. C%|
00020e40  3e 3e 36 20 ca 0d ce 86  1b c9 20 30 3a 3f 58 25  |>>6 ...... 0:?X%|
00020e50  3d 43 25 3a 58 25 2b 3d  31 3a 77 74 25 3d 43 25  |=C%:X%+=1:wt%=C%|
00020e60  0d ce 90 36 c9 20 31 3a  77 74 25 2d 3d 31 3a 72  |...6. 1:wt%-=1:r|
00020e70  65 70 25 3d 43 25 80 36  33 3a d6 72 6c 65 78 70  |ep%=C%.63:.rlexp|
00020e80  61 6e 64 25 2c 77 74 73  78 25 2c 72 65 70 25 2c  |and%,wtsx%,rep%,|
00020e90  77 74 25 2c 58 25 0d ce  9a 2f c9 20 32 3a 72 65  |wt%,X%.../. 2:re|
00020ea0  70 25 3d 43 25 80 36 33  3a d6 72 6c 65 78 70 61  |p%=C%.63:.rlexpa|
00020eb0  6e 64 25 2c 77 74 73 78  25 2c 72 65 70 25 2c 77  |nd%,wtsx%,rep%,w|
00020ec0  74 25 2c 58 25 0d ce a4  36 c9 20 33 3a 77 74 25  |t%,X%...6. 3:wt%|
00020ed0  2b 3d 31 3a 72 65 70 25  3d 43 25 80 36 33 3a d6  |+=1:rep%=C%.63:.|
00020ee0  72 6c 65 78 70 61 6e 64  25 2c 77 74 73 78 25 2c  |rlexpand%,wtsx%,|
00020ef0  72 65 70 25 2c 77 74 25  2c 58 25 0d ce ae 05 cb  |rep%,wt%,X%.....|
00020f00  0d ce b8 0d fd 58 25 3d  77 74 73 78 25 0d ce c2  |.....X%=wtsx%...|
00020f10  05 e1 0d ce cc 2a dd 20  f2 77 61 74 66 6f 72 64  |.....*. .watford|
00020f20  63 61 63 68 65 28 77 74  73 78 25 2c f8 20 72 65  |cache(wtsx%,. re|
00020f30  70 25 2c f8 20 77 74 25  2c 58 25 29 0d ce d6 20  |p%,. wt%,X%)... |
00020f40  d6 72 6c 65 78 70 61 6e  64 25 2c 77 74 73 78 25  |.rlexpand%,wtsx%|
00020f50  2c 72 65 70 25 2c 77 74  25 2c 58 25 0d ce e0 23  |,rep%,wt%,X%...#|
00020f60  f5 20 43 25 3d ba 62 79  74 65 66 72 6f 6d 63 61  |. C%=.bytefromca|
00020f70  63 68 65 25 3a c8 8e 20  43 25 3e 3e 36 20 ca 0d  |che%:.. C%>>6 ..|
00020f80  ce ea 1b c9 20 30 3a 3f  58 25 3d 43 25 3a 58 25  |.... 0:?X%=C%:X%|
00020f90  2b 3d 31 3a 77 74 25 3d  43 25 0d ce f4 36 c9 20  |+=1:wt%=C%...6. |
00020fa0  31 3a 77 74 25 2d 3d 31  3a 72 65 70 25 3d 43 25  |1:wt%-=1:rep%=C%|
00020fb0  80 36 33 3a d6 72 6c 65  78 70 61 6e 64 25 2c 77  |.63:.rlexpand%,w|
00020fc0  74 73 78 25 2c 72 65 70  25 2c 77 74 25 2c 58 25  |tsx%,rep%,wt%,X%|
00020fd0  0d ce fe 2f c9 20 32 3a  72 65 70 25 3d 43 25 80  |.../. 2:rep%=C%.|
00020fe0  36 33 3a d6 72 6c 65 78  70 61 6e 64 25 2c 77 74  |63:.rlexpand%,wt|
00020ff0  73 78 25 2c 72 65 70 25  2c 77 74 25 2c 58 25 0d  |sx%,rep%,wt%,X%.|
00021000  cf 08 36 c9 20 33 3a 77  74 25 2b 3d 31 3a 72 65  |..6. 3:wt%+=1:re|
00021010  70 25 3d 43 25 80 36 33  3a d6 72 6c 65 78 70 61  |p%=C%.63:.rlexpa|
00021020  6e 64 25 2c 77 74 73 78  25 2c 72 65 70 25 2c 77  |nd%,wtsx%,rep%,w|
00021030  74 25 2c 58 25 0d cf 12  05 cb 0d cf 1c 0d fd 58  |t%,X%..........X|
00021040  25 3d 77 74 73 78 25 0d  cf 26 05 e1 0d cf 30 18  |%=wtsx%..&....0.|
00021050  dd 20 f2 72 65 64 75 63  65 28 f8 20 41 25 2c f8  |. .reduce(. A%,.|
00021060  20 42 25 29 0d cf 3a 17  ea 20 43 25 2c 44 25 3a  | B%)..:.. C%,D%:|
00021070  43 25 3d 41 25 3a 44 25  3d 42 25 0d cf 44 15 f5  |C%=A%:D%=B%..D..|
00021080  20 e7 43 25 3c 44 25 20  c8 94 20 43 25 2c 44 25  | .C%<D% .. C%,D%|
00021090  0d cf 4e 0c 43 25 3d 43  25 83 44 25 0d cf 58 09  |..N.C%=C%.D%..X.|
000210a0  fd 43 25 3d 30 0d cf 62  15 41 25 3d 41 25 81 44  |.C%=0..b.A%=A%.D|
000210b0  25 3a 42 25 3d 42 25 81  44 25 0d cf 6c 05 e1 0d  |%:B%=B%.D%..l...|
000210c0  cf 76 19 dd 20 f2 72 65  61 64 70 69 78 65 6c 72  |.v.. .readpixelr|
000210d0  6f 77 28 7a 25 28 29 29  0d cf 80 0c e7 72 6f 77  |ow(z%()).....row|
000210e0  73 25 20 8c 0d cf 8a 16  72 6f 77 73 25 2d 3d 31  |s% .....rows%-=1|
000210f0  3a e7 73 78 25 3d 78 25  20 8c 0d cf 94 15 57 25  |:.sx%=x% .....W%|
00021100  3d a0 28 72 24 2b 22 28  7a 25 28 29 29 22 29 0d  |=.(r$+"(z%())").|
00021110  cf 9e 05 cc 0d cf a8 40  57 25 3d a0 28 72 24 2b  |.......@W%=.(r$+|
00021120  22 28 78 70 25 28 29 29  22 29 3a d6 78 73 61 6d  |"(xp%())"):.xsam|
00021130  70 6c 65 25 2c 78 6d 75  6c 25 2c 78 64 69 76 25  |ple%,xmul%,xdiv%|
00021140  2c 7a 25 28 31 2c 30 29  2c 78 70 25 28 31 2c 30  |,z%(1,0),xp%(1,0|
00021150  29 2c 78 25 0d cf b2 05  cd 0d cf bc 05 cc 0d cf  |),x%............|
00021160  c6 0a 7a 25 28 29 3d 30  0d cf d0 05 cd 0d cf da  |..z%()=0........|
00021170  05 e1 0d cf e4 1a dd 20  f2 73 68 61 72 70 70 69  |....... .sharppi|
00021180  78 65 6c 72 6f 77 28 7a  25 28 29 29 0d cf ee 0c  |xelrow(z%())....|
00021190  e7 72 6f 77 73 25 20 8c  0d cf f8 16 72 6f 77 73  |.rows% .....rows|
000211a0  25 2d 3d 31 3a e7 73 78  25 3d 78 25 20 8c 0d d0  |%-=1:.sx%=x% ...|
000211b0  02 41 e7 73 68 61 72 70  65 6e 25 20 f2 73 68 61  |.A.sharpen% .sha|
000211c0  72 70 28 7a 25 28 29 29  20 8b 57 25 3d a0 28 72  |rp(z%()) .W%=.(r|
000211d0  24 2b 22 28 7a 25 28 29  29 22 29 3a e7 65 71 75  |$+"(z%())"):.equ|
000211e0  61 6c 25 20 f2 66 69 74  32 28 7a 25 28 29 29 0d  |al% .fit2(z%()).|
000211f0  d0 0c 05 cc 0d d0 16 44  e7 73 68 61 72 70 65 6e  |.......D.sharpen|
00021200  25 20 f2 73 68 61 72 70  28 78 70 25 28 29 29 20  |% .sharp(xp%()) |
00021210  8b 57 25 3d a0 28 72 24  2b 22 28 78 70 25 28 29  |.W%=.(r$+"(xp%()|
00021220  29 22 29 3a e7 65 71 75  61 6c 25 20 f2 66 69 74  |)"):.equal% .fit|
00021230  32 28 78 70 25 28 29 29  0d d0 20 2d d6 78 73 61  |2(xp%()).. -.xsa|
00021240  6d 70 6c 65 25 2c 78 6d  75 6c 25 2c 78 64 69 76  |mple%,xmul%,xdiv|
00021250  25 2c 7a 25 28 31 2c 30  29 2c 78 70 25 28 31 2c  |%,z%(1,0),xp%(1,|
00021260  30 29 2c 78 25 0d d0 2a  05 cd 0d d0 34 05 cc 0d  |0),x%..*....4...|
00021270  d0 3e 0a 7a 25 28 29 3d  30 0d d0 48 05 cd 0d d0  |.>.z%()=0..H....|
00021280  52 05 e1 0d d0 5c 12 dd  20 f2 73 68 61 72 70 28  |R....\.. .sharp(|
00021290  7a 25 28 29 29 0d d0 66  3d 79 72 65 61 64 25 2d  |z%())..f=yread%-|
000212a0  3d 31 3a e7 79 72 65 61  64 25 20 57 25 3d a0 28  |=1:.yread% W%=.(|
000212b0  72 24 2b 22 28 72 6d 25  28 29 29 22 29 3a e7 65  |r$+"(rm%())"):.e|
000212c0  71 75 61 6c 25 20 f2 66  69 74 32 28 72 6d 25 28  |qual% .fit2(rm%(|
000212d0  29 29 0d d0 70 3d e3 42  25 3d 30 b8 63 6f 6c 3a  |))..p=.B%=0.col:|
000212e0  72 6d 25 28 30 2c 42 25  29 3d 72 6d 25 28 31 2c  |rm%(0,B%)=rm%(1,|
000212f0  42 25 29 3a 72 6d 25 28  73 78 25 2b 31 2c 42 25  |B%):rm%(sx%+1,B%|
00021300  29 3d 72 6d 25 28 73 78  25 2c 42 25 29 3a ed 0d  |)=rm%(sx%,B%):..|
00021310  d0 7a 3b d6 20 73 68 61  72 70 25 2c 7a 25 28 31  |.z;. sharp%,z%(1|
00021320  2c 30 29 2c 72 6d 25 28  31 2c 30 29 2c 72 6d 31  |,0),rm%(1,0),rm1|
00021330  25 28 31 2c 30 29 2c 72  6d 32 25 28 31 2c 30 29  |%(1,0),rm2%(1,0)|
00021340  2c 74 6f 74 76 61 6c 73  32 25 0d d0 84 21 c8 94  |,totvals2%...!..|
00021350  20 72 6d 32 25 28 29 2c  72 6d 31 25 28 29 3a 72  | rm2%(),rm1%():r|
00021360  6d 31 25 28 29 3d 72 6d  25 28 29 0d d0 8e 05 e1  |m1%()=rm%().....|
00021370  0d d0 98 1b dd 20 f2 73  63 61 6c 65 64 70 69 78  |..... .scaledpix|
00021380  65 6c 72 6f 77 28 7a 25  28 29 29 0d d0 a2 0d e7  |elrow(z%()).....|
00021390  73 79 25 3d 79 25 20 8c  0d d0 ac 17 f2 72 65 61  |sy%=y% ......rea|
000213a0  64 70 69 78 65 6c 72 6f  77 28 7a 25 28 29 29 0d  |dpixelrow(z%()).|
000213b0  d0 b6 05 cc 0d d0 c0 39  79 73 61 6d 70 25 2d 3d  |.......9ysamp%-=|
000213c0  31 3a e7 79 73 61 6d 70  25 3d 30 20 f2 72 65 61  |1:.ysamp%=0 .rea|
000213d0  64 70 69 78 65 6c 72 6f  77 28 78 6c 25 28 29 29  |dpixelrow(xl%())|
000213e0  3a 79 73 61 6d 70 25 3d  79 6d 75 6c 25 0d d0 ca  |:ysamp%=ymul%...|
000213f0  0e e7 79 64 69 76 25 3d  31 20 8c 0d d0 d4 0e 7a  |..ydiv%=1 .....z|
00021400  25 28 29 3d 78 6c 25 28  29 0d d0 de 05 cc 0d d0  |%()=xl%().......|
00021410  e8 14 e7 79 73 61 6d 70  25 3e 3d 79 64 69 76 25  |...ysamp%>=ydiv%|
00021420  20 8c 0d d0 f2 22 79 73  61 6d 70 25 2d 3d 79 64  | ...."ysamp%-=yd|
00021430  69 76 25 3a 7a 25 28 29  3d 78 6c 25 28 29 2a 79  |iv%:z%()=xl%()*y|
00021440  64 69 76 25 0d d0 fc 05  cc 0d d1 06 32 ea 59 25  |div%........2.Y%|
00021450  3a 7a 25 28 29 3d 78 6c  25 28 29 2a 79 73 61 6d  |:z%()=xl%()*ysam|
00021460  70 25 3a 59 25 3d 79 64  69 76 25 2d 79 73 61 6d  |p%:Y%=ydiv%-ysam|
00021470  70 25 3a 79 73 61 6d 70  25 3d 30 0d d1 10 05 f5  |p%:ysamp%=0.....|
00021480  0d d1 1a 2f e7 79 73 61  6d 70 25 3d 30 20 f2 72  |.../.ysamp%=0 .r|
00021490  65 61 64 70 69 78 65 6c  72 6f 77 28 78 6c 25 28  |eadpixelrow(xl%(|
000214a0  29 29 3a 79 73 61 6d 70  25 3d 79 6d 75 6c 25 0d  |)):ysamp%=ymul%.|
000214b0  d1 24 10 e7 79 73 61 6d  70 25 3e 59 25 20 8c 0d  |.$..ysamp%>Y% ..|
000214c0  d1 2e 34 79 73 61 6d 70  25 2d 3d 59 25 3a 78 6c  |..4ysamp%-=Y%:xl|
000214d0  32 25 28 29 3d 78 6c 25  28 29 2a 59 25 3a 7a 25  |2%()=xl%()*Y%:z%|
000214e0  28 29 3d 7a 25 28 29 2b  78 6c 32 25 28 29 3a 59  |()=z%()+xl2%():Y|
000214f0  25 3d 30 0d d1 38 05 cc  0d d1 42 3c 59 25 2d 3d  |%=0..8....B<Y%-=|
00021500  79 73 61 6d 70 25 3a 78  6c 32 25 28 29 3d 78 6c  |ysamp%:xl2%()=xl|
00021510  25 28 29 2a 79 73 61 6d  70 25 3a 7a 25 28 29 3d  |%()*ysamp%:z%()=|
00021520  7a 25 28 29 2b 78 6c 32  25 28 29 3a 79 73 61 6d  |z%()+xl2%():ysam|
00021530  70 25 3d 30 0d d1 4c 05  cd 0d d1 56 0a fd 20 59  |p%=0..L....V.. Y|
00021540  25 3d 30 0d d1 60 05 cd  0d d1 6a 0d 79 73 61 6d  |%=0..`....j.ysam|
00021550  70 25 2b 3d 31 0d d1 74  05 cd 0d d1 7e 05 cd 0d  |p%+=1..t....~...|
00021560  d1 88 05 e1 0d d1 92 10  dd 20 f2 66 69 74 28 7a  |......... .fit(z|
00021570  25 28 29 29 0d d1 9c 24  d6 68 69 73 74 65 71 75  |%())...$.histequ|
00021580  61 6c 25 2c 7a 25 28 31  2c 30 29 2c 6e 65 77 25  |al%,z%(1,0),new%|
00021590  28 30 2c 30 29 2c 78 25  0d d1 a6 05 e1 0d d1 b0  |(0,0),x%........|
000215a0  11 dd 20 f2 66 69 74 32  28 7a 25 28 29 29 0d d1  |.. .fit2(z%())..|
000215b0  ba 25 d6 68 69 73 74 65  71 75 61 6c 25 2c 7a 25  |.%.histequal%,z%|
000215c0  28 31 2c 30 29 2c 6e 65  77 25 28 30 2c 30 29 2c  |(1,0),new%(0,0),|
000215d0  73 78 25 0d d1 c4 05 e1  0d d1 ce 1d dd 20 f2 61  |sx%.......... .a|
000215e0  64 6a 75 73 74 70 61 6c  65 74 74 65 28 6d 75 6c  |djustpalette(mul|
000215f0  2c 73 75 62 29 0d d1 d8  14 e7 6d 75 6c 3d 31 20  |,sub).....mul=1 |
00021600  80 20 73 75 62 3d 30 20  e1 0d d1 e2 0d e3 43 25  |. sub=0 ......C%|
00021610  3d 30 b8 32 35 35 0d d1  ec 51 72 25 28 43 25 29  |=0.255...Qr%(C%)|
00021620  3d 28 72 25 28 43 25 29  2d 73 75 62 29 2a 6d 75  |=(r%(C%)-sub)*mu|
00021630  6c 2b 31 3a 67 25 28 43  25 29 3d 28 67 25 28 43  |l+1:g%(C%)=(g%(C|
00021640  25 29 2d 73 75 62 29 2a  6d 75 6c 2b 31 3a 62 25  |%)-sub)*mul+1:b%|
00021650  28 43 25 29 3d 28 62 25  28 43 25 29 2d 73 75 62  |(C%)=(b%(C%)-sub|
00021660  29 2a 6d 75 6c 2b 31 0d  d1 f6 05 ed 0d d2 00 0a  |)*mul+1.........|
00021670  e7 68 61 6d 20 8c 0d d2  0a 32 e3 43 25 3d 30 b8  |.ham ....2.C%=0.|
00021680  31 35 2a 34 88 34 3a 6c  74 61 62 6c 65 21 43 25  |15*4.4:ltable!C%|
00021690  3d 28 6c 74 61 62 6c 65  21 43 25 2d 73 75 62 29  |=(ltable!C%-sub)|
000216a0  2a 6d 75 6c 2b 31 3a ed  0d d2 14 05 cd 0d d2 1e  |*mul+1:.........|
000216b0  10 e7 69 6e 70 75 74 3e  34 30 30 20 8c 0d d2 28  |..input>400 ...(|
000216c0  0d e3 43 25 3d 30 b8 32  35 35 0d d2 32 43 72 70  |..C%=0.255..2Crp|
000216d0  61 6c 25 28 43 25 29 3d  28 72 70 61 6c 25 28 43  |al%(C%)=(rpal%(C|
000216e0  25 29 2d 73 75 62 29 2a  6d 75 6c 2b 31 3a 67 70  |%)-sub)*mul+1:gp|
000216f0  61 6c 25 28 43 25 29 3d  28 67 70 61 6c 25 28 43  |al%(C%)=(gpal%(C|
00021700  25 29 2d 73 75 62 29 2a  6d 75 6c 2b 31 0d d2 3c  |%)-sub)*mul+1..<|
00021710  45 62 70 61 6c 25 28 43  25 29 3d 28 62 70 61 6c  |Ebpal%(C%)=(bpal|
00021720  25 28 43 25 29 2d 73 75  62 29 2a 6d 75 6c 2b 31  |%(C%)-sub)*mul+1|
00021730  3a 74 61 62 6c 65 25 28  43 25 29 3d 28 74 61 62  |:table%(C%)=(tab|
00021740  6c 65 25 28 43 25 29 2d  73 75 62 29 2a 6d 75 6c  |le%(C%)-sub)*mul|
00021750  2b 31 0d d2 46 05 ed 0d  d2 50 05 cd 0d d2 5a 05  |+1..F....P....Z.|
00021760  e1 0d d2 64 14 dd 20 f2  63 61 63 68 65 73 69 7a  |...d.. .cachesiz|
00021770  65 28 41 25 29 0d d2 6e  29 c8 99 26 32 30 30 32  |e(A%)..n)..&2002|
00021780  33 2c 22 43 68 61 6e 67  65 46 53 49 24 43 61 63  |3,"ChangeFSI$Cac|
00021790  68 65 22 2c 41 25 2c 2d  31 20 b8 2c 2c 5a 0d d2  |he",A%,-1 .,,Z..|
000217a0  78 0b e7 5a 3c 3e 30 20  8c 0d d2 82 39 c8 99 33  |x..Z<>0 ....9..3|
000217b0  35 2c 22 43 68 61 6e 67  65 46 53 49 24 43 61 63  |5,"ChangeFSI$Cac|
000217c0  68 65 22 2c 41 25 2c 32  30 20 b8 2c 2c 5a 3a 41  |he",A%,20 .,,Z:A|
000217d0  25 3f 5a 3d 31 33 3a 63  61 63 68 65 25 3d bb 24  |%?Z=13:cache%=.$|
000217e0  41 25 0d d2 8c 2b e7 a7  24 41 25 2c 22 4b 22 29  |A%...+..$A%,"K")|
000217f0  84 a7 24 41 25 2c 22 6b  22 29 20 63 61 63 68 65  |..$A%,"k") cache|
00021800  25 3d 63 61 63 68 65 25  2a 31 30 32 34 0d d2 96  |%=cache%*1024...|
00021810  05 cc 0d d2 a0 13 63 61  63 68 65 25 3d 31 32 38  |......cache%=128|
00021820  2a 31 30 32 34 0d d2 aa  05 cd 0d d2 b4 05 e1 0d  |*1024...........|
00021830  d2 be 0d dd 20 f2 72 65  66 69 6c 6c 0d d2 c8 1c  |.... .refill....|
00021840  e7 73 74 72 69 70 72 6f  77 73 25 3e 30 20 f2 6e  |.striprows%>0 .n|
00021850  65 78 74 73 74 72 69 70  0d d2 d2 45 c8 99 31 32  |extstrip...E..12|
00021860  2c 34 2c 63 25 2c 64 61  74 61 63 61 63 68 65 25  |,4,c%,datacache%|
00021870  2c 63 61 63 68 65 25 3a  72 6f 77 73 74 6f 67 6f  |,cache%:rowstogo|
00021880  25 3d 63 61 63 68 65 72  6f 77 73 25 3a 62 75 66  |%=cacherows%:buf|
00021890  66 25 3d 64 61 74 61 63  61 63 68 65 25 0d d2 dc  |f%=datacache%...|
000218a0  43 e7 69 6e 70 75 74 3d  32 34 20 e7 72 62 6f 25  |C.input=24 .rbo%|
000218b0  3e 3d 30 20 72 62 25 3d  62 75 66 66 25 2b 72 62  |>=0 rb%=buff%+rb|
000218c0  6f 25 3a 67 62 25 3d 62  75 66 66 25 2b 67 62 6f  |o%:gb%=buff%+gbo|
000218d0  25 3a 62 62 25 3d 62 75  66 66 25 2b 62 62 6f 25  |%:bb%=buff%+bbo%|
000218e0  0d d2 e6 05 e1 0d d2 f0  10 dd 20 f2 72 65 66 69  |.......... .refi|
000218f0  6c 6c 70 63 64 0d d2 fa  15 e7 70 63 64 62 6c 6b  |llpcd.....pcdblk|
00021900  25 21 34 3e 3d 73 79 25  20 e1 0d d3 04 23 e7 70  |%!4>=sy% ....#.p|
00021910  63 64 62 6c 6b 25 21 31  32 3e 3d 73 79 25 20 70  |cdblk%!12>=sy% p|
00021920  63 64 62 6c 6b 25 21 31  32 3d 73 79 25 0d d3 18  |cdblk%!12=sy%...|
00021930  56 c8 99 22 50 68 6f 74  6f 43 44 5f 47 65 74 42  |V.."PhotoCD_GetB|
00021940  6c 6f 63 6b 22 2c 70 63  64 68 25 2c 2c 70 63 64  |lock",pcdh%,,pcd|
00021950  62 6c 6b 25 2c 64 61 74  61 63 61 63 68 65 25 2c  |blk%,datacache%,|
00021960  70 63 64 69 6e 64 65 78  25 2c 2c 2c 70 63 64 63  |pcdindex%,,,pcdc|
00021970  61 63 68 65 25 2c 70 63  64 63 61 63 68 65 73 69  |ache%,pcdcachesi|
00021980  7a 65 25 0d d3 22 56 72  6f 77 73 74 6f 67 6f 25  |ze%.."Vrowstogo%|
00021990  3d 63 61 63 68 65 72 6f  77 73 25 3a 62 75 66 66  |=cacherows%:buff|
000219a0  25 3d 64 61 74 61 63 61  63 68 65 25 3a 70 63 64  |%=datacache%:pcd|
000219b0  62 6c 6b 25 21 34 2b 3d  63 61 63 68 65 72 6f 77  |blk%!4+=cacherow|
000219c0  73 25 3a 70 63 64 62 6c  6b 25 21 31 32 2b 3d 63  |s%:pcdblk%!12+=c|
000219d0  61 63 68 65 72 6f 77 73  25 0d d3 2c 30 72 62 25  |acherows%..,0rb%|
000219e0  3d 62 75 66 66 25 2b 72  62 6f 25 3a 67 62 25 3d  |=buff%+rbo%:gb%=|
000219f0  62 75 66 66 25 2b 67 62  6f 25 3a 62 62 25 3d 62  |buff%+gbo%:bb%=b|
00021a00  75 66 66 25 2b 62 62 6f  25 0d d3 36 05 e1 0d d3  |uff%+bbo%..6....|
00021a10  4a 0e dd 20 a4 38 28 7a  25 28 29 29 0d d3 54 3d  |J.. .8(z%())..T=|
00021a20  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
00021a30  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
00021a40  30 29 2c 62 75 66 66 25  3a 62 75 66 66 25 2b 3d  |0),buff%:buff%+=|
00021a50  72 6f 77 62 79 74 65 73  25 0d d3 5e 25 72 6f 77  |rowbytes%..^%row|
00021a60  73 74 6f 67 6f 25 2d 3d  31 3a e7 72 6f 77 73 74  |stogo%-=1:.rowst|
00021a70  6f 67 6f 25 3d 30 20 f2  72 65 66 69 6c 6c 0d d3  |ogo%=0 .refill..|
00021a80  68 06 3d b9 0d d3 7c 0f  dd 20 a4 31 36 28 7a 25  |h.=...|.. .16(z%|
00021a90  28 29 29 0d d3 86 44 d6  6d 61 70 70 69 78 25 2c  |())...D.mappix%,|
00021aa0  7a 25 28 31 2c 30 29 2c  72 70 61 6c 25 28 30 29  |z%(1,0),rpal%(0)|
00021ab0  2c 67 70 61 6c 25 28 30  29 2c 72 25 28 30 29 2c  |,gpal%(0),r%(0),|
00021ac0  67 25 28 30 29 2c 62 25  28 30 29 2c 62 75 66 66  |g%(0),b%(0),buff|
00021ad0  25 2c 62 75 66 66 25 0d  d3 90 36 62 75 66 66 25  |%,buff%...6buff%|
00021ae0  2b 3d 72 6f 77 62 79 74  65 73 25 3a 72 6f 77 73  |+=rowbytes%:rows|
00021af0  74 6f 67 6f 25 2d 3d 31  3a e7 72 6f 77 73 74 6f  |togo%-=1:.rowsto|
00021b00  67 6f 25 3d 30 20 f2 72  65 66 69 6c 6c 0d d3 9a  |go%=0 .refill...|
00021b10  06 3d b9 0d d3 ae 0f dd  20 a4 32 34 28 7a 25 28  |.=...... .24(z%(|
00021b20  29 29 0d d3 b8 32 d6 6d  61 70 70 69 78 25 2c 7a  |))...2.mappix%,z|
00021b30  25 28 31 2c 30 29 2c 72  25 28 30 29 2c 67 25 28  |%(1,0),r%(0),g%(|
00021b40  30 29 2c 62 25 28 30 29  2c 72 62 25 2c 67 62 25  |0),b%(0),rb%,gb%|
00021b50  2c 62 62 25 0d d3 c2 30  72 62 25 2b 3d 72 6f 77  |,bb%...0rb%+=row|
00021b60  62 79 74 65 73 25 3a 67  62 25 2b 3d 72 6f 77 62  |bytes%:gb%+=rowb|
00021b70  79 74 65 73 25 3a 62 62  25 2b 3d 72 6f 77 62 79  |ytes%:bb%+=rowby|
00021b80  74 65 73 25 0d d3 cc 25  72 6f 77 73 74 6f 67 6f  |tes%...%rowstogo|
00021b90  25 2d 3d 31 3a e7 72 6f  77 73 74 6f 67 6f 25 3d  |%-=1:.rowstogo%=|
00021ba0  30 20 f2 72 65 66 69 6c  6c 0d d3 d6 06 3d b9 0d  |0 .refill....=..|
00021bb0  d3 ea 10 dd 20 a4 33 30  30 28 7a 25 28 29 29 0d  |.... .300(z%()).|
00021bc0  d3 f4 5b c8 99 31 32 2c  34 2c 63 63 25 2c 70 62  |..[..12,4,cc%,pb|
00021bd0  75 66 66 25 2c 73 78 25  3a d6 6d 61 70 70 69 78  |uff%,sx%:.mappix|
00021be0  25 2c 7a 25 28 31 2c 30  29 2c 72 70 61 6c 25 28  |%,z%(1,0),rpal%(|
00021bf0  30 29 2c 67 70 61 6c 25  28 30 29 2c 72 25 28 30  |0),gpal%(0),r%(0|
00021c00  29 2c 67 25 28 30 29 2c  62 25 28 30 29 2c 70 62  |),g%(0),b%(0),pb|
00021c10  75 66 66 25 2c 62 75 66  66 25 0d d3 fe 36 62 75  |uff%,buff%...6bu|
00021c20  66 66 25 2b 3d 72 6f 77  62 79 74 65 73 25 3a 72  |ff%+=rowbytes%:r|
00021c30  6f 77 73 74 6f 67 6f 25  2d 3d 31 3a e7 72 6f 77  |owstogo%-=1:.row|
00021c40  73 74 6f 67 6f 25 3d 30  20 f2 72 65 66 69 6c 6c  |stogo%=0 .refill|
00021c50  0d d4 08 06 3d b9 0d d4  1c 10 dd 20 a4 34 30 30  |....=...... .400|
00021c60  28 7a 25 28 29 29 0d d4  26 29 d6 72 65 61 64 6c  |(z%())..&).readl|
00021c70  69 6e 65 25 2c 70 6c 62  79 74 65 73 25 2c 72 65  |ine%,plbytes%,re|
00021c80  70 25 2c 70 69 78 25 2c  70 6c 62 75 66 66 25 0d  |p%,pix%,plbuff%.|
00021c90  d4 30 32 d6 6d 61 70 70  69 78 25 2c 7a 25 28 31  |.02.mappix%,z%(1|
00021ca0  2c 30 29 2c 72 25 28 30  29 2c 67 25 28 30 29 2c  |,0),r%(0),g%(0),|
00021cb0  62 25 28 30 29 2c 72 62  25 2c 67 62 25 2c 62 62  |b%(0),rb%,gb%,bb|
00021cc0  25 0d d4 3a 06 3d b9 0d  d4 4e 10 dd 20 a4 35 30  |%..:.=...N.. .50|
00021cd0  30 28 7a 25 28 29 29 0d  d4 58 29 d6 20 4c 5a 57  |0(z%())..X). LZW|
00021ce0  64 65 63 6f 64 65 25 2c  74 61 62 6c 65 25 28 30  |decode%,table%(0|
00021cf0  29 2c 63 25 2c 70 6c 62  75 66 66 25 2c 73 78 25  |),c%,plbuff%,sx%|
00021d00  0d d4 62 2e d6 6d 61 70  70 69 78 25 2c 7a 25 28  |..b..mappix%,z%(|
00021d10  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00021d20  2c 62 25 28 30 29 2c 70  6c 62 75 66 66 25 0d d4  |,b%(0),plbuff%..|
00021d30  6c 06 3d b9 0d d4 80 10  dd 20 a4 38 30 30 28 7a  |l.=...... .800(z|
00021d40  25 28 29 29 0d d4 8a 29  f2 77 61 74 66 6f 72 64  |%())...).watford|
00021d50  63 61 63 68 65 28 77 74  73 78 25 2c 72 65 70 25  |cache(wtsx%,rep%|
00021d60  2c 77 74 25 2c 70 6c 62  75 66 66 25 29 0d d4 94  |,wt%,plbuff%)...|
00021d70  2e d6 6d 61 70 70 69 78  25 2c 7a 25 28 31 2c 30  |..mappix%,z%(1,0|
00021d80  29 2c 72 25 28 30 29 2c  67 25 28 30 29 2c 62 25  |),r%(0),g%(0),b%|
00021d90  28 30 29 2c 70 6c 62 75  66 66 25 0d d4 9e 06 3d  |(0),plbuff%....=|
00021da0  b9 0d d4 b2 10 dd 20 a4  38 30 31 28 7a 25 28 29  |...... .801(z%()|
00021db0  29 0d d4 bc 28 f2 77 61  74 66 6f 72 64 28 77 74  |)...(.watford(wt|
00021dc0  73 78 31 25 2c 72 65 70  31 25 2c 77 74 31 25 2c  |sx1%,rep1%,wt1%,|
00021dd0  62 75 66 66 25 2c 63 25  29 0d d4 c6 2a f2 77 61  |buff%,c%)...*.wa|
00021de0  74 66 6f 72 64 28 77 74  73 78 32 25 2c 72 65 70  |tford(wtsx2%,rep|
00021df0  32 25 2c 77 74 32 25 2c  77 74 73 78 31 25 2c 63  |2%,wt2%,wtsx1%,c|
00021e00  63 25 29 0d d4 d0 2b f2  77 61 74 66 6f 72 64 28  |c%)...+.watford(|
00021e10  77 74 73 78 33 25 2c 72  65 70 33 25 2c 77 74 33  |wtsx3%,rep3%,wt3|
00021e20  25 2c 77 74 73 78 32 25  2c 63 63 63 25 29 0d d4  |%,wtsx2%,ccc%)..|
00021e30  da 32 d6 6d 61 70 70 69  78 25 2c 7a 25 28 31 2c  |.2.mappix%,z%(1,|
00021e40  30 29 2c 72 25 28 30 29  2c 67 25 28 30 29 2c 62  |0),r%(0),g%(0),b|
00021e50  25 28 30 29 2c 72 62 25  2c 67 62 25 2c 62 62 25  |%(0),rb%,gb%,bb%|
00021e60  0d d4 e4 06 3d b9 0d d4  f8 10 dd 20 a4 39 30 31  |....=...... .901|
00021e70  28 7a 25 28 29 29 0d d5  02 3c c8 99 31 32 2c 34  |(z%())...<..12,4|
00021e80  2c 63 25 2c 72 62 25 2c  73 78 25 3a c8 99 31 32  |,c%,rb%,sx%:..12|
00021e90  2c 34 2c 63 63 25 2c 67  62 25 2c 73 78 25 3a c8  |,4,cc%,gb%,sx%:.|
00021ea0  99 31 32 2c 34 2c 63 63  63 25 2c 62 62 25 2c 73  |.12,4,ccc%,bb%,s|
00021eb0  78 25 0d d5 0c 32 d6 6d  61 70 70 69 78 25 2c 7a  |x%...2.mappix%,z|
00021ec0  25 28 31 2c 30 29 2c 72  25 28 30 29 2c 67 25 28  |%(1,0),r%(0),g%(|
00021ed0  30 29 2c 62 25 28 30 29  2c 72 62 25 2c 67 62 25  |0),b%(0),rb%,gb%|
00021ee0  2c 62 62 25 0d d5 16 06  3d b9 0d d5 2a 10 dd 20  |,bb%....=...*.. |
00021ef0  a4 39 30 32 28 7a 25 28  29 29 0d d5 34 41 d6 75  |.902(z%())..4A.u|
00021f00  6e 70 61 63 6b 25 2c 62  75 66 66 25 3a d6 6d 61  |npack%,buff%:.ma|
00021f10  70 70 69 78 25 2c 7a 25  28 31 2c 30 29 2c 72 25  |ppix%,z%(1,0),r%|
00021f20  28 30 29 2c 67 25 28 30  29 2c 62 25 28 30 29 2c  |(0),g%(0),b%(0),|
00021f30  72 62 25 2c 67 62 25 2c  62 62 25 0d d5 3e 36 62  |rb%,gb%,bb%..>6b|
00021f40  75 66 66 25 2b 3d 72 6f  77 62 79 74 65 73 25 3a  |uff%+=rowbytes%:|
00021f50  72 6f 77 73 74 6f 67 6f  25 2d 3d 31 3a e7 72 6f  |rowstogo%-=1:.ro|
00021f60  77 73 74 6f 67 6f 25 3d  30 20 f2 72 65 66 69 6c  |wstogo%=0 .refil|
00021f70  6c 0d d5 48 06 3d b9 0d  d5 5c 11 dd 20 a4 31 30  |l..H.=...\.. .10|
00021f80  30 30 28 7a 25 28 29 29  0d d5 66 3f 58 25 3d 62  |00(z%())..f?X%=b|
00021f90  75 66 66 25 3a e7 72 65  70 25 3e 30 20 43 25 3d  |uff%:.rep%>0 C%=|
00021fa0  3f 70 61 25 3a d6 72 6c  65 78 70 61 6e 64 25 2c  |?pa%:.rlexpand%,|
00021fb0  70 61 73 78 25 2c 72 65  70 25 2c 43 25 2c 58 25  |pasx%,rep%,C%,X%|
00021fc0  3a 70 61 25 2b 3d 31 0d  d5 70 38 e7 72 65 70 32  |:pa%+=1..p8.rep2|
00021fd0  25 3e 30 20 43 25 3d 3f  70 61 25 3a d6 72 6c 65  |%>0 C%=?pa%:.rle|
00021fe0  78 70 61 6e 64 25 2c 70  61 73 78 25 2c 72 65 70  |xpand%,pasx%,rep|
00021ff0  32 25 2c 43 25 2c 58 25  3a 70 61 25 2b 3d 31 0d  |2%,C%,X%:pa%+=1.|
00022000  d5 7a 15 f5 20 43 25 3d  9a 23 63 25 3a e7 43 25  |.z.. C%=.#c%:.C%|
00022010  3d 30 20 8c 0d d5 84 40  72 65 70 25 3d 9a 23 63  |=0 ....@rep%=.#c|
00022020  25 3a 43 25 3d 3f 70 61  25 3a d6 72 6c 65 78 70  |%:C%=?pa%:.rlexp|
00022030  61 6e 64 25 2c 70 61 73  78 25 2c 72 65 70 25 2c  |and%,pasx%,rep%,|
00022040  43 25 2c 58 25 3a e7 72  65 70 25 3d 30 20 70 61  |C%,X%:.rep%=0 pa|
00022050  25 2b 3d 31 0d d5 8e 05  cc 0d d5 98 53 72 65 70  |%+=1........Srep|
00022060  32 25 3d 43 25 80 31 35  3a 72 65 70 25 3d 43 25  |2%=C%.15:rep%=C%|
00022070  3e 3e 34 3a e7 72 65 70  25 20 43 25 3d 3f 70 61  |>>4:.rep% C%=?pa|
00022080  25 3a d6 72 6c 65 78 70  61 6e 64 25 2c 70 61 73  |%:.rlexpand%,pas|
00022090  78 25 2c 72 65 70 25 2c  43 25 2c 58 25 3a e7 72  |x%,rep%,C%,X%:.r|
000220a0  65 70 25 3d 30 20 70 61  25 2b 3d 31 0d d5 a2 49  |ep%=0 pa%+=1...I|
000220b0  e7 58 25 3c 70 61 73 78  25 20 e7 72 65 70 32 25  |.X%<pasx% .rep2%|
000220c0  20 43 25 3d 3f 70 61 25  3a d6 72 6c 65 78 70 61  | C%=?pa%:.rlexpa|
000220d0  6e 64 25 2c 70 61 73 78  25 2c 72 65 70 32 25 2c  |nd%,pasx%,rep2%,|
000220e0  43 25 2c 58 25 3a e7 72  65 70 32 25 3d 30 20 70  |C%,X%:.rep2%=0 p|
000220f0  61 25 2b 3d 31 0d d5 ac  05 cd 0d d5 b6 0d fd 58  |a%+=1..........X|
00022100  25 3d 70 61 73 78 25 0d  d5 c0 2c d6 6d 61 70 70  |%=pasx%...,.mapp|
00022110  69 78 25 2c 7a 25 28 31  2c 30 29 2c 72 25 28 30  |ix%,z%(1,0),r%(0|
00022120  29 2c 67 25 28 30 29 2c  62 25 28 30 29 2c 62 75  |),g%(0),b%(0),bu|
00022130  66 66 25 0d d5 ca 06 3d  b9 0d d5 de 11 dd 20 a4  |ff%....=...... .|
00022140  31 30 30 31 28 7a 25 28  29 29 0d d5 e8 3f 58 25  |1001(z%())...?X%|
00022150  3d 62 75 66 66 25 3a e7  72 65 70 25 3e 30 20 43  |=buff%:.rep%>0 C|
00022160  25 3d 3f 70 61 25 3a d6  72 6c 65 78 70 61 6e 64  |%=?pa%:.rlexpand|
00022170  25 2c 70 61 73 78 25 2c  72 65 70 25 2c 43 25 2c  |%,pasx%,rep%,C%,|
00022180  58 25 3a 70 61 25 2b 3d  31 0d d5 f2 42 f5 20 72  |X%:pa%+=1...B. r|
00022190  65 70 25 3d 9a 23 63 25  3a 43 25 3d 3f 70 61 25  |ep%=.#c%:C%=?pa%|
000221a0  3a d6 72 6c 65 78 70 61  6e 64 25 2c 70 61 73 78  |:.rlexpand%,pasx|
000221b0  25 2c 72 65 70 25 2c 43  25 2c 58 25 3a e7 72 65  |%,rep%,C%,X%:.re|
000221c0  70 25 3d 30 20 70 61 25  2b 3d 31 0d d5 fc 36 fd  |p%=0 pa%+=1...6.|
000221d0  58 25 3d 70 61 73 78 25  3a d6 6d 61 70 70 69 78  |X%=pasx%:.mappix|
000221e0  25 2c 7a 25 28 31 2c 30  29 2c 72 25 28 30 29 2c  |%,z%(1,0),r%(0),|
000221f0  67 25 28 30 29 2c 62 25  28 30 29 2c 62 75 66 66  |g%(0),b%(0),buff|
00022200  25 0d d6 06 06 3d b9 0d  d6 1a 11 dd 20 a4 31 31  |%....=...... .11|
00022210  30 30 28 7a 25 28 29 29  0d d6 24 29 d6 72 65 61  |00(z%())..$).rea|
00022220  64 6c 69 6e 65 25 2c 70  6c 62 79 74 65 73 25 2c  |dline%,plbytes%,|
00022230  72 65 70 25 2c 70 69 78  25 2c 70 6c 62 75 66 66  |rep%,pix%,plbuff|
00022240  25 0d d6 2e 2e d6 6d 61  70 70 69 78 25 2c 7a 25  |%.....mappix%,z%|
00022250  28 31 2c 30 29 2c 72 25  28 30 29 2c 67 25 28 30  |(1,0),r%(0),g%(0|
00022260  29 2c 62 25 28 30 29 2c  70 6c 62 75 66 66 25 0d  |),b%(0),plbuff%.|
00022270  d6 38 06 3d b9 0d d6 4c  11 dd 20 a4 31 34 30 30  |.8.=...L.. .1400|
00022280  28 7a 25 28 29 29 0d d6  56 0c e7 76 72 65 70 25  |(z%())..V..vrep%|
00022290  20 8c 0d d6 60 0c 76 72  65 70 25 2d 3d 31 0d d6  | ...`.vrep%-=1..|
000222a0  6a 05 cc 0d d6 74 38 47  25 3d 62 75 66 66 25 3a  |j....t8G%=buff%:|
000222b0  e3 58 25 3d 31 b8 70 6c  61 6e 65 73 25 3a 47 25  |.X%=1.planes%:G%|
000222c0  2b 3d 72 6f 77 62 79 74  65 73 25 3a 46 25 3d 47  |+=rowbytes%:F%=G|
000222d0  25 2d 72 6f 77 62 79 74  65 73 25 0d d6 7e 15 f5  |%-rowbytes%..~..|
000222e0  20 43 25 3d 9a 23 63 25  3a e7 43 25 3d 30 20 8c  | C%=.#c%:.C%=0 .|
000222f0  0d d6 88 13 43 25 3d 9a  23 63 25 3a e7 43 25 3d  |....C%=.#c%:.C%=|
00022300  30 20 8c 0d d6 92 18 43  25 3d 9a 23 63 25 3a 76  |0 .....C%=.#c%:v|
00022310  72 65 70 25 3d 9a 23 63  25 2d 31 0d d6 9c 05 cc  |rep%=.#c%-1.....|
00022320  0d d6 a6 2a 44 25 3d 46  25 3a c8 99 31 32 2c 34  |...*D%=F%:..12,4|
00022330  2c 63 25 2c 46 25 2c 70  61 74 6c 65 6e 25 3a 46  |,c%,F%,patlen%:F|
00022340  25 2b 3d 70 61 74 6c 65  6e 25 0d d6 b0 3e e7 43  |%+=patlen%...>.C|
00022350  25 3e 31 20 e3 4e 25 3d  32 b8 43 25 3a e3 45 25  |%>1 .N%=2.C%:.E%|
00022360  3d 30 b8 70 61 74 6c 65  6e 25 2d 31 3a 46 25 3f  |=0.patlen%-1:F%?|
00022370  45 25 3d 44 25 3f 45 25  3a ed 3a 46 25 2b 3d 70  |E%=D%?E%:.:F%+=p|
00022380  61 74 6c 65 6e 25 3a ed  0d d6 ba 05 cd 0d d6 c4  |atlen%:.........|
00022390  05 cc 0d d6 ce 0d e7 43  25 3d 31 32 38 20 8c 0d  |.......C%=128 ..|
000223a0  d6 d8 22 43 25 3d 9a 23  63 25 3a c8 99 31 32 2c  |.."C%=.#c%:..12,|
000223b0  34 2c 63 25 2c 46 25 2c  43 25 3a 46 25 2b 3d 43  |4,c%,F%,C%:F%+=C|
000223c0  25 0d d6 e2 05 cc 0d d6  ec 3d 3f 46 25 3d 28 43  |%........=?F%=(C|
000223d0  25 80 26 38 30 29 3c 3e  30 3a e3 45 25 3d 46 25  |%.&80)<>0:.E%=F%|
000223e0  2b 31 b8 46 25 2b 28 43  25 80 26 37 46 29 3a 3f  |+1.F%+(C%.&7F):?|
000223f0  45 25 3d 3f 46 25 3a ed  3a 46 25 2b 3d 43 25 80  |E%=?F%:.:F%+=C%.|
00022400  26 37 46 0d d6 f6 05 cd  0d d7 00 0f cd 3a fd 46  |&7F..........:.F|
00022410  25 3e 3d 47 25 3a ed 0d  d7 0a 24 d6 70 6c 61 6e  |%>=G%:....$.plan|
00022420  63 6e 76 25 2c 72 6f 77  62 79 74 65 73 25 2c 62  |cnv%,rowbytes%,b|
00022430  75 66 66 25 2c 70 62 75  66 66 25 0d d7 14 05 cd  |uff%,pbuff%.....|
00022440  0d d7 1e 2d d6 6d 61 70  70 69 78 25 2c 7a 25 28  |...-.mappix%,z%(|
00022450  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00022460  2c 62 25 28 30 29 2c 70  62 75 66 66 25 0d d7 28  |,b%(0),pbuff%..(|
00022470  06 3d b9 0d d7 3c 11 dd  20 a4 31 35 30 31 28 7a  |.=...<.. .1501(z|
00022480  25 28 29 29 0d d7 46 44  d6 72 65 61 64 69 66 66  |%())..FD.readiff|
00022490  25 2c 72 6f 77 62 79 74  65 73 25 2c 70 6c 62 75  |%,rowbytes%,plbu|
000224a0  66 66 25 3a 72 6f 77 73  74 6f 67 6f 25 2d 3d 31  |ff%:rowstogo%-=1|
000224b0  3a e7 72 6f 77 73 74 6f  67 6f 25 3d 30 20 f2 6e  |:.rowstogo%=0 .n|
000224c0  65 78 74 73 74 72 69 70  0d d7 50 2e d6 6d 61 70  |extstrip..P..map|
000224d0  70 69 78 25 2c 7a 25 28  31 2c 30 29 2c 72 25 28  |pix%,z%(1,0),r%(|
000224e0  30 29 2c 67 25 28 30 29  2c 62 25 28 30 29 2c 70  |0),g%(0),b%(0),p|
000224f0  6c 62 75 66 66 25 0d d7  5a 06 3d b9 0d d7 6e 11  |lbuff%..Z.=...n.|
00022500  dd 20 a4 31 35 30 35 28  7a 25 28 29 29 0d d7 78  |. .1505(z%())..x|
00022510  2f d6 20 4c 5a 57 64 65  63 6f 64 65 25 2c 74 61  |/. LZWdecode%,ta|
00022520  62 6c 65 25 28 30 29 2c  63 25 2c 70 6c 62 75 66  |ble%(0),c%,plbuf|
00022530  66 25 2c 72 6f 77 62 79  74 65 73 25 0d d7 82 28  |f%,rowbytes%...(|
00022540  72 6f 77 73 74 6f 67 6f  25 2d 3d 31 3a e7 72 6f  |rowstogo%-=1:.ro|
00022550  77 73 74 6f 67 6f 25 3d  30 20 f2 6e 65 78 74 73  |wstogo%=0 .nexts|
00022560  74 72 69 70 0d d7 8c 2e  d6 6d 61 70 70 69 78 25  |trip.....mappix%|
00022570  2c 7a 25 28 31 2c 30 29  2c 72 25 28 30 29 2c 67  |,z%(1,0),r%(0),g|
00022580  25 28 30 29 2c 62 25 28  30 29 2c 70 6c 62 75 66  |%(0),b%(0),plbuf|
00022590  66 25 0d d7 96 06 3d b9  0d d7 aa 11 dd 20 a4 31  |f%....=...... .1|
000225a0  35 31 35 28 7a 25 28 29  29 0d d7 b4 2f d6 20 4c  |515(z%()).../. L|
000225b0  5a 57 64 65 63 6f 64 65  25 2c 74 61 62 6c 65 25  |ZWdecode%,table%|
000225c0  28 30 29 2c 63 25 2c 70  6c 62 75 66 66 25 2c 72  |(0),c%,plbuff%,r|
000225d0  6f 77 62 79 74 65 73 25  0d d7 be 28 72 6f 77 73  |owbytes%...(rows|
000225e0  74 6f 67 6f 25 2d 3d 31  3a e7 72 6f 77 73 74 6f  |togo%-=1:.rowsto|
000225f0  67 6f 25 3d 30 20 f2 6e  65 78 74 73 74 72 69 70  |go%=0 .nextstrip|
00022600  0d d7 c8 32 d6 6d 61 70  70 69 78 25 2c 7a 25 28  |...2.mappix%,z%(|
00022610  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00022620  2c 62 25 28 30 29 2c 72  62 25 2c 67 62 25 2c 62  |,b%(0),rb%,gb%,b|
00022630  62 25 0d d7 d2 06 3d b9  0d d7 e6 11 dd 20 a4 31  |b%....=...... .1|
00022640  36 30 30 28 7a 25 28 29  29 0d d7 f0 39 d6 70 6c  |600(z%())...9.pl|
00022650  61 6e 63 6e 76 25 2c 72  65 61 6c 72 6f 77 62 79  |ancnv%,realrowby|
00022660  74 65 73 25 2c 62 75 66  66 25 2c 70 62 75 66 66  |tes%,buff%,pbuff|
00022670  25 3a 62 75 66 66 25 2b  3d 72 6f 77 62 79 74 65  |%:buff%+=rowbyte|
00022680  73 25 0d d7 fa 2d d6 6d  61 70 70 69 78 25 2c 7a  |s%...-.mappix%,z|
00022690  25 28 31 2c 30 29 2c 72  25 28 30 29 2c 67 25 28  |%(1,0),r%(0),g%(|
000226a0  30 29 2c 62 25 28 30 29  2c 70 62 75 66 66 25 0d  |0),b%(0),pbuff%.|
000226b0  d8 04 25 72 6f 77 73 74  6f 67 6f 25 2d 3d 31 3a  |..%rowstogo%-=1:|
000226c0  e7 72 6f 77 73 74 6f 67  6f 25 3d 30 20 f2 72 65  |.rowstogo%=0 .re|
000226d0  66 69 6c 6c 0d d8 0e 06  3d b9 0d d8 22 11 dd 20  |fill....=...".. |
000226e0  a4 31 36 30 31 28 7a 25  28 29 29 0d d8 2c 44 e3  |.1601(z%())..,D.|
000226f0  58 25 3d 30 b8 70 6c 61  6e 65 73 25 2d 31 3a 46  |X%=0.planes%-1:F|
00022700  25 3d 70 6c 62 75 66 66  25 2b 58 25 2a 72 6f 77  |%=plbuff%+X%*row|
00022710  62 79 74 65 73 25 3a d6  72 65 61 64 69 66 66 25  |bytes%:.readiff%|
00022720  2c 72 6f 77 62 79 74 65  73 25 2c 46 25 3a ed 0d  |,rowbytes%,F%:..|
00022730  d8 36 28 e7 6d 61 73 6b  69 6e 67 25 20 d6 72 65  |.6(.masking% .re|
00022740  61 64 69 66 66 25 2c 72  6f 77 62 79 74 65 73 25  |adiff%,rowbytes%|
00022750  2c 70 62 75 66 66 25 0d  d8 40 26 d6 70 6c 61 6e  |,pbuff%..@&.plan|
00022760  63 6e 76 25 2c 72 6f 77  62 79 74 65 73 25 2c 70  |cnv%,rowbytes%,p|
00022770  6c 62 75 66 66 25 2c 70  62 75 66 66 25 0d d8 4a  |lbuff%,pbuff%..J|
00022780  2d d6 6d 61 70 70 69 78  25 2c 7a 25 28 31 2c 30  |-.mappix%,z%(1,0|
00022790  29 2c 72 25 28 30 29 2c  67 25 28 30 29 2c 62 25  |),r%(0),g%(0),b%|
000227a0  28 30 29 2c 70 62 75 66  66 25 0d d8 54 06 3d b9  |(0),pbuff%..T.=.|
000227b0  0d d8 68 11 dd 20 a4 31  38 35 30 28 7a 25 28 29  |..h.. .1850(z%()|
000227c0  29 0d d8 72 1f d6 72 65  61 64 69 66 66 25 2c 72  |)..r..readiff%,r|
000227d0  6f 77 62 79 74 65 73 25  2c 70 6c 62 75 66 66 25  |owbytes%,plbuff%|
000227e0  0d d8 7c 2e d6 6d 61 70  70 69 78 25 2c 7a 25 28  |..|..mappix%,z%(|
000227f0  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00022800  2c 62 25 28 30 29 2c 70  6c 62 75 66 66 25 0d d8  |,b%(0),plbuff%..|
00022810  86 06 3d b9 0d d8 9a 11  dd 20 a4 31 38 35 31 28  |..=...... .1851(|
00022820  7a 25 28 29 29 0d d8 a4  1f d6 72 65 61 64 69 66  |z%()).....readif|
00022830  66 25 2c 72 6f 77 62 79  74 65 73 25 2c 70 6c 62  |f%,rowbytes%,plb|
00022840  75 66 66 25 0d d8 ae 32  d6 6d 61 70 70 69 78 25  |uff%...2.mappix%|
00022850  2c 7a 25 28 31 2c 30 29  2c 72 25 28 30 29 2c 67  |,z%(1,0),r%(0),g|
00022860  25 28 30 29 2c 62 25 28  30 29 2c 72 62 25 2c 67  |%(0),b%(0),rb%,g|
00022870  62 25 2c 62 62 25 0d d8  b8 06 3d b9 0d d8 cc 11  |b%,bb%....=.....|
00022880  dd 20 a4 31 39 30 30 28  7a 25 28 29 29 0d d8 d6  |. .1900(z%())...|
00022890  29 d6 72 65 61 64 6c 69  6e 65 25 2c 70 6c 62 79  |).readline%,plby|
000228a0  74 65 73 25 2c 72 65 70  25 2c 70 69 78 25 2c 70  |tes%,rep%,pix%,p|
000228b0  6c 62 75 66 66 25 0d d8  e0 26 d6 70 6c 61 6e 63  |lbuff%...&.planc|
000228c0  6e 76 25 2c 72 6f 77 62  79 74 65 73 25 2c 70 6c  |nv%,rowbytes%,pl|
000228d0  62 75 66 66 25 2c 70 62  75 66 66 25 0d d8 ea 2d  |buff%,pbuff%...-|
000228e0  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
000228f0  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
00022900  30 29 2c 70 62 75 66 66  25 0d d8 f4 06 3d b9 0d  |0),pbuff%....=..|
00022910  d9 08 11 dd 20 a4 32 30  30 30 28 7a 25 28 29 29  |.... .2000(z%())|
00022920  0d d9 12 0e 58 25 3d 62  75 66 66 25 3a f5 0d d9  |....X%=buff%:...|
00022930  1c 15 43 25 3d 9a 23 63  25 3a e7 43 25 3c 31 32  |..C%=.#c%:.C%<12|
00022940  38 20 8c 0d d9 26 20 43  25 2b 3d 31 3a c8 99 31  |8 ...& C%+=1:..1|
00022950  32 2c 34 2c 63 25 2c 58  25 2c 43 25 3a 58 25 2b  |2,4,c%,X%,C%:X%+|
00022960  3d 43 25 0d d9 30 05 cc  0d d9 3a 30 46 25 3d 58  |=C%..0....:0F%=X|
00022970  25 3a 3f 46 25 3d 9a 23  63 25 3a e3 43 25 3d 43  |%:?F%=.#c%:.C%=C|
00022980  25 b8 31 32 38 88 2d 31  3a 3f 58 25 3d 3f 46 25  |%.128.-1:?X%=?F%|
00022990  3a 58 25 2b 3d 31 3a ed  0d d9 44 05 cd 0d d9 4e  |:X%+=1:...D....N|
000229a0  17 fd 58 25 3d 62 75 66  66 25 2b 72 6f 77 62 79  |..X%=buff%+rowby|
000229b0  74 65 73 25 0d d9 58 2c  d6 6d 61 70 70 69 78 25  |tes%..X,.mappix%|
000229c0  2c 7a 25 28 31 2c 30 29  2c 72 25 28 30 29 2c 67  |,z%(1,0),r%(0),g|
000229d0  25 28 30 29 2c 62 25 28  30 29 2c 62 75 66 66 25  |%(0),b%(0),buff%|
000229e0  0d d9 62 06 3d b9 0d d9  76 11 dd 20 a4 32 30 30  |..b.=...v.. .200|
000229f0  31 28 7a 25 28 29 29 0d  d9 80 0e 58 25 3d 62 75  |1(z%())....X%=bu|
00022a00  66 66 25 3a f5 0d d9 8a  15 43 25 3d 9a 23 63 25  |ff%:.....C%=.#c%|
00022a10  3a e7 43 25 3c 31 32 38  20 8c 0d d9 94 26 43 25  |:.C%<128 ....&C%|
00022a20  3d 28 43 25 2b 31 29 2a  32 3a c8 99 31 32 2c 34  |=(C%+1)*2:..12,4|
00022a30  2c 63 25 2c 58 25 2c 43  25 3a 58 25 2b 3d 43 25  |,c%,X%,C%:X%+=C%|
00022a40  0d d9 9e 05 cc 0d d9 a8  36 46 25 3d 58 25 3a c8  |........6F%=X%:.|
00022a50  99 31 32 2c 34 2c 63 25  2c 58 25 2c 32 3a e3 43  |.12,4,c%,X%,2:.C|
00022a60  25 3d 43 25 b8 31 32 38  88 2d 31 3a 21 58 25 3d  |%=C%.128.-1:!X%=|
00022a70  21 46 25 3a 58 25 2b 3d  32 3a ed 0d d9 b2 05 cd  |!F%:X%+=2:......|
00022a80  0d d9 bc 17 fd 58 25 3d  62 75 66 66 25 2b 72 6f  |.....X%=buff%+ro|
00022a90  77 62 79 74 65 73 25 0d  d9 c6 44 d6 6d 61 70 70  |wbytes%...D.mapp|
00022aa0  69 78 25 2c 7a 25 28 31  2c 30 29 2c 72 70 61 6c  |ix%,z%(1,0),rpal|
00022ab0  25 28 30 29 2c 67 70 61  6c 25 28 30 29 2c 72 25  |%(0),gpal%(0),r%|
00022ac0  28 30 29 2c 67 25 28 30  29 2c 62 25 28 30 29 2c  |(0),g%(0),b%(0),|
00022ad0  62 75 66 66 25 2c 62 75  66 66 25 0d d9 d0 06 3d  |buff%,buff%....=|
00022ae0  b9 0d d9 e4 11 dd 20 a4  32 30 30 32 28 7a 25 28  |...... .2002(z%(|
00022af0  29 29 0d d9 ee 0e 58 25  3d 62 75 66 66 25 3a f5  |))....X%=buff%:.|
00022b00  0d d9 f8 15 43 25 3d 9a  23 63 25 3a e7 43 25 3c  |....C%=.#c%:.C%<|
00022b10  31 32 38 20 8c 0d da 02  2b 43 25 3d 28 43 25 2b  |128 ....+C%=(C%+|
00022b20  31 29 2a 73 74 65 70 32  34 3a c8 99 31 32 2c 34  |1)*step24:..12,4|
00022b30  2c 63 25 2c 58 25 2c 43  25 3a 58 25 2b 3d 43 25  |,c%,X%,C%:X%+=C%|
00022b40  0d da 0c 05 cc 0d da 16  40 46 25 3d 58 25 3a c8  |........@F%=X%:.|
00022b50  99 31 32 2c 34 2c 63 25  2c 58 25 2c 73 74 65 70  |.12,4,c%,X%,step|
00022b60  32 34 3a e3 43 25 3d 43  25 b8 31 32 38 88 2d 31  |24:.C%=C%.128.-1|
00022b70  3a 21 58 25 3d 21 46 25  3a 58 25 2b 3d 73 74 65  |:!X%=!F%:X%+=ste|
00022b80  70 32 34 3a ed 0d da 20  05 cd 0d da 2a 17 fd 58  |p24:... ....*..X|
00022b90  25 3d 62 75 66 66 25 2b  72 6f 77 62 79 74 65 73  |%=buff%+rowbytes|
00022ba0  25 0d da 34 32 d6 6d 61  70 70 69 78 25 2c 7a 25  |%..42.mappix%,z%|
00022bb0  28 31 2c 30 29 2c 72 25  28 30 29 2c 67 25 28 30  |(1,0),r%(0),g%(0|
00022bc0  29 2c 62 25 28 30 29 2c  72 62 25 2c 67 62 25 2c  |),b%(0),rb%,gb%,|
00022bd0  62 62 25 0d da 3e 06 3d  b9 0d da 52 11 dd 20 a4  |bb%..>.=...R.. .|
00022be0  32 32 35 30 28 7a 25 28  29 29 0d da 5c 51 d6 6d  |2250(z%())..\Q.m|
00022bf0  61 70 70 69 78 25 2c 7a  25 28 31 2c 30 29 2c 72  |appix%,z%(1,0),r|
00022c00  70 61 6c 25 28 30 29 2c  72 25 28 30 29 2c 67 70  |pal%(0),r%(0),gp|
00022c10  61 6c 25 28 30 29 2c 67  25 28 30 29 2c 62 70 61  |al%(0),g%(0),bpa|
00022c20  6c 25 28 30 29 2c 62 25  28 30 29 2c 74 61 62 6c  |l%(0),b%(0),tabl|
00022c30  65 25 28 30 29 2c 62 75  66 66 25 0d da 66 36 62  |e%(0),buff%..f6b|
00022c40  75 66 66 25 2b 3d 72 6f  77 62 79 74 65 73 25 3a  |uff%+=rowbytes%:|
00022c50  72 6f 77 73 74 6f 67 6f  25 2d 3d 31 3a e7 72 6f  |rowstogo%-=1:.ro|
00022c60  77 73 74 6f 67 6f 25 3d  30 20 f2 72 65 66 69 6c  |wstogo%=0 .refil|
00022c70  6c 0d da 70 06 3d b9 0d  da 84 11 dd 20 a4 32 33  |l..p.=...... .23|
00022c80  30 30 28 7a 25 28 29 29  0d da 8e 48 e7 63 6c 72  |00(z%())...H.clr|
00022c90  66 69 72 73 74 25 20 e3  58 25 3d 30 b8 73 78 25  |first% .X%=0.sx%|
00022ca0  2d 31 3a 72 62 25 3f 58  25 3d 3f 62 61 63 6b 25  |-1:rb%?X%=?back%|
00022cb0  3a 67 62 25 3f 58 25 3d  62 61 63 6b 25 3f 31 3a  |:gb%?X%=back%?1:|
00022cc0  62 62 25 3f 58 25 3d 62  61 63 6b 25 3f 32 3a ed  |bb%?X%=back%?2:.|
00022cd0  0d da 98 0c e7 76 72 65  70 25 20 8c 0d da a2 0c  |.....vrep% .....|
00022ce0  76 72 65 70 25 2d 3d 31  0d da ac 05 cc 0d da b6  |vrep%-=1........|
00022cf0  07 ea 20 85 0d da c0 44  ee 20 85 20 ea 20 76 72  |.. ....D. . . vr|
00022d00  65 70 25 3d 2d 31 3a d6  6d 61 70 70 69 78 25 2c  |ep%=-1:.mappix%,|
00022d10  7a 25 28 31 2c 30 29 2c  72 25 28 30 29 2c 67 25  |z%(1,0),r%(0),g%|
00022d20  28 30 29 2c 62 25 28 30  29 2c 72 62 25 2c 67 62  |(0),b%(0),rb%,gb|
00022d30  25 2c 62 62 25 3a 3d b9  0d da ca 29 45 25 3d a3  |%,bb%:=....)E%=.|
00022d40  3a f5 20 43 25 3d 9a 23  63 25 3a 44 25 3d 9a 23  |:. C%=.#c%:D%=.#|
00022d50  63 25 3a e7 43 25 80 26  34 30 20 44 25 3d a4 48  |c%:.C%.&40 D%=.H|
00022d60  57 0d da d4 0f c8 8e 20  43 25 80 26 33 66 20 ca  |W...... C%.&3f .|
00022d70  0d da de 28 c9 20 31 3a  45 25 3d b9 3a 76 72 65  |...(. 1:E%=.:vre|
00022d80  70 25 3d 44 25 2d 31 3a  e7 76 72 65 70 25 3c 30  |p%=D%-1:.vrep%<0|
00022d90  20 76 72 65 70 25 3d a3  0d da e8 3c c9 20 32 3a  | vrep%=....<. 2:|
00022da0  63 63 6f 6c 25 3d 62 61  63 6b 25 3f 44 25 3a 63  |ccol%=back%?D%:c|
00022db0  62 75 66 25 3d 72 62 25  2b 73 78 25 2a 44 25 3a  |buf%=rb%+sx%*D%:|
00022dc0  e7 44 25 3d 32 35 35 20  63 62 75 66 25 3d 61 6c  |.D%=255 cbuf%=al|
00022dd0  70 68 61 25 0d da f2 2d  c9 20 33 3a e3 58 25 3d  |pha%...-. 3:.X%=|
00022de0  30 b8 44 25 2d 31 3a 63  62 75 66 25 3f 58 25 3d  |0.D%-1:cbuf%?X%=|
00022df0  63 63 6f 6c 25 3a ed 3a  63 62 75 66 25 2b 3d 44  |ccol%:.:cbuf%+=D|
00022e00  25 0d da fc 36 c9 20 35  3a c8 99 31 32 2c 34 2c  |%...6. 5:..12,4,|
00022e10  63 25 2c 63 62 75 66 25  2c 44 25 2b 31 3a 63 62  |c%,cbuf%,D%+1:cb|
00022e20  75 66 25 2b 3d 44 25 2b  31 3a e7 44 25 2b 31 80  |uf%+=D%+1:.D%+1.|
00022e30  31 20 e7 9a 23 63 25 0d  db 06 31 c9 20 36 3a 43  |1 ..#c%...1. 6:C|
00022e40  25 3d a4 48 57 3a e3 58  25 3d 30 b8 44 25 3a 63  |%=.HW:.X%=0.D%:c|
00022e50  62 75 66 25 3f 58 25 3d  43 25 3a ed 3a 63 62 75  |buf%?X%=C%:.:cbu|
00022e60  66 25 2b 3d 44 25 2b 31  0d db 10 05 cb 0d db 1a  |f%+=D%+1........|
00022e70  07 fd 45 25 0d db 24 05  cd 0d db 2e 32 d6 6d 61  |..E%..$.....2.ma|
00022e80  70 70 69 78 25 2c 7a 25  28 31 2c 30 29 2c 72 25  |ppix%,z%(1,0),r%|
00022e90  28 30 29 2c 67 25 28 30  29 2c 62 25 28 30 29 2c  |(0),g%(0),b%(0),|
00022ea0  72 62 25 2c 67 62 25 2c  62 62 25 0d db 38 06 3d  |rb%,gb%,bb%..8.=|
00022eb0  b9 0d db 4c 11 dd 20 a4  33 30 30 30 28 7a 25 28  |...L.. .3000(z%(|
00022ec0  29 29 0d db 56 51 d6 6d  61 70 70 69 78 25 2c 7a  |))..VQ.mappix%,z|
00022ed0  25 28 31 2c 30 29 2c 72  70 61 6c 25 28 30 29 2c  |%(1,0),rpal%(0),|
00022ee0  72 25 28 30 29 2c 67 70  61 6c 25 28 30 29 2c 67  |r%(0),gpal%(0),g|
00022ef0  25 28 30 29 2c 62 70 61  6c 25 28 30 29 2c 62 25  |%(0),bpal%(0),b%|
00022f00  28 30 29 2c 74 61 62 6c  65 25 28 30 29 2c 62 75  |(0),table%(0),bu|
00022f10  66 66 25 0d db 60 36 62  75 66 66 25 2b 3d 72 6f  |ff%..`6buff%+=ro|
00022f20  77 62 79 74 65 73 25 3a  72 6f 77 73 74 6f 67 6f  |wbytes%:rowstogo|
00022f30  25 2d 3d 31 3a e7 72 6f  77 73 74 6f 67 6f 25 3d  |%-=1:.rowstogo%=|
00022f40  30 20 f2 72 65 66 69 6c  6c 0d db 6a 06 3d b9 0d  |0 .refill..j.=..|
00022f50  db 74 11 dd 20 a4 33 35  30 30 28 7a 25 28 29 29  |.t.. .3500(z%())|
00022f60  0d db 7e 06 3d b9 0d db  88 11 dd 20 a4 33 36 30  |..~.=...... .360|
00022f70  30 28 7a 25 28 29 29 0d  db 92 32 d6 6d 61 70 70  |0(z%())...2.mapp|
00022f80  69 78 25 2c 7a 25 28 31  2c 30 29 2c 72 25 28 30  |ix%,z%(1,0),r%(0|
00022f90  29 2c 67 25 28 30 29 2c  62 25 28 30 29 2c 72 62  |),g%(0),b%(0),rb|
00022fa0  25 2c 67 62 25 2c 62 62  25 0d db 9c 30 72 62 25  |%,gb%,bb%...0rb%|
00022fb0  2b 3d 72 6f 77 62 79 74  65 73 25 3a 67 62 25 2b  |+=rowbytes%:gb%+|
00022fc0  3d 72 6f 77 62 79 74 65  73 25 3a 62 62 25 2b 3d  |=rowbytes%:bb%+=|
00022fd0  72 6f 77 62 79 74 65 73  25 0d db a6 28 72 6f 77  |rowbytes%...(row|
00022fe0  73 74 6f 67 6f 25 2d 3d  31 3a e7 72 6f 77 73 74  |stogo%-=1:.rowst|
00022ff0  6f 67 6f 25 3d 30 20 f2  72 65 66 69 6c 6c 70 63  |ogo%=0 .refillpc|
00023000  64 0d db b0 06 3d b9 0d  db ba 11 dd 20 a4 33 37  |d....=...... .37|
00023010  30 38 28 7a 25 28 29 29  0d db c4 34 41 25 3d 6a  |08(z%())...4A%=j|
00023020  70 65 67 73 70 61 63 65  25 3a 6a 70 65 67 79 25  |pegspace%:jpegy%|
00023030  2d 3d 31 3a 42 25 3d 6a  70 65 67 79 25 3a 72 62  |-=1:B%=jpegy%:rb|
00023040  25 3d ba 28 6a 70 65 67  25 2b 34 29 0d db ce 2a  |%=.(jpeg%+4)...*|
00023050  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
00023060  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
00023070  30 29 2c 72 62 25 0d db  d8 06 3d b9 0d db e2 11  |0),rb%....=.....|
00023080  dd 20 a4 33 37 32 34 28  7a 25 28 29 29 0d db ec  |. .3724(z%())...|
00023090  48 41 25 3d 6a 70 65 67  73 70 61 63 65 25 3a 6a  |HA%=jpegspace%:j|
000230a0  70 65 67 79 25 2d 3d 31  3a 42 25 3d 6a 70 65 67  |pegy%-=1:B%=jpeg|
000230b0  79 25 3a 72 62 25 3d ba  28 6a 70 65 67 25 2b 34  |y%:rb%=.(jpeg%+4|
000230c0  29 3a 67 62 25 3d 72 62  25 2b 31 3a 62 62 25 3d  |):gb%=rb%+1:bb%=|
000230d0  72 62 25 2b 32 0d db f6  32 d6 6d 61 70 70 69 78  |rb%+2...2.mappix|
000230e0  25 2c 7a 25 28 31 2c 30  29 2c 72 25 28 30 29 2c  |%,z%(1,0),r%(0),|
000230f0  67 25 28 30 29 2c 62 25  28 30 29 2c 72 62 25 2c  |g%(0),b%(0),rb%,|
00023100  67 62 25 2c 62 62 25 0d  dc 00 06 3d b9 0d dc 0a  |gb%,bb%....=....|
00023110  0d dd 20 f2 72 65 77 69  6e 64 0d dc 14 17 72 6f  |.. .rewind....ro|
00023120  77 73 25 3d 73 79 25 3a  c8 8e 20 66 6c 61 67 20  |ws%=sy%:.. flag |
00023130  ca 0d dc 1e 10 c9 20 30  3a cf 23 63 25 3d 73 74  |...... 0:.#c%=st|
00023140  25 0d dc 28 10 c9 20 31  30 30 3a cf 23 63 25 3d  |%..(.. 100:.#c%=|
00023150  34 0d dc 32 19 c9 20 32  30 30 3a cf 23 63 25 3d  |4..2.. 200:.#c%=|
00023160  73 74 25 3a 72 65 70 25  3d 30 0d dc 3c 1e c9 20  |st%:rep%=0..<.. |
00023170  33 30 30 3a cf 23 63 25  3d 73 74 25 3a cf 23 63  |300:.#c%=st%:.#c|
00023180  63 25 3d 73 74 63 63 25  0d dc 46 19 c9 20 34 30  |c%=stcc%..F.. 40|
00023190  30 3a cf 23 63 25 3d 73  74 25 3a 72 65 70 25 3d  |0:.#c%=st%:rep%=|
000231a0  30 0d dc 50 35 c9 20 35  30 30 3a e3 49 25 3d 30  |0..P5. 500:.I%=0|
000231b0  b8 63 6c 65 61 72 63 6f  64 65 25 2d 31 3a 74 61  |.clearcode%-1:ta|
000231c0  62 6c 65 25 28 49 25 29  3d 49 25 3a ed 3a cf 23  |ble%(I%)=I%:.:.#|
000231d0  63 25 3d 73 74 25 0d dc  5a 46 21 66 69 72 73 74  |c%=st%..ZF!first|
000231e0  63 6f 64 65 3d 30 3a 21  6f 6c 64 63 6f 64 65 3d  |code=0:!oldcode=|
000231f0  30 3a 21 63 6f 64 65 73  69 7a 65 3d 73 65 74 63  |0:!codesize=setc|
00023200  6f 64 65 73 25 2b 31 3a  21 73 74 61 63 6b 3d 73  |odes%+1:!stack=s|
00023210  74 6b 25 3a 21 73 70 3d  73 74 6b 25 0d dc 64 48  |tk%:!sp=stk%..dH|
00023220  21 6d 61 78 63 6f 64 65  3d 63 6c 65 61 72 63 6f  |!maxcode=clearco|
00023230  64 65 25 2b 32 3a 21 6d  61 78 63 6f 64 65 73 69  |de%+2:!maxcodesi|
00023240  7a 65 3d 32 2a 63 6c 65  61 72 63 6f 64 65 25 3a  |ze=2*clearcode%:|
00023250  21 63 75 72 62 69 74 3d  30 3a 21 6c 61 73 74 62  |!curbit=0:!lastb|
00023260  69 74 3d 30 0d dc 6e 1a  c9 20 35 30 31 3a 62 75  |it=0..n.. 501:bu|
00023270  66 66 25 3d 64 61 74 61  63 61 63 68 65 25 0d dc  |ff%=datacache%..|
00023280  78 13 c9 20 36 30 30 3a  cf 23 63 25 3d 26 33 38  |x.. 600:.#c%=&38|
00023290  30 0d dc 82 12 c9 20 37  30 30 3a cf 23 63 25 3d  |0..... 700:.#c%=|
000232a0  73 74 25 0d dc 8c 1d c9  20 38 30 30 3a cf 23 63  |st%..... 800:.#c|
000232b0  25 3d 30 3a 72 65 70 25  3d 30 3a 77 74 25 3d 30  |%=0:rep%=0:wt%=0|
000232c0  0d dc 96 4e c9 20 38 30  31 3a cf 23 63 25 3d 30  |...N. 801:.#c%=0|
000232d0  3a cf 23 63 63 25 3d 30  3a cf 23 63 63 63 25 3d  |:.#cc%=0:.#ccc%=|
000232e0  30 3a 72 65 70 31 25 3d  30 3a 77 74 31 25 3d 30  |0:rep1%=0:wt1%=0|
000232f0  3a 72 65 70 32 25 3d 30  3a 77 74 32 25 3d 30 3a  |:rep2%=0:wt2%=0:|
00023300  72 65 70 33 25 3d 30 3a  77 74 33 25 3d 30 0d dc  |rep3%=0:wt3%=0..|
00023310  a0 10 c9 20 39 30 30 3a  cf 23 63 25 3d 30 0d dc  |... 900:.#c%=0..|
00023320  aa 21 c9 20 39 30 31 3a  cf 23 63 25 3d 30 3a cf  |.!. 901:.#c%=0:.|
00023330  23 63 63 25 3d 30 3a cf  23 63 63 63 25 3d 30 0d  |#cc%=0:.#ccc%=0.|
00023340  dc b4 12 c9 20 39 30 32  3a cf 23 63 25 3d 73 74  |.... 902:.#c%=st|
00023350  25 0d dc be 2e c9 20 31  30 30 30 3a cf 23 63 25  |%..... 1000:.#c%|
00023360  3d 73 74 25 3a 70 61 25  3d 63 74 61 62 6c 65 25  |=st%:pa%=ctable%|
00023370  3a 72 65 70 25 3d 30 3a  72 65 70 32 25 3d 30 0d  |:rep%=0:rep2%=0.|
00023380  dc c8 1a c9 20 31 31 30  30 3a cf 23 63 25 3d 73  |.... 1100:.#c%=s|
00023390  74 25 3a 72 65 70 25 3d  30 0d dc d2 14 c9 20 31  |t%:rep%=0..... 1|
000233a0  32 30 30 3a cf 23 63 25  3d 31 36 30 30 0d dc dc  |200:.#c%=1600...|
000233b0  11 c9 20 31 33 30 30 3a  cf 23 63 25 3d 30 0d dc  |.. 1300:.#c%=0..|
000233c0  e6 22 c9 20 31 33 30 31  3a cf 23 63 25 3d 30 3a  |.". 1301:.#c%=0:|
000233d0  cf 23 63 63 25 3d 30 3a  cf 23 63 63 63 25 3d 30  |.#cc%=0:.#ccc%=0|
000233e0  0d dc f0 1b c9 20 31 34  30 30 3a cf 23 63 25 3d  |..... 1400:.#c%=|
000233f0  73 74 25 3a 76 72 65 70  25 3d 30 0d dc fa 36 c9  |st%:vrep%=0...6.|
00023400  20 31 35 30 30 3a cf 23  63 25 3d 73 74 25 28 30  | 1500:.#c%=st%(0|
00023410  29 3a 72 6f 77 73 74 6f  67 6f 25 3d 73 74 72 69  |):rowstogo%=stri|
00023420  70 72 6f 77 73 25 3a 73  74 72 69 70 70 74 72 3d  |prows%:stripptr=|
00023430  30 0d dd 04 14 e7 63 6f  6d 70 72 65 73 73 69 6f  |0.....compressio|
00023440  6e 3d 35 20 8c 0d dd 0e  46 21 66 69 72 73 74 63  |n=5 ....F!firstc|
00023450  6f 64 65 3d 30 3a 21 6f  6c 64 63 6f 64 65 3d 30  |ode=0:!oldcode=0|
00023460  3a 21 63 6f 64 65 73 69  7a 65 3d 73 65 74 63 6f  |:!codesize=setco|
00023470  64 65 73 25 2b 31 3a 21  73 74 61 63 6b 3d 73 74  |des%+1:!stack=st|
00023480  6b 25 3a 21 73 70 3d 73  74 6b 25 0d dd 18 48 21  |k%:!sp=stk%...H!|
00023490  6d 61 78 63 6f 64 65 3d  63 6c 65 61 72 63 6f 64  |maxcode=clearcod|
000234a0  65 25 2b 32 3a 21 6d 61  78 63 6f 64 65 73 69 7a  |e%+2:!maxcodesiz|
000234b0  65 3d 32 2a 63 6c 65 61  72 63 6f 64 65 25 3a 21  |e=2*clearcode%:!|
000234c0  63 75 72 62 69 74 3d 30  3a 21 6c 61 73 74 62 69  |curbit=0:!lastbi|
000234d0  74 3d 30 0d dd 22 05 cd  0d dd 2c 13 c9 20 31 36  |t=0.."....,.. 16|
000234e0  30 30 3a cf 23 63 25 3d  73 74 25 0d dd 36 12 c9  |00:.#c%=st%..6..|
000234f0  20 31 37 30 30 3a cf 23  63 25 3d 31 36 0d dd 40  | 1700:.#c%=16..@|
00023500  18 c9 20 31 38 30 30 2c  31 38 35 30 3a cf 23 63  |.. 1800,1850:.#c|
00023510  25 3d 73 74 25 0d dd 4a  1b c9 20 31 39 30 30 3a  |%=st%..J.. 1900:|
00023520  cf 23 63 25 3d 31 32 38  3a 72 65 70 25 3d 2d 31  |.#c%=128:rep%=-1|
00023530  0d dd 54 13 c9 20 32 30  30 30 3a cf 23 63 25 3d  |..T.. 2000:.#c%=|
00023540  73 74 25 0d dd 5e 11 c9  20 32 31 30 30 3a cf 23  |st%..^.. 2100:.#|
00023550  63 25 3d 37 0d dd 68 13  c9 20 32 32 30 30 3a cf  |c%=7..h.. 2200:.|
00023560  23 63 25 3d 73 74 25 0d  dd 72 13 c9 20 32 32 35  |#c%=st%..r.. 225|
00023570  30 3a cf 23 63 25 3d 73  74 25 0d dd 7c 1b c9 20  |0:.#c%=st%..|.. |
00023580  32 33 30 30 3a cf 23 63  25 3d 73 74 25 3a 76 72  |2300:.#c%=st%:vr|
00023590  65 70 25 3d 30 0d dd 86  13 c9 20 32 34 30 30 3a  |ep%=0..... 2400:|
000235a0  cf 23 63 25 3d 73 74 25  0d dd 90 13 c9 20 32 35  |.#c%=st%..... 25|
000235b0  30 30 3a cf 23 63 25 3d  73 74 25 0d dd 9a 13 c9  |00:.#c%=st%.....|
000235c0  20 32 36 30 30 3a cf 23  63 25 3d 73 74 25 0d dd  | 2600:.#c%=st%..|
000235d0  a4 13 c9 20 32 37 30 30  3a cf 23 63 25 3d 73 74  |... 2700:.#c%=st|
000235e0  25 0d dd ae 13 c9 20 32  38 30 30 3a cf 23 63 25  |%..... 2800:.#c%|
000235f0  3d 73 74 25 0d dd b8 13  c9 20 32 39 30 30 3a cf  |=st%..... 2900:.|
00023600  23 63 25 3d 73 74 25 0d  dd c2 11 c9 20 33 30 30  |#c%=st%..... 300|
00023610  30 3a cf 23 63 25 3d 30  0d dd cc 16 c9 20 33 36  |0:.#c%=0..... 36|
00023620  30 30 3a 70 63 64 62 6c  6b 25 21 34 3d 30 0d dd  |00:pcdblk%!4=0..|
00023630  d6 15 c9 20 33 37 30 30  3a 6a 70 65 67 79 25 3d  |... 3700:jpegy%=|
00023640  73 79 25 0d dd e0 05 cb  0d dd ea 0d e7 63 61 63  |sy%..........cac|
00023650  68 65 25 20 8c 0d dd f4  10 e7 66 6c 61 67 3d 33  |he% ......flag=3|
00023660  36 30 30 20 8c 0d dd fe  1a 70 63 64 62 6c 6b 25  |600 .....pcdblk%|
00023670  21 34 3d 30 3a f2 72 65  66 69 6c 6c 70 63 64 0d  |!4=0:.refillpcd.|
00023680  de 08 05 cc 0d de 12 46  e7 63 61 63 68 65 25 3c  |.......F.cache%<|
00023690  66 69 6c 65 73 69 7a 65  25 20 c8 99 31 32 2c 34  |filesize% ..12,4|
000236a0  2c 63 25 2c 64 61 74 61  63 61 63 68 65 25 2c 63  |,c%,datacache%,c|
000236b0  61 63 68 65 25 3a 72 6f  77 73 74 6f 67 6f 25 3d  |ache%:rowstogo%=|
000236c0  63 61 63 68 65 72 6f 77  73 25 0d de 1c 05 cd 0d  |cacherows%......|
000236d0  de 26 14 62 75 66 66 25  3d 64 61 74 61 63 61 63  |.&.buff%=datacac|
000236e0  68 65 25 0d de 30 3b e7  63 61 63 68 65 62 79 74  |he%..0;.cachebyt|
000236f0  65 73 25 20 21 69 6e 63  61 63 68 65 70 74 72 3d  |es% !incacheptr=|
00023700  64 61 74 61 63 61 63 68  65 25 3a 21 6e 75 6d 6c  |datacache%:!numl|
00023710  65 66 74 74 6f 67 6f 3d  63 61 63 68 65 25 0d de  |efttogo=cache%..|
00023720  3a 43 e7 69 6e 70 75 74  3d 32 34 20 e7 72 62 6f  |:C.input=24 .rbo|
00023730  25 3e 3d 30 20 72 62 25  3d 62 75 66 66 25 2b 72  |%>=0 rb%=buff%+r|
00023740  62 6f 25 3a 67 62 25 3d  62 75 66 66 25 2b 67 62  |bo%:gb%=buff%+gb|
00023750  6f 25 3a 62 62 25 3d 62  75 66 66 25 2b 62 62 6f  |o%:bb%=buff%+bbo|
00023760  25 0d de 44 05 cd 0d de  4e 32 e7 66 6c 61 67 3d  |%..D....N2.flag=|
00023770  31 35 30 30 20 e7 63 6f  6d 70 72 65 73 73 69 6f  |1500 .compressio|
00023780  6e 3d 35 20 72 6f 77 73  74 6f 67 6f 25 3d 73 74  |n=5 rowstogo%=st|
00023790  72 69 70 72 6f 77 73 25  0d de 58 05 e1 0d ff     |riprows%..X....|
0002379f