text: #include "types.h"
  
  /*
      Generated from dpostproc
  
      .section .ctors, "wa"  # 0x80472F00 - 0x804732C0
      .4byte __sinit_aiWeed_cpp
  
      .section .rodata  # 0x804732E0 - 0x8049E220
      .global lbl_80481EF8
      lbl_80481EF8:
          .4byte 0x00000000
          .4byte 0x00000000
          .4byte 0x00000000
          .4byte 0x41637457
          .4byte 0x65656441
          .4byte 0x72670000
          .4byte 0x61695765
          .4byte 0x65642E63
          .4byte 0x70700000
      .global lbl_80481F1C
      lbl_80481F1C:
          .asciz "P2Assert"
          .skip 3
          .4byte 0x6E6F2061
          .4byte 0x63747765
          .4byte 0x65646172
          .4byte 0x67000000
          .4byte 0x41637457
          .4byte 0x6565643A
          .4byte 0x6E6F2074
          .4byte 0x61726765
          .4byte 0x74000000
          .4byte 0x6E6F2066
          .4byte 0x6C6F636B
          .4byte 0x6D677200
          .4byte 0x41637469
          .4byte 0x6F6E4172
          .4byte 0x67000000
      .global lbl_80481F64
      lbl_80481F64:
          .4byte 0x666C6F63
          .4byte 0x6B4D6772
          .4byte 0x2E680000
      .global lbl_80481F70
      lbl_80481F70:
          .4byte 0x466C6F63
          .4byte 0x6B417474
          .4byte 0x61636B41
          .4byte 0x6374696F
          .4byte 0x6E417267
          .4byte 0x00000000
          .4byte 0x41707072
          .4byte 0x6F616368
          .4byte 0x506F7341
          .4byte 0x6374696F
          .4byte 0x6E417267
          .4byte 0x00000000
  
      .section .data, "wa"  # 0x8049E220 - 0x804EFC20
      .global lbl_804BFAA8
      lbl_804BFAA8:
          .4byte 0x00000000
          .4byte 0x00000000
          .4byte 0x00000000
      .global __vt__Q23efx9TWeedPull
      __vt__Q23efx9TWeedPull:
          .4byte 0
          .4byte 0
          .4byte create__Q23efx8TSimple3FPQ23efx3Arg
          .4byte forceKill__Q23efx8TSimple3Fv
          .4byte fade__Q23efx8TSimple3Fv
      .global __vt__Q26PikiAI14ActFlockAttack
      __vt__Q26PikiAI14ActFlockAttack:
          .4byte 0
          .4byte 0
          .4byte init__Q26PikiAI14ActFlockAttackFPQ26PikiAI9ActionArg
          .4byte exec__Q26PikiAI14ActFlockAttackFv
          .4byte cleanup__Q26PikiAI14ActFlockAttackFv
          .4byte emotion_success__Q26PikiAI6ActionFv
          .4byte emotion_fail__Q26PikiAI6ActionFv
          .4byte applicable__Q26PikiAI6ActionFv
          .4byte getNextAIType__Q26PikiAI6ActionFv
          .4byte bounceCallback__Q26PikiAI6ActionFPQ24Game4PikiPQ23Sys8Triangle
          .4byte
     collisionCallback__Q26PikiAI6ActionFPQ24Game4PikiRQ24Game9CollEvent .4byte
     platCallback__Q26PikiAI6ActionFPQ24Game4PikiRQ24Game9PlatEvent .4byte
     doDirectDraw__Q26PikiAI6ActionFR8Graphics .4byte
     "wallCallback__Q26PikiAI6ActionFR10Vector3<f>" .4byte
     getInfo__Q26PikiAI6ActionFPc .4byte
     onKeyEvent__Q26PikiAI14ActFlockAttackFRCQ28SysShape8KeyEvent .4byte 0 .4byte
     0 .4byte "@40@4@onKeyEvent__Q26PikiAI14ActFlockAttackFRCQ28SysShape8KeyEvent"
      .global __vt__Q26PikiAI20FlockAttackActionArg
      __vt__Q26PikiAI20FlockAttackActionArg:
          .4byte 0
          .4byte 0
          .4byte getName__Q26PikiAI20FlockAttackActionArgFv
      .global __vt__Q26PikiAI7ActWeed
      __vt__Q26PikiAI7ActWeed:
          .4byte 0
          .4byte 0
          .4byte init__Q26PikiAI7ActWeedFPQ26PikiAI9ActionArg
          .4byte exec__Q26PikiAI7ActWeedFv
          .4byte cleanup__Q26PikiAI7ActWeedFv
          .4byte emotion_success__Q26PikiAI6ActionFv
          .4byte emotion_fail__Q26PikiAI6ActionFv
          .4byte applicable__Q26PikiAI6ActionFv
          .4byte getNextAIType__Q26PikiAI6ActionFv
          .4byte bounceCallback__Q26PikiAI6ActionFPQ24Game4PikiPQ23Sys8Triangle
          .4byte
     collisionCallback__Q26PikiAI7ActWeedFPQ24Game4PikiRQ24Game9CollEvent .4byte
     platCallback__Q26PikiAI6ActionFPQ24Game4PikiRQ24Game9PlatEvent .4byte
     doDirectDraw__Q26PikiAI6ActionFR8Graphics .4byte
     "wallCallback__Q26PikiAI6ActionFR10Vector3<f>" .4byte
     getInfo__Q26PikiAI7ActWeedFPc .4byte 0
  
      .section .sbss # 0x80514D80 - 0x80516360
      .global lbl_80515BC8
      lbl_80515BC8:
          .skip 0x4
      .global lbl_80515BCC
      lbl_80515BCC:
          .skip 0x4
  
      .section .sdata2, "a"     # 0x80516360 - 0x80520E40
      .global lbl_80519EB8
      lbl_80519EB8:
          .asciz "SA"
          .skip 1
      .global lbl_80519EBC
      lbl_80519EBC:
          .asciz "AJ"
          .skip 1
      .global lbl_80519EC0
      lbl_80519EC0:
          .4byte lbl_80519EB8
      .global lbl_80519EC4
      lbl_80519EC4:
          .4byte lbl_80519EBC
      .global lbl_80519EC8
      lbl_80519EC8:
          .4byte 0x57656564
          .4byte 0x20257300
      .global lbl_80519ED0
      lbl_80519ED0:
          .4byte 0x57656564
          .4byte 0x00000000
      .global lbl_80519ED8
      lbl_80519ED8:
          .4byte 0x41200000
      .global lbl_80519EDC
      lbl_80519EDC:
          .4byte 0x40800000
      .global lbl_80519EE0
      lbl_80519EE0:
          .4byte 0xBF800000
      .global lbl_80519EE4
      lbl_80519EE4:
          .4byte 0x00000000
  */
  
  /*
   * --INFO--
   * Address:	8020D784
   * Size:	00004C
   */
  void PikiAI::ActWeed::getInfo(char*)
  {
  	/*
  	stwu     r1, -0x10(r1)
  	mflr     r0
  	stw      r0, 0x14(r1)
  	addi     r5, r1, 8
  	lwz      r7, lbl_80519EC0@sda21(r2)
  	lhz      r0, 0x14(r3)
  	mr       r3, r4
  	lwz      r6, lbl_80519EC4@sda21(r2)
  	addi     r4, r2, lbl_80519EC8@sda21
  	stw      r7, 8(r1)
  	slwi     r0, r0, 2
  	stw      r6, 0xc(r1)
  	lwzx     r5, r5, r0
  	crclr    6
  	bl       sprintf
  	lwz      r0, 0x14(r1)
  	mtlr     r0
  	addi     r1, r1, 0x10
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020D7D0
   * Size:	000094
   */
  PikiAI::ActWeed::ActWeed(Game::Piki*)
  {
  	/*
  	stwu     r1, -0x10(r1)
  	mflr     r0
  	stw      r0, 0x14(r1)
  	stw      r31, 0xc(r1)
  	mr       r31, r4
  	stw      r30, 8(r1)
  	mr       r30, r3
  	bl       __ct__Q26PikiAI6ActionFPQ24Game4Piki
  	lis      r4, __vt__Q26PikiAI7ActWeed@ha
  	li       r3, 0x30
  	addi     r0, r4, __vt__Q26PikiAI7ActWeed@l
  	stw      r0, 0(r30)
  	bl       __nw__FUl
  	or.      r0, r3, r3
  	beq      lbl_8020D81C
  	mr       r5, r31
  	li       r4, 1
  	bl       __ct__Q26PikiAI14ActFlockAttackFPQ24Game4Piki
  	mr       r0, r3
  
  lbl_8020D81C:
  	stw      r0, 0x18(r30)
  	li       r3, 0x28
  	bl       __nw__FUl
  	or.      r0, r3, r3
  	beq      lbl_8020D83C
  	mr       r4, r31
  	bl       __ct__Q26PikiAI14ActApproachPosFPQ24Game4Piki
  	mr       r0, r3
  
  lbl_8020D83C:
  	stw      r0, 0x1c(r30)
  	addi     r0, r2, lbl_80519ED0@sda21
  	mr       r3, r30
  	stw      r0, 8(r30)
  	lwz      r31, 0xc(r1)
  	lwz      r30, 8(r1)
  	lwz      r0, 0x14(r1)
  	mtlr     r0
  	addi     r1, r1, 0x10
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020D864
   * Size:	000170
   */
  void PikiAI::ActWeed::init(PikiAI::ActionArg*)
  {
  	/*
  	stwu     r1, -0x20(r1)
  	mflr     r0
  	stw      r0, 0x24(r1)
  	stw      r31, 0x1c(r1)
  	mr       r31, r3
  	stw      r30, 0x18(r1)
  	stw      r29, 0x14(r1)
  	li       r29, 0
  	stw      r28, 0x10(r1)
  	or.      r28, r4, r4
  	lis      r4, lbl_80481EF8@ha
  	addi     r30, r4, lbl_80481EF8@l
  	beq      lbl_8020D8C8
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	mr       r4, r3
  	addi     r3, r30, 0xc
  	bl       strcmp
  	cntlzw   r0, r3
  	rlwinm.  r0, r0, 0x1b, 0x18, 0x1f
  	beq      lbl_8020D8C8
  	li       r29, 1
  
  lbl_8020D8C8:
  	clrlwi.  r0, r29, 0x18
  	bne      lbl_8020D8E4
  	addi     r3, r30, 0x18
  	addi     r5, r30, 0x24
  	li       r4, 0x78
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020D8E4:
  	cmplwi   r28, 0
  	bne      lbl_8020D900
  	addi     r3, r30, 0x18
  	addi     r5, r30, 0x30
  	li       r4, 0x7c
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020D900:
  	lwz      r0, 4(r28)
  	stw      r0, 0xc(r31)
  	lwz      r0, 0xc(r31)
  	cmplwi   r0, 0
  	bne      lbl_8020D928
  	addi     r3, r30, 0x18
  	addi     r5, r30, 0x40
  	li       r4, 0x7f
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020D928:
  	lwz      r3, 0xc(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0x90(r12)
  	mtctr    r12
  	bctrl
  	stw      r3, 0x10(r31)
  	lwz      r0, 0x10(r31)
  	cmplwi   r0, 0
  	bne      lbl_8020D960
  	addi     r3, r30, 0x18
  	addi     r5, r30, 0x54
  	li       r4, 0x82
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020D960:
  	li       r3, 0
  	stb      r3, 0x20(r31)
  	lwz      r5, 0x10(r31)
  	lwz      r4, 4(r5)
  	cmpwi    r4, -1
  	beq      lbl_8020D984
  	lwz      r0, 8(r5)
  	cmpw     r0, r4
  	bge      lbl_8020D988
  
  lbl_8020D984:
  	li       r3, 1
  
  lbl_8020D988:
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020D9A4
  	lwz      r3, 8(r5)
  	li       r0, 1
  	addi     r3, r3, 1
  	stw      r3, 8(r5)
  	stb      r0, 0x20(r31)
  
  lbl_8020D9A4:
  	mr       r3, r31
  	bl       decideTarget__Q26PikiAI7ActWeedFv
  	mr       r3, r31
  	bl       initAdjust__Q26PikiAI7ActWeedFv
  	lwz      r0, 0x24(r1)
  	lwz      r31, 0x1c(r1)
  	lwz      r30, 0x18(r1)
  	lwz      r29, 0x14(r1)
  	lwz      r28, 0x10(r1)
  	mtlr     r0
  	addi     r1, r1, 0x20
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020D9D4
   * Size:	000068
   */
  void PikiAI::ActWeed::decideTarget(void)
  {
  	/*
  	stwu     r1, -0x30(r1)
  	mflr     r0
  	stw      r0, 0x34(r1)
  	stw      r31, 0x2c(r1)
  	mr       r31, r3
  	addi     r3, r1, 8
  	lwz      r4, 4(r31)
  	lwz      r12, 0(r4)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	lfs      f2, 8(r1)
  	addi     r4, r1, 0x14
  	lfs      f1, 0xc(r1)
  	lfs      f0, 0x10(r1)
  	stfs     f2, 0x14(r1)
  	stfs     f1, 0x18(r1)
  	stfs     f0, 0x1c(r1)
  	lwz      r3, 0x10(r31)
  	bl       "getNearestFlock__Q24Game12BaseFlockMgrFR10Vector3<f>"
  	stw      r3, 0x24(r31)
  	lwz      r0, 0x34(r1)
  	lwz      r31, 0x2c(r1)
  	mtlr     r0
  	addi     r1, r1, 0x30
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	........
   * Size:	0000B0
   */
  void PikiAI::ActWeed::initStickAttack(void)
  {
  	// UNUSED FUNCTION
  }
  
  /*
   * --INFO--
   * Address:	8020DA3C
   * Size:	000188
   */
  void PikiAI::ActWeed::initAdjust(void)
  {
  	/*
  	stwu     r1, -0x60(r1)
  	mflr     r0
  	stw      r0, 0x64(r1)
  	stfd     f31, 0x50(r1)
  	psq_st   f31, 88(r1), 0, qr0
  	stfd     f30, 0x40(r1)
  	psq_st   f30, 72(r1), 0, qr0
  	stw      r31, 0x3c(r1)
  	stw      r30, 0x38(r1)
  	stw      r29, 0x34(r1)
  	stw      r28, 0x30(r1)
  	mr       r28, r3
  	lwz      r0, 0x24(r3)
  	cmpwi    r0, -1
  	beq      lbl_8020DB94
  	bl       calcAttackPos__Q26PikiAI7ActWeedFv
  	lwz      r29, 0x24(r28)
  	li       r31, 0
  	lwz      r30, 0x10(r28)
  	cmpwi    r29, 0
  	blt      lbl_8020DAB0
  	mr       r3, r30
  	lwz      r12, 0(r30)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020DAB0
  	li       r31, 1
  
  lbl_8020DAB0:
  	clrlwi.  r0, r31, 0x18
  	bne      lbl_8020DAD4
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xac
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020DAD4:
  	mr       r3, r30
  	mr       r4, r29
  	lwz      r12, 0(r30)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lwz      r12, 0xc(r3)
  	lwz      r12, 0x18(r12)
  	mtctr    r12
  	bctrl
  	lwz      r3, 0x10(r28)
  	fmr      f31, f1
  	lfs      f30, lbl_80519ED8@sda21(r2)
  	lwz      r12, 0(r3)
  	lwz      r4, 0x24(r28)
  	lwz      r12, 0x28(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020DB28
  	lfs      f30, lbl_80519EDC@sda21(r2)
  
  lbl_8020DB28:
  	lis      r4, __vt__Q26PikiAI9ActionArg@ha
  	lis      r3, __vt__Q26PikiAI20ApproachPosActionArg@ha
  	addi     r0, r4, __vt__Q26PikiAI9ActionArg@l
  	fadds    f1, f31, f30
  	stw      r0, 8(r1)
  	addi     r0, r3, __vt__Q26PikiAI20ApproachPosActionArg@l
  	lfs      f0, lbl_80519EE0@sda21(r2)
  	li       r3, 0
  	stw      r0, 8(r1)
  	li       r0, 1
  	addi     r4, r1, 8
  	lfs      f2, 0x28(r28)
  	stfs     f2, 0xc(r1)
  	lfs      f2, 0x2c(r28)
  	stfs     f2, 0x10(r1)
  	lfs      f2, 0x30(r28)
  	stfs     f2, 0x14(r1)
  	stfs     f1, 0x18(r1)
  	stfs     f0, 0x1c(r1)
  	stb      r3, 0x20(r1)
  	stb      r3, 0x21(r1)
  	sth      r0, 0x14(r28)
  	lwz      r3, 0x1c(r28)
  	lwz      r12, 0(r3)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  
  lbl_8020DB94:
  	psq_l    f31, 88(r1), 0, qr0
  	lfd      f31, 0x50(r1)
  	psq_l    f30, 72(r1), 0, qr0
  	lfd      f30, 0x40(r1)
  	lwz      r31, 0x3c(r1)
  	lwz      r30, 0x38(r1)
  	lwz      r29, 0x34(r1)
  	lwz      r0, 0x64(r1)
  	lwz      r28, 0x30(r1)
  	mtlr     r0
  	addi     r1, r1, 0x60
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020DBC4
   * Size:	0000D0
   */
  void PikiAI::ActWeed::calcAttackPos(void)
  {
  	/*
  	stwu     r1, -0x20(r1)
  	mflr     r0
  	stw      r0, 0x24(r1)
  	stw      r31, 0x1c(r1)
  	stw      r30, 0x18(r1)
  	stw      r29, 0x14(r1)
  	stw      r28, 0x10(r1)
  	mr       r28, r3
  	lwz      r29, 0x24(r3)
  	cmpwi    r29, -1
  	beq      lbl_8020DC74
  	cmpwi    r29, 0
  	lwz      r30, 0x10(r28)
  	li       r31, 0
  	blt      lbl_8020DC20
  	mr       r3, r30
  	lwz      r12, 0(r30)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020DC20
  	li       r31, 1
  
  lbl_8020DC20:
  	clrlwi.  r0, r31, 0x18
  	bne      lbl_8020DC44
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xab
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020DC44:
  	mr       r3, r30
  	mr       r4, r29
  	lwz      r12, 0(r30)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lfs      f1, 4(r3)
  	lfs      f2, 8(r3)
  	lfs      f0, 0(r3)
  	stfs     f0, 0x28(r28)
  	stfs     f1, 0x2c(r28)
  	stfs     f2, 0x30(r28)
  
  lbl_8020DC74:
  	lwz      r0, 0x24(r1)
  	lwz      r31, 0x1c(r1)
  	lwz      r30, 0x18(r1)
  	lwz      r29, 0x14(r1)
  	lwz      r28, 0x10(r1)
  	mtlr     r0
  	addi     r1, r1, 0x20
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020DC94
   * Size:	000840
   */
  void PikiAI::ActWeed::exec(void)
  {
  	/*
  	stwu     r1, -0xf0(r1)
  	mflr     r0
  	stw      r0, 0xf4(r1)
  	stfd     f31, 0xe0(r1)
  	psq_st   f31, 232(r1), 0, qr0
  	stfd     f30, 0xd0(r1)
  	psq_st   f30, 216(r1), 0, qr0
  	stw      r31, 0xcc(r1)
  	stw      r30, 0xc8(r1)
  	stw      r29, 0xc4(r1)
  	stw      r28, 0xc0(r1)
  	mr       r31, r3
  	lbz      r0, 0x20(r3)
  	cmplwi   r0, 0
  	bne      lbl_8020DCD8
  	li       r3, 2
  	b        lbl_8020E4A4
  
  lbl_8020DCD8:
  	lwz      r0, 0xc(r31)
  	cmplwi   r0, 0
  	bne      lbl_8020DCEC
  	li       r3, 2
  	b        lbl_8020E4A4
  
  lbl_8020DCEC:
  	lhz      r0, 0x14(r31)
  	cmpwi    r0, 1
  	beq      lbl_8020E130
  	bge      lbl_8020E4A0
  	cmpwi    r0, 0
  	bge      lbl_8020DD08
  	b        lbl_8020E4A0
  
  lbl_8020DD08:
  	lwz      r3, 0x18(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0xc(r12)
  	mtctr    r12
  	bctrl
  	cmpwi    r3, 0
  	bne      lbl_8020DF38
  	lwz      r3, 0xc(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0xa8(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	bne      lbl_8020DD48
  	li       r3, 0
  	b        lbl_8020E4A4
  
  lbl_8020DD48:
  	lwz      r4, 4(r31)
  	addi     r3, r1, 0x44
  	lwz      r12, 0(r4)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	lfs      f2, 0x44(r1)
  	addi     r4, r1, 0x38
  	lfs      f1, 0x48(r1)
  	lfs      f0, 0x4c(r1)
  	stfs     f2, 0x38(r1)
  	stfs     f1, 0x3c(r1)
  	stfs     f0, 0x40(r1)
  	lwz      r3, 0x10(r31)
  	bl       "getNearestFlock__Q24Game12BaseFlockMgrFR10Vector3<f>"
  	stw      r3, 0x24(r31)
  	lwz      r29, 0x24(r31)
  	cmpwi    r29, -1
  	beq      lbl_8020E4A0
  	beq      lbl_8020DE1C
  	cmpwi    r29, 0
  	lwz      r28, 0x10(r31)
  	li       r30, 0
  	blt      lbl_8020DDC8
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020DDC8
  	li       r30, 1
  
  lbl_8020DDC8:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020DDEC
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xab
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020DDEC:
  	mr       r3, r28
  	mr       r4, r29
  	lwz      r12, 0(r28)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lfs      f1, 4(r3)
  	lfs      f2, 8(r3)
  	lfs      f0, 0(r3)
  	stfs     f0, 0x28(r31)
  	stfs     f1, 0x2c(r31)
  	stfs     f2, 0x30(r31)
  
  lbl_8020DE1C:
  	lwz      r28, 0x24(r31)
  	li       r30, 0
  	lwz      r29, 0x10(r31)
  	cmpwi    r28, 0
  	blt      lbl_8020DE50
  	mr       r3, r29
  	lwz      r12, 0(r29)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r28, r3
  	bge      lbl_8020DE50
  	li       r30, 1
  
  lbl_8020DE50:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020DE74
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xac
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020DE74:
  	mr       r3, r29
  	mr       r4, r28
  	lwz      r12, 0(r29)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lwz      r12, 0xc(r3)
  	lwz      r12, 0x18(r12)
  	mtctr    r12
  	bctrl
  	lwz      r3, 0x10(r31)
  	fmr      f31, f1
  	lfs      f30, lbl_80519ED8@sda21(r2)
  	lwz      r12, 0(r3)
  	lwz      r4, 0x24(r31)
  	lwz      r12, 0x28(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020DEC8
  	lfs      f30, lbl_80519EDC@sda21(r2)
  
  lbl_8020DEC8:
  	lis      r4, __vt__Q26PikiAI9ActionArg@ha
  	lis      r3, __vt__Q26PikiAI20ApproachPosActionArg@ha
  	addi     r0, r4, __vt__Q26PikiAI9ActionArg@l
  	fadds    f1, f31, f30
  	stw      r0, 0x9c(r1)
  	addi     r0, r3, __vt__Q26PikiAI20ApproachPosActionArg@l
  	lfs      f0, lbl_80519EE0@sda21(r2)
  	li       r3, 0
  	stw      r0, 0x9c(r1)
  	li       r0, 1
  	addi     r4, r1, 0x9c
  	lfs      f2, 0x28(r31)
  	stfs     f2, 0xa0(r1)
  	lfs      f2, 0x2c(r31)
  	stfs     f2, 0xa4(r1)
  	lfs      f2, 0x30(r31)
  	stfs     f2, 0xa8(r1)
  	stfs     f1, 0xac(r1)
  	stfs     f0, 0xb0(r1)
  	stb      r3, 0xb4(r1)
  	stb      r3, 0xb5(r1)
  	sth      r0, 0x14(r31)
  	lwz      r3, 0x1c(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	b        lbl_8020E4A0
  
  lbl_8020DF38:
  	cmpwi    r3, 2
  	bne      lbl_8020E4A0
  	lwz      r4, 4(r31)
  	addi     r3, r1, 0x2c
  	lwz      r12, 0(r4)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	lfs      f2, 0x2c(r1)
  	addi     r4, r1, 0x20
  	lfs      f1, 0x30(r1)
  	lfs      f0, 0x34(r1)
  	stfs     f2, 0x20(r1)
  	stfs     f1, 0x24(r1)
  	stfs     f0, 0x28(r1)
  	lwz      r3, 0x10(r31)
  	bl       "getNearestFlock__Q24Game12BaseFlockMgrFR10Vector3<f>"
  	stw      r3, 0x24(r31)
  	lwz      r29, 0x24(r31)
  	cmpwi    r29, -1
  	beq      lbl_8020E4A0
  	beq      lbl_8020E014
  	cmpwi    r29, 0
  	lwz      r28, 0x10(r31)
  	li       r30, 0
  	blt      lbl_8020DFC0
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020DFC0
  	li       r30, 1
  
  lbl_8020DFC0:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020DFE4
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xab
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020DFE4:
  	mr       r3, r28
  	mr       r4, r29
  	lwz      r12, 0(r28)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lfs      f1, 4(r3)
  	lfs      f2, 8(r3)
  	lfs      f0, 0(r3)
  	stfs     f0, 0x28(r31)
  	stfs     f1, 0x2c(r31)
  	stfs     f2, 0x30(r31)
  
  lbl_8020E014:
  	lwz      r29, 0x24(r31)
  	li       r30, 0
  	lwz      r28, 0x10(r31)
  	cmpwi    r29, 0
  	blt      lbl_8020E048
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020E048
  	li       r30, 1
  
  lbl_8020E048:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020E06C
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xac
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020E06C:
  	mr       r3, r28
  	mr       r4, r29
  	lwz      r12, 0(r28)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lwz      r12, 0xc(r3)
  	lwz      r12, 0x18(r12)
  	mtctr    r12
  	bctrl
  	lwz      r3, 0x10(r31)
  	fmr      f31, f1
  	lfs      f30, lbl_80519ED8@sda21(r2)
  	lwz      r12, 0(r3)
  	lwz      r4, 0x24(r31)
  	lwz      r12, 0x28(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020E0C0
  	lfs      f30, lbl_80519EDC@sda21(r2)
  
  lbl_8020E0C0:
  	lis      r4, __vt__Q26PikiAI9ActionArg@ha
  	lis      r3, __vt__Q26PikiAI20ApproachPosActionArg@ha
  	addi     r0, r4, __vt__Q26PikiAI9ActionArg@l
  	fadds    f1, f31, f30
  	stw      r0, 0x80(r1)
  	addi     r0, r3, __vt__Q26PikiAI20ApproachPosActionArg@l
  	lfs      f0, lbl_80519EE0@sda21(r2)
  	li       r3, 0
  	stw      r0, 0x80(r1)
  	li       r0, 1
  	addi     r4, r1, 0x80
  	lfs      f2, 0x28(r31)
  	stfs     f2, 0x84(r1)
  	lfs      f2, 0x2c(r31)
  	stfs     f2, 0x88(r1)
  	lfs      f2, 0x30(r31)
  	stfs     f2, 0x8c(r1)
  	stfs     f1, 0x90(r1)
  	stfs     f0, 0x94(r1)
  	stb      r3, 0x98(r1)
  	stb      r3, 0x99(r1)
  	sth      r0, 0x14(r31)
  	lwz      r3, 0x1c(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	b        lbl_8020E4A0
  
  lbl_8020E130:
  	lwz      r0, 0x24(r31)
  	cmpwi    r0, -1
  	bne      lbl_8020E328
  	lwz      r4, 4(r31)
  	addi     r3, r1, 0x14
  	lwz      r12, 0(r4)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	lfs      f2, 0x14(r1)
  	addi     r4, r1, 8
  	lfs      f1, 0x18(r1)
  	lfs      f0, 0x1c(r1)
  	stfs     f2, 8(r1)
  	stfs     f1, 0xc(r1)
  	stfs     f0, 0x10(r1)
  	lwz      r3, 0x10(r31)
  	bl       "getNearestFlock__Q24Game12BaseFlockMgrFR10Vector3<f>"
  	stw      r3, 0x24(r31)
  	lwz      r29, 0x24(r31)
  	cmpwi    r29, -1
  	beq      lbl_8020E328
  	beq      lbl_8020E210
  	cmpwi    r29, 0
  	lwz      r28, 0x10(r31)
  	li       r30, 0
  	blt      lbl_8020E1BC
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020E1BC
  	li       r30, 1
  
  lbl_8020E1BC:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020E1E0
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xab
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020E1E0:
  	mr       r3, r28
  	mr       r4, r29
  	lwz      r12, 0(r28)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lfs      f1, 4(r3)
  	lfs      f2, 8(r3)
  	lfs      f0, 0(r3)
  	stfs     f0, 0x28(r31)
  	stfs     f1, 0x2c(r31)
  	stfs     f2, 0x30(r31)
  
  lbl_8020E210:
  	lwz      r29, 0x24(r31)
  	li       r30, 0
  	lwz      r28, 0x10(r31)
  	cmpwi    r29, 0
  	blt      lbl_8020E244
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020E244
  	li       r30, 1
  
  lbl_8020E244:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020E268
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xac
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020E268:
  	mr       r3, r28
  	mr       r4, r29
  	lwz      r12, 0(r28)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lwz      r12, 0xc(r3)
  	lwz      r12, 0x18(r12)
  	mtctr    r12
  	bctrl
  	lwz      r3, 0x10(r31)
  	fmr      f31, f1
  	lfs      f30, lbl_80519ED8@sda21(r2)
  	lwz      r12, 0(r3)
  	lwz      r4, 0x24(r31)
  	lwz      r12, 0x28(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020E2BC
  	lfs      f30, lbl_80519EDC@sda21(r2)
  
  lbl_8020E2BC:
  	lis      r4, __vt__Q26PikiAI9ActionArg@ha
  	lis      r3, __vt__Q26PikiAI20ApproachPosActionArg@ha
  	addi     r0, r4, __vt__Q26PikiAI9ActionArg@l
  	fadds    f1, f31, f30
  	stw      r0, 0x64(r1)
  	addi     r0, r3, __vt__Q26PikiAI20ApproachPosActionArg@l
  	lfs      f0, lbl_80519EE0@sda21(r2)
  	li       r3, 0
  	stw      r0, 0x64(r1)
  	li       r0, 1
  	addi     r4, r1, 0x64
  	lfs      f2, 0x28(r31)
  	stfs     f2, 0x68(r1)
  	lfs      f2, 0x2c(r31)
  	stfs     f2, 0x6c(r1)
  	lfs      f2, 0x30(r31)
  	stfs     f2, 0x70(r1)
  	stfs     f1, 0x74(r1)
  	stfs     f0, 0x78(r1)
  	stb      r3, 0x7c(r1)
  	stb      r3, 0x7d(r1)
  	sth      r0, 0x14(r31)
  	lwz      r3, 0x1c(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  
  lbl_8020E328:
  	lwz      r3, 0xc(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0xa8(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	bne      lbl_8020E34C
  	li       r3, 0
  	b        lbl_8020E4A4
  
  lbl_8020E34C:
  	lwz      r29, 0x24(r31)
  	cmpwi    r29, -1
  	beq      lbl_8020E3DC
  	cmpwi    r29, 0
  	lwz      r28, 0x10(r31)
  	li       r30, 0
  	blt      lbl_8020E388
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	cmpw     r29, r3
  	bge      lbl_8020E388
  	li       r30, 1
  
  lbl_8020E388:
  	clrlwi.  r0, r30, 0x18
  	bne      lbl_8020E3AC
  	lis      r3, lbl_80481F64@ha
  	lis      r5, lbl_80481F1C@ha
  	addi     r3, r3, lbl_80481F64@l
  	li       r4, 0xab
  	addi     r5, r5, lbl_80481F1C@l
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020E3AC:
  	mr       r3, r28
  	mr       r4, r29
  	lwz      r12, 0(r28)
  	lwz      r12, 0x14(r12)
  	mtctr    r12
  	bctrl
  	lfs      f1, 4(r3)
  	lfs      f2, 8(r3)
  	lfs      f0, 0(r3)
  	stfs     f0, 0x28(r31)
  	stfs     f1, 0x2c(r31)
  	stfs     f2, 0x30(r31)
  
  lbl_8020E3DC:
  	lwz      r3, 0x1c(r31)
  	lfs      f0, 0x28(r31)
  	stfs     f0, 0x10(r3)
  	lfs      f0, 0x2c(r31)
  	stfs     f0, 0x14(r3)
  	lfs      f0, 0x30(r31)
  	stfs     f0, 0x18(r3)
  	lwz      r3, 0x1c(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0xc(r12)
  	mtctr    r12
  	bctrl
  	cmpwi    r3, 0
  	bne      lbl_8020E4A0
  	lhz      r0, 0x14(r31)
  	cmplwi   r0, 1
  	bne      lbl_8020E4A0
  	lwz      r3, 0x10(r31)
  	lwz      r4, 0x24(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0x28(r12)
  	mtctr    r12
  	bctrl
  	clrlwi   r4, r3, 0x18
  	lwz      r3, 4(r31)
  	neg      r0, r4
  	or       r0, r0, r4
  	srwi     r30, r0, 0x1f
  	bl       getAttackDamage__Q24Game4PikiFv
  	lis      r3, __vt__Q26PikiAI9ActionArg@ha
  	lwz      r6, 0x24(r31)
  	lwz      r5, 0xc(r31)
  	addi     r0, r3, __vt__Q26PikiAI9ActionArg@l
  	lis      r3, __vt__Q26PikiAI20FlockAttackActionArg@ha
  	addi     r4, r1, 0x50
  	stw      r0, 0x50(r1)
  	addi     r0, r3, __vt__Q26PikiAI20FlockAttackActionArg@l
  	stw      r0, 0x50(r1)
  	stfs     f1, 0x54(r1)
  	stw      r5, 0x58(r1)
  	stw      r6, 0x5c(r1)
  	stw      r30, 0x60(r1)
  	lwz      r3, 0x18(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	li       r0, 0
  	sth      r0, 0x14(r31)
  
  lbl_8020E4A0:
  	li       r3, 1
  
  lbl_8020E4A4:
  	psq_l    f31, 232(r1), 0, qr0
  	lfd      f31, 0xe0(r1)
  	psq_l    f30, 216(r1), 0, qr0
  	lfd      f30, 0xd0(r1)
  	lwz      r31, 0xcc(r1)
  	lwz      r30, 0xc8(r1)
  	lwz      r29, 0xc4(r1)
  	lwz      r0, 0xf4(r1)
  	lwz      r28, 0xc0(r1)
  	mtlr     r0
  	addi     r1, r1, 0xf0
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020E4D4
   * Size:	000068
   */
  void PikiAI::ActWeed::cleanup(void)
  {
  	/*
  	stwu     r1, -0x10(r1)
  	mflr     r0
  	stw      r0, 0x14(r1)
  	stw      r31, 0xc(r1)
  	mr       r31, r3
  	lhz      r0, 0x14(r3)
  	cmpwi    r0, 0
  	beq      lbl_8020E4F8
  	b        lbl_8020E50C
  
  lbl_8020E4F8:
  	lwz      r3, 0x18(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0x10(r12)
  	mtctr    r12
  	bctrl
  
  lbl_8020E50C:
  	lbz      r0, 0x20(r31)
  	cmplwi   r0, 0
  	beq      lbl_8020E528
  	lwz      r4, 0x10(r31)
  	lwz      r3, 8(r4)
  	addi     r0, r3, -1
  	stw      r0, 8(r4)
  
  lbl_8020E528:
  	lwz      r0, 0x14(r1)
  	lwz      r31, 0xc(r1)
  	mtlr     r0
  	addi     r1, r1, 0x10
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020E53C
   * Size:	000004
   */
  void PikiAI::ActWeed::collisionCallback(Game::Piki*, Game::CollEvent&) { }
  
  /*
   * --INFO--
   * Address:	8020E540
   * Size:	000088
   */
  PikiAI::ActFlockAttack::ActFlockAttack(Game::Piki*)
  {
  	/*
  	stwu     r1, -0x10(r1)
  	mflr     r0
  	stw      r0, 0x14(r1)
  	extsh.   r0, r4
  	stw      r31, 0xc(r1)
  	mr       r31, r3
  	beq      lbl_8020E570
  	addi     r0, r31, 0x28
  	lis      r3, __vt__Q28SysShape14MotionListener@ha
  	stw      r0, 0xc(r31)
  	addi     r0, r3, __vt__Q28SysShape14MotionListener@l
  	stw      r0, 0x28(r31)
  
  lbl_8020E570:
  	mr       r3, r31
  	mr       r4, r5
  	bl       __ct__Q26PikiAI6ActionFPQ24Game4Piki
  	lis      r3, __vt__Q26PikiAI14ActFlockAttack@ha
  	addi     r4, r31, 0x28
  	addi     r3, r3, __vt__Q26PikiAI14ActFlockAttack@l
  	li       r0, 0
  	stw      r3, 0(r31)
  	addi     r6, r3, 0x40
  	mr       r3, r31
  	lwz      r5, 0xc(r31)
  	stw      r6, 0(r5)
  	lwz      r5, 0xc(r31)
  	subf     r4, r5, r4
  	stw      r4, 4(r5)
  	stb      r0, 0x1c(r31)
  	stw      r0, 0x14(r31)
  	lwz      r31, 0xc(r1)
  	lwz      r0, 0x14(r1)
  	mtlr     r0
  	addi     r1, r1, 0x10
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020E5C8
   * Size:	000138
   */
  void PikiAI::ActFlockAttack::init(PikiAI::ActionArg*)
  {
  	/*
  	stwu     r1, -0x20(r1)
  	mflr     r0
  	stw      r0, 0x24(r1)
  	stw      r31, 0x1c(r1)
  	mr       r31, r3
  	stw      r30, 0x18(r1)
  	stw      r29, 0x14(r1)
  	li       r29, 0
  	stw      r28, 0x10(r1)
  	or.      r28, r4, r4
  	lis      r4, lbl_80481EF8@ha
  	addi     r30, r4, lbl_80481EF8@l
  	beq      lbl_8020E62C
  	mr       r3, r28
  	lwz      r12, 0(r28)
  	lwz      r12, 8(r12)
  	mtctr    r12
  	bctrl
  	mr       r4, r3
  	addi     r3, r30, 0x78
  	bl       strcmp
  	cntlzw   r0, r3
  	rlwinm.  r0, r0, 0x1b, 0x18, 0x1f
  	beq      lbl_8020E62C
  	li       r29, 1
  
  lbl_8020E62C:
  	clrlwi.  r0, r29, 0x18
  	bne      lbl_8020E648
  	addi     r3, r30, 0x18
  	addi     r5, r30, 0x24
  	li       r4, 0x114
  	crclr    6
  	bl       panic_f__12JUTExceptionFPCciPCce
  
  lbl_8020E648:
  	li       r3, 0
  	stw      r3, 0x14(r31)
  	lwz      r0, 8(r28)
  	stw      r0, 0x14(r31)
  	lfs      f0, 4(r28)
  	stfs     f0, 0x18(r31)
  	lwz      r0, 0xc(r28)
  	stw      r0, 0x24(r31)
  	lwz      r0, 0x10(r28)
  	cmpwi    r0, 1
  	bne      lbl_8020E688
  	li       r3, 1
  	li       r0, 0x2a
  	stb      r3, 0x10(r31)
  	stw      r0, 0x20(r31)
  	b        lbl_8020E694
  
  lbl_8020E688:
  	li       r0, 2
  	stw      r0, 0x20(r31)
  	stb      r3, 0x10(r31)
  
  lbl_8020E694:
  	cmplwi   r31, 0
  	mr       r6, r31
  	beq      lbl_8020E6A4
  	lwz      r6, 0xc(r31)
  
  lbl_8020E6A4:
  	lwz      r3, 4(r31)
  	li       r7, 0
  	lwz      r4, 0x20(r31)
  	lwz      r12, 0(r3)
  	mr       r5, r4
  	lwz      r12, 0x208(r12)
  	mtctr    r12
  	bctrl
  	li       r0, 0
  	lfs      f0, lbl_80519EE4@sda21(r2)
  	stb      r0, 0x1c(r31)
  	lwz      r3, 4(r31)
  	stfs     f0, 0x1e4(r3)
  	stfs     f0, 0x1e8(r3)
  	stfs     f0, 0x1ec(r3)
  	lwz      r31, 0x1c(r1)
  	lwz      r30, 0x18(r1)
  	lwz      r29, 0x14(r1)
  	lwz      r28, 0x10(r1)
  	lwz      r0, 0x24(r1)
  	mtlr     r0
  	addi     r1, r1, 0x20
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020E700
   * Size:	000324
   */
  void PikiAI::ActFlockAttack::exec(void)
  {
  	/*
  	stwu     r1, -0x90(r1)
  	mflr     r0
  	stw      r0, 0x94(r1)
  	stw      r31, 0x8c(r1)
  	mr       r31, r3
  	lwz      r3, 0x14(r3)
  	cmplwi   r3, 0
  	bne      lbl_8020E728
  	li       r3, 0
  	b        lbl_8020EA10
  
  lbl_8020E728:
  	lwz      r12, 0(r3)
  	lwz      r12, 0xa8(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	bne      lbl_8020E748
  	li       r3, 0
  	b        lbl_8020EA10
  
  lbl_8020E748:
  	lbz      r3, 0x1c(r31)
  	rlwinm.  r0, r3, 0, 0x1d, 0x1d
  	beq      lbl_8020E768
  	rlwinm.  r0, r3, 0, 0x1b, 0x1b
  	li       r3, 2
  	beq      lbl_8020EA10
  	li       r3, 0
  	b        lbl_8020EA10
  
  lbl_8020E768:
  	lwz      r3, 4(r31)
  	lwz      r4, 0x20(r31)
  	bl       assertMotion__Q24Game8FakePikiFi
  	clrlwi.  r0, r3, 0x18
  	bne      lbl_8020E784
  	li       r3, 2
  	b        lbl_8020EA10
  
  lbl_8020E784:
  	lbz      r3, 0x1c(r31)
  	clrlwi.  r0, r3, 0x1f
  	beq      lbl_8020EA0C
  	rlwinm.  r0, r3, 0, 0x1c, 0x1c
  	bne      lbl_8020EA0C
  	lis      r3, __vt__Q24Game11Interaction@ha
  	lwz      r7, 0x24(r31)
  	lfs      f0, 0x18(r31)
  	addi     r5, r3, __vt__Q24Game11Interaction@l
  	lwz      r6, 4(r31)
  	lis      r3, __vt__Q24Game19InteractFlockAttack@ha
  	li       r0, 0
  	addi     r4, r1, 0x68
  	stw      r5, 0x68(r1)
  	addi     r3, r3, __vt__Q24Game19InteractFlockAttack@l
  	stw      r6, 0x6c(r1)
  	stw      r3, 0x68(r1)
  	stw      r7, 0x70(r1)
  	stfs     f0, 0x74(r1)
  	stb      r0, 0x78(r1)
  	lwz      r3, 0x14(r31)
  	lwz      r12, 0(r3)
  	lwz      r12, 0x1a4(r12)
  	mtctr    r12
  	bctrl
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020EA0C
  	lbz      r0, 0x10(r31)
  	cmplwi   r0, 0
  	bne      lbl_8020E938
  	lwz      r3, 4(r31)
  	li       r5, 0x2828
  	lwz      r4, 0x14(r31)
  	li       r6, 1
  	bl       startSound__Q24Game4PikiFPQ24Game8CreatureUlb
  	lwz      r3, 4(r31)
  	bl       doped__Q24Game4PikiFv
  	clrlwi.  r0, r3, 0x18
  	beq      lbl_8020E8AC
  	lis      r3, __vt__Q23efx5TBase@ha
  	lis      r4, __vt__Q23efx8TSimple1@ha
  	addi     r0, r3, __vt__Q23efx5TBase@l
  	lis      r3, __vt__Q23efx11TPkAttackDP@ha
  	stw      r0, 0x44(r1)
  	addi     r4, r4, __vt__Q23efx8TSimple1@l
  	li       r0, 0x149
  	li       r7, 0
  	stw      r4, 0x44(r1)
  	addi     r6, r3, __vt__Q23efx11TPkAttackDP@l
  	lis      r3, "zero__10Vector3<f>"@ha
  	lis      r4, __vt__Q23efx3Arg@ha
  	sth      r0, 0x48(r1)
  	addi     r5, r3, "zero__10Vector3<f>"@l
  	lfs      f2, 0(r5)
  	addi     r0, r4, __vt__Q23efx3Arg@l
  	stw      r7, 0x4c(r1)
  	addi     r3, r1, 0x44
  	lfs      f1, 4(r5)
  	addi     r4, r1, 0x34
  	stw      r6, 0x44(r1)
  	lfs      f0, 8(r5)
  	lwz      r5, 4(r31)
  	lfs      f3, 0x25c(r5)
  	lfs      f4, 0x260(r5)
  	lfs      f5, 0x264(r5)
  	stfs     f2, 0x38(r1)
  	stfs     f1, 0x3c(r1)
  	stfs     f0, 0x40(r1)
  	stw      r0, 0x34(r1)
  	stfs     f3, 0x38(r1)
  	stfs     f4, 0x3c(r1)
  	stfs     f5, 0x40(r1)
  	bl       create__Q23efx8TSimple1FPQ23efx3Arg
  	b        lbl_8020E9E8
  
  lbl_8020E8AC:
  	lis      r3, __vt__Q23efx5TBase@ha
  	lis      r4, __vt__Q23efx8TSimple1@ha
  	addi     r0, r3, __vt__Q23efx5TBase@l
  	lis      r3, __vt__Q23efx10PikiDamage@ha
  	stw      r0, 0x28(r1)
  	addi     r4, r4, __vt__Q23efx8TSimple1@l
  	li       r0, 0x148
  	li       r7, 0
  	stw      r4, 0x28(r1)
  	addi     r6, r3, __vt__Q23efx10PikiDamage@l
  	lis      r3, "zero__10Vector3<f>"@ha
  	lis      r4, __vt__Q23efx3Arg@ha
  	sth      r0, 0x2c(r1)
  	addi     r5, r3, "zero__10Vector3<f>"@l
  	lfs      f2, 0(r5)
  	addi     r0, r4, __vt__Q23efx3Arg@l
  	stw      r7, 0x30(r1)
  	addi     r3, r1, 0x28
  	lfs      f1, 4(r5)
  	addi     r4, r1, 0x18
  	stw      r6, 0x28(r1)
  	lfs      f0, 8(r5)
  	lwz      r5, 4(r31)
  	lfs      f3, 0x25c(r5)
  	lfs      f4, 0x260(r5)
  	lfs      f5, 0x264(r5)
  	stfs     f2, 0x1c(r1)
  	stfs     f1, 0x20(r1)
  	stfs     f0, 0x24(r1)
  	stw      r0, 0x18(r1)
  	stfs     f3, 0x1c(r1)
  	stfs     f4, 0x20(r1)
  	stfs     f5, 0x24(r1)
  	bl       create__Q23efx8TSimple1FPQ23efx3Arg
  	b        lbl_8020E9E8
  
  lbl_8020E938:
  	lis      r4, "zero__10Vector3<f>"@ha
  	lis      r3, __vt__Q23efx5TBase@ha
  	addi     r6, r4, "zero__10Vector3<f>"@l
  	li       r5, 0
  	addi     r0, r3, __vt__Q23efx5TBase@l
  	lfs      f1, 0(r6)
  	lfs      f0, 4(r6)
  	lis      r4, __vt__Q23efx8TSimple3@ha
  	lfs      f3, 8(r6)
  	lis      r6, __vt__Q23efx3Arg@ha
  	lis      r3, __vt__Q23efx9TWeedPull@ha
  	li       r8, 0x1e5
  	addi     r10, r6, __vt__Q23efx3Arg@l
  	li       r7, 0x146
  	li       r6, 0x147
  	stw      r0, 0x50(r1)
  	addi     r9, r4, __vt__Q23efx8TSimple3@l
  	lfs      f2, 0x7c(r1)
  	stfs     f1, 0xc(r1)
  	addi     r0, r3, __vt__Q23efx9TWeedPull@l
  	lfs      f1, 0x80(r1)
  	addi     r3, r1, 0x50
  	stfs     f0, 0x10(r1)
  	addi     r4, r1, 8
  	lfs      f0, 0x84(r1)
  	stfs     f3, 0x14(r1)
  	stw      r9, 0x50(r1)
  	stw      r10, 8(r1)
  	stfs     f2, 0xc(r1)
  	stfs     f1, 0x10(r1)
  	stfs     f0, 0x14(r1)
  	sth      r8, 0x54(r1)
  	sth      r7, 0x56(r1)
  	sth      r6, 0x58(r1)
  	stw      r5, 0x5c(r1)
  	stw      r5, 0x60(r1)
  	stw      r5, 0x64(r1)
  	stw      r0, 0x50(r1)
  	bl       create__Q23efx8TSimple3FPQ23efx3Arg
  	lwz      r3, 4(r31)
  	li       r5, 0x2829
  	lwz      r4, 0x14(r31)
  	li       r6, 1
  	bl       startSound__Q24Game4PikiFPQ24Game8CreatureUlb
  
  lbl_8020E9E8:
  	lbz      r0, 0x78(r1)
  	cmplwi   r0, 0
  	beq      lbl_8020EA00
  	lbz      r0, 0x1c(r31)
  	ori      r0, r0, 0x10
  	stb      r0, 0x1c(r31)
  
  lbl_8020EA00:
  	lbz      r0, 0x1c(r31)
  	ori      r0, r0, 8
  	stb      r0, 0x1c(r31)
  
  lbl_8020EA0C:
  	li       r3, 1
  
  lbl_8020EA10:
  	lwz      r0, 0x94(r1)
  	lwz      r31, 0x8c(r1)
  	mtlr     r0
  	addi     r1, r1, 0x90
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020EA24
   * Size:	000064
   */
  void PikiAI::ActFlockAttack::onKeyEvent(SysShape::KeyEvent const&)
  {
  	/*
  	lwz      r0, 0x1c(r4)
  	cmpwi    r0, 3
  	beq      lbl_8020EA5C
  	bge      lbl_8020EA40
  	cmpwi    r0, 2
  	bge      lbl_8020EA4C
  	blr
  
  lbl_8020EA40:
  	cmpwi    r0, 0x3e8
  	beq      lbl_8020EA78
  	blr
  
  lbl_8020EA4C:
  	lbz      r0, 0x1c(r3)
  	ori      r0, r0, 1
  	stb      r0, 0x1c(r3)
  	blr
  
  lbl_8020EA5C:
  	lbz      r0, 0x1c(r3)
  	rlwinm   r0, r0, 0, 0x18, 0x1e
  	stb      r0, 0x1c(r3)
  	lbz      r0, 0x1c(r3)
  	rlwinm   r0, r0, 0, 0x1d, 0x1b
  	stb      r0, 0x1c(r3)
  	blr
  
  lbl_8020EA78:
  	lbz      r0, 0x1c(r3)
  	ori      r0, r0, 4
  	stb      r0, 0x1c(r3)
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020EA88
   * Size:	00000C
   */
  void PikiAI::ActFlockAttack::cleanup(void)
  {
  	// Generated from stw r0, 0x14(r3)
  	_14 = 0;
  }
  
  /*
   * --INFO--
   * Address:	8020EA94
   * Size:	00000C
   */
  void PikiAI::FlockAttackActionArg::getName(void)
  {
  	/*
  	lis      r3, lbl_80481F70@ha
  	addi     r3, r3, lbl_80481F70@l
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020EAA0
   * Size:	000028
   */
  void __sinit_aiWeed_cpp(void)
  {
  	/*
  	lis      r4, __float_nan@ha
  	li       r0, -1
  	lfs      f0, __float_nan@l(r4)
  	lis      r3, lbl_804BFAA8@ha
  	stw      r0, lbl_80515BC8@sda21(r13)
  	stfsu    f0, lbl_804BFAA8@l(r3)
  	stfs     f0, lbl_80515BCC@sda21(r13)
  	stfs     f0, 4(r3)
  	stfs     f0, 8(r3)
  	blr
  	*/
  }
  
  /*
   * --INFO--
   * Address:	8020EAC8
   * Size:	000014
   */
  void @40 @4 @PikiAI::ActFlockAttack::onKeyEvent(SysShape::KeyEvent const&)
  {
  	/*
  	li       r11, 4
  	lwzx     r11, r3, r11
  	add      r3, r3, r11
  	addi     r3, r3, -40
  	b        onKeyEvent__Q26PikiAI14ActFlockAttackFRCQ28SysShape8KeyEvent
  	*/
  }
  