summaryrefslogtreecommitdiff
path: root/asm/librtc.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-01-23 12:25:42 -0800
committerYamaArashi <shadow962@live.com>2016-01-23 12:25:42 -0800
commit1362b60f3467f0894d55e82f3294980b6373021d (patch)
treec53b76333cbb099df9e12dfe7ebfc56bd258b707 /asm/librtc.s
Initial commit
Diffstat (limited to 'asm/librtc.s')
-rw-r--r--asm/librtc.s1152
1 files changed, 1152 insertions, 0 deletions
diff --git a/asm/librtc.s b/asm/librtc.s
new file mode 100644
index 000000000..80387ce2f
--- /dev/null
+++ b/asm/librtc.s
@@ -0,0 +1,1152 @@
+ thumb_func_start RTC_SetReadWrite
+; void RTC_SetReadWrite()
+RTC_SetReadWrite: ; 81DFF18
+ push {r7,lr}
+ mov r7, sp
+ bl RTC_SetReadWriteInternal
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ pop {r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end RTC_SetReadWrite
+
+ thumb_func_start RTC_SetReadOnly
+; void RTC_SetReadOnly()
+RTC_SetReadOnly: ; 81DFF30
+ push {r7,lr}
+ mov r7, sp
+ bl RTC_SetReadOnlyInternal
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ pop {r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end RTC_SetReadOnly
+
+ thumb_func_start RTC_Init
+; u8 RTC_Init()
+RTC_Init: ; 81DFF48
+ push {r7,lr}
+ sub sp, 0x10
+ mov r7, sp
+ adds r1, r7, 0x4
+ adds r0, r1, 0
+ bl RTC_GetControlReg
+ lsls r1, r0, 24
+ lsrs r0, r1, 24
+ cmp r0, 0
+ bne _081DFF62
+ movs r0, 0
+ b _081E0016
+_081DFF62:
+ adds r0, r7, 0
+ movs r1, 0
+ strb r1, [r0]
+ adds r0, r7, 0x4
+ ldrb r1, [r0, 0x7]
+ movs r2, 0xC0
+ adds r0, r1, 0
+ ands r0, r2
+ adds r2, r0, 0
+ lsls r1, r2, 24
+ lsrs r0, r1, 24
+ cmp r0, 0x80
+ beq _081DFF92
+ adds r0, r7, 0x4
+ ldrb r1, [r0, 0x7]
+ movs r2, 0xC0
+ adds r0, r1, 0
+ ands r0, r2
+ adds r2, r0, 0
+ lsls r1, r2, 24
+ lsrs r0, r1, 24
+ cmp r0, 0
+ bne _081DFFB0
+ b _081DFF92
+_081DFF92:
+ bl RTC_Reset
+ lsls r1, r0, 24
+ lsrs r0, r1, 24
+ cmp r0, 0
+ bne _081DFFA2
+ movs r0, 0
+ b _081E0016
+_081DFFA2:
+ adds r1, r7, 0
+ adds r0, r7, 0
+ adds r1, r7, 0
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+_081DFFB0:
+ adds r1, r7, 0x4
+ adds r0, r1, 0
+ bl RTC_GetTime
+ adds r0, r7, 0x4
+ ldrb r1, [r0, 0x6]
+ movs r2, 0x80
+ adds r0, r1, 0
+ ands r0, r2
+ adds r2, r0, 0
+ lsls r1, r2, 24
+ lsrs r0, r1, 24
+ cmp r0, 0
+ beq _081DFFFE
+ bl RTC_Reset
+ lsls r1, r0, 24
+ lsrs r0, r1, 24
+ cmp r0, 0
+ bne _081DFFF0
+ adds r0, r7, 0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r1, r0, 0
+ movs r2, 0xF
+ adds r0, r1, 0
+ bics r0, r2
+ adds r1, r0, 0
+ lsls r0, r1, 24
+ lsrs r1, r0, 24
+ adds r0, r1, 0
+ b _081E0016
+_081DFFF0:
+ adds r1, r7, 0
+ adds r0, r7, 0
+ adds r1, r7, 0
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+_081DFFFE:
+ adds r0, r7, 0
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r1, r0, 0
+ movs r2, 0x1
+ adds r0, r1, 0
+ orrs r0, r2
+ adds r1, r0, 0
+ lsls r0, r1, 24
+ lsrs r1, r0, 24
+ adds r0, r1, 0
+ b _081E0016
+_081E0016:
+ add sp, 0x10
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_Init
+
+ thumb_func_start RTC_Reset
+; u8 RTC_Reset()
+RTC_Reset: ; 81E0020
+ push {r7,lr}
+ sub sp, 0x10
+ mov r7, sp
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E0038
+ movs r0, 0
+ b _081E009C
+ .pool
+_081E0038:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x60
+ bl RTC_WriteByte
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ adds r0, r7, 0x4
+ ldrb r1, [r0, 0x7]
+ movs r2, 0
+ ands r1, r2
+ adds r2, r1, 0
+ movs r3, 0x40
+ adds r1, r2, 0
+ orrs r1, r3
+ adds r2, r1, 0
+ strb r2, [r0, 0x7]
+ adds r1, r7, 0x4
+ adds r0, r1, 0
+ bl RTC_SetControlReg
+ adds r1, r7, 0
+ strb r0, [r1]
+ adds r0, r7, 0
+ ldrb r1, [r0]
+ adds r0, r1, 0
+ b _081E009C
+ .pool
+_081E009C:
+ add sp, 0x10
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_Reset
+
+ thumb_func_start RTC_GetControlReg
+; u8 RTC_GetControlReg(struct RTCInfo *rtc)
+RTC_GetControlReg: ; 81E00A4
+ push {r4,r7,lr}
+ sub sp, 0x8
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E00BC
+ movs r0, 0
+ b _081E0168
+ .pool
+_081E00BC:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x63
+ bl RTC_WriteByte
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x5
+ strh r1, [r0]
+ bl RTC_ReadByte
+ adds r1, r7, 0x4
+ strb r0, [r1]
+ ldr r0, [r7]
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ movs r3, 0xC0
+ adds r1, r2, 0
+ ands r1, r3
+ adds r2, r7, 0x4
+ ldrb r3, [r2]
+ movs r4, 0x20
+ adds r2, r3, 0
+ ands r2, r4
+ adds r4, r2, 0
+ lsls r3, r4, 24
+ lsrs r2, r3, 24
+ lsrs r3, r2, 3
+ adds r2, r3, 0
+ orrs r1, r2
+ adds r2, r7, 0x4
+ ldrb r3, [r2]
+ movs r4, 0x8
+ adds r2, r3, 0
+ ands r2, r4
+ adds r4, r2, 0
+ lsls r3, r4, 24
+ lsrs r2, r3, 24
+ lsrs r3, r2, 2
+ adds r2, r3, 0
+ orrs r1, r2
+ adds r2, r7, 0x4
+ ldrb r3, [r2]
+ movs r4, 0x2
+ adds r2, r3, 0
+ ands r2, r4
+ adds r4, r2, 0
+ lsls r3, r4, 24
+ lsrs r2, r3, 24
+ lsrs r3, r2, 1
+ adds r2, r3, 0
+ orrs r1, r2
+ ldrb r2, [r0, 0x7]
+ movs r3, 0
+ ands r2, r3
+ adds r3, r2, 0
+ adds r2, r3, 0
+ orrs r2, r1
+ adds r1, r2, 0
+ strb r1, [r0, 0x7]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E0168
+ .pool
+_081E0168:
+ add sp, 0x8
+ pop {r4,r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_GetControlReg
+
+ thumb_func_start RTC_SetControlReg
+; u8 RTC_SetControlReg(struct RTCInfo *rtc)
+RTC_SetControlReg: ; 81E0170
+ push {r4,r7,lr}
+ sub sp, 0x8
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E0188
+ movs r0, 0
+ b _081E0210
+ .pool
+_081E0188:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ adds r0, r7, 0x4
+ ldr r1, [r7]
+ ldrb r2, [r1, 0x7]
+ movs r3, 0x4
+ adds r1, r2, 0
+ ands r1, r3
+ adds r2, r1, 0
+ lsls r1, r2, 3
+ ldr r2, [r7]
+ ldrb r3, [r2, 0x7]
+ movs r4, 0x2
+ adds r2, r3, 0
+ ands r2, r4
+ adds r3, r2, 0
+ lsls r2, r3, 2
+ adds r3, r2, 0
+ movs r4, 0x40
+ adds r2, r3, 0
+ orrs r2, r4
+ orrs r1, r2
+ ldr r2, [r7]
+ ldrb r3, [r2, 0x7]
+ movs r4, 0x1
+ adds r2, r3, 0
+ ands r2, r4
+ adds r3, r2, 0
+ lsls r2, r3, 1
+ orrs r1, r2
+ adds r2, r1, 0
+ strb r2, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x62
+ bl RTC_WriteByte
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ adds r0, r1, 0
+ bl RTC_WriteByteReversed
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E0210
+ .pool
+_081E0210:
+ add sp, 0x8
+ pop {r4,r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_SetControlReg
+
+ thumb_func_start RTC_GetDateTime
+; u8 RTC_GetDateTime(u8 *rtcDateTime)
+RTC_GetDateTime: ; 81E0218
+ push {r7,lr}
+ sub sp, 0x8
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E0230
+ movs r0, 0
+ b _081E02C0
+ .pool
+_081E0230:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x65
+ bl RTC_WriteByte
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x5
+ strh r1, [r0]
+ adds r0, r7, 0x4
+ movs r1, 0
+ strb r1, [r0]
+_081E025A:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ cmp r1, 0x6
+ bls _081E0270
+ b _081E028E
+ .pool
+_081E0270:
+ bl RTC_ReadByte
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ ldr r3, [r7]
+ adds r1, r2, r3
+ strb r0, [r1]
+ adds r1, r7, 0x4
+ adds r0, r7, 0x4
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+ b _081E025A
+_081E028E:
+ ldr r1, [r7]
+ adds r0, r1, 0x4
+ ldr r2, [r7]
+ adds r1, r2, 0x4
+ ldrb r2, [r1]
+ movs r3, 0x7F
+ adds r1, r2, 0
+ ands r1, r3
+ adds r2, r1, 0
+ strb r2, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E02C0
+ .pool
+_081E02C0:
+ add sp, 0x8
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_GetDateTime
+
+ thumb_func_start RTC_SetDateTime
+; u8 RTC_SetDateTime(u8 *rtcDateTime)
+RTC_SetDateTime: ; 81E02C8
+ push {r7,lr}
+ sub sp, 0x8
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E02E0
+ movs r0, 0
+ b _081E035C
+ .pool
+_081E02E0:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x64
+ bl RTC_WriteByte
+ adds r0, r7, 0x4
+ movs r1, 0
+ strb r1, [r0]
+_081E0304:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ cmp r1, 0x6
+ bls _081E031C
+ b _081E033C
+ .pool
+_081E031C:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ ldr r2, [r7]
+ adds r0, r1, r2
+ ldrb r1, [r0]
+ adds r0, r1, 0
+ bl RTC_WriteByteReversed
+ adds r1, r7, 0x4
+ adds r0, r7, 0x4
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+ b _081E0304
+_081E033C:
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E035C
+ .pool
+_081E035C:
+ add sp, 0x8
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_SetDateTime
+
+ thumb_func_start RTC_GetTime
+; u8 RTC_GetTime(u8 *rtcTime)
+RTC_GetTime: ; 81E0364
+ push {r7,lr}
+ sub sp, 0x8
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E037C
+ movs r0, 0
+ b _081E0410
+ .pool
+_081E037C:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x67
+ bl RTC_WriteByte
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x5
+ strh r1, [r0]
+ adds r0, r7, 0x4
+ movs r1, 0
+ strb r1, [r0]
+_081E03A6:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ cmp r1, 0x2
+ bls _081E03BC
+ b _081E03DC
+ .pool
+_081E03BC:
+ bl RTC_ReadByte
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ ldr r3, [r7]
+ adds r1, r2, r3
+ adds r2, r1, 0x4
+ strb r0, [r2]
+ adds r1, r7, 0x4
+ adds r0, r7, 0x4
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+ b _081E03A6
+_081E03DC:
+ ldr r1, [r7]
+ adds r0, r1, 0x4
+ ldr r2, [r7]
+ adds r1, r2, 0x4
+ ldrb r2, [r1]
+ movs r3, 0x7F
+ adds r1, r2, 0
+ ands r1, r3
+ adds r2, r1, 0
+ strb r2, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E0410
+ .pool
+_081E0410:
+ add sp, 0x8
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_GetTime
+
+ thumb_func_start RTC_SetTime
+; u8 RTC_SetTime(u8 *rtcTime)
+RTC_SetTime: ; 81E0418
+ push {r7,lr}
+ sub sp, 0x8
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E0430
+ movs r0, 0
+ b _081E04AC
+ .pool
+_081E0430:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x66
+ bl RTC_WriteByte
+ adds r0, r7, 0x4
+ movs r1, 0
+ strb r1, [r0]
+_081E0454:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ cmp r1, 0x2
+ bls _081E046C
+ b _081E048E
+ .pool
+_081E046C:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ ldr r2, [r7]
+ adds r0, r1, r2
+ adds r1, r0, 0x4
+ ldrb r2, [r1]
+ adds r0, r2, 0
+ bl RTC_WriteByteReversed
+ adds r1, r7, 0x4
+ adds r0, r7, 0x4
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+ b _081E0454
+_081E048E:
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E04AC
+ .pool
+_081E04AC:
+ add sp, 0x8
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_SetTime
+
+ thumb_func_start RTC_SetUnknownData
+; u8 RTC_SetUnknownData(struct RTCInfo *rtc)
+RTC_SetUnknownData: ; 81E04B4
+ push {r4,r7,lr}
+ sub sp, 0xC
+ mov r7, sp
+ str r0, [r7]
+ ldr r0, =0x03000F36
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bne _081E04CC
+ movs r0, 0
+ b _081E05E0
+ .pool
+_081E04CC:
+ ldr r0, =0x03000F36
+ movs r1, 0x1
+ strb r1, [r0]
+ adds r0, r7, 0
+ adds r0, 0x8
+ ldr r1, [r7]
+ ldrb r2, [r1, 0x8]
+ movs r3, 0xF
+ adds r1, r2, 0
+ ands r1, r3
+ ldr r2, [r7]
+ ldrb r3, [r2, 0x8]
+ lsrs r2, r3, 4
+ adds r3, r2, 0
+ movs r4, 0xF
+ adds r2, r3, 0
+ ands r2, r4
+ adds r4, r2, 0
+ lsls r3, r4, 24
+ lsrs r2, r3, 24
+ adds r4, r2, 0
+ lsls r3, r4, 2
+ adds r3, r2
+ lsls r2, r3, 1
+ adds r1, r2
+ ldrb r2, [r0]
+ movs r3, 0
+ ands r2, r3
+ adds r3, r2, 0
+ adds r2, r3, 0
+ orrs r2, r1
+ adds r1, r2, 0
+ strb r1, [r0]
+ adds r0, r7, 0
+ adds r0, 0x8
+ ldrb r1, [r0]
+ cmp r1, 0xB
+ bhi _081E0538
+ adds r0, r7, 0
+ adds r0, 0x8
+ ldr r1, [r7]
+ ldrb r2, [r0]
+ movs r3, 0
+ ands r2, r3
+ adds r3, r2, 0
+ ldrb r1, [r1, 0x8]
+ adds r2, r3, 0
+ orrs r2, r1
+ adds r1, r2, 0
+ strb r1, [r0]
+ b _081E0556
+ .pool
+_081E0538:
+ adds r0, r7, 0
+ adds r0, 0x8
+ ldr r1, [r7]
+ ldrb r2, [r1, 0x8]
+ movs r3, 0x80
+ adds r1, r2, 0
+ orrs r1, r3
+ ldrb r2, [r0]
+ movs r3, 0
+ ands r2, r3
+ adds r3, r2, 0
+ adds r2, r3, 0
+ orrs r2, r1
+ adds r1, r2, 0
+ strb r1, [r0]
+_081E0556:
+ adds r0, r7, 0
+ adds r0, 0x8
+ ldr r1, [r7]
+ ldrb r2, [r0, 0x1]
+ movs r3, 0
+ ands r2, r3
+ adds r3, r2, 0
+ ldrb r1, [r1, 0x9]
+ adds r2, r3, 0
+ orrs r2, r1
+ adds r1, r2, 0
+ strb r1, [r0, 0x1]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ ldr r0, =GPIOPortDirection
+ movs r1, 0x7
+ strh r1, [r0]
+ movs r0, 0x68
+ bl RTC_WriteByte
+ adds r0, r7, 0x4
+ movs r1, 0
+ strb r1, [r0]
+_081E058C:
+ adds r0, r7, 0x4
+ ldrb r1, [r0]
+ cmp r1, 0x1
+ bls _081E05A0
+ b _081E05C2
+ .pool
+_081E05A0:
+ adds r0, r7, 0
+ adds r0, 0x8
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ adds r0, r2
+ ldrb r1, [r0]
+ adds r0, r1, 0
+ bl RTC_WriteByteReversed
+ adds r1, r7, 0x4
+ adds r0, r7, 0x4
+ adds r1, r7, 0x4
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+ b _081E058C
+_081E05C2:
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r0, =0x03000F36
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081E05E0
+ .pool
+_081E05E0:
+ add sp, 0xC
+ pop {r4,r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_SetUnknownData
+
+ thumb_func_start RTC_WriteByte
+; u8 RTC_WriteByte(u8 value)
+RTC_WriteByte: ; 81E05E8
+ push {r4,r5,r7,lr}
+ sub sp, 0x4
+ mov r7, sp
+ adds r1, r0, 0
+ adds r2, r7, 0
+ strb r1, [r2]
+ adds r1, r7, 0x1
+ movs r2, 0
+ strb r2, [r1]
+_081E05FA:
+ adds r1, r7, 0x1
+ ldrb r2, [r1]
+ cmp r2, 0x7
+ bls _081E0604
+ b _081E0684
+_081E0604:
+ adds r1, r7, 0x2
+ adds r3, r7, 0
+ ldrb r2, [r3]
+ adds r3, r7, 0x1
+ ldrb r4, [r3]
+ movs r5, 0x7
+ subs r3, r5, r4
+ asrs r2, r3
+ adds r3, r2, 0
+ movs r4, 0x1
+ adds r2, r3, 0
+ ands r2, r4
+ adds r3, r2, 0
+ strb r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x4
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x4
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x4
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x5
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ adds r2, r7, 0x1
+ adds r1, r7, 0x1
+ adds r2, r7, 0x1
+ ldrb r3, [r2]
+ adds r2, r3, 0x1
+ adds r3, r2, 0
+ strb r3, [r1]
+ b _081E05FA
+ .pool
+_081E0684:
+ add sp, 0x4
+ pop {r4,r5,r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_WriteByte
+
+ thumb_func_start RTC_WriteByteReversed
+; u8 RTC_WriteByteReversed(u8 value)
+RTC_WriteByteReversed: ; 81E068C
+ push {r4,r7,lr}
+ sub sp, 0x4
+ mov r7, sp
+ adds r1, r0, 0
+ adds r2, r7, 0
+ strb r1, [r2]
+ adds r1, r7, 0x1
+ movs r2, 0
+ strb r2, [r1]
+_081E069E:
+ adds r1, r7, 0x1
+ ldrb r2, [r1]
+ cmp r2, 0x7
+ bls _081E06A8
+ b _081E0724
+_081E06A8:
+ adds r1, r7, 0x2
+ adds r3, r7, 0
+ ldrb r2, [r3]
+ adds r3, r7, 0x1
+ ldrb r4, [r3]
+ asrs r2, r4
+ adds r3, r2, 0
+ movs r4, 0x1
+ adds r2, r3, 0
+ ands r2, r4
+ adds r3, r2, 0
+ strb r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x4
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x4
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x4
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ ldr r1, =GPIOPortData
+ adds r2, r7, 0x2
+ ldrb r3, [r2]
+ adds r2, r3, 0
+ lsls r3, r2, 1
+ adds r2, r3, 0
+ movs r3, 0x5
+ orrs r2, r3
+ adds r3, r2, 0
+ strh r3, [r1]
+ adds r2, r7, 0x1
+ adds r1, r7, 0x1
+ adds r2, r7, 0x1
+ ldrb r3, [r2]
+ adds r2, r3, 0x1
+ adds r3, r2, 0
+ strb r3, [r1]
+ b _081E069E
+ .pool
+_081E0724:
+ add sp, 0x4
+ pop {r4,r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_WriteByteReversed
+
+ thumb_func_start RTC_ReadByte
+; u8 RTC_ReadByte()
+RTC_ReadByte: ; 81E072C
+ push {r7,lr}
+ sub sp, 0x4
+ mov r7, sp
+ adds r0, r7, 0
+ movs r1, 0
+ strb r1, [r0]
+_081E0738:
+ adds r0, r7, 0
+ ldrb r1, [r0]
+ cmp r1, 0x7
+ bls _081E0742
+ b _081E07A8
+_081E0742:
+ ldr r0, =GPIOPortData
+ movs r1, 0x4
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x4
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x4
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x4
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x4
+ strh r1, [r0]
+ ldr r0, =GPIOPortData
+ movs r1, 0x5
+ strh r1, [r0]
+ adds r0, r7, 0x1
+ ldr r1, =GPIOPortData
+ ldrh r2, [r1]
+ movs r3, 0x2
+ adds r1, r2, 0
+ ands r1, r3
+ adds r3, r1, 0
+ lsls r2, r3, 16
+ lsrs r1, r2, 16
+ lsrs r2, r1, 1
+ adds r1, r2, 0
+ strb r1, [r0]
+ adds r0, r7, 0x2
+ adds r1, r7, 0x2
+ ldrb r2, [r1]
+ lsrs r1, r2, 1
+ adds r2, r7, 0x1
+ ldrb r3, [r2]
+ lsls r2, r3, 7
+ orrs r1, r2
+ adds r2, r1, 0
+ strb r2, [r0]
+ adds r1, r7, 0
+ adds r0, r7, 0
+ adds r1, r7, 0
+ ldrb r2, [r1]
+ adds r1, r2, 0x1
+ adds r2, r1, 0
+ strb r2, [r0]
+ b _081E0738
+ .pool
+_081E07A8:
+ adds r0, r7, 0x2
+ ldrb r1, [r0]
+ adds r0, r1, 0
+ b _081E07B0
+_081E07B0:
+ add sp, 0x4
+ pop {r7}
+ pop {r1}
+ bx r1
+ thumb_func_end RTC_ReadByte
+
+ thumb_func_start RTC_SetReadWriteInternal
+; void RTC_SetReadWriteInternal()
+RTC_SetReadWriteInternal: ; 81E07B8
+ push {r7,lr}
+ mov r7, sp
+ ldr r0, =GPIOPortReadWrite
+ movs r1, 0x1
+ strh r1, [r0]
+ pop {r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end RTC_SetReadWriteInternal
+
+ thumb_func_start RTC_SetReadOnlyInternal
+; void RTC_SetReadOnlyInternal()
+RTC_SetReadOnlyInternal: ; 81E07CC
+ push {r7,lr}
+ mov r7, sp
+ ldr r0, =GPIOPortReadWrite
+ movs r1, 0
+ strh r1, [r0]
+ pop {r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end RTC_SetReadOnlyInternal