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
540
541
542
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global AddressToString
AddressToString:
/* 8035A44C 003560AC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8035A450 003560B0 7C 08 02 A6 */ mflr r0
/* 8035A454 003560B4 2C 05 00 00 */ cmpwi r5, 0
/* 8035A458 003560B8 90 01 00 24 */ stw r0, 0x24(r1)
/* 8035A45C 003560BC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8035A460 003560C0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8035A464 003560C4 7C 9E 23 78 */ mr r30, r4
/* 8035A468 003560C8 41 82 00 0C */ beq lbl_8035A474
/* 8035A46C 003560CC 7C BF 2B 78 */ mr r31, r5
/* 8035A470 003560D0 48 00 00 20 */ b lbl_8035A490
lbl_8035A474:
/* 8035A474 003560D4 80 0D B1 30 */ lwz r0, lbl_806403F0-_SDA_BASE_(r13)
/* 8035A478 003560D8 3C A0 80 62 */ lis r5, lbl_806211E8@ha
/* 8035A47C 003560DC 38 A5 11 E8 */ addi r5, r5, lbl_806211E8@l
/* 8035A480 003560E0 68 06 00 01 */ xori r6, r0, 1
/* 8035A484 003560E4 1C 06 00 16 */ mulli r0, r6, 0x16
/* 8035A488 003560E8 90 CD B1 30 */ stw r6, lbl_806403F0-_SDA_BASE_(r13)
/* 8035A48C 003560EC 7F E5 02 14 */ add r31, r5, r0
lbl_8035A490:
/* 8035A490 003560F0 2C 03 00 00 */ cmpwi r3, 0
/* 8035A494 003560F4 41 82 00 58 */ beq lbl_8035A4EC
/* 8035A498 003560F8 2C 04 00 00 */ cmpwi r4, 0
/* 8035A49C 003560FC 41 82 00 2C */ beq lbl_8035A4C8
/* 8035A4A0 00356100 90 61 00 0C */ stw r3, 0xc(r1)
/* 8035A4A4 00356104 38 61 00 0C */ addi r3, r1, 0xc
/* 8035A4A8 00356108 4B F9 C8 71 */ bl SOInetNtoA
/* 8035A4AC 0035610C 7C 65 1B 78 */ mr r5, r3
/* 8035A4B0 00356110 7F E3 FB 78 */ mr r3, r31
/* 8035A4B4 00356114 7F C6 F3 78 */ mr r6, r30
/* 8035A4B8 00356118 38 8D 94 98 */ addi r4, r13, lbl_8063E758-_SDA_BASE_
/* 8035A4BC 0035611C 4C C6 31 82 */ crclr 6
/* 8035A4C0 00356120 4B E7 26 3D */ bl sprintf
/* 8035A4C4 00356124 48 00 00 50 */ b lbl_8035A514
lbl_8035A4C8:
/* 8035A4C8 00356128 90 61 00 08 */ stw r3, 8(r1)
/* 8035A4CC 0035612C 38 61 00 08 */ addi r3, r1, 8
/* 8035A4D0 00356130 4B F9 C8 49 */ bl SOInetNtoA
/* 8035A4D4 00356134 7C 65 1B 78 */ mr r5, r3
/* 8035A4D8 00356138 7F E3 FB 78 */ mr r3, r31
/* 8035A4DC 0035613C 38 8D 94 A0 */ addi r4, r13, lbl_8063E760-_SDA_BASE_
/* 8035A4E0 00356140 4C C6 31 82 */ crclr 6
/* 8035A4E4 00356144 4B E7 26 19 */ bl sprintf
/* 8035A4E8 00356148 48 00 00 2C */ b lbl_8035A514
lbl_8035A4EC:
/* 8035A4EC 0035614C 2C 04 00 00 */ cmpwi r4, 0
/* 8035A4F0 00356150 41 82 00 1C */ beq lbl_8035A50C
/* 8035A4F4 00356154 7F E3 FB 78 */ mr r3, r31
/* 8035A4F8 00356158 7F C5 F3 78 */ mr r5, r30
/* 8035A4FC 0035615C 38 8D 94 A4 */ addi r4, r13, lbl_8063E764-_SDA_BASE_
/* 8035A500 00356160 4C C6 31 82 */ crclr 6
/* 8035A504 00356164 4B E7 25 F9 */ bl sprintf
/* 8035A508 00356168 48 00 00 0C */ b lbl_8035A514
lbl_8035A50C:
/* 8035A50C 0035616C 38 00 00 00 */ li r0, 0
/* 8035A510 00356170 98 1F 00 00 */ stb r0, 0(r31)
lbl_8035A514:
/* 8035A514 00356174 7F E3 FB 78 */ mr r3, r31
/* 8035A518 00356178 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8035A51C 0035617C 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8035A520 00356180 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8035A524 00356184 7C 08 03 A6 */ mtlr r0
/* 8035A528 00356188 38 21 00 20 */ addi r1, r1, 0x20
/* 8035A52C 0035618C 4E 80 00 20 */ blr
.global GetLocalIP
GetLocalIP:
/* 8035A530 00356190 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8035A534 00356194 7C 08 02 A6 */ mflr r0
/* 8035A538 00356198 90 01 00 24 */ stw r0, 0x24(r1)
/* 8035A53C 0035619C 39 61 00 20 */ addi r11, r1, 0x20
/* 8035A540 003561A0 4B E6 CB E5 */ bl _savegpr_26
/* 8035A544 003561A4 3B 40 00 00 */ li r26, 0
/* 8035A548 003561A8 4B FD E3 95 */ bl getlocalhost
/* 8035A54C 003561AC 2C 03 00 00 */ cmpwi r3, 0
/* 8035A550 003561B0 7C 7E 1B 78 */ mr r30, r3
/* 8035A554 003561B4 40 82 00 0C */ bne lbl_8035A560
/* 8035A558 003561B8 38 60 00 00 */ li r3, 0
/* 8035A55C 003561BC 48 00 00 58 */ b lbl_8035A5B4
lbl_8035A560:
/* 8035A560 003561C0 3B A0 00 00 */ li r29, 0
/* 8035A564 003561C4 3F E0 7F 00 */ lis r31, 0x7f00
lbl_8035A568:
/* 8035A568 003561C8 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 8035A56C 003561CC 7F 63 E8 2E */ lwzx r27, r3, r29
/* 8035A570 003561D0 2C 1B 00 00 */ cmpwi r27, 0
/* 8035A574 003561D4 41 82 00 3C */ beq lbl_8035A5B0
/* 8035A578 003561D8 83 9B 00 00 */ lwz r28, 0(r27)
/* 8035A57C 003561DC 38 7F 00 01 */ addi r3, r31, 1
/* 8035A580 003561E0 4B F9 C7 F9 */ bl SOHtoNl
/* 8035A584 003561E4 7C 1C 18 40 */ cmplw r28, r3
/* 8035A588 003561E8 41 82 00 20 */ beq lbl_8035A5A8
/* 8035A58C 003561EC 7F 9A E3 78 */ mr r26, r28
/* 8035A590 003561F0 7F 63 DB 78 */ mr r3, r27
/* 8035A594 003561F4 4B FD E4 FD */ bl IsPrivateIP
/* 8035A598 003561F8 2C 03 00 00 */ cmpwi r3, 0
/* 8035A59C 003561FC 41 82 00 0C */ beq lbl_8035A5A8
/* 8035A5A0 00356200 7F 83 E3 78 */ mr r3, r28
/* 8035A5A4 00356204 48 00 00 10 */ b lbl_8035A5B4
lbl_8035A5A8:
/* 8035A5A8 00356208 3B BD 00 04 */ addi r29, r29, 4
/* 8035A5AC 0035620C 4B FF FF BC */ b lbl_8035A568
lbl_8035A5B0:
/* 8035A5B0 00356210 7F 43 D3 78 */ mr r3, r26
lbl_8035A5B4:
/* 8035A5B4 00356214 39 61 00 20 */ addi r11, r1, 0x20
/* 8035A5B8 00356218 4B E6 CB B9 */ bl _restgpr_26
/* 8035A5BC 0035621C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8035A5C0 00356220 7C 08 03 A6 */ mtlr r0
/* 8035A5C4 00356224 38 21 00 20 */ addi r1, r1, 0x20
/* 8035A5C8 00356228 4E 80 00 20 */ blr
.global Think
Think:
/* 8035A5CC 0035622C 94 21 FF 60 */ stwu r1, -0xa0(r1)
/* 8035A5D0 00356230 7C 08 02 A6 */ mflr r0
/* 8035A5D4 00356234 90 01 00 A4 */ stw r0, 0xa4(r1)
/* 8035A5D8 00356238 39 61 00 A0 */ addi r11, r1, 0xa0
/* 8035A5DC 0035623C 4B E6 CB 3D */ bl _savegpr_23
/* 8035A5E0 00356240 80 0D B1 4C */ lwz r0, lbl_8064040C-_SDA_BASE_(r13)
/* 8035A5E4 00356244 38 A0 00 08 */ li r5, 8
/* 8035A5E8 00356248 90 A1 00 0C */ stw r5, 0xc(r1)
/* 8035A5EC 0035624C 7C 78 1B 78 */ mr r24, r3
/* 8035A5F0 00356250 2C 00 00 00 */ cmpwi r0, 0
/* 8035A5F4 00356254 7C 99 23 78 */ mr r25, r4
/* 8035A5F8 00356258 41 82 00 54 */ beq lbl_8035A64C
/* 8035A5FC 0035625C 80 0D B1 48 */ lwz r0, lbl_80640408-_SDA_BASE_(r13)
/* 8035A600 00356260 2C 00 00 00 */ cmpwi r0, 0
/* 8035A604 00356264 41 82 00 48 */ beq lbl_8035A64C
/* 8035A608 00356268 80 0D B1 44 */ lwz r0, lbl_80640404-_SDA_BASE_(r13)
/* 8035A60C 0035626C 2C 00 00 00 */ cmpwi r0, 0
/* 8035A610 00356270 41 82 00 3C */ beq lbl_8035A64C
/* 8035A614 00356274 80 0D B1 40 */ lwz r0, lbl_80640400-_SDA_BASE_(r13)
/* 8035A618 00356278 2C 00 00 00 */ cmpwi r0, 0
/* 8035A61C 0035627C 41 82 00 30 */ beq lbl_8035A64C
/* 8035A620 00356280 80 0D B1 3C */ lwz r0, lbl_806403FC-_SDA_BASE_(r13)
/* 8035A624 00356284 2C 00 00 00 */ cmpwi r0, 0
/* 8035A628 00356288 41 82 00 24 */ beq lbl_8035A64C
/* 8035A62C 0035628C 80 0D B1 38 */ lwz r0, lbl_806403F8-_SDA_BASE_(r13)
/* 8035A630 00356290 2C 00 00 00 */ cmpwi r0, 0
/* 8035A634 00356294 41 82 00 18 */ beq lbl_8035A64C
/* 8035A638 00356298 80 0D B1 34 */ lwz r0, lbl_806403F4-_SDA_BASE_(r13)
/* 8035A63C 0035629C 2C 00 00 00 */ cmpwi r0, 0
/* 8035A640 003562A0 41 82 00 0C */ beq lbl_8035A64C
/* 8035A644 003562A4 38 60 00 00 */ li r3, 0
/* 8035A648 003562A8 48 00 02 90 */ b lbl_8035A8D8
lbl_8035A64C:
/* 8035A64C 003562AC 2C 03 FF FF */ cmpwi r3, -1
/* 8035A650 003562B0 41 82 02 84 */ beq lbl_8035A8D4
/* 8035A654 003562B4 3F 40 80 62 */ lis r26, lbl_80621218@ha
/* 8035A658 003562B8 3B A0 00 01 */ li r29, 1
/* 8035A65C 003562BC 3B 9A 12 18 */ addi r28, r26, lbl_80621218@l
/* 8035A660 003562C0 3B C0 00 00 */ li r30, 0
/* 8035A664 003562C4 3F 60 80 64 */ lis r27, 0x8064
/* 8035A668 003562C8 3B E0 00 08 */ li r31, 8
lbl_8035A66C:
/* 8035A66C 003562CC 7F 03 C3 78 */ mr r3, r24
/* 8035A670 003562D0 4B FD E1 DD */ bl CanReceiveOnSocket
/* 8035A674 003562D4 2C 03 00 00 */ cmpwi r3, 0
/* 8035A678 003562D8 41 82 02 5C */ beq lbl_8035A8D4
/* 8035A67C 003562DC 7F 03 C3 78 */ mr r3, r24
/* 8035A680 003562E0 38 9A 12 18 */ addi r4, r26, 0x1218
/* 8035A684 003562E4 38 E1 00 18 */ addi r7, r1, 0x18
/* 8035A688 003562E8 39 01 00 0C */ addi r8, r1, 0xc
/* 8035A68C 003562EC 38 A0 02 00 */ li r5, 0x200
/* 8035A690 003562F0 38 C0 00 00 */ li r6, 0
/* 8035A694 003562F4 4B FD D7 71 */ bl recvfrom
/* 8035A698 003562F8 2C 03 FF FF */ cmpwi r3, -1
/* 8035A69C 003562FC 7C 77 1B 78 */ mr r23, r3
/* 8035A6A0 00356300 40 82 00 10 */ bne lbl_8035A6B0
/* 8035A6A4 00356304 7F 03 C3 78 */ mr r3, r24
/* 8035A6A8 00356308 4B FD D9 01 */ bl GOAGetLastError
/* 8035A6AC 0035630C 48 00 02 28 */ b lbl_8035A8D4
lbl_8035A6B0:
/* 8035A6B0 00356310 38 7A 12 18 */ addi r3, r26, 0x1218
/* 8035A6B4 00356314 38 9B E7 68 */ addi r4, r27, -6296
/* 8035A6B8 00356318 38 A0 00 06 */ li r5, 6
/* 8035A6BC 0035631C 4B E6 FC DD */ bl memcmp
/* 8035A6C0 00356320 2C 03 00 00 */ cmpwi r3, 0
/* 8035A6C4 00356324 41 82 00 0C */ beq lbl_8035A6D0
/* 8035A6C8 00356328 38 60 00 01 */ li r3, 1
/* 8035A6CC 0035632C 48 00 02 0C */ b lbl_8035A8D8
lbl_8035A6D0:
/* 8035A6D0 00356330 2C 17 00 15 */ cmpwi r23, 0x15
/* 8035A6D4 00356334 88 1C 00 07 */ lbz r0, 7(r28)
/* 8035A6D8 00356338 40 80 00 0C */ bge lbl_8035A6E4
/* 8035A6DC 0035633C 38 60 00 01 */ li r3, 1
/* 8035A6E0 00356340 48 00 01 F8 */ b lbl_8035A8D8
lbl_8035A6E4:
/* 8035A6E4 00356344 28 00 00 02 */ cmplwi r0, 2
/* 8035A6E8 00356348 40 82 00 B0 */ bne lbl_8035A798
/* 8035A6EC 0035634C 7F 84 E3 78 */ mr r4, r28
/* 8035A6F0 00356350 38 61 00 20 */ addi r3, r1, 0x20
/* 8035A6F4 00356354 38 A0 00 15 */ li r5, 0x15
/* 8035A6F8 00356358 4B CA 99 09 */ bl memcpy
/* 8035A6FC 0035635C 88 01 00 2C */ lbz r0, 0x2c(r1)
/* 8035A700 00356360 2C 00 00 02 */ cmpwi r0, 2
/* 8035A704 00356364 41 82 00 44 */ beq lbl_8035A748
/* 8035A708 00356368 40 80 00 10 */ bge lbl_8035A718
/* 8035A70C 0035636C 2C 00 00 01 */ cmpwi r0, 1
/* 8035A710 00356370 40 80 00 14 */ bge lbl_8035A724
/* 8035A714 00356374 48 00 01 B8 */ b lbl_8035A8CC
lbl_8035A718:
/* 8035A718 00356378 2C 00 00 04 */ cmpwi r0, 4
/* 8035A71C 0035637C 40 80 01 B0 */ bge lbl_8035A8CC
/* 8035A720 00356380 48 00 00 50 */ b lbl_8035A770
lbl_8035A724:
/* 8035A724 00356384 93 AD B1 4C */ stw r29, lbl_8064040C-_SDA_BASE_(r13)
/* 8035A728 00356388 A0 61 00 1A */ lhz r3, 0x1a(r1)
/* 8035A72C 0035638C 4B F9 C6 45 */ bl SONtoHs
/* 8035A730 00356390 7C 60 1B 78 */ mr r0, r3
/* 8035A734 00356394 80 61 00 1C */ lwz r3, 0x1c(r1)
/* 8035A738 00356398 54 04 04 3E */ clrlwi r4, r0, 0x10
/* 8035A73C 0035639C 38 A0 00 00 */ li r5, 0
/* 8035A740 003563A0 4B FF FD 0D */ bl AddressToString
/* 8035A744 003563A4 48 00 01 88 */ b lbl_8035A8CC
lbl_8035A748:
/* 8035A748 003563A8 93 D9 00 80 */ stw r30, 0x80(r25)
/* 8035A74C 003563AC 93 AD B1 48 */ stw r29, lbl_80640408-_SDA_BASE_(r13)
/* 8035A750 003563B0 A0 61 00 1A */ lhz r3, 0x1a(r1)
/* 8035A754 003563B4 4B F9 C6 1D */ bl SONtoHs
/* 8035A758 003563B8 7C 60 1B 78 */ mr r0, r3
/* 8035A75C 003563BC 80 61 00 1C */ lwz r3, 0x1c(r1)
/* 8035A760 003563C0 54 04 04 3E */ clrlwi r4, r0, 0x10
/* 8035A764 003563C4 38 A0 00 00 */ li r5, 0
/* 8035A768 003563C8 4B FF FC E5 */ bl AddressToString
/* 8035A76C 003563CC 48 00 01 60 */ b lbl_8035A8CC
lbl_8035A770:
/* 8035A770 003563D0 93 D9 00 84 */ stw r30, 0x84(r25)
/* 8035A774 003563D4 93 AD B1 44 */ stw r29, lbl_80640404-_SDA_BASE_(r13)
/* 8035A778 003563D8 A0 61 00 1A */ lhz r3, 0x1a(r1)
/* 8035A77C 003563DC 4B F9 C5 F5 */ bl SONtoHs
/* 8035A780 003563E0 7C 60 1B 78 */ mr r0, r3
/* 8035A784 003563E4 80 61 00 1C */ lwz r3, 0x1c(r1)
/* 8035A788 003563E8 54 04 04 3E */ clrlwi r4, r0, 0x10
/* 8035A78C 003563EC 38 A0 00 00 */ li r5, 0
/* 8035A790 003563F0 4B FF FC BD */ bl AddressToString
/* 8035A794 003563F4 48 00 01 38 */ b lbl_8035A8CC
lbl_8035A798:
/* 8035A798 003563F8 28 00 00 0B */ cmplwi r0, 0xb
/* 8035A79C 003563FC 40 82 01 30 */ bne lbl_8035A8CC
/* 8035A7A0 00356400 7F 84 E3 78 */ mr r4, r28
/* 8035A7A4 00356404 38 61 00 20 */ addi r3, r1, 0x20
/* 8035A7A8 00356408 38 A0 00 15 */ li r5, 0x15
/* 8035A7AC 0035640C 4B CA 98 55 */ bl memcpy
/* 8035A7B0 00356410 80 61 00 28 */ lwz r3, 0x28(r1)
/* 8035A7B4 00356414 4B F9 C5 B9 */ bl SONtoHl
/* 8035A7B8 00356418 2C 03 00 02 */ cmpwi r3, 2
/* 8035A7BC 0035641C 90 61 00 28 */ stw r3, 0x28(r1)
/* 8035A7C0 00356420 41 82 00 3C */ beq lbl_8035A7FC
/* 8035A7C4 00356424 40 80 00 14 */ bge lbl_8035A7D8
/* 8035A7C8 00356428 2C 03 00 00 */ cmpwi r3, 0
/* 8035A7CC 0035642C 41 82 00 18 */ beq lbl_8035A7E4
/* 8035A7D0 00356430 40 80 00 24 */ bge lbl_8035A7F4
/* 8035A7D4 00356434 48 00 00 2C */ b lbl_8035A800
lbl_8035A7D8:
/* 8035A7D8 00356438 2C 03 00 04 */ cmpwi r3, 4
/* 8035A7DC 0035643C 40 80 00 24 */ bge lbl_8035A800
/* 8035A7E0 00356440 48 00 00 0C */ b lbl_8035A7EC
lbl_8035A7E4:
/* 8035A7E4 00356444 93 AD B1 40 */ stw r29, lbl_80640400-_SDA_BASE_(r13)
/* 8035A7E8 00356448 48 00 00 18 */ b lbl_8035A800
lbl_8035A7EC:
/* 8035A7EC 0035644C 93 AD B1 3C */ stw r29, lbl_806403FC-_SDA_BASE_(r13)
/* 8035A7F0 00356450 48 00 00 10 */ b lbl_8035A800
lbl_8035A7F4:
/* 8035A7F4 00356454 93 AD B1 38 */ stw r29, lbl_806403F8-_SDA_BASE_(r13)
/* 8035A7F8 00356458 48 00 00 08 */ b lbl_8035A800
lbl_8035A7FC:
/* 8035A7FC 0035645C 93 AD B1 34 */ stw r29, lbl_806403F4-_SDA_BASE_(r13)
lbl_8035A800:
/* 8035A800 00356460 4B FF FD 31 */ bl GetLocalIP
/* 8035A804 00356464 80 01 00 28 */ lwz r0, 0x28(r1)
/* 8035A808 00356468 38 81 00 10 */ addi r4, r1, 0x10
/* 8035A80C 0035646C 38 A1 00 08 */ addi r5, r1, 8
/* 8035A810 00356470 54 00 20 36 */ slwi r0, r0, 4
/* 8035A814 00356474 7C D9 02 14 */ add r6, r25, r0
/* 8035A818 00356478 90 66 00 94 */ stw r3, 0x94(r6)
/* 8035A81C 0035647C 7F 03 C3 78 */ mr r3, r24
/* 8035A820 00356480 93 E1 00 08 */ stw r31, 8(r1)
/* 8035A824 00356484 4B FD D6 F1 */ bl getsockname
/* 8035A828 00356488 2C 03 FF FF */ cmpwi r3, -1
/* 8035A82C 0035648C 40 82 00 0C */ bne lbl_8035A838
/* 8035A830 00356490 38 60 00 00 */ li r3, 0
/* 8035A834 00356494 48 00 00 08 */ b lbl_8035A83C
lbl_8035A838:
/* 8035A838 00356498 A0 61 00 12 */ lhz r3, 0x12(r1)
lbl_8035A83C:
/* 8035A83C 0035649C 4B F9 C5 35 */ bl SONtoHs
/* 8035A840 003564A0 80 01 00 28 */ lwz r0, 0x28(r1)
/* 8035A844 003564A4 54 00 20 36 */ slwi r0, r0, 4
/* 8035A848 003564A8 7C 99 02 14 */ add r4, r25, r0
/* 8035A84C 003564AC B0 64 00 98 */ sth r3, 0x98(r4)
/* 8035A850 003564B0 80 01 00 28 */ lwz r0, 0x28(r1)
/* 8035A854 003564B4 80 81 00 2F */ lwz r4, 0x2f(r1)
/* 8035A858 003564B8 54 00 20 36 */ slwi r0, r0, 4
/* 8035A85C 003564BC 7C 79 02 14 */ add r3, r25, r0
/* 8035A860 003564C0 90 83 00 9C */ stw r4, 0x9c(r3)
/* 8035A864 003564C4 A0 61 00 33 */ lhz r3, 0x33(r1)
/* 8035A868 003564C8 4B F9 C5 09 */ bl SONtoHs
/* 8035A86C 003564CC 80 01 00 28 */ lwz r0, 0x28(r1)
/* 8035A870 003564D0 54 00 20 36 */ slwi r0, r0, 4
/* 8035A874 003564D4 7C 99 02 14 */ add r4, r25, r0
/* 8035A878 003564D8 B0 64 00 A0 */ sth r3, 0xa0(r4)
/* 8035A87C 003564DC A0 61 00 1A */ lhz r3, 0x1a(r1)
/* 8035A880 003564E0 4B F9 C4 F1 */ bl SONtoHs
/* 8035A884 003564E4 7C 60 1B 78 */ mr r0, r3
/* 8035A888 003564E8 80 61 00 1C */ lwz r3, 0x1c(r1)
/* 8035A88C 003564EC 54 04 04 3E */ clrlwi r4, r0, 0x10
/* 8035A890 003564F0 38 A0 00 00 */ li r5, 0
/* 8035A894 003564F4 4B FF FB B9 */ bl AddressToString
/* 8035A898 003564F8 80 01 00 28 */ lwz r0, 0x28(r1)
/* 8035A89C 003564FC 54 00 20 36 */ slwi r0, r0, 4
/* 8035A8A0 00356500 7C 19 02 14 */ add r0, r25, r0
/* 8035A8A4 00356504 36 E0 00 94 */ addic. r23, r0, 0x94
/* 8035A8A8 00356508 41 82 00 24 */ beq lbl_8035A8CC
/* 8035A8AC 0035650C 80 77 00 00 */ lwz r3, 0(r23)
/* 8035A8B0 00356510 38 A0 00 00 */ li r5, 0
/* 8035A8B4 00356514 A0 97 00 04 */ lhz r4, 4(r23)
/* 8035A8B8 00356518 4B FF FB 95 */ bl AddressToString
/* 8035A8BC 0035651C 80 77 00 08 */ lwz r3, 8(r23)
/* 8035A8C0 00356520 38 A0 00 00 */ li r5, 0
/* 8035A8C4 00356524 A0 97 00 0C */ lhz r4, 0xc(r23)
/* 8035A8C8 00356528 4B FF FB 85 */ bl AddressToString
lbl_8035A8CC:
/* 8035A8CC 0035652C 2C 18 FF FF */ cmpwi r24, -1
/* 8035A8D0 00356530 40 82 FD 9C */ bne lbl_8035A66C
lbl_8035A8D4:
/* 8035A8D4 00356534 38 60 00 01 */ li r3, 1
lbl_8035A8D8:
/* 8035A8D8 00356538 39 61 00 A0 */ addi r11, r1, 0xa0
/* 8035A8DC 0035653C 4B E6 C8 89 */ bl _restgpr_23
/* 8035A8E0 00356540 80 01 00 A4 */ lwz r0, 0xa4(r1)
/* 8035A8E4 00356544 7C 08 03 A6 */ mtlr r0
/* 8035A8E8 00356548 38 21 00 A0 */ addi r1, r1, 0xa0
/* 8035A8EC 0035654C 4E 80 00 20 */ blr
.global NatifyThink
NatifyThink:
/* 8035A8F0 00356550 4B FF FC DC */ b Think
.global DetermineNatType
DetermineNatType:
/* 8035A8F4 00356554 80 C3 00 9C */ lwz r6, 0x9c(r3)
/* 8035A8F8 00356558 38 A0 00 06 */ li r5, 6
/* 8035A8FC 0035655C 38 80 00 04 */ li r4, 4
/* 8035A900 00356560 38 00 00 01 */ li r0, 1
/* 8035A904 00356564 2C 06 00 00 */ cmpwi r6, 0
/* 8035A908 00356568 90 A3 00 8C */ stw r5, 0x8c(r3)
/* 8035A90C 0035656C 90 83 00 88 */ stw r4, 0x88(r3)
/* 8035A910 00356570 90 03 00 D4 */ stw r0, 0xd4(r3)
/* 8035A914 00356574 41 82 00 1C */ beq lbl_8035A930
/* 8035A918 00356578 80 03 00 AC */ lwz r0, 0xac(r3)
/* 8035A91C 0035657C 2C 00 00 00 */ cmpwi r0, 0
/* 8035A920 00356580 41 82 00 10 */ beq lbl_8035A930
/* 8035A924 00356584 80 03 00 BC */ lwz r0, 0xbc(r3)
/* 8035A928 00356588 2C 00 00 00 */ cmpwi r0, 0
/* 8035A92C 0035658C 40 82 00 0C */ bne lbl_8035A938
lbl_8035A930:
/* 8035A930 00356590 38 60 00 00 */ li r3, 0
/* 8035A934 00356594 4E 80 00 20 */ blr
lbl_8035A938:
/* 8035A938 00356598 80 A3 00 84 */ lwz r5, 0x84(r3)
/* 8035A93C 0035659C 2C 05 00 00 */ cmpwi r5, 0
/* 8035A940 003565A0 40 82 00 28 */ bne lbl_8035A968
/* 8035A944 003565A4 80 03 00 80 */ lwz r0, 0x80(r3)
/* 8035A948 003565A8 2C 00 00 00 */ cmpwi r0, 0
/* 8035A94C 003565AC 40 82 00 1C */ bne lbl_8035A968
/* 8035A950 003565B0 80 03 00 94 */ lwz r0, 0x94(r3)
/* 8035A954 003565B4 7C 06 00 40 */ cmplw r6, r0
/* 8035A958 003565B8 40 82 00 10 */ bne lbl_8035A968
/* 8035A95C 003565BC 38 00 00 00 */ li r0, 0
/* 8035A960 003565C0 90 03 00 8C */ stw r0, 0x8c(r3)
/* 8035A964 003565C4 48 00 01 80 */ b lbl_8035AAE4
lbl_8035A968:
/* 8035A968 003565C8 80 03 00 94 */ lwz r0, 0x94(r3)
/* 8035A96C 003565CC 7C 06 00 40 */ cmplw r6, r0
/* 8035A970 003565D0 40 82 00 10 */ bne lbl_8035A980
/* 8035A974 003565D4 38 00 00 01 */ li r0, 1
/* 8035A978 003565D8 90 03 00 8C */ stw r0, 0x8c(r3)
/* 8035A97C 003565DC 48 00 01 68 */ b lbl_8035AAE4
lbl_8035A980:
/* 8035A980 003565E0 80 C3 00 80 */ lwz r6, 0x80(r3)
/* 8035A984 003565E4 2C 06 00 00 */ cmpwi r6, 0
/* 8035A988 003565E8 40 82 00 40 */ bne lbl_8035A9C8
/* 8035A98C 003565EC 2C 05 00 00 */ cmpwi r5, 0
/* 8035A990 003565F0 40 82 00 38 */ bne lbl_8035A9C8
/* 8035A994 003565F4 A0 83 00 B0 */ lhz r4, 0xb0(r3)
/* 8035A998 003565F8 A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035A99C 003565FC 7C 04 00 50 */ subf r0, r4, r0
/* 8035A9A0 00356600 7C 04 FE 70 */ srawi r4, r0, 0x1f
/* 8035A9A4 00356604 7C 80 02 78 */ xor r0, r4, r0
/* 8035A9A8 00356608 7C 04 00 50 */ subf r0, r4, r0
/* 8035A9AC 0035660C 2C 00 00 01 */ cmpwi r0, 1
/* 8035A9B0 00356610 41 80 00 18 */ blt lbl_8035A9C8
/* 8035A9B4 00356614 38 80 00 05 */ li r4, 5
/* 8035A9B8 00356618 38 00 00 00 */ li r0, 0
/* 8035A9BC 0035661C 90 83 00 8C */ stw r4, 0x8c(r3)
/* 8035A9C0 00356620 90 03 00 88 */ stw r0, 0x88(r3)
/* 8035A9C4 00356624 48 00 01 20 */ b lbl_8035AAE4
lbl_8035A9C8:
/* 8035A9C8 00356628 2C 06 00 00 */ cmpwi r6, 0
/* 8035A9CC 0035662C 41 82 00 40 */ beq lbl_8035AA0C
/* 8035A9D0 00356630 2C 05 00 00 */ cmpwi r5, 0
/* 8035A9D4 00356634 40 82 00 38 */ bne lbl_8035AA0C
/* 8035A9D8 00356638 A0 83 00 B0 */ lhz r4, 0xb0(r3)
/* 8035A9DC 0035663C A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035A9E0 00356640 7C 04 00 50 */ subf r0, r4, r0
/* 8035A9E4 00356644 7C 04 FE 70 */ srawi r4, r0, 0x1f
/* 8035A9E8 00356648 7C 80 02 78 */ xor r0, r4, r0
/* 8035A9EC 0035664C 7C 04 00 50 */ subf r0, r4, r0
/* 8035A9F0 00356650 2C 00 00 01 */ cmpwi r0, 1
/* 8035A9F4 00356654 41 80 00 18 */ blt lbl_8035AA0C
/* 8035A9F8 00356658 38 80 00 05 */ li r4, 5
/* 8035A9FC 0035665C 38 00 00 02 */ li r0, 2
/* 8035AA00 00356660 90 83 00 8C */ stw r4, 0x8c(r3)
/* 8035AA04 00356664 90 03 00 88 */ stw r0, 0x88(r3)
/* 8035AA08 00356668 48 00 00 DC */ b lbl_8035AAE4
lbl_8035AA0C:
/* 8035AA0C 0035666C 2C 06 00 00 */ cmpwi r6, 0
/* 8035AA10 00356670 40 82 00 40 */ bne lbl_8035AA50
/* 8035AA14 00356674 2C 05 00 00 */ cmpwi r5, 0
/* 8035AA18 00356678 41 82 00 38 */ beq lbl_8035AA50
/* 8035AA1C 0035667C A0 83 00 B0 */ lhz r4, 0xb0(r3)
/* 8035AA20 00356680 A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035AA24 00356684 7C 04 00 50 */ subf r0, r4, r0
/* 8035AA28 00356688 7C 04 FE 70 */ srawi r4, r0, 0x1f
/* 8035AA2C 0035668C 7C 80 02 78 */ xor r0, r4, r0
/* 8035AA30 00356690 7C 04 00 50 */ subf r0, r4, r0
/* 8035AA34 00356694 2C 00 00 01 */ cmpwi r0, 1
/* 8035AA38 00356698 41 80 00 18 */ blt lbl_8035AA50
/* 8035AA3C 0035669C 38 80 00 05 */ li r4, 5
/* 8035AA40 003566A0 38 00 00 03 */ li r0, 3
/* 8035AA44 003566A4 90 83 00 8C */ stw r4, 0x8c(r3)
/* 8035AA48 003566A8 90 03 00 88 */ stw r0, 0x88(r3)
/* 8035AA4C 003566AC 48 00 00 98 */ b lbl_8035AAE4
lbl_8035AA50:
/* 8035AA50 003566B0 2C 06 00 00 */ cmpwi r6, 0
/* 8035AA54 003566B4 41 82 00 40 */ beq lbl_8035AA94
/* 8035AA58 003566B8 2C 05 00 00 */ cmpwi r5, 0
/* 8035AA5C 003566BC 41 82 00 38 */ beq lbl_8035AA94
/* 8035AA60 003566C0 A0 83 00 B0 */ lhz r4, 0xb0(r3)
/* 8035AA64 003566C4 A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035AA68 003566C8 7C 04 00 50 */ subf r0, r4, r0
/* 8035AA6C 003566CC 7C 04 FE 70 */ srawi r4, r0, 0x1f
/* 8035AA70 003566D0 7C 80 02 78 */ xor r0, r4, r0
/* 8035AA74 003566D4 7C 04 00 50 */ subf r0, r4, r0
/* 8035AA78 003566D8 2C 00 00 01 */ cmpwi r0, 1
/* 8035AA7C 003566DC 41 80 00 18 */ blt lbl_8035AA94
/* 8035AA80 003566E0 38 80 00 05 */ li r4, 5
/* 8035AA84 003566E4 38 00 00 01 */ li r0, 1
/* 8035AA88 003566E8 90 83 00 8C */ stw r4, 0x8c(r3)
/* 8035AA8C 003566EC 90 03 00 88 */ stw r0, 0x88(r3)
/* 8035AA90 003566F0 48 00 00 54 */ b lbl_8035AAE4
lbl_8035AA94:
/* 8035AA94 003566F4 2C 85 00 00 */ cmpwi cr1, r5, 0
/* 8035AA98 003566F8 41 86 00 10 */ beq cr1, lbl_8035AAA8
/* 8035AA9C 003566FC 38 00 00 04 */ li r0, 4
/* 8035AAA0 00356700 90 03 00 8C */ stw r0, 0x8c(r3)
/* 8035AAA4 00356704 48 00 00 40 */ b lbl_8035AAE4
lbl_8035AAA8:
/* 8035AAA8 00356708 2C 06 00 00 */ cmpwi r6, 0
/* 8035AAAC 0035670C 41 82 00 14 */ beq lbl_8035AAC0
/* 8035AAB0 00356710 40 86 00 10 */ bne cr1, lbl_8035AAC0
/* 8035AAB4 00356714 38 00 00 03 */ li r0, 3
/* 8035AAB8 00356718 90 03 00 8C */ stw r0, 0x8c(r3)
/* 8035AABC 0035671C 48 00 00 28 */ b lbl_8035AAE4
lbl_8035AAC0:
/* 8035AAC0 00356720 2C 06 00 00 */ cmpwi r6, 0
/* 8035AAC4 00356724 40 82 00 18 */ bne lbl_8035AADC
/* 8035AAC8 00356728 2C 05 00 00 */ cmpwi r5, 0
/* 8035AACC 0035672C 40 82 00 10 */ bne lbl_8035AADC
/* 8035AAD0 00356730 38 00 00 02 */ li r0, 2
/* 8035AAD4 00356734 90 03 00 8C */ stw r0, 0x8c(r3)
/* 8035AAD8 00356738 48 00 00 0C */ b lbl_8035AAE4
lbl_8035AADC:
/* 8035AADC 0035673C 38 00 00 06 */ li r0, 6
/* 8035AAE0 00356740 90 03 00 8C */ stw r0, 0x8c(r3)
lbl_8035AAE4:
/* 8035AAE4 00356744 A0 C3 00 98 */ lhz r6, 0x98(r3)
/* 8035AAE8 00356748 A0 A3 00 A0 */ lhz r5, 0xa0(r3)
/* 8035AAEC 0035674C 7C 05 30 40 */ cmplw r5, r6
/* 8035AAF0 00356750 40 82 00 30 */ bne lbl_8035AB20
/* 8035AAF4 00356754 A0 83 00 B0 */ lhz r4, 0xb0(r3)
/* 8035AAF8 00356758 A0 03 00 A8 */ lhz r0, 0xa8(r3)
/* 8035AAFC 0035675C 7C 04 00 40 */ cmplw r4, r0
/* 8035AB00 00356760 40 82 00 20 */ bne lbl_8035AB20
/* 8035AB04 00356764 A0 83 00 C0 */ lhz r4, 0xc0(r3)
/* 8035AB08 00356768 A0 03 00 B8 */ lhz r0, 0xb8(r3)
/* 8035AB0C 0035676C 7C 04 00 40 */ cmplw r4, r0
/* 8035AB10 00356770 40 82 00 10 */ bne lbl_8035AB20
/* 8035AB14 00356774 38 00 00 01 */ li r0, 1
/* 8035AB18 00356778 90 03 00 90 */ stw r0, 0x90(r3)
/* 8035AB1C 0035677C 48 00 00 70 */ b lbl_8035AB8C
lbl_8035AB20:
/* 8035AB20 00356780 A0 83 00 B0 */ lhz r4, 0xb0(r3)
/* 8035AB24 00356784 7C 05 20 40 */ cmplw r5, r4
/* 8035AB28 00356788 40 82 00 1C */ bne lbl_8035AB44
/* 8035AB2C 0035678C A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035AB30 00356790 7C 04 00 40 */ cmplw r4, r0
/* 8035AB34 00356794 40 82 00 10 */ bne lbl_8035AB44
/* 8035AB38 00356798 38 00 00 02 */ li r0, 2
/* 8035AB3C 0035679C 90 03 00 90 */ stw r0, 0x90(r3)
/* 8035AB40 003567A0 48 00 00 4C */ b lbl_8035AB8C
lbl_8035AB44:
/* 8035AB44 003567A4 7C 05 30 40 */ cmplw r5, r6
/* 8035AB48 003567A8 40 82 00 20 */ bne lbl_8035AB68
/* 8035AB4C 003567AC A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035AB50 003567B0 7C 04 00 50 */ subf r0, r4, r0
/* 8035AB54 003567B4 2C 00 00 01 */ cmpwi r0, 1
/* 8035AB58 003567B8 40 82 00 10 */ bne lbl_8035AB68
/* 8035AB5C 003567BC 38 00 00 04 */ li r0, 4
/* 8035AB60 003567C0 90 03 00 90 */ stw r0, 0x90(r3)
/* 8035AB64 003567C4 48 00 00 28 */ b lbl_8035AB8C
lbl_8035AB68:
/* 8035AB68 003567C8 A0 03 00 C0 */ lhz r0, 0xc0(r3)
/* 8035AB6C 003567CC 7C 04 00 50 */ subf r0, r4, r0
/* 8035AB70 003567D0 2C 00 00 01 */ cmpwi r0, 1
/* 8035AB74 003567D4 40 82 00 10 */ bne lbl_8035AB84
/* 8035AB78 003567D8 38 00 00 03 */ li r0, 3
/* 8035AB7C 003567DC 90 03 00 90 */ stw r0, 0x90(r3)
/* 8035AB80 003567E0 48 00 00 0C */ b lbl_8035AB8C
lbl_8035AB84:
/* 8035AB84 003567E4 38 00 00 00 */ li r0, 0
/* 8035AB88 003567E8 90 03 00 90 */ stw r0, 0x90(r3)
lbl_8035AB8C:
/* 8035AB8C 003567EC A0 83 00 D0 */ lhz r4, 0xd0(r3)
/* 8035AB90 003567F0 2C 04 00 00 */ cmpwi r4, 0
/* 8035AB94 003567F4 41 82 00 18 */ beq lbl_8035ABAC
/* 8035AB98 003567F8 A0 03 00 A0 */ lhz r0, 0xa0(r3)
/* 8035AB9C 003567FC 7C 00 20 40 */ cmplw r0, r4
/* 8035ABA0 00356800 41 82 00 0C */ beq lbl_8035ABAC
/* 8035ABA4 00356804 38 00 00 00 */ li r0, 0
/* 8035ABA8 00356808 90 03 00 D4 */ stw r0, 0xd4(r3)
lbl_8035ABAC:
/* 8035ABAC 0035680C 38 60 00 01 */ li r3, 1
/* 8035ABB0 00356810 4E 80 00 20 */ blr
|