diff options
author | scnorton <scnorton@biociphers.org> | 2017-06-05 17:45:15 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-06-05 17:45:15 -0400 |
commit | dc79b94bb32c758253aba698115b60cb5a683266 (patch) | |
tree | e7e3ac567816739e66f3958e0f35303b6c253967 | |
parent | 4a6d595e5171ed4dc3742c3ff43e771b731a9716 (diff) |
Nonmatching sub_80B9BC4
-rw-r--r-- | include/record_mixing.h | 2 | ||||
-rw-r--r-- | src/record_mixing.c | 10 |
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\ |