summaryrefslogtreecommitdiff
path: root/arm9/modules/05/asm/mod05_021DB900.s
blob: 931fcfad72bd8fead7e17f5a849acfae171cff57 (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
	.include "asm/macros.inc"
	.include "global.inc"
	.section .text
	.balign 4, 0

	thumb_func_start MOD05_021DB900
MOD05_021DB900: ; 0x021DB900
	push {r4, lr}
	mov r0, #4
	mov r1, #8
	bl AllocFromHeap
	add r4, r0, #0
	bne _021DB912
	bl GF_AssertFail
_021DB912:
	add r0, r4, #0
	pop {r4, pc}
	.balign 4, 0

	thumb_func_start MOD05_021DB918
MOD05_021DB918: ; 0x021DB918
	push {r3, r4, r5, r6, lr}
	sub sp, #0x4c
	add r4, r0, #0
	add r0, sp, #4
	add r5, r1, #0
	bl FS_InitFile
	add r0, sp, #4
	add r1, r4, #0
	bl FS_OpenFile
	cmp r0, #0
	beq _021DB9B4
	add r1, sp, #0
	add r0, sp, #4
	add r1, #2
	mov r2, #2
	bl FS_ReadFile
	cmp r0, #0
	bge _021DB946
	bl GF_AssertFail
_021DB946:
	add r0, sp, #4
	add r1, sp, #0
	mov r2, #2
	bl FS_ReadFile
	cmp r0, #0
	bge _021DB958
	bl GF_AssertFail
_021DB958:
	add r0, sp, #0
	ldrh r1, [r0, #2]
	ldrh r0, [r0]
	lsl r6, r1, #2
	lsl r4, r0, #2
	mov r0, #4
	add r1, r6, #0
	bl AllocFromHeap
	str r0, [r5]
	cmp r0, #0
	bne _021DB974
	bl GF_AssertFail
_021DB974:
	mov r0, #4
	add r1, r4, #0
	bl AllocFromHeap
	str r0, [r5, #4]
	cmp r0, #0
	bne _021DB986
	bl GF_AssertFail
_021DB986:
	ldr r1, [r5]
	add r0, sp, #4
	add r2, r6, #0
	bl FS_ReadFile
	cmp r0, #0
	bge _021DB998
	bl GF_AssertFail
_021DB998:
	ldr r1, [r5, #4]
	add r0, sp, #4
	add r2, r4, #0
	bl FS_ReadFile
	cmp r0, #0
	bge _021DB9AA
	bl GF_AssertFail
_021DB9AA:
	add r0, sp, #4
	bl FS_CloseFile
	add sp, #0x4c
	pop {r3, r4, r5, r6, pc}
_021DB9B4:
	bl GF_AssertFail
	add sp, #0x4c
	pop {r3, r4, r5, r6, pc}

	thumb_func_start MOD05_021DB9BC
MOD05_021DB9BC: ; 0x021DB9BC
	push {r4, lr}
	add r4, r0, #0
	ldr r0, [r4, #4]
	bl FreeToHeap
	ldr r0, [r4]
	bl FreeToHeap
	add r0, r4, #0
	bl FreeToHeap
	pop {r4, pc}

	thumb_func_start MOD05_021DB9D4
MOD05_021DB9D4: ; 0x021DB9D4
	ldr r1, [r1]
	lsl r0, r0, #2
	ldrh r0, [r1, r0]
	strh r0, [r2]
	bx lr
	.balign 4, 0

	thumb_func_start MOD05_021DB9E0
MOD05_021DB9E0: ; 0x021DB9E0
	push {r3, r4}
	lsl r4, r0, #2
	ldr r0, [r1]
	ldrh r0, [r0, r4]
	strh r0, [r2]
	ldr r0, [r1]
	add r0, r0, r4
	ldrh r0, [r0, #2]
	strh r0, [r3]
	pop {r3, r4}
	bx lr
	.balign 4, 0

	thumb_func_start MOD05_021DB9F8
MOD05_021DB9F8: ; 0x021DB9F8
	ldr r1, [r1, #4]
	lsl r0, r0, #2
	add r0, r1, r0
	bx lr