prime/asm/WorldFormat/CAreaOctTree.s

554 lines
26 KiB
ArmAsm
Raw Normal View History

.include "macros.inc"
.section .data
.balign 8
.global lbl_803EC408
lbl_803EC408:
# ROM: 0x3E9408
.4byte lbl_802A2EE0
.4byte lbl_802A2EF0
.4byte lbl_802A2F30
.4byte lbl_802A2F70
.4byte lbl_802A2FB0
.4byte lbl_802A2FF0
.4byte lbl_802A3030
.4byte lbl_802A3070
.section .text, "ax"
.global GetTriangleEdgeIndices__12CAreaOctTreeCFUs
GetTriangleEdgeIndices__12CAreaOctTreeCFUs:
/* 802A2970 0029F8D0 54 80 04 3E */ clrlwi r0, r4, 0x10
/* 802A2974 0029F8D4 80 63 00 44 */ lwz r3, 0x44(r3)
/* 802A2978 0029F8D8 1C 00 00 06 */ mulli r0, r0, 6
/* 802A297C 0029F8DC 7C 63 02 14 */ add r3, r3, r0
/* 802A2980 0029F8E0 4E 80 00 20 */ blr
.global GetTriangleVertexIndices__12CAreaOctTreeCFUsPUs
GetTriangleVertexIndices__12CAreaOctTreeCFUsPUs:
/* 802A2984 0029F8E4 54 80 04 3E */ clrlwi r0, r4, 0x10
/* 802A2988 0029F8E8 81 03 00 44 */ lwz r8, 0x44(r3)
/* 802A298C 0029F8EC 1C 00 00 03 */ mulli r0, r0, 3
/* 802A2990 0029F8F0 81 23 00 3C */ lwz r9, 0x3c(r3)
/* 802A2994 0029F8F4 38 C0 00 00 */ li r6, 0
/* 802A2998 0029F8F8 54 00 08 3C */ slwi r0, r0, 1
/* 802A299C 0029F8FC 7C E8 02 14 */ add r7, r8, r0
/* 802A29A0 0029F900 7D 08 02 2E */ lhzx r8, r8, r0
/* 802A29A4 0029F904 A0 07 00 02 */ lhz r0, 2(r7)
/* 802A29A8 0029F908 55 07 13 BA */ rlwinm r7, r8, 2, 0xe, 0x1d
/* 802A29AC 0029F90C 54 00 13 BA */ rlwinm r0, r0, 2, 0xe, 0x1d
/* 802A29B0 0029F910 7D 09 3A 14 */ add r8, r9, r7
/* 802A29B4 0029F914 7D 29 02 14 */ add r9, r9, r0
/* 802A29B8 0029F918 A0 08 00 00 */ lhz r0, 0(r8)
/* 802A29BC 0029F91C A0 E9 00 00 */ lhz r7, 0(r9)
/* 802A29C0 0029F920 7C 07 00 40 */ cmplw r7, r0
/* 802A29C4 0029F924 41 82 00 14 */ beq lbl_802A29D8
/* 802A29C8 0029F928 A0 08 00 02 */ lhz r0, 2(r8)
/* 802A29CC 0029F92C 7C 07 00 40 */ cmplw r7, r0
/* 802A29D0 0029F930 41 82 00 08 */ beq lbl_802A29D8
/* 802A29D4 0029F934 38 C0 00 01 */ li r6, 1
lbl_802A29D8:
/* 802A29D8 0029F938 54 C0 06 3F */ clrlwi. r0, r6, 0x18
/* 802A29DC 0029F93C 41 82 00 08 */ beq lbl_802A29E4
/* 802A29E0 0029F940 48 00 00 08 */ b lbl_802A29E8
lbl_802A29E4:
/* 802A29E4 0029F944 A0 E9 00 02 */ lhz r7, 2(r9)
lbl_802A29E8:
/* 802A29E8 0029F948 B0 E5 00 04 */ sth r7, 4(r5)
/* 802A29EC 0029F94C 54 80 04 3E */ clrlwi r0, r4, 0x10
/* 802A29F0 0029F950 80 83 00 34 */ lwz r4, 0x34(r3)
/* 802A29F4 0029F954 80 63 00 28 */ lwz r3, 0x28(r3)
/* 802A29F8 0029F958 7C 04 00 AE */ lbzx r0, r4, r0
/* 802A29FC 0029F95C 54 00 10 3A */ slwi r0, r0, 2
/* 802A2A00 0029F960 7C 03 00 2E */ lwzx r0, r3, r0
/* 802A2A04 0029F964 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6
/* 802A2A08 0029F968 41 82 00 18 */ beq lbl_802A2A20
/* 802A2A0C 0029F96C A0 08 00 02 */ lhz r0, 2(r8)
/* 802A2A10 0029F970 B0 05 00 00 */ sth r0, 0(r5)
/* 802A2A14 0029F974 A0 08 00 00 */ lhz r0, 0(r8)
/* 802A2A18 0029F978 B0 05 00 02 */ sth r0, 2(r5)
/* 802A2A1C 0029F97C 4E 80 00 20 */ blr
lbl_802A2A20:
/* 802A2A20 0029F980 A0 08 00 00 */ lhz r0, 0(r8)
/* 802A2A24 0029F984 B0 05 00 00 */ sth r0, 0(r5)
/* 802A2A28 0029F988 A0 08 00 02 */ lhz r0, 2(r8)
/* 802A2A2C 0029F98C B0 05 00 02 */ sth r0, 2(r5)
/* 802A2A30 0029F990 4E 80 00 20 */ blr
.global GetMasterListTriangle__12CAreaOctTreeCFUs
GetMasterListTriangle__12CAreaOctTreeCFUs:
/* 802A2A34 0029F994 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802A2A38 0029F998 7C 08 02 A6 */ mflr r0
/* 802A2A3C 0029F99C 38 C0 00 00 */ li r6, 0
/* 802A2A40 0029F9A0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802A2A44 0029F9A4 54 A0 04 3E */ clrlwi r0, r5, 0x10
/* 802A2A48 0029F9A8 1C 00 00 03 */ mulli r0, r0, 3
/* 802A2A4C 0029F9AC 81 04 00 44 */ lwz r8, 0x44(r4)
/* 802A2A50 0029F9B0 81 24 00 3C */ lwz r9, 0x3c(r4)
/* 802A2A54 0029F9B4 54 00 08 3C */ slwi r0, r0, 1
/* 802A2A58 0029F9B8 7C E8 02 14 */ add r7, r8, r0
/* 802A2A5C 0029F9BC 7D 08 02 2E */ lhzx r8, r8, r0
/* 802A2A60 0029F9C0 A0 07 00 02 */ lhz r0, 2(r7)
/* 802A2A64 0029F9C4 55 07 13 BA */ rlwinm r7, r8, 2, 0xe, 0x1d
/* 802A2A68 0029F9C8 54 00 13 BA */ rlwinm r0, r0, 2, 0xe, 0x1d
/* 802A2A6C 0029F9CC 7D 49 3A 14 */ add r10, r9, r7
/* 802A2A70 0029F9D0 7C E9 02 14 */ add r7, r9, r0
/* 802A2A74 0029F9D4 A1 2A 00 00 */ lhz r9, 0(r10)
/* 802A2A78 0029F9D8 A1 07 00 00 */ lhz r8, 0(r7)
/* 802A2A7C 0029F9DC 7C 08 48 40 */ cmplw r8, r9
/* 802A2A80 0029F9E0 41 82 00 14 */ beq lbl_802A2A94
/* 802A2A84 0029F9E4 A0 0A 00 02 */ lhz r0, 2(r10)
/* 802A2A88 0029F9E8 7C 08 00 40 */ cmplw r8, r0
/* 802A2A8C 0029F9EC 41 82 00 08 */ beq lbl_802A2A94
/* 802A2A90 0029F9F0 38 C0 00 01 */ li r6, 1
lbl_802A2A94:
/* 802A2A94 0029F9F4 54 C0 06 3F */ clrlwi. r0, r6, 0x18
/* 802A2A98 0029F9F8 41 82 00 08 */ beq lbl_802A2AA0
/* 802A2A9C 0029F9FC 48 00 00 08 */ b lbl_802A2AA4
lbl_802A2AA0:
/* 802A2AA0 0029FA00 A1 07 00 02 */ lhz r8, 2(r7)
lbl_802A2AA4:
/* 802A2AA4 0029FA04 80 C4 00 34 */ lwz r6, 0x34(r4)
/* 802A2AA8 0029FA08 54 A0 04 3E */ clrlwi r0, r5, 0x10
/* 802A2AAC 0029FA0C 80 A4 00 28 */ lwz r5, 0x28(r4)
/* 802A2AB0 0029FA10 7C 06 00 AE */ lbzx r0, r6, r0
/* 802A2AB4 0029FA14 54 00 10 3A */ slwi r0, r0, 2
/* 802A2AB8 0029FA18 7C E5 00 2E */ lwzx r7, r5, r0
/* 802A2ABC 0029FA1C 54 E0 01 8D */ rlwinm. r0, r7, 0, 6, 6
/* 802A2AC0 0029FA20 41 82 00 30 */ beq lbl_802A2AF0
/* 802A2AC4 0029FA24 A0 CA 00 02 */ lhz r6, 2(r10)
/* 802A2AC8 0029FA28 55 00 04 3E */ clrlwi r0, r8, 0x10
/* 802A2ACC 0029FA2C 81 04 00 4C */ lwz r8, 0x4c(r4)
/* 802A2AD0 0029FA30 1C A9 00 0C */ mulli r5, r9, 0xc
/* 802A2AD4 0029FA34 1C 86 00 0C */ mulli r4, r6, 0xc
/* 802A2AD8 0029FA38 7C A8 2A 14 */ add r5, r8, r5
/* 802A2ADC 0029FA3C 1C 00 00 0C */ mulli r0, r0, 0xc
/* 802A2AE0 0029FA40 7C 88 22 14 */ add r4, r8, r4
/* 802A2AE4 0029FA44 7C C8 02 14 */ add r6, r8, r0
/* 802A2AE8 0029FA48 4B FF FC 41 */ bl __ct__17CCollisionSurfaceFRC9CVector3fRC9CVector3fRC9CVector3fUi
/* 802A2AEC 0029FA4C 48 00 00 2C */ b lbl_802A2B18
lbl_802A2AF0:
/* 802A2AF0 0029FA50 A0 AA 00 02 */ lhz r5, 2(r10)
/* 802A2AF4 0029FA54 55 00 04 3E */ clrlwi r0, r8, 0x10
/* 802A2AF8 0029FA58 1C C9 00 0C */ mulli r6, r9, 0xc
/* 802A2AFC 0029FA5C 81 04 00 4C */ lwz r8, 0x4c(r4)
/* 802A2B00 0029FA60 1C A5 00 0C */ mulli r5, r5, 0xc
/* 802A2B04 0029FA64 7C 88 32 14 */ add r4, r8, r6
/* 802A2B08 0029FA68 1C 00 00 0C */ mulli r0, r0, 0xc
/* 802A2B0C 0029FA6C 7C A8 2A 14 */ add r5, r8, r5
/* 802A2B10 0029FA70 7C C8 02 14 */ add r6, r8, r0
/* 802A2B14 0029FA74 4B FF FC 15 */ bl __ct__17CCollisionSurfaceFRC9CVector3fRC9CVector3fRC9CVector3fUi
lbl_802A2B18:
/* 802A2B18 0029FA78 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802A2B1C 0029FA7C 7C 08 03 A6 */ mtlr r0
/* 802A2B20 0029FA80 38 21 00 10 */ addi r1, r1, 0x10
/* 802A2B24 0029FA84 4E 80 00 20 */ blr
.global MakeFromMemory__12CAreaOctTreeFPvUiPP12CAreaOctTreePb
MakeFromMemory__12CAreaOctTreeFPvUiPP12CAreaOctTreePb:
/* 802A2B28 0029FA88 94 21 FF 50 */ stwu r1, -0xb0(r1)
/* 802A2B2C 0029FA8C 7C 08 02 A6 */ mflr r0
/* 802A2B30 0029FA90 90 01 00 B4 */ stw r0, 0xb4(r1)
/* 802A2B34 0029FA94 7C 80 23 78 */ mr r0, r4
/* 802A2B38 0029FA98 BE 01 00 70 */ stmw r16, 0x70(r1)
/* 802A2B3C 0029FA9C 7C 7D 1B 78 */ mr r29, r3
/* 802A2B40 0029FAA0 7C BE 2B 78 */ mr r30, r5
/* 802A2B44 0029FAA4 7C DF 33 78 */ mr r31, r6
/* 802A2B48 0029FAA8 7F A4 EB 78 */ mr r4, r29
/* 802A2B4C 0029FAAC 7C 05 03 78 */ mr r5, r0
/* 802A2B50 0029FAB0 38 61 00 40 */ addi r3, r1, 0x40
/* 802A2B54 0029FAB4 38 C0 00 01 */ li r6, 1
/* 802A2B58 0029FAB8 48 09 C6 B5 */ bl __ct__15CMemoryInStreamFPCvUlQ215CMemoryInStream10EOwnerShip
/* 802A2B5C 0029FABC 38 61 00 40 */ addi r3, r1, 0x40
/* 802A2B60 0029FAC0 48 09 C1 25 */ bl ReadLong__12CInputStreamFv
/* 802A2B64 0029FAC4 38 61 00 40 */ addi r3, r1, 0x40
/* 802A2B68 0029FAC8 48 09 C1 1D */ bl ReadLong__12CInputStreamFv
/* 802A2B6C 0029FACC 38 61 00 28 */ addi r3, r1, 0x28
/* 802A2B70 0029FAD0 38 81 00 40 */ addi r4, r1, 0x40
/* 802A2B74 0029FAD4 48 09 59 C9 */ bl __ct__6CAABoxFR12CInputStream
/* 802A2B78 0029FAD8 38 61 00 40 */ addi r3, r1, 0x40
/* 802A2B7C 0029FADC 48 09 C1 09 */ bl ReadLong__12CInputStreamFv
/* 802A2B80 0029FAE0 7C 60 1B 78 */ mr r0, r3
/* 802A2B84 0029FAE4 38 61 00 40 */ addi r3, r1, 0x40
/* 802A2B88 0029FAE8 7C 1C 03 78 */ mr r28, r0
/* 802A2B8C 0029FAEC 48 09 C0 F9 */ bl ReadLong__12CInputStreamFv
/* 802A2B90 0029FAF0 80 01 00 58 */ lwz r0, 0x58(r1)
/* 802A2B94 0029FAF4 3C C0 AA AB */ lis r6, 0xAAAAAAAB@ha
/* 802A2B98 0029FAF8 3C 80 80 3D */ lis r4, lbl_803D6020@ha
/* 802A2B9C 0029FAFC 38 A0 00 00 */ li r5, 0
/* 802A2BA0 0029FB00 7F 7D 02 14 */ add r27, r29, r0
/* 802A2BA4 0029FB04 38 C6 AA AB */ addi r6, r6, 0xAAAAAAAB@l
/* 802A2BA8 0029FB08 7C 7B 1A 14 */ add r3, r27, r3
/* 802A2BAC 0029FB0C 38 84 60 20 */ addi r4, r4, lbl_803D6020@l
/* 802A2BB0 0029FB10 83 43 00 00 */ lwz r26, 0(r3)
/* 802A2BB4 0029FB14 3B 23 00 04 */ addi r25, r3, 4
/* 802A2BB8 0029FB18 38 60 00 50 */ li r3, 0x50
/* 802A2BBC 0029FB1C 57 40 10 3A */ slwi r0, r26, 2
/* 802A2BC0 0029FB20 7C F9 02 14 */ add r7, r25, r0
/* 802A2BC4 0029FB24 80 07 00 00 */ lwz r0, 0(r7)
/* 802A2BC8 0029FB28 3B 07 00 04 */ addi r24, r7, 4
/* 802A2BCC 0029FB2C 7C F8 02 14 */ add r7, r24, r0
/* 802A2BD0 0029FB30 80 07 00 00 */ lwz r0, 0(r7)
/* 802A2BD4 0029FB34 3A E7 00 04 */ addi r23, r7, 4
/* 802A2BD8 0029FB38 7C F7 02 14 */ add r7, r23, r0
/* 802A2BDC 0029FB3C 80 07 00 00 */ lwz r0, 0(r7)
/* 802A2BE0 0029FB40 3A C7 00 04 */ addi r22, r7, 4
/* 802A2BE4 0029FB44 7C F6 02 14 */ add r7, r22, r0
/* 802A2BE8 0029FB48 82 A7 00 00 */ lwz r21, 0(r7)
/* 802A2BEC 0029FB4C 3A 87 00 04 */ addi r20, r7, 4
/* 802A2BF0 0029FB50 56 A0 10 3A */ slwi r0, r21, 2
/* 802A2BF4 0029FB54 7C F4 02 14 */ add r7, r20, r0
/* 802A2BF8 0029FB58 80 07 00 00 */ lwz r0, 0(r7)
/* 802A2BFC 0029FB5C 3A 47 00 04 */ addi r18, r7, 4
/* 802A2C00 0029FB60 7C 06 00 16 */ mulhwu r0, r6, r0
/* 802A2C04 0029FB64 54 13 F8 7E */ srwi r19, r0, 1
/* 802A2C08 0029FB68 1C 13 00 06 */ mulli r0, r19, 6
/* 802A2C0C 0029FB6C 7C D2 02 14 */ add r6, r18, r0
/* 802A2C10 0029FB70 82 26 00 00 */ lwz r17, 0(r6)
/* 802A2C14 0029FB74 3A 06 00 04 */ addi r16, r6, 4
/* 802A2C18 0029FB78 48 07 2C 55 */ bl __nw__FUlPCcPCc
/* 802A2C1C 0029FB7C 7C 60 1B 79 */ or. r0, r3, r3
/* 802A2C20 0029FB80 41 82 00 48 */ beq lbl_802A2C68
/* 802A2C24 0029FB84 92 E1 00 08 */ stw r23, 8(r1)
/* 802A2C28 0029FB88 7F 85 E3 78 */ mr r5, r28
/* 802A2C2C 0029FB8C 7F A6 EB 78 */ mr r6, r29
/* 802A2C30 0029FB90 7F 67 DB 78 */ mr r7, r27
/* 802A2C34 0029FB94 92 C1 00 0C */ stw r22, 0xc(r1)
/* 802A2C38 0029FB98 7F 48 D3 78 */ mr r8, r26
/* 802A2C3C 0029FB9C 7F 29 CB 78 */ mr r9, r25
/* 802A2C40 0029FBA0 7F 0A C3 78 */ mr r10, r24
/* 802A2C44 0029FBA4 92 A1 00 10 */ stw r21, 0x10(r1)
/* 802A2C48 0029FBA8 38 81 00 28 */ addi r4, r1, 0x28
/* 802A2C4C 0029FBAC 92 81 00 14 */ stw r20, 0x14(r1)
/* 802A2C50 0029FBB0 92 61 00 18 */ stw r19, 0x18(r1)
/* 802A2C54 0029FBB4 92 41 00 1C */ stw r18, 0x1c(r1)
/* 802A2C58 0029FBB8 92 21 00 20 */ stw r17, 0x20(r1)
/* 802A2C5C 0029FBBC 92 01 00 24 */ stw r16, 0x24(r1)
/* 802A2C60 0029FBC0 48 00 00 41 */ bl __ct__12CAreaOctTreeFRC6CAABoxQ312CAreaOctTree4Node9ETreeTypePUcPvUiPUiPUcPUcPUcUiP14CCollisionEdgeUiPUsUiP9CVector3f
/* 802A2C64 0029FBC4 7C 60 1B 78 */ mr r0, r3
lbl_802A2C68:
/* 802A2C68 0029FBC8 90 1E 00 00 */ stw r0, 0(r30)
/* 802A2C6C 0029FBCC 38 00 00 01 */ li r0, 1
/* 802A2C70 0029FBD0 3C 80 80 3F */ lis r4, __vt__15CMemoryInStream@ha
/* 802A2C74 0029FBD4 38 61 00 40 */ addi r3, r1, 0x40
/* 802A2C78 0029FBD8 98 1F 00 00 */ stb r0, 0(r31)
/* 802A2C7C 0029FBDC 38 04 E3 98 */ addi r0, r4, __vt__15CMemoryInStream@l
/* 802A2C80 0029FBE0 38 80 00 00 */ li r4, 0
/* 802A2C84 0029FBE4 90 01 00 40 */ stw r0, 0x40(r1)
/* 802A2C88 0029FBE8 48 09 C4 25 */ bl __dt__12CInputStreamFv
/* 802A2C8C 0029FBEC BA 01 00 70 */ lmw r16, 0x70(r1)
/* 802A2C90 0029FBF0 80 01 00 B4 */ lwz r0, 0xb4(r1)
/* 802A2C94 0029FBF4 7C 08 03 A6 */ mtlr r0
/* 802A2C98 0029FBF8 38 21 00 B0 */ addi r1, r1, 0xb0
/* 802A2C9C 0029FBFC 4E 80 00 20 */ blr
.global __ct__12CAreaOctTreeFRC6CAABoxQ312CAreaOctTree4Node9ETreeTypePUcPvUiPUiPUcPUcPUcUiP14CCollisionEdgeUiPUsUiP9CVector3f
__ct__12CAreaOctTreeFRC6CAABoxQ312CAreaOctTree4Node9ETreeTypePUcPvUiPUiPUcPUcPUcUiP14CCollisionEdgeUiPUsUiP9CVector3f:
/* 802A2CA0 0029FC00 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802A2CA4 0029FC04 BF 61 00 0C */ stmw r27, 0xc(r1)
/* 802A2CA8 0029FC08 83 61 00 28 */ lwz r27, 0x28(r1)
/* 802A2CAC 0029FC0C 83 81 00 2C */ lwz r28, 0x2c(r1)
/* 802A2CB0 0029FC10 83 A1 00 30 */ lwz r29, 0x30(r1)
/* 802A2CB4 0029FC14 83 C1 00 34 */ lwz r30, 0x34(r1)
/* 802A2CB8 0029FC18 83 E1 00 38 */ lwz r31, 0x38(r1)
/* 802A2CBC 0029FC1C 81 81 00 3C */ lwz r12, 0x3c(r1)
/* 802A2CC0 0029FC20 C0 04 00 00 */ lfs f0, 0(r4)
/* 802A2CC4 0029FC24 81 61 00 40 */ lwz r11, 0x40(r1)
/* 802A2CC8 0029FC28 D0 03 00 00 */ stfs f0, 0(r3)
/* 802A2CCC 0029FC2C 80 01 00 44 */ lwz r0, 0x44(r1)
/* 802A2CD0 0029FC30 C0 04 00 04 */ lfs f0, 4(r4)
/* 802A2CD4 0029FC34 D0 03 00 04 */ stfs f0, 4(r3)
/* 802A2CD8 0029FC38 C0 04 00 08 */ lfs f0, 8(r4)
/* 802A2CDC 0029FC3C D0 03 00 08 */ stfs f0, 8(r3)
/* 802A2CE0 0029FC40 C0 04 00 0C */ lfs f0, 0xc(r4)
/* 802A2CE4 0029FC44 D0 03 00 0C */ stfs f0, 0xc(r3)
/* 802A2CE8 0029FC48 C0 04 00 10 */ lfs f0, 0x10(r4)
/* 802A2CEC 0029FC4C D0 03 00 10 */ stfs f0, 0x10(r3)
/* 802A2CF0 0029FC50 C0 04 00 14 */ lfs f0, 0x14(r4)
/* 802A2CF4 0029FC54 D0 03 00 14 */ stfs f0, 0x14(r3)
/* 802A2CF8 0029FC58 90 A3 00 18 */ stw r5, 0x18(r3)
/* 802A2CFC 0029FC5C 90 C3 00 1C */ stw r6, 0x1c(r3)
/* 802A2D00 0029FC60 90 E3 00 20 */ stw r7, 0x20(r3)
/* 802A2D04 0029FC64 91 03 00 24 */ stw r8, 0x24(r3)
/* 802A2D08 0029FC68 91 23 00 28 */ stw r9, 0x28(r3)
/* 802A2D0C 0029FC6C 91 43 00 2C */ stw r10, 0x2c(r3)
/* 802A2D10 0029FC70 93 63 00 30 */ stw r27, 0x30(r3)
/* 802A2D14 0029FC74 93 83 00 34 */ stw r28, 0x34(r3)
/* 802A2D18 0029FC78 93 A3 00 38 */ stw r29, 0x38(r3)
/* 802A2D1C 0029FC7C 93 C3 00 3C */ stw r30, 0x3c(r3)
/* 802A2D20 0029FC80 93 E3 00 40 */ stw r31, 0x40(r3)
/* 802A2D24 0029FC84 91 83 00 44 */ stw r12, 0x44(r3)
/* 802A2D28 0029FC88 91 63 00 48 */ stw r11, 0x48(r3)
/* 802A2D2C 0029FC8C 90 03 00 4C */ stw r0, 0x4c(r3)
/* 802A2D30 0029FC90 BB 61 00 0C */ lmw r27, 0xc(r1)
/* 802A2D34 0029FC94 38 21 00 20 */ addi r1, r1, 0x20
/* 802A2D38 0029FC98 4E 80 00 20 */ blr
.global GetTriangleArray__Q212CAreaOctTree4NodeCFv
GetTriangleArray__Q212CAreaOctTree4NodeCFv:
/* 802A2D3C 0029FC9C 80 04 00 20 */ lwz r0, 0x20(r4)
/* 802A2D40 0029FCA0 2C 00 00 02 */ cmpwi r0, 2
/* 802A2D44 0029FCA4 41 82 00 10 */ beq lbl_802A2D54
/* 802A2D48 0029FCA8 38 02 C1 40 */ addi r0, r2, lbl_805ADE60@sda21
/* 802A2D4C 0029FCAC 90 03 00 00 */ stw r0, 0(r3)
/* 802A2D50 0029FCB0 4E 80 00 20 */ blr
lbl_802A2D54:
/* 802A2D54 0029FCB4 80 04 00 18 */ lwz r0, 0x18(r4)
/* 802A2D58 0029FCB8 90 03 00 00 */ stw r0, 0(r3)
/* 802A2D5C 0029FCBC 4E 80 00 20 */ blr
.global GetChild__Q212CAreaOctTree4NodeCFi
GetChild__Q212CAreaOctTree4NodeCFi:
/* 802A2D60 0029FCC0 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 802A2D64 0029FCC4 7C 08 02 A6 */ mflr r0
/* 802A2D68 0029FCC8 90 01 00 44 */ stw r0, 0x44(r1)
/* 802A2D6C 0029FCCC 54 A0 10 3A */ slwi r0, r5, 2
/* 802A2D70 0029FCD0 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 802A2D74 0029FCD4 93 C1 00 38 */ stw r30, 0x38(r1)
/* 802A2D78 0029FCD8 93 A1 00 34 */ stw r29, 0x34(r1)
/* 802A2D7C 0029FCDC 7C 9D 23 78 */ mr r29, r4
/* 802A2D80 0029FCE0 93 81 00 30 */ stw r28, 0x30(r1)
/* 802A2D84 0029FCE4 7C 7C 1B 78 */ mr r28, r3
/* 802A2D88 0029FCE8 80 E4 00 18 */ lwz r7, 0x18(r4)
/* 802A2D8C 0029FCEC 54 A4 08 3C */ slwi r4, r5, 1
/* 802A2D90 0029FCF0 A0 C7 00 00 */ lhz r6, 0(r7)
/* 802A2D94 0029FCF4 7C 67 02 14 */ add r3, r7, r0
/* 802A2D98 0029FCF8 80 63 00 04 */ lwz r3, 4(r3)
/* 802A2D9C 0029FCFC 7C C0 26 30 */ sraw r0, r6, r4
/* 802A2DA0 0029FD00 54 1F 07 BE */ clrlwi r31, r0, 0x1e
/* 802A2DA4 0029FD04 3B C3 00 24 */ addi r30, r3, 0x24
/* 802A2DA8 0029FD08 2C 1F 00 02 */ cmpwi r31, 2
/* 802A2DAC 0029FD0C 7F C7 F2 14 */ add r30, r7, r30
/* 802A2DB0 0029FD10 40 82 00 48 */ bne lbl_802A2DF8
/* 802A2DB4 0029FD14 C0 3E 00 04 */ lfs f1, 4(r30)
/* 802A2DB8 0029FD18 C0 5E 00 08 */ lfs f2, 8(r30)
/* 802A2DBC 0029FD1C C0 7E 00 0C */ lfs f3, 0xc(r30)
/* 802A2DC0 0029FD20 C0 9E 00 10 */ lfs f4, 0x10(r30)
/* 802A2DC4 0029FD24 C0 BE 00 14 */ lfs f5, 0x14(r30)
/* 802A2DC8 0029FD28 80 1D 00 1C */ lwz r0, 0x1c(r29)
/* 802A2DCC 0029FD2C C0 1E 00 00 */ lfs f0, 0(r30)
/* 802A2DD0 0029FD30 D0 1C 00 00 */ stfs f0, 0(r28)
/* 802A2DD4 0029FD34 D0 3C 00 04 */ stfs f1, 4(r28)
/* 802A2DD8 0029FD38 D0 5C 00 08 */ stfs f2, 8(r28)
/* 802A2DDC 0029FD3C D0 7C 00 0C */ stfs f3, 0xc(r28)
/* 802A2DE0 0029FD40 D0 9C 00 10 */ stfs f4, 0x10(r28)
/* 802A2DE4 0029FD44 D0 BC 00 14 */ stfs f5, 0x14(r28)
/* 802A2DE8 0029FD48 93 DC 00 18 */ stw r30, 0x18(r28)
/* 802A2DEC 0029FD4C 90 1C 00 1C */ stw r0, 0x1c(r28)
/* 802A2DF0 0029FD50 93 FC 00 20 */ stw r31, 0x20(r28)
/* 802A2DF4 0029FD54 48 00 00 9C */ b lbl_802A2E90
lbl_802A2DF8:
/* 802A2DF8 0029FD58 C0 7D 00 04 */ lfs f3, 4(r29)
/* 802A2DFC 0029FD5C 7C A4 2B 78 */ mr r4, r5
/* 802A2E00 0029FD60 C0 5D 00 10 */ lfs f2, 0x10(r29)
/* 802A2E04 0029FD64 38 FD 00 0C */ addi r7, r29, 0xc
/* 802A2E08 0029FD68 C0 3D 00 08 */ lfs f1, 8(r29)
/* 802A2E0C 0029FD6C 7F A5 EB 78 */ mr r5, r29
/* 802A2E10 0029FD70 C0 1D 00 14 */ lfs f0, 0x14(r29)
/* 802A2E14 0029FD74 EC 63 10 2A */ fadds f3, f3, f2
/* 802A2E18 0029FD78 C0 82 C1 44 */ lfs f4, lbl_805ADE64@sda21(r2)
/* 802A2E1C 0029FD7C 38 61 00 14 */ addi r3, r1, 0x14
/* 802A2E20 0029FD80 EC 41 00 2A */ fadds f2, f1, f0
/* 802A2E24 0029FD84 C0 3D 00 00 */ lfs f1, 0(r29)
/* 802A2E28 0029FD88 C0 1D 00 0C */ lfs f0, 0xc(r29)
/* 802A2E2C 0029FD8C EC 64 00 F2 */ fmuls f3, f4, f3
/* 802A2E30 0029FD90 38 C1 00 08 */ addi r6, r1, 8
/* 802A2E34 0029FD94 EC 01 00 2A */ fadds f0, f1, f0
/* 802A2E38 0029FD98 EC 24 00 B2 */ fmuls f1, f4, f2
/* 802A2E3C 0029FD9C D0 61 00 0C */ stfs f3, 0xc(r1)
/* 802A2E40 0029FDA0 EC 04 00 32 */ fmuls f0, f4, f0
/* 802A2E44 0029FDA4 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 802A2E48 0029FDA8 D0 01 00 08 */ stfs f0, 8(r1)
/* 802A2E4C 0029FDAC 48 00 00 65 */ bl BoxFromIndex__FiRC9CVector3fRC9CVector3fRC9CVector3f
/* 802A2E50 0029FDB0 C0 21 00 18 */ lfs f1, 0x18(r1)
/* 802A2E54 0029FDB4 C0 41 00 1C */ lfs f2, 0x1c(r1)
/* 802A2E58 0029FDB8 C0 61 00 20 */ lfs f3, 0x20(r1)
/* 802A2E5C 0029FDBC C0 81 00 24 */ lfs f4, 0x24(r1)
/* 802A2E60 0029FDC0 C0 A1 00 28 */ lfs f5, 0x28(r1)
/* 802A2E64 0029FDC4 80 1D 00 1C */ lwz r0, 0x1c(r29)
/* 802A2E68 0029FDC8 C0 01 00 14 */ lfs f0, 0x14(r1)
/* 802A2E6C 0029FDCC D0 1C 00 00 */ stfs f0, 0(r28)
/* 802A2E70 0029FDD0 D0 3C 00 04 */ stfs f1, 4(r28)
/* 802A2E74 0029FDD4 D0 5C 00 08 */ stfs f2, 8(r28)
/* 802A2E78 0029FDD8 D0 7C 00 0C */ stfs f3, 0xc(r28)
/* 802A2E7C 0029FDDC D0 9C 00 10 */ stfs f4, 0x10(r28)
/* 802A2E80 0029FDE0 D0 BC 00 14 */ stfs f5, 0x14(r28)
/* 802A2E84 0029FDE4 93 DC 00 18 */ stw r30, 0x18(r28)
/* 802A2E88 0029FDE8 90 1C 00 1C */ stw r0, 0x1c(r28)
/* 802A2E8C 0029FDEC 93 FC 00 20 */ stw r31, 0x20(r28)
lbl_802A2E90:
/* 802A2E90 0029FDF0 80 01 00 44 */ lwz r0, 0x44(r1)
/* 802A2E94 0029FDF4 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 802A2E98 0029FDF8 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 802A2E9C 0029FDFC 83 A1 00 34 */ lwz r29, 0x34(r1)
/* 802A2EA0 0029FE00 83 81 00 30 */ lwz r28, 0x30(r1)
/* 802A2EA4 0029FE04 7C 08 03 A6 */ mtlr r0
/* 802A2EA8 0029FE08 38 21 00 40 */ addi r1, r1, 0x40
/* 802A2EAC 0029FE0C 4E 80 00 20 */ blr
.global BoxFromIndex__FiRC9CVector3fRC9CVector3fRC9CVector3f
BoxFromIndex__FiRC9CVector3fRC9CVector3fRC9CVector3f:
/* 802A2EB0 0029FE10 94 21 FF 60 */ stwu r1, -0xa0(r1)
/* 802A2EB4 0029FE14 7C 08 02 A6 */ mflr r0
/* 802A2EB8 0029FE18 28 04 00 07 */ cmplwi r4, 7
/* 802A2EBC 0029FE1C 7C A8 2B 78 */ mr r8, r5
/* 802A2EC0 0029FE20 90 01 00 A4 */ stw r0, 0xa4(r1)
/* 802A2EC4 0029FE24 41 81 01 BC */ bgt lbl_802A3080
/* 802A2EC8 0029FE28 3C A0 80 3F */ lis r5, lbl_803EC408@ha
/* 802A2ECC 0029FE2C 54 80 10 3A */ slwi r0, r4, 2
/* 802A2ED0 0029FE30 38 85 C4 08 */ addi r4, r5, lbl_803EC408@l
/* 802A2ED4 0029FE34 7C 04 00 2E */ lwzx r0, r4, r0
/* 802A2ED8 0029FE38 7C 09 03 A6 */ mtctr r0
/* 802A2EDC 0029FE3C 4E 80 04 20 */ bctr
.global lbl_802A2EE0
lbl_802A2EE0:
/* 802A2EE0 0029FE40 7D 04 43 78 */ mr r4, r8
/* 802A2EE4 0029FE44 7C C5 33 78 */ mr r5, r6
/* 802A2EE8 0029FE48 48 09 56 21 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A2EEC 0029FE4C 48 00 01 A0 */ b lbl_802A308C
.global lbl_802A2EF0
lbl_802A2EF0:
/* 802A2EF0 0029FE50 C0 46 00 08 */ lfs f2, 8(r6)
/* 802A2EF4 0029FE54 38 81 00 8C */ addi r4, r1, 0x8c
/* 802A2EF8 0029FE58 C0 66 00 04 */ lfs f3, 4(r6)
/* 802A2EFC 0029FE5C 38 A1 00 80 */ addi r5, r1, 0x80
/* 802A2F00 0029FE60 C0 27 00 00 */ lfs f1, 0(r7)
/* 802A2F04 0029FE64 C0 88 00 08 */ lfs f4, 8(r8)
/* 802A2F08 0029FE68 C0 A8 00 04 */ lfs f5, 4(r8)
/* 802A2F0C 0029FE6C C0 06 00 00 */ lfs f0, 0(r6)
/* 802A2F10 0029FE70 D0 21 00 80 */ stfs f1, 0x80(r1)
/* 802A2F14 0029FE74 D0 61 00 84 */ stfs f3, 0x84(r1)
/* 802A2F18 0029FE78 D0 41 00 88 */ stfs f2, 0x88(r1)
/* 802A2F1C 0029FE7C D0 01 00 8C */ stfs f0, 0x8c(r1)
/* 802A2F20 0029FE80 D0 A1 00 90 */ stfs f5, 0x90(r1)
/* 802A2F24 0029FE84 D0 81 00 94 */ stfs f4, 0x94(r1)
/* 802A2F28 0029FE88 48 09 55 E1 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A2F2C 0029FE8C 48 00 01 60 */ b lbl_802A308C
.global lbl_802A2F30
lbl_802A2F30:
/* 802A2F30 0029FE90 C0 46 00 08 */ lfs f2, 8(r6)
/* 802A2F34 0029FE94 38 81 00 74 */ addi r4, r1, 0x74
/* 802A2F38 0029FE98 C0 67 00 04 */ lfs f3, 4(r7)
/* 802A2F3C 0029FE9C 38 A1 00 68 */ addi r5, r1, 0x68
/* 802A2F40 0029FEA0 C0 26 00 00 */ lfs f1, 0(r6)
/* 802A2F44 0029FEA4 C0 88 00 08 */ lfs f4, 8(r8)
/* 802A2F48 0029FEA8 C0 A6 00 04 */ lfs f5, 4(r6)
/* 802A2F4C 0029FEAC C0 08 00 00 */ lfs f0, 0(r8)
/* 802A2F50 0029FEB0 D0 21 00 68 */ stfs f1, 0x68(r1)
/* 802A2F54 0029FEB4 D0 61 00 6C */ stfs f3, 0x6c(r1)
/* 802A2F58 0029FEB8 D0 41 00 70 */ stfs f2, 0x70(r1)
/* 802A2F5C 0029FEBC D0 01 00 74 */ stfs f0, 0x74(r1)
/* 802A2F60 0029FEC0 D0 A1 00 78 */ stfs f5, 0x78(r1)
/* 802A2F64 0029FEC4 D0 81 00 7C */ stfs f4, 0x7c(r1)
/* 802A2F68 0029FEC8 48 09 55 A1 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A2F6C 0029FECC 48 00 01 20 */ b lbl_802A308C
.global lbl_802A2F70
lbl_802A2F70:
/* 802A2F70 0029FED0 C0 46 00 08 */ lfs f2, 8(r6)
/* 802A2F74 0029FED4 38 81 00 5C */ addi r4, r1, 0x5c
/* 802A2F78 0029FED8 C0 67 00 04 */ lfs f3, 4(r7)
/* 802A2F7C 0029FEDC 38 A1 00 50 */ addi r5, r1, 0x50
/* 802A2F80 0029FEE0 C0 27 00 00 */ lfs f1, 0(r7)
/* 802A2F84 0029FEE4 C0 88 00 08 */ lfs f4, 8(r8)
/* 802A2F88 0029FEE8 C0 A6 00 04 */ lfs f5, 4(r6)
/* 802A2F8C 0029FEEC C0 06 00 00 */ lfs f0, 0(r6)
/* 802A2F90 0029FEF0 D0 21 00 50 */ stfs f1, 0x50(r1)
/* 802A2F94 0029FEF4 D0 61 00 54 */ stfs f3, 0x54(r1)
/* 802A2F98 0029FEF8 D0 41 00 58 */ stfs f2, 0x58(r1)
/* 802A2F9C 0029FEFC D0 01 00 5C */ stfs f0, 0x5c(r1)
/* 802A2FA0 0029FF00 D0 A1 00 60 */ stfs f5, 0x60(r1)
/* 802A2FA4 0029FF04 D0 81 00 64 */ stfs f4, 0x64(r1)
/* 802A2FA8 0029FF08 48 09 55 61 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A2FAC 0029FF0C 48 00 00 E0 */ b lbl_802A308C
.global lbl_802A2FB0
lbl_802A2FB0:
/* 802A2FB0 0029FF10 C0 47 00 08 */ lfs f2, 8(r7)
/* 802A2FB4 0029FF14 38 81 00 44 */ addi r4, r1, 0x44
/* 802A2FB8 0029FF18 C0 66 00 04 */ lfs f3, 4(r6)
/* 802A2FBC 0029FF1C 38 A1 00 38 */ addi r5, r1, 0x38
/* 802A2FC0 0029FF20 C0 26 00 00 */ lfs f1, 0(r6)
/* 802A2FC4 0029FF24 C0 86 00 08 */ lfs f4, 8(r6)
/* 802A2FC8 0029FF28 C0 A8 00 04 */ lfs f5, 4(r8)
/* 802A2FCC 0029FF2C C0 08 00 00 */ lfs f0, 0(r8)
/* 802A2FD0 0029FF30 D0 21 00 38 */ stfs f1, 0x38(r1)
/* 802A2FD4 0029FF34 D0 61 00 3C */ stfs f3, 0x3c(r1)
/* 802A2FD8 0029FF38 D0 41 00 40 */ stfs f2, 0x40(r1)
/* 802A2FDC 0029FF3C D0 01 00 44 */ stfs f0, 0x44(r1)
/* 802A2FE0 0029FF40 D0 A1 00 48 */ stfs f5, 0x48(r1)
/* 802A2FE4 0029FF44 D0 81 00 4C */ stfs f4, 0x4c(r1)
/* 802A2FE8 0029FF48 48 09 55 21 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A2FEC 0029FF4C 48 00 00 A0 */ b lbl_802A308C
.global lbl_802A2FF0
lbl_802A2FF0:
/* 802A2FF0 0029FF50 C0 47 00 08 */ lfs f2, 8(r7)
/* 802A2FF4 0029FF54 38 81 00 2C */ addi r4, r1, 0x2c
/* 802A2FF8 0029FF58 C0 66 00 04 */ lfs f3, 4(r6)
/* 802A2FFC 0029FF5C 38 A1 00 20 */ addi r5, r1, 0x20
/* 802A3000 0029FF60 C0 27 00 00 */ lfs f1, 0(r7)
/* 802A3004 0029FF64 C0 86 00 08 */ lfs f4, 8(r6)
/* 802A3008 0029FF68 C0 A8 00 04 */ lfs f5, 4(r8)
/* 802A300C 0029FF6C C0 06 00 00 */ lfs f0, 0(r6)
/* 802A3010 0029FF70 D0 21 00 20 */ stfs f1, 0x20(r1)
/* 802A3014 0029FF74 D0 61 00 24 */ stfs f3, 0x24(r1)
/* 802A3018 0029FF78 D0 41 00 28 */ stfs f2, 0x28(r1)
/* 802A301C 0029FF7C D0 01 00 2C */ stfs f0, 0x2c(r1)
/* 802A3020 0029FF80 D0 A1 00 30 */ stfs f5, 0x30(r1)
/* 802A3024 0029FF84 D0 81 00 34 */ stfs f4, 0x34(r1)
/* 802A3028 0029FF88 48 09 54 E1 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A302C 0029FF8C 48 00 00 60 */ b lbl_802A308C
.global lbl_802A3030
lbl_802A3030:
/* 802A3030 0029FF90 C0 47 00 08 */ lfs f2, 8(r7)
/* 802A3034 0029FF94 38 81 00 14 */ addi r4, r1, 0x14
/* 802A3038 0029FF98 C0 67 00 04 */ lfs f3, 4(r7)
/* 802A303C 0029FF9C 38 A1 00 08 */ addi r5, r1, 8
/* 802A3040 0029FFA0 C0 26 00 00 */ lfs f1, 0(r6)
/* 802A3044 0029FFA4 C0 86 00 08 */ lfs f4, 8(r6)
/* 802A3048 0029FFA8 C0 A6 00 04 */ lfs f5, 4(r6)
/* 802A304C 0029FFAC C0 08 00 00 */ lfs f0, 0(r8)
/* 802A3050 0029FFB0 D0 21 00 08 */ stfs f1, 8(r1)
/* 802A3054 0029FFB4 D0 61 00 0C */ stfs f3, 0xc(r1)
/* 802A3058 0029FFB8 D0 41 00 10 */ stfs f2, 0x10(r1)
/* 802A305C 0029FFBC D0 01 00 14 */ stfs f0, 0x14(r1)
/* 802A3060 0029FFC0 D0 A1 00 18 */ stfs f5, 0x18(r1)
/* 802A3064 0029FFC4 D0 81 00 1C */ stfs f4, 0x1c(r1)
/* 802A3068 0029FFC8 48 09 54 A1 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A306C 0029FFCC 48 00 00 20 */ b lbl_802A308C
.global lbl_802A3070
lbl_802A3070:
/* 802A3070 0029FFD0 7C C4 33 78 */ mr r4, r6
/* 802A3074 0029FFD4 7C E5 3B 78 */ mr r5, r7
/* 802A3078 0029FFD8 48 09 54 91 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
/* 802A307C 0029FFDC 48 00 00 10 */ b lbl_802A308C
lbl_802A3080:
/* 802A3080 0029FFE0 7D 04 43 78 */ mr r4, r8
/* 802A3084 0029FFE4 7C E5 3B 78 */ mr r5, r7
/* 802A3088 0029FFE8 48 09 54 81 */ bl __ct__6CAABoxFRC9CVector3fRC9CVector3f
lbl_802A308C:
/* 802A308C 0029FFEC 80 01 00 A4 */ lwz r0, 0xa4(r1)
/* 802A3090 0029FFF0 7C 08 03 A6 */ mtlr r0
/* 802A3094 0029FFF4 38 21 00 A0 */ addi r1, r1, 0xa0
/* 802A3098 0029FFF8 4E 80 00 20 */ blr
.section .sdata2, "a"
.balign 8
.global lbl_805ADE60
lbl_805ADE60:
# ROM: 0x3FA700
.4byte 0
.global lbl_805ADE64
lbl_805ADE64:
# ROM: 0x3FA704
.float 0.5
.section .rodata
.balign 8
.global lbl_803D6020
lbl_803D6020:
# ROM: 0x3D3020
.asciz "??(??)"
.balign 4