sub_8113DE0

This commit is contained in:
PikalaxALT
2018-11-06 17:27:11 -05:00
parent 5a85a2273d
commit 4628859055
2 changed files with 40 additions and 91 deletions
-91
View File
@@ -5,97 +5,6 @@
.text
thumb_func_start sub_8113DE0
sub_8113DE0: @ 8113DE0
push {r4-r7,lr}
adds r4, r1, 0
lsls r0, 16
lsrs r7, r0, 16
ldr r0, _08113DF8 @ =gUnknown_203B044
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _08113E00
ldr r0, _08113DFC @ =gUnknown_8456AA0
adds r0, r7, r0
ldrb r6, [r0]
b _08113E0C
.align 2, 0
_08113DF8: .4byte gUnknown_203B044
_08113DFC: .4byte gUnknown_8456AA0
_08113E00:
ldr r0, _08113E20 @ =gUnknown_8456AA0
adds r0, r7, r0
ldrb r0, [r0]
subs r0, 0x4
lsls r0, 24
lsrs r6, r0, 24
_08113E0C:
adds r0, r4, 0
adds r1, r6, 0
bl sub_8110944
lsls r0, 24
cmp r0, 0
bne _08113E24
movs r0, 0
b _08113E7C
.align 2, 0
_08113E20: .4byte gUnknown_8456AA0
_08113E24:
adds r5, r4, 0
ldr r2, _08113E60 @ =gUnknown_203B044
ldrb r1, [r2, 0x1]
cmp r1, 0
beq _08113E36
adds r0, r1, 0
muls r0, r6
adds r0, 0x4
subs r5, r0
_08113E36:
cmp r1, 0x5
bne _08113E64
movs r4, 0
_08113E3C:
adds r0, r4, 0
muls r0, r6
adds r0, r5
adds r0, 0x4
adds r4, 0x1
adds r1, r4, 0
muls r1, r6
adds r1, r5
adds r1, 0x4
adds r2, r6, 0
bl memcpy
lsls r4, 24
lsrs r4, 24
cmp r4, 0x3
bls _08113E3C
movs r1, 0x4
b _08113E66
.align 2, 0
_08113E60: .4byte gUnknown_203B044
_08113E64:
ldrb r1, [r2, 0x1]
_08113E66:
lsls r0, r1, 12
adds r0, r7, r0
strh r0, [r5]
ldr r0, _08113E84 @ =gUnknown_203AF98
ldrh r0, [r0]
strh r0, [r5, 0x2]
adds r0, r1, 0
muls r0, r6
adds r0, 0x4
adds r5, r0
adds r0, r5, 0
_08113E7C:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08113E84: .4byte gUnknown_203AF98
thumb_func_end sub_8113DE0
thumb_func_start sub_8113E88
sub_8113E88: @ 8113E88
lsls r0, 16
+40
View File
@@ -3464,3 +3464,43 @@ u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1)
a1->unk_3 = r6[3];
return (u16 *)(r6 + 4);
}
u16 * sub_8113DE0(u16 a0, u16 * a1)
{
u8 r6;
u16 * r5;
u8 r4;
u8 r1;
if (gUnknown_203B044.unk_1 == 0)
r6 = gUnknown_8456AA0[a0];
else
r6 = gUnknown_8456AA0[a0] - 4;
if (!sub_8110944(a1, r6))
return NULL;
r5 = (void *)a1;
if (gUnknown_203B044.unk_1 != 0)
r5 = (void *)r5 - (gUnknown_203B044.unk_1 * r6 + 4);
if (gUnknown_203B044.unk_1 == 5)
{
for (r4 = 0; r4 < 4; r4++)
{
memcpy(
(void *)r5 + (r4 * r6 + 4),
(void *)r5 + ((r4 + 1) * r6 + 4),
r6
);
}
r1 = 4;
}
else
r1 = gUnknown_203B044.unk_1;
r5[0] = a0 + (r1 << 12);
r5[1] = gUnknown_203AF98;
r5 = (void *)r5 + (r1 * r6 + 4);
return r5;
}