summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSAlloc.s
blob: 4c5d7561cf285aceba6cf165519fb4c3e84343d2 (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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
.include "macros.inc"

.section .text

.global func_8036d308
.type func_8036d308, @function
func_8036d308:
/* 8036D308 38E30000 */ addi        r7, r3, 0x0
/* 8036D30C 38C00000 */ li          r6, 0x0
/* 8036D310 48000014 */ b           lbl_8036d324
lbl_8036d314:
/* 8036D314 7C043840 */ cmplw       r4, r7
/* 8036D318 40810014 */ ble-        lbl_8036d32c
/* 8036D31C 7CE63B78 */ mr          r6, r7
/* 8036D320 80E70004 */ lwz         r7, 4(r7)
lbl_8036d324:
/* 8036D324 28070000 */ cmplwi      r7, 0
/* 8036D328 4082FFEC */ bne+        lbl_8036d314
lbl_8036d32c:
/* 8036D32C 90E40004 */ stw         r7, 4(r4)
/* 8036D330 28070000 */ cmplwi      r7, 0
/* 8036D334 90C40000 */ stw         r6, 0(r4)
/* 8036D338 41820038 */ beq-        lbl_8036d370
/* 8036D33C 90870000 */ stw         r4, 0(r7)
/* 8036D340 80A40008 */ lwz         r5, 8(r4)
/* 8036D344 7C042A14 */ add         r0, r4, r5
/* 8036D348 7C003840 */ cmplw       r0, r7
/* 8036D34C 40820024 */ bne-        lbl_8036d370
/* 8036D350 80070008 */ lwz         r0, 8(r7)
/* 8036D354 7C050214 */ add         r0, r5, r0
/* 8036D358 90040008 */ stw         r0, 8(r4)
/* 8036D35C 80E70004 */ lwz         r7, 4(r7)
/* 8036D360 28070000 */ cmplwi      r7, 0
/* 8036D364 90E40004 */ stw         r7, 4(r4)
/* 8036D368 41820008 */ beq-        lbl_8036d370
/* 8036D36C 90870000 */ stw         r4, 0(r7)
lbl_8036d370:
/* 8036D370 28060000 */ cmplwi      r6, 0
/* 8036D374 41820038 */ beq-        lbl_8036d3ac
/* 8036D378 90860004 */ stw         r4, 4(r6)
/* 8036D37C 80A60008 */ lwz         r5, 8(r6)
/* 8036D380 7C062A14 */ add         r0, r6, r5
/* 8036D384 7C002040 */ cmplw       r0, r4
/* 8036D388 4C820020 */ bnelr-      
/* 8036D38C 80040008 */ lwz         r0, 8(r4)
/* 8036D390 28070000 */ cmplwi      r7, 0
/* 8036D394 7C050214 */ add         r0, r5, r0
/* 8036D398 90060008 */ stw         r0, 8(r6)
/* 8036D39C 90E60004 */ stw         r7, 4(r6)
/* 8036D3A0 4D820020 */ beqlr-      
/* 8036D3A4 90C70000 */ stw         r6, 0(r7)
/* 8036D3A8 4E800020 */ blr         
lbl_8036d3ac:
/* 8036D3AC 7C832378 */ mr          r3, r4
/* 8036D3B0 4E800020 */ blr         
.size func_8036d308, . - func_8036d308


.global func_8036d3b4
.type func_8036d3b4, @function
func_8036d3b4:
/* 8036D3B4 1C03000C */ mulli       r0, r3, 0xc
/* 8036D3B8 806DCA30 */ lwz         r3, lbl_805c6850@sda21(0)
/* 8036D3BC 7CA30214 */ add         r5, r3, r0
/* 8036D3C0 3804003F */ addi        r0, r4, 0x3f
/* 8036D3C4 80C50004 */ lwz         r6, 4(r5)
/* 8036D3C8 54030034 */ rlwinm      r3, r0, 0, 0, 0x1a
/* 8036D3CC 48000014 */ b           lbl_8036d3e0
lbl_8036d3d0:
/* 8036D3D0 80060008 */ lwz         r0, 8(r6)
/* 8036D3D4 7C030000 */ cmpw        r3, r0
/* 8036D3D8 40810010 */ ble-        lbl_8036d3e8
/* 8036D3DC 80C60004 */ lwz         r6, 4(r6)
lbl_8036d3e0:
/* 8036D3E0 28060000 */ cmplwi      r6, 0
/* 8036D3E4 4082FFEC */ bne+        lbl_8036d3d0
lbl_8036d3e8:
/* 8036D3E8 28060000 */ cmplwi      r6, 0
/* 8036D3EC 4082000C */ bne-        lbl_8036d3f8
/* 8036D3F0 38600000 */ li          r3, 0x0
/* 8036D3F4 4E800020 */ blr         
lbl_8036d3f8:
/* 8036D3F8 80060008 */ lwz         r0, 8(r6)
/* 8036D3FC 7C030050 */ subf        r0, r3, r0
/* 8036D400 28000040 */ cmplwi      r0, 0x40
/* 8036D404 40800040 */ bge-        lbl_8036d444
/* 8036D408 80860004 */ lwz         r4, 4(r6)
/* 8036D40C 80650004 */ lwz         r3, 4(r5)
/* 8036D410 28040000 */ cmplwi      r4, 0
/* 8036D414 4182000C */ beq-        lbl_8036d420
/* 8036D418 80060000 */ lwz         r0, 0(r6)
/* 8036D41C 90040000 */ stw         r0, 0(r4)
lbl_8036d420:
/* 8036D420 80860000 */ lwz         r4, 0(r6)
/* 8036D424 28040000 */ cmplwi      r4, 0
/* 8036D428 4082000C */ bne-        lbl_8036d434
/* 8036D42C 80660004 */ lwz         r3, 4(r6)
/* 8036D430 4800000C */ b           lbl_8036d43c
lbl_8036d434:
/* 8036D434 80060004 */ lwz         r0, 4(r6)
/* 8036D438 90040004 */ stw         r0, 4(r4)
lbl_8036d43c:
/* 8036D43C 90650004 */ stw         r3, 4(r5)
/* 8036D440 48000048 */ b           lbl_8036d488
lbl_8036d444:
/* 8036D444 90660008 */ stw         r3, 8(r6)
/* 8036D448 7C861A14 */ add         r4, r6, r3
/* 8036D44C 90040008 */ stw         r0, 8(r4)
/* 8036D450 80060000 */ lwz         r0, 0(r6)
/* 8036D454 90040000 */ stw         r0, 0(r4)
/* 8036D458 80060004 */ lwz         r0, 4(r6)
/* 8036D45C 90040004 */ stw         r0, 4(r4)
/* 8036D460 80640004 */ lwz         r3, 4(r4)
/* 8036D464 28030000 */ cmplwi      r3, 0
/* 8036D468 41820008 */ beq-        lbl_8036d470
/* 8036D46C 90830000 */ stw         r4, 0(r3)
lbl_8036d470:
/* 8036D470 80640000 */ lwz         r3, 0(r4)
/* 8036D474 28030000 */ cmplwi      r3, 0
/* 8036D478 4182000C */ beq-        lbl_8036d484
/* 8036D47C 90830004 */ stw         r4, 4(r3)
/* 8036D480 48000008 */ b           lbl_8036d488
lbl_8036d484:
/* 8036D484 90850004 */ stw         r4, 4(r5)
lbl_8036d488:
/* 8036D488 80650008 */ lwz         r3, 8(r5)
/* 8036D48C 38000000 */ li          r0, 0x0
/* 8036D490 90660004 */ stw         r3, 4(r6)
/* 8036D494 28030000 */ cmplwi      r3, 0
/* 8036D498 90060000 */ stw         r0, 0(r6)
/* 8036D49C 41820008 */ beq-        lbl_8036d4a4
/* 8036D4A0 90C30000 */ stw         r6, 0(r3)
lbl_8036d4a4:
/* 8036D4A4 90C50008 */ stw         r6, 8(r5)
/* 8036D4A8 38660020 */ addi        r3, r6, 0x20
/* 8036D4AC 4E800020 */ blr         
.size func_8036d3b4, . - func_8036d3b4


.global func_8036d4b0
.type func_8036d4b0, @function
func_8036d4b0:
/* 8036D4B0 7C0802A6 */ mflr        r0
/* 8036D4B4 38C4FFE0 */ addi        r6, r4, -0x20
/* 8036D4B8 90010004 */ stw         r0, 4(r1)
/* 8036D4BC 1C03000C */ mulli       r0, r3, 0xc
/* 8036D4C0 9421FFE8 */ stwu        r1, -0x18(r1)
/* 8036D4C4 93E10014 */ stw         r31, 0x14(r1)
/* 8036D4C8 808DCA30 */ lwz         r4, lbl_805c6850@sda21(0)
/* 8036D4CC 80660004 */ lwz         r3, 4(r6)
/* 8036D4D0 7FE40214 */ add         r31, r4, r0
/* 8036D4D4 28030000 */ cmplwi      r3, 0
/* 8036D4D8 80BF0008 */ lwz         r5, 8(r31)
/* 8036D4DC 7CC43378 */ mr          r4, r6
/* 8036D4E0 4182000C */ beq-        lbl_8036d4ec
/* 8036D4E4 80040000 */ lwz         r0, 0(r4)
/* 8036D4E8 90030000 */ stw         r0, 0(r3)
lbl_8036d4ec:
/* 8036D4EC 80640000 */ lwz         r3, 0(r4)
/* 8036D4F0 28030000 */ cmplwi      r3, 0
/* 8036D4F4 4082000C */ bne-        lbl_8036d500
/* 8036D4F8 80A40004 */ lwz         r5, 4(r4)
/* 8036D4FC 4800000C */ b           lbl_8036d508
lbl_8036d500:
/* 8036D500 80040004 */ lwz         r0, 4(r4)
/* 8036D504 90030004 */ stw         r0, 4(r3)
lbl_8036d508:
/* 8036D508 90BF0008 */ stw         r5, 8(r31)
/* 8036D50C 807F0004 */ lwz         r3, 4(r31)
/* 8036D510 4BFFFDF9 */ bl          func_8036d308
/* 8036D514 907F0004 */ stw         r3, 4(r31)
/* 8036D518 8001001C */ lwz         r0, 0x1c(r1)
/* 8036D51C 83E10014 */ lwz         r31, 0x14(r1)
/* 8036D520 38210018 */ addi        r1, r1, 0x18
/* 8036D524 7C0803A6 */ mtlr        r0
/* 8036D528 4E800020 */ blr         
.size func_8036d4b0, . - func_8036d4b0


.global func_8036d52c
.type func_8036d52c, @function
func_8036d52c:
/* 8036D52C 800D9EF8 */ lwz         r0, lbl_805c3d18@sda21(0)
/* 8036D530 906D9EF8 */ stw         r3, lbl_805c3d18@sda21(0)
/* 8036D534 7C030378 */ mr          r3, r0
/* 8036D538 4E800020 */ blr         
.size func_8036d52c, . - func_8036d52c


.global func_8036d53c
.type func_8036d53c, @function
func_8036d53c:
/* 8036D53C 1CE5000C */ mulli       r7, r5, 0xc
/* 8036D540 906DCA30 */ stw         r3, lbl_805c6850@sda21(0)
/* 8036D544 90ADCA34 */ stw         r5, lbl_805c6854@sda21(0)
/* 8036D548 38C00000 */ li          r6, 0x0
/* 8036D54C 38660000 */ addi        r3, r6, 0x0
/* 8036D550 39000000 */ li          r8, 0x0
/* 8036D554 38A0FFFF */ li          r5, -0x1
/* 8036D558 48000020 */ b           lbl_8036d578
lbl_8036d55c:
/* 8036D55C 800DCA30 */ lwz         r0, lbl_805c6850@sda21(0)
/* 8036D560 39080001 */ addi        r8, r8, 0x1
/* 8036D564 7D203214 */ add         r9, r0, r6
/* 8036D568 90A90000 */ stw         r5, 0(r9)
/* 8036D56C 38C6000C */ addi        r6, r6, 0xc
/* 8036D570 90690008 */ stw         r3, 8(r9)
/* 8036D574 90690004 */ stw         r3, 4(r9)
lbl_8036d578:
/* 8036D578 800DCA34 */ lwz         r0, lbl_805c6854@sda21(0)
/* 8036D57C 7C080000 */ cmpw        r8, r0
/* 8036D580 4180FFDC */ blt+        lbl_8036d55c
/* 8036D584 806DCA30 */ lwz         r3, lbl_805c6850@sda21(0)
/* 8036D588 54800034 */ rlwinm      r0, r4, 0, 0, 0x1a
/* 8036D58C 3880FFFF */ li          r4, -0x1
/* 8036D590 900DCA3C */ stw         r0, lbl_805c685c@sda21(0)
/* 8036D594 7C633A14 */ add         r3, r3, r7
/* 8036D598 3803001F */ addi        r0, r3, 0x1f
/* 8036D59C 908D9EF8 */ stw         r4, lbl_805c3d18@sda21(0)
/* 8036D5A0 54030034 */ rlwinm      r3, r0, 0, 0, 0x1a
/* 8036D5A4 906DCA38 */ stw         r3, lbl_805c6858@sda21(0)
/* 8036D5A8 4E800020 */ blr         
.size func_8036d53c, . - func_8036d53c


.global func_8036d5ac
.type func_8036d5ac, @function
func_8036d5ac:
/* 8036D5AC 80CDCA34 */ lwz         r6, lbl_805c6854@sda21(0)
/* 8036D5B0 3803001F */ addi        r0, r3, 0x1f
/* 8036D5B4 80ADCA30 */ lwz         r5, lbl_805c6850@sda21(0)
/* 8036D5B8 54070034 */ rlwinm      r7, r0, 0, 0, 0x1a
/* 8036D5BC 2C060000 */ cmpwi       r6, 0x0
/* 8036D5C0 7CC903A6 */ mtctr       r6
/* 8036D5C4 54840034 */ rlwinm      r4, r4, 0, 0, 0x1a
/* 8036D5C8 38600000 */ li          r3, 0x0
/* 8036D5CC 40810044 */ ble-        lbl_8036d610
lbl_8036d5d0:
/* 8036D5D0 80050000 */ lwz         r0, 0(r5)
/* 8036D5D4 2C000000 */ cmpwi       r0, 0x0
/* 8036D5D8 4080002C */ bge-        lbl_8036d604
/* 8036D5DC 7C072050 */ subf        r0, r7, r4
/* 8036D5E0 90050000 */ stw         r0, 0(r5)
/* 8036D5E4 38800000 */ li          r4, 0x0
/* 8036D5E8 90870000 */ stw         r4, 0(r7)
/* 8036D5EC 90870004 */ stw         r4, 4(r7)
/* 8036D5F0 80050000 */ lwz         r0, 0(r5)
/* 8036D5F4 90070008 */ stw         r0, 8(r7)
/* 8036D5F8 90E50004 */ stw         r7, 4(r5)
/* 8036D5FC 90850008 */ stw         r4, 8(r5)
/* 8036D600 4E800020 */ blr         
lbl_8036d604:
/* 8036D604 38A5000C */ addi        r5, r5, 0xc
/* 8036D608 38630001 */ addi        r3, r3, 0x1
/* 8036D60C 4200FFC4 */ bdnz        lbl_8036d5d0
lbl_8036d610:
/* 8036D610 3860FFFF */ li          r3, -0x1
/* 8036D614 4E800020 */ blr         
.size func_8036d5ac, . - func_8036d5ac