.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