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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global gti2GetChallenge
gti2GetChallenge:
/* 80348534 00344194 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80348538 00344198 7C 08 02 A6 */ mflr r0
/* 8034853C 0034419C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80348540 003441A0 39 61 00 20 */ addi r11, r1, 0x20
/* 80348544 003441A4 4B E7 EB E5 */ bl _savegpr_27
/* 80348548 003441A8 7C 7B 1B 78 */ mr r27, r3
/* 8034854C 003441AC 4B FF 0A 8D */ bl current_time
/* 80348550 003441B0 4B E8 48 0D */ bl srand
/* 80348554 003441B4 4B E8 47 E9 */ bl rand
/* 80348558 003441B8 3C 80 2C 0B */ lis r4, 0x2C0B02C1@ha
/* 8034855C 003441BC 3B 80 00 00 */ li r28, 0
/* 80348560 003441C0 3B E4 02 C1 */ addi r31, r4, 0x2C0B02C1@l
/* 80348564 003441C4 3B A0 00 01 */ li r29, 1
/* 80348568 003441C8 7C 1F 18 96 */ mulhw r0, r31, r3
/* 8034856C 003441CC 7C 00 26 70 */ srawi r0, r0, 4
/* 80348570 003441D0 54 04 0F FE */ srwi r4, r0, 0x1f
/* 80348574 003441D4 7C 00 22 14 */ add r0, r0, r4
/* 80348578 003441D8 1C 00 00 5D */ mulli r0, r0, 0x5d
/* 8034857C 003441DC 7C 60 18 50 */ subf r3, r0, r3
/* 80348580 003441E0 38 03 00 21 */ addi r0, r3, 0x21
/* 80348584 003441E4 98 1B 00 00 */ stb r0, 0(r27)
lbl_80348588:
/* 80348588 003441E8 7F DB EA 14 */ add r30, r27, r29
/* 8034858C 003441EC 88 BB 00 00 */ lbz r5, 0(r27)
/* 80348590 003441F0 88 DE FF FF */ lbz r6, -1(r30)
/* 80348594 003441F4 54 A4 07 FE */ clrlwi r4, r5, 0x1f
/* 80348598 003441F8 38 05 FF B1 */ addi r0, r5, -79
/* 8034859C 003441FC 7F A3 32 78 */ xor r3, r29, r6
/* 803485A0 00344200 7C A5 30 50 */ subf r5, r5, r6
/* 803485A4 00344204 7C 84 E2 78 */ xor r4, r4, r28
/* 803485A8 00344208 54 00 0F FE */ srwi r0, r0, 0x1f
/* 803485AC 0034420C 54 63 07 FE */ clrlwi r3, r3, 0x1f
/* 803485B0 00344210 54 A5 0F FE */ srwi r5, r5, 0x1f
/* 803485B4 00344214 7C 83 1A 78 */ xor r3, r4, r3
/* 803485B8 00344218 7C 60 02 78 */ xor r0, r3, r0
/* 803485BC 0034421C 7C 1C 2A 78 */ xor r28, r0, r5
/* 803485C0 00344220 4B E8 47 7D */ bl rand
/* 803485C4 00344224 7C 1F 18 96 */ mulhw r0, r31, r3
/* 803485C8 00344228 2C 1C 00 00 */ cmpwi r28, 0
/* 803485CC 0034422C 7C 00 26 70 */ srawi r0, r0, 4
/* 803485D0 00344230 54 04 0F FE */ srwi r4, r0, 0x1f
/* 803485D4 00344234 7C 00 22 14 */ add r0, r0, r4
/* 803485D8 00344238 1C 00 00 5D */ mulli r0, r0, 0x5d
/* 803485DC 0034423C 7C 60 18 50 */ subf r3, r0, r3
/* 803485E0 00344240 38 03 00 21 */ addi r0, r3, 0x21
/* 803485E4 00344244 98 1E 00 00 */ stb r0, 0(r30)
/* 803485E8 00344248 41 82 00 10 */ beq lbl_803485F8
/* 803485EC 0034424C 88 1E 00 00 */ lbz r0, 0(r30)
/* 803485F0 00344250 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 803485F4 00344254 41 82 00 1C */ beq lbl_80348610
lbl_803485F8:
/* 803485F8 00344258 2C 1C 00 00 */ cmpwi r28, 0
/* 803485FC 0034425C 40 82 00 20 */ bne lbl_8034861C
/* 80348600 00344260 88 1E 00 00 */ lbz r0, 0(r30)
/* 80348604 00344264 54 00 07 FE */ clrlwi r0, r0, 0x1f
/* 80348608 00344268 2C 00 00 01 */ cmpwi r0, 1
/* 8034860C 0034426C 40 82 00 10 */ bne lbl_8034861C
lbl_80348610:
/* 80348610 00344270 88 7E 00 00 */ lbz r3, 0(r30)
/* 80348614 00344274 38 03 00 01 */ addi r0, r3, 1
/* 80348618 00344278 98 1E 00 00 */ stb r0, 0(r30)
lbl_8034861C:
/* 8034861C 0034427C 3B BD 00 01 */ addi r29, r29, 1
/* 80348620 00344280 2C 1D 00 20 */ cmpwi r29, 0x20
/* 80348624 00344284 41 80 FF 64 */ blt lbl_80348588
/* 80348628 00344288 39 61 00 20 */ addi r11, r1, 0x20
/* 8034862C 0034428C 7F 63 DB 78 */ mr r3, r27
/* 80348630 00344290 4B E7 EB 45 */ bl _restgpr_27
/* 80348634 00344294 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80348638 00344298 7C 08 03 A6 */ mtlr r0
/* 8034863C 0034429C 38 21 00 20 */ addi r1, r1, 0x20
/* 80348640 003442A0 4E 80 00 20 */ blr
.global gti2GetResponse
gti2GetResponse:
/* 80348644 003442A4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80348648 003442A8 7C 08 02 A6 */ mflr r0
/* 8034864C 003442AC 90 01 00 34 */ stw r0, 0x34(r1)
/* 80348650 003442B0 39 61 00 30 */ addi r11, r1, 0x30
/* 80348654 003442B4 4B E7 EA C5 */ bl _savegpr_23
/* 80348658 003442B8 3C A0 80 45 */ lis r5, lbl_8044B5E0@ha
/* 8034865C 003442BC 7C 79 1B 78 */ mr r25, r3
/* 80348660 003442C0 7C 9A 23 78 */ mr r26, r4
/* 80348664 003442C4 38 65 B5 E0 */ addi r3, r5, lbl_8044B5E0@l
/* 80348668 003442C8 4B E7 E4 FD */ bl strlen
/* 8034866C 003442CC 38 00 00 1F */ li r0, 0x1f
/* 80348670 003442D0 7C 7E 1B 78 */ mr r30, r3
/* 80348674 003442D4 38 E0 00 00 */ li r7, 0
/* 80348678 003442D8 38 C0 00 01 */ li r6, 1
/* 8034867C 003442DC 7C 09 03 A6 */ mtctr r0
lbl_80348680:
/* 80348680 003442E0 7D 1A 32 14 */ add r8, r26, r6
/* 80348684 003442E4 88 BA 00 00 */ lbz r5, 0(r26)
/* 80348688 003442E8 89 28 FF FF */ lbz r9, -1(r8)
/* 8034868C 003442EC 54 A4 07 FE */ clrlwi r4, r5, 0x1f
/* 80348690 003442F0 38 05 FF B1 */ addi r0, r5, -79
/* 80348694 003442F4 7C C3 4A 78 */ xor r3, r6, r9
/* 80348698 003442F8 7C A5 48 50 */ subf r5, r5, r9
/* 8034869C 003442FC 7C 84 3A 78 */ xor r4, r4, r7
/* 803486A0 00344300 54 00 0F FE */ srwi r0, r0, 0x1f
/* 803486A4 00344304 54 63 07 FE */ clrlwi r3, r3, 0x1f
/* 803486A8 00344308 54 A5 0F FE */ srwi r5, r5, 0x1f
/* 803486AC 0034430C 7C 83 1A 78 */ xor r3, r4, r3
/* 803486B0 00344310 7C 60 02 78 */ xor r0, r3, r0
/* 803486B4 00344314 7C 07 2A 79 */ xor. r7, r0, r5
/* 803486B8 00344318 41 82 00 10 */ beq lbl_803486C8
/* 803486BC 0034431C 88 08 00 00 */ lbz r0, 0(r8)
/* 803486C0 00344320 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 803486C4 00344324 41 82 00 1C */ beq lbl_803486E0
lbl_803486C8:
/* 803486C8 00344328 2C 07 00 00 */ cmpwi r7, 0
/* 803486CC 0034432C 40 82 00 1C */ bne lbl_803486E8
/* 803486D0 00344330 88 08 00 00 */ lbz r0, 0(r8)
/* 803486D4 00344334 54 00 07 FE */ clrlwi r0, r0, 0x1f
/* 803486D8 00344338 2C 00 00 01 */ cmpwi r0, 1
/* 803486DC 0034433C 40 82 00 0C */ bne lbl_803486E8
lbl_803486E0:
/* 803486E0 00344340 3B A0 00 00 */ li r29, 0
/* 803486E4 00344344 48 00 00 10 */ b lbl_803486F4
lbl_803486E8:
/* 803486E8 00344348 38 C6 00 01 */ addi r6, r6, 1
/* 803486EC 0034434C 42 00 FF 94 */ bdnz lbl_80348680
/* 803486F0 00344350 3B A0 00 01 */ li r29, 1
lbl_803486F4:
/* 803486F4 00344354 3F E0 80 45 */ lis r31, lbl_8044B5E0@ha
/* 803486F8 00344358 7F 38 CB 78 */ mr r24, r25
/* 803486FC 0034435C 3B FF B5 E0 */ addi r31, r31, lbl_8044B5E0@l
/* 80348700 00344360 3B 60 00 00 */ li r27, 0
/* 80348704 00344364 3B 80 00 00 */ li r28, 0
/* 80348708 00344368 3E E0 2C 0B */ lis r23, 0x2c0b
lbl_8034870C:
/* 8034870C 0034436C 2C 1D 00 00 */ cmpwi r29, 0
/* 80348710 00344370 41 82 00 14 */ beq lbl_80348724
/* 80348714 00344374 2C 1B 00 00 */ cmpwi r27, 0
/* 80348718 00344378 41 82 00 0C */ beq lbl_80348724
/* 8034871C 0034437C 2C 1B 00 0D */ cmpwi r27, 0xd
/* 80348720 00344380 40 82 00 30 */ bne lbl_80348750
lbl_80348724:
/* 80348724 00344384 4B E8 46 19 */ bl rand
/* 80348728 00344388 38 17 02 C1 */ addi r0, r23, 0x2c1
/* 8034872C 0034438C 7C 00 18 96 */ mulhw r0, r0, r3
/* 80348730 00344390 7C 00 26 70 */ srawi r0, r0, 4
/* 80348734 00344394 54 04 0F FE */ srwi r4, r0, 0x1f
/* 80348738 00344398 7C 00 22 14 */ add r0, r0, r4
/* 8034873C 0034439C 1C 00 00 5D */ mulli r0, r0, 0x5d
/* 80348740 003443A0 7C 60 18 50 */ subf r3, r0, r3
/* 80348744 003443A4 38 03 00 21 */ addi r0, r3, 0x21
/* 80348748 003443A8 98 18 00 00 */ stb r0, 0(r24)
/* 8034874C 003443AC 48 00 00 B8 */ b lbl_80348804
lbl_80348750:
/* 80348750 003443B0 2C 1B 00 01 */ cmpwi r27, 1
/* 80348754 003443B4 41 82 00 0C */ beq lbl_80348760
/* 80348758 003443B8 2C 1B 00 0E */ cmpwi r27, 0xe
/* 8034875C 003443BC 40 82 00 14 */ bne lbl_80348770
lbl_80348760:
/* 80348760 003443C0 7C 1A D8 AE */ lbzx r0, r26, r27
/* 80348764 003443C4 7C 7A DA 14 */ add r3, r26, r27
/* 80348768 003443C8 7C 00 07 74 */ extsb r0, r0
/* 8034876C 003443CC 48 00 00 10 */ b lbl_8034877C
lbl_80348770:
/* 80348770 003443D0 7C 7A DA 14 */ add r3, r26, r27
/* 80348774 003443D4 88 03 FF FF */ lbz r0, -1(r3)
/* 80348778 003443D8 7C 00 07 74 */ extsb r0, r0
lbl_8034877C:
/* 8034877C 003443DC 88 E3 00 00 */ lbz r7, 0(r3)
/* 80348780 003443E0 7C 80 E1 D6 */ mullw r4, r0, r28
/* 80348784 003443E4 38 17 02 C1 */ addi r0, r23, 0x2c1
/* 80348788 003443E8 7C DB 3A 14 */ add r6, r27, r7
/* 8034878C 003443EC 7C A6 F3 D6 */ divw r5, r6, r30
/* 80348790 003443F0 7C 64 F3 D6 */ divw r3, r4, r30
/* 80348794 003443F4 7C A5 F1 D6 */ mullw r5, r5, r30
/* 80348798 003443F8 7C A5 30 50 */ subf r5, r5, r6
/* 8034879C 003443FC 7C BF 28 AE */ lbzx r5, r31, r5
/* 803487A0 00344400 7C 63 F1 D6 */ mullw r3, r3, r30
/* 803487A4 00344404 7C A6 07 74 */ extsb r6, r5
/* 803487A8 00344408 7C BB 39 D6 */ mullw r5, r27, r7
/* 803487AC 0034440C 7C 63 20 50 */ subf r3, r3, r4
/* 803487B0 00344410 7C 7F 18 AE */ lbzx r3, r31, r3
/* 803487B4 00344414 7C 63 07 74 */ extsb r3, r3
/* 803487B8 00344418 7C A6 2A 14 */ add r5, r6, r5
/* 803487BC 0034441C 54 A4 D8 08 */ slwi r4, r5, 0x1b
/* 803487C0 00344420 54 A5 0F FE */ srwi r5, r5, 0x1f
/* 803487C4 00344424 7C 85 20 50 */ subf r4, r5, r4
/* 803487C8 00344428 54 84 28 3E */ rotlwi r4, r4, 5
/* 803487CC 0034442C 7C 84 2A 14 */ add r4, r4, r5
/* 803487D0 00344430 7C 9A 20 AE */ lbzx r4, r26, r4
/* 803487D4 00344434 7C 84 1A 78 */ xor r4, r4, r3
/* 803487D8 00344438 7C 83 FE 70 */ srawi r3, r4, 0x1f
/* 803487DC 0034443C 7C 64 22 78 */ xor r4, r3, r4
/* 803487E0 00344440 7C 83 20 50 */ subf r4, r3, r4
/* 803487E4 00344444 7C 00 20 96 */ mulhw r0, r0, r4
/* 803487E8 00344448 7C 00 26 70 */ srawi r0, r0, 4
/* 803487EC 0034444C 54 03 0F FE */ srwi r3, r0, 0x1f
/* 803487F0 00344450 7C 00 1A 14 */ add r0, r0, r3
/* 803487F4 00344454 1C 00 00 5D */ mulli r0, r0, 0x5d
/* 803487F8 00344458 7C 60 20 50 */ subf r3, r0, r4
/* 803487FC 0034445C 38 03 00 21 */ addi r0, r3, 0x21
/* 80348800 00344460 98 18 00 00 */ stb r0, 0(r24)
lbl_80348804:
/* 80348804 00344464 3B 7B 00 01 */ addi r27, r27, 1
/* 80348808 00344468 3B 18 00 01 */ addi r24, r24, 1
/* 8034880C 0034446C 2C 1B 00 20 */ cmpwi r27, 0x20
/* 80348810 00344470 3B 9C 46 47 */ addi r28, r28, 0x4647
/* 80348814 00344474 41 80 FE F8 */ blt lbl_8034870C
/* 80348818 00344478 39 61 00 30 */ addi r11, r1, 0x30
/* 8034881C 0034447C 7F 23 CB 78 */ mr r3, r25
/* 80348820 00344480 4B E7 E9 45 */ bl _restgpr_23
/* 80348824 00344484 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80348828 00344488 7C 08 03 A6 */ mtlr r0
/* 8034882C 0034448C 38 21 00 30 */ addi r1, r1, 0x30
/* 80348830 00344490 4E 80 00 20 */ blr
.global gti2CheckResponse
gti2CheckResponse:
/* 80348834 00344494 38 00 00 08 */ li r0, 8
/* 80348838 00344498 38 C0 00 00 */ li r6, 0
/* 8034883C 0034449C 7C 09 03 A6 */ mtctr r0
lbl_80348840:
/* 80348840 003444A0 2C 06 00 00 */ cmpwi r6, 0
/* 80348844 003444A4 41 82 00 24 */ beq lbl_80348868
/* 80348848 003444A8 2C 06 00 0D */ cmpwi r6, 0xd
/* 8034884C 003444AC 41 82 00 1C */ beq lbl_80348868
/* 80348850 003444B0 88 A3 00 00 */ lbz r5, 0(r3)
/* 80348854 003444B4 88 04 00 00 */ lbz r0, 0(r4)
/* 80348858 003444B8 7C 05 00 40 */ cmplw r5, r0
/* 8034885C 003444BC 41 82 00 0C */ beq lbl_80348868
/* 80348860 003444C0 38 60 00 00 */ li r3, 0
/* 80348864 003444C4 4E 80 00 20 */ blr
lbl_80348868:
/* 80348868 003444C8 34 C6 00 01 */ addic. r6, r6, 1
/* 8034886C 003444CC 41 82 00 24 */ beq lbl_80348890
/* 80348870 003444D0 2C 06 00 0D */ cmpwi r6, 0xd
/* 80348874 003444D4 41 82 00 1C */ beq lbl_80348890
/* 80348878 003444D8 88 A3 00 01 */ lbz r5, 1(r3)
/* 8034887C 003444DC 88 04 00 01 */ lbz r0, 1(r4)
/* 80348880 003444E0 7C 05 00 40 */ cmplw r5, r0
/* 80348884 003444E4 41 82 00 0C */ beq lbl_80348890
/* 80348888 003444E8 38 60 00 00 */ li r3, 0
/* 8034888C 003444EC 4E 80 00 20 */ blr
lbl_80348890:
/* 80348890 003444F0 34 C6 00 01 */ addic. r6, r6, 1
/* 80348894 003444F4 41 82 00 24 */ beq lbl_803488B8
/* 80348898 003444F8 2C 06 00 0D */ cmpwi r6, 0xd
/* 8034889C 003444FC 41 82 00 1C */ beq lbl_803488B8
/* 803488A0 00344500 88 A3 00 02 */ lbz r5, 2(r3)
/* 803488A4 00344504 88 04 00 02 */ lbz r0, 2(r4)
/* 803488A8 00344508 7C 05 00 40 */ cmplw r5, r0
/* 803488AC 0034450C 41 82 00 0C */ beq lbl_803488B8
/* 803488B0 00344510 38 60 00 00 */ li r3, 0
/* 803488B4 00344514 4E 80 00 20 */ blr
lbl_803488B8:
/* 803488B8 00344518 34 C6 00 01 */ addic. r6, r6, 1
/* 803488BC 0034451C 41 82 00 24 */ beq lbl_803488E0
/* 803488C0 00344520 2C 06 00 0D */ cmpwi r6, 0xd
/* 803488C4 00344524 41 82 00 1C */ beq lbl_803488E0
/* 803488C8 00344528 88 A3 00 03 */ lbz r5, 3(r3)
/* 803488CC 0034452C 88 04 00 03 */ lbz r0, 3(r4)
/* 803488D0 00344530 7C 05 00 40 */ cmplw r5, r0
/* 803488D4 00344534 41 82 00 0C */ beq lbl_803488E0
/* 803488D8 00344538 38 60 00 00 */ li r3, 0
/* 803488DC 0034453C 4E 80 00 20 */ blr
lbl_803488E0:
/* 803488E0 00344540 38 C6 00 01 */ addi r6, r6, 1
/* 803488E4 00344544 38 84 00 04 */ addi r4, r4, 4
/* 803488E8 00344548 38 63 00 04 */ addi r3, r3, 4
/* 803488EC 0034454C 42 00 FF 54 */ bdnz lbl_80348840
/* 803488F0 00344550 38 60 00 01 */ li r3, 1
/* 803488F4 00344554 4E 80 00 20 */ blr
|