summaryrefslogtreecommitdiff
path: root/arm9/asm/STD_string.s
blob: e8a74a7599e77b45b58e99eb7297b0e46b4c6490 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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