aboutsummaryrefslogtreecommitdiffstats
path: root/ARM_assembly/MultProject/opt1-code-ymh15.s
diff options
context:
space:
mode:
authorzedarider <ymherklotz@gmail.com>2016-02-26 21:40:24 +0000
committerzedarider <ymherklotz@gmail.com>2016-02-26 21:40:24 +0000
commit6d8f08b4727e5630e547d0afbf39c819a43945f6 (patch)
tree1f3fcb0185e339aa7cd7a14ece31c4fa474de9a1 /ARM_assembly/MultProject/opt1-code-ymh15.s
parent110c42733ff3decdb62bc4347626489a2677d99b (diff)
downloadimperial_2015-6d8f08b4727e5630e547d0afbf39c819a43945f6.tar.gz
imperial_2015-6d8f08b4727e5630e547d0afbf39c819a43945f6.zip
Adding ARM Assembly files
Diffstat (limited to 'ARM_assembly/MultProject/opt1-code-ymh15.s')
-rw-r--r--ARM_assembly/MultProject/opt1-code-ymh15.s920
1 files changed, 920 insertions, 0 deletions
diff --git a/ARM_assembly/MultProject/opt1-code-ymh15.s b/ARM_assembly/MultProject/opt1-code-ymh15.s
new file mode 100644
index 0000000..e55df5d
--- /dev/null
+++ b/ARM_assembly/MultProject/opt1-code-ymh15.s
@@ -0,0 +1,920 @@
+INA DCD 0x4, 0x0
+INB DCD -2, -1
+OUT FILL 4*4
+
+ LDR R0, =INA
+ LDR R1, =INB
+ LDR R2, =OUT
+ BL SMUL64X64
+ END
+
+SMUL64X64 STMED R13!, {R0, R1, R4-R12, LR}
+ LDR R3, [R0]
+ LDR R4, [R0, #4]
+ LDR R7, [R1]
+ LDR R8, [R1, #4]
+ MOV R5, #0
+ MOV R6, #0
+ MVN R1, R7
+ ADDS R1, R1, #1
+ MVN R11, R8
+ ADC R11, R11, #0
+ MOV R10, #0
+ AND R9, R3, #1 ;1
+ CMP R9, R10
+ BEQ CONT1
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT1 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;2
+ CMP R9, R10
+ BEQ CONT2
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT2 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;3
+ CMP R9, R10
+ BEQ CONT3
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT3 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;4
+ CMP R9, R10
+ BEQ CONT4
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT4 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;5
+ CMP R9, R10
+ BEQ CONT5
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT5 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;6
+ CMP R9, R10
+ BEQ CONT6
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT6 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;7
+ CMP R9, R10
+ BEQ CONT7
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT7 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;8
+ CMP R9, R10
+ BEQ CONT8
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT8 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;9
+ CMP R9, R10
+ BEQ CONT9
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT9 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;10
+ CMP R9, R10
+ BEQ CONT10
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT10 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;11
+ CMP R9, R10
+ BEQ CONT11
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT11 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;12
+ CMP R9, R10
+ BEQ CONT12
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT12 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;13
+ CMP R9, R10
+ BEQ CONT13
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT13 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;14
+ CMP R9, R10
+ BEQ CONT14
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT14 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;15
+ CMP R9, R10
+ BEQ CONT15
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT15 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;16
+ CMP R9, R10
+ BEQ CONT16
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT16 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;17
+ CMP R9, R10
+ BEQ CONT17
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT17 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;18
+ CMP R9, R10
+ BEQ CONT18
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT18 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;19
+ CMP R9, R10
+ BEQ CONT19
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT19 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;20
+ CMP R9, R10
+ BEQ CONT20
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT20 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;21
+ CMP R9, R10
+ BEQ CONT21
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT21 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;22
+ CMP R9, R10
+ BEQ CONT22
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT22 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;23
+ CMP R9, R10
+ BEQ CONT23
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT23 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;24
+ CMP R9, R10
+ BEQ CONT24
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT24 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;25
+ CMP R9, R10
+ BEQ CONT25
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT25 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;26
+ CMP R9, R10
+ BEQ CONT26
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT26 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;27
+ CMP R9, R10
+ BEQ CONT27
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT27 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;28
+ CMP R9, R10
+ BEQ CONT28
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT28 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;29
+ CMP R9, R10
+ BEQ CONT29
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT29 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;30
+ CMP R9, R10
+ BEQ CONT30
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT30 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;31
+ CMP R9, R10
+ BEQ CONT31
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT31 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;32
+ CMP R9, R10
+ BEQ CONT32
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT32 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;33
+ CMP R9, R10
+ BEQ CONT33
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT33 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;34
+ CMP R9, R10
+ BEQ CONT34
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT34 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;35
+ CMP R9, R10
+ BEQ CONT35
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT35 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;36
+ CMP R9, R10
+ BEQ CONT36
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT36 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;37
+ CMP R9, R10
+ BEQ CONT37
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT37 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;38
+ CMP R9, R10
+ BEQ CONT38
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT38 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;39
+ CMP R9, R10
+ BEQ CONT39
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT39 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;40
+ CMP R9, R10
+ BEQ CONT40
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT40 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;41
+ CMP R9, R10
+ BEQ CONT41
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT41 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;42
+ CMP R9, R10
+ BEQ CONT42
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT42 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;43
+ CMP R9, R10
+ BEQ CONT43
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT43 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;44
+ CMP R9, R10
+ BEQ CONT44
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT44 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;45
+ CMP R9, R10
+ BEQ CONT45
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT45 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;46
+ CMP R9, R10
+ BEQ CONT46
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT46 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;47
+ CMP R9, R10
+ BEQ CONT47
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT47 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;48
+ CMP R9, R10
+ BEQ CONT48
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT48 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;49
+ CMP R9, R10
+ BEQ CONT49
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT49 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;50
+ CMP R9, R10
+ BEQ CONT50
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT50 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;51
+ CMP R9, R10
+ BEQ CONT51
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT51 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;52
+ CMP R9, R10
+ BEQ CONT52
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT52 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;53
+ CMP R9, R10
+ BEQ CONT53
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT53 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;54
+ CMP R9, R10
+ BEQ CONT54
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT54 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;55
+ CMP R9, R10
+ BEQ CONT55
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT55 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;56
+ CMP R9, R10
+ BEQ CONT56
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT56 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;57
+ CMP R9, R10
+ BEQ CONT57
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT57 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;58
+ CMP R9, R10
+ BEQ CONT58
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT58 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;59
+ CMP R9, R10
+ BEQ CONT59
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT59 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;60
+ CMP R9, R10
+ BEQ CONT60
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT60 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;61
+ CMP R9, R10
+ BEQ CONT61
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT61 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;62
+ CMP R9, R10
+ BEQ CONT62
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT62 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;63
+ CMP R9, R10
+ BEQ CONT63
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT63 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ AND R9, R3, #1 ;64
+ CMP R9, R10
+ BEQ CONT64
+ MOVHI R0, R1
+ MOVHI R12, R11
+ MOVLO R0, R7
+ MOVLO R12, R8
+ ADDS R5, R5, R0
+ ADC R6, R6, R12
+CONT64 MOVS R6, R6, ASR #1
+ MOVS R5, R5, RRX
+ MOVS R4, R4, RRX
+ MOVS R3, R3, RRX
+ MOV R10, R9
+ STMIA R2, {R3-R6}
+ LDMED R13!, {R0, R1, R4-R12, PC}