summaryrefslogtreecommitdiff
path: root/arm9/asm/DGT_sha1s_arm4cw.s
blob: 1f110a72b417655d9247ad4f6720b95c6854a363 (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
	.include "asm/macros.inc"
	.include "global.inc"

	.text

_020D33B4: .word 0x00FF00FF
_020D33B8: .word 0x5A827999
_020D33BC: .word 0x6ED9EBA1
_020D33C0: .word 0x8F1BBCDC
_020D33C4: .word 0xCA62C1D6

	arm_func_start DGTi_hash2_arm4_small
DGTi_hash2_arm4_small: ; 0x020D33C8
	stmdb sp!, {r4-r12,lr}
	ldmia r0, {r3,r9-r12}
	sub sp, sp, #0x84
	str r2, [sp, #0x80]
_020D33D8:
	ldr r8, _020D33B8 ; =0x5A827999
	ldr r7, _020D33B4 ; =0x00FF00FF
	mov r6, sp
	mov r5, #0x0
_020D33E8:
	ldr r4, [r1], #0x4
	add r2, r8, r12
	add r2, r2, r3, ror #0x1B
	and lr, r4, r7
	and r4, r7, r4, ror #0x18
	orr r4, r4, lr, ror #0x8
	str r4, [r6, #0x40]
	str r4, [r6], #0x4
	add r2, r2, r4
	eor r4, r10, r11
	and r4, r4, r9
	eor r4, r4, r11
	add r2, r2, r4
	mov r9, r9, ror #0x2
	mov r12, r11
	mov r11, r10
	mov r10, r9
	mov r9, r3
	mov r3, r2
	add r5, r5, #0x4
	cmp r5, #0x40
	blt _020D33E8
	mov r7, #0x0
	mov r6, sp
_020D3448:
	ldr r2, [r6, #0x0]
	ldr r5, [r6, #0x8]
	ldr r4, [r6, #0x20]
	ldr lr, [r6, #0x34]
	eor r2, r2, r5
	eor r4, r4, lr
	eor r2, r2, r4
	mov r2, r2, ror #0x1F
	str r2, [r6, #0x40]
	str r2, [r6], #0x4
	add r2, r2, r12
	add r2, r2, r8
	add r2, r2, r3, ror #0x1B
	eor r4, r10, r11
	and r4, r4, r9
	eor r4, r4, r11
	add r2, r2, r4
	mov r9, r9, ror #0x2
	mov r12, r11
	mov r11, r10
	mov r10, r9
	mov r9, r3
	mov r3, r2
	add r7, r7, #0x4
	cmp r7, #0x10
	blt _020D3448
	ldr r8, _020D33BC ; =0x6ED9EBA1
	mov r7, #0x0
_020D34B8:
	ldr r2, [r6, #0x0]
	ldr r4, [r6, #0x8]
	ldr lr, [r6, #0x20]
	ldr r5, [r6, #0x34]
	eor r2, r2, r4
	eor lr, lr, r5
	eor r2, r2, lr
	mov r2, r2, ror #0x1F
	str r2, [r6, #0x40]
	str r2, [r6], #0x4
	add r2, r2, r12
	add r2, r2, r8
	add r2, r2, r3, ror #0x1B
	eor lr, r9, r10
	eor lr, lr, r11
	add r2, r2, lr
	mov r9, r9, ror #0x2
	mov r12, r11
	mov r11, r10
	mov r10, r9
	mov r9, r3
	mov r3, r2
	add r7, r7, #0x1
	cmp r7, #0xc
	moveq r6, sp
	cmp r7, #0x14
	blt _020D34B8
	ldr r8, _020D33C0 ; =0x8F1BBCDC
	mov r7, #0x0
_020D352C:
	ldr r2, [r6, #0x0]
	ldr lr, [r6, #0x8]
	ldr r5, [r6, #0x20]
	ldr r4, [r6, #0x34]
	eor r2, r2, lr
	eor r5, r5, r4
	eor r2, r2, r5
	mov r2, r2, ror #0x1F
	str r2, [r6, #0x40]
	str r2, [r6], #0x4
	add r2, r2, r12
	add r2, r2, r8
	add r2, r2, r3, ror #0x1B
	orr r5, r9, r10
	and r5, r5, r11
	and r4, r9, r10
	orr r5, r5, r4
	add r2, r2, r5
	mov r9, r9, ror #0x2
	mov r12, r11
	mov r11, r10
	mov r10, r9
	mov r9, r3
	mov r3, r2
	add r7, r7, #0x1
	cmp r7, #0x8
	moveq r6, sp
	cmp r7, #0x14
	blt _020D352C
	ldr r8, _020D33C4 ; =0xCA62C1D6
	mov r7, #0x0
_020D35A8:
	ldr r2, [r6, #0x0]
	ldr r5, [r6, #0x8]
	ldr r4, [r6, #0x20]
	ldr lr, [r6, #0x34]
	eor r2, r2, r5
	eor r4, r4, lr
	eor r2, r2, r4
	mov r2, r2, ror #0x1F
	str r2, [r6, #0x40]
	str r2, [r6], #0x4
	add r2, r2, r12
	add r2, r2, r8
	add r2, r2, r3, ror #0x1B
	eor r4, r9, r10
	eor r4, r4, r11
	add r2, r2, r4
	mov r9, r9, ror #0x2
	mov r12, r11
	mov r11, r10
	mov r10, r9
	mov r9, r3
	mov r3, r2
	add r7, r7, #0x1
	cmp r7, #0x4
	moveq r6, sp
	cmp r7, #0x14
	blt _020D35A8
	ldmia r0, {r2,r4,r6-r7,lr}
	add r3, r3, r2
	add r9, r9, r4
	add r10, r10, r6
	add r11, r11, r7
	add r12, r12, lr
	stmia r0, {r3,r9-r12}
	ldr lr, [sp, #0x80]
	subs lr, lr, #0x40
	str lr, [sp, #0x80]
	bgt _020D33D8
	add sp, sp, #0x84
	ldmia sp!, {r4-r12,pc}