57 lines
		
	
	
	
		
			671 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			671 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define _Csa, _Csb
 | 
						|
.sect.text
 | 
						|
_Csa:
 | 
						|
 LDMFD R12<, {R0}
 | 
						|
 LDMFD R12<, {R1}
 | 
						|
 STMFD R12<, {R4}
 | 
						|
 LDR R2, [R0, #4]
 | 
						|
 MOV R4,R2
 | 
						|
 LDR R3, [R0, #8]
 | 
						|
 CMP R1,R2
 | 
						|
 BLT 1F
 | 
						|
 ADD R2,R2,R3
 | 
						|
 CMP R1,R2
 | 
						|
 BGT 1F
 | 
						|
 ADD R2, R0, #12
 | 
						|
 SUB R1,R1,R4
 | 
						|
 ADD R2, R2, R1, LSL #2
 | 
						|
 LDR R2, [R2]
 | 
						|
 CMP R2, #0
 | 
						|
 BAL 2F
 | 
						|
1:
 | 
						|
 LDR R2, [R0]
 | 
						|
 CMP R2, #0
 | 
						|
2:
 | 
						|
 BNE 3F
 | 
						|
 BAL.L _CasErr
 | 
						|
3:
 | 
						|
 LDMFD R12<,{R4}
 | 
						|
 MOV R15,R14
 | 
						|
 | 
						|
_Csb:
 | 
						|
 LDMFD R12<, {R0}
 | 
						|
 LDMFD R12<, {R1}
 | 
						|
 STMFD R12<,{R4}
 | 
						|
 LDR R2, [R0, #4]
 | 
						|
 LDR R3, [R0]
 | 
						|
 ADD R0, R0, #8
 | 
						|
1:
 | 
						|
 CMP R2, #0
 | 
						|
 BEQ 3F
 | 
						|
 LDR R4, [R0]
 | 
						|
 CMP R4, R1
 | 
						|
 BNE 2F
 | 
						|
 LDR R3, [R0, #4]
 | 
						|
 BAL 3F
 | 
						|
2:
 | 
						|
 ADD R0, R0, #8
 | 
						|
 SUB R2,R2,#1
 | 
						|
 BAL 1B
 | 
						|
3:
 | 
						|
 CMP R3, #0
 | 
						|
 BNE 4F
 | 
						|
 BAL.L _CasErr
 | 
						|
4:
 | 
						|
 LDMFD R12<,{R4}
 | 
						|
 MOV R15, R14
 | 
						|
 |