summaryrefslogtreecommitdiff
path: root/arm9/asm/SOC_socl_list.s
blob: 08f780d13d3c2da5e8ad6301ceb9bfadfa2b26e4 (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
	.include "asm/macros.inc"
	.include "global.inc"

	.section .bss

	.global SOCLiSocketList
SOCLiSocketList: ; 0x021C8D30
	.space 0x4

	.global SOCLiSocketListTrash
SOCLiSocketListTrash: ; 0x021C8D34
	.space 0x4

	.text

	arm_func_start SOCL_SocketIsInTrash
SOCL_SocketIsInTrash:
	stmdb sp!, {lr}
	sub sp, sp, #0x4
	mov r1, r0
	ldr r0, _02099FA4 ; =SOCLiSocketListTrash
	bl SOCLi_SocketGetNextPtr
	cmp r0, #0x0
	movne r0, #0x1
	moveq r0, #0x0
	add sp, sp, #0x4
	ldmia sp!, {lr}
	bx lr
	.balign 4
_02099FA4: .word SOCLiSocketListTrash

	arm_func_start SOCL_SocketIsInvalid
SOCL_SocketIsInvalid:
	stmdb sp!, {lr}
	sub sp, sp, #0x4
	mov r1, r0
	cmp r1, #0x0
	ble _02099FCC
	ldr r0, _02099FEC ; =SOCLiSocketList
	bl SOCLi_SocketGetNextPtr
	cmp r0, #0x0
	bne _02099FDC
_02099FCC:
	add sp, sp, #0x4
	mov r0, #0x1
	ldmia sp!, {lr}
	bx lr
_02099FDC:
	mov r0, #0x0
	add sp, sp, #0x4
	ldmia sp!, {lr}
	bx lr
	.balign 4
_02099FEC: .word SOCLiSocketList

	arm_func_start SOCLi_SocketUnregisterTrash
SOCLi_SocketUnregisterTrash: ; 0x02099FF0
	ldr ip, _0209A000 ; =SOCLi_SocketUnregisterList
	mov r1, r0
	ldr r0, _0209A004 ; =SOCLiSocketListTrash
	bx r12
	.balign 4
_0209A000: .word SOCLi_SocketUnregisterList
_0209A004: .word SOCLiSocketListTrash

	arm_func_start SOCLi_SocketGetNextPtr
SOCLi_SocketGetNextPtr:
	ldr r2, [r0, #0x0]
	cmp r2, #0x0
	beq _0209A02C
_0209A014:
	cmp r2, r1
	bxeq lr
	add r0, r2, #0x7c
	ldr r2, [r2, #0x7c]
	cmp r2, #0x0
	bne _0209A014
_0209A02C:
	mov r0, #0x0
	bx lr

	arm_func_start SOCLi_SocketUnregisterList
SOCLi_SocketUnregisterList: ; 0x0209A034
	stmdb sp!, {r4,lr}
	mov r4, r1
	bl SOCLi_SocketGetNextPtr
	cmp r0, #0x0
	ldrne r1, [r4, #0x7c]
	strne r1, [r0, #0x0]
	ldmia sp!, {r4,lr}
	bx lr

	arm_func_start SOCLi_SocketUnregister
SOCLi_SocketUnregister: ; 0x0209A054
	ldr ip, _0209A064 ; =SOCLi_SocketUnregisterList
	mov r1, r0
	ldr r0, _0209A068 ; =SOCLiSocketList
	bx r12
	.balign 4
_0209A064: .word SOCLi_SocketUnregisterList
_0209A068: .word SOCLiSocketList

	arm_func_start SOCLi_SocketRegisterTrash
SOCLi_SocketRegisterTrash: ; 0x0209A06C
	ldr ip, _0209A07C ; =SOCLi_SocketRegisterList
	mov r1, r0
	ldr r0, _0209A080 ; =SOCLiSocketListTrash
	bx r12
	.balign 4
_0209A07C: .word SOCLi_SocketRegisterList
_0209A080: .word SOCLiSocketListTrash

	arm_func_start SOCLi_SocketRegisterList
SOCLi_SocketRegisterList: ; 0x0209A084
	ldr r2, [r0, #0x0]
	str r2, [r1, #0x7c]
	str r1, [r0, #0x0]
	bx lr

	arm_func_start SOCLi_SocketRegister
SOCLi_SocketRegister: ; 0x0209A094
	ldr ip, _0209A0A4 ; =SOCLi_SocketRegisterList
	mov r1, r0
	ldr r0, _0209A0A8 ; =SOCLiSocketList
	bx r12
	.balign 4
_0209A0A4: .word SOCLi_SocketRegisterList
_0209A0A8: .word SOCLiSocketList