summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/gsCrypt.s
blob: 336ea8b0efc71e7d03c5d180c14e9a7c6cac001e (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
.include "macros.inc"

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

.global gsCryptRSAEncryptBuffer
gsCryptRSAEncryptBuffer:
/* 80339694 003352F4  94 21 FE D0 */	stwu r1, -0x130(r1)
/* 80339698 003352F8  7C 08 02 A6 */	mflr r0
/* 8033969C 003352FC  90 01 01 34 */	stw r0, 0x134(r1)
/* 803396A0 00335300  39 61 01 30 */	addi r11, r1, 0x130
/* 803396A4 00335304  4B E8 DA 7D */	bl _savegpr_25
/* 803396A8 00335308  28 05 00 75 */	cmplwi r5, 0x75
/* 803396AC 0033530C  7C 79 1B 78 */	mr r25, r3
/* 803396B0 00335310  7C 9A 23 78 */	mr r26, r4
/* 803396B4 00335314  7C BB 2B 78 */	mr r27, r5
/* 803396B8 00335318  7C DC 33 78 */	mr r28, r6
/* 803396BC 0033531C  3B C1 00 0C */	addi r30, r1, 0xc
/* 803396C0 00335320  40 81 00 0C */	ble lbl_803396CC
/* 803396C4 00335324  38 60 FF FF */	li r3, -1
/* 803396C8 00335328  48 00 00 D0 */	b lbl_80339798
lbl_803396CC:
/* 803396CC 0033532C  38 60 00 00 */	li r3, 0
/* 803396D0 00335330  38 00 00 02 */	li r0, 2
/* 803396D4 00335334  98 61 00 0C */	stb r3, 0xc(r1)
/* 803396D8 00335338  98 01 00 0D */	stb r0, 0xd(r1)
/* 803396DC 0033533C  4B FF F8 FD */	bl current_time
/* 803396E0 00335340  4B FF F9 81 */	bl Util_RandSeed
/* 803396E4 00335344  23 BB 00 7D */	subfic r29, r27, 0x7d
/* 803396E8 00335348  3B E0 00 00 */	li r31, 0
/* 803396EC 0033534C  48 00 00 20 */	b lbl_8033970C
lbl_803396F0:
/* 803396F0 00335350  38 60 00 00 */	li r3, 0
/* 803396F4 00335354  38 80 00 FF */	li r4, 0xff
/* 803396F8 00335358  4B FF F9 81 */	bl Util_RandInt
/* 803396FC 0033535C  7C 9E FA 14 */	add r4, r30, r31
/* 80339700 00335360  38 03 00 01 */	addi r0, r3, 1
/* 80339704 00335364  98 04 00 02 */	stb r0, 2(r4)
/* 80339708 00335368  3B FF 00 01 */	addi r31, r31, 1
lbl_8033970C:
/* 8033970C 0033536C  7C 1F E8 40 */	cmplw r31, r29
/* 80339710 00335370  41 80 FF E0 */	blt lbl_803396F0
/* 80339714 00335374  20 1B 00 7E */	subfic r0, r27, 0x7e
/* 80339718 00335378  7C BE EA 14 */	add r5, r30, r29
/* 8033971C 0033537C  38 C0 00 00 */	li r6, 0
/* 80339720 00335380  7F 44 D3 78 */	mr r4, r26
/* 80339724 00335384  7C 7E 02 14 */	add r3, r30, r0
/* 80339728 00335388  98 C5 00 02 */	stb r6, 2(r5)
/* 8033972C 0033538C  7F 65 DB 78 */	mr r5, r27
/* 80339730 00335390  38 63 00 02 */	addi r3, r3, 2
/* 80339734 00335394  4B CC A8 CD */	bl memcpy
/* 80339738 00335398  38 00 00 20 */	li r0, 0x20
/* 8033973C 0033539C  38 61 00 08 */	addi r3, r1, 8
/* 80339740 003353A0  90 01 00 08 */	stw r0, 8(r1)
/* 80339744 003353A4  48 00 27 CD */	bl gsLargeIntReverseBytes
/* 80339748 003353A8  2C 03 00 00 */	cmpwi r3, 0
/* 8033974C 003353AC  41 82 00 30 */	beq lbl_8033977C
/* 80339750 003353B0  38 61 00 08 */	addi r3, r1, 8
/* 80339754 003353B4  7F 25 CB 78 */	mr r5, r25
/* 80339758 003353B8  7C 66 1B 78 */	mr r6, r3
/* 8033975C 003353BC  38 99 01 04 */	addi r4, r25, 0x104
/* 80339760 003353C0  48 00 1C 89 */	bl gsLargeIntPowerMod
/* 80339764 003353C4  2C 03 00 00 */	cmpwi r3, 0
/* 80339768 003353C8  41 82 00 14 */	beq lbl_8033977C
/* 8033976C 003353CC  38 61 00 08 */	addi r3, r1, 8
/* 80339770 003353D0  48 00 27 A1 */	bl gsLargeIntReverseBytes
/* 80339774 003353D4  2C 03 00 00 */	cmpwi r3, 0
/* 80339778 003353D8  40 82 00 0C */	bne lbl_80339784
lbl_8033977C:
/* 8033977C 003353DC  38 60 FF FF */	li r3, -1
/* 80339780 003353E0  48 00 00 18 */	b lbl_80339798
lbl_80339784:
/* 80339784 003353E4  7F 83 E3 78 */	mr r3, r28
/* 80339788 003353E8  38 81 00 0C */	addi r4, r1, 0xc
/* 8033978C 003353EC  38 A0 00 80 */	li r5, 0x80
/* 80339790 003353F0  4B CC A8 71 */	bl memcpy
/* 80339794 003353F4  38 60 00 00 */	li r3, 0
lbl_80339798:
/* 80339798 003353F8  39 61 01 30 */	addi r11, r1, 0x130
/* 8033979C 003353FC  4B E8 D9 D1 */	bl _restgpr_25
/* 803397A0 00335400  80 01 01 34 */	lwz r0, 0x134(r1)
/* 803397A4 00335404  7C 08 03 A6 */	mtlr r0
/* 803397A8 00335408  38 21 01 30 */	addi r1, r1, 0x130
/* 803397AC 0033540C  4E 80 00 20 */	blr