summaryrefslogtreecommitdiff
path: root/asm/main.s
blob: afd4969dddf9e08e69e551691c0d6633301881fa (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
	.include "asm/macros.inc"
	.include "global.inc"

	.section .text

	thumb_func_start NitroMain
NitroMain: ; 0x02000C54
	push {r3-r7, lr}
	bl FUN_02016014
	bl FUN_02016148
	bl FUN_020163BC
	mov r0, #0x0
	bl FUN_02016438
	ldr r0, _02000DD0 ; =0x02106FA0
	mov r1, #0x0
	blx FUN_020D50D8
	bl FUN_02022294
	bl FUN_0201259C
	bl FUN_02000DF4
	bl FUN_02002C14
	mov r0, #0x0
	mov r1, #0x3
	bl FUN_02002C50
	mov r0, #0x1
	mov r1, #0x3
	bl FUN_02002C50
	mov r0, #0x3
	add r1, r0, #0x0
	bl FUN_02002C50
	mov r1, #0x0
	ldr r0, _02000DD4 ; =0x02106FA0
	mvn r1, r1
	str r1, [r0, #0x18]
	bl FUN_0202254C
	ldr r1, _02000DD4 ; =0x02106FA0
	str r0, [r1, #0x20]
	bl FUN_02029EF8
	add r4, r0, #0x0
	ldr r0, _02000DD4 ; =0x02106FA0
	ldr r0, [r0, #0x20]
	bl FUN_02023900
	add r1, r0, #0x0
	add r0, r4, #0x0
	bl FUN_02003B98
	bl FUN_02020AFC
	mov r0, #0x3
	bl FUN_020337E8
	cmp r0, #0x3
	bne _02000CD4
	mov r0, #0x3
	mov r1, #0x0
	bl FUN_02034188
_02000CD4:
	ldr r0, _02000DD4 ; =0x02106FA0
	ldr r0, [r0, #0x20]
	bl FUN_020227FC
	cmp r0, #0x0
	bne _02000CE8
	mov r0, #0x0
	bl FUN_02089D90
	b _02000D1A
_02000CE8:
	ldr r0, _02000DD8 ; =0x027FFC20
	ldr r0, [r0, #0x0]
	cmp r0, #0x0
	beq _02000CF6
	cmp r0, #0x1
	beq _02000D06
	b _02000D16
_02000CF6:
	ldr r0, _02000DD4 ; =0x02106FA0
	mov r1, #0x0
	str r1, [r0, #0x1c]
	ldr r0, _02000DDC ; =0x0000003F
	ldr r1, _02000DE0 ; =0x021DBE18
	bl FUN_02000E7C
	b _02000D1A
_02000D06:
	ldr r0, _02000DD4 ; =0x02106FA0
	mov r1, #0x1
	str r1, [r0, #0x1c]
	ldr r0, _02000DE4 ; =0x00000034
	ldr r1, _02000DE8 ; =0x021D76C8
	bl FUN_02000E7C
	b _02000D1A
_02000D16:
	bl FUN_02020C2C
_02000D1A:
	ldr r0, _02000DEC ; =0x021C48B8
	mov r1, #0x1
	str r1, [r0, #0x6c]
	mov r1, #0x0
	str r1, [r0, #0x30]
	bl FUN_02000FA4
	bl FUN_0200A2AC
	bl FUN_02015E30
	mov r1, #0x0
	ldr r0, _02000DD4 ; =0x02106FA0
	mov r7, #0xc3
	ldr r6, _02000DF0 ; =0x021C4918
	ldr r4, _02000DEC ; =0x021C48B8
	str r1, [r0, #0x4]
	add r5, r1, #0x0
	lsl r7, r7, #0x2
_02000D40:
	bl FUN_02000EE8
	bl FUN_02000FE8
	bl FUN_02016464
	mov r0, #0xc3
	ldr r1, [r4, #0x38]
	lsl r0, r0, #0x2
	and r0, r1
	cmp r0, r7
	bne _02000D64
	ldrb r0, [r6, #0x8]
	cmp r0, #0x0
	bne _02000D64
	mov r0, #0x0
	bl FUN_02000F18
_02000D64:
	bl FUN_0202FB80
	cmp r0, #0x0
	beq _02000D90
	bl FUN_02000E0C
	ldr r0, [r4, #0x18]
	bl FUN_0201B5CC
	ldr r0, [r4, #0x24]
	bl FUN_0201B5CC
	ldr r0, [r4, #0x30]
	cmp r0, #0x0
	bne _02000D90
	mov r0, #0x1
	add r1, r0, #0x0
	blx FUN_020C9C0C
	ldr r0, [r4, #0x2c]
	add r0, r0, #0x1
	str r0, [r4, #0x2c]
_02000D90:
	bl FUN_020125D4
	bl FUN_02015E60
	bl FUN_020222C4
	ldr r0, [r4, #0x24]
	bl FUN_0201B5CC
	mov r0, #0x1
	add r1, r0, #0x0
	blx FUN_020C9C0C
	ldr r0, [r4, #0x2c]
	add r0, r0, #0x1
	str r0, [r4, #0x2c]
	str r5, [r4, #0x30]
	bl FUN_0200A318
	bl FUN_0200E2D8
	ldr r1, [r4, #0x0]
	cmp r1, #0x0
	beq _02000DC4
	ldr r0, [r4, #0x4]
	blx r1
_02000DC4:
	bl FUN_02003C10
	ldr r0, [r4, #0x20]
	bl FUN_0201B5CC
	b _02000D40
	.balign 4
_02000DD0: .word 0x02106FA0
_02000DD4: .word 0x02106FA0
_02000DD8: .word 0x027FFC20
_02000DDC: .word 0x0000003F
_02000DE0: .word 0x021DBE18
_02000DE4: .word 0x00000034
_02000DE8: .word 0x021D76C8
_02000DEC: .word 0x021C48B8
_02000DF0: .word 0x021C4918