summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-06-05 17:45:15 -0400
committerscnorton <scnorton@biociphers.org>2017-06-05 17:45:15 -0400
commitdc79b94bb32c758253aba698115b60cb5a683266 (patch)
treee7e3ac567816739e66f3958e0f35303b6c253967
parent4a6d595e5171ed4dc3742c3ff43e771b731a9716 (diff)
Nonmatching sub_80B9BC4
-rw-r--r--include/record_mixing.h2
-rw-r--r--src/record_mixing.c10
2 files changed, 9 insertions, 3 deletions
diff --git a/include/record_mixing.h b/include/record_mixing.h
index ec30f50a0..103f5ad64 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -23,7 +23,7 @@ void sub_80B9A88(u8 *a);
void sub_80B9B1C(u8 *a, size_t size, u8 index);
void sub_80B9B70(u8 *a, size_t size, u8 index);
u8 sub_80B9BBC(u16 *a);
-void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d);
+void sub_80B9BC4(struct RecordMixing_UnknownStruct *, size_t, u8 [][2], u8, u8);
u8 sub_80B9C4C(u8 *a);
// ASM
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 6749941dd..f9cb4116e 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -429,14 +429,20 @@ u8 sub_80B9BBC(u16 *a)
#undef NONMATCHING
#ifdef NONMATCHING
-void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d)
+void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e)
{
+ struct RecordMixing_UnknownStructSub *offA;
+ struct RecordMixing_UnknownStructSub *offB;
+ struct RecordMixing_UnknownStructSub v0;
+ v0 = (offA = ((struct RecordMixing_UnknownStruct *)(b * c[d][0] + (u32)&a))->data)[c[d][1]];
+ offA[c[d][1]] = (offB = ((struct RecordMixing_UnknownStruct *)(b * c[e][0] + (u32)&a))->data)[c[e][1]];
+ offB[c[e][1]] = v0;
//ToDo: Figure out what this strange stack usage is
}
#else
__attribute__((naked))
-void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d)
+void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\