summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/gsSHA1.s
blob: bdc93e13d04b9103cedde290c53d0c8389630d22 (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
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
.include "macros.inc"

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


.global SHA1Reset
SHA1Reset:
/* 8033C430 00338090  2C 03 00 00 */	cmpwi r3, 0
/* 8033C434 00338094  40 82 00 0C */	bne lbl_8033C440
/* 8033C438 00338098  38 60 00 01 */	li r3, 1
/* 8033C43C 0033809C  4E 80 00 20 */	blr
lbl_8033C440:
/* 8033C440 003380A0  3D 00 67 45 */	lis r8, 0x67452301@ha
/* 8033C444 003380A4  3C E0 EF CE */	lis r7, 0xEFCDAB89@ha
/* 8033C448 003380A8  39 20 00 00 */	li r9, 0
/* 8033C44C 003380AC  3C C0 98 BB */	lis r6, 0x98BADCFE@ha
/* 8033C450 003380B0  3C A0 10 32 */	lis r5, 0x10325476@ha
/* 8033C454 003380B4  3C 80 C3 D3 */	lis r4, 0xC3D2E1F0@ha
/* 8033C458 003380B8  39 08 23 01 */	addi r8, r8, 0x67452301@l
/* 8033C45C 003380BC  38 E7 AB 89 */	addi r7, r7, 0xEFCDAB89@l
/* 8033C460 003380C0  38 C6 DC FE */	addi r6, r6, 0x98BADCFE@l
/* 8033C464 003380C4  38 A5 54 76 */	addi r5, r5, 0x10325476@l
/* 8033C468 003380C8  38 04 E1 F0 */	addi r0, r4, 0xC3D2E1F0@l
/* 8033C46C 003380CC  91 23 00 14 */	stw r9, 0x14(r3)
/* 8033C470 003380D0  91 23 00 18 */	stw r9, 0x18(r3)
/* 8033C474 003380D4  B1 23 00 1C */	sth r9, 0x1c(r3)
/* 8033C478 003380D8  91 03 00 00 */	stw r8, 0(r3)
/* 8033C47C 003380DC  90 E3 00 04 */	stw r7, 4(r3)
/* 8033C480 003380E0  90 C3 00 08 */	stw r6, 8(r3)
/* 8033C484 003380E4  90 A3 00 0C */	stw r5, 0xc(r3)
/* 8033C488 003380E8  90 03 00 10 */	stw r0, 0x10(r3)
/* 8033C48C 003380EC  91 23 00 60 */	stw r9, 0x60(r3)
/* 8033C490 003380F0  91 23 00 64 */	stw r9, 0x64(r3)
/* 8033C494 003380F4  38 60 00 00 */	li r3, 0
/* 8033C498 003380F8  4E 80 00 20 */	blr

.global SHA1Result
SHA1Result:
/* 8033C49C 003380FC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8033C4A0 00338100  7C 08 02 A6 */	mflr r0
/* 8033C4A4 00338104  2C 03 00 00 */	cmpwi r3, 0
/* 8033C4A8 00338108  90 01 00 14 */	stw r0, 0x14(r1)
/* 8033C4AC 0033810C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8033C4B0 00338110  7C 9F 23 78 */	mr r31, r4
/* 8033C4B4 00338114  93 C1 00 08 */	stw r30, 8(r1)
/* 8033C4B8 00338118  7C 7E 1B 78 */	mr r30, r3
/* 8033C4BC 0033811C  41 82 00 0C */	beq lbl_8033C4C8
/* 8033C4C0 00338120  2C 04 00 00 */	cmpwi r4, 0
/* 8033C4C4 00338124  40 82 00 0C */	bne lbl_8033C4D0
lbl_8033C4C8:
/* 8033C4C8 00338128  38 60 00 01 */	li r3, 1
/* 8033C4CC 0033812C  48 00 01 A8 */	b lbl_8033C674
lbl_8033C4D0:
/* 8033C4D0 00338130  80 03 00 64 */	lwz r0, 0x64(r3)
/* 8033C4D4 00338134  2C 00 00 00 */	cmpwi r0, 0
/* 8033C4D8 00338138  41 82 00 0C */	beq lbl_8033C4E4
/* 8033C4DC 0033813C  7C 03 03 78 */	mr r3, r0
/* 8033C4E0 00338140  48 00 01 94 */	b lbl_8033C674
lbl_8033C4E4:
/* 8033C4E4 00338144  80 03 00 60 */	lwz r0, 0x60(r3)
/* 8033C4E8 00338148  2C 00 00 00 */	cmpwi r0, 0
/* 8033C4EC 0033814C  40 82 00 D0 */	bne lbl_8033C5BC
/* 8033C4F0 00338150  48 00 07 C5 */	bl SHA1PadMessage
/* 8033C4F4 00338154  38 00 00 02 */	li r0, 2
/* 8033C4F8 00338158  38 A0 00 00 */	li r5, 0
/* 8033C4FC 0033815C  38 60 00 00 */	li r3, 0
/* 8033C500 00338160  7C 09 03 A6 */	mtctr r0
lbl_8033C504:
/* 8033C504 00338164  7C 9E 2A 14 */	add r4, r30, r5
/* 8033C508 00338168  38 A5 00 08 */	addi r5, r5, 8
/* 8033C50C 0033816C  98 64 00 1E */	stb r3, 0x1e(r4)
/* 8033C510 00338170  98 64 00 1F */	stb r3, 0x1f(r4)
/* 8033C514 00338174  98 64 00 20 */	stb r3, 0x20(r4)
/* 8033C518 00338178  98 64 00 21 */	stb r3, 0x21(r4)
/* 8033C51C 0033817C  98 64 00 22 */	stb r3, 0x22(r4)
/* 8033C520 00338180  98 64 00 23 */	stb r3, 0x23(r4)
/* 8033C524 00338184  98 64 00 24 */	stb r3, 0x24(r4)
/* 8033C528 00338188  98 64 00 25 */	stb r3, 0x25(r4)
/* 8033C52C 0033818C  7C 9E 2A 14 */	add r4, r30, r5
/* 8033C530 00338190  38 A5 00 08 */	addi r5, r5, 8
/* 8033C534 00338194  98 64 00 1E */	stb r3, 0x1e(r4)
/* 8033C538 00338198  98 64 00 1F */	stb r3, 0x1f(r4)
/* 8033C53C 0033819C  98 64 00 20 */	stb r3, 0x20(r4)
/* 8033C540 003381A0  98 64 00 21 */	stb r3, 0x21(r4)
/* 8033C544 003381A4  98 64 00 22 */	stb r3, 0x22(r4)
/* 8033C548 003381A8  98 64 00 23 */	stb r3, 0x23(r4)
/* 8033C54C 003381AC  98 64 00 24 */	stb r3, 0x24(r4)
/* 8033C550 003381B0  98 64 00 25 */	stb r3, 0x25(r4)
/* 8033C554 003381B4  7C 9E 2A 14 */	add r4, r30, r5
/* 8033C558 003381B8  38 A5 00 08 */	addi r5, r5, 8
/* 8033C55C 003381BC  98 64 00 1E */	stb r3, 0x1e(r4)
/* 8033C560 003381C0  98 64 00 1F */	stb r3, 0x1f(r4)
/* 8033C564 003381C4  98 64 00 20 */	stb r3, 0x20(r4)
/* 8033C568 003381C8  98 64 00 21 */	stb r3, 0x21(r4)
/* 8033C56C 003381CC  98 64 00 22 */	stb r3, 0x22(r4)
/* 8033C570 003381D0  98 64 00 23 */	stb r3, 0x23(r4)
/* 8033C574 003381D4  98 64 00 24 */	stb r3, 0x24(r4)
/* 8033C578 003381D8  98 64 00 25 */	stb r3, 0x25(r4)
/* 8033C57C 003381DC  7C 9E 2A 14 */	add r4, r30, r5
/* 8033C580 003381E0  38 A5 00 08 */	addi r5, r5, 8
/* 8033C584 003381E4  98 64 00 1E */	stb r3, 0x1e(r4)
/* 8033C588 003381E8  98 64 00 1F */	stb r3, 0x1f(r4)
/* 8033C58C 003381EC  98 64 00 20 */	stb r3, 0x20(r4)
/* 8033C590 003381F0  98 64 00 21 */	stb r3, 0x21(r4)
/* 8033C594 003381F4  98 64 00 22 */	stb r3, 0x22(r4)
/* 8033C598 003381F8  98 64 00 23 */	stb r3, 0x23(r4)
/* 8033C59C 003381FC  98 64 00 24 */	stb r3, 0x24(r4)
/* 8033C5A0 00338200  98 64 00 25 */	stb r3, 0x25(r4)
/* 8033C5A4 00338204  42 00 FF 60 */	bdnz lbl_8033C504
/* 8033C5A8 00338208  38 60 00 00 */	li r3, 0
/* 8033C5AC 0033820C  38 00 00 01 */	li r0, 1
/* 8033C5B0 00338210  90 7E 00 14 */	stw r3, 0x14(r30)
/* 8033C5B4 00338214  90 7E 00 18 */	stw r3, 0x18(r30)
/* 8033C5B8 00338218  90 1E 00 60 */	stw r0, 0x60(r30)
lbl_8033C5BC:
/* 8033C5BC 0033821C  38 00 00 04 */	li r0, 4
/* 8033C5C0 00338220  38 80 00 00 */	li r4, 0
/* 8033C5C4 00338224  7C 09 03 A6 */	mtctr r0
lbl_8033C5C8:
/* 8033C5C8 00338228  54 83 00 3A */	rlwinm r3, r4, 0, 0, 0x1d
/* 8033C5CC 0033822C  54 80 07 BE */	clrlwi r0, r4, 0x1e
/* 8033C5D0 00338230  20 00 00 03 */	subfic r0, r0, 3
/* 8033C5D4 00338234  7C DE 18 2E */	lwzx r6, r30, r3
/* 8033C5D8 00338238  54 00 18 38 */	slwi r0, r0, 3
/* 8033C5DC 0033823C  38 A4 00 01 */	addi r5, r4, 1
/* 8033C5E0 00338240  7C C8 04 30 */	srw r8, r6, r0
/* 8033C5E4 00338244  7C 7F 22 14 */	add r3, r31, r4
/* 8033C5E8 00338248  7D 1F 21 AE */	stbx r8, r31, r4
/* 8033C5EC 0033824C  54 A0 07 BE */	clrlwi r0, r5, 0x1e
/* 8033C5F0 00338250  54 A8 00 3A */	rlwinm r8, r5, 0, 0, 0x1d
/* 8033C5F4 00338254  38 E4 00 02 */	addi r7, r4, 2
/* 8033C5F8 00338258  20 00 00 03 */	subfic r0, r0, 3
/* 8033C5FC 0033825C  7D 3E 40 2E */	lwzx r9, r30, r8
/* 8033C600 00338260  54 08 18 38 */	slwi r8, r0, 3
/* 8033C604 00338264  38 C4 00 03 */	addi r6, r4, 3
/* 8033C608 00338268  7D 28 44 30 */	srw r8, r9, r8
/* 8033C60C 0033826C  38 A4 00 04 */	addi r5, r4, 4
/* 8033C610 00338270  99 03 00 01 */	stb r8, 1(r3)
/* 8033C614 00338274  54 E0 07 BE */	clrlwi r0, r7, 0x1e
/* 8033C618 00338278  54 E9 00 3A */	rlwinm r9, r7, 0, 0, 0x1d
/* 8033C61C 0033827C  54 C7 00 3A */	rlwinm r7, r6, 0, 0, 0x1d
/* 8033C620 00338280  21 00 00 03 */	subfic r8, r0, 3
/* 8033C624 00338284  7D 3E 48 2E */	lwzx r9, r30, r9
/* 8033C628 00338288  55 08 18 38 */	slwi r8, r8, 3
/* 8033C62C 0033828C  54 C0 07 BE */	clrlwi r0, r6, 0x1e
/* 8033C630 00338290  7D 28 44 30 */	srw r8, r9, r8
/* 8033C634 00338294  38 84 00 05 */	addi r4, r4, 5
/* 8033C638 00338298  99 03 00 02 */	stb r8, 2(r3)
/* 8033C63C 0033829C  20 C0 00 03 */	subfic r6, r0, 3
/* 8033C640 003382A0  54 A0 07 BE */	clrlwi r0, r5, 0x1e
/* 8033C644 003382A4  54 A5 00 3A */	rlwinm r5, r5, 0, 0, 0x1d
/* 8033C648 003382A8  7C FE 38 2E */	lwzx r7, r30, r7
/* 8033C64C 003382AC  54 C6 18 38 */	slwi r6, r6, 3
/* 8033C650 003382B0  20 00 00 03 */	subfic r0, r0, 3
/* 8033C654 003382B4  7C E6 34 30 */	srw r6, r7, r6
/* 8033C658 003382B8  98 C3 00 03 */	stb r6, 3(r3)
/* 8033C65C 003382BC  54 00 18 38 */	slwi r0, r0, 3
/* 8033C660 003382C0  7C BE 28 2E */	lwzx r5, r30, r5
/* 8033C664 003382C4  7C A0 04 30 */	srw r0, r5, r0
/* 8033C668 003382C8  98 03 00 04 */	stb r0, 4(r3)
/* 8033C66C 003382CC  42 00 FF 5C */	bdnz lbl_8033C5C8
/* 8033C670 003382D0  38 60 00 00 */	li r3, 0
lbl_8033C674:
/* 8033C674 003382D4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8033C678 003382D8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8033C67C 003382DC  83 C1 00 08 */	lwz r30, 8(r1)
/* 8033C680 003382E0  7C 08 03 A6 */	mtlr r0
/* 8033C684 003382E4  38 21 00 10 */	addi r1, r1, 0x10
/* 8033C688 003382E8  4E 80 00 20 */	blr

.global SHA1Input
SHA1Input:
/* 8033C68C 003382EC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8033C690 003382F0  7C 08 02 A6 */	mflr r0
/* 8033C694 003382F4  2C 05 00 00 */	cmpwi r5, 0
/* 8033C698 003382F8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8033C69C 003382FC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8033C6A0 00338300  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8033C6A4 00338304  7C BE 2B 78 */	mr r30, r5
/* 8033C6A8 00338308  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8033C6AC 0033830C  7C 9D 23 78 */	mr r29, r4
/* 8033C6B0 00338310  93 81 00 10 */	stw r28, 0x10(r1)
/* 8033C6B4 00338314  7C 7C 1B 78 */	mr r28, r3
/* 8033C6B8 00338318  40 82 00 0C */	bne lbl_8033C6C4
/* 8033C6BC 0033831C  38 60 00 00 */	li r3, 0
/* 8033C6C0 00338320  48 00 00 C0 */	b lbl_8033C780
lbl_8033C6C4:
/* 8033C6C4 00338324  2C 03 00 00 */	cmpwi r3, 0
/* 8033C6C8 00338328  41 82 00 0C */	beq lbl_8033C6D4
/* 8033C6CC 0033832C  2C 04 00 00 */	cmpwi r4, 0
/* 8033C6D0 00338330  40 82 00 0C */	bne lbl_8033C6DC
lbl_8033C6D4:
/* 8033C6D4 00338334  38 60 00 01 */	li r3, 1
/* 8033C6D8 00338338  48 00 00 A8 */	b lbl_8033C780
lbl_8033C6DC:
/* 8033C6DC 0033833C  80 03 00 60 */	lwz r0, 0x60(r3)
/* 8033C6E0 00338340  2C 00 00 00 */	cmpwi r0, 0
/* 8033C6E4 00338344  41 82 00 14 */	beq lbl_8033C6F8
/* 8033C6E8 00338348  38 00 00 03 */	li r0, 3
/* 8033C6EC 0033834C  90 03 00 64 */	stw r0, 0x64(r3)
/* 8033C6F0 00338350  38 60 00 03 */	li r3, 3
/* 8033C6F4 00338354  48 00 00 8C */	b lbl_8033C780
lbl_8033C6F8:
/* 8033C6F8 00338358  80 63 00 64 */	lwz r3, 0x64(r3)
/* 8033C6FC 0033835C  2C 03 00 00 */	cmpwi r3, 0
/* 8033C700 00338360  41 82 00 08 */	beq lbl_8033C708
/* 8033C704 00338364  48 00 00 7C */	b lbl_8033C780
lbl_8033C708:
/* 8033C708 00338368  3B E0 00 01 */	li r31, 1
/* 8033C70C 0033836C  48 00 00 58 */	b lbl_8033C764
lbl_8033C710:
/* 8033C710 00338370  A8 9C 00 1C */	lha r4, 0x1c(r28)
/* 8033C714 00338374  88 1D 00 00 */	lbz r0, 0(r29)
/* 8033C718 00338378  7C 7C 22 14 */	add r3, r28, r4
/* 8033C71C 0033837C  38 84 00 01 */	addi r4, r4, 1
/* 8033C720 00338380  98 03 00 1E */	stb r0, 0x1e(r3)
/* 8033C724 00338384  80 1C 00 14 */	lwz r0, 0x14(r28)
/* 8033C728 00338388  B0 9C 00 1C */	sth r4, 0x1c(r28)
/* 8033C72C 0033838C  34 00 00 08 */	addic. r0, r0, 8
/* 8033C730 00338390  90 1C 00 14 */	stw r0, 0x14(r28)
/* 8033C734 00338394  40 82 00 18 */	bne lbl_8033C74C
/* 8033C738 00338398  80 1C 00 18 */	lwz r0, 0x18(r28)
/* 8033C73C 0033839C  34 00 00 01 */	addic. r0, r0, 1
/* 8033C740 003383A0  90 1C 00 18 */	stw r0, 0x18(r28)
/* 8033C744 003383A4  40 82 00 08 */	bne lbl_8033C74C
/* 8033C748 003383A8  93 FC 00 64 */	stw r31, 0x64(r28)
lbl_8033C74C:
/* 8033C74C 003383AC  A8 1C 00 1C */	lha r0, 0x1c(r28)
/* 8033C750 003383B0  2C 00 00 40 */	cmpwi r0, 0x40
/* 8033C754 003383B4  40 82 00 0C */	bne lbl_8033C760
/* 8033C758 003383B8  7F 83 E3 78 */	mr r3, r28
/* 8033C75C 003383BC  48 00 00 45 */	bl SHA1ProcessMessageBlock
lbl_8033C760:
/* 8033C760 003383C0  3B BD 00 01 */	addi r29, r29, 1
lbl_8033C764:
/* 8033C764 003383C4  2C 1E 00 00 */	cmpwi r30, 0
/* 8033C768 003383C8  3B DE FF FF */	addi r30, r30, -1
/* 8033C76C 003383CC  41 82 00 10 */	beq lbl_8033C77C
/* 8033C770 003383D0  80 1C 00 64 */	lwz r0, 0x64(r28)
/* 8033C774 003383D4  2C 00 00 00 */	cmpwi r0, 0
/* 8033C778 003383D8  41 82 FF 98 */	beq lbl_8033C710
lbl_8033C77C:
/* 8033C77C 003383DC  38 60 00 00 */	li r3, 0
lbl_8033C780:
/* 8033C780 003383E0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8033C784 003383E4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8033C788 003383E8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8033C78C 003383EC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8033C790 003383F0  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8033C794 003383F4  7C 08 03 A6 */	mtlr r0
/* 8033C798 003383F8  38 21 00 20 */	addi r1, r1, 0x20
/* 8033C79C 003383FC  4E 80 00 20 */	blr

.global SHA1ProcessMessageBlock
SHA1ProcessMessageBlock:
/* 8033C7A0 00338400  94 21 FE A0 */	stwu r1, -0x160(r1)
/* 8033C7A4 00338404  7C 08 02 A6 */	mflr r0
/* 8033C7A8 00338408  90 01 01 64 */	stw r0, 0x164(r1)
/* 8033C7AC 0033840C  39 61 01 60 */	addi r11, r1, 0x160
/* 8033C7B0 00338410  4B E8 A9 75 */	bl _savegpr_26
/* 8033C7B4 00338414  3C 80 80 40 */	lis r4, lbl_80400004@ha
/* 8033C7B8 00338418  87 C4 25 50 */	lwzu r30, 0x2550(r4)
/* 8033C7BC 0033841C  38 00 00 08 */	li r0, 8
/* 8033C7C0 00338420  39 21 00 08 */	addi r9, r1, 8
/* 8033C7C4 00338424  83 E4 00 04 */	lwz r31, lbl_80400004@l(r4)
/* 8033C7C8 00338428  39 00 00 00 */	li r8, 0
/* 8033C7CC 0033842C  81 84 00 08 */	lwz r12, 8(r4)
/* 8033C7D0 00338430  81 64 00 0C */	lwz r11, 0xc(r4)
/* 8033C7D4 00338434  7C 09 03 A6 */	mtctr r0
lbl_8033C7D8:
/* 8033C7D8 00338438  7D 43 42 14 */	add r10, r3, r8
/* 8033C7DC 0033843C  39 08 00 04 */	addi r8, r8, 4
/* 8033C7E0 00338440  88 EA 00 1E */	lbz r7, 0x1e(r10)
/* 8033C7E4 00338444  88 AA 00 1F */	lbz r5, 0x1f(r10)
/* 8033C7E8 00338448  54 E6 C0 0E */	slwi r6, r7, 0x18
/* 8033C7EC 0033844C  88 8A 00 20 */	lbz r4, 0x20(r10)
/* 8033C7F0 00338450  90 C9 00 00 */	stw r6, 0(r9)
/* 8033C7F4 00338454  50 A6 82 1E */	rlwimi r6, r5, 0x10, 8, 0xf
/* 8033C7F8 00338458  88 0A 00 21 */	lbz r0, 0x21(r10)
/* 8033C7FC 0033845C  7D 43 42 14 */	add r10, r3, r8
/* 8033C800 00338460  90 C9 00 00 */	stw r6, 0(r9)
/* 8033C804 00338464  50 86 44 2E */	rlwimi r6, r4, 8, 0x10, 0x17
/* 8033C808 00338468  88 EA 00 1E */	lbz r7, 0x1e(r10)
/* 8033C80C 0033846C  7C C0 03 78 */	or r0, r6, r0
/* 8033C810 00338470  90 C9 00 00 */	stw r6, 0(r9)
/* 8033C814 00338474  39 08 00 04 */	addi r8, r8, 4
/* 8033C818 00338478  88 AA 00 1F */	lbz r5, 0x1f(r10)
/* 8033C81C 0033847C  54 E6 C0 0E */	slwi r6, r7, 0x18
/* 8033C820 00338480  90 09 00 00 */	stw r0, 0(r9)
/* 8033C824 00338484  88 8A 00 20 */	lbz r4, 0x20(r10)
/* 8033C828 00338488  50 A6 82 1E */	rlwimi r6, r5, 0x10, 8, 0xf
/* 8033C82C 0033848C  88 0A 00 21 */	lbz r0, 0x21(r10)
/* 8033C830 00338490  50 86 44 2E */	rlwimi r6, r4, 8, 0x10, 0x17
/* 8033C834 00338494  7C C0 03 78 */	or r0, r6, r0
/* 8033C838 00338498  90 09 00 04 */	stw r0, 4(r9)
/* 8033C83C 0033849C  39 29 00 08 */	addi r9, r9, 8
/* 8033C840 003384A0  42 00 FF 98 */	bdnz lbl_8033C7D8
/* 8033C844 003384A4  38 00 00 10 */	li r0, 0x10
/* 8033C848 003384A8  38 E1 00 48 */	addi r7, r1, 0x48
/* 8033C84C 003384AC  7C 09 03 A6 */	mtctr r0
lbl_8033C850:
/* 8033C850 003384B0  80 C7 FF C0 */	lwz r6, -0x40(r7)
/* 8033C854 003384B4  80 A7 FF C8 */	lwz r5, -0x38(r7)
/* 8033C858 003384B8  80 87 FF F4 */	lwz r4, -0xc(r7)
/* 8033C85C 003384BC  80 07 FF E0 */	lwz r0, -0x20(r7)
/* 8033C860 003384C0  7C C5 2A 78 */	xor r5, r6, r5
/* 8033C864 003384C4  7C 80 02 78 */	xor r0, r4, r0
/* 8033C868 003384C8  7C A0 02 78 */	xor r0, r5, r0
/* 8033C86C 003384CC  54 00 08 3E */	rotlwi r0, r0, 1
/* 8033C870 003384D0  90 07 00 00 */	stw r0, 0(r7)
/* 8033C874 003384D4  80 C7 FF C4 */	lwz r6, -0x3c(r7)
/* 8033C878 003384D8  80 A7 FF CC */	lwz r5, -0x34(r7)
/* 8033C87C 003384DC  80 87 FF F8 */	lwz r4, -8(r7)
/* 8033C880 003384E0  80 07 FF E4 */	lwz r0, -0x1c(r7)
/* 8033C884 003384E4  7C C5 2A 78 */	xor r5, r6, r5
/* 8033C888 003384E8  7C 80 02 78 */	xor r0, r4, r0
/* 8033C88C 003384EC  7C A0 02 78 */	xor r0, r5, r0
/* 8033C890 003384F0  54 00 08 3E */	rotlwi r0, r0, 1
/* 8033C894 003384F4  90 07 00 04 */	stw r0, 4(r7)
/* 8033C898 003384F8  80 C7 FF C8 */	lwz r6, -0x38(r7)
/* 8033C89C 003384FC  80 A7 FF D0 */	lwz r5, -0x30(r7)
/* 8033C8A0 00338500  80 87 FF FC */	lwz r4, -4(r7)
/* 8033C8A4 00338504  80 07 FF E8 */	lwz r0, -0x18(r7)
/* 8033C8A8 00338508  7C C5 2A 78 */	xor r5, r6, r5
/* 8033C8AC 0033850C  7C 80 02 78 */	xor r0, r4, r0
/* 8033C8B0 00338510  7C A0 02 78 */	xor r0, r5, r0
/* 8033C8B4 00338514  54 00 08 3E */	rotlwi r0, r0, 1
/* 8033C8B8 00338518  90 07 00 08 */	stw r0, 8(r7)
/* 8033C8BC 0033851C  80 C7 FF CC */	lwz r6, -0x34(r7)
/* 8033C8C0 00338520  80 A7 FF D4 */	lwz r5, -0x2c(r7)
/* 8033C8C4 00338524  80 87 00 00 */	lwz r4, 0(r7)
/* 8033C8C8 00338528  80 07 FF EC */	lwz r0, -0x14(r7)
/* 8033C8CC 0033852C  7C C5 2A 78 */	xor r5, r6, r5
/* 8033C8D0 00338530  7C 80 02 78 */	xor r0, r4, r0
/* 8033C8D4 00338534  7C A0 02 78 */	xor r0, r5, r0
/* 8033C8D8 00338538  54 00 08 3E */	rotlwi r0, r0, 1
/* 8033C8DC 0033853C  90 07 00 0C */	stw r0, 0xc(r7)
/* 8033C8E0 00338540  38 E7 00 10 */	addi r7, r7, 0x10
/* 8033C8E4 00338544  42 00 FF 6C */	bdnz lbl_8033C850
/* 8033C8E8 00338548  38 C0 00 04 */	li r6, 4
/* 8033C8EC 0033854C  38 81 00 08 */	addi r4, r1, 8
/* 8033C8F0 00338550  80 03 00 00 */	lwz r0, 0(r3)
/* 8033C8F4 00338554  81 43 00 04 */	lwz r10, 4(r3)
/* 8033C8F8 00338558  80 A3 00 08 */	lwz r5, 8(r3)
/* 8033C8FC 0033855C  81 03 00 0C */	lwz r8, 0xc(r3)
/* 8033C900 00338560  81 23 00 10 */	lwz r9, 0x10(r3)
/* 8033C904 00338564  7C C9 03 A6 */	mtctr r6
lbl_8033C908:
/* 8033C908 00338568  7D 47 28 38 */	and r7, r10, r5
/* 8033C90C 0033856C  7D 06 50 78 */	andc r6, r8, r10
/* 8033C910 00338570  7C E6 33 78 */	or r6, r7, r6
/* 8033C914 00338574  83 64 00 00 */	lwz r27, 0(r4)
/* 8033C918 00338578  55 47 F0 3E */	rotlwi r7, r10, 0x1e
/* 8033C91C 0033857C  54 0A 28 3E */	rotlwi r10, r0, 5
/* 8033C920 00338580  7C C9 32 14 */	add r6, r9, r6
/* 8033C924 00338584  7D 3E DA 14 */	add r9, r30, r27
/* 8033C928 00338588  7C CA 32 14 */	add r6, r10, r6
/* 8033C92C 0033858C  83 84 00 04 */	lwz r28, 4(r4)
/* 8033C930 00338590  7F A9 32 14 */	add r29, r9, r6
/* 8033C934 00338594  7C 09 38 38 */	and r9, r0, r7
/* 8033C938 00338598  54 06 F0 3E */	rotlwi r6, r0, 0x1e
/* 8033C93C 0033859C  7C A0 00 78 */	andc r0, r5, r0
/* 8033C940 003385A0  7D 3B 03 78 */	or r27, r9, r0
/* 8033C944 003385A4  57 AA 28 3E */	rotlwi r10, r29, 5
/* 8033C948 003385A8  7D 08 DA 14 */	add r8, r8, r27
/* 8033C94C 003385AC  80 04 00 08 */	lwz r0, 8(r4)
/* 8033C950 003385B0  7D 0A 42 14 */	add r8, r10, r8
/* 8033C954 003385B4  7F 7E E2 14 */	add r27, r30, r28
/* 8033C958 003385B8  7F 5B 42 14 */	add r26, r27, r8
/* 8033C95C 003385BC  57 A9 F0 3E */	rotlwi r9, r29, 0x1e
/* 8033C960 003385C0  7F BB 30 38 */	and r27, r29, r6
/* 8033C964 003385C4  7C E8 E8 78 */	andc r8, r7, r29
/* 8033C968 003385C8  7F 7B 43 78 */	or r27, r27, r8
/* 8033C96C 003385CC  7F BE 02 14 */	add r29, r30, r0
/* 8033C970 003385D0  7C A5 DA 14 */	add r5, r5, r27
/* 8033C974 003385D4  57 5C 28 3E */	rotlwi r28, r26, 5
/* 8033C978 003385D8  7F 9C 2A 14 */	add r28, r28, r5
/* 8033C97C 003385DC  81 44 00 0C */	lwz r10, 0xc(r4)
/* 8033C980 003385E0  80 04 00 10 */	lwz r0, 0x10(r4)
/* 8033C984 003385E4  7F 5B 48 38 */	and r27, r26, r9
/* 8033C988 003385E8  7C C5 D0 78 */	andc r5, r6, r26
/* 8033C98C 003385EC  57 48 F0 3E */	rotlwi r8, r26, 0x1e
/* 8033C990 003385F0  7F 5D E2 14 */	add r26, r29, r28
/* 8033C994 003385F4  7D 5E 52 14 */	add r10, r30, r10
/* 8033C998 003385F8  7F 7D 2B 78 */	or r29, r27, r5
/* 8033C99C 003385FC  7F 7E 02 14 */	add r27, r30, r0
/* 8033C9A0 00338600  57 5C 28 3E */	rotlwi r28, r26, 5
/* 8033C9A4 00338604  7F 45 40 38 */	and r5, r26, r8
/* 8033C9A8 00338608  7C E7 EA 14 */	add r7, r7, r29
/* 8033C9AC 0033860C  7D 20 D0 78 */	andc r0, r9, r26
/* 8033C9B0 00338610  7C FC 3A 14 */	add r7, r28, r7
/* 8033C9B4 00338614  38 84 00 14 */	addi r4, r4, 0x14
/* 8033C9B8 00338618  7C A0 03 78 */	or r0, r5, r0
/* 8033C9BC 0033861C  7D 4A 3A 14 */	add r10, r10, r7
/* 8033C9C0 00338620  55 45 28 3E */	rotlwi r5, r10, 5
/* 8033C9C4 00338624  7C 06 02 14 */	add r0, r6, r0
/* 8033C9C8 00338628  7C 05 02 14 */	add r0, r5, r0
/* 8033C9CC 0033862C  57 45 F0 3E */	rotlwi r5, r26, 0x1e
/* 8033C9D0 00338630  7C 1B 02 14 */	add r0, r27, r0
/* 8033C9D4 00338634  42 00 FF 34 */	bdnz lbl_8033C908
/* 8033C9D8 00338638  38 C0 00 04 */	li r6, 4
/* 8033C9DC 0033863C  38 81 00 58 */	addi r4, r1, 0x58
/* 8033C9E0 00338640  7C C9 03 A6 */	mtctr r6
lbl_8033C9E4:
/* 8033C9E4 00338644  7D 06 52 78 */	xor r6, r8, r10
/* 8033C9E8 00338648  80 E4 00 00 */	lwz r7, 0(r4)
/* 8033C9EC 0033864C  7C C6 2A 78 */	xor r6, r6, r5
/* 8033C9F0 00338650  83 64 00 04 */	lwz r27, 4(r4)
/* 8033C9F4 00338654  7C E7 4A 14 */	add r7, r7, r9
/* 8033C9F8 00338658  54 09 28 3E */	rotlwi r9, r0, 5
/* 8033C9FC 0033865C  7C DF 32 14 */	add r6, r31, r6
/* 8033CA00 00338660  83 C4 00 08 */	lwz r30, 8(r4)
/* 8033CA04 00338664  7C E7 32 14 */	add r7, r7, r6
/* 8033CA08 00338668  7F 49 3A 14 */	add r26, r9, r7
/* 8033CA0C 0033866C  55 46 F0 3E */	rotlwi r6, r10, 0x1e
/* 8033CA10 00338670  7C A7 02 78 */	xor r7, r5, r0
/* 8033CA14 00338674  7D 5F DA 14 */	add r10, r31, r27
/* 8033CA18 00338678  7C E7 32 78 */	xor r7, r7, r6
/* 8033CA1C 0033867C  57 49 28 3E */	rotlwi r9, r26, 5
/* 8033CA20 00338680  7D 08 3A 14 */	add r8, r8, r7
/* 8033CA24 00338684  54 00 F0 3E */	rotlwi r0, r0, 0x1e
/* 8033CA28 00338688  7C C7 D2 78 */	xor r7, r6, r26
/* 8033CA2C 0033868C  83 64 00 0C */	lwz r27, 0xc(r4)
/* 8033CA30 00338690  7D 09 42 14 */	add r8, r9, r8
/* 8033CA34 00338694  57 49 F0 3E */	rotlwi r9, r26, 0x1e
/* 8033CA38 00338698  7F 4A 42 14 */	add r26, r10, r8
/* 8033CA3C 0033869C  7C FD 02 78 */	xor r29, r7, r0
/* 8033CA40 003386A0  7C A5 EA 14 */	add r5, r5, r29
/* 8033CA44 003386A4  57 5C 28 3E */	rotlwi r28, r26, 5
/* 8033CA48 003386A8  7C 07 D2 78 */	xor r7, r0, r26
/* 8033CA4C 003386AC  7C EA 4A 78 */	xor r10, r7, r9
/* 8033CA50 003386B0  80 E4 00 10 */	lwz r7, 0x10(r4)
/* 8033CA54 003386B4  7F 9C 2A 14 */	add r28, r28, r5
/* 8033CA58 003386B8  7F BF F2 14 */	add r29, r31, r30
/* 8033CA5C 003386BC  7C A6 52 14 */	add r5, r6, r10
/* 8033CA60 003386C0  57 48 F0 3E */	rotlwi r8, r26, 0x1e
/* 8033CA64 003386C4  7F 5D E2 14 */	add r26, r29, r28
/* 8033CA68 003386C8  7D 5F DA 14 */	add r10, r31, r27
/* 8033CA6C 003386CC  57 5B 28 3E */	rotlwi r27, r26, 5
/* 8033CA70 003386D0  7C DF 3A 14 */	add r6, r31, r7
/* 8033CA74 003386D4  7C FB 2A 14 */	add r7, r27, r5
/* 8033CA78 003386D8  7D 25 D2 78 */	xor r5, r9, r26
/* 8033CA7C 003386DC  7D 4A 3A 14 */	add r10, r10, r7
/* 8033CA80 003386E0  38 84 00 14 */	addi r4, r4, 0x14
/* 8033CA84 003386E4  7C A5 42 78 */	xor r5, r5, r8
/* 8033CA88 003386E8  7C 00 2A 14 */	add r0, r0, r5
/* 8033CA8C 003386EC  55 47 28 3E */	rotlwi r7, r10, 5
/* 8033CA90 003386F0  7C 07 02 14 */	add r0, r7, r0
/* 8033CA94 003386F4  57 45 F0 3E */	rotlwi r5, r26, 0x1e
/* 8033CA98 003386F8  7C 06 02 14 */	add r0, r6, r0
/* 8033CA9C 003386FC  42 00 FF 48 */	bdnz lbl_8033C9E4
/* 8033CAA0 00338700  38 C0 00 04 */	li r6, 4
/* 8033CAA4 00338704  38 81 00 A8 */	addi r4, r1, 0xa8
/* 8033CAA8 00338708  7C C9 03 A6 */	mtctr r6
lbl_8033CAAC:
/* 8033CAAC 0033870C  7C BB 43 78 */	or r27, r5, r8
/* 8033CAB0 00338710  55 47 F0 3E */	rotlwi r7, r10, 0x1e
/* 8033CAB4 00338714  7D 4A D8 38 */	and r10, r10, r27
/* 8033CAB8 00338718  7C BC 40 38 */	and r28, r5, r8
/* 8033CABC 0033871C  7F 9D 53 78 */	or r29, r28, r10
/* 8033CAC0 00338720  83 C4 00 00 */	lwz r30, 0(r4)
/* 8033CAC4 00338724  7C EA 2B 78 */	or r10, r7, r5
/* 8033CAC8 00338728  54 1B 28 3E */	rotlwi r27, r0, 5
/* 8033CACC 0033872C  7D 29 EA 14 */	add r9, r9, r29
/* 8033CAD0 00338730  7F 8C F2 14 */	add r28, r12, r30
/* 8033CAD4 00338734  7D 3B 4A 14 */	add r9, r27, r9
/* 8033CAD8 00338738  7C FB 28 38 */	and r27, r7, r5
/* 8033CADC 0033873C  7F FC 4A 14 */	add r31, r28, r9
/* 8033CAE0 00338740  7C 0A 50 38 */	and r10, r0, r10
/* 8033CAE4 00338744  7F 7D 53 78 */	or r29, r27, r10
/* 8033CAE8 00338748  54 06 F0 3E */	rotlwi r6, r0, 0x1e
/* 8033CAEC 0033874C  83 C4 00 04 */	lwz r30, 4(r4)
/* 8033CAF0 00338750  7C C0 3B 78 */	or r0, r6, r7
/* 8033CAF4 00338754  57 FC 28 3E */	rotlwi r28, r31, 5
/* 8033CAF8 00338758  7D 08 EA 14 */	add r8, r8, r29
/* 8033CAFC 0033875C  7D 4C F2 14 */	add r10, r12, r30
/* 8033CB00 00338760  7F E0 00 38 */	and r0, r31, r0
/* 8033CB04 00338764  7D 1C 42 14 */	add r8, r28, r8
/* 8033CB08 00338768  7C DC 38 38 */	and r28, r6, r7
/* 8033CB0C 0033876C  7F 4A 42 14 */	add r26, r10, r8
/* 8033CB10 00338770  57 E9 F0 3E */	rotlwi r9, r31, 0x1e
/* 8033CB14 00338774  7F 9D 03 78 */	or r29, r28, r0
/* 8033CB18 00338778  83 64 00 08 */	lwz r27, 8(r4)
/* 8033CB1C 0033877C  7C A5 EA 14 */	add r5, r5, r29
/* 8033CB20 00338780  57 5F 28 3E */	rotlwi r31, r26, 5
/* 8033CB24 00338784  83 C4 00 0C */	lwz r30, 0xc(r4)
/* 8033CB28 00338788  7D 20 33 78 */	or r0, r9, r6
/* 8033CB2C 0033878C  7F FF 2A 14 */	add r31, r31, r5
/* 8033CB30 00338790  7F 8C DA 14 */	add r28, r12, r27
/* 8033CB34 00338794  7F 7C FA 14 */	add r27, r28, r31
/* 8033CB38 00338798  81 44 00 10 */	lwz r10, 0x10(r4)
/* 8033CB3C 0033879C  7D 3D 30 38 */	and r29, r9, r6
/* 8033CB40 003387A0  7F 45 00 38 */	and r5, r26, r0
/* 8033CB44 003387A4  57 48 F0 3E */	rotlwi r8, r26, 0x1e
/* 8033CB48 003387A8  57 7F 28 3E */	rotlwi r31, r27, 5
/* 8033CB4C 003387AC  7F A5 2B 78 */	or r5, r29, r5
/* 8033CB50 003387B0  7F CC F2 14 */	add r30, r12, r30
/* 8033CB54 003387B4  7D 00 4B 78 */	or r0, r8, r9
/* 8033CB58 003387B8  7D 1D 48 38 */	and r29, r8, r9
/* 8033CB5C 003387BC  7C A7 2A 14 */	add r5, r7, r5
/* 8033CB60 003387C0  38 84 00 14 */	addi r4, r4, 0x14
/* 8033CB64 003387C4  7F 60 00 38 */	and r0, r27, r0
/* 8033CB68 003387C8  7C FF 2A 14 */	add r7, r31, r5
/* 8033CB6C 003387CC  7C AC 52 14 */	add r5, r12, r10
/* 8033CB70 003387D0  7D 5E 3A 14 */	add r10, r30, r7
/* 8033CB74 003387D4  7F A0 03 78 */	or r0, r29, r0
/* 8033CB78 003387D8  55 47 28 3E */	rotlwi r7, r10, 5
/* 8033CB7C 003387DC  7C 06 02 14 */	add r0, r6, r0
/* 8033CB80 003387E0  7C 07 02 14 */	add r0, r7, r0
/* 8033CB84 003387E4  7C 05 02 14 */	add r0, r5, r0
/* 8033CB88 003387E8  57 65 F0 3E */	rotlwi r5, r27, 0x1e
/* 8033CB8C 003387EC  42 00 FF 20 */	bdnz lbl_8033CAAC
/* 8033CB90 003387F0  38 C0 00 04 */	li r6, 4
/* 8033CB94 003387F4  38 81 00 F8 */	addi r4, r1, 0xf8
/* 8033CB98 003387F8  7C C9 03 A6 */	mtctr r6
lbl_8033CB9C:
/* 8033CB9C 003387FC  7D 06 52 78 */	xor r6, r8, r10
/* 8033CBA0 00338800  80 E4 00 00 */	lwz r7, 0(r4)
/* 8033CBA4 00338804  7C C6 2A 78 */	xor r6, r6, r5
/* 8033CBA8 00338808  81 84 00 04 */	lwz r12, 4(r4)
/* 8033CBAC 0033880C  7C E7 4A 14 */	add r7, r7, r9
/* 8033CBB0 00338810  54 09 28 3E */	rotlwi r9, r0, 5
/* 8033CBB4 00338814  7C CB 32 14 */	add r6, r11, r6
/* 8033CBB8 00338818  83 A4 00 08 */	lwz r29, 8(r4)
/* 8033CBBC 0033881C  7C E7 32 14 */	add r7, r7, r6
/* 8033CBC0 00338820  7F 69 3A 14 */	add r27, r9, r7
/* 8033CBC4 00338824  55 46 F0 3E */	rotlwi r6, r10, 0x1e
/* 8033CBC8 00338828  7C A7 02 78 */	xor r7, r5, r0
/* 8033CBCC 0033882C  7D 4B 62 14 */	add r10, r11, r12
/* 8033CBD0 00338830  7C E7 32 78 */	xor r7, r7, r6
/* 8033CBD4 00338834  57 69 28 3E */	rotlwi r9, r27, 5
/* 8033CBD8 00338838  7D 08 3A 14 */	add r8, r8, r7
/* 8033CBDC 0033883C  54 00 F0 3E */	rotlwi r0, r0, 0x1e
/* 8033CBE0 00338840  7C C7 DA 78 */	xor r7, r6, r27
/* 8033CBE4 00338844  81 84 00 0C */	lwz r12, 0xc(r4)
/* 8033CBE8 00338848  7D 09 42 14 */	add r8, r9, r8
/* 8033CBEC 0033884C  57 69 F0 3E */	rotlwi r9, r27, 0x1e
/* 8033CBF0 00338850  7F 6A 42 14 */	add r27, r10, r8
/* 8033CBF4 00338854  7C FF 02 78 */	xor r31, r7, r0
/* 8033CBF8 00338858  7C A5 FA 14 */	add r5, r5, r31
/* 8033CBFC 0033885C  57 7E 28 3E */	rotlwi r30, r27, 5
/* 8033CC00 00338860  7C 07 DA 78 */	xor r7, r0, r27
/* 8033CC04 00338864  7C EA 4A 78 */	xor r10, r7, r9
/* 8033CC08 00338868  80 E4 00 10 */	lwz r7, 0x10(r4)
/* 8033CC0C 0033886C  7F DE 2A 14 */	add r30, r30, r5
/* 8033CC10 00338870  7F EB EA 14 */	add r31, r11, r29
/* 8033CC14 00338874  7C A6 52 14 */	add r5, r6, r10
/* 8033CC18 00338878  57 68 F0 3E */	rotlwi r8, r27, 0x1e
/* 8033CC1C 0033887C  7F 7F F2 14 */	add r27, r31, r30
/* 8033CC20 00338880  7D 4B 62 14 */	add r10, r11, r12
/* 8033CC24 00338884  57 6C 28 3E */	rotlwi r12, r27, 5
/* 8033CC28 00338888  7C CB 3A 14 */	add r6, r11, r7
/* 8033CC2C 0033888C  7C EC 2A 14 */	add r7, r12, r5
/* 8033CC30 00338890  7D 25 DA 78 */	xor r5, r9, r27
/* 8033CC34 00338894  7D 4A 3A 14 */	add r10, r10, r7
/* 8033CC38 00338898  38 84 00 14 */	addi r4, r4, 0x14
/* 8033CC3C 0033889C  7C A5 42 78 */	xor r5, r5, r8
/* 8033CC40 003388A0  7C 00 2A 14 */	add r0, r0, r5
/* 8033CC44 003388A4  55 47 28 3E */	rotlwi r7, r10, 5
/* 8033CC48 003388A8  7C 07 02 14 */	add r0, r7, r0
/* 8033CC4C 003388AC  57 65 F0 3E */	rotlwi r5, r27, 0x1e
/* 8033CC50 003388B0  7C 06 02 14 */	add r0, r6, r0
/* 8033CC54 003388B4  42 00 FF 48 */	bdnz lbl_8033CB9C
/* 8033CC58 003388B8  80 C3 00 00 */	lwz r6, 0(r3)
/* 8033CC5C 003388BC  38 80 00 00 */	li r4, 0
/* 8033CC60 003388C0  81 63 00 04 */	lwz r11, 4(r3)
/* 8033CC64 003388C4  7D 86 02 14 */	add r12, r6, r0
/* 8033CC68 003388C8  80 E3 00 08 */	lwz r7, 8(r3)
/* 8033CC6C 003388CC  80 03 00 10 */	lwz r0, 0x10(r3)
/* 8033CC70 003388D0  7D 4B 52 14 */	add r10, r11, r10
/* 8033CC74 003388D4  7C E7 2A 14 */	add r7, r7, r5
/* 8033CC78 003388D8  80 C3 00 0C */	lwz r6, 0xc(r3)
/* 8033CC7C 003388DC  7C 00 4A 14 */	add r0, r0, r9
/* 8033CC80 003388E0  91 83 00 00 */	stw r12, 0(r3)
/* 8033CC84 003388E4  7C A6 42 14 */	add r5, r6, r8
/* 8033CC88 003388E8  39 61 01 60 */	addi r11, r1, 0x160
/* 8033CC8C 003388EC  91 43 00 04 */	stw r10, 4(r3)
/* 8033CC90 003388F0  90 E3 00 08 */	stw r7, 8(r3)
/* 8033CC94 003388F4  90 A3 00 0C */	stw r5, 0xc(r3)
/* 8033CC98 003388F8  90 03 00 10 */	stw r0, 0x10(r3)
/* 8033CC9C 003388FC  B0 83 00 1C */	sth r4, 0x1c(r3)
/* 8033CCA0 00338900  4B E8 A4 D1 */	bl _restgpr_26
/* 8033CCA4 00338904  80 01 01 64 */	lwz r0, 0x164(r1)
/* 8033CCA8 00338908  7C 08 03 A6 */	mtlr r0
/* 8033CCAC 0033890C  38 21 01 60 */	addi r1, r1, 0x160
/* 8033CCB0 00338910  4E 80 00 20 */	blr

.global SHA1PadMessage
SHA1PadMessage:
/* 8033CCB4 00338914  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8033CCB8 00338918  7C 08 02 A6 */	mflr r0
/* 8033CCBC 0033891C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8033CCC0 00338920  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8033CCC4 00338924  7C 7F 1B 78 */	mr r31, r3
/* 8033CCC8 00338928  A8 A3 00 1C */	lha r5, 0x1c(r3)
/* 8033CCCC 0033892C  2C 05 00 37 */	cmpwi r5, 0x37
/* 8033CCD0 00338930  40 81 00 74 */	ble lbl_8033CD44
/* 8033CCD4 00338934  7C 83 2A 14 */	add r4, r3, r5
/* 8033CCD8 00338938  38 00 00 80 */	li r0, 0x80
/* 8033CCDC 0033893C  98 04 00 1E */	stb r0, 0x1e(r4)
/* 8033CCE0 00338940  38 05 00 01 */	addi r0, r5, 1
/* 8033CCE4 00338944  38 C0 00 00 */	li r6, 0
/* 8033CCE8 00338948  B0 03 00 1C */	sth r0, 0x1c(r3)
/* 8033CCEC 0033894C  48 00 00 18 */	b lbl_8033CD04
lbl_8033CCF0:
/* 8033CCF0 00338950  A8 A3 00 1C */	lha r5, 0x1c(r3)
/* 8033CCF4 00338954  7C 83 2A 14 */	add r4, r3, r5
/* 8033CCF8 00338958  38 05 00 01 */	addi r0, r5, 1
/* 8033CCFC 0033895C  98 C4 00 1E */	stb r6, 0x1e(r4)
/* 8033CD00 00338960  B0 03 00 1C */	sth r0, 0x1c(r3)
lbl_8033CD04:
/* 8033CD04 00338964  A8 03 00 1C */	lha r0, 0x1c(r3)
/* 8033CD08 00338968  2C 00 00 40 */	cmpwi r0, 0x40
/* 8033CD0C 0033896C  41 80 FF E4 */	blt lbl_8033CCF0
/* 8033CD10 00338970  7F E3 FB 78 */	mr r3, r31
/* 8033CD14 00338974  4B FF FA 8D */	bl SHA1ProcessMessageBlock
/* 8033CD18 00338978  38 A0 00 00 */	li r5, 0
/* 8033CD1C 0033897C  48 00 00 18 */	b lbl_8033CD34
lbl_8033CD20:
/* 8033CD20 00338980  A8 9F 00 1C */	lha r4, 0x1c(r31)
/* 8033CD24 00338984  7C 7F 22 14 */	add r3, r31, r4
/* 8033CD28 00338988  38 04 00 01 */	addi r0, r4, 1
/* 8033CD2C 0033898C  98 A3 00 1E */	stb r5, 0x1e(r3)
/* 8033CD30 00338990  B0 1F 00 1C */	sth r0, 0x1c(r31)
lbl_8033CD34:
/* 8033CD34 00338994  A8 1F 00 1C */	lha r0, 0x1c(r31)
/* 8033CD38 00338998  2C 00 00 38 */	cmpwi r0, 0x38
/* 8033CD3C 0033899C  41 80 FF E4 */	blt lbl_8033CD20
/* 8033CD40 003389A0  48 00 00 40 */	b lbl_8033CD80
lbl_8033CD44:
/* 8033CD44 003389A4  7C 83 2A 14 */	add r4, r3, r5
/* 8033CD48 003389A8  38 00 00 80 */	li r0, 0x80
/* 8033CD4C 003389AC  98 04 00 1E */	stb r0, 0x1e(r4)
/* 8033CD50 003389B0  38 05 00 01 */	addi r0, r5, 1
/* 8033CD54 003389B4  38 C0 00 00 */	li r6, 0
/* 8033CD58 003389B8  B0 03 00 1C */	sth r0, 0x1c(r3)
/* 8033CD5C 003389BC  48 00 00 18 */	b lbl_8033CD74
lbl_8033CD60:
/* 8033CD60 003389C0  A8 A3 00 1C */	lha r5, 0x1c(r3)
/* 8033CD64 003389C4  7C 83 2A 14 */	add r4, r3, r5
/* 8033CD68 003389C8  38 05 00 01 */	addi r0, r5, 1
/* 8033CD6C 003389CC  98 C4 00 1E */	stb r6, 0x1e(r4)
/* 8033CD70 003389D0  B0 03 00 1C */	sth r0, 0x1c(r3)
lbl_8033CD74:
/* 8033CD74 003389D4  A8 03 00 1C */	lha r0, 0x1c(r3)
/* 8033CD78 003389D8  2C 00 00 38 */	cmpwi r0, 0x38
/* 8033CD7C 003389DC  41 80 FF E4 */	blt lbl_8033CD60
lbl_8033CD80:
/* 8033CD80 003389E0  81 5F 00 18 */	lwz r10, 0x18(r31)
/* 8033CD84 003389E4  7F E3 FB 78 */	mr r3, r31
/* 8033CD88 003389E8  80 DF 00 14 */	lwz r6, 0x14(r31)
/* 8033CD8C 003389EC  55 49 46 3E */	srwi r9, r10, 0x18
/* 8033CD90 003389F0  55 48 86 3E */	rlwinm r8, r10, 0x10, 0x18, 0x1f
/* 8033CD94 003389F4  55 47 C6 3E */	rlwinm r7, r10, 0x18, 0x18, 0x1f
/* 8033CD98 003389F8  54 C5 46 3E */	srwi r5, r6, 0x18
/* 8033CD9C 003389FC  54 C4 86 3E */	rlwinm r4, r6, 0x10, 0x18, 0x1f
/* 8033CDA0 00338A00  54 C0 C6 3E */	rlwinm r0, r6, 0x18, 0x18, 0x1f
/* 8033CDA4 00338A04  99 3F 00 56 */	stb r9, 0x56(r31)
/* 8033CDA8 00338A08  99 1F 00 57 */	stb r8, 0x57(r31)
/* 8033CDAC 00338A0C  98 FF 00 58 */	stb r7, 0x58(r31)
/* 8033CDB0 00338A10  99 5F 00 59 */	stb r10, 0x59(r31)
/* 8033CDB4 00338A14  98 BF 00 5A */	stb r5, 0x5a(r31)
/* 8033CDB8 00338A18  98 9F 00 5B */	stb r4, 0x5b(r31)
/* 8033CDBC 00338A1C  98 1F 00 5C */	stb r0, 0x5c(r31)
/* 8033CDC0 00338A20  98 DF 00 5D */	stb r6, 0x5d(r31)
/* 8033CDC4 00338A24  4B FF F9 DD */	bl SHA1ProcessMessageBlock
/* 8033CDC8 00338A28  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8033CDCC 00338A2C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8033CDD0 00338A30  7C 08 03 A6 */	mtlr r0
/* 8033CDD4 00338A34  38 21 00 10 */	addi r1, r1, 0x10
/* 8033CDD8 00338A38  4E 80 00 20 */	blr