summaryrefslogtreecommitdiff
path: root/asm/SDK/BTE/btm_dev.s
blob: bb8ab25dce3a267b3387d448485d39cf0f5cb09d (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
.include "macros.inc"

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

.global BTM_SecAddDevice
BTM_SecAddDevice:
/* 802C5170 002C0DD0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802C5174 002C0DD4  7C 08 02 A6 */	mflr r0
/* 802C5178 002C0DD8  90 01 00 34 */	stw r0, 0x34(r1)
/* 802C517C 002C0DDC  39 61 00 30 */	addi r11, r1, 0x30
/* 802C5180 002C0DE0  4B F0 1F 9D */	bl _savegpr_24
/* 802C5184 002C0DE4  3D 20 80 57 */	lis r9, lbl_80568B78@ha
/* 802C5188 002C0DE8  7C 78 1B 78 */	mr r24, r3
/* 802C518C 002C0DEC  39 29 8B 78 */	addi r9, r9, lbl_80568B78@l
/* 802C5190 002C0DF0  7C 99 23 78 */	mr r25, r4
/* 802C5194 002C0DF4  7C BA 2B 78 */	mr r26, r5
/* 802C5198 002C0DF8  7C DB 33 78 */	mr r27, r6
/* 802C519C 002C0DFC  7C FC 3B 78 */	mr r28, r7
/* 802C51A0 002C0E00  7D 1D 43 78 */	mr r29, r8
/* 802C51A4 002C0E04  3B C9 1F 30 */	addi r30, r9, 0x1f30
/* 802C51A8 002C0E08  3B E0 00 00 */	li r31, 0
lbl_802C51AC:
/* 802C51AC 002C0E0C  88 1E 00 76 */	lbz r0, 0x76(r30)
/* 802C51B0 002C0E10  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C51B4 002C0E14  41 82 00 20 */	beq lbl_802C51D4
/* 802C51B8 002C0E18  7F 04 C3 78 */	mr r4, r24
/* 802C51BC 002C0E1C  38 7E 00 1C */	addi r3, r30, 0x1c
/* 802C51C0 002C0E20  38 A0 00 06 */	li r5, 6
/* 802C51C4 002C0E24  4B F0 51 D5 */	bl memcmp
/* 802C51C8 002C0E28  2C 03 00 00 */	cmpwi r3, 0
/* 802C51CC 002C0E2C  40 82 00 08 */	bne lbl_802C51D4
/* 802C51D0 002C0E30  48 00 00 18 */	b lbl_802C51E8
lbl_802C51D4:
/* 802C51D4 002C0E34  3B FF 00 01 */	addi r31, r31, 1
/* 802C51D8 002C0E38  3B DE 00 88 */	addi r30, r30, 0x88
/* 802C51DC 002C0E3C  2C 1F 00 10 */	cmpwi r31, 0x10
/* 802C51E0 002C0E40  41 80 FF CC */	blt lbl_802C51AC
/* 802C51E4 002C0E44  3B C0 00 00 */	li r30, 0
lbl_802C51E8:
/* 802C51E8 002C0E48  2C 1E 00 00 */	cmpwi r30, 0
/* 802C51EC 002C0E4C  40 82 00 20 */	bne lbl_802C520C
/* 802C51F0 002C0E50  7F 03 C3 78 */	mr r3, r24
/* 802C51F4 002C0E54  48 00 02 51 */	bl btm_sec_alloc_dev
/* 802C51F8 002C0E58  2C 03 00 00 */	cmpwi r3, 0
/* 802C51FC 002C0E5C  7C 7E 1B 78 */	mr r30, r3
/* 802C5200 002C0E60  40 82 00 24 */	bne lbl_802C5224
/* 802C5204 002C0E64  38 60 00 00 */	li r3, 0
/* 802C5208 002C0E68  48 00 00 D8 */	b lbl_802C52E0
lbl_802C520C:
/* 802C520C 002C0E6C  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C5210 002C0E70  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C5214 002C0E74  80 64 19 74 */	lwz r3, 0x1974(r4)
/* 802C5218 002C0E78  90 7E 00 0C */	stw r3, 0xc(r30)
/* 802C521C 002C0E7C  38 03 00 01 */	addi r0, r3, 1
/* 802C5220 002C0E80  90 04 19 74 */	stw r0, 0x1974(r4)
lbl_802C5224:
/* 802C5224 002C0E84  2C 19 00 00 */	cmpwi r25, 0
/* 802C5228 002C0E88  41 82 00 14 */	beq lbl_802C523C
/* 802C522C 002C0E8C  7F 24 CB 78 */	mr r4, r25
/* 802C5230 002C0E90  38 7E 00 22 */	addi r3, r30, 0x22
/* 802C5234 002C0E94  38 A0 00 03 */	li r5, 3
/* 802C5238 002C0E98  4B D3 ED C9 */	bl memcpy
lbl_802C523C:
/* 802C523C 002C0E9C  38 7E 00 35 */	addi r3, r30, 0x35
/* 802C5240 002C0EA0  38 80 00 00 */	li r4, 0
/* 802C5244 002C0EA4  38 A0 00 41 */	li r5, 0x41
/* 802C5248 002C0EA8  4B D3 EE BD */	bl memset
/* 802C524C 002C0EAC  2C 1A 00 00 */	cmpwi r26, 0
/* 802C5250 002C0EB0  41 82 00 2C */	beq lbl_802C527C
/* 802C5254 002C0EB4  88 1A 00 00 */	lbz r0, 0(r26)
/* 802C5258 002C0EB8  2C 00 00 00 */	cmpwi r0, 0
/* 802C525C 002C0EBC  41 82 00 20 */	beq lbl_802C527C
/* 802C5260 002C0EC0  88 1E 00 76 */	lbz r0, 0x76(r30)
/* 802C5264 002C0EC4  7F 44 D3 78 */	mr r4, r26
/* 802C5268 002C0EC8  38 7E 00 35 */	addi r3, r30, 0x35
/* 802C526C 002C0ECC  38 A0 00 40 */	li r5, 0x40
/* 802C5270 002C0ED0  60 00 00 08 */	ori r0, r0, 8
/* 802C5274 002C0ED4  98 1E 00 76 */	stb r0, 0x76(r30)
/* 802C5278 002C0ED8  4B F0 91 19 */	bl strncpy
lbl_802C527C:
/* 802C527C 002C0EDC  2C 1B 00 00 */	cmpwi r27, 0
/* 802C5280 002C0EE0  41 82 00 18 */	beq lbl_802C5298
/* 802C5284 002C0EE4  7F 64 DB 78 */	mr r4, r27
/* 802C5288 002C0EE8  38 7E 00 77 */	addi r3, r30, 0x77
/* 802C528C 002C0EEC  38 A0 00 08 */	li r5, 8
/* 802C5290 002C0EF0  4B D3 ED 71 */	bl memcpy
/* 802C5294 002C0EF4  48 00 00 14 */	b lbl_802C52A8
lbl_802C5298:
/* 802C5298 002C0EF8  38 7E 00 77 */	addi r3, r30, 0x77
/* 802C529C 002C0EFC  38 80 00 00 */	li r4, 0
/* 802C52A0 002C0F00  38 A0 00 08 */	li r5, 8
/* 802C52A4 002C0F04  4B D3 EE 61 */	bl memset
lbl_802C52A8:
/* 802C52A8 002C0F08  80 1C 00 00 */	lwz r0, 0(r28)
/* 802C52AC 002C0F0C  2C 1D 00 00 */	cmpwi r29, 0
/* 802C52B0 002C0F10  90 1E 00 10 */	stw r0, 0x10(r30)
/* 802C52B4 002C0F14  80 1C 00 04 */	lwz r0, 4(r28)
/* 802C52B8 002C0F18  90 1E 00 14 */	stw r0, 0x14(r30)
/* 802C52BC 002C0F1C  41 82 00 20 */	beq lbl_802C52DC
/* 802C52C0 002C0F20  88 1E 00 76 */	lbz r0, 0x76(r30)
/* 802C52C4 002C0F24  7F A4 EB 78 */	mr r4, r29
/* 802C52C8 002C0F28  38 7E 00 25 */	addi r3, r30, 0x25
/* 802C52CC 002C0F2C  38 A0 00 10 */	li r5, 0x10
/* 802C52D0 002C0F30  60 00 00 10 */	ori r0, r0, 0x10
/* 802C52D4 002C0F34  98 1E 00 76 */	stb r0, 0x76(r30)
/* 802C52D8 002C0F38  4B D3 ED 29 */	bl memcpy
lbl_802C52DC:
/* 802C52DC 002C0F3C  38 60 00 01 */	li r3, 1
lbl_802C52E0:
/* 802C52E0 002C0F40  39 61 00 30 */	addi r11, r1, 0x30
/* 802C52E4 002C0F44  4B F0 1E 85 */	bl _restgpr_24
/* 802C52E8 002C0F48  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802C52EC 002C0F4C  7C 08 03 A6 */	mtlr r0
/* 802C52F0 002C0F50  38 21 00 30 */	addi r1, r1, 0x30
/* 802C52F4 002C0F54  4E 80 00 20 */	blr

.global BTM_SecDeleteDevice
BTM_SecDeleteDevice:
/* 802C52F8 002C0F58  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C52FC 002C0F5C  7C 08 02 A6 */	mflr r0
/* 802C5300 002C0F60  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C5304 002C0F64  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C5308 002C0F68  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C530C 002C0F6C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802C5310 002C0F70  3B E0 00 00 */	li r31, 0
/* 802C5314 002C0F74  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802C5318 002C0F78  3B C4 1F 30 */	addi r30, r4, 0x1f30
/* 802C531C 002C0F7C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802C5320 002C0F80  7C 7D 1B 78 */	mr r29, r3
lbl_802C5324:
/* 802C5324 002C0F84  88 1E 00 76 */	lbz r0, 0x76(r30)
/* 802C5328 002C0F88  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C532C 002C0F8C  41 82 00 20 */	beq lbl_802C534C
/* 802C5330 002C0F90  7F A4 EB 78 */	mr r4, r29
/* 802C5334 002C0F94  38 7E 00 1C */	addi r3, r30, 0x1c
/* 802C5338 002C0F98  38 A0 00 06 */	li r5, 6
/* 802C533C 002C0F9C  4B F0 50 5D */	bl memcmp
/* 802C5340 002C0FA0  2C 03 00 00 */	cmpwi r3, 0
/* 802C5344 002C0FA4  40 82 00 08 */	bne lbl_802C534C
/* 802C5348 002C0FA8  48 00 00 18 */	b lbl_802C5360
lbl_802C534C:
/* 802C534C 002C0FAC  3B FF 00 01 */	addi r31, r31, 1
/* 802C5350 002C0FB0  3B DE 00 88 */	addi r30, r30, 0x88
/* 802C5354 002C0FB4  2C 1F 00 10 */	cmpwi r31, 0x10
/* 802C5358 002C0FB8  41 80 FF CC */	blt lbl_802C5324
/* 802C535C 002C0FBC  3B C0 00 00 */	li r30, 0
lbl_802C5360:
/* 802C5360 002C0FC0  2C 1E 00 00 */	cmpwi r30, 0
/* 802C5364 002C0FC4  40 82 00 0C */	bne lbl_802C5370
/* 802C5368 002C0FC8  38 60 00 00 */	li r3, 0
/* 802C536C 002C0FCC  48 00 00 1C */	b lbl_802C5388
lbl_802C5370:
/* 802C5370 002C0FD0  38 00 00 00 */	li r0, 0
/* 802C5374 002C0FD4  7F A3 EB 78 */	mr r3, r29
/* 802C5378 002C0FD8  98 1E 00 76 */	stb r0, 0x76(r30)
/* 802C537C 002C0FDC  38 80 00 00 */	li r4, 0
/* 802C5380 002C0FE0  48 00 1A 89 */	bl BTM_DeleteStoredLinkKey
/* 802C5384 002C0FE4  38 60 00 01 */	li r3, 1
lbl_802C5388:
/* 802C5388 002C0FE8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C538C 002C0FEC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802C5390 002C0FF0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802C5394 002C0FF4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802C5398 002C0FF8  7C 08 03 A6 */	mtlr r0
/* 802C539C 002C0FFC  38 21 00 20 */	addi r1, r1, 0x20
/* 802C53A0 002C1000  4E 80 00 20 */	blr

.global BTM_SecReadDevName
BTM_SecReadDevName:
/* 802C53A4 002C1004  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C53A8 002C1008  7C 08 02 A6 */	mflr r0
/* 802C53AC 002C100C  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C53B0 002C1010  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C53B4 002C1014  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C53B8 002C1018  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802C53BC 002C101C  3B E0 00 00 */	li r31, 0
/* 802C53C0 002C1020  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802C53C4 002C1024  3B C4 1F 30 */	addi r30, r4, 0x1f30
/* 802C53C8 002C1028  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802C53CC 002C102C  3B A0 00 00 */	li r29, 0
/* 802C53D0 002C1030  93 81 00 10 */	stw r28, 0x10(r1)
/* 802C53D4 002C1034  7C 7C 1B 78 */	mr r28, r3
lbl_802C53D8:
/* 802C53D8 002C1038  88 1E 00 76 */	lbz r0, 0x76(r30)
/* 802C53DC 002C103C  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C53E0 002C1040  41 82 00 20 */	beq lbl_802C5400
/* 802C53E4 002C1044  7F 84 E3 78 */	mr r4, r28
/* 802C53E8 002C1048  38 7E 00 1C */	addi r3, r30, 0x1c
/* 802C53EC 002C104C  38 A0 00 06 */	li r5, 6
/* 802C53F0 002C1050  4B F0 4F A9 */	bl memcmp
/* 802C53F4 002C1054  2C 03 00 00 */	cmpwi r3, 0
/* 802C53F8 002C1058  40 82 00 08 */	bne lbl_802C5400
/* 802C53FC 002C105C  48 00 00 18 */	b lbl_802C5414
lbl_802C5400:
/* 802C5400 002C1060  3B FF 00 01 */	addi r31, r31, 1
/* 802C5404 002C1064  3B DE 00 88 */	addi r30, r30, 0x88
/* 802C5408 002C1068  2C 1F 00 10 */	cmpwi r31, 0x10
/* 802C540C 002C106C  41 80 FF CC */	blt lbl_802C53D8
/* 802C5410 002C1070  3B C0 00 00 */	li r30, 0
lbl_802C5414:
/* 802C5414 002C1074  2C 1E 00 00 */	cmpwi r30, 0
/* 802C5418 002C1078  41 82 00 08 */	beq lbl_802C5420
/* 802C541C 002C107C  3B BE 00 35 */	addi r29, r30, 0x35
lbl_802C5420:
/* 802C5420 002C1080  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802C5424 002C1084  7F A3 EB 78 */	mr r3, r29
/* 802C5428 002C1088  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802C542C 002C108C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802C5430 002C1090  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802C5434 002C1094  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C5438 002C1098  7C 08 03 A6 */	mtlr r0
/* 802C543C 002C109C  38 21 00 20 */	addi r1, r1, 0x20
/* 802C5440 002C10A0  4E 80 00 20 */	blr

.global btm_sec_alloc_dev
btm_sec_alloc_dev:
/* 802C5444 002C10A4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802C5448 002C10A8  7C 08 02 A6 */	mflr r0
/* 802C544C 002C10AC  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C5450 002C10B0  90 01 00 14 */	stw r0, 0x14(r1)
/* 802C5454 002C10B4  38 00 00 10 */	li r0, 0x10
/* 802C5458 002C10B8  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C545C 002C10BC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802C5460 002C10C0  3B E0 00 00 */	li r31, 0
/* 802C5464 002C10C4  93 C1 00 08 */	stw r30, 8(r1)
/* 802C5468 002C10C8  7C 7E 1B 78 */	mr r30, r3
/* 802C546C 002C10CC  38 60 00 00 */	li r3, 0
/* 802C5470 002C10D0  7C 09 03 A6 */	mtctr r0
lbl_802C5474:
/* 802C5474 002C10D4  88 04 1F A6 */	lbz r0, 0x1fa6(r4)
/* 802C5478 002C10D8  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C547C 002C10DC  40 82 00 1C */	bne lbl_802C5498
/* 802C5480 002C10E0  1C 03 00 88 */	mulli r0, r3, 0x88
/* 802C5484 002C10E4  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C5488 002C10E8  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C548C 002C10EC  7C 63 02 14 */	add r3, r3, r0
/* 802C5490 002C10F0  3B E3 1F 30 */	addi r31, r3, 0x1f30
/* 802C5494 002C10F4  48 00 00 10 */	b lbl_802C54A4
lbl_802C5498:
/* 802C5498 002C10F8  38 84 00 88 */	addi r4, r4, 0x88
/* 802C549C 002C10FC  38 63 00 01 */	addi r3, r3, 1
/* 802C54A0 002C1100  42 00 FF D4 */	bdnz lbl_802C5474
lbl_802C54A4:
/* 802C54A4 002C1104  2C 1F 00 00 */	cmpwi r31, 0
/* 802C54A8 002C1108  40 82 00 0C */	bne lbl_802C54B4
/* 802C54AC 002C110C  48 00 01 F9 */	bl btm_find_oldest_dev
/* 802C54B0 002C1110  7C 7F 1B 78 */	mr r31, r3
lbl_802C54B4:
/* 802C54B4 002C1114  7F E3 FB 78 */	mr r3, r31
/* 802C54B8 002C1118  38 80 00 00 */	li r4, 0
/* 802C54BC 002C111C  38 A0 00 88 */	li r5, 0x88
/* 802C54C0 002C1120  4B D3 EC 45 */	bl memset
/* 802C54C4 002C1124  38 60 00 80 */	li r3, 0x80
/* 802C54C8 002C1128  38 00 00 00 */	li r0, 0
/* 802C54CC 002C112C  98 7F 00 76 */	stb r3, 0x76(r31)
/* 802C54D0 002C1130  7F C3 F3 78 */	mr r3, r30
/* 802C54D4 002C1134  98 1F 00 85 */	stb r0, 0x85(r31)
/* 802C54D8 002C1138  48 00 28 51 */	bl BTM_InqDbRead
/* 802C54DC 002C113C  2C 03 00 00 */	cmpwi r3, 0
/* 802C54E0 002C1140  7C 64 1B 78 */	mr r4, r3
/* 802C54E4 002C1144  41 82 00 18 */	beq lbl_802C54FC
/* 802C54E8 002C1148  38 7F 00 22 */	addi r3, r31, 0x22
/* 802C54EC 002C114C  38 84 00 08 */	addi r4, r4, 8
/* 802C54F0 002C1150  38 A0 00 03 */	li r5, 3
/* 802C54F4 002C1154  4B D3 EB 0D */	bl memcpy
/* 802C54F8 002C1158  48 00 00 1C */	b lbl_802C5514
lbl_802C54FC:
/* 802C54FC 002C115C  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C5500 002C1160  38 7F 00 22 */	addi r3, r31, 0x22
/* 802C5504 002C1164  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C5508 002C1168  38 A0 00 03 */	li r5, 3
/* 802C550C 002C116C  38 84 27 BA */	addi r4, r4, 0x27ba
/* 802C5510 002C1170  4B D3 EA F1 */	bl memcpy
lbl_802C5514:
/* 802C5514 002C1174  7F C4 F3 78 */	mr r4, r30
/* 802C5518 002C1178  38 7F 00 1C */	addi r3, r31, 0x1c
/* 802C551C 002C117C  38 A0 00 06 */	li r5, 6
/* 802C5520 002C1180  4B D3 EA E1 */	bl memcpy
/* 802C5524 002C1184  7F C3 F3 78 */	mr r3, r30
/* 802C5528 002C1188  4B FF EE 7D */	bl BTM_GetHCIConnHandle
/* 802C552C 002C118C  B0 7F 00 18 */	sth r3, 0x18(r31)
/* 802C5530 002C1190  3C A0 80 57 */	lis r5, lbl_80568B78@ha
/* 802C5534 002C1194  38 A5 8B 78 */	addi r5, r5, lbl_80568B78@l
/* 802C5538 002C1198  7F E3 FB 78 */	mr r3, r31
/* 802C553C 002C119C  80 85 19 74 */	lwz r4, 0x1974(r5)
/* 802C5540 002C11A0  90 9F 00 0C */	stw r4, 0xc(r31)
/* 802C5544 002C11A4  38 04 00 01 */	addi r0, r4, 1
/* 802C5548 002C11A8  90 05 19 74 */	stw r0, 0x1974(r5)
/* 802C554C 002C11AC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802C5550 002C11B0  83 C1 00 08 */	lwz r30, 8(r1)
/* 802C5554 002C11B4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802C5558 002C11B8  7C 08 03 A6 */	mtlr r0
/* 802C555C 002C11BC  38 21 00 10 */	addi r1, r1, 0x10
/* 802C5560 002C11C0  4E 80 00 20 */	blr

.global btm_find_dev_by_handle
btm_find_dev_by_handle:
/* 802C5564 002C11C4  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C5568 002C11C8  38 00 00 04 */	li r0, 4
/* 802C556C 002C11CC  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C5570 002C11D0  38 A0 00 00 */	li r5, 0
/* 802C5574 002C11D4  38 84 1F 30 */	addi r4, r4, 0x1f30
/* 802C5578 002C11D8  7C 09 03 A6 */	mtctr r0
lbl_802C557C:
/* 802C557C 002C11DC  88 04 00 76 */	lbz r0, 0x76(r4)
/* 802C5580 002C11E0  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C5584 002C11E4  41 82 00 18 */	beq lbl_802C559C
/* 802C5588 002C11E8  A0 04 00 18 */	lhz r0, 0x18(r4)
/* 802C558C 002C11EC  7C 00 18 40 */	cmplw r0, r3
/* 802C5590 002C11F0  40 82 00 0C */	bne lbl_802C559C
/* 802C5594 002C11F4  7C 83 23 78 */	mr r3, r4
/* 802C5598 002C11F8  4E 80 00 20 */	blr
lbl_802C559C:
/* 802C559C 002C11FC  88 04 00 FE */	lbz r0, 0xfe(r4)
/* 802C55A0 002C1200  38 84 00 88 */	addi r4, r4, 0x88
/* 802C55A4 002C1204  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C55A8 002C1208  41 82 00 18 */	beq lbl_802C55C0
/* 802C55AC 002C120C  A0 04 00 18 */	lhz r0, 0x18(r4)
/* 802C55B0 002C1210  7C 00 18 40 */	cmplw r0, r3
/* 802C55B4 002C1214  40 82 00 0C */	bne lbl_802C55C0
/* 802C55B8 002C1218  7C 83 23 78 */	mr r3, r4
/* 802C55BC 002C121C  4E 80 00 20 */	blr
lbl_802C55C0:
/* 802C55C0 002C1220  88 04 00 FE */	lbz r0, 0xfe(r4)
/* 802C55C4 002C1224  38 84 00 88 */	addi r4, r4, 0x88
/* 802C55C8 002C1228  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C55CC 002C122C  41 82 00 18 */	beq lbl_802C55E4
/* 802C55D0 002C1230  A0 04 00 18 */	lhz r0, 0x18(r4)
/* 802C55D4 002C1234  7C 00 18 40 */	cmplw r0, r3
/* 802C55D8 002C1238  40 82 00 0C */	bne lbl_802C55E4
/* 802C55DC 002C123C  7C 83 23 78 */	mr r3, r4
/* 802C55E0 002C1240  4E 80 00 20 */	blr
lbl_802C55E4:
/* 802C55E4 002C1244  88 04 00 FE */	lbz r0, 0xfe(r4)
/* 802C55E8 002C1248  38 84 00 88 */	addi r4, r4, 0x88
/* 802C55EC 002C124C  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C55F0 002C1250  41 82 00 18 */	beq lbl_802C5608
/* 802C55F4 002C1254  A0 04 00 18 */	lhz r0, 0x18(r4)
/* 802C55F8 002C1258  7C 00 18 40 */	cmplw r0, r3
/* 802C55FC 002C125C  40 82 00 0C */	bne lbl_802C5608
/* 802C5600 002C1260  7C 83 23 78 */	mr r3, r4
/* 802C5604 002C1264  4E 80 00 20 */	blr
lbl_802C5608:
/* 802C5608 002C1268  38 A5 00 03 */	addi r5, r5, 3
/* 802C560C 002C126C  38 84 00 88 */	addi r4, r4, 0x88
/* 802C5610 002C1270  42 00 FF 6C */	bdnz lbl_802C557C
/* 802C5614 002C1274  38 60 00 00 */	li r3, 0
/* 802C5618 002C1278  4E 80 00 20 */	blr

.global btm_find_dev
btm_find_dev:
/* 802C561C 002C127C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C5620 002C1280  7C 08 02 A6 */	mflr r0
/* 802C5624 002C1284  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C5628 002C1288  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C562C 002C128C  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C5630 002C1290  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802C5634 002C1294  3B E4 1F 30 */	addi r31, r4, 0x1f30
/* 802C5638 002C1298  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802C563C 002C129C  3B C0 00 00 */	li r30, 0
/* 802C5640 002C12A0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802C5644 002C12A4  7C 7D 1B 78 */	mr r29, r3
lbl_802C5648:
/* 802C5648 002C12A8  88 1F 00 76 */	lbz r0, 0x76(r31)
/* 802C564C 002C12AC  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C5650 002C12B0  41 82 00 24 */	beq lbl_802C5674
/* 802C5654 002C12B4  7F A4 EB 78 */	mr r4, r29
/* 802C5658 002C12B8  38 7F 00 1C */	addi r3, r31, 0x1c
/* 802C565C 002C12BC  38 A0 00 06 */	li r5, 6
/* 802C5660 002C12C0  4B F0 4D 39 */	bl memcmp
/* 802C5664 002C12C4  2C 03 00 00 */	cmpwi r3, 0
/* 802C5668 002C12C8  40 82 00 0C */	bne lbl_802C5674
/* 802C566C 002C12CC  7F E3 FB 78 */	mr r3, r31
/* 802C5670 002C12D0  48 00 00 18 */	b lbl_802C5688
lbl_802C5674:
/* 802C5674 002C12D4  3B DE 00 01 */	addi r30, r30, 1
/* 802C5678 002C12D8  3B FF 00 88 */	addi r31, r31, 0x88
/* 802C567C 002C12DC  2C 1E 00 10 */	cmpwi r30, 0x10
/* 802C5680 002C12E0  41 80 FF C8 */	blt lbl_802C5648
/* 802C5684 002C12E4  38 60 00 00 */	li r3, 0
lbl_802C5688:
/* 802C5688 002C12E8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C568C 002C12EC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802C5690 002C12F0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802C5694 002C12F4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802C5698 002C12F8  7C 08 03 A6 */	mtlr r0
/* 802C569C 002C12FC  38 21 00 20 */	addi r1, r1, 0x20
/* 802C56A0 002C1300  4E 80 00 20 */	blr

.global btm_find_oldest_dev
btm_find_oldest_dev:
/* 802C56A4 002C1304  3C 60 80 57 */	lis r3, lbl_80568B78@ha
/* 802C56A8 002C1308  38 00 00 04 */	li r0, 4
/* 802C56AC 002C130C  38 63 8B 78 */	addi r3, r3, lbl_80568B78@l
/* 802C56B0 002C1310  38 C0 FF FF */	li r6, -1
/* 802C56B4 002C1314  38 A3 1F 30 */	addi r5, r3, 0x1f30
/* 802C56B8 002C1318  38 E0 00 00 */	li r7, 0
/* 802C56BC 002C131C  7C A3 2B 78 */	mr r3, r5
/* 802C56C0 002C1320  7C 09 03 A6 */	mtctr r0
lbl_802C56C4:
/* 802C56C4 002C1324  88 85 00 76 */	lbz r4, 0x76(r5)
/* 802C56C8 002C1328  54 80 06 31 */	rlwinm. r0, r4, 0, 0x18, 0x18
/* 802C56CC 002C132C  41 82 00 20 */	beq lbl_802C56EC
/* 802C56D0 002C1330  54 80 06 F7 */	rlwinm. r0, r4, 0, 0x1b, 0x1b
/* 802C56D4 002C1334  40 82 00 18 */	bne lbl_802C56EC
/* 802C56D8 002C1338  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802C56DC 002C133C  7C 00 30 40 */	cmplw r0, r6
/* 802C56E0 002C1340  40 80 00 0C */	bge lbl_802C56EC
/* 802C56E4 002C1344  7C A3 2B 78 */	mr r3, r5
/* 802C56E8 002C1348  7C 06 03 78 */	mr r6, r0
lbl_802C56EC:
/* 802C56EC 002C134C  88 85 00 FE */	lbz r4, 0xfe(r5)
/* 802C56F0 002C1350  38 A5 00 88 */	addi r5, r5, 0x88
/* 802C56F4 002C1354  54 80 06 31 */	rlwinm. r0, r4, 0, 0x18, 0x18
/* 802C56F8 002C1358  41 82 00 20 */	beq lbl_802C5718
/* 802C56FC 002C135C  54 80 06 F7 */	rlwinm. r0, r4, 0, 0x1b, 0x1b
/* 802C5700 002C1360  40 82 00 18 */	bne lbl_802C5718
/* 802C5704 002C1364  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802C5708 002C1368  7C 00 30 40 */	cmplw r0, r6
/* 802C570C 002C136C  40 80 00 0C */	bge lbl_802C5718
/* 802C5710 002C1370  7C A3 2B 78 */	mr r3, r5
/* 802C5714 002C1374  7C 06 03 78 */	mr r6, r0
lbl_802C5718:
/* 802C5718 002C1378  88 85 00 FE */	lbz r4, 0xfe(r5)
/* 802C571C 002C137C  38 A5 00 88 */	addi r5, r5, 0x88
/* 802C5720 002C1380  54 80 06 31 */	rlwinm. r0, r4, 0, 0x18, 0x18
/* 802C5724 002C1384  41 82 00 20 */	beq lbl_802C5744
/* 802C5728 002C1388  54 80 06 F7 */	rlwinm. r0, r4, 0, 0x1b, 0x1b
/* 802C572C 002C138C  40 82 00 18 */	bne lbl_802C5744
/* 802C5730 002C1390  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802C5734 002C1394  7C 00 30 40 */	cmplw r0, r6
/* 802C5738 002C1398  40 80 00 0C */	bge lbl_802C5744
/* 802C573C 002C139C  7C A3 2B 78 */	mr r3, r5
/* 802C5740 002C13A0  7C 06 03 78 */	mr r6, r0
lbl_802C5744:
/* 802C5744 002C13A4  88 85 00 FE */	lbz r4, 0xfe(r5)
/* 802C5748 002C13A8  38 A5 00 88 */	addi r5, r5, 0x88
/* 802C574C 002C13AC  54 80 06 31 */	rlwinm. r0, r4, 0, 0x18, 0x18
/* 802C5750 002C13B0  41 82 00 20 */	beq lbl_802C5770
/* 802C5754 002C13B4  54 80 06 F7 */	rlwinm. r0, r4, 0, 0x1b, 0x1b
/* 802C5758 002C13B8  40 82 00 18 */	bne lbl_802C5770
/* 802C575C 002C13BC  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802C5760 002C13C0  7C 00 30 40 */	cmplw r0, r6
/* 802C5764 002C13C4  40 80 00 0C */	bge lbl_802C5770
/* 802C5768 002C13C8  7C A3 2B 78 */	mr r3, r5
/* 802C576C 002C13CC  7C 06 03 78 */	mr r6, r0
lbl_802C5770:
/* 802C5770 002C13D0  38 E7 00 03 */	addi r7, r7, 3
/* 802C5774 002C13D4  38 A5 00 88 */	addi r5, r5, 0x88
/* 802C5778 002C13D8  42 00 FF 4C */	bdnz lbl_802C56C4
/* 802C577C 002C13DC  3C 06 00 01 */	addis r0, r6, 1
/* 802C5780 002C13E0  28 00 FF FF */	cmplwi r0, 0xffff
/* 802C5784 002C13E4  4C 82 00 20 */	bnelr
/* 802C5788 002C13E8  3C 80 80 57 */	lis r4, lbl_80568B78@ha
/* 802C578C 002C13EC  38 00 00 04 */	li r0, 4
/* 802C5790 002C13F0  38 84 8B 78 */	addi r4, r4, lbl_80568B78@l
/* 802C5794 002C13F4  38 A0 00 00 */	li r5, 0
/* 802C5798 002C13F8  38 84 1F 30 */	addi r4, r4, 0x1f30
/* 802C579C 002C13FC  7C 09 03 A6 */	mtctr r0
lbl_802C57A0:
/* 802C57A0 002C1400  88 04 00 76 */	lbz r0, 0x76(r4)
/* 802C57A4 002C1404  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C57A8 002C1408  41 82 00 18 */	beq lbl_802C57C0
/* 802C57AC 002C140C  80 04 00 0C */	lwz r0, 0xc(r4)
/* 802C57B0 002C1410  7C 00 30 40 */	cmplw r0, r6
/* 802C57B4 002C1414  40 80 00 0C */	bge lbl_802C57C0
/* 802C57B8 002C1418  7C 83 23 78 */	mr r3, r4
/* 802C57BC 002C141C  7C 06 03 78 */	mr r6, r0
lbl_802C57C0:
/* 802C57C0 002C1420  88 04 00 FE */	lbz r0, 0xfe(r4)
/* 802C57C4 002C1424  38 84 00 88 */	addi r4, r4, 0x88
/* 802C57C8 002C1428  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C57CC 002C142C  41 82 00 18 */	beq lbl_802C57E4
/* 802C57D0 002C1430  80 04 00 0C */	lwz r0, 0xc(r4)
/* 802C57D4 002C1434  7C 00 30 40 */	cmplw r0, r6
/* 802C57D8 002C1438  40 80 00 0C */	bge lbl_802C57E4
/* 802C57DC 002C143C  7C 83 23 78 */	mr r3, r4
/* 802C57E0 002C1440  7C 06 03 78 */	mr r6, r0
lbl_802C57E4:
/* 802C57E4 002C1444  88 04 00 FE */	lbz r0, 0xfe(r4)
/* 802C57E8 002C1448  38 84 00 88 */	addi r4, r4, 0x88
/* 802C57EC 002C144C  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C57F0 002C1450  41 82 00 18 */	beq lbl_802C5808
/* 802C57F4 002C1454  80 04 00 0C */	lwz r0, 0xc(r4)
/* 802C57F8 002C1458  7C 00 30 40 */	cmplw r0, r6
/* 802C57FC 002C145C  40 80 00 0C */	bge lbl_802C5808
/* 802C5800 002C1460  7C 83 23 78 */	mr r3, r4
/* 802C5804 002C1464  7C 06 03 78 */	mr r6, r0
lbl_802C5808:
/* 802C5808 002C1468  88 04 00 FE */	lbz r0, 0xfe(r4)
/* 802C580C 002C146C  38 84 00 88 */	addi r4, r4, 0x88
/* 802C5810 002C1470  54 00 06 31 */	rlwinm. r0, r0, 0, 0x18, 0x18
/* 802C5814 002C1474  41 82 00 18 */	beq lbl_802C582C
/* 802C5818 002C1478  80 04 00 0C */	lwz r0, 0xc(r4)
/* 802C581C 002C147C  7C 00 30 40 */	cmplw r0, r6
/* 802C5820 002C1480  40 80 00 0C */	bge lbl_802C582C
/* 802C5824 002C1484  7C 83 23 78 */	mr r3, r4
/* 802C5828 002C1488  7C 06 03 78 */	mr r6, r0
lbl_802C582C:
/* 802C582C 002C148C  38 A5 00 03 */	addi r5, r5, 3
/* 802C5830 002C1490  38 84 00 88 */	addi r4, r4, 0x88
/* 802C5834 002C1494  42 00 FF 6C */	bdnz lbl_802C57A0
/* 802C5838 002C1498  4E 80 00 20 */	blr