phase12: match func_800475CC (711 bodies / 720 regions)
This commit is contained in:
+810
-811
File diff suppressed because it is too large
Load Diff
@@ -241,6 +241,7 @@
|
||||
0x800460AC 0x800460D4 src/func_800460AC.c
|
||||
0x80047468 0x800474B0 src/func_80047468.c gp=-D_80121BFC
|
||||
0x800474B0 0x80047508 src/func_800474B0.c
|
||||
0x800475CC 0x80047640 src/func_800475CC.c
|
||||
0x80047984 0x80047A14 src/func_80047984.c
|
||||
0x80048128 0x80048180 src/func_80048128.c gp=-D_80121BFC
|
||||
0x80048180 0x8004820C src/func_80048180.c gp=-D_80121BFC
|
||||
|
||||
|
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* func_800475CC — 116 bytes at 0x800475CC..0x80047640
|
||||
*
|
||||
* Copies two unsigned halfwords from the pair referenced at a1+0x0C and one
|
||||
* unsigned halfword from the pair referenced at a1+0x10 into a three-halfword
|
||||
* stack temporary. The three values are sign-extended into consecutive output
|
||||
* words at a2, and the function returns whether the second value is not -32768.
|
||||
*
|
||||
* The repeated a1+0x0C expressions are intentional: the target reloads the first
|
||||
* pair pointer for its two fields. The local halfword array supplies the 8-byte
|
||||
* frame and the target's raw stack stores without inventing a larger record type.
|
||||
*
|
||||
* LIMITS: the pair and output meanings are not inferred. The input pointer
|
||||
* offsets 0x0C/0x10, field widths, stack offsets, sign extensions, sentinel
|
||||
* comparison, and return are byte evidence.
|
||||
*/
|
||||
|
||||
int func_800475CC(void *unused, void *a1, int *a2)
|
||||
{
|
||||
unsigned short t[3];
|
||||
|
||||
t[0] = *(unsigned short *)(*(unsigned char **)((char *)a1 + 12));
|
||||
t[1] = *(unsigned short *)(*(unsigned char **)((char *)a1 + 12) + 2);
|
||||
t[2] = *(unsigned short *)(*(unsigned char **)((char *)a1 + 16));
|
||||
a2[0] = (short)t[0];
|
||||
a2[1] = (short)t[1];
|
||||
a2[2] = (short)t[2];
|
||||
return (short)t[1] != -32768;
|
||||
}
|
||||
Reference in New Issue
Block a user