summaryrefslogtreecommitdiff
path: root/asm/NdevExi2A/exi2.s
blob: d69761e1f88fd650d41ee33e691a08f0d4897b24 (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
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global __EXI2Imm
__EXI2Imm:
/* 801DA2A4 001D5F04  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DA2A8 001D5F08  7C 08 02 A6 */	mflr r0
/* 801DA2AC 001D5F0C  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DA2B0 001D5F10  39 61 00 20 */	addi r11, r1, 0x20
/* 801DA2B4 001D5F14  4B FE CE 71 */	bl _savegpr_26
/* 801DA2B8 001D5F18  2C 05 00 00 */	cmpwi r5, 0
/* 801DA2BC 001D5F1C  41 82 01 5C */	beq lbl_801DA418
/* 801DA2C0 001D5F20  2C 84 00 00 */	cmpwi cr1, r4, 0
/* 801DA2C4 001D5F24  38 00 00 00 */	li r0, 0
/* 801DA2C8 001D5F28  38 E0 00 00 */	li r7, 0
/* 801DA2CC 001D5F2C  40 85 01 44 */	ble cr1, lbl_801DA410
/* 801DA2D0 001D5F30  2C 04 00 08 */	cmpwi r4, 8
/* 801DA2D4 001D5F34  39 24 FF F8 */	addi r9, r4, -8
/* 801DA2D8 001D5F38  40 81 01 04 */	ble lbl_801DA3DC
/* 801DA2DC 001D5F3C  39 00 00 00 */	li r8, 0
/* 801DA2E0 001D5F40  41 84 00 18 */	blt cr1, lbl_801DA2F8
/* 801DA2E4 001D5F44  3C C0 80 00 */	lis r6, 0x7FFFFFFE@ha
/* 801DA2E8 001D5F48  38 C6 FF FE */	addi r6, r6, 0x7FFFFFFE@l
/* 801DA2EC 001D5F4C  7C 04 30 00 */	cmpw r4, r6
/* 801DA2F0 001D5F50  41 81 00 08 */	bgt lbl_801DA2F8
/* 801DA2F4 001D5F54  39 00 00 01 */	li r8, 1
lbl_801DA2F8:
/* 801DA2F8 001D5F58  2C 08 00 00 */	cmpwi r8, 0
/* 801DA2FC 001D5F5C  41 82 00 E0 */	beq lbl_801DA3DC
/* 801DA300 001D5F60  39 09 00 07 */	addi r8, r9, 7
/* 801DA304 001D5F64  7C 66 1B 78 */	mr r6, r3
/* 801DA308 001D5F68  55 08 E8 FE */	srwi r8, r8, 3
/* 801DA30C 001D5F6C  7D 09 03 A6 */	mtctr r8
/* 801DA310 001D5F70  2C 09 00 00 */	cmpwi r9, 0
/* 801DA314 001D5F74  40 81 00 C8 */	ble lbl_801DA3DC
lbl_801DA318:
/* 801DA318 001D5F78  21 27 00 03 */	subfic r9, r7, 3
/* 801DA31C 001D5F7C  39 07 00 01 */	addi r8, r7, 1
/* 801DA320 001D5F80  23 88 00 03 */	subfic r28, r8, 3
/* 801DA324 001D5F84  89 46 00 00 */	lbz r10, 0(r6)
/* 801DA328 001D5F88  39 07 00 02 */	addi r8, r7, 2
/* 801DA32C 001D5F8C  8B 66 00 01 */	lbz r27, 1(r6)
/* 801DA330 001D5F90  23 A8 00 03 */	subfic r29, r8, 3
/* 801DA334 001D5F94  57 9C 18 38 */	slwi r28, r28, 3
/* 801DA338 001D5F98  55 28 18 38 */	slwi r8, r9, 3
/* 801DA33C 001D5F9C  7D 87 00 D0 */	neg r12, r7
/* 801DA340 001D5FA0  7D 5A 40 30 */	slw r26, r10, r8
/* 801DA344 001D5FA4  57 BE 18 38 */	slwi r30, r29, 3
/* 801DA348 001D5FA8  8B E6 00 02 */	lbz r31, 2(r6)
/* 801DA34C 001D5FAC  39 07 00 04 */	addi r8, r7, 4
/* 801DA350 001D5FB0  21 68 00 03 */	subfic r11, r8, 3
/* 801DA354 001D5FB4  7C 00 D3 78 */	or r0, r0, r26
/* 801DA358 001D5FB8  7F 7C E0 30 */	slw r28, r27, r28
/* 801DA35C 001D5FBC  39 07 00 05 */	addi r8, r7, 5
/* 801DA360 001D5FC0  7F FF F0 30 */	slw r31, r31, r30
/* 801DA364 001D5FC4  8B A6 00 03 */	lbz r29, 3(r6)
/* 801DA368 001D5FC8  55 8C 18 38 */	slwi r12, r12, 3
/* 801DA36C 001D5FCC  7C 00 E3 78 */	or r0, r0, r28
/* 801DA370 001D5FD0  21 48 00 03 */	subfic r10, r8, 3
/* 801DA374 001D5FD4  39 07 00 06 */	addi r8, r7, 6
/* 801DA378 001D5FD8  7F BD 60 30 */	slw r29, r29, r12
/* 801DA37C 001D5FDC  7C 00 FB 78 */	or r0, r0, r31
/* 801DA380 001D5FE0  21 28 00 03 */	subfic r9, r8, 3
/* 801DA384 001D5FE4  39 07 00 07 */	addi r8, r7, 7
/* 801DA388 001D5FE8  55 4C 18 38 */	slwi r12, r10, 3
/* 801DA38C 001D5FEC  8B E6 00 05 */	lbz r31, 5(r6)
/* 801DA390 001D5FF0  21 08 00 03 */	subfic r8, r8, 3
/* 801DA394 001D5FF4  55 2A 18 38 */	slwi r10, r9, 3
/* 801DA398 001D5FF8  8B C6 00 04 */	lbz r30, 4(r6)
/* 801DA39C 001D5FFC  55 6B 18 38 */	slwi r11, r11, 3
/* 801DA3A0 001D6000  7C 00 EB 78 */	or r0, r0, r29
/* 801DA3A4 001D6004  89 26 00 07 */	lbz r9, 7(r6)
/* 801DA3A8 001D6008  7F DE 58 30 */	slw r30, r30, r11
/* 801DA3AC 001D600C  89 66 00 06 */	lbz r11, 6(r6)
/* 801DA3B0 001D6010  55 08 18 38 */	slwi r8, r8, 3
/* 801DA3B4 001D6014  7F EC 60 30 */	slw r12, r31, r12
/* 801DA3B8 001D6018  7C 00 F3 78 */	or r0, r0, r30
/* 801DA3BC 001D601C  7D 6A 50 30 */	slw r10, r11, r10
/* 801DA3C0 001D6020  7C 00 63 78 */	or r0, r0, r12
/* 801DA3C4 001D6024  7D 28 40 30 */	slw r8, r9, r8
/* 801DA3C8 001D6028  7C 00 53 78 */	or r0, r0, r10
/* 801DA3CC 001D602C  38 E7 00 08 */	addi r7, r7, 8
/* 801DA3D0 001D6030  7C 00 43 78 */	or r0, r0, r8
/* 801DA3D4 001D6034  38 C6 00 08 */	addi r6, r6, 8
/* 801DA3D8 001D6038  42 00 FF 40 */	bdnz lbl_801DA318
lbl_801DA3DC:
/* 801DA3DC 001D603C  7C C7 20 50 */	subf r6, r7, r4
/* 801DA3E0 001D6040  7D 23 3A 14 */	add r9, r3, r7
/* 801DA3E4 001D6044  7C C9 03 A6 */	mtctr r6
/* 801DA3E8 001D6048  7C 07 20 00 */	cmpw r7, r4
/* 801DA3EC 001D604C  40 80 00 24 */	bge lbl_801DA410
lbl_801DA3F0:
/* 801DA3F0 001D6050  20 C7 00 03 */	subfic r6, r7, 3
/* 801DA3F4 001D6054  89 09 00 00 */	lbz r8, 0(r9)
/* 801DA3F8 001D6058  54 C6 18 38 */	slwi r6, r6, 3
/* 801DA3FC 001D605C  39 29 00 01 */	addi r9, r9, 1
/* 801DA400 001D6060  7D 06 30 30 */	slw r6, r8, r6
/* 801DA404 001D6064  38 E7 00 01 */	addi r7, r7, 1
/* 801DA408 001D6068  7C 00 33 78 */	or r0, r0, r6
/* 801DA40C 001D606C  42 00 FF E4 */	bdnz lbl_801DA3F0
lbl_801DA410:
/* 801DA410 001D6070  3C C0 CD 00 */	lis r6, 0xCD006838@ha
/* 801DA414 001D6074  90 06 68 38 */	stw r0, 0xCD006838@l(r6)
lbl_801DA418:
/* 801DA418 001D6078  54 A6 10 3A */	slwi r6, r5, 2
/* 801DA41C 001D607C  38 04 FF FF */	addi r0, r4, -1
/* 801DA420 001D6080  60 C7 00 01 */	ori r7, r6, 1
/* 801DA424 001D6084  54 00 20 36 */	slwi r0, r0, 4
/* 801DA428 001D6088  3C C0 CD 00 */	lis r6, 0xCD006834@ha
/* 801DA42C 001D608C  7C E0 03 78 */	or r0, r7, r0
/* 801DA430 001D6090  90 06 68 34 */	stw r0, 0xCD006834@l(r6)
lbl_801DA434:
/* 801DA434 001D6094  80 06 68 34 */	lwz r0, 0x6834(r6)
/* 801DA438 001D6098  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA43C 001D609C  40 82 FF F8 */	bne lbl_801DA434
/* 801DA440 001D60A0  2C 05 00 00 */	cmpwi r5, 0
/* 801DA444 001D60A4  40 82 01 2C */	bne lbl_801DA570
/* 801DA448 001D60A8  3C A0 CD 00 */	lis r5, 0xCD006838@ha
/* 801DA44C 001D60AC  2C 84 00 00 */	cmpwi cr1, r4, 0
/* 801DA450 001D60B0  80 05 68 38 */	lwz r0, 0xCD006838@l(r5)
/* 801DA454 001D60B4  38 A0 00 00 */	li r5, 0
/* 801DA458 001D60B8  40 85 01 18 */	ble cr1, lbl_801DA570
/* 801DA45C 001D60BC  2C 04 00 08 */	cmpwi r4, 8
/* 801DA460 001D60C0  38 E4 FF F8 */	addi r7, r4, -8
/* 801DA464 001D60C4  40 81 00 E0 */	ble lbl_801DA544
/* 801DA468 001D60C8  39 00 00 00 */	li r8, 0
/* 801DA46C 001D60CC  41 84 00 18 */	blt cr1, lbl_801DA484
/* 801DA470 001D60D0  3C C0 80 00 */	lis r6, 0x7FFFFFFE@ha
/* 801DA474 001D60D4  38 C6 FF FE */	addi r6, r6, 0x7FFFFFFE@l
/* 801DA478 001D60D8  7C 04 30 00 */	cmpw r4, r6
/* 801DA47C 001D60DC  41 81 00 08 */	bgt lbl_801DA484
/* 801DA480 001D60E0  39 00 00 01 */	li r8, 1
lbl_801DA484:
/* 801DA484 001D60E4  2C 08 00 00 */	cmpwi r8, 0
/* 801DA488 001D60E8  41 82 00 BC */	beq lbl_801DA544
/* 801DA48C 001D60EC  38 C7 00 07 */	addi r6, r7, 7
/* 801DA490 001D60F0  54 C6 E8 FE */	srwi r6, r6, 3
/* 801DA494 001D60F4  7C C9 03 A6 */	mtctr r6
/* 801DA498 001D60F8  2C 07 00 00 */	cmpwi r7, 0
/* 801DA49C 001D60FC  40 81 00 A8 */	ble lbl_801DA544
lbl_801DA4A0:
/* 801DA4A0 001D6100  20 C5 00 03 */	subfic r6, r5, 3
/* 801DA4A4 001D6104  38 E5 00 01 */	addi r7, r5, 1
/* 801DA4A8 001D6108  54 C8 18 38 */	slwi r8, r6, 3
/* 801DA4AC 001D610C  7C 09 44 30 */	srw r9, r0, r8
/* 801DA4B0 001D6110  20 E7 00 03 */	subfic r7, r7, 3
/* 801DA4B4 001D6114  54 E8 18 38 */	slwi r8, r7, 3
/* 801DA4B8 001D6118  99 23 00 00 */	stb r9, 0(r3)
/* 801DA4BC 001D611C  38 E5 00 02 */	addi r7, r5, 2
/* 801DA4C0 001D6120  7C C5 00 D0 */	neg r6, r5
/* 801DA4C4 001D6124  7C 09 44 30 */	srw r9, r0, r8
/* 801DA4C8 001D6128  54 C8 18 38 */	slwi r8, r6, 3
/* 801DA4CC 001D612C  20 E7 00 03 */	subfic r7, r7, 3
/* 801DA4D0 001D6130  54 E6 18 38 */	slwi r6, r7, 3
/* 801DA4D4 001D6134  99 23 00 01 */	stb r9, 1(r3)
/* 801DA4D8 001D6138  7C 09 34 30 */	srw r9, r0, r6
/* 801DA4DC 001D613C  7C 08 44 30 */	srw r8, r0, r8
/* 801DA4E0 001D6140  38 C5 00 04 */	addi r6, r5, 4
/* 801DA4E4 001D6144  99 23 00 02 */	stb r9, 2(r3)
/* 801DA4E8 001D6148  20 E6 00 03 */	subfic r7, r6, 3
/* 801DA4EC 001D614C  38 C5 00 05 */	addi r6, r5, 5
/* 801DA4F0 001D6150  99 03 00 03 */	stb r8, 3(r3)
/* 801DA4F4 001D6154  54 E7 18 38 */	slwi r7, r7, 3
/* 801DA4F8 001D6158  7C 09 3C 30 */	srw r9, r0, r7
/* 801DA4FC 001D615C  20 C6 00 03 */	subfic r6, r6, 3
/* 801DA500 001D6160  54 C8 18 38 */	slwi r8, r6, 3
/* 801DA504 001D6164  99 23 00 04 */	stb r9, 4(r3)
/* 801DA508 001D6168  38 C5 00 06 */	addi r6, r5, 6
/* 801DA50C 001D616C  20 E6 00 03 */	subfic r7, r6, 3
/* 801DA510 001D6170  7C 08 44 30 */	srw r8, r0, r8
/* 801DA514 001D6174  38 C5 00 07 */	addi r6, r5, 7
/* 801DA518 001D6178  99 03 00 05 */	stb r8, 5(r3)
/* 801DA51C 001D617C  54 E7 18 38 */	slwi r7, r7, 3
/* 801DA520 001D6180  38 A5 00 08 */	addi r5, r5, 8
/* 801DA524 001D6184  20 C6 00 03 */	subfic r6, r6, 3
/* 801DA528 001D6188  7C 07 3C 30 */	srw r7, r0, r7
/* 801DA52C 001D618C  54 C6 18 38 */	slwi r6, r6, 3
/* 801DA530 001D6190  98 E3 00 06 */	stb r7, 6(r3)
/* 801DA534 001D6194  7C 06 34 30 */	srw r6, r0, r6
/* 801DA538 001D6198  98 C3 00 07 */	stb r6, 7(r3)
/* 801DA53C 001D619C  38 63 00 08 */	addi r3, r3, 8
/* 801DA540 001D61A0  42 00 FF 60 */	bdnz lbl_801DA4A0
lbl_801DA544:
/* 801DA544 001D61A4  7C C5 20 50 */	subf r6, r5, r4
/* 801DA548 001D61A8  7C C9 03 A6 */	mtctr r6
/* 801DA54C 001D61AC  7C 05 20 00 */	cmpw r5, r4
/* 801DA550 001D61B0  40 80 00 20 */	bge lbl_801DA570
lbl_801DA554:
/* 801DA554 001D61B4  20 85 00 03 */	subfic r4, r5, 3
/* 801DA558 001D61B8  38 A5 00 01 */	addi r5, r5, 1
/* 801DA55C 001D61BC  54 84 18 38 */	slwi r4, r4, 3
/* 801DA560 001D61C0  7C 04 24 30 */	srw r4, r0, r4
/* 801DA564 001D61C4  98 83 00 00 */	stb r4, 0(r3)
/* 801DA568 001D61C8  38 63 00 01 */	addi r3, r3, 1
/* 801DA56C 001D61CC  42 00 FF E8 */	bdnz lbl_801DA554
lbl_801DA570:
/* 801DA570 001D61D0  39 61 00 20 */	addi r11, r1, 0x20
/* 801DA574 001D61D4  38 60 00 01 */	li r3, 1
/* 801DA578 001D61D8  4B FE CB F9 */	bl _restgpr_26
/* 801DA57C 001D61DC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DA580 001D61E0  7C 08 03 A6 */	mtlr r0
/* 801DA584 001D61E4  38 21 00 20 */	addi r1, r1, 0x20
/* 801DA588 001D61E8  4E 80 00 20 */	blr

.global __DBEXIInit
__DBEXIInit:
/* 801DA58C 001D61EC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DA590 001D61F0  7C 08 02 A6 */	mflr r0
/* 801DA594 001D61F4  3C 60 00 02 */	lis r3, 0x00018000@ha
/* 801DA598 001D61F8  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DA59C 001D61FC  38 63 80 00 */	addi r3, r3, 0x00018000@l
/* 801DA5A0 001D6200  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DA5A4 001D6204  48 09 45 49 */	bl __OSMaskInterrupts
/* 801DA5A8 001D6208  3C 60 CD 00 */	lis r3, 0xCD006834@ha
lbl_801DA5AC:
/* 801DA5AC 001D620C  80 03 68 34 */	lwz r0, 0xCD006834@l(r3)
/* 801DA5B0 001D6210  54 00 07 FE */	clrlwi r0, r0, 0x1f
/* 801DA5B4 001D6214  28 00 00 01 */	cmplwi r0, 1
/* 801DA5B8 001D6218  41 82 FF F4 */	beq lbl_801DA5AC
/* 801DA5BC 001D621C  3F E0 CD 00 */	lis r31, 0xCD006828@ha
/* 801DA5C0 001D6220  38 00 00 00 */	li r0, 0
/* 801DA5C4 001D6224  90 1F 68 28 */	stw r0, 0xCD006828@l(r31)
/* 801DA5C8 001D6228  3C 60 B4 00 */	lis r3, 0xb400
/* 801DA5CC 001D622C  3C 00 D4 00 */	lis r0, 0xd400
/* 801DA5D0 001D6230  38 80 00 04 */	li r4, 4
/* 801DA5D4 001D6234  90 61 00 0C */	stw r3, 0xc(r1)
/* 801DA5D8 001D6238  38 61 00 0C */	addi r3, r1, 0xc
/* 801DA5DC 001D623C  38 A0 00 01 */	li r5, 1
/* 801DA5E0 001D6240  90 01 00 08 */	stw r0, 8(r1)
/* 801DA5E4 001D6244  80 1F 68 28 */	lwz r0, 0x6828(r31)
/* 801DA5E8 001D6248  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA5EC 001D624C  60 00 00 C0 */	ori r0, r0, 0xc0
/* 801DA5F0 001D6250  90 1F 68 28 */	stw r0, 0x6828(r31)
/* 801DA5F4 001D6254  4B FF FC B1 */	bl __EXI2Imm
lbl_801DA5F8:
/* 801DA5F8 001D6258  80 1F 68 34 */	lwz r0, 0x6834(r31)
/* 801DA5FC 001D625C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA600 001D6260  40 82 FF F8 */	bne lbl_801DA5F8
/* 801DA604 001D6264  38 61 00 08 */	addi r3, r1, 8
/* 801DA608 001D6268  38 80 00 04 */	li r4, 4
/* 801DA60C 001D626C  38 A0 00 01 */	li r5, 1
/* 801DA610 001D6270  4B FF FC 95 */	bl __EXI2Imm
/* 801DA614 001D6274  3C 60 CD 00 */	lis r3, 0xCD006834@ha
lbl_801DA618:
/* 801DA618 001D6278  80 03 68 34 */	lwz r0, 0xCD006834@l(r3)
/* 801DA61C 001D627C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA620 001D6280  40 82 FF F8 */	bne lbl_801DA618
/* 801DA624 001D6284  3C 60 CD 00 */	lis r3, 0xCD006828@ha
/* 801DA628 001D6288  80 03 68 28 */	lwz r0, 0xCD006828@l(r3)
/* 801DA62C 001D628C  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA630 001D6290  90 03 68 28 */	stw r0, 0x6828(r3)
/* 801DA634 001D6294  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DA638 001D6298  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DA63C 001D629C  7C 08 03 A6 */	mtlr r0
/* 801DA640 001D62A0  38 21 00 20 */	addi r1, r1, 0x20
/* 801DA644 001D62A4  4E 80 00 20 */	blr

.global __DBEXIReadReg
__DBEXIReadReg:
/* 801DA648 001D62A8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DA64C 001D62AC  7C 08 02 A6 */	mflr r0
/* 801DA650 001D62B0  38 C0 00 00 */	li r6, 0
/* 801DA654 001D62B4  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DA658 001D62B8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DA65C 001D62BC  7C BF 2B 78 */	mr r31, r5
/* 801DA660 001D62C0  38 A0 00 01 */	li r5, 1
/* 801DA664 001D62C4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801DA668 001D62C8  7C 9E 23 78 */	mr r30, r4
/* 801DA66C 001D62CC  38 80 00 04 */	li r4, 4
/* 801DA670 001D62D0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801DA674 001D62D4  93 81 00 10 */	stw r28, 0x10(r1)
/* 801DA678 001D62D8  3F 80 CD 00 */	lis r28, 0xCD006828@ha
/* 801DA67C 001D62DC  90 61 00 08 */	stw r3, 8(r1)
/* 801DA680 001D62E0  38 61 00 08 */	addi r3, r1, 8
/* 801DA684 001D62E4  90 C1 00 0C */	stw r6, 0xc(r1)
/* 801DA688 001D62E8  80 1C 68 28 */	lwz r0, 0xCD006828@l(r28)
/* 801DA68C 001D62EC  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA690 001D62F0  60 00 00 C0 */	ori r0, r0, 0xc0
/* 801DA694 001D62F4  90 1C 68 28 */	stw r0, 0x6828(r28)
/* 801DA698 001D62F8  4B FF FC 0D */	bl __EXI2Imm
/* 801DA69C 001D62FC  7C 60 00 34 */	cntlzw r0, r3
/* 801DA6A0 001D6300  54 1D D9 7E */	srwi r29, r0, 5
lbl_801DA6A4:
/* 801DA6A4 001D6304  80 1C 68 34 */	lwz r0, 0x6834(r28)
/* 801DA6A8 001D6308  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA6AC 001D630C  40 82 FF F8 */	bne lbl_801DA6A4
/* 801DA6B0 001D6310  38 61 00 0C */	addi r3, r1, 0xc
/* 801DA6B4 001D6314  38 80 00 04 */	li r4, 4
/* 801DA6B8 001D6318  38 A0 00 00 */	li r5, 0
/* 801DA6BC 001D631C  4B FF FB E9 */	bl __EXI2Imm
/* 801DA6C0 001D6320  7C 60 00 34 */	cntlzw r0, r3
/* 801DA6C4 001D6324  3C 60 CD 00 */	lis r3, 0xCD006834@ha
/* 801DA6C8 001D6328  54 00 D9 7E */	srwi r0, r0, 5
/* 801DA6CC 001D632C  7F A6 03 78 */	or r6, r29, r0
lbl_801DA6D0:
/* 801DA6D0 001D6330  80 03 68 34 */	lwz r0, 0xCD006834@l(r3)
/* 801DA6D4 001D6334  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA6D8 001D6338  40 82 FF F8 */	bne lbl_801DA6D0
/* 801DA6DC 001D633C  3C 60 CD 00 */	lis r3, 0xCD006828@ha
/* 801DA6E0 001D6340  2C 9F 00 02 */	cmpwi cr1, r31, 2
/* 801DA6E4 001D6344  80 03 68 28 */	lwz r0, 0xCD006828@l(r3)
/* 801DA6E8 001D6348  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA6EC 001D634C  90 03 68 28 */	stw r0, 0x6828(r3)
/* 801DA6F0 001D6350  41 86 00 24 */	beq cr1, lbl_801DA714
/* 801DA6F4 001D6354  40 84 00 34 */	bge cr1, lbl_801DA728
/* 801DA6F8 001D6358  2C 1F 00 01 */	cmpwi r31, 1
/* 801DA6FC 001D635C  40 80 00 08 */	bge lbl_801DA704
/* 801DA700 001D6360  48 00 00 28 */	b lbl_801DA728
lbl_801DA704:
/* 801DA704 001D6364  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801DA708 001D6368  54 00 46 3E */	srwi r0, r0, 0x18
/* 801DA70C 001D636C  98 1E 00 00 */	stb r0, 0(r30)
/* 801DA710 001D6370  48 00 00 34 */	b lbl_801DA744
lbl_801DA714:
/* 801DA714 001D6374  80 61 00 0C */	lwz r3, 0xc(r1)
/* 801DA718 001D6378  54 60 C4 2E */	rlwinm r0, r3, 0x18, 0x10, 0x17
/* 801DA71C 001D637C  50 60 46 3E */	rlwimi r0, r3, 8, 0x18, 0x1f
/* 801DA720 001D6380  B0 1E 00 00 */	sth r0, 0(r30)
/* 801DA724 001D6384  48 00 00 20 */	b lbl_801DA744
lbl_801DA728:
/* 801DA728 001D6388  80 81 00 0C */	lwz r4, 0xc(r1)
/* 801DA72C 001D638C  54 83 42 1E */	rlwinm r3, r4, 8, 8, 0xf
/* 801DA730 001D6390  54 80 C4 2E */	rlwinm r0, r4, 0x18, 0x10, 0x17
/* 801DA734 001D6394  50 83 C0 0E */	rlwimi r3, r4, 0x18, 0, 7
/* 801DA738 001D6398  50 80 46 3E */	rlwimi r0, r4, 8, 0x18, 0x1f
/* 801DA73C 001D639C  7C 60 03 78 */	or r0, r3, r0
/* 801DA740 001D63A0  90 1E 00 00 */	stw r0, 0(r30)
lbl_801DA744:
/* 801DA744 001D63A4  7C C0 00 34 */	cntlzw r0, r6
/* 801DA748 001D63A8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DA74C 001D63AC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801DA750 001D63B0  54 03 D9 7E */	srwi r3, r0, 5
/* 801DA754 001D63B4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801DA758 001D63B8  83 81 00 10 */	lwz r28, 0x10(r1)
/* 801DA75C 001D63BC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DA760 001D63C0  7C 08 03 A6 */	mtlr r0
/* 801DA764 001D63C4  38 21 00 20 */	addi r1, r1, 0x20
/* 801DA768 001D63C8  4E 80 00 20 */	blr

.global __DBEXIWriteReg
__DBEXIWriteReg:
/* 801DA76C 001D63CC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DA770 001D63D0  7C 08 02 A6 */	mflr r0
/* 801DA774 001D63D4  2C 05 00 02 */	cmpwi r5, 2
/* 801DA778 001D63D8  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DA77C 001D63DC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DA780 001D63E0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801DA784 001D63E4  90 61 00 08 */	stw r3, 8(r1)
/* 801DA788 001D63E8  41 82 00 24 */	beq lbl_801DA7AC
/* 801DA78C 001D63EC  40 80 00 34 */	bge lbl_801DA7C0
/* 801DA790 001D63F0  2C 05 00 01 */	cmpwi r5, 1
/* 801DA794 001D63F4  40 80 00 08 */	bge lbl_801DA79C
/* 801DA798 001D63F8  48 00 00 28 */	b lbl_801DA7C0
lbl_801DA79C:
/* 801DA79C 001D63FC  88 04 00 00 */	lbz r0, 0(r4)
/* 801DA7A0 001D6400  54 00 C0 0E */	slwi r0, r0, 0x18
/* 801DA7A4 001D6404  90 01 00 0C */	stw r0, 0xc(r1)
/* 801DA7A8 001D6408  48 00 00 34 */	b lbl_801DA7DC
lbl_801DA7AC:
/* 801DA7AC 001D640C  A0 64 00 00 */	lhz r3, 0(r4)
/* 801DA7B0 001D6410  54 60 42 1E */	rlwinm r0, r3, 8, 8, 0xf
/* 801DA7B4 001D6414  50 60 C0 0E */	rlwimi r0, r3, 0x18, 0, 7
/* 801DA7B8 001D6418  90 01 00 0C */	stw r0, 0xc(r1)
/* 801DA7BC 001D641C  48 00 00 20 */	b lbl_801DA7DC
lbl_801DA7C0:
/* 801DA7C0 001D6420  80 84 00 00 */	lwz r4, 0(r4)
/* 801DA7C4 001D6424  54 83 42 1E */	rlwinm r3, r4, 8, 8, 0xf
/* 801DA7C8 001D6428  54 80 C4 2E */	rlwinm r0, r4, 0x18, 0x10, 0x17
/* 801DA7CC 001D642C  50 83 C0 0E */	rlwimi r3, r4, 0x18, 0, 7
/* 801DA7D0 001D6430  50 80 46 3E */	rlwimi r0, r4, 8, 0x18, 0x1f
/* 801DA7D4 001D6434  7C 60 03 78 */	or r0, r3, r0
/* 801DA7D8 001D6438  90 01 00 0C */	stw r0, 0xc(r1)
lbl_801DA7DC:
/* 801DA7DC 001D643C  3F C0 CD 00 */	lis r30, 0xCD006828@ha
/* 801DA7E0 001D6440  38 61 00 08 */	addi r3, r1, 8
/* 801DA7E4 001D6444  80 1E 68 28 */	lwz r0, 0xCD006828@l(r30)
/* 801DA7E8 001D6448  38 80 00 04 */	li r4, 4
/* 801DA7EC 001D644C  38 A0 00 01 */	li r5, 1
/* 801DA7F0 001D6450  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA7F4 001D6454  60 00 00 C0 */	ori r0, r0, 0xc0
/* 801DA7F8 001D6458  90 1E 68 28 */	stw r0, 0x6828(r30)
/* 801DA7FC 001D645C  4B FF FA A9 */	bl __EXI2Imm
/* 801DA800 001D6460  7C 60 00 34 */	cntlzw r0, r3
/* 801DA804 001D6464  54 1F D9 7E */	srwi r31, r0, 5
lbl_801DA808:
/* 801DA808 001D6468  80 1E 68 34 */	lwz r0, 0x6834(r30)
/* 801DA80C 001D646C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA810 001D6470  40 82 FF F8 */	bne lbl_801DA808
/* 801DA814 001D6474  38 61 00 0C */	addi r3, r1, 0xc
/* 801DA818 001D6478  38 80 00 04 */	li r4, 4
/* 801DA81C 001D647C  38 A0 00 01 */	li r5, 1
/* 801DA820 001D6480  4B FF FA 85 */	bl __EXI2Imm
/* 801DA824 001D6484  7C 60 00 34 */	cntlzw r0, r3
/* 801DA828 001D6488  3C 60 CD 00 */	lis r3, 0xCD006834@ha
/* 801DA82C 001D648C  54 00 D9 7E */	srwi r0, r0, 5
/* 801DA830 001D6490  7F E5 03 78 */	or r5, r31, r0
lbl_801DA834:
/* 801DA834 001D6494  80 03 68 34 */	lwz r0, 0xCD006834@l(r3)
/* 801DA838 001D6498  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA83C 001D649C  40 82 FF F8 */	bne lbl_801DA834
/* 801DA840 001D64A0  3C 80 CD 00 */	lis r4, 0xCD006828@ha
/* 801DA844 001D64A4  7C A0 00 34 */	cntlzw r0, r5
/* 801DA848 001D64A8  80 A4 68 28 */	lwz r5, 0xCD006828@l(r4)
/* 801DA84C 001D64AC  54 03 D9 7E */	srwi r3, r0, 5
/* 801DA850 001D64B0  70 A0 04 05 */	andi. r0, r5, 0x405
/* 801DA854 001D64B4  90 04 68 28 */	stw r0, 0x6828(r4)
/* 801DA858 001D64B8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DA85C 001D64BC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DA860 001D64C0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801DA864 001D64C4  7C 08 03 A6 */	mtlr r0
/* 801DA868 001D64C8  38 21 00 20 */	addi r1, r1, 0x20
/* 801DA86C 001D64CC  4E 80 00 20 */	blr

.global __DBEXIReadRam
__DBEXIReadRam:
/* 801DA870 001D64D0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DA874 001D64D4  7C 08 02 A6 */	mflr r0
/* 801DA878 001D64D8  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DA87C 001D64DC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DA880 001D64E0  3F E0 CD 00 */	lis r31, 0xCD006828@ha
/* 801DA884 001D64E4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801DA888 001D64E8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801DA88C 001D64EC  7C 9D 23 78 */	mr r29, r4
/* 801DA890 001D64F0  38 80 00 04 */	li r4, 4
/* 801DA894 001D64F4  93 81 00 10 */	stw r28, 0x10(r1)
/* 801DA898 001D64F8  7C BC 2B 78 */	mr r28, r5
/* 801DA89C 001D64FC  38 A0 00 01 */	li r5, 1
/* 801DA8A0 001D6500  90 61 00 08 */	stw r3, 8(r1)
/* 801DA8A4 001D6504  38 61 00 08 */	addi r3, r1, 8
/* 801DA8A8 001D6508  80 1F 68 28 */	lwz r0, 0xCD006828@l(r31)
/* 801DA8AC 001D650C  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA8B0 001D6510  60 00 00 C0 */	ori r0, r0, 0xc0
/* 801DA8B4 001D6514  90 1F 68 28 */	stw r0, 0x6828(r31)
/* 801DA8B8 001D6518  4B FF F9 ED */	bl __EXI2Imm
/* 801DA8BC 001D651C  7C 60 00 34 */	cntlzw r0, r3
/* 801DA8C0 001D6520  54 1E D9 7E */	srwi r30, r0, 5
lbl_801DA8C4:
/* 801DA8C4 001D6524  80 1F 68 34 */	lwz r0, 0x6834(r31)
/* 801DA8C8 001D6528  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA8CC 001D652C  40 82 FF F8 */	bne lbl_801DA8C4
/* 801DA8D0 001D6530  3F E0 CD 00 */	lis r31, 0xcd00
/* 801DA8D4 001D6534  48 00 00 3C */	b lbl_801DA910
lbl_801DA8D8:
/* 801DA8D8 001D6538  38 61 00 0C */	addi r3, r1, 0xc
/* 801DA8DC 001D653C  38 80 00 04 */	li r4, 4
/* 801DA8E0 001D6540  38 A0 00 00 */	li r5, 0
/* 801DA8E4 001D6544  4B FF F9 C1 */	bl __EXI2Imm
/* 801DA8E8 001D6548  7C 60 00 34 */	cntlzw r0, r3
/* 801DA8EC 001D654C  54 00 D9 7E */	srwi r0, r0, 5
/* 801DA8F0 001D6550  7F DE 03 78 */	or r30, r30, r0
lbl_801DA8F4:
/* 801DA8F4 001D6554  80 1F 68 34 */	lwz r0, 0x6834(r31)
/* 801DA8F8 001D6558  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA8FC 001D655C  40 82 FF F8 */	bne lbl_801DA8F4
/* 801DA900 001D6560  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801DA904 001D6564  3B 9C FF FC */	addi r28, r28, -4
/* 801DA908 001D6568  90 1D 00 00 */	stw r0, 0(r29)
/* 801DA90C 001D656C  3B BD 00 04 */	addi r29, r29, 4
lbl_801DA910:
/* 801DA910 001D6570  2C 1C 00 00 */	cmpwi r28, 0
/* 801DA914 001D6574  41 81 FF C4 */	bgt lbl_801DA8D8
/* 801DA918 001D6578  3C 80 CD 00 */	lis r4, 0xCD006828@ha
/* 801DA91C 001D657C  7F C0 00 34 */	cntlzw r0, r30
/* 801DA920 001D6580  80 A4 68 28 */	lwz r5, 0xCD006828@l(r4)
/* 801DA924 001D6584  54 03 D9 7E */	srwi r3, r0, 5
/* 801DA928 001D6588  70 A0 04 05 */	andi. r0, r5, 0x405
/* 801DA92C 001D658C  90 04 68 28 */	stw r0, 0x6828(r4)
/* 801DA930 001D6590  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DA934 001D6594  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DA938 001D6598  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801DA93C 001D659C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801DA940 001D65A0  83 81 00 10 */	lwz r28, 0x10(r1)
/* 801DA944 001D65A4  7C 08 03 A6 */	mtlr r0
/* 801DA948 001D65A8  38 21 00 20 */	addi r1, r1, 0x20
/* 801DA94C 001D65AC  4E 80 00 20 */	blr

.global __DBEXIWriteRam
__DBEXIWriteRam:
/* 801DA950 001D65B0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DA954 001D65B4  7C 08 02 A6 */	mflr r0
/* 801DA958 001D65B8  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DA95C 001D65BC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DA960 001D65C0  3F E0 CD 00 */	lis r31, 0xCD006828@ha
/* 801DA964 001D65C4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801DA968 001D65C8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801DA96C 001D65CC  7C 9D 23 78 */	mr r29, r4
/* 801DA970 001D65D0  38 80 00 04 */	li r4, 4
/* 801DA974 001D65D4  93 81 00 10 */	stw r28, 0x10(r1)
/* 801DA978 001D65D8  7C BC 2B 78 */	mr r28, r5
/* 801DA97C 001D65DC  38 A0 00 01 */	li r5, 1
/* 801DA980 001D65E0  90 61 00 08 */	stw r3, 8(r1)
/* 801DA984 001D65E4  38 61 00 08 */	addi r3, r1, 8
/* 801DA988 001D65E8  80 1F 68 28 */	lwz r0, 0xCD006828@l(r31)
/* 801DA98C 001D65EC  70 00 04 05 */	andi. r0, r0, 0x405
/* 801DA990 001D65F0  60 00 00 C0 */	ori r0, r0, 0xc0
/* 801DA994 001D65F4  90 1F 68 28 */	stw r0, 0x6828(r31)
/* 801DA998 001D65F8  4B FF F9 0D */	bl __EXI2Imm
/* 801DA99C 001D65FC  7C 60 00 34 */	cntlzw r0, r3
/* 801DA9A0 001D6600  54 1E D9 7E */	srwi r30, r0, 5
lbl_801DA9A4:
/* 801DA9A4 001D6604  80 1F 68 34 */	lwz r0, 0x6834(r31)
/* 801DA9A8 001D6608  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA9AC 001D660C  40 82 FF F8 */	bne lbl_801DA9A4
/* 801DA9B0 001D6610  3F E0 CD 00 */	lis r31, 0xcd00
/* 801DA9B4 001D6614  48 00 00 3C */	b lbl_801DA9F0
lbl_801DA9B8:
/* 801DA9B8 001D6618  80 1D 00 00 */	lwz r0, 0(r29)
/* 801DA9BC 001D661C  38 61 00 0C */	addi r3, r1, 0xc
/* 801DA9C0 001D6620  38 80 00 04 */	li r4, 4
/* 801DA9C4 001D6624  38 A0 00 01 */	li r5, 1
/* 801DA9C8 001D6628  90 01 00 0C */	stw r0, 0xc(r1)
/* 801DA9CC 001D662C  3B BD 00 04 */	addi r29, r29, 4
/* 801DA9D0 001D6630  4B FF F8 D5 */	bl __EXI2Imm
/* 801DA9D4 001D6634  7C 60 00 34 */	cntlzw r0, r3
/* 801DA9D8 001D6638  54 00 D9 7E */	srwi r0, r0, 5
/* 801DA9DC 001D663C  7F DE 03 78 */	or r30, r30, r0
lbl_801DA9E0:
/* 801DA9E0 001D6640  80 1F 68 34 */	lwz r0, 0x6834(r31)
/* 801DA9E4 001D6644  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 801DA9E8 001D6648  40 82 FF F8 */	bne lbl_801DA9E0
/* 801DA9EC 001D664C  3B 9C FF FC */	addi r28, r28, -4
lbl_801DA9F0:
/* 801DA9F0 001D6650  2C 1C 00 00 */	cmpwi r28, 0
/* 801DA9F4 001D6654  41 81 FF C4 */	bgt lbl_801DA9B8
/* 801DA9F8 001D6658  3C 80 CD 00 */	lis r4, 0xCD006828@ha
/* 801DA9FC 001D665C  7F C0 00 34 */	cntlzw r0, r30
/* 801DAA00 001D6660  80 A4 68 28 */	lwz r5, 0xCD006828@l(r4)
/* 801DAA04 001D6664  54 03 D9 7E */	srwi r3, r0, 5
/* 801DAA08 001D6668  70 A0 04 05 */	andi. r0, r5, 0x405
/* 801DAA0C 001D666C  90 04 68 28 */	stw r0, 0x6828(r4)
/* 801DAA10 001D6670  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DAA14 001D6674  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DAA18 001D6678  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801DAA1C 001D667C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801DAA20 001D6680  83 81 00 10 */	lwz r28, 0x10(r1)
/* 801DAA24 001D6684  7C 08 03 A6 */	mtlr r0
/* 801DAA28 001D6688  38 21 00 20 */	addi r1, r1, 0x20
/* 801DAA2C 001D668C  4E 80 00 20 */	blr