summaryrefslogtreecommitdiff
path: root/arm9/asm/libstd.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/libstd.s')
-rw-r--r--arm9/asm/libstd.s94
1 files changed, 94 insertions, 0 deletions
diff --git a/arm9/asm/libstd.s b/arm9/asm/libstd.s
new file mode 100644
index 00000000..39946c46
--- /dev/null
+++ b/arm9/asm/libstd.s
@@ -0,0 +1,94 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start STD_CompareNString
+STD_CompareNString: ; 0x020DE03C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ beq _020DE080
+ cmp r2, #0x0
+ mov lr, #0x0
+ ble _020DE080
+_020DE058:
+ ldrb r12, [r0, lr]
+ ldrb r3, [r1, lr]
+ cmp r12, r3
+ addne sp, sp, #0x4
+ subne r0, r12, r3
+ ldmneia sp!, {lr}
+ bxne lr
+ add lr, lr, #0x1
+ cmp lr, r2
+ blt _020DE058
+_020DE080:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start STD_CompareString
+STD_CompareString: ; 0x020DE090
+ b _020DE09C
+_020DE094:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+_020DE09C:
+ ldrsb r2, [r1, #0x0]
+ ldrsb r3, [r0, #0x0]
+ cmp r3, r2
+ bne _020DE0B4
+ cmp r3, #0x0
+ bne _020DE094
+_020DE0B4:
+ sub r0, r3, r2
+ bx lr
+
+ arm_func_start STD_GetStringLength
+STD_GetStringLength: ; 0x020DE0BC
+ ldrsb r1, [r0, #0x0]
+ mov r2, #0x0
+ cmp r1, #0x0
+ beq _020DE0DC
+_020DE0CC:
+ add r2, r2, #0x1
+ ldrsb r1, [r0, r2]
+ cmp r1, #0x0
+ bne _020DE0CC
+_020DE0DC:
+ mov r0, r2
+ bx lr
+
+ arm_func_start STD_CopyLString
+STD_CopyLString: ; 0x020DE0E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ sub r12, r2, #0x1
+ cmp r12, #0x0
+ mov lr, #0x0
+ ble _020DE120
+_020DE0FC:
+ ldrsb r3, [r1, #0x0]
+ strb r3, [r0, lr]
+ ldrsb r3, [r1, #0x0]
+ cmp r3, #0x0
+ beq _020DE120
+ add lr, lr, #0x1
+ cmp lr, r12
+ add r1, r1, #0x1
+ blt _020DE0FC
+_020DE120:
+ sub r3, r2, #0x1
+ cmp lr, r3
+ blt _020DE138
+ cmp r2, #0x0
+ movne r2, #0x0
+ strneb r2, [r0, lr]
+_020DE138:
+ mov r0, r1
+ bl STD_GetStringLength
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr