home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 55
/
Amiga_Dream_55.iso
/
RISCOS
/
MAGAZINE
/
NEWS
/
3DENGI.ZIP
/
3DEngine
/
!PlotLib
/
src
/
s
/
plotter16
next >
Wrap
Text File
|
1998-08-11
|
15KB
|
891 lines
AREA |C$$code|, CODE, READONLY
EXPORT PlotterFcore16
EXPORT PlotterFGcore16
EXPORT PlotterFAcore16
EXPORT PlotterFAGcore16
EXPORT PlotterTcore16
EXPORT PlotterTGcore16
EXPORT PlotterTAcore16
EXPORT PlotterTAGcore16
EXPORT PlotterTTcore16
EXPORT PlotterTTGcore16
EXPORT PlotterTTAcore16
EXPORT PlotterTTAGcore16
;EXPORT Screen_Clear
PlotterFcore16
; r0 = int temp
; r1 = int c
; r2 = short *tpos
MOV r3,r1,ASR#8
pfclp
STRB r1,[r2],#1
STRB r3,[r2],#1
SUBS r0,r0,#1
BGE pfclp
MOVS PC,R14
PlotterTcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r8,r14}
LDMFD r12,{r4,r5,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r12= ptemp
; r14= tpos
TST r14,#3
BEQ ptcmainlp
MOV r6,r1,ASR#16
MOV r7,r0,ASR#16
MLA r6,r5,r6,r7
ADD r0,r0,r2
LDR r6,[r12,r6,LSL#1]
ADD r1,r1,r3
STRB r6,[r14],#1
MOV r6,r6,LSR#8
STRB r6,[r14],#1
SUBS r4,r4,#1
LDMLTFD r13!,{r4-r8,PC}^
ptcmainlp
CMP r4,#0
BEQ ptcsingleton
ptclp
MOV r6,r1,ASR#16
MOV r7,r0,ASR#16
MLA r6,r5,r6,r7
ADD r0,r0,r2
LDR r6,[r12,r6,LSL#1]
ADD r1,r1,r3
MOV r8,r1,ASR#16
MOV r7,r0,ASR#16
MLA r8,r5,r8,r7
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
ADD r1,r1,r3
MOV r6,r6,LSL#16
MOV r8,r8,LSL#16
ORR r8,r8,r6,LSR#16
STR r8,[r14],#4
SUBS r4,r4,#2
BGT ptclp
LDMLTFD r13!,{r4-r8,PC}^
ptcsingleton
MOV r6,r1,ASR#16
MOV r7,r0,ASR#16
MLA r6,r5,r6,r7
LDR r6,[r12,r6,LSL#1]
STRB r6,[r14],#1
MOV r6,r6,LSR#8
STRB r6,[r14],#1
LDMFD r13!,{r4-r8,PC}^
PlotterFAcore16
; r0 = int temp
; r1 = int c
; r2 = int alpha
; r3 = int *tpos
STMFD r13!,{r4-r8,r14}
MVN r12,#31
BIC r12,r12,#31<<10
MOV r2,r2,LSR#11
AND r7,r1,#31<<5
BIC r1,r1,r12
ORR r1,r1,r7,LSL#15
TST r3,#3
BEQ pfacmainlp
pfaclp
LDR r14,[r3]
; Stall
AND r7,r14,#31<<5
BIC r14,r14,r12
ORR r14,r14,r7,LSL#15
SUB r6,r1,r14
MUL r6,r2,r6
; Stall
ADD r6,r6,r14,LSL#5
AND r7,r6,#31<<25
BIC r6,r6,r12,LSL#5
ORR r6,r6,r7,LSR#15
MOV r6,r6,LSR#5
STRB r6,[r3],#1
MOV r6,r6,ASR#8
STRB r6,[r3],#1
SUBS r0,r0,#1
LDMLTFD r13!,{r4-r8,PC}^
pfacmainlp
CMP r0,#0
BEQ pfacsingleton
pfaclp2
LDR r8,[r3]
; Stall
AND r7,r8,#31<<5
BIC r14,r8,r12
ORR r14,r14,r7,LSL#15
SUB r6,r1,r14
MUL r6,r2,r6
; Stall
ADD r6,r6,r14,LSL#5
AND r7,r6,#31<<25
BIC r6,r6,r12,LSL#5
ORR r6,r6,r7,LSR#15
MOV r6,r6,LSR#5
MOV r8,r8,LSR#16
AND r7,r8,#31<<5
BIC r8,r8,r12
ORR r8,r8,r7,LSL#15
SUB r14,r1,r8
MUL r14,r2,r14
; Stall
ADD r14,r14,r8,LSL#5
AND r7,r14,#31<<25
BIC r14,r14,r12,LSL#5
ORR r14,r14,r7,LSR#15
MOV r14,r14,LSR#5
ORR r6,r6,r14,LSL#16
STR r6,[r3],#4
SUBS r0,r0,#2
BGT pfaclp2
pfacsingleton
LDR r14,[r3]
AND r7,r14,#31<<5
BIC r14,r14,r12
ORR r14,r14,r7,LSL#15
SUB r6,r1,r14
MUL r6,r2,r6
; Stall
ADD r6,r6,r14,LSL#5
AND r7,r6,#31<<25
BIC r6,r6,r12,LSL#5
ORR r6,r6,r7,LSR#15
MOV r6,r6,LSR#5
STRB r6,[r3],#1
MOV r6,r6,ASR#8
STRB r6,[r3],#1
LDMFD r13!,{r4-r8,PC}^
PlotterTAcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r11,r14}
LDMFD r12,{r4,r5,r6,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r6 = int alpha
; r12= ptemp
; r14= tpos
MVN r9,#31
BIC r9,r9,#31<<10
MOV r6,r6,LSR#11
TST r14,#3
BEQ ptacmainlp
MOV r8,r1,ASR#16
MOV r7,r0,ASR#16
MLA r8,r5,r8,r7
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
LDR r10,[r14]
AND r7,r8,#31<<5
BIC r8,r8,r9
ORR r8,r8,r7,LSL#15
AND r7,r10,#31<<5
BIC r10,r10,r9
ORR r10,r10,r7,LSL#15
SUB r8,r8,r10
MUL r8,r6,r8
ADD r1,r1,r3
ADD r8,r8,r10,LSL#5
AND r7,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r7,LSR#15
MOV r8,r8,LSR#5
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
SUBS r4,r4,#1
LDMLTFD r13!,{r4-r11,PC}^
ptacmainlp
CMP r4,#0
BEQ ptac_single
ptaclp
MOV r8,r1,ASR#16
MOV r7,r0,ASR#16
MLA r8,r5,r8,r7
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
LDR r10,[r14]
AND r7,r8,#31<<5
BIC r8,r8,r9
ORR r8,r8,r7,LSL#15
AND r7,r10,#31<<5
BIC r11,r10,r9
ORR r11,r11,r7,LSL#15
SUB r8,r8,r11
MUL r8,r6,r8
ADD r1,r1,r3
ADD r8,r8,r11,LSL#5
AND r7,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r7,LSR#15
MOV r8,r8,LSR#5
MOV r11,r1,ASR#16
MOV r7,r0,ASR#16
MLA r11,r5,r11,r7
ADD r0,r0,r2
LDR r11,[r12,r11,LSL#1]
MOV r10,r10,LSR#16
AND r7,r11,#31<<5
BIC r11,r11,r9
ORR r11,r11,r7,LSL#15
AND r7,r10,#31<<5
BIC r10,r10,r9
ORR r10,r10,r7,LSL#15
SUB r11,r11,r10
MUL r11,r6,r11
ADD r1,r1,r3
ADD r11,r11,r10,LSL#5
AND r7,r11,#31<<25
BIC r11,r11,r9,LSL#5
ORR r11,r11,r7,LSR#15
MOV r11,r11,LSR#5
ORR r11,r8,r11,LSL#16
STR r11,[r14],#4
SUBS r4,r4,#2
BGT ptaclp
LDMLTFD r13!,{r4-r11,PC}^
ptac_single
MOV r8,r1,ASR#16
MOV r7,r0,ASR#16
MLA r8,r5,r8,r7
LDR r8,[r12,r8,LSL#1]
LDR r10,[r14]
AND r7,r8,#31<<5
BIC r8,r8,r9
ORR r8,r8,r7,LSL#15
AND r7,r10,#31<<5
BIC r10,r10,r9
ORR r10,r10,r7,LSL#15
SUB r8,r8,r10
MUL r8,r6,r8
ADD r8,r8,r10,LSL#5
AND r7,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r7,LSR#15
MOV r8,r8,LSR#5
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
LDMFD r13!,{r4-r11,PC}^
PlotterTAGcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r11,r14}
LDMFD r12,{r4,r5,r6,r7,r10,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r6 = int alpha
; r7 = int si
; r10= int sdi
; r12= ptemp
; r14= tpos
MOV r6,r6,LSR#11
CMP r7,#0
BLE ptagc_lp_lt0
ptagc_lp
MOV r8,r1,ASR#16
MOV r11,r0,ASR#16
MLA r8,r5,r8,r11
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
MOV r9,#31
AND r10,r8,#31
MUL r10,r7,r10
AND r11,r9,r8,LSR#5
MUL r11,r7,r11
CMP r10,#31<<16
MOVGT r10,#31<<16
AND r10,r9,r10,LSR#16
AND r8,r9,r8,LSR#10
MUL r8,r7,r8
CMP r11,#31<<16
MOVGT r11,#31<<16
AND r11,r9,r11,LSR#16
CMP r8,#31<<16
MOVGT r8,#31<<16
AND r8,r9,r8,LSR#16
ORR r10,r10,r11,LSL#5
ORR r8,r10,r8,LSL#10
MVN r9,#31
BIC r9,r9,#31<<10
LDR r10,[r14]
AND r11,r8,#31<<5
BIC r8,r8,r9
ORR r8,r8,r11,LSL#15
AND r11,r10,#31<<5
BIC r10,r10,r9
ORR r10,r10,r11,LSL#15
SUB r8,r8,r10
MUL r8,r6,r8
ADD r1,r1,r3
ADD r8,r8,r10,LSL#5
AND r11,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r11,LSR#15
LDR r10,[r13,#(9+4)*4]
MOV r8,r8,LSR#5
ADDS r7,r7,r10
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
BLT ptagc_lp_lt0_entry2
ptagc_lp_entry2
SUBS r4,r4,#1
BGE ptagc_lp
LDMFD r13!,{r4-r11,PC}^
ptagc_lp_lt0
ADD r0,r0,r2
MVN r9,#31
BIC r9,r9,#31<<10
LDR r10,[r14]
AND r11,r10,#31<<5
BIC r10,r10,r9
ORR r10,r10,r11,LSL#15
RSB r8,r10,#0
MUL r8,r6,r8
ADD r1,r1,r3
ADD r8,r8,r10,LSL#5
AND r11,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r11,LSR#15
LDR r10,[r13,#(9+4)*4]
MOV r8,r8,LSR#5
ADDS r7,r7,r10
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
BGT ptagc_lp_entry2
ptagc_lp_lt0_entry2
SUBS r4,r4,#1
BGE ptagc_lp_lt0
LDMFD r13!,{r4-r11,PC}^
PlotterTGcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r11,r14}
LDMFD r12,{r4,r5,r7,r10,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r7 = int si
; r10= int sdi
; r12= ptemp
; r14= tpos
CMP r7,#0
BLE ptgc_lp_lt0
ptgc_lp
MOV r8,r1,ASR#16
MOV r11,r0,ASR#16
MLA r8,r5,r8,r11
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
MOV r9,#31
AND r6,r8,#31
MUL r6,r7,r6
AND r11,r9,r8,LSR#5
MUL r11,r7,r11
CMP r6,#31<<16
MOVGT r6,#31<<16
AND r6,r9,r6,LSR#16
AND r8,r9,r8,LSR#10
MUL r8,r7,r8
CMP r11,#31<<16
MOVGT r11,#31<<16
AND r11,r9,r11,LSR#16
CMP r8,#31<<16
MOVGT r8,#31<<16
AND r8,r9,r8,LSR#16
ORR r6,r6,r11,LSL#5
ORR r8,r6,r8,LSL#10
ADD r1,r1,r3
ADDS r7,r7,r10
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
BLE ptgc_lp_lt0_entry2
ptgc_lp_entry2
SUBS r4,r4,#1
BGE ptgc_lp
LDMFD r13!,{r4-r11,PC}^
ptgc_lp_lt0
ADD r0,r0,r2
MOV r8,#0
ADD r1,r1,r3
ADDS r7,r7,r10
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
BGT ptgc_lp_entry2
ptgc_lp_lt0_entry2
SUBS r4,r4,#1
BGE ptgc_lp_lt0
LDMFD r13!,{r4-r11,PC}^
PlotterFAGcore16
; r0 = int temp
; r1 = int c
; r2 = int alpha
; r3 = int *tpos
; r9 = int si
; r10=int sdi
MOV r12,r13
STMFD r13!,{r5-r11,r14}
LDMFD r12,{r9,r10}
MVN r12,#31
BIC r12,r12,#31<<10
MOV r2,r2,LSR#11
AND r7,r1,#31<<5
BIC r1,r1,r12
ORR r1,r1,r7,LSL#15
MOV r5,#31
CMP r9,#0
BLE pfagclp_lt0
pfagclp
LDR r14,[r3]
AND r6,r1,#31
MUL r6,r9,r6
AND r11,r5,r1,LSR#20
MUL r11,r9,r11
CMP r6,#31<<16
MOVGT r6,#31<<16
AND r6,r5,r6,LSR#16
AND r8,r5,r1,LSR#10
MUL r8,r9,r8
CMP r11,#31<<16
MOVGT r11,#31<<16
AND r11,r5,r11,LSR#16
CMP r8,#31<<16
MOVGT r8,#31<<16
AND r8,r5,r8,LSR#16
ORR r6,r6,r8,LSL#10
ORR r8,r6,r11,LSL#20
AND r7,r14,#31<<5
BIC r14,r14,r12
ORR r14,r14,r7,LSL#15
SUB r6,r8,r14
MUL r6,r2,r6
; Stall
ADD r6,r6,r14,LSL#5
AND r7,r6,#31<<25
BIC r6,r6,r12,LSL#5
ORR r6,r6,r7,LSR#15
MOV r6,r6,LSR#5
STRB r6,[r3],#1
MOV r6,r6,ASR#8
STRB r6,[r3],#1
ADDS r9,r9,r10
BLE pfagclp_lt0_entry2
pfagclp_entry2
SUBS r0,r0,#1
BGE pfagclp
LDMFD r13!,{r5-r11,PC}^
pfagclp_lt0
LDR r14,[r3]
AND r7,r14,#31<<5
BIC r14,r14,r12
ORR r14,r14,r7,LSL#15
RSB r6,r14,#0
MUL r6,r2,r6
; Stall
ADD r6,r6,r14,LSL#5
AND r7,r6,#31<<25
BIC r6,r6,r12,LSL#5
ORR r6,r6,r7,LSR#15
MOV r6,r6,LSR#5
STRB r6,[r3],#1
MOV r6,r6,ASR#8
STRB r6,[r3],#1
ADDS r9,r9,r10
BGT pfagclp_entry2
pfagclp_lt0_entry2
SUBS r0,r0,#1
BGE pfagclp_lt0
LDMFD r13!,{r5-r11,PC}^
PlotterFGcore16
; r0 = int temp
; r1 = int c
; r2 = short *tpos
; r3 = int si
; r12= int sdi
LDR r12,[r13]
STMFD r13!,{r4-r6,r8,r11,r14}
MOV r5,#31
MOV r4,#0
CMP r3,#0
BLE pfgclp_lt0
pfgclp
AND r6,r1,#31
MUL r6,r3,r6
AND r11,r5,r1,LSR#5
MUL r11,r3,r11
CMP r6,#31<<16
MOVGT r6,#31<<16
AND r6,r5,r6,LSR#16
AND r8,r5,r1,LSR#10
MUL r8,r3,r8
CMP r11,#31<<16
MOVGT r11,#31<<16
AND r11,r5,r11,LSR#16
CMP r8,#31<<16
MOVGT r8,#31<<16
AND r8,r5,r8,LSR#16
ORR r6,r6,r8,LSL#10
ORR r8,r6,r11,LSL#5
STRB r8,[r2],#1
MOV r8,r8,ASR#8
STRB r8,[r2],#1
ADDS r3,r3,r12
BLE pfgclp_lt0_entry2
pfgclp_entry2
SUBS r0,r0,#1
BGE pfgclp
LDMFD r13!,{r4-r6,r8,r11,PC}^
pfgclp_lt0
STRB r4,[r2],#1
STRB r4,[r2],#1
ADDS r3,r3,r12
BGT pfgclp_entry2
pfgclp_lt0_entry2
SUBS r0,r0,#1
BGE pfgclp_lt0
LDMFD r13!,{r4-r6,r8,r11,PC}^
PlotterTTcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r9,r14}
LDMFD r12,{r4,r5,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r12= ptemp
; r14= tpos
MOV r9,#&FF
ORR r9,r9,#&FF00
pttcmainlp
MOV r6,r1,ASR#16
MOV r7,r0,ASR#16
MLA r6,r5,r6,r7
ADD r0,r0,r2
LDR r6,[r12,r6,LSL#1]
ADD r1,r1,r3
ANDS r6,r6,r9
STRNEB r6,[r14]
MOVNE r6,r6,LSR#8
STRNEB r6,[r14,#1]
ADD r14,r14,#2
SUBS r4,r4,#1
BGE pttcmainlp
LDMFD r13!,{r4-r9,PC}^
PlotterTTAcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r11,r14}
LDMFD r12,{r4,r5,r6,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r6 = int alpha
; r12= ptemp
; r14= tpos
MVN r9,#31
BIC r9,r9,#31<<10
MOV r6,r6,LSR#11
pttacmainlp
MOV r8,r1,ASR#16
MOV r7,r0,ASR#16
MLA r8,r5,r8,r7
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
LDR r10,[r14]
AND r7,r8,#31<<5
BIC r8,r8,r9
ORRS r8,r8,r7,LSL#15
BEQ pttac_trans
AND r7,r10,#31<<5
BIC r10,r10,r9
ORR r10,r10,r7,LSL#15
SUB r8,r8,r10
MUL r8,r6,r8
ADD r1,r1,r3
ADD r8,r8,r10,LSL#5
AND r7,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r7,LSR#15
MOV r8,r8,LSR#5
STRB r8,[r14],#1
MOV r8,r8,ASR#8
STRB r8,[r14],#1
SUBS r4,r4,#1
BGT pttacmainlp
LDMFD r13!,{r4-r11,PC}^
pttac_trans
ADD r1,r1,r3
SUBS r4,r4,#1
ADD r14,r14,#2
BGT pttacmainlp
LDMFD r13!,{r4-r11,PC}^
PlotterTTGcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r11,r14}
LDMFD r12,{r4,r5,r7,r10,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r7 = int si
; r10= int sdi
; r12= ptemp
; r14= tpos
CMP r7,#0
BLE pttgc_lp_lt0
pttgc_lp
MOV r8,r1,ASR#16
MOV r11,r0,ASR#16
MLA r8,r5,r8,r11
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
MOV r9,#31
CMP r8,#0
BEQ pttgc_nope
AND r6,r8,#31
MUL r6,r7,r6
AND r11,r9,r8,LSR#5
MUL r11,r7,r11
CMP r6,#31<<16
MOVGT r6,#31<<16
AND r6,r9,r6,LSR#16
AND r8,r9,r8,LSR#10
MUL r8,r7,r8
CMP r11,#31<<16
MOVGT r11,#31<<16
AND r11,r9,r11,LSR#16
CMP r8,#31<<16
MOVGT r8,#31<<16
AND r8,r9,r8,LSR#16
ORR r6,r6,r11,LSL#5
ORR r8,r6,r8,LSL#10
STRB r8,[r14]
MOV r8,r8,ASR#8
STRB r8,[r14,#1]
pttgc_nope
ADDS r7,r7,r10
ADD r1,r1,r3
ADD r14,r14,#2
BLE pttgc_lp_lt0_entry2
pttgc_lp_entry2
SUBS r4,r4,#1
BGE pttgc_lp
LDMFD r13!,{r4-r11,PC}^
pttgc_lp_lt0
MOV r8,r1,ASR#16
MOV r11,r0,ASR#16
MLA r8,r5,r8,r11
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
ADD r1,r1,r3
CMP r8,#0
BEQ pttgc_nope2
MOV r8,#0
STRB r8,[r14]
MOV r8,r8,ASR#8
STRB r8,[r14,#1]
pttgc_nope2
ADDS r7,r7,r10
ADD r14,r14,#2
BGT pttgc_lp_entry2
pttgc_lp_lt0_entry2
SUBS r4,r4,#1
BGE pttgc_lp_lt0
LDMFD r13!,{r4-r11,PC}^
PlotterTTAGcore16
; r0 = int su
; r1 = int sv
; r2 = int sdu
; r3 = int sdv
MOV r12,r13
STMFD r13!,{r4-r11,r14}
LDMFD r12,{r4,r5,r6,r7,r10,r12,r14}
; r4 = int temp
; r5 = int rowbytes
; r6 = int alpha
; r7 = int si
; r10= int sdi
; r12= ptemp
; r14= tpos
MOV r6,r6,LSR#11
CMP r7,#0
BLE pttagc_lp_lt0
pttagc_lp
MOV r8,r1,ASR#16
MOV r11,r0,ASR#16
MLA r8,r5,r8,r11
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
MOV r9,#31
CMP r8,#0
BEQ pttagc_nope
AND r10,r8,#31
MUL r10,r7,r10
AND r11,r9,r8,LSR#5
MUL r11,r7,r11
CMP r10,#31<<16
MOVGT r10,#31<<16
AND r10,r9,r10,LSR#16
AND r8,r9,r8,LSR#10
MUL r8,r7,r8
CMP r11,#31<<16
MOVGT r11,#31<<16
AND r11,r9,r11,LSR#16
CMP r8,#31<<16
MOVGT r8,#31<<16
AND r8,r9,r8,LSR#16
ORR r10,r10,r11,LSL#5
ORR r8,r10,r8,LSL#10
MVN r9,#31
BIC r9,r9,#31<<10
LDR r10,[r14]
AND r11,r8,#31<<5
BIC r8,r8,r9
ORR r8,r8,r11,LSL#15
AND r11,r10,#31<<5
BIC r10,r10,r9
ORR r11,r10,r11,LSL#15
SUB r8,r8,r11
MUL r8,r6,r8
LDR r10,[r13,#(9+4)*4]
ADD r8,r8,r11,LSL#5
AND r11,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r11,LSR#15
MOV r8,r8,LSR#5
STRB r8,[r14]
MOV r8,r8,ASR#8
STRB r8,[r14,#1]
pttagc_nope
ADD r1,r1,r3
ADDS r7,r7,r10
ADD r14,r14,#2
BLT pttagc_lp_lt0_entry2
pttagc_lp_entry2
SUBS r4,r4,#1
BGE pttagc_lp
LDMFD r13!,{r4-r11,PC}^
pttagc_lp_lt0
MOV r8,r1,ASR#16
MOV r11,r0,ASR#16
MLA r8,r5,r8,r11
ADD r0,r0,r2
LDR r8,[r12,r8,LSL#1]
ADD r1,r1,r3
CMP r8,#0
BEQ pttagc_nope2
MVN r9,#31
LDR r10,[r14]
BIC r9,r9,#31<<10
AND r11,r10,#31<<5
BIC r10,r10,r9
ORR r11,r10,r11,LSL#15
RSB r8,r11,#0
MUL r8,r6,r8
LDR r10,[r13,#(9+4)*4]
ADD r8,r8,r11,LSL#5
AND r11,r8,#31<<25
BIC r8,r8,r9,LSL#5
ORR r8,r8,r11,LSR#15
MOV r8,r8,LSR#5
STRB r8,[r14]
MOV r8,r8,ASR#8
STRB r8,[r14,#1]
pttagc_nope2
ADDS r7,r7,r10
ADD r14,r14,#2
BGT pttagc_lp_entry2
pttagc_lp_lt0_entry2
SUBS r4,r4,#1
BGE pttagc_lp_lt0
LDMFD r13!,{r4-r11,PC}^
END