Attempt to decompile weaponGetModel

This commit is contained in:
Ryan Dwyer 2020-02-29 20:18:29 +10:00
parent a0351a7828
commit 0a3b6a9ffb
11 changed files with 161 additions and 98 deletions

View File

@ -10784,8 +10784,8 @@ bool aiChrSetCutsceneWeapon(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[2]);
s32 weapon_id = func0f128af4(cmd[3]);
s32 fallback_id = func0f128af4(cmd[4]);
s32 model_id = weaponGetModel(cmd[3]);
s32 fallback_model_id = weaponGetModel(cmd[4]);
if (chr) {
if (cmd[3] == 0xff) {
@ -10813,20 +10813,20 @@ bool aiChrSetCutsceneWeapon(void)
}
}
} else {
if (chr->weapons_held[0] == NULL && chr->weapons_held[1] == NULL && fallback_id >= 0) {
func0f08b8e8(chr, fallback_id, cmd[4], 0, 0, 0);
if (chr->weapons_held[0] == NULL && chr->weapons_held[1] == NULL && fallback_model_id >= 0) {
func0f08b8e8(chr, fallback_model_id, cmd[4], 0, 0, 0);
}
}
} else {
func0f08b8b8(chr, 1);
func0f08b8b8(chr, 0);
if (weapon_id >= 0) {
func0f08b8e8(chr, weapon_id, cmd[3], 0, 0, 0);
if (model_id >= 0) {
func0f08b8e8(chr, model_id, cmd[3], 0, 0, 0);
}
if (fallback_id >= 0) {
func0f08b8e8(chr, fallback_id, cmd[4], 0x10000000, 0, 0);
if (fallback_model_id >= 0) {
func0f08b8e8(chr, fallback_model_id, cmd[4], 0x10000000, 0, 0);
}
}
}

View File

@ -43159,7 +43159,7 @@ glabel func0f08bad0
/* f08bafc: afa40020 */ sw $a0,0x20($sp)
/* f08bb00: afa50024 */ sw $a1,0x24($sp)
/* f08bb04: afa60028 */ sw $a2,0x28($sp)
/* f08bb08: 0fc4a2bd */ jal func0f128af4
/* f08bb08: 0fc4a2bd */ jal weaponGetModel
/* f08bb0c: 00a02025 */ or $a0,$a1,$zero
/* f08bb10: 8fa40020 */ lw $a0,0x20($sp)
/* f08bb14: 00402825 */ or $a1,$v0,$zero
@ -48978,7 +48978,7 @@ glabel func0f0910ac
/* f091120: 3c120040 */ lui $s2,0x40
/* f091124: 24110008 */ addiu $s1,$zero,0x8
.L0f091128:
/* f091128: 0fc4a2bd */ jal func0f128af4
/* f091128: 0fc4a2bd */ jal weaponGetModel
/* f09112c: 02002025 */ or $a0,$s0,$zero
/* f091130: 04420039 */ bltzl $v0,.L0f091218
/* f091134: 26100001 */ addiu $s0,$s0,0x1
@ -49071,7 +49071,7 @@ glabel func0f091250
/* f091260: afa40030 */ sw $a0,0x30($sp)
/* f091264: 8dcf00bc */ lw $t7,0xbc($t6)
/* f091268: 8df80004 */ lw $t8,0x4($t7)
/* f09126c: 0fc4a2bd */ jal func0f128af4
/* f09126c: 0fc4a2bd */ jal weaponGetModel
/* f091270: afb80024 */ sw $t8,0x24($sp)
/* f091274: 8fa40024 */ lw $a0,0x24($sp)
/* f091278: 00402825 */ or $a1,$v0,$zero

View File

@ -12676,7 +12676,7 @@ glabel func0f0a2ae4
/* f0a2c70: 8fa40044 */ lw $a0,0x44($sp)
/* f0a2c74: 0fc22e2e */ jal func0f08b8b8
/* f0a2c78: 24050001 */ addiu $a1,$zero,0x1
/* f0a2c7c: 0fc4a2bd */ jal func0f128af4
/* f0a2c7c: 0fc4a2bd */ jal weaponGetModel
/* f0a2c80: 8fa40048 */ lw $a0,0x48($sp)
/* f0a2c84: 0440001e */ bltz $v0,.L0f0a2d00
/* f0a2c88: 00402825 */ or $a1,$v0,$zero

View File

@ -2943,7 +2943,7 @@ glabel func0f0b8ba0
/* f0b8c88: 8d08ddd0 */ lw $t0,-0x2230($t0)
/* f0b8c8c: afa8006c */ sw $t0,0x6c($sp)
.L0f0b8c90:
/* f0b8c90: 0fc4a2bd */ jal func0f128af4
/* f0b8c90: 0fc4a2bd */ jal weaponGetModel
/* f0b8c94: 8fa4006c */ lw $a0,0x6c($sp)
/* f0b8c98: 3c038009 */ lui $v1,0x8009
/* f0b8c9c: 90630af0 */ lbu $v1,0xaf0($v1)

View File

@ -100,83 +100,6 @@ const u32 var7f1b5140[] = {0x3eaaaaab};
const u32 var7f1b5144[] = {0x00000000};
const u32 var7f1b5148[] = {0x00000000};
const u32 var7f1b514c[] = {0x00000000};
const u32 var7f1b5150[] = {0xc3653838};
const u32 var7f1b5154[] = {0x4164924b};
const u32 var7f1b5158[] = {0x3f6e147b};
const u32 var7f1b515c[] = {0x3f666666};
const u32 var7f1b5160[] = {0xc0490fdb};
const u32 var7f1b5164[] = {0x3faaaaab};
const u32 var7f1b5168[] = {0x7f128b54};
const u32 var7f1b516c[] = {0x7f128b54};
const u32 var7f1b5170[] = {0x7f128b5c};
const u32 var7f1b5174[] = {0x7f128b8c};
const u32 var7f1b5178[] = {0x7f128b94};
const u32 var7f1b517c[] = {0x7f128b64};
const u32 var7f1b5180[] = {0x7f128b6c};
const u32 var7f1b5184[] = {0x7f128b84};
const u32 var7f1b5188[] = {0x7f128b74};
const u32 var7f1b518c[] = {0x7f128b7c};
const u32 var7f1b5190[] = {0x7f128b9c};
const u32 var7f1b5194[] = {0x7f128bc4};
const u32 var7f1b5198[] = {0x7f128bcc};
const u32 var7f1b519c[] = {0x7f128bd4};
const u32 var7f1b51a0[] = {0x7f128bdc};
const u32 var7f1b51a4[] = {0x7f128bac};
const u32 var7f1b51a8[] = {0x7f128bbc};
const u32 var7f1b51ac[] = {0x7f128ba4};
const u32 var7f1b51b0[] = {0x7f128bb4};
const u32 var7f1b51b4[] = {0x7f128be4};
const u32 var7f1b51b8[] = {0x7f128bec};
const u32 var7f1b51bc[] = {0x7f128c14};
const u32 var7f1b51c0[] = {0x7f128c0c};
const u32 var7f1b51c4[] = {0x7f128bfc};
const u32 var7f1b51c8[] = {0x7f128bf4};
const u32 var7f1b51cc[] = {0x7f128c04};
const u32 var7f1b51d0[] = {0x7f128c2c};
const u32 var7f1b51d4[] = {0x7f128c1c};
const u32 var7f1b51d8[] = {0x7f128c34};
const u32 var7f1b51dc[] = {0x7f128c24};
const u32 var7f1b51e0[] = {0x7f128c4c};
const u32 var7f1b51e4[] = {0x7f128c44};
const u32 var7f1b51e8[] = {0x7f128c64};
const u32 var7f1b51ec[] = {0x7f128c5c};
const u32 var7f1b51f0[] = {0x7f128c54};
const u32 var7f1b51f4[] = {0x7f128cbc};
const u32 var7f1b51f8[] = {0x7f128c7c};
const u32 var7f1b51fc[] = {0x7f128c84};
const u32 var7f1b5200[] = {0x7f128c8c};
const u32 var7f1b5204[] = {0x7f128c94};
const u32 var7f1b5208[] = {0x7f128c9c};
const u32 var7f1b520c[] = {0x7f128ca4};
const u32 var7f1b5210[] = {0x7f128cac};
const u32 var7f1b5214[] = {0x7f128cb4};
const u32 var7f1b5218[] = {0x7f128c3c};
const u32 var7f1b521c[] = {0x7f128cd4};
const u32 var7f1b5220[] = {0x7f128cd4};
const u32 var7f1b5224[] = {0x7f128cd4};
const u32 var7f1b5228[] = {0x7f128cd4};
const u32 var7f1b522c[] = {0x7f128c74};
const char var7f1b5230[] = "VTXSTORE : vtxfixrefs -> Start - p1=%x, p2=%x\n";
const char var7f1b5260[] = "vtxfixrefs : Part=%x -- Mapping ptr %x -> %x\n";
const char var7f1b5290[] = "VTXSTORE : vtxfixrefs -> End - Done=%d\n";
const char var7f1b52b8[] = "vtxstorecheck : memaFree -> %u bytes at Ptr=%x(%x)\n";
const char var7f1b52ec[] = "vtxstorecheck : At block 1 %d -> Ref1=%x, Ref2=%x\n";
const char var7f1b5320[] = "vtxstorecheck : At block 2 %d -> Ref1=%x, Ref2=%x\n";
const char var7f1b5354[] = "vtx buffer low, need to delete objects\n";
const char var7f1b537c[] = "getfreevertices : %d of type %d -> ref1=%x, ref2=%x\n";
const char var7f1b53b4[] = "vtxstore: 1st mema alloc of %u bytes\n";
const char var7f1b53dc[] = "getfreevertices : Return ptr = %x\n";
const char var7f1b5400[] = "vtxstore: Out of mema (returning NULL)\n";
const char var7f1b5428[] = "vtxstore: GROSS! CorspeCount > MAX_CORPSES corpses! Freeing corpse %x\n";
const char var7f1b5470[] = "vtxstore: CorpseCount %d, Trying to free %d\n";
const char var7f1b54a0[] = "vtxstore: Freeing corpse %x\n";
const char var7f1b54c0[] = "vtxstore: Out of vertices type %d wanted %d free %d (returning NULL)\n";
const char var7f1b5508[] = "vtxstore: freevertices type %d, list %x\n";
const char var7f1b5534[] = "freevertices: address not found in array %x\n";
const char var7f1b5564[] = "";
const char var7f1b5568[] = "";
const char var7f1b556c[] = "";
GLOBAL_ASM(
glabel func0f11ecf0

View File

@ -14,6 +14,65 @@
#include "lib/lib_12dc0.h"
#include "types.h"
const u32 var7f1b5150[] = {0xc3653838};
const u32 var7f1b5154[] = {0x4164924b};
const u32 var7f1b5158[] = {0x3f6e147b};
const u32 var7f1b515c[] = {0x3f666666};
const u32 var7f1b5160[] = {0xc0490fdb};
const u32 var7f1b5164[] = {0x3faaaaab};
// weaponGetModel
const u32 var7f1b5168[] = {0x7f128b54};
const u32 var7f1b516c[] = {0x7f128b54};
const u32 var7f1b5170[] = {0x7f128b5c};
const u32 var7f1b5174[] = {0x7f128b8c};
const u32 var7f1b5178[] = {0x7f128b94};
const u32 var7f1b517c[] = {0x7f128b64};
const u32 var7f1b5180[] = {0x7f128b6c};
const u32 var7f1b5184[] = {0x7f128b84};
const u32 var7f1b5188[] = {0x7f128b74};
const u32 var7f1b518c[] = {0x7f128b7c};
const u32 var7f1b5190[] = {0x7f128b9c};
const u32 var7f1b5194[] = {0x7f128bc4};
const u32 var7f1b5198[] = {0x7f128bcc};
const u32 var7f1b519c[] = {0x7f128bd4};
const u32 var7f1b51a0[] = {0x7f128bdc};
const u32 var7f1b51a4[] = {0x7f128bac};
const u32 var7f1b51a8[] = {0x7f128bbc};
const u32 var7f1b51ac[] = {0x7f128ba4};
const u32 var7f1b51b0[] = {0x7f128bb4};
const u32 var7f1b51b4[] = {0x7f128be4};
const u32 var7f1b51b8[] = {0x7f128bec};
const u32 var7f1b51bc[] = {0x7f128c14};
const u32 var7f1b51c0[] = {0x7f128c0c};
const u32 var7f1b51c4[] = {0x7f128bfc};
const u32 var7f1b51c8[] = {0x7f128bf4};
const u32 var7f1b51cc[] = {0x7f128c04};
const u32 var7f1b51d0[] = {0x7f128c2c};
const u32 var7f1b51d4[] = {0x7f128c1c};
const u32 var7f1b51d8[] = {0x7f128c34};
const u32 var7f1b51dc[] = {0x7f128c24};
const u32 var7f1b51e0[] = {0x7f128c4c};
const u32 var7f1b51e4[] = {0x7f128c44};
const u32 var7f1b51e8[] = {0x7f128c64};
const u32 var7f1b51ec[] = {0x7f128c5c};
const u32 var7f1b51f0[] = {0x7f128c54};
const u32 var7f1b51f4[] = {0x7f128cbc};
const u32 var7f1b51f8[] = {0x7f128c7c};
const u32 var7f1b51fc[] = {0x7f128c84};
const u32 var7f1b5200[] = {0x7f128c8c};
const u32 var7f1b5204[] = {0x7f128c94};
const u32 var7f1b5208[] = {0x7f128c9c};
const u32 var7f1b520c[] = {0x7f128ca4};
const u32 var7f1b5210[] = {0x7f128cac};
const u32 var7f1b5214[] = {0x7f128cb4};
const u32 var7f1b5218[] = {0x7f128c3c};
const u32 var7f1b521c[] = {0x7f128cd4};
const u32 var7f1b5220[] = {0x7f128cd4};
const u32 var7f1b5224[] = {0x7f128cd4};
const u32 var7f1b5228[] = {0x7f128cd4};
const u32 var7f1b522c[] = {0x7f128c74};
void func0f127910(void)
{
s32 i;
@ -1145,7 +1204,7 @@ void currentPlayerSetAspectRatio(f32 aspect)
}
GLOBAL_ASM(
glabel func0f128af4
glabel weaponGetModel
/* f128af4: 28810052 */ slti $at,$a0,0x52
/* f128af8: 14200007 */ bnez $at,.L0f128b18
/* f128afc: 24010052 */ addiu $at,$zero,0x52
@ -1283,6 +1342,67 @@ glabel func0f128af4
/* f128cec: 00601025 */ or $v0,$v1,$zero
);
//s32 weaponGetModel(s32 weapon)
//{
// switch (weapon) {
// case WEAPON_NONE:
// case WEAPON_UNARMED: return -1;
// case WEAPON_FALCON2: return MODEL_CHRFALCON2;
// case WEAPON_MAGSEC4: return MODEL_CHRLEEGUN1;
// case WEAPON_MAULER: return MODEL_CHRMAULER;
// case WEAPON_DY357MAGNUM: return MODEL_CHRDY357;
// case WEAPON_DY357LX: return MODEL_CHRDY357TRENT;
// case WEAPON_PHOENIX: return MODEL_CHRMAIANPISTOL;
// case WEAPON_FALCON2_SILENCER: return MODEL_CHRFALCON2SIL;
// case WEAPON_FALCON2_SCOPE: return MODEL_CHRFALCON2SCOPE;
// case WEAPON_CMP150: return MODEL_CHRCMP150;
// case WEAPON_AR34: return MODEL_CHRAR34;
// case WEAPON_DRAGON: return MODEL_CHRDRAGON;
// case WEAPON_SUPERDRAGON: return MODEL_CHRSUPERDRAGON;
// case WEAPON_K7AVENGER: return MODEL_CHRAVENGER;
// case WEAPON_CYCLONE: return MODEL_CHRCYCLONE;
// case WEAPON_CALLISTONTG: return MODEL_CHRMAIANSMG;
// case WEAPON_RCP120: return MODEL_CHRRCP120;
// case WEAPON_LAPTOPGUN: return MODEL_CHRPCGUN;
// case WEAPON_SHOTGUN: return MODEL_CHRSHOTGUN;
// case WEAPON_REAPER: return MODEL_CHRSKMINIGUN;
// case WEAPON_ROCKETLAUNCHER: return MODEL_CHRDYROCKET;
// case WEAPON_DEVASTATOR: return MODEL_CHRDEVASTATOR;
// case WEAPON_SLAYER: return MODEL_CHRSKROCKET;
// case WEAPON_FARSIGHTXR20: return MODEL_CHRZ2020;
// case WEAPON_SNIPERRIFLE: return MODEL_CHRSNIPERRIFLE;
// case WEAPON_CROSSBOW: return MODEL_CHRCROSSBOW;
// case WEAPON_LASER: return MODEL_CHRLASER;
// case WEAPON_COMBATKNIFE: return MODEL_CHRKNIFE;
// case WEAPON_TRANQUILIZER: return MODEL_CHRDRUGGUN;
// case WEAPON_PSYCHOSISGUN: return MODEL_CHRDRUGGUN;
// case WEAPON_NBOMB: return MODEL_CHRNBOMB;
// case WEAPON_GRENADE: return MODEL_CHRGRENADE;
// case WEAPON_REMOTEMINE: return MODEL_CHRREMOTEMINE;
// case WEAPON_PROXIMITYMINE: return MODEL_CHRPROXIMITYMINE;
// case WEAPON_TIMEDMINE: return MODEL_CHRTIMEDMINE;
// case WEAPON_BRIEFCASE2: return MODEL_CHRBRIEFCASE;
// case WEAPON_CLOAKINGDEVICE: return MODEL_CHRCLOAKER;
// case WEAPON_PP9I: return MODEL_CHRWPPK;
// case WEAPON_CC13: return MODEL_CHRTT33;
// case WEAPON_KL01313: return MODEL_CHRSKORPION;
// case WEAPON_KF7SPECIAL: return MODEL_CHRKALASH;
// case WEAPON_ZZT: return MODEL_CHRUZI;
// case WEAPON_DMC: return MODEL_CHRMP5K;
// case WEAPON_AR53: return MODEL_CHRM16;
// case WEAPON_RCP45: return MODEL_CHRFNP90;
// case WEAPON_COMBATBOOST: return -1;
// case WEAPON_HAMMER: return MODEL_CHRLUMPHAMMER;
// case WEAPON_52: return MODEL_CHRSONICSCREWER;
// }
//
// if (weapon <= WEAPON_PSYCHOSISGUN) {
// return MODEL_CHRSNIPERRIFLE;
// }
//
// return -1;
//}
GLOBAL_ASM(
glabel func0f128cf0
/* f128cf0: 3c0e800a */ lui $t6,0x800a
@ -1316,7 +1436,7 @@ glabel func0f128d20
/* f128d50: 0fc2866a */ jal getCurrentPlayerWeaponId
/* f128d54: afa30024 */ sw $v1,0x24($sp)
/* f128d58: 00402025 */ or $a0,$v0,$zero
/* f128d5c: 0fc4a2bd */ jal func0f128af4
/* f128d5c: 0fc4a2bd */ jal weaponGetModel
/* f128d60: afa20030 */ sw $v0,0x30($sp)
/* f128d64: 8fa30024 */ lw $v1,0x24($sp)
/* f128d68: 24010004 */ addiu $at,$zero,0x4

View File

@ -29,6 +29,26 @@
#include "lib/lib_4b480.h"
#include "types.h"
const char var7f1b5230[] = "VTXSTORE : vtxfixrefs -> Start - p1=%x, p2=%x\n";
const char var7f1b5260[] = "vtxfixrefs : Part=%x -- Mapping ptr %x -> %x\n";
const char var7f1b5290[] = "VTXSTORE : vtxfixrefs -> End - Done=%d\n";
const char var7f1b52b8[] = "vtxstorecheck : memaFree -> %u bytes at Ptr=%x(%x)\n";
const char var7f1b52ec[] = "vtxstorecheck : At block 1 %d -> Ref1=%x, Ref2=%x\n";
const char var7f1b5320[] = "vtxstorecheck : At block 2 %d -> Ref1=%x, Ref2=%x\n";
const char var7f1b5354[] = "vtx buffer low, need to delete objects\n";
const char var7f1b537c[] = "getfreevertices : %d of type %d -> ref1=%x, ref2=%x\n";
const char var7f1b53b4[] = "vtxstore: 1st mema alloc of %u bytes\n";
const char var7f1b53dc[] = "getfreevertices : Return ptr = %x\n";
const char var7f1b5400[] = "vtxstore: Out of mema (returning NULL)\n";
const char var7f1b5428[] = "vtxstore: GROSS! CorspeCount > MAX_CORPSES corpses! Freeing corpse %x\n";
const char var7f1b5470[] = "vtxstore: CorpseCount %d, Trying to free %d\n";
const char var7f1b54a0[] = "vtxstore: Freeing corpse %x\n";
const char var7f1b54c0[] = "vtxstore: Out of vertices type %d wanted %d free %d (returning NULL)\n";
const char var7f1b5508[] = "vtxstore: freevertices type %d, list %x\n";
const char var7f1b5534[] = "freevertices: address not found in array %x\n";
const char var7f1b5564[] = "";
const char var7f1b5568[] = "";
const char var7f1b556c[] = "";
const char var7f1b5570[] = "ecol";
const u32 var7f1b5578[] = {0x44bb8000};

View File

@ -2528,7 +2528,7 @@ glabel func0f192628
.L0f1926a0:
/* f1926a0: 8e1902d4 */ lw $t9,0x2d4($s0)
/* f1926a4: 8f240020 */ lw $a0,0x20($t9)
/* f1926a8: 0fc4a2bd */ jal func0f128af4
/* f1926a8: 0fc4a2bd */ jal weaponGetModel
/* f1926ac: afa7002c */ sw $a3,0x2c($sp)
/* f1926b0: 8fa7002c */ lw $a3,0x2c($sp)
/* f1926b4: 04400009 */ bltz $v0,.L0f1926dc
@ -5060,7 +5060,7 @@ glabel func0f194b40
/* f194d28: 0fc65f3c */ jal func0f197cf0
/* f194d2c: 8e450020 */ lw $a1,0x20($s2)
/* f194d30: 00408025 */ or $s0,$v0,$zero
/* f194d34: 0fc4a2bd */ jal func0f128af4
/* f194d34: 0fc4a2bd */ jal weaponGetModel
/* f194d38: 8e440020 */ lw $a0,0x20($s2)
/* f194d3c: 12000019 */ beqz $s0,.L0f194da4
/* f194d40: 00408825 */ or $s1,$v0,$zero

View File

@ -2417,7 +2417,7 @@ glabel func0f1994b0
.L0f199698:
/* f199698: 55c00018 */ bnezl $t6,.L0f1996fc
/* f19969c: 8fa40064 */ lw $a0,0x64($sp)
/* f1996a0: 0fc4a2bd */ jal func0f128af4
/* f1996a0: 0fc4a2bd */ jal weaponGetModel
/* f1996a4: 8fa40064 */ lw $a0,0x64($sp)
/* f1996a8: 04400013 */ bltz $v0,.L0f1996f8
/* f1996ac: 00402825 */ or $a1,$v0,$zero
@ -2547,7 +2547,7 @@ glabel func0f19978c
/* f199864: 5501001b */ bnel $t0,$at,.L0f1998d4
/* f199868: 8e6402d4 */ lw $a0,0x2d4($s3)
.L0f19986c:
/* f19986c: 0fc4a2bd */ jal func0f128af4
/* f19986c: 0fc4a2bd */ jal weaponGetModel
/* f199870: 86240004 */ lh $a0,0x4($s1)
/* f199874: 18400016 */ blez $v0,.L0f1998d0
/* f199878: 00402825 */ or $a1,$v0,$zero

View File

@ -737,7 +737,7 @@ glabel func0f199f84
/* f19a278: 27bd00c8 */ addiu $sp,$sp,0xc8
/* f19a27c: 27bdffe8 */ addiu $sp,$sp,-24
/* f19a280: afbf0014 */ sw $ra,0x14($sp)
/* f19a284: 0fc4a2bd */ jal func0f128af4
/* f19a284: 0fc4a2bd */ jal weaponGetModel
/* f19a288: 00000000 */ sll $zero,$zero,0x0
/* f19a28c: 8fbf0014 */ lw $ra,0x14($sp)
/* f19a290: 27bd0018 */ addiu $sp,$sp,0x18

View File

@ -13,7 +13,7 @@ void func0f128a9c(u32 arg0, u32 arg1);
void func0f128ab8(u32 arg0, u32 arg1);
void currentPlayerSetFovY(f32 fovy);
void currentPlayerSetAspectRatio(f32 aspect);
s32 func0f128af4(s32 arg0);
s32 weaponGetModel(s32 arg0);
u32 func0f128cf0(void);
u32 func0f128d20(void);
u32 func0f128dbc(void);