Decompile func0f0294cc

This commit is contained in:
Ryan Dwyer 2021-12-08 18:46:42 +10:00
parent c1d1305859
commit 86b01cf66d
1 changed files with 41 additions and 85 deletions

View File

@ -12339,91 +12339,47 @@ s32 func0f0293ec(struct prop *prop, s32 cmnum)
return result;
}
GLOBAL_ASM(
glabel func0f0294cc
/* f0294cc: 27bdffc0 */ addiu $sp,$sp,-64
/* f0294d0: afa40040 */ sw $a0,0x40($sp)
/* f0294d4: afbf001c */ sw $ra,0x1c($sp)
/* f0294d8: afa50044 */ sw $a1,0x44($sp)
/* f0294dc: 240effff */ addiu $t6,$zero,-1
/* f0294e0: 00a02025 */ or $a0,$a1,$zero
/* f0294e4: 27af002c */ addiu $t7,$sp,0x2c
/* f0294e8: afae003c */ sw $t6,0x3c($sp)
/* f0294ec: afaf0010 */ sw $t7,0x10($sp)
/* f0294f0: 8fa50040 */ lw $a1,0x40($sp)
/* f0294f4: 27a60034 */ addiu $a2,$sp,0x34
/* f0294f8: 0fc0a39b */ jal func0f028e6c
/* f0294fc: 27a70030 */ addiu $a3,$sp,0x30
/* f029500: 10400038 */ beqz $v0,.L0f0295e4
/* f029504: 8fa40030 */ lw $a0,0x30($sp)
/* f029508: 50800037 */ beqzl $a0,.L0f0295e8
/* f02950c: 8fbf001c */ lw $ra,0x1c($sp)
/* f029510: 0c006a17 */ jal model0001a85c
/* f029514: 00000000 */ nop
/* f029518: 10400007 */ beqz $v0,.L0f029538
/* f02951c: 00402825 */ or $a1,$v0,$zero
/* f029520: 8fa40034 */ lw $a0,0x34($sp)
/* f029524: 8fa6002c */ lw $a2,0x2c($sp)
/* f029528: 0fc0a386 */ jal func0f028e18
/* f02952c: 8fa70040 */ lw $a3,0x40($sp)
/* f029530: 1000002c */ b .L0f0295e4
/* f029534: afa2003c */ sw $v0,0x3c($sp)
.L0f029538:
/* f029538: 0c0069e1 */ jal model0001a784
/* f02953c: 8fa40030 */ lw $a0,0x30($sp)
/* f029540: 14400028 */ bnez $v0,.L0f0295e4
/* f029544: 8fb80034 */ lw $t8,0x34($sp)
/* f029548: 8f020018 */ lw $v0,0x18($t8)
/* f02954c: 50400026 */ beqzl $v0,.L0f0295e8
/* f029550: 8fbf001c */ lw $ra,0x1c($sp)
/* f029554: 8c44001c */ lw $a0,0x1c($v0)
/* f029558: 10800009 */ beqz $a0,.L0f029580
/* f02955c: 00000000 */ nop
/* f029560: 10980007 */ beq $a0,$t8,.L0f029580
/* f029564: 00000000 */ nop
/* f029568: 8c840020 */ lw $a0,0x20($a0)
.L0f02956c:
/* f02956c: 8fb90034 */ lw $t9,0x34($sp)
/* f029570: 10800003 */ beqz $a0,.L0f029580
/* f029574: 00000000 */ nop
/* f029578: 5499fffc */ bnel $a0,$t9,.L0f02956c
/* f02957c: 8c840020 */ lw $a0,0x20($a0)
.L0f029580:
/* f029580: 50800019 */ beqzl $a0,.L0f0295e8
/* f029584: 8fbf001c */ lw $ra,0x1c($sp)
/* f029588: 8c840020 */ lw $a0,0x20($a0)
/* f02958c: 8fa8002c */ lw $t0,0x2c($sp)
/* f029590: 50800015 */ beqzl $a0,.L0f0295e8
/* f029594: 8fbf001c */ lw $ra,0x1c($sp)
/* f029598: 8d020018 */ lw $v0,0x18($t0)
/* f02959c: 8c860018 */ lw $a2,0x18($a0)
.L0f0295a0:
/* f0295a0: 8faa002c */ lw $t2,0x2c($sp)
/* f0295a4: 8cc90018 */ lw $t1,0x18($a2)
/* f0295a8: 5449000c */ bnel $v0,$t1,.L0f0295dc
/* f0295ac: 8c840020 */ lw $a0,0x20($a0)
/* f0295b0: 8d4b001c */ lw $t3,0x1c($t2)
/* f0295b4: 8ccc001c */ lw $t4,0x1c($a2)
/* f0295b8: 556c0008 */ bnel $t3,$t4,.L0f0295dc
/* f0295bc: 8c840020 */ lw $a0,0x20($a0)
/* f0295c0: 8ccd0008 */ lw $t5,0x8($a2)
/* f0295c4: 8fa70040 */ lw $a3,0x40($sp)
/* f0295c8: 0fc0a386 */ jal func0f028e18
/* f0295cc: 8da50000 */ lw $a1,0x0($t5)
/* f0295d0: 10000004 */ b .L0f0295e4
/* f0295d4: afa2003c */ sw $v0,0x3c($sp)
/* f0295d8: 8c840020 */ lw $a0,0x20($a0)
.L0f0295dc:
/* f0295dc: 5480fff0 */ bnezl $a0,.L0f0295a0
/* f0295e0: 8c860018 */ lw $a2,0x18($a0)
.L0f0295e4:
/* f0295e4: 8fbf001c */ lw $ra,0x1c($sp)
.L0f0295e8:
/* f0295e8: 8fa2003c */ lw $v0,0x3c($sp)
/* f0295ec: 27bd0040 */ addiu $sp,$sp,0x40
/* f0295f0: 03e00008 */ jr $ra
/* f0295f4: 00000000 */ nop
);
s32 func0f0294cc(struct prop *prop, s32 arg1)
{
s32 result = -1;
struct prop *child;
struct prop *prop2;
struct modelnode *node2;
struct model *model2;
if (func0f028e6c(arg1, prop, &prop2, &node2, &model2) && node2) {
struct modelnode *node3 = model0001a85c(node2);
if (node3) {
result = func0f028e18(prop2, node3, model2, prop);
} else if (model0001a784(node2) == NULL && prop2->parent) {
child = prop2->parent->child;
while (child && child != prop2) {
child = child->next;
}
if (child) {
child = child->next;
while (child) {
struct model *parent = child->parentmodel;
if (parent->attachedtomodel == model2->attachedtomodel) {
if (parent->attachedtonode == model2->attachedtonode) {
result = func0f028e18(child, parent->filedata->rootnode, parent, prop);
break;
}
}
child = child->next;
}
}
}
}
return result;
}
void func0f0295f8(f32 arg0, s32 *arg1, s32 *arg2, s32 *arg3)
{