소스 검색

CFTTPObject::Cache CFTTPhysics::Process 以及静态函数

DESKTOP-AB9OQPJ\RED-10 3 년 전
커밋
049774edfa
100개의 변경된 파일10213개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      .gitignore
  2. 21 0
      build.bat
  3. 6 0
      jni/.vscode/settings.json
  4. 28 0
      jni/AABB.cpp
  5. 42 0
      jni/AABB.h
  6. 38 0
      jni/ACT.cpp
  7. 54 0
      jni/ACT.h
  8. 2495 0
      jni/ANIMHashName.cpp
  9. 8 0
      jni/ANIMHashName.h
  10. 492 0
      jni/Android.mk
  11. 162 0
      jni/AndroidApp.cpp
  12. 57 0
      jni/AndroidApp.h
  13. 8 0
      jni/Application.mk
  14. 27 0
      jni/CAM.cpp
  15. 25 0
      jni/CAM.h
  16. 2 0
      jni/CAndroidBQPlayer.cpp
  17. 30 0
      jni/CAndroidBQPlayer.h
  18. 71 0
      jni/CAnimLib.cpp
  19. 70 0
      jni/CAnimLib.h
  20. 125 0
      jni/CAnimManager.cpp
  21. 86 0
      jni/CAnimManager.h
  22. 148 0
      jni/CBall.cpp
  23. 127 0
      jni/CBall.h
  24. 62 0
      jni/CBallProj.cpp
  25. 53 0
      jni/CBallProj.h
  26. 99 0
      jni/CBallShader.cpp
  27. 97 0
      jni/CBallShader.h
  28. 105 0
      jni/CBlitter.cpp
  29. 96 0
      jni/CBlitter.h
  30. 36 0
      jni/CBlurVShader.cpp
  31. 51 0
      jni/CBlurVShader.h
  32. 15 0
      jni/CCallbackCriticalSection.cpp
  33. 19 0
      jni/CCallbackCriticalSection.h
  34. 44 0
      jni/CCircle2dShader.cpp
  35. 35 0
      jni/CCircle2dShader.h
  36. 22 0
      jni/CColourMulti2dShader.cpp
  37. 33 0
      jni/CColourMulti2dShader.h
  38. 6 0
      jni/CCompatibleRenderPassDescription.cpp
  39. 23 0
      jni/CCompatibleRenderPassDescription.h
  40. 43 0
      jni/CCrowdCardShader.cpp
  41. 47 0
      jni/CCrowdCardShader.h
  42. 26 0
      jni/CCrowdFlagShader.cpp
  43. 27 0
      jni/CCrowdFlagShader.h
  44. 37 0
      jni/CCrowdNewShader.cpp
  45. 62 0
      jni/CCrowdNewShader.h
  46. 101 0
      jni/CCurrency.cpp
  47. 91 0
      jni/CCurrency.h
  48. 46 0
      jni/CCustomTextEntry.cpp
  49. 57 0
      jni/CCustomTextEntry.h
  50. 12 0
      jni/CCustomTextInfo.cpp
  51. 18 0
      jni/CCustomTextInfo.h
  52. 26 0
      jni/CDOFCombineShader.cpp
  53. 27 0
      jni/CDOFCombineShader.h
  54. 42 0
      jni/CDOFShrinkShader.cpp
  55. 53 0
      jni/CDOFShrinkShader.h
  56. 180 0
      jni/CDataBase.cpp
  57. 192 0
      jni/CDataBase.h
  58. 8 0
      jni/CDatabaseEntry.cpp
  59. 16 0
      jni/CDatabaseEntry.h
  60. 19 0
      jni/CDebugDepthShader.cpp
  61. 23 0
      jni/CDebugDepthShader.h
  62. 11 0
      jni/CDeviceReimbursement.cpp
  63. 27 0
      jni/CDeviceReimbursement.h
  64. 58 0
      jni/CDownloads.h
  65. 35 0
      jni/CDressingRoomShader.cpp
  66. 41 0
      jni/CDressingRoomShader.h
  67. 1 0
      jni/CDynamicAABBTree.cpp
  68. 33 0
      jni/CDynamicAABBTree.h
  69. 92 0
      jni/CEasing.cpp
  70. 59 0
      jni/CEasing.h
  71. 667 0
      jni/CFE.cpp
  72. 381 0
      jni/CFE.h
  73. 128 0
      jni/CFE3DPlayer.cpp
  74. 120 0
      jni/CFE3DPlayer.h
  75. 16 0
      jni/CFECloudMessages.h
  76. 132 0
      jni/CFEEffects.cpp
  77. 106 0
      jni/CFEEffects.h
  78. 71 0
      jni/CFEHeroScene.cpp
  79. 49 0
      jni/CFEHeroScene.h
  80. 108 0
      jni/CFEImages.cpp
  81. 67 0
      jni/CFEImages.h
  82. 144 0
      jni/CFEKeyboard.cpp
  83. 132 0
      jni/CFEKeyboard.h
  84. 61 0
      jni/CFESAndroidGraphics.cpp
  85. 42 0
      jni/CFESAndroidGraphics.h
  86. 198 0
      jni/CFESChooseHero.cpp
  87. 107 0
      jni/CFESChooseHero.h
  88. 104 0
      jni/CFESChooseSideHero.cpp
  89. 114 0
      jni/CFESChooseSideHero.h
  90. 41 0
      jni/CFESCredits.cpp
  91. 44 0
      jni/CFESCredits.h
  92. 180 0
      jni/CFESEditPlayer.cpp
  93. 110 0
      jni/CFESEditPlayer.h
  94. 85 0
      jni/CFESGame.cpp
  95. 60 0
      jni/CFESGame.h
  96. 36 0
      jni/CFESIntro.cpp
  97. 30 0
      jni/CFESIntro.h
  98. 176 0
      jni/CFESLevelSelect.cpp
  99. 162 0
      jni/CFESLevelSelect.h
  100. 105 0
      jni/CFESMainMenu.cpp

+ 9 - 0
.gitignore

@@ -0,0 +1,9 @@
+*.o
+*.d
+*.so
+*.a
+*.am
+jni/vorbis/
+libs/armeabi-v7a/
+jni/rapidjson/
+jni/rapidxml/

+ 21 - 0
build.bat

@@ -0,0 +1,21 @@
+@echo off
+
+cls
+
+@set "DIR=%cd%"
+@REM ... use paths relative to current directory
+@set "APP_ROOT=%DIR%/.."
+@set "APP_ANDROID_ROOT=%DIR%"
+
+@echo %time%
+@echo NDK_ROOT = %ANDROID_NDK_HOME%
+@echo APP_ROOT = %APP_ROOT%
+@echo APP_ANDROID_ROOT = %APP_ANDROID_ROOT%
+@echo Using prebuilt externals
+
+rem rd  /S /Q   libs
+rem rd  /S /Q   obj -j16
+
+del s:\libHero.so
+
+call ndk-build.cmd -j 1

+ 6 - 0
jni/.vscode/settings.json

@@ -0,0 +1,6 @@
+{
+    "files.associations": {
+        "xiosbase": "cpp",
+        "iterator": "cpp"
+    }
+}

+ 28 - 0
jni/AABB.cpp

@@ -0,0 +1,28 @@
+#include <math.h>
+#include "AABB.h"
+
+//-------------------------------------------------------------------------------------------------
+//001B45FC
+float *sub_1B45FC(float *result, float *a2, float *a3) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//001B464C
+float *sub_1B464C(float *result, float *a2, float *a3) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//001B2928
+AABB::AABB() {
+}
+//-------------------------------------------------------------------------------------------------
+//001B452C
+float *AABB::Combine(AABB const&a2, bool a3) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//001B4724
+bool AABB::Overlap(AABB const&, AABB const&, bool) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 42 - 0
jni/AABB.h

@@ -0,0 +1,42 @@
+// AABB - [2020-04-13 11:57:46]
+#ifndef _AABB_H_
+#define _AABB_H_
+
+#include "CFTTVector32.h"
+
+/*
+001B2928 AABB::AABB()
+001B452C AABB::Combine(AABB const&,bool)
+001B4724 AABB::Overlap(AABB const&,AABB const&,bool)
+
+0x40
+*/
+
+// 0x6
+struct GFXNETTri {
+  ushort us_0;
+  ushort us_2;
+  ushort us_4;
+};
+
+float* sub_1B45FC(float* result, float* a2, float* a3);
+float* sub_1B464C(float* result, float* a2, float* a3);
+
+class AABB {
+public:
+  AABB();                                               // 001B2928
+  AABB(float f); 
+
+                                         // 被强制inline
+  float* Combine(AABB const&, bool);                    // 001B452C
+  static bool Overlap(AABB const&, AABB const&, bool);  // 001B4724
+
+  CFTTVector32 m_fttVector_0[2][2];
+
+  AABB* m_pAABB_30;
+  AABB* m_pAABB_34;
+  GFXNETTri* m_pGFXNETTri_38;
+  GFXNETTri* m_pGFXNETTri_3C;
+};
+
+#endif  //_AABB_H_

+ 38 - 0
jni/ACT.cpp

@@ -0,0 +1,38 @@
+#include "ACT.h"
+
+//-------------------------------------------------------------------------------------------------
+//0016DA80
+__attribute__((noinline)) void ACT_KickSetup(CPlayer *, TKickSetup *, TPoint3D *, bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//0016DB60
+__attribute__((noinline)) void ACT_KickControlAction(int, TKickSetup *, CPlayer *, TPoint3D, TPoint3D) {
+}
+//-------------------------------------------------------------------------------------------------
+//0016E170
+__attribute__((noinline)) int ACT_GetImpactRot(CPlayer *pPlayer0, CPlayer *pPlayer1) {
+  LOGI("ACT_GetImpactRot %p %p", pPlayer0, pPlayer1);
+  return 1;
+}
+//-------------------------------------------------------------------------------------------------
+//0016E1A4
+__attribute__((noinline)) void ACT_TackleSetPlayerState(CPlayer *, int, int, int, EACTION, TActionSetup *) {
+}
+//-------------------------------------------------------------------------------------------------
+//0016E4B8
+__attribute__((noinline)) void ACT_PressureConservativeTackleInit(int, CPlayer *, CPlayer *) {
+}
+//-------------------------------------------------------------------------------------------------
+//00171DB4
+__attribute__((noinline)) void ACT_PressureJostleStandDisable(CPlayer *) {
+}
+//-------------------------------------------------------------------------------------------------
+//00171DCA
+__attribute__((noinline)) void ACT_PressureJostleStandEnable(CPlayer *, CPlayer *) {
+}
+//-------------------------------------------------------------------------------------------------
+//001D2A14
+__attribute__((noinline)) int ACT_KickCheckInitialPath(CPlayer *, TPoint, TPoint) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 54 - 0
jni/ACT.h

@@ -0,0 +1,54 @@
+//ACT - [2020-04-13 11:57:46]
+#ifndef _ACT_H_
+#define _ACT_H_
+
+#include "CPlayer.h"
+
+/*
+0016DA80 ACT_KickSetup(CPlayer *,TKickSetup *,TPoint3D *,bool)
+0016DB60 ACT_KickControlAction(int,TKickSetup *,CPlayer *,TPoint3D,TPoint3D)
+0016E170 ACT_GetImpactRot(CPlayer *,CPlayer *)
+0016E1A4 ACT_TackleSetPlayerState(CPlayer *,int,int,int,EACTION,TActionSetup *)
+0016E4B8 ACT_PressureConservativeTackleInit(int,CPlayer *,CPlayer *)
+00171DB4 ACT_PressureJostleStandDisable(CPlayer *)
+00171DCA ACT_PressureJostleStandEnable(CPlayer *,CPlayer *)
+001D2A14 ACT_KickCheckInitialPath(CPlayer *,TPoint,TPoint)
+*/
+
+//size: 0x18
+struct TKickSetup {
+  sint16 field_0;
+  sint16 field_2;
+  int filed_4;
+  int filed_8;
+  int filed_C;
+  int filed_10;
+  sint16 filed_14;
+  sint16 filed_16;
+};
+
+//0016DA80
+void ACT_KickSetup(CPlayer *, TKickSetup *, TPoint3D *, bool);
+
+//0016DB60
+void ACT_KickControlAction(int, TKickSetup *, CPlayer *, TPoint3D, TPoint3D);
+
+//0016E170
+int ACT_GetImpactRot(CPlayer *, CPlayer *);
+
+//0016E1A4
+void ACT_TackleSetPlayerState(CPlayer *, int, int, int, EACTION, TActionSetup *);
+
+//0016E4B8
+void ACT_PressureConservativeTackleInit(int, CPlayer *, CPlayer *);
+
+//00171DB4
+void ACT_PressureJostleStandDisable(CPlayer *);
+
+//00171DCA
+void ACT_PressureJostleStandEnable(CPlayer *, CPlayer *);
+
+//001D2A14
+int ACT_KickCheckInitialPath(CPlayer *, TPoint, TPoint);
+
+#endif  //_ACT_H_

+ 2495 - 0
jni/ANIMHashName.cpp

@@ -0,0 +1,2495 @@
+#include "global_func.h"
+#include "ANIMHashName.h"
+
+uint32 ANIM_uHashName[0x9B8];
+
+void sub_10B748() {
+  ANIM_uHashName[0] = FTTHash("ANM_LOCO_EXE104_STAND_TO_WALK_TO_STAND_FORWARDS_WALKLOOP");
+  ANIM_uHashName[1] = FTTHash("ANM_LOCO_EXE104_STAND_TO_WALK_TO_STAND_FORWARDS_WALKLOOP_f");
+  ANIM_uHashName[2] = FTTHash("ANM_STOP_EXE109_STOP_JOG");
+  ANIM_uHashName[3] = FTTHash("ANM_TURN_EXE109_STAND_TO_JOG_TO_STAND_FORWARDS_JOGFW_START");
+  ANIM_uHashName[4] = FTTHash("ANM_LOCO_EXE111_STAND_TO_JOG_TO_STAND_90_SIDEWAYS_STRAFE_JOG90R");
+  ANIM_uHashName[5] = FTTHash("ANM_LOCO_EXE111_STAND_TO_JOG_TO_STAND_90_SIDEWAYS_STRAFE_JOG90R_f");
+  ANIM_uHashName[6] = FTTHash("ANM_LOCO_EXE115_STAND_TO_JOG_TO_STAND_BACKWARDS_JOG_180");
+  ANIM_uHashName[7] = FTTHash("ANM_LOCO_EXE115_STAND_TO_JOG_TO_STAND_BACKWARDS_JOG_180_f");
+  ANIM_uHashName[8] = FTTHash("ANM_TURN_EXE116_STAND_TO_SPRINT_TO_STAND_SPRINT_START");
+  ANIM_uHashName[9] = FTTHash("ANM_NIS_EXE119_MILD_LIMP_WALK");
+  ANIM_uHashName[10] = FTTHash("ANM_NIS_EXE120_STRONG_LIMP_WALK");
+  ANIM_uHashName[11] = FTTHash("ANM_TURN_EXE121_STAND_TURN_R_45");
+  ANIM_uHashName[12] = FTTHash("ANM_TURN_EXE121_STAND_TURN_R_45_f");
+  ANIM_uHashName[13] = FTTHash("ANM_TURN_EXE122_STAND_TURN_R_90");
+  ANIM_uHashName[14] = FTTHash("ANM_TURN_EXE122_STAND_TURN_R_90_f");
+  ANIM_uHashName[15] = FTTHash("ANM_TURN_EXE123_STAND_TURN_R_135");
+  ANIM_uHashName[16] = FTTHash("ANM_TURN_EXE123_STAND_TURN_R_135_f");
+  ANIM_uHashName[17] = FTTHash("ANM_TURN_EXE124_STAND_TURN_R_180");
+  ANIM_uHashName[18] = FTTHash("ANM_TURN_EXE124_STAND_TURN_R_180_f");
+  ANIM_uHashName[19] = FTTHash("ANM_NIS_EXE124_STAND_TURN_R_180_NIS");
+  ANIM_uHashName[20] = FTTHash("ANM_NIS_EXE124_STAND_TURN_R_180_NIS_f");
+  ANIM_uHashName[21] = FTTHash("ANM_TURN_EXE125_WALK_TURN_90_R");
+  ANIM_uHashName[22] = FTTHash("ANM_TURN_EXE125_WALK_TURN_90_R_f");
+  ANIM_uHashName[23] = FTTHash("ANM_TURN_EXE126_WALK_TURN_135_R");
+  ANIM_uHashName[24] = FTTHash("ANM_TURN_EXE126_WALK_TURN_135_R_f");
+  ANIM_uHashName[25] = FTTHash("ANM_TURN_EXE127_WALK_TURN_180_R");
+  ANIM_uHashName[26] = FTTHash("ANM_TURN_EXE127_WALK_TURN_180_R_f");
+  ANIM_uHashName[27] = FTTHash("ANM_STAND_EXE135_STAND_IDLE");
+  ANIM_uHashName[28] = FTTHash("ANM_STAND_EXE135_STAND_IDLE_f");
+  ANIM_uHashName[29] = FTTHash("ANM_STAND_EXE138_STAND_READY_DRIB");
+  ANIM_uHashName[30] = FTTHash("ANM_STAND_EXE138_STAND_READY_DRIB_f");
+  ANIM_uHashName[31] = FTTHash("ANM_STAND_EXE142_JOSTLING_WITH_PLAYER_TO_RIGHT_SIDE");
+  ANIM_uHashName[32] = FTTHash("ANM_STAND_EXE142_JOSTLING_WITH_PLAYER_TO_RIGHT_SIDE_f");
+  ANIM_uHashName[33] = FTTHash("ANM_NIS_EXE144_PRE_KICK_OFF_LOOKING_AROUND_CLAPPING_GETTING_FIRED_UP");
+  ANIM_uHashName[34] = FTTHash("ANM_NIS_EXE144_PRE_KICK_OFF_LOOKING_AROUND_CLAPPING_GETTING_FIRED_UP_f");
+  ANIM_uHashName[35] = FTTHash("ANM_NIS_EXE144_PRE_KICK_OFF_LOOKING_AROUND_CLAPPING_GETTING_FIRED_UP_D");
+  ANIM_uHashName[36] = FTTHash("ANM_NIS_EXE144_PRE_KICK_OFF_LOOKING_AROUND_CLAPPING_GETTING_FIRED_UP_D_f");
+  ANIM_uHashName[37] = FTTHash("ANM_NIS_EXE144_PRE_KICK_OFF_LOOKING_AROUND_CLAPPING_GETTING_FIRED_UP_D_D");
+  ANIM_uHashName[38] = FTTHash("ANM_NIS_EXE144_PRE_KICK_OFF_LOOKING_AROUND_CLAPPING_GETTING_FIRED_UP_D_D_f");
+  ANIM_uHashName[39] = FTTHash("ANM_STAND_EXE145_STAND_IN_WALL___BOTH_HANDS_COVERING_BALLS");
+  ANIM_uHashName[40] = FTTHash("ANM_STAND_EXE145_STAND_IN_WALL___BOTH_HANDS_COVERING_BALLS_f");
+  ANIM_uHashName[41] = FTTHash("ANM_STAND_EXE145_WALL_JUMP___BOTH_HANDS_COVERING_BALLS");
+  ANIM_uHashName[42] = FTTHash("ANM_STAND_EXE145_WALL_JUMP___BOTH_HANDS_COVERING_BALLS_f");
+  ANIM_uHashName[43] = FTTHash("ANM_STOP_EXE148_STAND_TO_WALKING_DRIBBLE_TO_STAND_D");
+  ANIM_uHashName[44] = FTTHash("ANM_STOP_EXE148_STAND_TO_WALKING_DRIBBLE_TO_STAND_D_f");
+  ANIM_uHashName[45] = FTTHash("ANM_STOP_EXE150_STAND_TO_JOGGING_DRIBBLE_TO_STAND");
+  ANIM_uHashName[46] = FTTHash("ANM_STOP_EXE150_STAND_TO_JOGGING_DRIBBLE_TO_STAND_f");
+  ANIM_uHashName[47] = FTTHash("ANM_CONTROL_EXE150_STAND_TO_JOGGING_DRIBBLE_TO_STAND_CTRL");
+  ANIM_uHashName[48] = FTTHash("ANM_CONTROL_EXE150_STAND_TO_JOGGING_DRIBBLE_TO_STAND_CTRL_f");
+  ANIM_uHashName[49] = FTTHash("ANM_CONTROL_EXE150_STAND_TO_JOGGING_DRIBBLE_TO_STAND_DRIBBLE");
+  ANIM_uHashName[50] = FTTHash("ANM_CONTROL_EXE150_STAND_TO_JOGGING_DRIBBLE_TO_STAND_DRIBBLE_f");
+  ANIM_uHashName[51] = FTTHash("ANM_CONTROL_EXE153_SPRINTING_DRIBBLE");
+  ANIM_uHashName[52] = FTTHash("ANM_CONTROL_EXE153_SPRINTING_DRIBBLE_f");
+  ANIM_uHashName[53] = FTTHash("ANM_CONTROL_EXE154_STAND_TO_45_R_FORWARDS_JOGGING_DRIBBLE_CTRL");
+  ANIM_uHashName[54] = FTTHash("ANM_CONTROL_EXE154_STAND_TO_45_R_FORWARDS_JOGGING_DRIBBLE_CTRL_f");
+  ANIM_uHashName[55] = FTTHash("ANM_CONTROL_EXE155_STAND_TO_90_R_JOGGING_DRIBBLE_CTRL");
+  ANIM_uHashName[56] = FTTHash("ANM_CONTROL_EXE155_STAND_TO_90_R_JOGGING_DRIBBLE_CTRL_f");
+  ANIM_uHashName[57] = FTTHash("ANM_CONTROL_EXE156_STAND_TO_135_R_JOGGING_DRIBBLE_CTRL");
+  ANIM_uHashName[58] = FTTHash("ANM_CONTROL_EXE156_STAND_TO_135_R_JOGGING_DRIBBLE_CTRL_f");
+  ANIM_uHashName[59] = FTTHash("ANM_CONTROL_EXE157_STAND_TO_180_R_JOGGING_DRIBBLE_CTRL");
+  ANIM_uHashName[60] = FTTHash("ANM_CONTROL_EXE157_STAND_TO_180_R_JOGGING_DRIBBLE_CTRL_f");
+  ANIM_uHashName[61] = FTTHash("ANM_STOP_EXE158_STAND_TO_PUT_R_FOOT_ON_BALL_TO_STAND");
+  ANIM_uHashName[62] = FTTHash("ANM_STOP_EXE158_STAND_TO_PUT_R_FOOT_ON_BALL_TO_STAND_f");
+  ANIM_uHashName[63] = FTTHash("ANM_CONTROL_EXE161_FORWARD_JOGGING_DRIBBLE_TO_180_R_JOGGING_DRIBBLE");
+  ANIM_uHashName[64] = FTTHash("ANM_CONTROL_EXE161_FORWARD_JOGGING_DRIBBLE_TO_180_R_JOGGING_DRIBBLE_f");
+  ANIM_uHashName[65] = FTTHash("ANM_DEEK_EXE165_MARSEILLE_TURN");
+  ANIM_uHashName[66] = FTTHash("ANM_DEEK_EXE165_MARSEILLE_TURN_f");
+  ANIM_uHashName[67] = FTTHash("ANM_DEEK_EXE168_STAND_TO_L_FOOT_STEPOVER_TO_45_R_JOGGING_DRIBBLE");
+  ANIM_uHashName[68] = FTTHash("ANM_DEEK_EXE168_STAND_TO_L_FOOT_STEPOVER_TO_45_R_JOGGING_DRIBBLE_f");
+  ANIM_uHashName[69] = FTTHash("ANM_DEEK_EXE174_FORWARD_JOGGING_DRIBBLE_TO_L_FOOT_STEPOVER_TO_FORWARD_JOGGING_DRIBBLE");
+  ANIM_uHashName[70] = FTTHash("ANM_DEEK_EXE174_FORWARD_JOGGING_DRIBBLE_TO_L_FOOT_STEPOVER_TO_FORWARD_JOGGING_DRIBBLE_f");
+  ANIM_uHashName[71] = FTTHash("ANM_DEEK_EXE178_JOG_OVER_HEAD_HEEL_FLICK_TO_JOG");
+  ANIM_uHashName[72] = FTTHash("ANM_DEEK_EXE178_JOG_OVER_HEAD_HEEL_FLICK_TO_JOG_f");
+  ANIM_uHashName[73] = FTTHash("ANM_CONTROL_EXE189_STAND_RECEIVE_BALL");
+  ANIM_uHashName[74] = FTTHash("ANM_CONTROL_EXE189_STAND_RECEIVE_BALL_f");
+  ANIM_uHashName[75] = FTTHash("ANM_CONTROL_EXE190_STAND_RECEIVE_BALL_TURN_R_45");
+  ANIM_uHashName[76] = FTTHash("ANM_CONTROL_EXE190_STAND_RECEIVE_BALL_TURN_R_45_f");
+  ANIM_uHashName[77] = FTTHash("ANM_CONTROL_EXE191_STAND_RECEIVE_BALL_TURN_R_90");
+  ANIM_uHashName[78] = FTTHash("ANM_CONTROL_EXE191_STAND_RECEIVE_BALL_TURN_R_90_f");
+  ANIM_uHashName[79] = FTTHash("ANM_CONTROL_EXE192_STAND_RECEIVE_BALL__TURN_R_135");
+  ANIM_uHashName[80] = FTTHash("ANM_CONTROL_EXE192_STAND_RECEIVE_BALL__TURN_R_135_f");
+  ANIM_uHashName[81] = FTTHash("ANM_CONTROL_EXE193_STAND_RECEIVE_BALL__TURN_R_180");
+  ANIM_uHashName[82] = FTTHash("ANM_CONTROL_EXE193_STAND_RECEIVE_BALL__TURN_R_180_f");
+  ANIM_uHashName[83] = FTTHash("ANM_CONTROL_EXE202_STAND_RECEIVE_BALL_AND_PASS_IT_BACK_TO_STAND");
+  ANIM_uHashName[84] = FTTHash("ANM_CONTROL_EXE202_STAND_RECEIVE_BALL_AND_PASS_IT_BACK_TO_STAND_f");
+  ANIM_uHashName[85] = FTTHash("ANM_CONTROL_EXE210_STAND_RECEIVE_BALL_LOW___R_FOOT");
+  ANIM_uHashName[86] = FTTHash("ANM_CONTROL_EXE210_STAND_RECEIVE_BALL_LOW___R_FOOT_f");
+  ANIM_uHashName[87] = FTTHash("ANM_CONTROL_EXE211_STAND_RECEIVE_BALL_KNEE_HIGH___R_FOOT");
+  ANIM_uHashName[88] = FTTHash("ANM_CONTROL_EXE211_STAND_RECEIVE_BALL_KNEE_HIGH___R_FOOT_f");
+  ANIM_uHashName[89] = FTTHash("ANM_CONTROL_EXE212_STAND_RECEIVE_BALL_WAIST_HIGH___R_THIGH");
+  ANIM_uHashName[90] = FTTHash("ANM_CONTROL_EXE212_STAND_RECEIVE_BALL_WAIST_HIGH___R_THIGH_f");
+  ANIM_uHashName[91] = FTTHash("ANM_CONTROL_EXE213_STAND_RECEIVE_BALL_CHEST");
+  ANIM_uHashName[92] = FTTHash("ANM_CONTROL_EXE213_STAND_RECEIVE_BALL_CHEST_f");
+  ANIM_uHashName[93] = FTTHash("ANM_CONTROL_EXE215_STAND_RECEIVE_BALL_ON_R_FOOT__KNEE_HIGH_FAST_BALL_IN");
+  ANIM_uHashName[94] = FTTHash("ANM_CONTROL_EXE215_STAND_RECEIVE_BALL_ON_R_FOOT__KNEE_HIGH_FAST_BALL_IN_f");
+  ANIM_uHashName[95] = FTTHash("ANM_CONTROL_EXE217_STAND_RECEIVE_BALL_WAIST_HIGH___R_THIGH_FAST_BALL_IN");
+  ANIM_uHashName[96] = FTTHash("ANM_CONTROL_EXE217_STAND_RECEIVE_BALL_WAIST_HIGH___R_THIGH_FAST_BALL_IN_f");
+  ANIM_uHashName[97] = FTTHash("ANM_CONTROL_EXE218_STAND_RECEIVE_BALL_CHEST_FAST_BALL_IN");
+  ANIM_uHashName[98] = FTTHash("ANM_CONTROL_EXE218_STAND_RECEIVE_BALL_CHEST_FAST_BALL_IN_f");
+  ANIM_uHashName[99] = FTTHash("ANM_CONTROL_EXE219_STAND_RECEIVE_HEAD__BALL_IN_FAST");
+  ANIM_uHashName[100] = FTTHash("ANM_CONTROL_EXE219_STAND_RECEIVE_HEAD__BALL_IN_FAST_f");
+  ANIM_uHashName[101] = FTTHash("ANM_CONTROL_EXE220_JOG_TO_FWD_CONTROL_ON_INSIDE_OF_R_FOOT_TO_JOG");
+  ANIM_uHashName[102] = FTTHash("ANM_CONTROL_EXE220_JOG_TO_FWD_CONTROL_ON_INSIDE_OF_R_FOOT_TO_JOG_f");
+  ANIM_uHashName[103] = FTTHash("ANM_CONTROL_EXE221_JOG_TO_FWD_CONTROL_ON_THIGH_TO_JOG");
+  ANIM_uHashName[104] = FTTHash("ANM_CONTROL_EXE221_JOG_TO_FWD_CONTROL_ON_THIGH_TO_JOG_f");
+  ANIM_uHashName[105] = FTTHash("ANM_CONTROL_EXE222_JOG_TO_FWD_CONTROL_ON_CHEST_TO_JOG");
+  ANIM_uHashName[106] = FTTHash("ANM_CONTROL_EXE222_JOG_TO_FWD_CONTROL_ON_CHEST_TO_JOG_f");
+  ANIM_uHashName[107] = FTTHash("ANM_CONTROL_EXE224_JOG_FWD_1ST_TOUCH_CONTROL_R_90_AND_JOG_R_90");
+  ANIM_uHashName[108] = FTTHash("ANM_CONTROL_EXE224_JOG_FWD_1ST_TOUCH_CONTROL_R_90_AND_JOG_R_90_f");
+  ANIM_uHashName[109] = FTTHash("ANM_CONTROL_EXE236_STAND_BALL_IN_FROM_R_45_KNEE_FORWARD");
+  ANIM_uHashName[110] = FTTHash("ANM_CONTROL_EXE236_STAND_BALL_IN_FROM_R_45_KNEE_FORWARD_f");
+  ANIM_uHashName[111] = FTTHash("ANM_CONTROL_EXE236_STAND_BALL_IN_FROM_R_45_HIGH_TURN");
+  ANIM_uHashName[112] = FTTHash("ANM_CONTROL_EXE236_STAND_BALL_IN_FROM_R_45_HIGH_TURN_f");
+  ANIM_uHashName[113] = FTTHash("ANM_CONTROL_EXE236_STAND_BALL_IN_FROM_R_45_KNEE_STAND");
+  ANIM_uHashName[114] = FTTHash("ANM_CONTROL_EXE236_STAND_BALL_IN_FROM_R_45_KNEE_STAND_f");
+  ANIM_uHashName[115] = FTTHash("ANM_CONTROL_EXE237_STAND_BALL_IN_FROM_L_45_CHEST_CONTROL_TO_FORWARD_DRIBBLE");
+  ANIM_uHashName[116] = FTTHash("ANM_CONTROL_EXE237_STAND_BALL_IN_FROM_L_45_CHEST_CONTROL_TO_FORWARD_DRIBBLE_f");
+  ANIM_uHashName[117] = FTTHash("ANM_CONTROL_EXE238_STAND_BALL_IN_FROM_L_45_LOW_HEIGHT_CONTROL_TO_FORWARD_DRIBBLE");
+  ANIM_uHashName[118] = FTTHash("ANM_CONTROL_EXE238_STAND_BALL_IN_FROM_L_45_LOW_HEIGHT_CONTROL_TO_FORWARD_DRIBBLE_f");
+  ANIM_uHashName[119] = FTTHash("ANM_CONTROL_EXE239_STAND_BALL_IN_FROM_FORWARD__GOES_OVERHEAD_TURN_L_180_JOG_DRIBBLE");
+  ANIM_uHashName[120] = FTTHash("ANM_CONTROL_EXE239_STAND_BALL_IN_FROM_FORWARD__GOES_OVERHEAD_TURN_L_180_JOG_DRIBBLE_f");
+  ANIM_uHashName[121] = FTTHash("ANM_CONTROL_EXE240_STAND_BALL_IN_FROM_R_90_2_TOUCH_CONTROL_RUN_CTRL");
+  ANIM_uHashName[122] = FTTHash("ANM_CONTROL_EXE240_STAND_BALL_IN_FROM_R_90_2_TOUCH_CONTROL_RUN_CTRL_f");
+  ANIM_uHashName[123] = FTTHash("ANM_CONTROL_EXE242_JOG_FORWARD_BALL_COMES_OVER_L_SHOULDER_CONTROL_LOW_TO_FORWARD_JOG_DRIBBLE");
+  ANIM_uHashName[124] = FTTHash("ANM_CONTROL_EXE242_JOG_FORWARD_BALL_COMES_OVER_L_SHOULDER_CONTROL_LOW_TO_FORWARD_JOG_DRIBBLE_f");
+  ANIM_uHashName[125] = FTTHash("ANM_CONTROL_EXE245_JOG_FORWARD_BALL_COMES_FROM_R_SHOULDER_HEIGHT_TO_FORWARD_JOG_DRIBBLE");
+  ANIM_uHashName[126] = FTTHash("ANM_CONTROL_EXE245_JOG_FORWARD_BALL_COMES_FROM_R_SHOULDER_HEIGHT_TO_FORWARD_JOG_DRIBBLE_f");
+  ANIM_uHashName[127] = FTTHash("ANM_CONTROL_EXE249_JOG_TO_R_KNEE_CONTROL_TO_R_HEEL_CONTROL_TO_FORWARD_JOG_DRIBBLE");
+  ANIM_uHashName[128] = FTTHash("ANM_CONTROL_EXE249_JOG_TO_R_KNEE_CONTROL_TO_R_HEEL_CONTROL_TO_FORWARD_JOG_DRIBBLE_f");
+  ANIM_uHashName[129] = FTTHash("ANM_KICK_EXE302_STAND_KICK_FWD_TO_STAND_SOFT");
+  ANIM_uHashName[130] = FTTHash("ANM_KICK_EXE302_STAND_KICK_FWD_TO_STAND_SOFT_f");
+  ANIM_uHashName[131] = FTTHash("ANM_KICK_EXE303_STAND_KICK_R_45_TO_STAND_SOFT");
+  ANIM_uHashName[132] = FTTHash("ANM_KICK_EXE303_STAND_KICK_R_45_TO_STAND_SOFT_f");
+  ANIM_uHashName[133] = FTTHash("ANM_KICK_EXE304_STAND_KICK_R_90_TO_STAND_SOFT");
+  ANIM_uHashName[134] = FTTHash("ANM_KICK_EXE304_STAND_KICK_R_90_TO_STAND_SOFT_f");
+  ANIM_uHashName[135] = FTTHash("ANM_KICK_EXE305_STAND_KICK_R_135_TO_STAND_SOFT");
+  ANIM_uHashName[136] = FTTHash("ANM_KICK_EXE305_STAND_KICK_R_135_TO_STAND_SOFT_f");
+  ANIM_uHashName[137] = FTTHash("ANM_KICK_EXE306_STAND_KICK_R_180_TO_STAND_SOFT");
+  ANIM_uHashName[138] = FTTHash("ANM_KICK_EXE306_STAND_KICK_R_180_TO_STAND_SOFT_f");
+  ANIM_uHashName[139] = FTTHash("ANM_KICK_EXE310_STAND_KICK_FWD_TO_STAND_MED");
+  ANIM_uHashName[140] = FTTHash("ANM_KICK_EXE310_STAND_KICK_FWD_TO_STAND_MED_f");
+  ANIM_uHashName[141] = FTTHash("ANM_KICK_EXE311_STAND_KICK_R_45_TO_STAND_MED");
+  ANIM_uHashName[142] = FTTHash("ANM_KICK_EXE311_STAND_KICK_R_45_TO_STAND_MED_f");
+  ANIM_uHashName[143] = FTTHash("ANM_KICK_EXE314_STAND_KICK_R_180_TO_STAND_MED");
+  ANIM_uHashName[144] = FTTHash("ANM_KICK_EXE314_STAND_KICK_R_180_TO_STAND_MED_f");
+  ANIM_uHashName[145] = FTTHash("ANM_KICK_EXE315_STAND_KICK_L_135_TO_STAND_MED");
+  ANIM_uHashName[146] = FTTHash("ANM_KICK_EXE315_STAND_KICK_L_135_TO_STAND_MED_f");
+  ANIM_uHashName[147] = FTTHash("ANM_KICK_EXE316_STAND_KICK_L_90_TO_STAND_MED");
+  ANIM_uHashName[148] = FTTHash("ANM_KICK_EXE316_STAND_KICK_L_90_TO_STAND_MED_f");
+  ANIM_uHashName[149] = FTTHash("ANM_KICK_EXE319_STAND_KICK_BALL_SMALL_CHIP_FWD_TO_STAND");
+  ANIM_uHashName[150] = FTTHash("ANM_KICK_EXE319_STAND_KICK_BALL_SMALL_CHIP_FWD_TO_STAND_f");
+  ANIM_uHashName[151] = FTTHash("ANM_KICK_EXE323_STAND_KICK_L_180_TO_STAND_MED_LOB");
+  ANIM_uHashName[152] = FTTHash("ANM_KICK_EXE323_STAND_KICK_L_180_TO_STAND_MED_LOB_f");
+  ANIM_uHashName[153] = FTTHash("ANM_KICK_EXE324_STAND_KICK_L_135_TO_STAND_MED_LOB");
+  ANIM_uHashName[154] = FTTHash("ANM_KICK_EXE324_STAND_KICK_L_135_TO_STAND_MED_LOB_f");
+  ANIM_uHashName[155] = FTTHash("ANM_KICK_EXE325_STAND_KICK_L_90_TO_STAND_MED_LOB");
+  ANIM_uHashName[156] = FTTHash("ANM_KICK_EXE325_STAND_KICK_L_90_TO_STAND_MED_LOB_f");
+  ANIM_uHashName[157] = FTTHash("ANM_KICK_EXE326_STAND_KICK_L_45_TO_STAND_MED_LOB");
+  ANIM_uHashName[158] = FTTHash("ANM_KICK_EXE326_STAND_KICK_L_45_TO_STAND_MED_LOB_f");
+  ANIM_uHashName[159] = FTTHash("ANM_KICK_EXE329_STAND_KICK_FWD_TO_STAND_SHOT");
+  ANIM_uHashName[160] = FTTHash("ANM_KICK_EXE329_STAND_KICK_FWD_TO_STAND_SHOT_f");
+  ANIM_uHashName[161] = FTTHash("ANM_KICK_EXE331_STAND_KICK_R_90_TO_STAND_SHOT");
+  ANIM_uHashName[162] = FTTHash("ANM_KICK_EXE331_STAND_KICK_R_90_TO_STAND_SHOT_f");
+  ANIM_uHashName[163] = FTTHash("ANM_KICK_EXE332_STAND_KICK_R_135_TO_STAND_SHOT");
+  ANIM_uHashName[164] = FTTHash("ANM_KICK_EXE332_STAND_KICK_R_135_TO_STAND_SHOT_f");
+  ANIM_uHashName[165] = FTTHash("ANM_KICK_EXE333_STAND_TO_KICK_R_180_TO_STAND_SHOT");
+  ANIM_uHashName[166] = FTTHash("ANM_KICK_EXE333_STAND_TO_KICK_R_180_TO_STAND_SHOT_f");
+  ANIM_uHashName[167] = FTTHash("ANM_KICK_EXE336_STAND_TO_KICK_L_45_TO_STAND_SHOT");
+  ANIM_uHashName[168] = FTTHash("ANM_KICK_EXE336_STAND_TO_KICK_L_45_TO_STAND_SHOT_f");
+  ANIM_uHashName[169] = FTTHash("ANM_KICK_EXE337_STAND_TO_KICK_FWD_TO_STAND_LOB");
+  ANIM_uHashName[170] = FTTHash("ANM_KICK_EXE337_STAND_TO_KICK_FWD_TO_STAND_LOB_f");
+  ANIM_uHashName[171] = FTTHash("ANM_KICK_EXE347_JOG_KICK_SOFT_FWD_TO_JOG");
+  ANIM_uHashName[172] = FTTHash("ANM_KICK_EXE347_JOG_KICK_SOFT_FWD_TO_JOG_f");
+  ANIM_uHashName[173] = FTTHash("ANM_KICK_EXE348_JOG_KICK_SOFT_R_45_TO_JOG");
+  ANIM_uHashName[174] = FTTHash("ANM_KICK_EXE348_JOG_KICK_SOFT_R_45_TO_JOG_f");
+  ANIM_uHashName[175] = FTTHash("ANM_KICK_EXE349_JOG_KICK_SOFT_FWD_TO_STAND");
+  ANIM_uHashName[176] = FTTHash("ANM_KICK_EXE349_JOG_KICK_SOFT_FWD_TO_STAND_f");
+  ANIM_uHashName[177] = FTTHash("ANM_KICK_EXE350_JOG_KICK_SOFT_R_45_TO_STAND");
+  ANIM_uHashName[178] = FTTHash("ANM_KICK_EXE350_JOG_KICK_SOFT_R_45_TO_STAND_f");
+  ANIM_uHashName[179] = FTTHash("ANM_KICK_EXE351_JOG_KICK_SOFT_R_90_TO_STAND");
+  ANIM_uHashName[180] = FTTHash("ANM_KICK_EXE351_JOG_KICK_SOFT_R_90_TO_STAND_f");
+  ANIM_uHashName[181] = FTTHash("ANM_KICK_EXE352_JOG_KICK_SOFT_R_135_TO_STAND");
+  ANIM_uHashName[182] = FTTHash("ANM_KICK_EXE352_JOG_KICK_SOFT_R_135_TO_STAND_f");
+  ANIM_uHashName[183] = FTTHash("ANM_KICK_EXE353_JOG_KICK_SOFT_R_180_TO_STAND");
+  ANIM_uHashName[184] = FTTHash("ANM_KICK_EXE353_JOG_KICK_SOFT_R_180_TO_STAND_f");
+  ANIM_uHashName[185] = FTTHash("ANM_KICK_EXE354_JOG_BACK_HEEL__TURN_180_TO_STAND");
+  ANIM_uHashName[186] = FTTHash("ANM_KICK_EXE354_JOG_BACK_HEEL__TURN_180_TO_STAND_f");
+  ANIM_uHashName[187] = FTTHash("ANM_KICK_EXE358_JOG_KICK_FWD_MED_TO_STAND");
+  ANIM_uHashName[188] = FTTHash("ANM_KICK_EXE358_JOG_KICK_FWD_MED_TO_STAND_f");
+  ANIM_uHashName[189] = FTTHash("ANM_KICK_EXE361_JOG_KICK_R_135_MED_TO_STAND");
+  ANIM_uHashName[190] = FTTHash("ANM_KICK_EXE361_JOG_KICK_R_135_MED_TO_STAND_f");
+  ANIM_uHashName[191] = FTTHash("ANM_KICK_EXE363_JOG_KICK_R_180_MED_TO_STAND");
+  ANIM_uHashName[192] = FTTHash("ANM_KICK_EXE363_JOG_KICK_R_180_MED_TO_STAND_f");
+  ANIM_uHashName[193] = FTTHash("ANM_KICK_EXE365_JOG_KICK_L_90_MED_TO_STAND");
+  ANIM_uHashName[194] = FTTHash("ANM_KICK_EXE365_JOG_KICK_L_90_MED_TO_STAND_f");
+  ANIM_uHashName[195] = FTTHash("ANM_KICK_EXE366_JOG_KICK_L_45_MED_TO_STAND");
+  ANIM_uHashName[196] = FTTHash("ANM_KICK_EXE366_JOG_KICK_L_45_MED_TO_STAND_f");
+  ANIM_uHashName[197] = FTTHash("ANM_KICK_EXE367_JOG_KICK_FWD_SHOT_TO_STAND");
+  ANIM_uHashName[198] = FTTHash("ANM_KICK_EXE367_JOG_KICK_FWD_SHOT_TO_STAND_f");
+  ANIM_uHashName[199] = FTTHash("ANM_KICK_EXE372_JOG_KICK_L_180_SHOT_TO_STAND");
+  ANIM_uHashName[200] = FTTHash("ANM_KICK_EXE372_JOG_KICK_L_180_SHOT_TO_STAND_f");
+  ANIM_uHashName[201] = FTTHash("ANM_KICK_EXE373_JOG_KICK_L_135_SHOT_TO_STAND");
+  ANIM_uHashName[202] = FTTHash("ANM_KICK_EXE373_JOG_KICK_L_135_SHOT_TO_STAND_f");
+  ANIM_uHashName[203] = FTTHash("ANM_KICK_EXE374_JOG_KICK_L_90_SHOT_TO_STAND");
+  ANIM_uHashName[204] = FTTHash("ANM_KICK_EXE374_JOG_KICK_L_90_SHOT_TO_STAND_f");
+  ANIM_uHashName[205] = FTTHash("ANM_KICK_EXE375_JOG_KICK_L_45_SHOT_TO_STAND");
+  ANIM_uHashName[206] = FTTHash("ANM_KICK_EXE375_JOG_KICK_L_45_SHOT_TO_STAND_f");
+  ANIM_uHashName[207] = FTTHash("ANM_KICKSETPIECE_EXE376_SPK_GK");
+  ANIM_uHashName[208] = FTTHash("ANM_KICKSETPIECE_EXE376_SPK_GK_f");
+  ANIM_uHashName[209] = FTTHash("ANM_KICKSETPIECE_EXE377_SPK_HARD");
+  ANIM_uHashName[210] = FTTHash("ANM_KICKSETPIECE_EXE377_SPK_HARD_f");
+  ANIM_uHashName[211] = FTTHash("ANM_KICK_EXE378_JOG_KICK_R_90_HARD_SHOT_TO_STAND");
+  ANIM_uHashName[212] = FTTHash("ANM_KICK_EXE378_JOG_KICK_R_90_HARD_SHOT_TO_STAND_f");
+  ANIM_uHashName[213] = FTTHash("ANM_KICK_EXE379_JOG_KICK_R_135_HARD_SHOT_TO_STAND");
+  ANIM_uHashName[214] = FTTHash("ANM_KICK_EXE379_JOG_KICK_R_135_HARD_SHOT_TO_STAND_f");
+  ANIM_uHashName[215] = FTTHash("ANM_KICK_EXE380_JOG_KICK_L_180_HARD_SHOT_TO_STAND");
+  ANIM_uHashName[216] = FTTHash("ANM_KICK_EXE380_JOG_KICK_L_180_HARD_SHOT_TO_STAND_f");
+  ANIM_uHashName[217] = FTTHash("ANM_KICK_EXE383_JOG_KICK_L_45_HARD_SHOT_TO_STAND");
+  ANIM_uHashName[218] = FTTHash("ANM_KICK_EXE383_JOG_KICK_L_45_HARD_SHOT_TO_STAND_f");
+  ANIM_uHashName[219] = FTTHash("ANM_KICK_EXE384_JOG_FWD_LOW_CHIP_TO_STAND");
+  ANIM_uHashName[220] = FTTHash("ANM_KICK_EXE384_JOG_FWD_LOW_CHIP_TO_STAND_f");
+  ANIM_uHashName[221] = FTTHash("ANM_KICK_EXE385_JOG_FWD_HIGH_CHIP_TO_STAND");
+  ANIM_uHashName[222] = FTTHash("ANM_KICK_EXE385_JOG_FWD_HIGH_CHIP_TO_STAND_f");
+  ANIM_uHashName[223] = FTTHash("ANM_KICK_EXE386_JOG_L_45_HIGH_CHIP_TO_STAND");
+  ANIM_uHashName[224] = FTTHash("ANM_KICK_EXE386_JOG_L_45_HIGH_CHIP_TO_STAND_f");
+  ANIM_uHashName[225] = FTTHash("ANM_KICK_EXE387_JOG_L_45_LOW_CHIP_TO_STAND");
+  ANIM_uHashName[226] = FTTHash("ANM_KICK_EXE387_JOG_L_45_LOW_CHIP_TO_STAND_f");
+  ANIM_uHashName[227] = FTTHash("ANM_KICK_EXE390_STAND_FWD_SIDE_FOOT_VOLLEY_FORWARD_KNEE_HEIGHT");
+  ANIM_uHashName[228] = FTTHash("ANM_KICK_EXE390_STAND_FWD_SIDE_FOOT_VOLLEY_FORWARD_KNEE_HEIGHT_f");
+  ANIM_uHashName[229] = FTTHash("ANM_KICK_EXE391_STAND_R_45_SIDE_FOOT_VOLLEY_FORWARD_KNEE_HEIGHT");
+  ANIM_uHashName[230] = FTTHash("ANM_KICK_EXE391_STAND_R_45_SIDE_FOOT_VOLLEY_FORWARD_KNEE_HEIGHT_f");
+  ANIM_uHashName[231] = FTTHash("ANM_KICK_EXE392_STAND_R_90_SIDE_FOOT_VOLLEY_FORWARD_KNEE_HEIGHT");
+  ANIM_uHashName[232] = FTTHash("ANM_KICK_EXE392_STAND_R_90_SIDE_FOOT_VOLLEY_FORWARD_KNEE_HEIGHT_f");
+  ANIM_uHashName[233] = FTTHash("ANM_KICK_EXE394_STAND_R_45_TO_WEAK_KNEE_HIGH_VOLLEY_FWD");
+  ANIM_uHashName[234] = FTTHash("ANM_KICK_EXE394_STAND_R_45_TO_WEAK_KNEE_HIGH_VOLLEY_FWD_f");
+  ANIM_uHashName[235] = FTTHash("ANM_KICK_EXE395_STAND_R_90_TO_WEAK_KNEE_HIGH_VOLLEY_FORWARD");
+  ANIM_uHashName[236] = FTTHash("ANM_KICK_EXE395_STAND_R_90_TO_WEAK_KNEE_HIGH_VOLLEY_FORWARD_f");
+  ANIM_uHashName[237] = FTTHash("ANM_KICK_EXE396_STAND_FWD_SIDE_FOOT_HALF_VOLLEY_KNEE_HIGH_FWD_WEAK");
+  ANIM_uHashName[238] = FTTHash("ANM_KICK_EXE396_STAND_FWD_SIDE_FOOT_HALF_VOLLEY_KNEE_HIGH_FWD_WEAK_f");
+  ANIM_uHashName[239] = FTTHash("ANM_KICK_EXE398_STAND_R_45_SIDE_FOOT_HALF_VOLLEY_KNEE_HIGH_FWD_WEAK");
+  ANIM_uHashName[240] = FTTHash("ANM_KICK_EXE398_STAND_R_45_SIDE_FOOT_HALF_VOLLEY_KNEE_HIGH_FWD_WEAK_f");
+  ANIM_uHashName[241] = FTTHash("ANM_KICK_EXE401_VOLLEY_FWD");
+  ANIM_uHashName[242] = FTTHash("ANM_KICK_EXE401_VOLLEY_FWD_f");
+  ANIM_uHashName[243] = FTTHash("ANM_KICK_EXE404_VOLLEY_L_45");
+  ANIM_uHashName[244] = FTTHash("ANM_KICK_EXE404_VOLLEY_L_45_f");
+  ANIM_uHashName[245] = FTTHash("ANM_KICK_EXE407_STAND_BACK_HEEL_L_135");
+  ANIM_uHashName[246] = FTTHash("ANM_KICK_EXE407_STAND_BACK_HEEL_L_135_f");
+  ANIM_uHashName[247] = FTTHash("ANM_KICK_EXE408_STAND_SMALL_FLICK_R_45");
+  ANIM_uHashName[248] = FTTHash("ANM_KICK_EXE408_STAND_SMALL_FLICK_R_45_f");
+  ANIM_uHashName[249] = FTTHash("ANM_KICK_EXE409_STAND_SMALL_FLICK_R_90");
+  ANIM_uHashName[250] = FTTHash("ANM_KICK_EXE409_STAND_SMALL_FLICK_R_90_f");
+  ANIM_uHashName[251] = FTTHash("ANM_KICK_EXE410_STAND_SMALL_FLICK_L_90");
+  ANIM_uHashName[252] = FTTHash("ANM_KICK_EXE410_STAND_SMALL_FLICK_L_90_f");
+  ANIM_uHashName[253] = FTTHash("ANM_KICK_EXE417_JOG_TO_L_45_CROSS_TO_STAND");
+  ANIM_uHashName[254] = FTTHash("ANM_KICK_EXE417_JOG_TO_L_45_CROSS_TO_STAND_f");
+  ANIM_uHashName[255] = FTTHash("ANM_KICK_EXE419_JOG_TO_L_45_CROSS_LOW_TO_STAND");
+  ANIM_uHashName[256] = FTTHash("ANM_KICK_EXE419_JOG_TO_L_45_CROSS_LOW_TO_STAND_f");
+  ANIM_uHashName[257] = FTTHash("ANM_KICK_EXE421_JOG_TO_FWD_SMASH_SHOT");
+  ANIM_uHashName[258] = FTTHash("ANM_KICK_EXE421_JOG_TO_FWD_SMASH_SHOT_f");
+  ANIM_uHashName[259] = FTTHash("ANM_KICKSETPIECE_EXE423_SPK_MED");
+  ANIM_uHashName[260] = FTTHash("ANM_KICKSETPIECE_EXE423_SPK_MED_f");
+  ANIM_uHashName[261] = FTTHash("ANM_KICKSETPIECE_EXE423_SPK_MED_D");
+  ANIM_uHashName[262] = FTTHash("ANM_KICKSETPIECE_EXE423_SPK_MED_D_f");
+  ANIM_uHashName[263] = FTTHash("ANM_KICKSETPIECE_EXE425_SPK_LIGHT");
+  ANIM_uHashName[264] = FTTHash("ANM_KICKSETPIECE_EXE425_SPK_LIGHT_f");
+  ANIM_uHashName[265] = FTTHash("ANM_KICKSETPIECE_EXE425_SPK_LIGHT_D");
+  ANIM_uHashName[266] = FTTHash("ANM_KICKSETPIECE_EXE425_SPK_LIGHT_D_f");
+  ANIM_uHashName[267] = FTTHash("ANM_KICK_EXE427_STAND_TO_HEAD_FWD_TO_STAND___SOFT");
+  ANIM_uHashName[268] = FTTHash("ANM_KICK_EXE427_STAND_TO_HEAD_FWD_TO_STAND___SOFT_f");
+  ANIM_uHashName[269] = FTTHash("ANM_KICK_EXE428_STAND_TO_HEAD_R_45_TO_STAND___SOFT");
+  ANIM_uHashName[270] = FTTHash("ANM_KICK_EXE428_STAND_TO_HEAD_R_45_TO_STAND___SOFT_f");
+  ANIM_uHashName[271] = FTTHash("ANM_KICK_EXE429_STAND_TO_HEAD_R_90_TO_STAND___SOFT");
+  ANIM_uHashName[272] = FTTHash("ANM_KICK_EXE429_STAND_TO_HEAD_R_90_TO_STAND___SOFT_f");
+  ANIM_uHashName[273] = FTTHash("ANM_KICK_EXE431_STAND_TO_HEAD_FWD_TO_STAND___MED");
+  ANIM_uHashName[274] = FTTHash("ANM_KICK_EXE431_STAND_TO_HEAD_FWD_TO_STAND___MED_f");
+  ANIM_uHashName[275] = FTTHash("ANM_KICK_EXE433_STAND_TO_HEAD_R_45_TO_STAND___MED");
+  ANIM_uHashName[276] = FTTHash("ANM_KICK_EXE433_STAND_TO_HEAD_R_45_TO_STAND___MED_f");
+  ANIM_uHashName[277] = FTTHash("ANM_KICK_EXE434_STAND_TO_HEAD_R_90_TO_STAND___MED");
+  ANIM_uHashName[278] = FTTHash("ANM_KICK_EXE434_STAND_TO_HEAD_R_90_TO_STAND___MED_f");
+  ANIM_uHashName[279] = FTTHash("ANM_KICK_EXE435_STAND_TO_HEAD_BEHIND_TO_STAND");
+  ANIM_uHashName[280] = FTTHash("ANM_KICK_EXE435_STAND_TO_HEAD_BEHIND_TO_STAND_f");
+  ANIM_uHashName[281] = FTTHash("ANM_KICK_EXE438_STAND_TO_FLICK_ON_HEADER_L_90_TO_STAND");
+  ANIM_uHashName[282] = FTTHash("ANM_KICK_EXE438_STAND_TO_FLICK_ON_HEADER_L_90_TO_STAND_f");
+  ANIM_uHashName[283] = FTTHash("ANM_KICK_EXE440_JOG_FWD_HEADER_SHOT_TO_JOG");
+  ANIM_uHashName[284] = FTTHash("ANM_KICK_EXE440_JOG_FWD_HEADER_SHOT_TO_JOG_f");
+  ANIM_uHashName[285] = FTTHash("ANM_KICK_EXE441_JOG_FWD_JUMP_HEADER_TO_JOG");
+  ANIM_uHashName[286] = FTTHash("ANM_KICK_EXE441_JOG_FWD_JUMP_HEADER_TO_JOG_f");
+  ANIM_uHashName[287] = FTTHash("ANM_KICK_EXE442_JOG_FWD_SMALL_JUMP_HEADER_TO_JOG");
+  ANIM_uHashName[288] = FTTHash("ANM_KICK_EXE442_JOG_FWD_SMALL_JUMP_HEADER_TO_JOG_f");
+  ANIM_uHashName[289] = FTTHash("ANM_KICK_EXE446_JOG_JUMP_HEAD_L_45_TO_STAND");
+  ANIM_uHashName[290] = FTTHash("ANM_KICK_EXE446_JOG_JUMP_HEAD_L_45_TO_STAND_f");
+  ANIM_uHashName[291] = FTTHash("ANM_KICK_EXE449_JOG_JUMP_HEAD_L_90_HARD_TO_JOG");
+  ANIM_uHashName[292] = FTTHash("ANM_KICK_EXE449_JOG_JUMP_HEAD_L_90_HARD_TO_JOG_f");
+  ANIM_uHashName[293] = FTTHash("ANM_KICK_EXE451_JOG_JUMP_HEAD_BEHIND_TO_JOG");
+  ANIM_uHashName[294] = FTTHash("ANM_KICK_EXE451_JOG_JUMP_HEAD_BEHIND_TO_JOG_f");
+  ANIM_uHashName[295] = FTTHash("ANM_KICK_EXE452_JOG_JUMP_HEAD_UP_TO_JOG");
+  ANIM_uHashName[296] = FTTHash("ANM_KICK_EXE452_JOG_JUMP_HEAD_UP_TO_JOG_f");
+  ANIM_uHashName[297] = FTTHash("ANM_KICK_EXE457_JOG_TO_L_45_VOLLEY_SHOT_WAIST_HIGH_TO_STAND");
+  ANIM_uHashName[298] = FTTHash("ANM_KICK_EXE457_JOG_TO_L_45_VOLLEY_SHOT_WAIST_HIGH_TO_STAND_f");
+  ANIM_uHashName[299] = FTTHash("ANM_KICK_EXE459_JOG_TO_L_45_VOLLEY_SHOT_KNEE_HIGH_TO_STAND");
+  ANIM_uHashName[300] = FTTHash("ANM_KICK_EXE459_JOG_TO_L_45_VOLLEY_SHOT_KNEE_HIGH_TO_STAND_f");
+  ANIM_uHashName[301] = FTTHash("ANM_KICK_EXE460_JOG_TO_L_90_VOLLEY_SHOT_WAIST_HIGH_TO_STAND");
+  ANIM_uHashName[302] = FTTHash("ANM_KICK_EXE460_JOG_TO_L_90_VOLLEY_SHOT_WAIST_HIGH_TO_STAND_f");
+  ANIM_uHashName[303] = FTTHash("ANM_KICK_EXE463_JOG_TO_L_90_VOLLEY_SHOT_KNEE_HIGH_TO_STAND");
+  ANIM_uHashName[304] = FTTHash("ANM_KICK_EXE463_JOG_TO_L_90_VOLLEY_SHOT_KNEE_HIGH_TO_STAND_f");
+  ANIM_uHashName[305] = FTTHash("ANM_KICK_EXE468_STAND_CHEST_FWD");
+  ANIM_uHashName[306] = FTTHash("ANM_KICK_EXE468_STAND_CHEST_FWD_f");
+  ANIM_uHashName[307] = FTTHash("ANM_KICK_EXE476_STAND_L_90_TURN_R_90_CHEST_FWD");
+  ANIM_uHashName[308] = FTTHash("ANM_KICK_EXE476_STAND_L_90_TURN_R_90_CHEST_FWD_f");
+  ANIM_uHashName[309] = FTTHash("ANM_KICK_EXE477_STAND_TO_DIVE_FWD_HEAD_TO_FACE_DOWN");
+  ANIM_uHashName[310] = FTTHash("ANM_KICK_EXE477_STAND_TO_DIVE_FWD_HEAD_TO_FACE_DOWN_f");
+  ANIM_uHashName[311] = FTTHash("ANM_KICK_EXE479_STAND_TO_DIVE_L_45_HEAD_TO_FACE_DOWN");
+  ANIM_uHashName[312] = FTTHash("ANM_KICK_EXE479_STAND_TO_DIVE_L_45_HEAD_TO_FACE_DOWN_f");
+  ANIM_uHashName[313] = FTTHash("ANM_KICK_EXE482_STAND_TO_DIVE_L_90_HEAD_TO_FACE_DOWN");
+  ANIM_uHashName[314] = FTTHash("ANM_KICK_EXE482_STAND_TO_DIVE_L_90_HEAD_TO_FACE_DOWN_f");
+  ANIM_uHashName[315] = FTTHash("ANM_KICK_EXE486_STAND_TO_OVERHEAD_KICK_LAND_ON_L_SIDE");
+  ANIM_uHashName[316] = FTTHash("ANM_KICK_EXE486_STAND_TO_OVERHEAD_KICK_LAND_ON_L_SIDE_f");
+  ANIM_uHashName[317] = FTTHash("ANM_KICK_EXE491_1_FOOTED_LUNGING_HOOK");
+  ANIM_uHashName[318] = FTTHash("ANM_KICK_EXE491_1_FOOTED_LUNGING_HOOK_f");
+  ANIM_uHashName[319] = FTTHash("ANM_TACKLESLIDE_EXE491_1_FOOTED_LUNGING_HOOK_D");
+  ANIM_uHashName[320] = FTTHash("ANM_TACKLESLIDE_EXE491_1_FOOTED_LUNGING_HOOK_D_f");
+  ANIM_uHashName[321] = FTTHash("ANM_TACKLESLIDE_EXE492_1_FOOTED_LUNGING_HOOK");
+  ANIM_uHashName[322] = FTTHash("ANM_TACKLESLIDE_EXE492_1_FOOTED_LUNGING_HOOK_f");
+  ANIM_uHashName[323] = FTTHash("ANM_GETUP_EXE505_GET_UP_FROM_BACK_TO_STAND_QUICKLY");
+  ANIM_uHashName[324] = FTTHash("ANM_GETUP_EXE505_GET_UP_FROM_BACK_TO_STAND_QUICKLY_f");
+  ANIM_uHashName[325] = FTTHash("ANM_GETUP_EXE506_GET_UP_FROM_FRONT_TURN_L_90");
+  ANIM_uHashName[326] = FTTHash("ANM_GETUP_EXE506_GET_UP_FROM_FRONT_TURN_L_90_f");
+  ANIM_uHashName[327] = FTTHash("ANM_GETUP_EXE507_GET_UP_FROM_FRONT");
+  ANIM_uHashName[328] = FTTHash("ANM_GETUP_EXE507_GET_UP_FROM_FRONT_f");
+  ANIM_uHashName[329] = FTTHash("ANM_GETUP_EXE508_GET_UP_FROM_R_SIDE");
+  ANIM_uHashName[330] = FTTHash("ANM_GETUP_EXE508_GET_UP_FROM_R_SIDE_f");
+  ANIM_uHashName[331] = FTTHash("ANM_GETUP_EXE511_GET_UP_FROM_RECLINED_R_SIDE_QUICKLY");
+  ANIM_uHashName[332] = FTTHash("ANM_GETUP_EXE511_GET_UP_FROM_RECLINED_R_SIDE_QUICKLY_f");
+  ANIM_uHashName[333] = FTTHash("ANM_TACKLE_EXE512_STAND_READY_TO_TACKLE_JOG_L_45");
+  ANIM_uHashName[334] = FTTHash("ANM_TACKLE_EXE512_STAND_READY_TO_TACKLE_JOG_L_45_f");
+  ANIM_uHashName[335] = FTTHash("ANM_TACKLE_EXE519_JOG_FWD_TO_TACKLE_TO_JOG_FWD");
+  ANIM_uHashName[336] = FTTHash("ANM_TACKLE_EXE519_JOG_FWD_TO_TACKLE_TO_JOG_FWD_f");
+  ANIM_uHashName[337] = FTTHash("ANM_TACKLE_EXE520_JOG_FWD_TO_TACKLE_TO_JOG_R_45");
+  ANIM_uHashName[338] = FTTHash("ANM_TACKLE_EXE520_JOG_FWD_TO_TACKLE_TO_JOG_R_45_f");
+  ANIM_uHashName[339] = FTTHash("ANM_KICK_EXE526_STAND_BLOCK_KNEE_HIGH_TO_R_WITH_R_FOOT");
+  ANIM_uHashName[340] = FTTHash("ANM_KICK_EXE526_STAND_BLOCK_KNEE_HIGH_TO_R_WITH_R_FOOT_f");
+  ANIM_uHashName[341] = FTTHash("ANM_CONTROL_EXE535_JOG_FWD_TO_JUMP_UP_BLOCK_R_FOOT_UP_AT_HEAD_HEIGHT_TO_THE_SIDE_TO_STAND");
+  ANIM_uHashName[342] = FTTHash("ANM_CONTROL_EXE535_JOG_FWD_TO_JUMP_UP_BLOCK_R_FOOT_UP_AT_HEAD_HEIGHT_TO_THE_SIDE_TO_STAND_f");
+  ANIM_uHashName[343] = FTTHash("ANM_STUMBLE_EXE536_JOG_TO_FLINCH___LARGE_JUMP_TAKE_HIT_ON_THIGH_AT_CHEST_HEIGHT_TO_STAND");
+  ANIM_uHashName[344] = FTTHash("ANM_STUMBLE_EXE536_JOG_TO_FLINCH___LARGE_JUMP_TAKE_HIT_ON_THIGH_AT_CHEST_HEIGHT_TO_STAND_f");
+  ANIM_uHashName[345] = FTTHash("ANM_KICK_EXE538_STAND_BIG_JUMP_HEAD_FWD_SHOT_TO_STAND");
+  ANIM_uHashName[346] = FTTHash("ANM_KICK_EXE538_STAND_BIG_JUMP_HEAD_FWD_SHOT_TO_STAND_f");
+  ANIM_uHashName[347] = FTTHash("ANM_KICK_EXE539_STAND_BIG_JUMP_HEAD_FWD_SHOT_TO_STAND___ACTUALLY_TURNS_L_45_IN_AIR");
+  ANIM_uHashName[348] = FTTHash("ANM_KICK_EXE539_STAND_BIG_JUMP_HEAD_FWD_SHOT_TO_STAND___ACTUALLY_TURNS_L_45_IN_AIR_f");
+  ANIM_uHashName[349] = FTTHash("ANM_KICK_EXE541_JOG_BACKWARDS_JUMP_HEAD_FWD_TO_STAND");
+  ANIM_uHashName[350] = FTTHash("ANM_KICK_EXE541_JOG_BACKWARDS_JUMP_HEAD_FWD_TO_STAND_f");
+  ANIM_uHashName[351] = FTTHash("ANM_KICK_EXE542_JOG_FWD_JUMP_HEADER_TO_STAND");
+  ANIM_uHashName[352] = FTTHash("ANM_KICK_EXE542_JOG_FWD_JUMP_HEADER_TO_STAND_f");
+  ANIM_uHashName[353] = FTTHash("ANM_KICK_EXE544_STAND_CUSHION_HEADER_TO_STAND");
+  ANIM_uHashName[354] = FTTHash("ANM_KICK_EXE544_STAND_CUSHION_HEADER_TO_STAND_f");
+  ANIM_uHashName[355] = FTTHash("ANM_KICK_EXE546_STAND_CUSHION_HEADER_L_45_TO_STAND");
+  ANIM_uHashName[356] = FTTHash("ANM_KICK_EXE546_STAND_CUSHION_HEADER_L_45_TO_STAND_f");
+  ANIM_uHashName[357] = FTTHash("ANM_KICK_EXE548_STAND_CUSHION_HEADER_L_90_TO_STAND");
+  ANIM_uHashName[358] = FTTHash("ANM_KICK_EXE548_STAND_CUSHION_HEADER_L_90_TO_STAND_f");
+  ANIM_uHashName[359] = FTTHash("ANM_KICK_EXE550_JOG_FWD_CUSHION_HEADER_TO_STAND");
+  ANIM_uHashName[360] = FTTHash("ANM_KICK_EXE550_JOG_FWD_CUSHION_HEADER_TO_STAND_f");
+  ANIM_uHashName[361] = FTTHash("ANM_KICK_EXE555_JOG_TO_L_45_CUSHION_HEADER_TO_STAND");
+  ANIM_uHashName[362] = FTTHash("ANM_KICK_EXE555_JOG_TO_L_45_CUSHION_HEADER_TO_STAND_f");
+  ANIM_uHashName[363] = FTTHash("ANM_KICK_EXE558_JOG_TO_L_90_CUSHION_HEADER_TO_STAND");
+  ANIM_uHashName[364] = FTTHash("ANM_KICK_EXE558_JOG_TO_L_90_CUSHION_HEADER_TO_STAND_f");
+  ANIM_uHashName[365] = FTTHash("ANM_THROW_EXE561_STRAIGHT_THROW_IN_MED___FASTER");
+  ANIM_uHashName[366] = FTTHash("ANM_THROW_EXE564_STRAIGHT_THROW_IN_LONG___STEP_BACK_AND_RUN_UP_TO_THROW");
+  ANIM_uHashName[367] = FTTHash("ANM_THROW_EXE564_STRAIGHT_THROW_IN_LONG___STEP_BACK_AND_RUN_UP_TO_THROW_f");
+  ANIM_uHashName[368] = FTTHash("ANM_THROW_EXE568_STRAIGHT_THROW_IN_SHORT");
+  ANIM_uHashName[369] = FTTHash("ANM_THROW_EXE568_STRAIGHT_THROW_IN_SHORT_f");
+  ANIM_uHashName[370] = FTTHash("ANM_STUMBLE_EXE572_STAND_TO_STUMBLE_R_90_TO_STAND___LONGER_STUMBLE");
+  ANIM_uHashName[371] = FTTHash("ANM_STUMBLE_EXE572_STAND_TO_STUMBLE_R_90_TO_STAND___LONGER_STUMBLE_f");
+  ANIM_uHashName[372] = FTTHash("ANM_STUMBLE_EXE573_STAND_TO_STUMBLE_BACKWARDS_TO_STAND");
+  ANIM_uHashName[373] = FTTHash("ANM_STUMBLE_EXE573_STAND_TO_STUMBLE_BACKWARDS_TO_STAND_f");
+  ANIM_uHashName[374] = FTTHash("ANM_STUMBLE_EXE576_JOG_TO_STUMBLE_FWD_TO_JOG___BIGGER_STUMBLE");
+  ANIM_uHashName[375] = FTTHash("ANM_STUMBLE_EXE576_JOG_TO_STUMBLE_FWD_TO_JOG___BIGGER_STUMBLE_f");
+  ANIM_uHashName[376] = FTTHash("ANM_STUMBLE_EXE578_JOG_TO_STUMBLE_R_90_TO_STAND");
+  ANIM_uHashName[377] = FTTHash("ANM_STUMBLE_EXE578_JOG_TO_STUMBLE_R_90_TO_STAND_f");
+  ANIM_uHashName[378] = FTTHash("ANM_FALL_EXE585_STAND_TO_FALL_FORWARD___BOTH_FEET_OFF_FLOOR");
+  ANIM_uHashName[379] = FTTHash("ANM_FALL_EXE585_STAND_TO_FALL_FORWARD___BOTH_FEET_OFF_FLOOR_f");
+  ANIM_uHashName[380] = FTTHash("ANM_FALL_EXE585_LIE_FRONT");
+  ANIM_uHashName[381] = FTTHash("ANM_FALL_EXE585_LIE_FRONT_f");
+  ANIM_uHashName[382] = FTTHash("ANM_FALL_EXE586_STAND_TO_FALL_FORWARD___ONE_FOOT_TAKEN_OUT");
+  ANIM_uHashName[383] = FTTHash("ANM_FALL_EXE586_STAND_TO_FALL_FORWARD___ONE_FOOT_TAKEN_OUT_f");
+  ANIM_uHashName[384] = FTTHash("ANM_FALL_EXE593_JOG_TO_FALL_FORWARD");
+  ANIM_uHashName[385] = FTTHash("ANM_FALL_EXE593_JOG_TO_FALL_FORWARD_f");
+  ANIM_uHashName[386] = FTTHash("ANM_FALL_EXE594_JOG_TO_FALL_FORWARD___BOTH_FEET_OFF_FLOOR");
+  ANIM_uHashName[387] = FTTHash("ANM_FALL_EXE594_JOG_TO_FALL_FORWARD___BOTH_FEET_OFF_FLOOR_f");
+  ANIM_uHashName[388] = FTTHash("ANM_FALL_EXE603_JOG_FALL_OVER_FORWARD__ROLL_OVER_TO_SIDE_FEOTAL_POSITION");
+  ANIM_uHashName[389] = FTTHash("ANM_FALL_EXE603_JOG_FALL_OVER_FORWARD__ROLL_OVER_TO_SIDE_FEOTAL_POSITION_f");
+  ANIM_uHashName[390] = FTTHash("ANM_NIS_EXE605_SITTING_LOOP");
+  ANIM_uHashName[391] = FTTHash("ANM_NIS_EXE615_STAND_TO_ARMS_RAISED_JUMPING_CELEBRATION_TO_STAND");
+  ANIM_uHashName[392] = FTTHash("ANM_NIS_EXE615_STAND_TO_ARMS_RAISED_JUMPING_CELEBRATION_TO_STAND_f");
+  ANIM_uHashName[393] = FTTHash("ANM_NIS_EXE615_STAND_TO_ARMS_RAISED_JUMPING_CELEBRATION_TO_STAND_D");
+  ANIM_uHashName[394] = FTTHash("ANM_NIS_EXE615_STAND_TO_ARMS_RAISED_JUMPING_CELEBRATION_TO_STAND_D_f");
+  ANIM_uHashName[395] = FTTHash("ANM_NIS_EXE627_STAND_HOLDING_BALL_WALK_FWD_TO_STAND_HOLDING_BALL_WALK_GK");
+  ANIM_uHashName[396] = FTTHash("ANM_NIS_EXE628_STAND_TO_JOG_TO_STAND_HOLDING_BALL_2_HANDS");
+  ANIM_uHashName[397] = FTTHash("ANM_STAND_EXE634_STAND_READY_ARMS_OUT_READY_TO_MAKE_A_SAVE_GKREADY");
+  ANIM_uHashName[398] = FTTHash("ANM_SIDESTEP_EXE635_STAND_READY_ARMS_OUT_READY_TO_MAKE_A_SAVE_STRAFE_R");
+  ANIM_uHashName[399] = FTTHash("ANM_SIDESTEP_EXE635_STAND_READY_ARMS_OUT_READY_TO_MAKE_A_SAVE_STRAFE_R_f");
+  ANIM_uHashName[400] = FTTHash("ANM_SIDESTEP_EXE635_STAND_READY_ARMS_OUT_READY_TO_MAKE_A_SAVE_STRAFE_R_D");
+  ANIM_uHashName[401] = FTTHash("ANM_SIDESTEP_EXE635_STAND_READY_ARMS_OUT_READY_TO_MAKE_A_SAVE_STRAFE_R_D_f");
+  ANIM_uHashName[402] = FTTHash("ANM_GK_KICK_EXE639_STAND_HOLDING_BALL_2_HANDS_TO_KICK_R_FOOT");
+  ANIM_uHashName[403] = FTTHash("ANM_GK_KICK_EXE639_STAND_HOLDING_BALL_2_HANDS_TO_KICK_R_FOOT_f");
+  ANIM_uHashName[404] = FTTHash("ANM_GK_KICK_EXE640_STAND_HOLDING_BALL_2_HANDS_TO_KICK_R_FOOT___HOLD_BALL_IN_R_HAND_TO_SIDE_KICK");
+  ANIM_uHashName[405] = FTTHash("ANM_GK_KICK_EXE640_STAND_HOLDING_BALL_2_HANDS_TO_KICK_R_FOOT___HOLD_BALL_IN_R_HAND_TO_SIDE_KICK_f");
+  ANIM_uHashName[406] = FTTHash("ANM_GK_SAVE_EXE646_STAND_TO_CATCH_BALL_WAIST_HEIGHT_TO_STAND");
+  ANIM_uHashName[407] = FTTHash("ANM_GK_SAVE_EXE646_STAND_TO_CATCH_BALL_WAIST_HEIGHT_TO_STAND_f");
+  ANIM_uHashName[408] = FTTHash("ANM_GK_SAVE_EXE647_STAND_TO_CATCH_BALL_KNEE_HEIGHT_TO_STAND");
+  ANIM_uHashName[409] = FTTHash("ANM_GK_SAVE_EXE647_STAND_TO_CATCH_BALL_KNEE_HEIGHT_TO_STAND_f");
+  ANIM_uHashName[410] = FTTHash("ANM_GK_SAVE_EXE648_STAND_TO_CATCH_BALL_FACE_HEIGHT_TO_STAND");
+  ANIM_uHashName[411] = FTTHash("ANM_GK_SAVE_EXE648_STAND_TO_CATCH_BALL_FACE_HEIGHT_TO_STAND_f");
+  ANIM_uHashName[412] = FTTHash("ANM_GK_SAVE_EXE649_STAND_TO_CATCH_BALL_JUST_OVER_HEAD_HEIGHT___LITTLE_JUMP_TO_STAND");
+  ANIM_uHashName[413] = FTTHash("ANM_GK_SAVE_EXE650_STAND_TO_CATCH_HIGH_OVER_HEAD___BIG_JUMP_ARMS_FULL_STRETCH_TO_STAND");
+  ANIM_uHashName[414] = FTTHash("ANM_GK_SAVE_EXE650_STAND_TO_CATCH_HIGH_OVER_HEAD___BIG_JUMP_ARMS_FULL_STRETCH_TO_STAND_f");
+  ANIM_uHashName[415] = FTTHash("ANM_GK_SAVE_EXE651_STAND_TO_CATCH_BALL_ON_FLOOR___KNEEL_DOWN_ONE_KNEE");
+  ANIM_uHashName[416] = FTTHash("ANM_GK_SAVE_EXE651_STAND_TO_CATCH_BALL_ON_FLOOR___KNEEL_DOWN_ONE_KNEE_f");
+  ANIM_uHashName[417] = FTTHash("ANM_GK_SAVE_EXE656_STAND_TO_CATCH_BALL_CHEST_HEIGHT_TO_STAND");
+  ANIM_uHashName[418] = FTTHash("ANM_GK_SAVE_EXE656_STAND_TO_CATCH_BALL_CHEST_HEIGHT_TO_STAND_f");
+  ANIM_uHashName[419] = FTTHash("ANM_GK_SAVE_EXE663_STAND_TO_JOG_FWD_AND_JUMP_TO_CATCH_BALL_OVER_HEAD___ARMS_OUTSTRETCHED");
+  ANIM_uHashName[420] = FTTHash("ANM_GK_SAVE_EXE663_STAND_TO_JOG_FWD_AND_JUMP_TO_CATCH_BALL_OVER_HEAD___ARMS_OUTSTRETCHED_f");
+  ANIM_uHashName[421] = FTTHash("ANM_GK_SAVE_EXE668_STAND_TO_JOG_R_45_SMOTHER_BALL_TO_STAND");
+  ANIM_uHashName[422] = FTTHash("ANM_GK_SAVE_EXE668_STAND_TO_JOG_R_45_SMOTHER_BALL_TO_STAND_f");
+  ANIM_uHashName[423] = FTTHash("ANM_GK_SAVE_EXE673_STAND_TO_DIVE_SAVE_R_LOW_TO_STAND");
+  ANIM_uHashName[424] = FTTHash("ANM_GK_SAVE_EXE673_STAND_TO_DIVE_SAVE_R_LOW_TO_STAND_f");
+  ANIM_uHashName[425] = FTTHash("ANM_GK_SAVE_EXE674_STAND_TO_DIVE_SAVE_R_KNEE_HEIGHT_R_HAND_STRETCHED_TO_STAND");
+  ANIM_uHashName[426] = FTTHash("ANM_GK_SAVE_EXE674_STAND_TO_DIVE_SAVE_R_KNEE_HEIGHT_R_HAND_STRETCHED_TO_STAND_f");
+  ANIM_uHashName[427] = FTTHash("ANM_GK_SAVE_EXE676_STAND_TO_DIVE_SAVE_LOW_R_HAND_OUTSTRETCHED");
+  ANIM_uHashName[428] = FTTHash("ANM_GK_SAVE_EXE676_STAND_TO_DIVE_SAVE_LOW_R_HAND_OUTSTRETCHED_f");
+  ANIM_uHashName[429] = FTTHash("ANM_GK_SAVE_EXE677_STAND_TO_DIVE_R_SAVE_CATCH_MID_HEIGHT_TO_STAND_WITH_BALL");
+  ANIM_uHashName[430] = FTTHash("ANM_GK_SAVE_EXE677_STAND_TO_DIVE_R_SAVE_CATCH_MID_HEIGHT_TO_STAND_WITH_BALL_f");
+  ANIM_uHashName[431] = FTTHash("ANM_GK_SAVE_EXE680_STAND_TO_DIVE_R_CATCH_KNEE_HEIGHT_TO_LYING_ON_SIDE");
+  ANIM_uHashName[432] = FTTHash("ANM_GK_SAVE_EXE680_STAND_TO_DIVE_R_CATCH_KNEE_HEIGHT_TO_LYING_ON_SIDE_f");
+  ANIM_uHashName[433] = FTTHash("ANM_GK_SAVE_EXE681_STAND_TO_DIVE_R_HAND_TIP_BALL_OVER_HIGH_TO_ALL_FOURS");
+  ANIM_uHashName[434] = FTTHash("ANM_GK_SAVE_EXE681_STAND_TO_DIVE_R_HAND_TIP_BALL_OVER_HIGH_TO_ALL_FOURS_f");
+  ANIM_uHashName[435] = FTTHash("ANM_GK_SAVE_EXE682_STAND_TO_DIVE_R_CATCH_WAIST_HEIGHT_TO_LYING_ON_SIDE");
+  ANIM_uHashName[436] = FTTHash("ANM_GK_SAVE_EXE682_STAND_TO_DIVE_R_CATCH_WAIST_HEIGHT_TO_LYING_ON_SIDE_f");
+  ANIM_uHashName[437] = FTTHash("ANM_GK_SAVE_EXE683_STAND_TO_DIVE_R_CATCH_HEAD_HIGH_ABOVE_BODY_TO_LYING_ON_SIDE");
+  ANIM_uHashName[438] = FTTHash("ANM_GK_SAVE_EXE683_STAND_TO_DIVE_R_CATCH_HEAD_HIGH_ABOVE_BODY_TO_LYING_ON_SIDE_f");
+  ANIM_uHashName[439] = FTTHash("ANM_GK_SAVE_EXE685_STAND_TO_DIVE_R_TIP_PARRY_BALL_BOTH_HANDS_HIGH_TO_LYING_ON_SIDE");
+  ANIM_uHashName[440] = FTTHash("ANM_GK_SAVE_EXE685_STAND_TO_DIVE_R_TIP_PARRY_BALL_BOTH_HANDS_HIGH_TO_LYING_ON_SIDE_f");
+  ANIM_uHashName[441] = FTTHash("ANM_GK_SAVE_EXE686_STAND_TO_DIVE_R_CATCH_HIGH_BOTH_HANDS_TO_LYING_ON_SIDE");
+  ANIM_uHashName[442] = FTTHash("ANM_GK_SAVE_EXE686_STAND_TO_DIVE_R_CATCH_HIGH_BOTH_HANDS_TO_LYING_ON_SIDE_f");
+  ANIM_uHashName[443] = FTTHash("ANM_GK_SAVE_EXE688_STAND_READY_TO_SAVE_SPREAD_AND_BLOCK_BALL_R_FOOT_SAVE_TO_STAND_READY_TO_SAVE");
+  ANIM_uHashName[444] = FTTHash("ANM_GK_SAVE_EXE688_STAND_READY_TO_SAVE_SPREAD_AND_BLOCK_BALL_R_FOOT_SAVE_TO_STAND_READY_TO_SAVE_f");
+  ANIM_uHashName[445] = FTTHash("ANM_GK_SAVE_EXE702_STAND_READY_TO_SAVE_JUMP_UP_AND_TIP_OVER_BAR_TO_STAND_READY_TO_SAVE");
+  ANIM_uHashName[446] = FTTHash("ANM_GK_SAVE_EXE702_STAND_READY_TO_SAVE_JUMP_UP_AND_TIP_OVER_BAR_TO_STAND_READY_TO_SAVE_f");
+  ANIM_uHashName[447] = FTTHash("ANM_GK_SAVE_EXE704_STAND_TO_JUMP_TIP_OVER_BAR_TO_STAND");
+  ANIM_uHashName[448] = FTTHash("ANM_GK_SAVE_EXE704_STAND_TO_JUMP_TIP_OVER_BAR_TO_STAND_f");
+  ANIM_uHashName[449] = FTTHash("ANM_GK_SAVE_EXE711_STAND_TO_JOG_OUT_JUMP_AND_PUNCH_BALL_CLEAR_TO_STAND");
+  ANIM_uHashName[450] = FTTHash("ANM_GK_SAVE_EXE711_STAND_TO_JOG_OUT_JUMP_AND_PUNCH_BALL_CLEAR_TO_STAND_f");
+  ANIM_uHashName[451] = FTTHash("ANM_GK_SAVE_EXE713_STAND_TO_JOG_OUT_HIGH_JUMP_AND_PUNCH_BALL_CLEAR_TO_STAND");
+  ANIM_uHashName[452] = FTTHash("ANM_GK_SAVE_EXE713_STAND_TO_JOG_OUT_HIGH_JUMP_AND_PUNCH_BALL_CLEAR_TO_STAND_f");
+  ANIM_uHashName[453] = FTTHash("ANM_GK_SAVE_EXE715_STAND_TO_JOG_OUT_PUNCH_BALL_2_HANDED_TO_STAND_SHORT_JOG_OUT");
+  ANIM_uHashName[454] = FTTHash("ANM_GK_SAVE_EXE715_STAND_TO_JOG_OUT_PUNCH_BALL_2_HANDED_TO_STAND_SHORT_JOG_OUT_f");
+  ANIM_uHashName[455] = FTTHash("ANM_NIS_EXE721__OWEN__RUB_HANDS_TOGETHER_GOAL_CELEB");
+  ANIM_uHashName[456] = FTTHash("ANM_NIS_EXE726_STANDING_ARMS_OUT_A_LITTLE_BASKING_IN_GLORY_GOAL_CELEB");
+  ANIM_uHashName[457] = FTTHash("ANM_NIS_EXE726_STANDING_ARMS_OUT_A_LITTLE_BASKING_IN_GLORY_GOAL_CELEB_f");
+  ANIM_uHashName[458] = FTTHash("ANM_NIS_EXE736_STAND_TO_UPSET_GESTURE_TO_STAND_BAD_OFFSIDE_DECISION");
+  ANIM_uHashName[459] = FTTHash("ANM_NIS_EXE736_STAND_TO_UPSET_GESTURE_TO_STAND_BAD_OFFSIDE_DECISION_f");
+  ANIM_uHashName[460] = FTTHash("ANM_NIS_EXE736_STAND_TO_UPSET_GESTURE_TO_STAND_BAD_OFFSIDE_DECISION_DX");
+  ANIM_uHashName[461] = FTTHash("ANM_NIS_EXE736_STAND_TO_UPSET_GESTURE_TO_STAND_BAD_OFFSIDE_DECISION_DX_f");
+  ANIM_uHashName[462] = FTTHash("ANM_NIS_EXE740_STAND_TO_WALK_FWD_HANDS_ON_HIPS_SHAKING_HEAD_TO_STAND");
+  ANIM_uHashName[463] = FTTHash("ANM_NIS_EXE740_STAND_TO_WALK_FWD_HANDS_ON_HIPS_SHAKING_HEAD_TO_STAND_f");
+  ANIM_uHashName[464] = FTTHash("ANM_NIS_EXE743_STAND_TO_SIT_ON_FLOOR_DEJECTED_LEGS_STRAIGHT");
+  ANIM_uHashName[465] = FTTHash("ANM_NIS_EXE743_STAND_TO_SIT_ON_FLOOR_DEJECTED_LEGS_STRAIGHT_D");
+  ANIM_uHashName[466] = FTTHash("ANM_NIS_EXE744_LIE_ON_SIDE_HOLDING_L_KNEE");
+  ANIM_uHashName[467] = FTTHash("ANM_NIS_EXE744_LIE_ON_SIDE_HOLDING_L_KNEE_f");
+  ANIM_uHashName[468] = FTTHash("ANM_NIS_EXE745_SITTING_HOLDING_R_FOOT");
+  ANIM_uHashName[469] = FTTHash("ANM_NIS_EXE745_SITTING_HOLDING_R_FOOT_f");
+  ANIM_uHashName[470] = FTTHash("ANM_FALL_EXE746_LIE_RSIDE");
+  ANIM_uHashName[471] = FTTHash("ANM_FALL_EXE746_LIE_RSIDE_f");
+  ANIM_uHashName[472] = FTTHash("ANM_FALL_EXE746_LIE_BACK");
+  ANIM_uHashName[473] = FTTHash("ANM_FALL_EXE746_LIE_BACK_f");
+  ANIM_uHashName[474] = FTTHash("ANM_NIS_EXE747_LYING_ON_SIDE_ARM_RAISED_TO_GET_ATTENTION");
+  ANIM_uHashName[475] = FTTHash("ANM_NIS_EXE747_LYING_ON_SIDE_ARM_RAISED_TO_GET_ATTENTION_f");
+  ANIM_uHashName[476] = FTTHash("ANM_GETUP_EXE755_GOALKEEPER_LYING_FACE_DOWN_WITH_BALL_TO_STAND_WITH_BALL");
+  ANIM_uHashName[477] = FTTHash("ANM_GETUP_EXE755_GOALKEEPER_LYING_FACE_DOWN_WITH_BALL_TO_STAND_WITH_BALL_f");
+  ANIM_uHashName[478] = FTTHash("ANM_GETUP_EXE756_GOALKEEPER_LYING_ON_SIDE_TO_STAND_WITH_BALL");
+  ANIM_uHashName[479] = FTTHash("ANM_GETUP_EXE756_GOALKEEPER_LYING_ON_SIDE_TO_STAND_WITH_BALL_f");
+  ANIM_uHashName[480] = FTTHash("ANM_GETUP_EXE757_GOALKEEPER_LYING_ON_SIDE_BALL_IN_OUTSTRETCHED_HANDS_TO_STAND");
+  ANIM_uHashName[481] = FTTHash("ANM_GETUP_EXE757_GOALKEEPER_LYING_ON_SIDE_BALL_IN_OUTSTRETCHED_HANDS_TO_STAND_f");
+  ANIM_uHashName[482] = FTTHash("ANM_SIDESTEP_EXE_2008_STAND_READY_STRAFE_R");
+  ANIM_uHashName[483] = FTTHash("ANM_SIDESTEP_EXE_2008_STAND_READY_STRAFE_R_f");
+  ANIM_uHashName[484] = FTTHash("ANM_REFEREE_EXE618_STAND_BLOW_WHISTLE_TO_STAND");
+  ANIM_uHashName[485] = FTTHash("ANM_REFEREE_EXE621_STAND_BLOW_WHISTLE_AND_POINT_L_45_TO_STAND");
+  ANIM_uHashName[486] = FTTHash("ANM_REFEREE_EXE622STAND_TO_WALK_TO_PLAYER_SHOW_CARD_AND_POINT_SEND_OF_TO_STA");
+  ANIM_uHashName[487] = FTTHash("ANM_REFEREE_EXE622STAND_TO_WALK_TO_PLAYER_SHOW_CARD_AND_POINT_SEND_OF_TO_STA_f");
+  ANIM_uHashName[488] = FTTHash("ANM_REFEREE_EXE623_STAND_TO_WALK_TO_PLAYER_SHOW_CARD_TO_STAND");
+  ANIM_uHashName[489] = FTTHash("ANM_REFEREE_EXE623_STAND_TO_WALK_TO_PLAYER_SHOW_CARD_TO_STAND_f");
+  ANIM_uHashName[490] = FTTHash("ANM_NIS_EXE625_STAND_TO_PLAY_ON_GESTURE_TO_STAND");
+  ANIM_uHashName[491] = FTTHash("ANM_GK_SAVE_EXE657_STAND_TO_CATCH_BALL_WAIST_HEIGHT_TO_STAND");
+  ANIM_uHashName[492] = FTTHash("ANM_GK_SAVE_EXE657_STAND_TO_CATCH_BALL_WAIST_HEIGHT_TO_STAND_f");
+  ANIM_uHashName[493] = FTTHash("ANM_NIS_EXE719_STAND_TO_STAND_HANDS_RAISED_TO_STAND");
+  ANIM_uHashName[494] = FTTHash("ANM_NIS_EXE723_TAKE_A_BOW_GOAL_CELEB");
+  ANIM_uHashName[495] = FTTHash("ANM_NIS_EXE734_STAND_CLUTCH_HEAD_IN_HANDS_GESTURE");
+  ANIM_uHashName[496] = FTTHash("ANM_NIS_EXE734_STAND_CLUTCH_HEAD_IN_HANDS_GESTURE_f");
+  ANIM_uHashName[497] = FTTHash("ANM_NIS_EXE737_STAND_TO_WAG_FINGER_TO_STAND");
+  ANIM_uHashName[498] = FTTHash("ANM_NIS_EXE741_STAND_TO_HANDS_ON_HIPS_LOOK_TO_THE_SKY_WHY_GOD_TO_STAND");
+  ANIM_uHashName[499] = FTTHash("ANM_NIS_EXE748_JOGGING_FWD_CLAPPING");
+  ANIM_uHashName[500] = FTTHash("ANM_STAND_ET126_XF0410_GKHANDONPOST");
+  ANIM_uHashName[501] = FTTHash("ANM_STAND_ET126_XF0410_GKHANDONPOST_f");
+  ANIM_uHashName[502] = FTTHash("ANM_NIS_ET127_XF0410_GKWATCHMISS");
+  ANIM_uHashName[503] = FTTHash("ANM_NIS_ET127_XF0410_GKWATCHMISS_f");
+  ANIM_uHashName[504] = FTTHash("ANM_NIS_ET128_XF0410_GKWATCHMISSHIGH");
+  ANIM_uHashName[505] = FTTHash("ANM_NIS_ET128_XF0410_GKWATCHMISSHIGH_f");
+  ANIM_uHashName[506] = FTTHash("ANM_NIS_ET129_XF0420_B_GKBALLWAVE");
+  ANIM_uHashName[507] = FTTHash("ANM_NIS_ET129_XF0420_B_GKBALLWAVE_f");
+  ANIM_uHashName[508] = FTTHash("ANM_NIS_ET129_XF0420_C_GKBALLLIFTHIGH");
+  ANIM_uHashName[509] = FTTHash("ANM_NIS_ET130_XF0430_GKBALLBOUNCE");
+  ANIM_uHashName[510] = FTTHash("ANM_GK_THROW_ET131_XF0340_GKSTANDROLL_REDUNDANT");
+  ANIM_uHashName[511] = FTTHash("ANM_GK_THROW_ET131_XF0340_GKSTANDROLL_REDUNDANT_f");
+  ANIM_uHashName[512] = FTTHash("ANM_GK_THROW_ET132_XF0350_GKSTANDTHROWLONG_REDUNDANT");
+  ANIM_uHashName[513] = FTTHash("ANM_GK_THROW_ET132_XF0350_GKSTANDTHROWLONG_REDUNDANT_f");
+  ANIM_uHashName[514] = FTTHash("ANM_GK_KICK_ET136_XF0370_GKKICK");
+  ANIM_uHashName[515] = FTTHash("ANM_GK_KICK_ET136_XF0370_GKKICK_f");
+  ANIM_uHashName[516] = FTTHash("ANM_LOCO_ET137_XF0460_WALKLOOP");
+  ANIM_uHashName[517] = FTTHash("ANM_LOCO_ET137_XF0460_WALKLOOP_f");
+  ANIM_uHashName[518] = FTTHash("ANM_LOCO_ET141_XF0450_SPRINTLOOP");
+  ANIM_uHashName[519] = FTTHash("ANM_LOCO_ET141_XF0450_SPRINTLOOP_f");
+  ANIM_uHashName[520] = FTTHash("ANM_LOCO_ET142_XF0450_SPRINTLOOP");
+  ANIM_uHashName[521] = FTTHash("ANM_LOCO_ET142_XF0450_SPRINTLOOP_f");
+  ANIM_uHashName[522] = FTTHash("ANM_LOCO_ET143_XF0450_SPRINTLOOP");
+  ANIM_uHashName[523] = FTTHash("ANM_LOCO_ET143_XF0450_SPRINTLOOP_f");
+  ANIM_uHashName[524] = FTTHash("ANM_GK_SAVE_ET103_XF0250_DIVELOWRIGHT");
+  ANIM_uHashName[525] = FTTHash("ANM_GK_SAVE_ET103_XF0250_DIVELOWRIGHT_f");
+  ANIM_uHashName[526] = FTTHash("ANM_GK_SAVE_ET104_XF0250_DIVELOWRIGHT");
+  ANIM_uHashName[527] = FTTHash("ANM_GK_SAVE_ET104_XF0250_DIVELOWRIGHT_f");
+  ANIM_uHashName[528] = FTTHash("ANM_GK_SAVE_ET105_XF0250_DIVELOWRIGHT");
+  ANIM_uHashName[529] = FTTHash("ANM_GK_SAVE_ET105_XF0250_DIVELOWRIGHT_f");
+  ANIM_uHashName[530] = FTTHash("ANM_GK_SAVE_ET106_XF0260_DIVEFARRIGHT");
+  ANIM_uHashName[531] = FTTHash("ANM_GK_SAVE_ET106_XF0260_DIVEFARRIGHT_f");
+  ANIM_uHashName[532] = FTTHash("ANM_GK_SAVE_ET107_XF0260_DIVEFARRIGHT");
+  ANIM_uHashName[533] = FTTHash("ANM_GK_SAVE_ET107_XF0260_DIVEFARRIGHT_f");
+  ANIM_uHashName[534] = FTTHash("ANM_GK_SAVE_ET108_XF0270_DIVECLOSERIGHT");
+  ANIM_uHashName[535] = FTTHash("ANM_GK_SAVE_ET108_XF0270_DIVECLOSERIGHT_f");
+  ANIM_uHashName[536] = FTTHash("ANM_GK_SAVE_ET109_XF0270_DIVEMIDRIGHT");
+  ANIM_uHashName[537] = FTTHash("ANM_GK_SAVE_ET109_XF0270_DIVEMIDRIGHT_f");
+  ANIM_uHashName[538] = FTTHash("ANM_GK_SAVE_ET110_XF0270_A_DIVEMIDRIGHT");
+  ANIM_uHashName[539] = FTTHash("ANM_GK_SAVE_ET110_XF0270_A_DIVEMIDRIGHT_f");
+  ANIM_uHashName[540] = FTTHash("ANM_GK_SAVE_ET110_XF0270_B_DIVECLOSERIGHT");
+  ANIM_uHashName[541] = FTTHash("ANM_GK_SAVE_ET110_XF0270_B_DIVECLOSERIGHT_f");
+  ANIM_uHashName[542] = FTTHash("ANM_GK_SAVE_ET111_XF0280_A_DIVEFARRIGHT");
+  ANIM_uHashName[543] = FTTHash("ANM_GK_SAVE_ET111_XF0280_A_DIVEFARRIGHT_f");
+  ANIM_uHashName[544] = FTTHash("ANM_GK_SAVE_ET111_XF0280_B_DIVEFARRIGHT");
+  ANIM_uHashName[545] = FTTHash("ANM_GK_SAVE_ET111_XF0280_B_DIVEFARRIGHT_f");
+  ANIM_uHashName[546] = FTTHash("ANM_GK_SAVE_ET111_XF0280_B_DIVEFARRIGHT_2");
+  ANIM_uHashName[547] = FTTHash("ANM_GK_SAVE_ET111_XF0280_B_DIVEFARRIGHT_2_f");
+  ANIM_uHashName[548] = FTTHash("ANM_GK_SAVE_ET114_XF0300_F_CATCHRIGHT");
+  ANIM_uHashName[549] = FTTHash("ANM_GK_SAVE_ET114_XF0300_F_CATCHRIGHT_f");
+  ANIM_uHashName[550] = FTTHash("ANM_GK_SAVE_ET115_XF0310_A_BLOCKLOWLEFT");
+  ANIM_uHashName[551] = FTTHash("ANM_GK_SAVE_ET115_XF0310_A_BLOCKLOWLEFT_f");
+  ANIM_uHashName[552] = FTTHash("ANM_GK_SAVE_ET115_XF0310_B_DIVEMISSRIGHT");
+  ANIM_uHashName[553] = FTTHash("ANM_GK_SAVE_ET115_XF0310_B_DIVEMISSRIGHT_f");
+  ANIM_uHashName[554] = FTTHash("ANM_GK_SAVE_ET115_XF0310_C_DIVEBLOCKFWD");
+  ANIM_uHashName[555] = FTTHash("ANM_GK_SAVE_ET115_XF0310_C_DIVEBLOCKFWD_f");
+  ANIM_uHashName[556] = FTTHash("ANM_GK_SAVE_ET116_XF0310_A_BLOCKLOWLEFT");
+  ANIM_uHashName[557] = FTTHash("ANM_GK_SAVE_ET116_XF0310_A_BLOCKLOWLEFT_f");
+  ANIM_uHashName[558] = FTTHash("ANM_GK_SAVE_ET116_XF0310_B_BLOCKLOWLEFT");
+  ANIM_uHashName[559] = FTTHash("ANM_GK_SAVE_ET116_XF0310_B_BLOCKLOWLEFT_f");
+  ANIM_uHashName[560] = FTTHash("ANM_GK_SAVE_ET119_XF0320_CATCHMID");
+  ANIM_uHashName[561] = FTTHash("ANM_GK_SAVE_ET119_XF0320_CATCHMID_f");
+  ANIM_uHashName[562] = FTTHash("ANM_TACKLESLIDE_ET228_XF0830_SLIDETACKLE");
+  ANIM_uHashName[563] = FTTHash("ANM_TACKLESLIDE_ET228_XF0830_SLIDETACKLE_f");
+  ANIM_uHashName[564] = FTTHash("ANM_TACKLESLIDE_ET232_XF0830_SLIDETACKLE");
+  ANIM_uHashName[565] = FTTHash("ANM_TACKLESLIDE_ET232_XF0830_SLIDETACKLE_f");
+  ANIM_uHashName[566] = FTTHash("ANM_NIS_ET234_XF0030_B_CELEBSTAND");
+  ANIM_uHashName[567] = FTTHash("ANM_NIS_ET234_XF0030_B_CELEBSTAND_f");
+  ANIM_uHashName[568] = FTTHash("ANM_NIS_ET234_XF0030_C_CELEBSTAND");
+  ANIM_uHashName[569] = FTTHash("ANM_NIS_ET234_XF0030_C_CELEBSTAND_f");
+  ANIM_uHashName[570] = FTTHash("ANM_NIS_ET234_XF0030_D_CELEBSTAND");
+  ANIM_uHashName[571] = FTTHash("ANM_NIS_ET234_XF0030_D_CELEBSTAND_f");
+  ANIM_uHashName[572] = FTTHash("ANM_NIS_ET234_XF0030_E_CELEBSTAND");
+  ANIM_uHashName[573] = FTTHash("ANM_NIS_ET235_XF0030_B_CELEBSTAND");
+  ANIM_uHashName[574] = FTTHash("ANM_NIS_ET235_XF0030_B_CELEBSTAND_f");
+  ANIM_uHashName[575] = FTTHash("ANM_NIS_ET235_XF0030_C_CELEBSTAND");
+  ANIM_uHashName[576] = FTTHash("ANM_NIS_ET235_XF0030_C_CELEBSTAND_f");
+  ANIM_uHashName[577] = FTTHash("ANM_NIS_ET235_XF0030_D_CELEBSTAND");
+  ANIM_uHashName[578] = FTTHash("ANM_NIS_ET235_XF0030_D_CELEBSTAND_f");
+  ANIM_uHashName[579] = FTTHash("ANM_NIS_ET236_XF0030_CELEBSTAND");
+  ANIM_uHashName[580] = FTTHash("ANM_NIS_ET237_XF0040_CELEBRUN");
+  ANIM_uHashName[581] = FTTHash("ANM_NIS_ET239_XF0050_CELEBRUN");
+  ANIM_uHashName[582] = FTTHash("ANM_KICK_ET219_XF0770A_KICKDESPERATE");
+  ANIM_uHashName[583] = FTTHash("ANM_KICK_ET219_XF0770A_KICKDESPERATE_f");
+  ANIM_uHashName[584] = FTTHash("ANM_KICK_ET219_XF0770B_KICKDESPERATE");
+  ANIM_uHashName[585] = FTTHash("ANM_KICK_ET219_XF0770B_KICKDESPERATE_f");
+  ANIM_uHashName[586] = FTTHash("ANM_KICK_ET219_XF0770D_KICKDESPERATE");
+  ANIM_uHashName[587] = FTTHash("ANM_KICK_ET219_XF0770D_KICKDESPERATE_f");
+  ANIM_uHashName[588] = FTTHash("ANM_TACKLESLIDE_ET222_XF0790_SLIDE");
+  ANIM_uHashName[589] = FTTHash("ANM_TACKLESLIDE_ET222_XF0790_SLIDE_f");
+  ANIM_uHashName[590] = FTTHash("ANM_STUMBLE_ET304_XF0490_RUNJUMP");
+  ANIM_uHashName[591] = FTTHash("ANM_STUMBLE_ET304_XF0490_RUNJUMP_f");
+  ANIM_uHashName[592] = FTTHash("ANM_STUMBLE_ET310_XF0510_RUNPUSHED");
+  ANIM_uHashName[593] = FTTHash("ANM_STUMBLE_ET310_XF0510_RUNPUSHED_f");
+  ANIM_uHashName[594] = FTTHash("ANM_NIS_ET316_XF0540_WALKINTRO");
+  ANIM_uHashName[595] = FTTHash("ANM_NIS_ET317_XF0550_WALKINTRO");
+  ANIM_uHashName[596] = FTTHash("ANM_NIS_ET317_XF0550_WALKINTRO_HANDS_DOWN");
+  ANIM_uHashName[597] = FTTHash("ANM_NIS_ET318_XF0550_WALKINTRO");
+  ANIM_uHashName[598] = FTTHash("ANM_NIS_ET320_XF0560_WALKINTRO");
+  ANIM_uHashName[599] = FTTHash("ANM_NIS_ET325_XF0580_WALKJOGINTRO");
+  ANIM_uHashName[600] = FTTHash("ANM_NIS_ET326_XF0590_JOGINTRO");
+  ANIM_uHashName[601] = FTTHash("ANM_NIS_ET327_XF0590_JOGINTRO");
+  ANIM_uHashName[602] = FTTHash("ANM_TURN_ET327_XF0590_JOGINTRO_TURN180_90");
+  ANIM_uHashName[603] = FTTHash("ANM_TURN_ET327_XF0590_JOGINTRO_TURN180_90_f");
+  ANIM_uHashName[604] = FTTHash("ANM_NIS_ET329_XF0670A_STANDWARMUP");
+  ANIM_uHashName[605] = FTTHash("ANM_NIS_ET329_XF0670C_STANDWARMUP");
+  ANIM_uHashName[606] = FTTHash("ANM_NIS_ET329_XF0670D_STANDWARMUP");
+  ANIM_uHashName[607] = FTTHash("ANM_NIS_ET329_XF0670E_STANDWARMUP");
+  ANIM_uHashName[608] = FTTHash("ANM_NIS_ET329_XF0670F_STANDWARMUP");
+  ANIM_uHashName[609] = FTTHash("ANM_NIS_ET329_XF0670F_STANDWARMUP_D");
+  ANIM_uHashName[610] = FTTHash("ANM_NIS_ET329_XF0670G_STANDWARMUP");
+  ANIM_uHashName[611] = FTTHash("ANM_NIS_ET329_XF0670H_STANDWARMUP");
+  ANIM_uHashName[612] = FTTHash("ANM_NIS_ET329_XF0670I_STANDWARMUP");
+  ANIM_uHashName[613] = FTTHash("ANM_NIS_ET330_XF0640A_STANDWARMUP");
+  ANIM_uHashName[614] = FTTHash("ANM_NIS_ET330_XF0640B_STANDGESTURE");
+  ANIM_uHashName[615] = FTTHash("ANM_NIS_ET330_XF0640C_STANDGESTURE");
+  ANIM_uHashName[616] = FTTHash("ANM_NIS_ET330_XF0640D_STANDGESTURE");
+  ANIM_uHashName[617] = FTTHash("ANM_NIS_ET330_XF0640D_STANDGESTURE_f");
+  ANIM_uHashName[618] = FTTHash("ANM_NIS_ET330_XF0640E_STANDGESTURE");
+  ANIM_uHashName[619] = FTTHash("ANM_STAND_ET330_XF0640F_STANDWARMUP");
+  ANIM_uHashName[620] = FTTHash("ANM_STAND_ET331_XF0650A_STANDINTRO");
+  ANIM_uHashName[621] = FTTHash("ANM_STAND_ET331_XF0650B_STANDINTRO");
+  ANIM_uHashName[622] = FTTHash("ANM_STAND_ET331_XF0650C_STANDINTRO");
+  ANIM_uHashName[623] = FTTHash("ANM_STAND_ET331_XF0650D_STANDINTRO");
+  ANIM_uHashName[624] = FTTHash("ANM_NIS_ET332_XF0690A_NISLIFTCUP");
+  ANIM_uHashName[625] = FTTHash("ANM_NIS_ET333_XF0690A_NISLIFTCUP");
+  ANIM_uHashName[626] = FTTHash("ANM_NIS_ET333_XF0690B_NISCUPDOWN");
+  ANIM_uHashName[627] = FTTHash("ANM_REFEREE_ET335_XF0840B_REFGESTURE");
+  ANIM_uHashName[628] = FTTHash("ANM_REFEREE_ET335_XF0840B_REFGESTURE_f");
+  ANIM_uHashName[629] = FTTHash("ANM_REFEREE_ET335_XF0840C_REF_BOOK_N_SENTOFF");
+  ANIM_uHashName[630] = FTTHash("ANM_REFEREE_ET335_XF0840C_REF_BOOK_N_SENTOFF_f");
+  ANIM_uHashName[631] = FTTHash("ANM_REFEREE_ET336_XF0860_REF_WANKER");
+  ANIM_uHashName[632] = FTTHash("ANM_REFEREE_ET336_XF0860_REF_WANKER_f");
+  ANIM_uHashName[633] = FTTHash("ANM_KICK_ET338_NONAME_KICK");
+  ANIM_uHashName[634] = FTTHash("ANM_KICK_ET338_NONAME_KICK_f");
+  ANIM_uHashName[635] = FTTHash("ANM_KICK_ET339_NONAME_KICKFLICK");
+  ANIM_uHashName[636] = FTTHash("ANM_KICK_ET339_NONAME_KICKFLICK_f");
+  ANIM_uHashName[637] = FTTHash("ANM_KICK_ET340_NONAME_A_KICK");
+  ANIM_uHashName[638] = FTTHash("ANM_KICK_ET340_NONAME_A_KICK_f");
+  ANIM_uHashName[639] = FTTHash("ANM_KICK_ET340_NONAME_B_KICK");
+  ANIM_uHashName[640] = FTTHash("ANM_KICK_ET340_NONAME_B_KICK_f");
+  ANIM_uHashName[641] = FTTHash("ANM_DEEK_ET341_NONAME_SP_STEPOVER");
+  ANIM_uHashName[642] = FTTHash("ANM_DEEK_ET341_NONAME_SP_STEPOVER_f");
+  ANIM_uHashName[643] = FTTHash("ANM_NIS_ET343_NONAME_A_ARMSOUTBOTH");
+  ANIM_uHashName[644] = FTTHash("ANM_NIS_ET343_NONAME_B_ARMOUTRIGHT");
+  ANIM_uHashName[645] = FTTHash("ANM_NIS_ET343_NONAME_B_ARMOUTRIGHT_f");
+  ANIM_uHashName[646] = FTTHash("ANM_NIS_ET345_NONAME_WALKINTRO");
+  ANIM_uHashName[647] = FTTHash("ANM_NIS_ET345_NONAME_WALKINTRO_f");
+  ANIM_uHashName[648] = FTTHash("ANM_NIS_ET350_NONAME_STANDKICKOFFREADY");
+  ANIM_uHashName[649] = FTTHash("ANM_NIS_ET350_NONAME_STANDKICKOFFREADY_f");
+  ANIM_uHashName[650] = FTTHash("ANM_NIS_ET351_NONAME_PUT_BALL_DOWN");
+  ANIM_uHashName[651] = FTTHash("ANM_NIS_ET351_NONAME_PICK_UP_BALL");
+  ANIM_uHashName[652] = FTTHash("ANM_NIS_ET351_NONAME_PICK_UP_BALL_f");
+  ANIM_uHashName[653] = FTTHash("ANM_GK_SAVE_ET111_XF0280_C_GKDIVEFAR");
+  ANIM_uHashName[654] = FTTHash("ANM_GK_SAVE_ET111_XF0280_C_GKDIVEFAR_f");
+  ANIM_uHashName[655] = FTTHash("ANM_GK_SAVE_ET111_XF0280_D_GKDIVEFAR");
+  ANIM_uHashName[656] = FTTHash("ANM_GK_SAVE_ET111_XF0280_D_GKDIVEFAR_f");
+  ANIM_uHashName[657] = FTTHash("ANM_GK_SAVE_ET112_XF0260_GKDIVELOW");
+  ANIM_uHashName[658] = FTTHash("ANM_GK_SAVE_ET112_XF0260_GKDIVELOW_f");
+  ANIM_uHashName[659] = FTTHash("ANM_GK_SAVE_ET113_XF0290_GKDIVEADJUST");
+  ANIM_uHashName[660] = FTTHash("ANM_GK_SAVE_ET113_XF0290_GKDIVEADJUST_f");
+  ANIM_uHashName[661] = FTTHash("ANM_GK_SAVE_ET114_XF0300_A_GKDIVEHIGHFAR");
+  ANIM_uHashName[662] = FTTHash("ANM_GK_SAVE_ET114_XF0300_A_GKDIVEHIGHFAR_f");
+  ANIM_uHashName[663] = FTTHash("ANM_GK_SAVE_ET114_XF0300_B_GKDIVEMEDFAR");
+  ANIM_uHashName[664] = FTTHash("ANM_GK_SAVE_ET114_XF0300_B_GKDIVEMEDFAR_f");
+  ANIM_uHashName[665] = FTTHash("ANM_GK_SAVE_ET114_XF0300_C_GKDIVEMEDFAR");
+  ANIM_uHashName[666] = FTTHash("ANM_GK_SAVE_ET114_XF0300_C_GKDIVEMEDFAR_f");
+  ANIM_uHashName[667] = FTTHash("ANM_GK_SAVE_ET114_XF0300_D_GKDIVEMED");
+  ANIM_uHashName[668] = FTTHash("ANM_GK_SAVE_ET114_XF0300_D_GKDIVEMED_f");
+  ANIM_uHashName[669] = FTTHash("ANM_GK_SAVE_ET114_XF0300_E_GKDIVEMEDFAR");
+  ANIM_uHashName[670] = FTTHash("ANM_GK_SAVE_ET114_XF0300_E_GKDIVEMEDFAR_f");
+  ANIM_uHashName[671] = FTTHash("ANM_GK_SAVE_ET118_XF0320_GKBLOCKCLOSE");
+  ANIM_uHashName[672] = FTTHash("ANM_GK_SAVE_ET118_XF0320_GKBLOCKCLOSE_f");
+  ANIM_uHashName[673] = FTTHash("ANM_NIS_ET250_XF0100_JOGINTRO");
+  ANIM_uHashName[674] = FTTHash("ANM_NIS_ET250_XF0100_JOGINTRO_f");
+  ANIM_uHashName[675] = FTTHash("ANM_NIS_ET251_XF0110_CELEBTORRES");
+  ANIM_uHashName[676] = FTTHash("ANM_NIS_ET251_XF0110_CELEBTORRES_END");
+  ANIM_uHashName[677] = FTTHash("ANM_NIS_ET252_XF0130_CELEBDIVE");
+  ANIM_uHashName[678] = FTTHash("ANM_NIS_ET252_XF0130_CELEBDIVE_END");
+  ANIM_uHashName[679] = FTTHash("ANM_NIS_ET253_XF0130_CELEBGAZZA");
+  ANIM_uHashName[680] = FTTHash("ANM_NIS_ET253_XF0130_CELEBGAZZA_END");
+  ANIM_uHashName[681] = FTTHash("ANM_NIS_ET260_XF0170_A_UPSETHEADHANDS");
+  ANIM_uHashName[682] = FTTHash("ANM_NIS_ET260_XF0170_B_UPSETKNEES");
+  ANIM_uHashName[683] = FTTHash("ANM_NIS_ET260_XF0170_B_UPSETKNEES_f");
+  ANIM_uHashName[684] = FTTHash("ANM_NIS_ET261_XF0190_UPSETPOINTSPOT");
+  ANIM_uHashName[685] = FTTHash("ANM_NIS_ET261_XF0190_UPSETPOINTSPOT_f");
+  ANIM_uHashName[686] = FTTHash("ANM_NIS_ET263_XF0220_A_UPSETWAVEHAND");
+  ANIM_uHashName[687] = FTTHash("ANM_NIS_ET263_XF0220_A_UPSETWAVEHAND_f");
+  ANIM_uHashName[688] = FTTHash("ANM_NIS_ET263_XF0220_B_UPSETWAVEHANDS");
+  ANIM_uHashName[689] = FTTHash("ANM_NIS_ET263_XF0220_B_UPSETWAVEHANDS_f");
+  ANIM_uHashName[690] = FTTHash("ANM_NIS_ET264_XF0230_UPSETWHOME");
+  ANIM_uHashName[691] = FTTHash("ANM_NIS_ET264_XF0230_UPSETWHOME_f");
+  ANIM_uHashName[692] = FTTHash("ANM_NIS_ET265_XF0240_SHAKEHEADWALKAWAY");
+  ANIM_uHashName[693] = FTTHash("ANM_NIS_ET265_XF0240_SHAKEHEADWALKAWAY_f");
+  ANIM_uHashName[694] = FTTHash("ANM_CONTROL_EXE235_STAND_BALL_IN_FROM_R_45_CONTROL");
+  ANIM_uHashName[695] = FTTHash("ANM_CONTROL_EXE235_STAND_BALL_IN_FROM_R_45_CONTROL_f");
+  ANIM_uHashName[696] = FTTHash("ANM_CONTROL_EXE235_STAND_BALL_IN_FROM_R_45_CONTROL_1");
+  ANIM_uHashName[697] = FTTHash("ANM_CONTROL_EXE235_STAND_BALL_IN_FROM_R_45_CONTROL_1_f");
+  ANIM_uHashName[698] = FTTHash("ANM_CONTROL_EXE235_STAND_BALL_IN_FROM_R_45_CONTROL_2");
+  ANIM_uHashName[699] = FTTHash("ANM_CONTROL_EXE235_STAND_BALL_IN_FROM_R_45_CONTROL_2_f");
+  ANIM_uHashName[700] = FTTHash("ANM_STAND_EXE143_PRE_KICKOFF_KEEPING_MOVING");
+  ANIM_uHashName[701] = FTTHash("ANM_REFEREE_LINESMAN_CORNER_LEFT");
+  ANIM_uHashName[702] = FTTHash("ANM_REFEREE_LINESMAN_CORNER_RIGHT");
+  ANIM_uHashName[703] = FTTHash("ANM_SIDESTEP_ET502_EX2001_SIDESTEP_FW");
+  ANIM_uHashName[704] = FTTHash("ANM_SIDESTEP_ET503_EX2002_SIDESTEP_45");
+  ANIM_uHashName[705] = FTTHash("ANM_SIDESTEP_ET503_EX2002_SIDESTEP_45_f");
+  ANIM_uHashName[706] = FTTHash("ANM_SIDESTEP_ET504_EX2003_SIDESTEP_90");
+  ANIM_uHashName[707] = FTTHash("ANM_SIDESTEP_ET504_EX2003_SIDESTEP_90_f");
+  ANIM_uHashName[708] = FTTHash("ANM_SIDESTEP_ET505_EX2004_SIDESTEP_135");
+  ANIM_uHashName[709] = FTTHash("ANM_SIDESTEP_ET505_EX2004_SIDESTEP_135_f");
+  ANIM_uHashName[710] = FTTHash("ANM_SIDESTEP_ET507_EX2005_SIDESTEP_180");
+  ANIM_uHashName[711] = FTTHash("ANM_SIDESTEP_ET507_EX2005_SIDESTEP_180_f");
+  ANIM_uHashName[712] = FTTHash("ANM_SIDESTEP_ET508_EX2006_SIDESTEPLOW_0");
+  ANIM_uHashName[713] = FTTHash("ANM_SIDESTEP_ET509_EX2007_SIDESTEPLOW_45");
+  ANIM_uHashName[714] = FTTHash("ANM_SIDESTEP_ET509_EX2007_SIDESTEPLOW_45_f");
+  ANIM_uHashName[715] = FTTHash("ANM_SIDESTEP_ET510_EX2008_SIDESTEPLOW_90");
+  ANIM_uHashName[716] = FTTHash("ANM_SIDESTEP_ET510_EX2008_SIDESTEPLOW_90_f");
+  ANIM_uHashName[717] = FTTHash("ANM_SIDESTEP_ET511_EX2009_SIDESTEPLOW135");
+  ANIM_uHashName[718] = FTTHash("ANM_SIDESTEP_ET511_EX2009_SIDESTEPLOW135_f");
+  ANIM_uHashName[719] = FTTHash("ANM_SIDESTEP_ET512_EX2010_SIDESTEPLOW_180");
+  ANIM_uHashName[720] = FTTHash("ANM_SIDESTEP_ET512_EX2010_SIDESTEPLOW_180_f");
+  ANIM_uHashName[721] = FTTHash("ANM_LOCO_ET513_EX2011_WALK_FW");
+  ANIM_uHashName[722] = FTTHash("ANM_LOCO_ET513_EX2011_WALK_FW_f");
+  ANIM_uHashName[723] = FTTHash("ANM_LOCO_ET518_EX2015_JOG_JOSTLE_JOSTLER");
+  ANIM_uHashName[724] = FTTHash("ANM_LOCO_ET518_EX2015_JOG_JOSTLE_JOSTLER_f");
+  ANIM_uHashName[725] = FTTHash("ANM_LOCO_ET520_EX2020_SPRINT_SJOSTLER");
+  ANIM_uHashName[726] = FTTHash("ANM_LOCO_ET520_EX2020_SPRINT_SJOSTLER_f");
+  ANIM_uHashName[727] = FTTHash("ANM_CONTROL_ET525_EX2013_DRIBBL");
+  ANIM_uHashName[728] = FTTHash("ANM_CONTROL_ET525_EX2013_DRIBBL_f");
+  ANIM_uHashName[729] = FTTHash("ANM_CONTROL_ET531_EX2018_DRIBBLE_STRETCH");
+  ANIM_uHashName[730] = FTTHash("ANM_CONTROL_ET531_EX2018_DRIBBLE_STRETCH_f");
+  ANIM_uHashName[731] = FTTHash("ANM_CONTROL_ET535_EX2018_DRIBBLE");
+  ANIM_uHashName[732] = FTTHash("ANM_CONTROL_ET535_EX2018_DRIBBLE_f");
+  ANIM_uHashName[733] = FTTHash("ANM_CONTROL_ET538_EX2013_DRIBBLE");
+  ANIM_uHashName[734] = FTTHash("ANM_CONTROL_ET538_EX2013_DRIBBLE_f");
+  ANIM_uHashName[735] = FTTHash("ANM_CONTROL_ET547_EX2024_TURNBALL_180L");
+  ANIM_uHashName[736] = FTTHash("ANM_CONTROL_ET547_EX2024_TURNBALL_180L_f");
+  ANIM_uHashName[737] = FTTHash("ANM_CONTROL_ET550_EX2026_CONTROL_KNEE");
+  ANIM_uHashName[738] = FTTHash("ANM_CONTROL_ET550_EX2026_CONTROL_KNEE_f");
+  ANIM_uHashName[739] = FTTHash("ANM_CONTROL_ET600_EX2028_CONTROL_LOW");
+  ANIM_uHashName[740] = FTTHash("ANM_CONTROL_ET600_EX2028_CONTROL_LOW_f");
+  ANIM_uHashName[741] = FTTHash("ANM_TACKLE_ET600_EX2028_CONTROL_LOW_D");
+  ANIM_uHashName[742] = FTTHash("ANM_TACKLE_ET600_EX2028_CONTROL_LOW_D_f");
+  ANIM_uHashName[743] = FTTHash("ANM_CONTROL_ET604_EX2029_CONTROL_LOW");
+  ANIM_uHashName[744] = FTTHash("ANM_CONTROL_ET604_EX2029_CONTROL_LOW_f");
+  ANIM_uHashName[745] = FTTHash("ANM_CONTROL_ET606_EX2029_CONTROL_LOW");
+  ANIM_uHashName[746] = FTTHash("ANM_CONTROL_ET606_EX2029_CONTROL_LOW_f");
+  ANIM_uHashName[747] = FTTHash("ANM_CONTROL_ET610_EX2030_CONTROL_FLICK");
+  ANIM_uHashName[748] = FTTHash("ANM_CONTROL_ET610_EX2030_CONTROL_FLICK_f");
+  ANIM_uHashName[749] = FTTHash("ANM_NIS_ET621_EX2037_SLIDE");
+  ANIM_uHashName[750] = FTTHash("ANM_TACKLESLIDE_ET624_EX2037_SLIDE_WITH_GETUP");
+  ANIM_uHashName[751] = FTTHash("ANM_TACKLESLIDE_ET624_EX2037_SLIDE_WITH_GETUP_f");
+  ANIM_uHashName[752] = FTTHash("ANM_GETUP_ET624_EX2037_GETUP_LEFT_KNEE_DOWN");
+  ANIM_uHashName[753] = FTTHash("ANM_GETUP_ET624_EX2037_GETUP_LEFT_KNEE_DOWN_f");
+  ANIM_uHashName[754] = FTTHash("ANM_TACKLESLIDE_ET627_EX2037_SLIDE");
+  ANIM_uHashName[755] = FTTHash("ANM_TACKLESLIDE_ET627_EX2037_SLIDE_f");
+  ANIM_uHashName[756] = FTTHash("ANM_TACKLE_ET631_EX2037_TACKLE");
+  ANIM_uHashName[757] = FTTHash("ANM_TACKLE_ET631_EX2037_TACKLE_f");
+  ANIM_uHashName[758] = FTTHash("ANM_NIS_ET638_EX2039_CELEB_RUN_ARM_UP");
+  ANIM_uHashName[759] = FTTHash("ANM_NIS_ET638_EX2039_CELEB_RUN_ARM_UP_f");
+  ANIM_uHashName[760] = FTTHash("ANM_NIS_ET639_EX2040_CELEB_RUN_ARMS_UP");
+  ANIM_uHashName[761] = FTTHash("ANM_NIS_ET640_EX2041_CELEB_RUN_POINT");
+  ANIM_uHashName[762] = FTTHash("ANM_NIS_ET641_EX2040_CELEB_RUN_ARMSOUT");
+  ANIM_uHashName[763] = FTTHash("ANM_NIS_ET643_EX2042_CELEB_BACKWARDS_TURN");
+  ANIM_uHashName[764] = FTTHash("ANM_NIS_ET643_EX2042_CELEB_BACKWARDS_TURN_f");
+  ANIM_uHashName[765] = FTTHash("ANM_NIS_ET644_EX2043_UPSET_JOG");
+  ANIM_uHashName[766] = FTTHash("ANM_NIS_ET645_EX2044_UPSET_JOG");
+  ANIM_uHashName[767] = FTTHash("ANM_NIS_ET646_EX2045_HAPPY_JOG");
+  ANIM_uHashName[768] = FTTHash("ANM_NIS_ET647_EX2046_HAPPY_JOG");
+  ANIM_uHashName[769] = FTTHash("ANM_NIS_ET648_EX2047_WALK_FIDGET");
+  ANIM_uHashName[770] = FTTHash("ANM_NIS_ET650_EX2048_WALK_SHAKE_HEAD");
+  ANIM_uHashName[771] = FTTHash("ANM_NIS_ET651_EX2049_WALK_FORLORN");
+  ANIM_uHashName[772] = FTTHash("ANM_NIS_ET652_EX2050_WALK_SATISFIED");
+  ANIM_uHashName[773] = FTTHash("ANM_NIS_ET654_EX2051_WALK_CLAP");
+  ANIM_uHashName[774] = FTTHash("ANM_NIS_ET655_EX2052_WALK_WITH_BALL");
+  ANIM_uHashName[775] = FTTHash("ANM_NIS_ET701_EX2053_WALK_HANDS_ON_HEAD");
+  ANIM_uHashName[776] = FTTHash("ANM_NIS_ET702_EX2053_WALK_TOUCH_FACE");
+  ANIM_uHashName[777] = FTTHash("ANM_NIS_ET703_EX2054_UPSET_TURN_L");
+  ANIM_uHashName[778] = FTTHash("ANM_NIS_ET703_EX2054_UPSET_TURN_L_f");
+  ANIM_uHashName[779] = FTTHash("ANM_NIS_ET705_EX2055_ANGY_TURN_L");
+  ANIM_uHashName[780] = FTTHash("ANM_NIS_ET705_EX2055_ANGY_TURN_L_f");
+  ANIM_uHashName[781] = FTTHash("ANM_NIS_ET706_EX2056_ANGRY_TURN_L");
+  ANIM_uHashName[782] = FTTHash("ANM_NIS_ET706_EX2056_ANGRY_TURN_L_f");
+  ANIM_uHashName[783] = FTTHash("ANM_NIS_ET707_EX2057_ANGRY_TURN_L");
+  ANIM_uHashName[784] = FTTHash("ANM_NIS_ET707_EX2057_ANGRY_TURN_L_f");
+  ANIM_uHashName[785] = FTTHash("ANM_NIS_ET709_EX2058_UPSET_TURN_L");
+  ANIM_uHashName[786] = FTTHash("ANM_NIS_ET709_EX2058_UPSET_TURN_L_f");
+  ANIM_uHashName[787] = FTTHash("ANM_NIS_ET710_EX2059_UPSET_TURN_L");
+  ANIM_uHashName[788] = FTTHash("ANM_NIS_ET710_EX2059_UPSET_TURN_L_f");
+  ANIM_uHashName[789] = FTTHash("ANM_NIS_ET713_EX2061_CLAP_TURN_L");
+  ANIM_uHashName[790] = FTTHash("ANM_NIS_ET713_EX2061_CLAP_TURN_L_f");
+  ANIM_uHashName[791] = FTTHash("ANM_NIS_ET714_EX2060_FRUSTRATED_TURN_L");
+  ANIM_uHashName[792] = FTTHash("ANM_NIS_ET714_EX2060_FRUSTRATED_TURN_L_f");
+  ANIM_uHashName[793] = FTTHash("ANM_NIS_ET715_EX2062_HAPPY_TURN_L");
+  ANIM_uHashName[794] = FTTHash("ANM_NIS_ET715_EX2062_HAPPY_TURN_L_f");
+  ANIM_uHashName[795] = FTTHash("ANM_NIS_ET716_EX2063_GESTURE_TURN_L");
+  ANIM_uHashName[796] = FTTHash("ANM_NIS_ET716_EX2063_GESTURE_TURN_L_f");
+  ANIM_uHashName[797] = FTTHash("ANM_NIS_ET717_EX2064_GESTURE_BALL_TURN_L");
+  ANIM_uHashName[798] = FTTHash("ANM_NIS_ET717_EX2064_GESTURE_BALL_TURN_L_f");
+  ANIM_uHashName[799] = FTTHash("ANM_NIS_ET718_EX2065_WHO_ME_TURN_L");
+  ANIM_uHashName[800] = FTTHash("ANM_NIS_ET718_EX2065_WHO_ME_TURN_L_f");
+  ANIM_uHashName[801] = FTTHash("ANM_NIS_ET718_EX2065_COME_ON_REF_TURN");
+  ANIM_uHashName[802] = FTTHash("ANM_NIS_ET718_EX2065_COME_ON_REF_TURN_f");
+  ANIM_uHashName[803] = FTTHash("ANM_NIS_ET722_EX2067_TIE_SHOELACE");
+  ANIM_uHashName[804] = FTTHash("ANM_NIS_ET722_EX2067_TIE_SHOELACE_f");
+  ANIM_uHashName[805] = FTTHash("ANM_STAND_ET723_EX2068_FIDGET");
+  ANIM_uHashName[806] = FTTHash("ANM_STAND_ET724_EX2068_FIDGET");
+  ANIM_uHashName[807] = FTTHash("ANM_STAND_ET725_EX2068_FIDGET");
+  ANIM_uHashName[808] = FTTHash("ANM_STAND_ET725_EX2068_FIDGET_f");
+  ANIM_uHashName[809] = FTTHash("ANM_STAND_ET726_EX2069_FIDGET");
+  ANIM_uHashName[810] = FTTHash("ANM_STAND_ET727_EX2070_FIDGET");
+  ANIM_uHashName[811] = FTTHash("ANM_STAND_ET727_EX2070_FIDGET_f");
+  ANIM_uHashName[812] = FTTHash("ANM_STAND_ET729_EX2071_FIDGET");
+  ANIM_uHashName[813] = FTTHash("ANM_STAND_ET729_EX2071_FIDGET_f");
+  ANIM_uHashName[814] = FTTHash("ANM_STAND_ET730_EX2072_FIDGET");
+  ANIM_uHashName[815] = FTTHash("ANM_STAND_ET730_EX2072_FIDGET_f");
+  ANIM_uHashName[816] = FTTHash("ANM_STAND_ET731_EX2073_FIDGET");
+  ANIM_uHashName[817] = FTTHash("ANM_STAND_ET732_EX2074_FIDGET");
+  ANIM_uHashName[818] = FTTHash("ANM_STAND_ET732_EX2074_FIDGET_f");
+  ANIM_uHashName[819] = FTTHash("ANM_STAND_ET734_EX2075_FIDGET");
+  ANIM_uHashName[820] = FTTHash("ANM_STAND_ET735_EX2076_FIDGET");
+  ANIM_uHashName[821] = FTTHash("ANM_NIS_ET736_EX2077_FOLD_END");
+  ANIM_uHashName[822] = FTTHash("ANM_NIS_ET736_EX2077_FOLD_ARMS_LOOP");
+  ANIM_uHashName[823] = FTTHash("ANM_NIS_ET736_EX2077_FOLD_ARMS_START");
+  ANIM_uHashName[824] = FTTHash("ANM_NIS_ET737_EX2078_ARMS_IN_FRONT");
+  ANIM_uHashName[825] = FTTHash("ANM_NIS_ET737_EX2078_ARMS_IN_FRONT_LOOP");
+  ANIM_uHashName[826] = FTTHash("ANM_NIS_ET738_EX2079_ARMS_BEHIND");
+  ANIM_uHashName[827] = FTTHash("ANM_NIS_ET738_EX2079_ARMS_BEHIND_LOOP");
+  ANIM_uHashName[828] = FTTHash("ANM_NIS_ET740_EX2080_STAND_CLAP");
+  ANIM_uHashName[829] = FTTHash("ANM_STAND_ET742_EX2075_FIDGET_SCRATCH_BALLS");
+  ANIM_uHashName[830] = FTTHash("ANM_NIS_ET744_EX2081_GIVE_DRINKS_BOTTLES");
+  ANIM_uHashName[831] = FTTHash("ANM_NIS_ET746_EX2082_TAKE_DRINK_BOTTLE");
+  ANIM_uHashName[832] = FTTHash("ANM_NIS_ET746_EX2082_TAKE_DRINK_BOTTLE_f");
+  ANIM_uHashName[833] = FTTHash("ANM_NIS_ET747_EX2083_TOUCH_FLOOR_RUN_ON");
+  ANIM_uHashName[834] = FTTHash("ANM_NIS_ET748_EX2084_CLAP_RUN_ON");
+  ANIM_uHashName[835] = FTTHash("ANM_NIS_ET750_EX2085_PICK_BALL_UP_TURN");
+  ANIM_uHashName[836] = FTTHash("ANM_NIS_ET750_EX2085_PICK_BALL_UP_TURN_f");
+  ANIM_uHashName[837] = FTTHash("ANM_NIS_ET751_EX2086_PLACE_BALL");
+  ANIM_uHashName[838] = FTTHash("ANM_NIS_ET802_EX2087_PLACE_BALL");
+  ANIM_uHashName[839] = FTTHash("ANM_NIS_ET802_EX2087_PLACE_BALL_f");
+  ANIM_uHashName[840] = FTTHash("ANM_NIS_ET804_EX2086_POSITION_BALL");
+  ANIM_uHashName[841] = FTTHash("ANM_NIS_ET804_EX2086_POSITION_BALL_f");
+  ANIM_uHashName[842] = FTTHash("ANM_NIS_ET805_EX2088_CATCH_BALL");
+  ANIM_uHashName[843] = FTTHash("ANM_NIS_ET805_EX2088_CATCH_BALL_f");
+  ANIM_uHashName[844] = FTTHash("ANM_NIS_ET809_EX2089_A_STRETCH");
+  ANIM_uHashName[845] = FTTHash("ANM_NIS_ET809_EX2089_B_STRETCH");
+  ANIM_uHashName[846] = FTTHash("ANM_NIS_ET809_EX2089_C_STRETCH");
+  ANIM_uHashName[847] = FTTHash("ANM_NIS_ET809_EX2089_D_STRETCH");
+  ANIM_uHashName[848] = FTTHash("ANM_NIS_ET809_EX2089_E_STRETCH");
+  ANIM_uHashName[849] = FTTHash("ANM_NIS_ET809_EX2089_F_STRETCH");
+  ANIM_uHashName[850] = FTTHash("ANM_NIS_ET809_EX2089_G_JOG_ON_SPOT");
+  ANIM_uHashName[851] = FTTHash("ANM_NIS_ET809_EX2089_H_STRETCH");
+  ANIM_uHashName[852] = FTTHash("ANM_NIS_ET810_EX2089_A_STRETCH_WARM_UP");
+  ANIM_uHashName[853] = FTTHash("ANM_NIS_ET810_EX2089_B_JUMP_WARM_UP");
+  ANIM_uHashName[854] = FTTHash("ANM_NIS_ET811_EX2097_CELEB_DANCE_ROBOT");
+  ANIM_uHashName[855] = FTTHash("ANM_NIS_ET811_EX2097_CELEB_DANCE_ROBOT_f");
+  ANIM_uHashName[856] = FTTHash("ANM_NIS_ET812_EX2098_CELEB_VIOLIN");
+  ANIM_uHashName[857] = FTTHash("ANM_NIS_ET813_EX2099_CELEB_ARMS_WIDE");
+  ANIM_uHashName[858] = FTTHash("ANM_NIS_ET814_EX2100_CELEB_POINT_TO_NAME");
+  ANIM_uHashName[859] = FTTHash("ANM_NIS_ET814_EX2100_CELEB_POINT_TO_NAME_f");
+  ANIM_uHashName[860] = FTTHash("ANM_NIS_ET815_EX2101_GET_BALL_FROM_GOAL");
+  ANIM_uHashName[861] = FTTHash("ANM_NIS_ET815_EX2101_GET_BALL_FROM_GOAL_f");
+  ANIM_uHashName[862] = FTTHash("ANM_NIS_ET818_EX2103_CELEB_SALUTE");
+  ANIM_uHashName[863] = FTTHash("ANM_NIS_ET818_EX2103_CELEB_SALUTE_f");
+  ANIM_uHashName[864] = FTTHash("ANM_NIS_ET820_EX2104_CELEB_DJ_TURNTABLE");
+  ANIM_uHashName[865] = FTTHash("ANM_NIS_ET821_EX2106_CROUCH_DOWN");
+  ANIM_uHashName[866] = FTTHash("ANM_NIS_ET821_EX2106_CROUCH_DOWN_END");
+  ANIM_uHashName[867] = FTTHash("ANM_NIS_ET821_EX2106_CROUCH_DOWN_END_f");
+  ANIM_uHashName[868] = FTTHash("ANM_NIS_ET822_EX2107_CROUCH_DOWN");
+  ANIM_uHashName[869] = FTTHash("ANM_NIS_ET822_EX2107_CROUCH_DOWN_END");
+  ANIM_uHashName[870] = FTTHash("ANM_NIS_ET822_EX2107_CROUCH_DOWN_END_f");
+  ANIM_uHashName[871] = FTTHash("ANM_NIS_ET824_EX2108_JUMP_TOUCH_BAR");
+  ANIM_uHashName[872] = FTTHash("ANM_NIS_ET825_EX2109_PEN_GK_WIDE_ARMS");
+  ANIM_uHashName[873] = FTTHash("ANM_NIS_ET826_EX2110_PEN_GK_LOOK_AROUND");
+  ANIM_uHashName[874] = FTTHash("ANM_NIS_ET827_EX2111_MANAGER_ANGRY");
+  ANIM_uHashName[875] = FTTHash("ANM_NIS_ET827_EX2111_MANAGER_ANGRY_f");
+  ANIM_uHashName[876] = FTTHash("ANM_NIS_ET828_EX2112_MANAGER_ANGRY");
+  ANIM_uHashName[877] = FTTHash("ANM_NIS_ET828_EX2112_MANAGER_ANGRY_f");
+  ANIM_uHashName[878] = FTTHash("ANM_NIS_ET829_EX2113_MANAGER_INSTRUCTIONS");
+  ANIM_uHashName[879] = FTTHash("ANM_NIS_ET829_EX2113_MANAGER_INSTRUCTIONS_f");
+  ANIM_uHashName[880] = FTTHash("ANM_NIS_ET830_EX2114_GK_SPIT_GLOVES");
+  ANIM_uHashName[881] = FTTHash("ANM_NIS_ET831_EX2115_MANAGER_INSTRUCTIONS");
+  ANIM_uHashName[882] = FTTHash("ANM_NIS_ET831_EX2115_MANAGER_INSTRUCTIONS_f");
+  ANIM_uHashName[883] = FTTHash("ANM_NIS_ET832_EX2116_MANAGER_INSTRUCTIONS");
+  ANIM_uHashName[884] = FTTHash("ANM_NIS_ET832_EX2116_MANAGER_INSTRUCTIONS_f");
+  ANIM_uHashName[885] = FTTHash("ANM_NIS_ET834_EX2117_MANAGER_WIDE_ARMS");
+  ANIM_uHashName[886] = FTTHash("ANM_NIS_ET835_EX2118_MANAGER_ANGRY");
+  ANIM_uHashName[887] = FTTHash("ANM_NIS_ET835_EX2118_MANAGER_ANGRY_f");
+  ANIM_uHashName[888] = FTTHash("ANM_NIS_ET837_EX2118_MANAGER_ANGRY");
+  ANIM_uHashName[889] = FTTHash("ANM_NIS_ET837_EX2118_MANAGER_ANGRY_f");
+  ANIM_uHashName[890] = FTTHash("ANM_REFEREE_ET839_EX2119_REFEREE_CUT_OUT");
+  ANIM_uHashName[891] = FTTHash("ANM_REFEREE_ET840_EX2120_REFEREE_TALKING_TO");
+  ANIM_uHashName[892] = FTTHash("ANM_REFEREE_ET843_EX2121_REFEREE_CHECK_WATCH");
+  ANIM_uHashName[893] = FTTHash("ANM_NIS_ET844_EX2123_INJURED_ANGRY");
+  ANIM_uHashName[894] = FTTHash("ANM_NIS_ET845_EX2124_INJURED_WAVE_SUB");
+  ANIM_uHashName[895] = FTTHash("ANM_NIS_ET846_EX2125_INJURED_GESTURE_SUB");
+  ANIM_uHashName[896] = FTTHash("ANM_NIS_ET902_PUSHING_P0");
+  ANIM_uHashName[897] = FTTHash("ANM_NIS_ET902_PUSHING_P0_f");
+  ANIM_uHashName[898] = FTTHash("ANM_NIS_ET902_PUSHING_P1");
+  ANIM_uHashName[899] = FTTHash("ANM_NIS_ET902_PUSHING_P1_f");
+  ANIM_uHashName[900] = FTTHash("ANM_NIS_ET903_EX2126_P0");
+  ANIM_uHashName[901] = FTTHash("ANM_NIS_ET903_EX2126_P1");
+  ANIM_uHashName[902] = FTTHash("ANM_NIS_ET906_CONSOLE_P0");
+  ANIM_uHashName[903] = FTTHash("ANM_NIS_ET906_CONSOLE_P0_f");
+  ANIM_uHashName[904] = FTTHash("ANM_NIS_ET906_CONSOLE_P1");
+  ANIM_uHashName[905] = FTTHash("ANM_NIS_ET906_CONSOLE_P1_f");
+  ANIM_uHashName[906] = FTTHash("ANM_NIS_ET908_CELEBRATE1_P0");
+  ANIM_uHashName[907] = FTTHash("ANM_NIS_ET908_CELEBRATE1_P0_f");
+  ANIM_uHashName[908] = FTTHash("ANM_NIS_ET908_CELEBRATE1_P1");
+  ANIM_uHashName[909] = FTTHash("ANM_NIS_ET910_CELEBRATE2_P0");
+  ANIM_uHashName[910] = FTTHash("ANM_NIS_ET910_CELEBRATE2_P0_f");
+  ANIM_uHashName[911] = FTTHash("ANM_NIS_ET910_CELEBRATE2_P1");
+  ANIM_uHashName[912] = FTTHash("ANM_NIS_ET910_CELEBRATE2_P1_f");
+  ANIM_uHashName[913] = FTTHash("ANM_NIS_ET912_FIGHTING_PULL_BACK_P0");
+  ANIM_uHashName[914] = FTTHash("ANM_NIS_ET912_FIGHTING_PULL_BACK_P0_f");
+  ANIM_uHashName[915] = FTTHash("ANM_NIS_ET912_FIGHTING_PULL_BACK_P1");
+  ANIM_uHashName[916] = FTTHash("ANM_NIS_ET912_FIGHTING_PULL_BACK_P1_f");
+  ANIM_uHashName[917] = FTTHash("ANM_NIS_ET913_FOUL_HAND_UP1_P0");
+  ANIM_uHashName[918] = FTTHash("ANM_NIS_ET913_FOUL_HAND_UP1_P0_f");
+  ANIM_uHashName[919] = FTTHash("ANM_NIS_ET913_FOUL_HAND_UP1_P1");
+  ANIM_uHashName[920] = FTTHash("ANM_NIS_ET914_FOUL_HAND_UP2_P0");
+  ANIM_uHashName[921] = FTTHash("ANM_NIS_ET914_FOUL_HAND_UP2_P0_f");
+  ANIM_uHashName[922] = FTTHash("ANM_NIS_ET914_FOUL_HAND_UP2_P1");
+  ANIM_uHashName[923] = FTTHash("ANM_NIS_ET914_FOUL_HAND_UP2_P1_f");
+  ANIM_uHashName[924] = FTTHash("ANM_NIS_ET916_HUG1_P0");
+  ANIM_uHashName[925] = FTTHash("ANM_NIS_ET916_HUG1_P0_f");
+  ANIM_uHashName[926] = FTTHash("ANM_NIS_ET916_HUG1_P1");
+  ANIM_uHashName[927] = FTTHash("ANM_NIS_ET916_HUG1_P1_f");
+  ANIM_uHashName[928] = FTTHash("ANM_NIS_ET917_HUG2_P0");
+  ANIM_uHashName[929] = FTTHash("ANM_NIS_ET917_HUG2_P0_f");
+  ANIM_uHashName[930] = FTTHash("ANM_NIS_ET917_HUG2_P1");
+  ANIM_uHashName[931] = FTTHash("ANM_NIS_ET917_HUG2_P1_f");
+  ANIM_uHashName[932] = FTTHash("ANM_NIS_ET918_HIGH_FIVE_1_HAND_P0");
+  ANIM_uHashName[933] = FTTHash("ANM_NIS_ET918_HIGH_FIVE_1_HAND_P0_f");
+  ANIM_uHashName[934] = FTTHash("ANM_NIS_ET918_HIGH_FIVE_1_HAND_P1");
+  ANIM_uHashName[935] = FTTHash("ANM_NIS_ET918_HIGH_FIVE_1_HAND_P1_f");
+  ANIM_uHashName[936] = FTTHash("ANM_NIS_ET919_HIGH_FIVE_2_HANDS_P0");
+  ANIM_uHashName[937] = FTTHash("ANM_NIS_ET919_HIGH_FIVE_2_HANDS_P0_f");
+  ANIM_uHashName[938] = FTTHash("ANM_NIS_ET919_HIGH_FIVE_2_HANDS_P1");
+  ANIM_uHashName[939] = FTTHash("ANM_NIS_ET919_HIGH_FIVE_2_HANDS_P1_f");
+  ANIM_uHashName[940] = FTTHash("ANM_NIS_ET921_CONGRATULATE1_P0");
+  ANIM_uHashName[941] = FTTHash("ANM_NIS_ET921_CONGRATULATE1_P0_f");
+  ANIM_uHashName[942] = FTTHash("ANM_NIS_ET921_CONGRATULATE1_P1");
+  ANIM_uHashName[943] = FTTHash("ANM_NIS_ET921_CONGRATULATE1_P1_f");
+  ANIM_uHashName[944] = FTTHash("ANM_NIS_ET922_HUG3_P0");
+  ANIM_uHashName[945] = FTTHash("ANM_NIS_ET922_HUG3_P0_f");
+  ANIM_uHashName[946] = FTTHash("ANM_NIS_ET922_HUG3_P1");
+  ANIM_uHashName[947] = FTTHash("ANM_NIS_ET922_HUG3_P1_f");
+  ANIM_uHashName[948] = FTTHash("ANM_NIS_ET923_SHAKE_HANDS1_P0");
+  ANIM_uHashName[949] = FTTHash("ANM_NIS_ET923_SHAKE_HANDS1_P0_f");
+  ANIM_uHashName[950] = FTTHash("ANM_NIS_ET923_SHAKE_HANDS1_P1");
+  ANIM_uHashName[951] = FTTHash("ANM_NIS_ET923_SHAKE_HANDS1_P1_f");
+  ANIM_uHashName[952] = FTTHash("ANM_NIS_ET924_POINT_HUG_P0");
+  ANIM_uHashName[953] = FTTHash("ANM_NIS_ET924_POINT_HUG_P0_f");
+  ANIM_uHashName[954] = FTTHash("ANM_NIS_ET924_POINT_HUG_P1");
+  ANIM_uHashName[955] = FTTHash("ANM_NIS_ET924_POINT_HUG_P1_f");
+  ANIM_uHashName[956] = FTTHash("ANM_NIS_ET925_SHAKE_SAD_MANS_HAND_P0");
+  ANIM_uHashName[957] = FTTHash("ANM_NIS_ET925_SHAKE_SAD_MANS_HAND_P0_f");
+  ANIM_uHashName[958] = FTTHash("ANM_NIS_ET925_SHAKE_SAD_MANS_HAND_P1");
+  ANIM_uHashName[959] = FTTHash("ANM_NIS_ET925_SHAKE_SAD_MANS_HAND_P1_f");
+  ANIM_uHashName[960] = FTTHash("ANM_NIS_ET926_CONGRATULATE2_P0");
+  ANIM_uHashName[961] = FTTHash("ANM_NIS_ET926_CONGRATULATE2_P0_f");
+  ANIM_uHashName[962] = FTTHash("ANM_NIS_ET926_CONGRATULATE2_P1");
+  ANIM_uHashName[963] = FTTHash("ANM_NIS_ET926_CONGRATULATE2_P1_f");
+  ANIM_uHashName[964] = FTTHash("ANM_NIS_ET927_WELL_DONE_SAD_MAN_P0");
+  ANIM_uHashName[965] = FTTHash("ANM_NIS_ET927_WELL_DONE_SAD_MAN_P0_f");
+  ANIM_uHashName[966] = FTTHash("ANM_NIS_ET927_WELL_DONE_SAD_MAN_P1");
+  ANIM_uHashName[967] = FTTHash("ANM_NIS_ET933_GESTURE_BOTH_ARMS_UP");
+  ANIM_uHashName[968] = FTTHash("ANM_NIS_ET933_GESTURE_BOTH_ARMS_UP_f");
+  ANIM_uHashName[969] = FTTHash("ANM_NIS_ET934_GESTURE_ONE_ARM_UP");
+  ANIM_uHashName[970] = FTTHash("ANM_NIS_ET934_GESTURE_ONE_ARM_UP_f");
+  ANIM_uHashName[971] = FTTHash("ANM_NIS_ET936_WALK_INURED");
+  ANIM_uHashName[972] = FTTHash("ANM_NIS_ET939_CELEBRATION_SHINE_BOOTS_P0");
+  ANIM_uHashName[973] = FTTHash("ANM_NIS_ET939_CELEBRATION_SHINE_BOOTS_P0_f");
+  ANIM_uHashName[974] = FTTHash("ANM_NIS_ET939_CELEBRATION_SHINE_BOOTS_P1");
+  ANIM_uHashName[975] = FTTHash("ANM_NIS_ET939_CELEBRATION_SHINE_BOOTS_P1_f");
+  ANIM_uHashName[976] = FTTHash("ANM_NIS_ET940_LOW_FIVE_P0");
+  ANIM_uHashName[977] = FTTHash("ANM_NIS_ET940_LOW_FIVE_P0_f");
+  ANIM_uHashName[978] = FTTHash("ANM_NIS_ET940_LOW_FIVE_P1");
+  ANIM_uHashName[979] = FTTHash("ANM_NIS_ET940_LOW_FIVE_P1_f");
+  ANIM_uHashName[980] = FTTHash("ANM_NIS_ET945_CELEB_DANCE_ROBOT");
+  ANIM_uHashName[981] = FTTHash("ANM_NIS_ET945_CELEB_DANCE_ROBOT_f");
+  ANIM_uHashName[982] = FTTHash("ANM_NIS_ET946_CELEB_BOXING");
+  ANIM_uHashName[983] = FTTHash("ANM_NIS_ET947_CELEB_DANCE");
+  ANIM_uHashName[984] = FTTHash("ANM_NIS_ET947_CELEB_DANCE_f");
+  ANIM_uHashName[985] = FTTHash("ANM_NIS_ET948_CELEB_DANCE");
+  ANIM_uHashName[986] = FTTHash("ANM_NIS_ET948_CELEB_DANCE_f");
+  ANIM_uHashName[987] = FTTHash("ANM_NIS_ET949_EX2122_4TH_OFFICIAL_SHOW_BOARD");
+  ANIM_uHashName[988] = FTTHash("ANM_NIS_ET949_EX2122_4TH_OFFICIAL_SHOW_BOARD_f");
+  ANIM_uHashName[989] = FTTHash("ANM_NIS_ET949_EX2122_4TH_OFFICIAL_SHOW_BOARD_LOOP");
+  ANIM_uHashName[990] = FTTHash("ANM_NIS_ET949_EX2122_4TH_OFFICIAL_SHOW_BOARD_LOOP_f");
+  ANIM_uHashName[991] = FTTHash("ANM_NIS_ET951_SLIDE");
+  ANIM_uHashName[992] = FTTHash("ANM_NIS_ET951_SLIDE_END");
+  ANIM_uHashName[993] = FTTHash("ANM_NIS_ET953_REACTION_BALLHITFACE");
+  ANIM_uHashName[994] = FTTHash("ANM_NIS_ET953_REACTION_BALLHITFACE_f");
+  ANIM_uHashName[995] = FTTHash("ANM_STUMBLE_ET954_DUMMY_BALL_AVOID");
+  ANIM_uHashName[996] = FTTHash("ANM_STUMBLE_ET954_DUMMY_BALL_AVOID_f");
+  ANIM_uHashName[997] = FTTHash("ANM_STUMBLE_ET955_DUMMY_BALL_AVOID");
+  ANIM_uHashName[998] = FTTHash("ANM_STUMBLE_ET955_DUMMY_BALL_AVOID_f");
+  ANIM_uHashName[999] = FTTHash("ANM_NIS_ET957_REFMANAGER_CALM_DOWN");
+  ANIM_uHashName[1000] = FTTHash("ANM_NIS_ET958_ARM_UP_LOOK_AROUND");
+  ANIM_uHashName[1001] = FTTHash("ANM_NIS_ET959_CELEB_DANCE");
+  ANIM_uHashName[1002] = FTTHash("ANM_NIS_ET959_CELEB_DANCE_f");
+  ANIM_uHashName[1003] = FTTHash("ANM_FALL_FT104_FALL");
+  ANIM_uHashName[1004] = FTTHash("ANM_FALL_FT104_FALL_f");
+  ANIM_uHashName[1005] = FTTHash("ANM_FALL_FT109_FALL");
+  ANIM_uHashName[1006] = FTTHash("ANM_FALL_FT109_FALL_f");
+  ANIM_uHashName[1007] = FTTHash("ANM_FALL_FT111_FALL");
+  ANIM_uHashName[1008] = FTTHash("ANM_FALL_FT111_FALL_f");
+  ANIM_uHashName[1009] = FTTHash("ANM_KICK_FT112_KICK_SCORPION");
+  ANIM_uHashName[1010] = FTTHash("ANM_KICK_FT112_KICK_SCORPION_f");
+  ANIM_uHashName[1011] = FTTHash("ANM_KICK_FT114_KICK_OVERHEAD");
+  ANIM_uHashName[1012] = FTTHash("ANM_KICK_FT114_KICK_OVERHEAD_f");
+  ANIM_uHashName[1013] = FTTHash("ANM_KICK_FT119_KICK");
+  ANIM_uHashName[1014] = FTTHash("ANM_KICK_FT119_KICK_f");
+  ANIM_uHashName[1015] = FTTHash("ANM_KICK_FT120_KICK");
+  ANIM_uHashName[1016] = FTTHash("ANM_KICK_FT120_KICK_f");
+  ANIM_uHashName[1017] = FTTHash("ANM_KICK_FT121_KICK");
+  ANIM_uHashName[1018] = FTTHash("ANM_KICK_FT121_KICK_f");
+  ANIM_uHashName[1019] = FTTHash("ANM_KICK_FT122_KICK_SPIN_KICK");
+  ANIM_uHashName[1020] = FTTHash("ANM_KICK_FT122_KICK_SPIN_KICK_f");
+  ANIM_uHashName[1021] = FTTHash("ANM_KICK_FT124_KICK");
+  ANIM_uHashName[1022] = FTTHash("ANM_KICK_FT124_KICK_f");
+  ANIM_uHashName[1023] = FTTHash("ANM_KICK_FT125_KICK_SKILL");
+  ANIM_uHashName[1024] = FTTHash("ANM_KICK_FT125_KICK_SKILL_f");
+  ANIM_uHashName[1025] = FTTHash("ANM_KICK_FT128_KICK_SKILL");
+  ANIM_uHashName[1026] = FTTHash("ANM_KICK_FT128_KICK_SKILL_f");
+  ANIM_uHashName[1027] = FTTHash("ANM_KICK_FT132_KICK");
+  ANIM_uHashName[1028] = FTTHash("ANM_KICK_FT132_KICK_f");
+  ANIM_uHashName[1029] = FTTHash("ANM_KICK_FT133_KICK_SKILL_FLICK");
+  ANIM_uHashName[1030] = FTTHash("ANM_KICK_FT133_KICK_SKILL_FLICK_f");
+  ANIM_uHashName[1031] = FTTHash("ANM_KICK_FT135_KICK");
+  ANIM_uHashName[1032] = FTTHash("ANM_KICK_FT135_KICK_f");
+  ANIM_uHashName[1033] = FTTHash("ANM_KICK_FT136_KICK");
+  ANIM_uHashName[1034] = FTTHash("ANM_KICK_FT136_KICK_f");
+  ANIM_uHashName[1035] = FTTHash("ANM_KICK_FT140_KICK");
+  ANIM_uHashName[1036] = FTTHash("ANM_KICK_FT140_KICK_f");
+  ANIM_uHashName[1037] = FTTHash("ANM_CONTROL_FT142_CONTROL");
+  ANIM_uHashName[1038] = FTTHash("ANM_CONTROL_FT142_CONTROL_f");
+  ANIM_uHashName[1039] = FTTHash("ANM_CONTROL_FT149_CONTROL");
+  ANIM_uHashName[1040] = FTTHash("ANM_CONTROL_FT149_CONTROL_f");
+  ANIM_uHashName[1041] = FTTHash("ANM_CONTROL_FT152_CONTROL");
+  ANIM_uHashName[1042] = FTTHash("ANM_CONTROL_FT152_CONTROL_f");
+  ANIM_uHashName[1043] = FTTHash("ANM_CONTROL_FT154_CONTROL");
+  ANIM_uHashName[1044] = FTTHash("ANM_CONTROL_FT154_CONTROL_f");
+  ANIM_uHashName[1045] = FTTHash("ANM_CONTROL_FT155_CONTROL");
+  ANIM_uHashName[1046] = FTTHash("ANM_CONTROL_FT155_CONTROL_f");
+  ANIM_uHashName[1047] = FTTHash("ANM_CONTROL_FT159_CONTROL");
+  ANIM_uHashName[1048] = FTTHash("ANM_CONTROL_FT159_CONTROL_f");
+  ANIM_uHashName[1049] = FTTHash("ANM_CONTROL_FT161_CONTROL");
+  ANIM_uHashName[1050] = FTTHash("ANM_CONTROL_FT161_CONTROL_f");
+  ANIM_uHashName[1051] = FTTHash("ANM_CONTROL_FT162_CONTROL");
+  ANIM_uHashName[1052] = FTTHash("ANM_CONTROL_FT162_CONTROL_f");
+  ANIM_uHashName[1053] = FTTHash("ANM_CONTROL_FT165_CONTROL");
+  ANIM_uHashName[1054] = FTTHash("ANM_CONTROL_FT165_CONTROL_f");
+  ANIM_uHashName[1055] = FTTHash("ANM_CONTROL_FT165_CONTROL_D");
+  ANIM_uHashName[1056] = FTTHash("ANM_CONTROL_FT165_CONTROL_D_f");
+  ANIM_uHashName[1057] = FTTHash("ANM_KICK_FT203_HEADER");
+  ANIM_uHashName[1058] = FTTHash("ANM_KICK_FT203_HEADER_f");
+  ANIM_uHashName[1059] = FTTHash("ANM_KICK_FT205_HEADER");
+  ANIM_uHashName[1060] = FTTHash("ANM_KICK_FT205_HEADER_f");
+  ANIM_uHashName[1061] = FTTHash("ANM_KICK_FT206_HEADER");
+  ANIM_uHashName[1062] = FTTHash("ANM_KICK_FT206_HEADER_f");
+  ANIM_uHashName[1063] = FTTHash("ANM_KICK_FT210_HEADER");
+  ANIM_uHashName[1064] = FTTHash("ANM_KICK_FT210_HEADER_f");
+  ANIM_uHashName[1065] = FTTHash("ANM_KICKSETPIECE_FT212_KICKSETPIECE");
+  ANIM_uHashName[1066] = FTTHash("ANM_KICKSETPIECE_FT212_KICKSETPIECE_f");
+  ANIM_uHashName[1067] = FTTHash("ANM_KICKSETPIECE_FT216_KICKSETPIECE");
+  ANIM_uHashName[1068] = FTTHash("ANM_KICKSETPIECE_FT216_KICKSETPIECE_f");
+  ANIM_uHashName[1069] = FTTHash("ANM_KICKSETPIECE_FT218_KICKSETPIECE");
+  ANIM_uHashName[1070] = FTTHash("ANM_KICKSETPIECE_FT218_KICKSETPIECE_f");
+  ANIM_uHashName[1071] = FTTHash("ANM_KICKSETPIECE_FT220_KICKSETPIECE");
+  ANIM_uHashName[1072] = FTTHash("ANM_KICKSETPIECE_FT220_KICKSETPIECE_f");
+  ANIM_uHashName[1073] = FTTHash("ANM_GK_SAVE_FT224_GK_SLIDE");
+  ANIM_uHashName[1074] = FTTHash("ANM_GK_SAVE_FT224_GK_SLIDE_f");
+  ANIM_uHashName[1075] = FTTHash("ANM_GK_SAVE_FT231_GK__");
+  ANIM_uHashName[1076] = FTTHash("ANM_GK_SAVE_FT231_GK___f");
+  ANIM_uHashName[1077] = FTTHash("ANM_GK_SAVE_FT233_GK__");
+  ANIM_uHashName[1078] = FTTHash("ANM_GK_SAVE_FT233_GK___f");
+  ANIM_uHashName[1079] = FTTHash("ANM_GK_SAVE_FT234_GK__");
+  ANIM_uHashName[1080] = FTTHash("ANM_GK_SAVE_FT234_GK___f");
+  ANIM_uHashName[1081] = FTTHash("ANM_GK_SAVE_FT235_GK__");
+  ANIM_uHashName[1082] = FTTHash("ANM_GK_SAVE_FT235_GK___f");
+  ANIM_uHashName[1083] = FTTHash("ANM_NIS_FT237_MANAGER");
+  ANIM_uHashName[1084] = FTTHash("ANM_NIS_FT238_MANAGER");
+  ANIM_uHashName[1085] = FTTHash("ANM_NIS_FT238_MANAGER_f");
+  ANIM_uHashName[1086] = FTTHash("ANM_NIS_FT240_MANAGER");
+  ANIM_uHashName[1087] = FTTHash("ANM_NIS_FT240_MANAGER_f");
+  ANIM_uHashName[1088] = FTTHash("ANM_NIS_FT241_MANAGER_A");
+  ANIM_uHashName[1089] = FTTHash("ANM_NIS_FT241_MANAGER_B");
+  ANIM_uHashName[1090] = FTTHash("ANM_REFEREE_FT246_REFEREE_A");
+  ANIM_uHashName[1091] = FTTHash("ANM_REFEREE_FT246_REFEREE_A_f");
+  ANIM_uHashName[1092] = FTTHash("ANM_REFEREE_FT246_REFEREE_B");
+  ANIM_uHashName[1093] = FTTHash("ANM_REFEREE_FT248_REFEREE");
+  ANIM_uHashName[1094] = FTTHash("ANM_NIS_FT262_NIS");
+  ANIM_uHashName[1095] = FTTHash("ANM_NIS_FT262_NIS_f");
+  ANIM_uHashName[1096] = FTTHash("ANM_NIS_FT264_NIS");
+  ANIM_uHashName[1097] = FTTHash("ANM_NIS_FT264_NIS_f");
+  ANIM_uHashName[1098] = FTTHash("ANM_NIS_FT265_NIS");
+  ANIM_uHashName[1099] = FTTHash("ANM_NIS_FT266_NIS");
+  ANIM_uHashName[1100] = FTTHash("ANM_NIS_FT266_NIS_f");
+  ANIM_uHashName[1101] = FTTHash("ANM_NIS_FT267_NIS");
+  ANIM_uHashName[1102] = FTTHash("ANM_NIS_FT267_NIS_f");
+  ANIM_uHashName[1103] = FTTHash("ANM_NIS_FT301_NIS_");
+  ANIM_uHashName[1104] = FTTHash("ANM_NIS_FT301_NIS__f");
+  ANIM_uHashName[1105] = FTTHash("ANM_NIS_FT303_NIS_");
+  ANIM_uHashName[1106] = FTTHash("ANM_NIS_FT305_NIS");
+  ANIM_uHashName[1107] = FTTHash("ANM_NIS_FT307_NIS_");
+  ANIM_uHashName[1108] = FTTHash("ANM_NIS_FT308_NIS_A");
+  ANIM_uHashName[1109] = FTTHash("ANM_NIS_FT308_NIS_A_f");
+  ANIM_uHashName[1110] = FTTHash("ANM_NIS_FT308_NIS_B");
+  ANIM_uHashName[1111] = FTTHash("ANM_NIS_FT308_NIS_B_f");
+  ANIM_uHashName[1112] = FTTHash("ANM_NIS_FT310_NIS");
+  ANIM_uHashName[1113] = FTTHash("ANM_NIS_FT311_NIS");
+  ANIM_uHashName[1114] = FTTHash("ANM_NIS_FT312_NIS");
+  ANIM_uHashName[1115] = FTTHash("ANM_NIS_FT312_NIS_f");
+  ANIM_uHashName[1116] = FTTHash("ANM_NIS_FT313_NIS");
+  ANIM_uHashName[1117] = FTTHash("ANM_NIS_FT313_NIS_f");
+  ANIM_uHashName[1118] = FTTHash("ANM_NIS_FT316_NIS");
+  ANIM_uHashName[1119] = FTTHash("ANM_NIS_FT316_NIS_f");
+  ANIM_uHashName[1120] = FTTHash("ANM_NIS_FT317_NIS");
+  ANIM_uHashName[1121] = FTTHash("ANM_NIS_FT317_NIS_f");
+  ANIM_uHashName[1122] = FTTHash("ANM_NIS_FT318_NIS");
+  ANIM_uHashName[1123] = FTTHash("ANM_NIS_FT318_NIS_f");
+  ANIM_uHashName[1124] = FTTHash("ANM_NIS_FT319_NIS");
+  ANIM_uHashName[1125] = FTTHash("ANM_NIS_FT319_NIS_f");
+  ANIM_uHashName[1126] = FTTHash("ANM_NIS_FT321_NIS");
+  ANIM_uHashName[1127] = FTTHash("ANM_NIS_FT321_NIS_f");
+  ANIM_uHashName[1128] = FTTHash("ANM_NIS_FT324_NIS");
+  ANIM_uHashName[1129] = FTTHash("ANM_NIS_FT324_NIS_f");
+  ANIM_uHashName[1130] = FTTHash("ANM_NIS_FT325_NIS");
+  ANIM_uHashName[1131] = FTTHash("ANM_NIS_FT325_NIS_f");
+  ANIM_uHashName[1132] = FTTHash("ANM_LOCO_FT348_LOCO_E_GKBALL");
+  ANIM_uHashName[1133] = FTTHash("ANM_LOCO_FT348_LOCO_E_GKBALL_f");
+  ANIM_uHashName[1134] = FTTHash("ANM_REFEREE_FT349_NIS_ANDY");
+  ANIM_uHashName[1135] = FTTHash("ANM_REFEREE_FT349_NIS_CHRIS");
+  ANIM_uHashName[1136] = FTTHash("ANM_NIS_FT350_NIS_ANDY");
+  ANIM_uHashName[1137] = FTTHash("ANM_NIS_FT350_NIS_ANDY_f");
+  ANIM_uHashName[1138] = FTTHash("ANM_NIS_FT350_NIS_CHRIS");
+  ANIM_uHashName[1139] = FTTHash("ANM_NIS_FT350_NIS_CHRIS_f");
+  ANIM_uHashName[1140] = FTTHash("ANM_NIS_FT351_NIS_ANDY");
+  ANIM_uHashName[1141] = FTTHash("ANM_NIS_FT351_NIS_ANDY_f");
+  ANIM_uHashName[1142] = FTTHash("ANM_NIS_FT351_NIS_CHRIS");
+  ANIM_uHashName[1143] = FTTHash("ANM_NIS_FT351_NIS_CHRIS_f");
+  ANIM_uHashName[1144] = FTTHash("ANM_NIS_FT354_NIS_ANDY");
+  ANIM_uHashName[1145] = FTTHash("ANM_NIS_FT354_NIS_ANDY_f");
+  ANIM_uHashName[1146] = FTTHash("ANM_NIS_FT354_NIS_CHRIS");
+  ANIM_uHashName[1147] = FTTHash("ANM_NIS_FT354_NIS_CHRIS_f");
+  ANIM_uHashName[1148] = FTTHash("ANM_NIS_FT355_NIS_ANDY");
+  ANIM_uHashName[1149] = FTTHash("ANM_NIS_FT355_NIS_ANDY_f");
+  ANIM_uHashName[1150] = FTTHash("ANM_NIS_FT355_NIS_CHRIS");
+  ANIM_uHashName[1151] = FTTHash("ANM_NIS_FT355_NIS_CHRIS_f");
+  ANIM_uHashName[1152] = FTTHash("ANM_NIS_FT356_NIS_ANDY");
+  ANIM_uHashName[1153] = FTTHash("ANM_NIS_FT356_NIS_ANDY_f");
+  ANIM_uHashName[1154] = FTTHash("ANM_NIS_FT356_NIS_CHRIS");
+  ANIM_uHashName[1155] = FTTHash("ANM_NIS_FT356_NIS_CHRIS_f");
+  ANIM_uHashName[1156] = FTTHash("ANM_NIS_FT357_NIS_ANDY");
+  ANIM_uHashName[1157] = FTTHash("ANM_NIS_FT357_NIS_CHRIS");
+  ANIM_uHashName[1158] = FTTHash("ANM_NIS_FT362_NIS_ANDY");
+  ANIM_uHashName[1159] = FTTHash("ANM_NIS_FT362_NIS_ANDY_f");
+  ANIM_uHashName[1160] = FTTHash("ANM_NIS_FT362_NIS_CHRIS");
+  ANIM_uHashName[1161] = FTTHash("ANM_NIS_FT362_NIS_CHRIS_f");
+  ANIM_uHashName[1162] = FTTHash("ANM_NIS_FT363_NIS_ANDY");
+  ANIM_uHashName[1163] = FTTHash("ANM_NIS_FT363_NIS_ANDY_f");
+  ANIM_uHashName[1164] = FTTHash("ANM_NIS_FT363_NIS_CHRIS");
+  ANIM_uHashName[1165] = FTTHash("ANM_NIS_FT363_NIS_CHRIS_f");
+  ANIM_uHashName[1166] = FTTHash("ANM_NIS_FT402_NIS_ANDY");
+  ANIM_uHashName[1167] = FTTHash("ANM_NIS_FT402_NIS_CHRIS");
+  ANIM_uHashName[1168] = FTTHash("ANM_KICK_FT406_KICK");
+  ANIM_uHashName[1169] = FTTHash("ANM_KICK_FT406_KICK_f");
+  ANIM_uHashName[1170] = FTTHash("ANM_KICK_FT409_KICK");
+  ANIM_uHashName[1171] = FTTHash("ANM_KICK_FT409_KICK_f");
+  ANIM_uHashName[1172] = FTTHash("ANM_CONTROL_FT410_DRIBBLE");
+  ANIM_uHashName[1173] = FTTHash("ANM_CONTROL_FT410_DRIBBLE_f");
+  ANIM_uHashName[1174] = FTTHash("ANM_NIS_FT420_NIS");
+  ANIM_uHashName[1175] = FTTHash("ANM_NIS_FT420_NIS_f");
+  ANIM_uHashName[1176] = FTTHash("ANM_NIS_FT421_NIS");
+  ANIM_uHashName[1177] = FTTHash("ANM_STAND_FT424_WALL");
+  ANIM_uHashName[1178] = FTTHash("ANM_STAND_FT424_WALL_f");
+  ANIM_uHashName[1179] = FTTHash("ANM_STAND_FT425_WALL");
+  ANIM_uHashName[1180] = FTTHash("ANM_STAND_FT425_WALL_f");
+  ANIM_uHashName[1181] = FTTHash("ANM_STAND_FT426_WALL_JUMP");
+  ANIM_uHashName[1182] = FTTHash("ANM_STAND_FT426_WALL_JUMP_f");
+  ANIM_uHashName[1183] = FTTHash("ANM_STAND_FT427_WALL_JUMP");
+  ANIM_uHashName[1184] = FTTHash("ANM_STAND_FT427_WALL_JUMP_f");
+  ANIM_uHashName[1185] = FTTHash("ANM_LOCO_FT539_FT_LOCO_JOG_0_ALEX_JOG");
+  ANIM_uHashName[1186] = FTTHash("ANM_LOCO_FT539_FT_LOCO_JOG_0_ALEX_JOG_f");
+  ANIM_uHashName[1187] = FTTHash("ANM_LOCO_FT543_ALEX_SPRINT_POINT");
+  ANIM_uHashName[1188] = FTTHash("ANM_LOCO_FT543_ALEX_SPRINT_POINT_f");
+  ANIM_uHashName[1189] = FTTHash("ANM_STAND_FT551_FT_STAND_WALL_0_ALEX_STAND");
+  ANIM_uHashName[1190] = FTTHash("ANM_STAND_FT551_FT_STAND_WALL_0_ALEX_STAND_f");
+  ANIM_uHashName[1191] = FTTHash("ANM_STAND_FT551_FT_STAND_WALL_0_ALEX_JUMP");
+  ANIM_uHashName[1192] = FTTHash("ANM_STAND_FT551_FT_STAND_WALL_0_ALEX_JUMP_f");
+  ANIM_uHashName[1193] = FTTHash("ANM_STAND_FT552_FT_STAND_WALL_0_ALEX_STAND");
+  ANIM_uHashName[1194] = FTTHash("ANM_STAND_FT552_FT_STAND_WALL_0_ALEX_STAND_f");
+  ANIM_uHashName[1195] = FTTHash("ANM_STAND_FT552_FT_STAND_WALL_0_ALEX_JUMP");
+  ANIM_uHashName[1196] = FTTHash("ANM_STAND_FT552_FT_STAND_WALL_0_ALEX_JUMP_f");
+  ANIM_uHashName[1197] = FTTHash("ANM_STAND_FT555_FT_STAND_WALL_0_ALEX_STAND");
+  ANIM_uHashName[1198] = FTTHash("ANM_STAND_FT555_FT_STAND_WALL_0_ALEX_STAND_f");
+  ANIM_uHashName[1199] = FTTHash("ANM_STAND_FT555_FT_STAND_WALL_0_ALEX_JUMP");
+  ANIM_uHashName[1200] = FTTHash("ANM_STAND_FT555_FT_STAND_WALL_0_ALEX_JUMP_f");
+  ANIM_uHashName[1201] = FTTHash("ANM_STAND_FT556_FT_STAND_WALL_0_ALEX_WALLLEAN");
+  ANIM_uHashName[1202] = FTTHash("ANM_STAND_FT556_FT_STAND_WALL_0_ALEX_WALLLEAN_f");
+  ANIM_uHashName[1203] = FTTHash("ANM_KICK_FT560_FT_KICK_0_ALEX");
+  ANIM_uHashName[1204] = FTTHash("ANM_KICK_FT560_FT_KICK_0_ALEX_f");
+  ANIM_uHashName[1205] = FTTHash("ANM_KICK_FT562_FT_KICK_0_ALEX");
+  ANIM_uHashName[1206] = FTTHash("ANM_KICK_FT562_FT_KICK_0_ALEX_f");
+  ANIM_uHashName[1207] = FTTHash("ANM_KICK_FT563_FT_KICK_0_ALEX");
+  ANIM_uHashName[1208] = FTTHash("ANM_KICK_FT563_FT_KICK_0_ALEX_f");
+  ANIM_uHashName[1209] = FTTHash("ANM_KICK_FT564_FT_KICK_0_ALEX");
+  ANIM_uHashName[1210] = FTTHash("ANM_KICK_FT564_FT_KICK_0_ALEX_f");
+  ANIM_uHashName[1211] = FTTHash("ANM_KICK_FT568_FT_KICK_1_ALEX");
+  ANIM_uHashName[1212] = FTTHash("ANM_KICK_FT568_FT_KICK_1_ALEX_f");
+  ANIM_uHashName[1213] = FTTHash("ANM_KICK_FT570_FT_KICK_1_ALEX");
+  ANIM_uHashName[1214] = FTTHash("ANM_KICK_FT570_FT_KICK_1_ALEX_f");
+  ANIM_uHashName[1215] = FTTHash("ANM_KICK_FT571_FT_KICK_1_ALEX");
+  ANIM_uHashName[1216] = FTTHash("ANM_KICK_FT571_FT_KICK_1_ALEX_f");
+  ANIM_uHashName[1217] = FTTHash("ANM_KICK_FT572_FT_KICK_4_ALEX_FLICK_OH_CTRL");
+  ANIM_uHashName[1218] = FTTHash("ANM_KICK_FT572_FT_KICK_4_ALEX_FLICK_OH_CTRL_f");
+  ANIM_uHashName[1219] = FTTHash("ANM_KICK_FT573_FT_KICK_4_ALEX");
+  ANIM_uHashName[1220] = FTTHash("ANM_KICK_FT573_FT_KICK_4_ALEX_f");
+  ANIM_uHashName[1221] = FTTHash("ANM_KICK_FT575_FT_KICK_6_ALEX");
+  ANIM_uHashName[1222] = FTTHash("ANM_KICK_FT575_FT_KICK_6_ALEX_f");
+  ANIM_uHashName[1223] = FTTHash("ANM_KICK_FT576_FT_KICK_6_ALEX");
+  ANIM_uHashName[1224] = FTTHash("ANM_KICK_FT576_FT_KICK_6_ALEX_f");
+  ANIM_uHashName[1225] = FTTHash("ANM_KICK_FT578_FT_KICK_6_ALEX");
+  ANIM_uHashName[1226] = FTTHash("ANM_KICK_FT578_FT_KICK_6_ALEX_f");
+  ANIM_uHashName[1227] = FTTHash("ANM_KICK_FT579_FT_KICK_11_ALEX");
+  ANIM_uHashName[1228] = FTTHash("ANM_KICK_FT579_FT_KICK_11_ALEX_f");
+  ANIM_uHashName[1229] = FTTHash("ANM_KICK_FT581_FT_KICK_11_ALEX");
+  ANIM_uHashName[1230] = FTTHash("ANM_KICK_FT581_FT_KICK_11_ALEX_f");
+  ANIM_uHashName[1231] = FTTHash("ANM_KICK_FT583_FT_KICK_11_ALEX");
+  ANIM_uHashName[1232] = FTTHash("ANM_KICK_FT583_FT_KICK_11_ALEX_f");
+  ANIM_uHashName[1233] = FTTHash("ANM_KICK_FT584_FT_KICK_11_ALEX");
+  ANIM_uHashName[1234] = FTTHash("ANM_KICK_FT584_FT_KICK_11_ALEX_f");
+  ANIM_uHashName[1235] = FTTHash("ANM_KICK_FT604_FT_KICK_8_ALEX");
+  ANIM_uHashName[1236] = FTTHash("ANM_KICK_FT604_FT_KICK_8_ALEX_f");
+  ANIM_uHashName[1237] = FTTHash("ANM_KICK_FT605_FT_KICK_8_ALEX");
+  ANIM_uHashName[1238] = FTTHash("ANM_KICK_FT605_FT_KICK_8_ALEX_f");
+  ANIM_uHashName[1239] = FTTHash("ANM_KICK_FT606_FT_KICK_8_ALEX");
+  ANIM_uHashName[1240] = FTTHash("ANM_KICK_FT606_FT_KICK_8_ALEX_f");
+  ANIM_uHashName[1241] = FTTHash("ANM_KICK_FT607_FT_KICK_8_ALEX");
+  ANIM_uHashName[1242] = FTTHash("ANM_KICK_FT607_FT_KICK_8_ALEX_f");
+  ANIM_uHashName[1243] = FTTHash("ANM_KICKSETPIECE_FT610_FT_KICKSETPIECE_0_ALEX");
+  ANIM_uHashName[1244] = FTTHash("ANM_KICKSETPIECE_FT610_FT_KICKSETPIECE_0_ALEX_f");
+  ANIM_uHashName[1245] = FTTHash("ANM_KICKSETPIECE_FT612_FT_KICKSETPIECE_0_ALEX");
+  ANIM_uHashName[1246] = FTTHash("ANM_KICKSETPIECE_FT612_FT_KICKSETPIECE_0_ALEX_f");
+  ANIM_uHashName[1247] = FTTHash("ANM_KICKSETPIECE_FT613_FT_KICKSETPIECE_0_ALEX");
+  ANIM_uHashName[1248] = FTTHash("ANM_KICKSETPIECE_FT613_FT_KICKSETPIECE_0_ALEX_f");
+  ANIM_uHashName[1249] = FTTHash("ANM_KICKSETPIECE_FT614_FT_KICKSETPIECE_0_ALEX");
+  ANIM_uHashName[1250] = FTTHash("ANM_KICKSETPIECE_FT614_FT_KICKSETPIECE_0_ALEX_f");
+  ANIM_uHashName[1251] = FTTHash("ANM_KICK_FT618_FT_HEADER_0_ALEX");
+  ANIM_uHashName[1252] = FTTHash("ANM_KICK_FT618_FT_HEADER_0_ALEX_f");
+  ANIM_uHashName[1253] = FTTHash("ANM_KICK_FT619_FT_HEADER_0_ALEX");
+  ANIM_uHashName[1254] = FTTHash("ANM_KICK_FT619_FT_HEADER_0_ALEX_f");
+  ANIM_uHashName[1255] = FTTHash("ANM_KICK_FT620_FT_HEADER_0_ALEX");
+  ANIM_uHashName[1256] = FTTHash("ANM_KICK_FT620_FT_HEADER_0_ALEX_f");
+  ANIM_uHashName[1257] = FTTHash("ANM_KICK_FT622_FT_HEADER_1_ALEX");
+  ANIM_uHashName[1258] = FTTHash("ANM_KICK_FT622_FT_HEADER_1_ALEX_f");
+  ANIM_uHashName[1259] = FTTHash("ANM_KICK_FT623_FT_HEADER_1_ALEX");
+  ANIM_uHashName[1260] = FTTHash("ANM_KICK_FT623_FT_HEADER_1_ALEX_f");
+  ANIM_uHashName[1261] = FTTHash("ANM_KICK_FT624_FT_HEADER");
+  ANIM_uHashName[1262] = FTTHash("ANM_KICK_FT624_FT_HEADER_f");
+  ANIM_uHashName[1263] = FTTHash("ANM_CONTROL_FT625_FT_CONTROL_MOVE_0_ALEX");
+  ANIM_uHashName[1264] = FTTHash("ANM_CONTROL_FT625_FT_CONTROL_MOVE_0_ALEX_f");
+  ANIM_uHashName[1265] = FTTHash("ANM_CONTROL_FT627_FT_CONTROL_MOVE_0_ALEX");
+  ANIM_uHashName[1266] = FTTHash("ANM_CONTROL_FT627_FT_CONTROL_MOVE_0_ALEX_f");
+  ANIM_uHashName[1267] = FTTHash("ANM_CONTROL_FT629_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1268] = FTTHash("ANM_CONTROL_FT629_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1269] = FTTHash("ANM_CONTROL_FT630_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1270] = FTTHash("ANM_CONTROL_FT630_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1271] = FTTHash("ANM_CONTROL_FT631_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1272] = FTTHash("ANM_CONTROL_FT631_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1273] = FTTHash("ANM_CONTROL_FT632_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1274] = FTTHash("ANM_CONTROL_FT632_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1275] = FTTHash("ANM_CONTROL_FT633_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1276] = FTTHash("ANM_CONTROL_FT633_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1277] = FTTHash("ANM_CONTROL_FT635_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1278] = FTTHash("ANM_CONTROL_FT635_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1279] = FTTHash("ANM_CONTROL_FT636_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1280] = FTTHash("ANM_CONTROL_FT636_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1281] = FTTHash("ANM_CONTROL_FT638_FT_CONTROL_MOVE_1_ALEX");
+  ANIM_uHashName[1282] = FTTHash("ANM_CONTROL_FT638_FT_CONTROL_MOVE_1_ALEX_f");
+  ANIM_uHashName[1283] = FTTHash("ANM_CONTROL_FT643_ALEX_CONTROL");
+  ANIM_uHashName[1284] = FTTHash("ANM_CONTROL_FT643_ALEX_CONTROL_f");
+  ANIM_uHashName[1285] = FTTHash("ANM_STAND_FT645_FT_TURN_STAND_0_ALEX_STAND_READY");
+  ANIM_uHashName[1286] = FTTHash("ANM_TURN_FT647_FT_TURN_STAND_0_ALEX_R45");
+  ANIM_uHashName[1287] = FTTHash("ANM_TURN_FT647_FT_TURN_STAND_0_ALEX_R45_f");
+  ANIM_uHashName[1288] = FTTHash("ANM_TURN_FT649_FT_TURN_STAND_0_ALEX_R90");
+  ANIM_uHashName[1289] = FTTHash("ANM_TURN_FT649_FT_TURN_STAND_0_ALEX_R90_f");
+  ANIM_uHashName[1290] = FTTHash("ANM_STUMBLE_FT653_FT_STUMBLE_0_ALEX");
+  ANIM_uHashName[1291] = FTTHash("ANM_STUMBLE_FT653_FT_STUMBLE_0_ALEX_f");
+  ANIM_uHashName[1292] = FTTHash("ANM_STUMBLE_FT658_FT_STUMBLE_0_ANDY");
+  ANIM_uHashName[1293] = FTTHash("ANM_STUMBLE_FT658_FT_STUMBLE_0_ANDY_f");
+  ANIM_uHashName[1294] = FTTHash("ANM_NIS_FT660_FT_NIS_0_ALEX");
+  ANIM_uHashName[1295] = FTTHash("ANM_NIS_FT660_FT_NIS_0_ALEX_f");
+  ANIM_uHashName[1296] = FTTHash("ANM_NIS_FT661_FT_NIS_0_ALEX");
+  ANIM_uHashName[1297] = FTTHash("ANM_NIS_FT663_FT_NIS_0_ALEX");
+  ANIM_uHashName[1298] = FTTHash("ANM_NIS_FT663_FT_NIS_0_ALEX_f");
+  ANIM_uHashName[1299] = FTTHash("ANM_NIS_FT663_FT_NIS_0_ALEX_END");
+  ANIM_uHashName[1300] = FTTHash("ANM_NIS_FT663_FT_NIS_0_ALEX_END_f");
+  ANIM_uHashName[1301] = FTTHash("ANM_NIS_FT664_FT_NIS_0_ALEX");
+  ANIM_uHashName[1302] = FTTHash("ANM_NIS_FT665_FT_NIS_0_ALEX");
+  ANIM_uHashName[1303] = FTTHash("ANM_NIS_FT666_FT_NIS_0_ALEX");
+  ANIM_uHashName[1304] = FTTHash("ANM_NIS_FT666_FT_NIS_0_ALEX_f");
+  ANIM_uHashName[1305] = FTTHash("ANM_GK_SAVE_FT667_FT_GK_CATCH_0_ALEX");
+  ANIM_uHashName[1306] = FTTHash("ANM_GK_SAVE_FT667_FT_GK_CATCH_0_ALEX_f");
+  ANIM_uHashName[1307] = FTTHash("ANM_GK_SAVE_FT668_FT_GK_CATCH_0_ALEX");
+  ANIM_uHashName[1308] = FTTHash("ANM_GK_SAVE_FT668_FT_GK_CATCH_0_ALEX_f");
+  ANIM_uHashName[1309] = FTTHash("ANM_GK_SAVE_FT669_FT_GK_CATCH_0_ALEX");
+  ANIM_uHashName[1310] = FTTHash("ANM_GK_SAVE_FT669_FT_GK_CATCH_0_ALEX_f");
+  ANIM_uHashName[1311] = FTTHash("ANM_GK_SAVE_FT671_FT_GK_DEFLECT_0_ALEX_TIP");
+  ANIM_uHashName[1312] = FTTHash("ANM_GK_SAVE_FT671_FT_GK_DEFLECT_0_ALEX_TIP_f");
+  ANIM_uHashName[1313] = FTTHash("ANM_GK_SAVE_FT672_FT_GK_DEFLECT_0_ALEX");
+  ANIM_uHashName[1314] = FTTHash("ANM_GK_SAVE_FT672_FT_GK_DEFLECT_0_ALEX_f");
+  ANIM_uHashName[1315] = FTTHash("ANM_GK_SAVE_FT673_FT_GK_DEFLECT_0_ALEX");
+  ANIM_uHashName[1316] = FTTHash("ANM_GK_SAVE_FT673_FT_GK_DEFLECT_0_ALEX_f");
+  ANIM_uHashName[1317] = FTTHash("ANM_GK_SAVE_FT675_FT_GK_DEFLECT_0_ALEX");
+  ANIM_uHashName[1318] = FTTHash("ANM_GK_SAVE_FT675_FT_GK_DEFLECT_0_ALEX_f");
+  ANIM_uHashName[1319] = FTTHash("ANM_TACKLESLIDE_FT678_FT_TACKLE_TACKLESLIDE_0_ALEX");
+  ANIM_uHashName[1320] = FTTHash("ANM_TACKLESLIDE_FT678_FT_TACKLE_TACKLESLIDE_0_ALEX_f");
+  ANIM_uHashName[1321] = FTTHash("ANM_TACKLESLIDE_FT680_FT_TACKLE_TACKLESLIDE_0_ALEX");
+  ANIM_uHashName[1322] = FTTHash("ANM_TACKLESLIDE_FT680_FT_TACKLE_TACKLESLIDE_0_ALEX_f");
+  ANIM_uHashName[1323] = FTTHash("ANM_KICK_FT682_FT_KICK_13_ALEX");
+  ANIM_uHashName[1324] = FTTHash("ANM_KICK_FT682_FT_KICK_13_ALEX_f");
+  ANIM_uHashName[1325] = FTTHash("ANM_SIDESTEP_FT505_FT_SIDESTEP_0_ANDY_STAND");
+  ANIM_uHashName[1326] = FTTHash("ANM_SIDESTEP_FT505_FT_SIDESTEP_0_ANDY_STAND_f");
+  ANIM_uHashName[1327] = FTTHash("ANM_SIDESTEP_FT506_FT_SIDESTEP_0_ANDY_HIPS");
+  ANIM_uHashName[1328] = FTTHash("ANM_SIDESTEP_FT506_FT_SIDESTEP_0_ANDY_HIPS_f");
+  ANIM_uHashName[1329] = FTTHash("ANM_SIDESTEP_FT508_FT_SIDESTEP_0_P1_ANDY_HIPSLEFTFW_R");
+  ANIM_uHashName[1330] = FTTHash("ANM_SIDESTEP_FT508_FT_SIDESTEP_0_P1_ANDY_HIPSLEFTFW_R_f");
+  ANIM_uHashName[1331] = FTTHash("ANM_SIDESTEP_FT508_FT_SIDESTEP_0_P2_ANDY_HIPSLEFTFW");
+  ANIM_uHashName[1332] = FTTHash("ANM_SIDESTEP_FT508_FT_SIDESTEP_0_P2_ANDY_HIPSLEFTFW_f");
+  ANIM_uHashName[1333] = FTTHash("ANM_SIDESTEP_FT509_FT_SIDESTEP_0_P1_ANDY_LEFTFW_R");
+  ANIM_uHashName[1334] = FTTHash("ANM_SIDESTEP_FT509_FT_SIDESTEP_0_P1_ANDY_LEFTFW_R_f");
+  ANIM_uHashName[1335] = FTTHash("ANM_SIDESTEP_FT509_FT_SIDESTEP_0_P2_ANDY_LEFTFW");
+  ANIM_uHashName[1336] = FTTHash("ANM_SIDESTEP_FT509_FT_SIDESTEP_0_P2_ANDY_LEFTFW_f");
+  ANIM_uHashName[1337] = FTTHash("ANM_LOCO_FT510_FT_LOCO_JOG_0_ANDY_JOG_POINT_NOT");
+  ANIM_uHashName[1338] = FTTHash("ANM_LOCO_FT510_FT_LOCO_JOG_0_ANDY_JOG_POINT_NOT_f");
+  ANIM_uHashName[1339] = FTTHash("ANM_KICK_FT517_FT_KICK_1_ANDY");
+  ANIM_uHashName[1340] = FTTHash("ANM_KICK_FT517_FT_KICK_1_ANDY_f");
+  ANIM_uHashName[1341] = FTTHash("ANM_KICK_FT518_FT_KICK_1_ANDY");
+  ANIM_uHashName[1342] = FTTHash("ANM_KICK_FT518_FT_KICK_1_ANDY_f");
+  ANIM_uHashName[1343] = FTTHash("ANM_KICK_FT520_FT_KICK_2_ANDY");
+  ANIM_uHashName[1344] = FTTHash("ANM_KICK_FT520_FT_KICK_2_ANDY_f");
+  ANIM_uHashName[1345] = FTTHash("ANM_KICK_FT521_FT_KICK_2_ANDY");
+  ANIM_uHashName[1346] = FTTHash("ANM_KICK_FT521_FT_KICK_2_ANDY_f");
+  ANIM_uHashName[1347] = FTTHash("ANM_KICK_FT523_FT_KICK_1_ANDY");
+  ANIM_uHashName[1348] = FTTHash("ANM_KICK_FT523_FT_KICK_1_ANDY_f");
+  ANIM_uHashName[1349] = FTTHash("ANM_KICK_FT525_FT_KICK_15_ANDY");
+  ANIM_uHashName[1350] = FTTHash("ANM_KICK_FT525_FT_KICK_15_ANDY_f");
+  ANIM_uHashName[1351] = FTTHash("ANM_KICK_FT526_FT_KICK_15_ANDY");
+  ANIM_uHashName[1352] = FTTHash("ANM_KICK_FT526_FT_KICK_15_ANDY_f");
+  ANIM_uHashName[1353] = FTTHash("ANM_KICK_FT527_FT_KICK_15_ANDY");
+  ANIM_uHashName[1354] = FTTHash("ANM_KICK_FT527_FT_KICK_15_ANDY_f");
+  ANIM_uHashName[1355] = FTTHash("ANM_KICK_FT528_FT_KICK_15_ANDY");
+  ANIM_uHashName[1356] = FTTHash("ANM_KICK_FT528_FT_KICK_15_ANDY_f");
+  ANIM_uHashName[1357] = FTTHash("ANM_KICK_FT529_FT_KICK_15_ANDY");
+  ANIM_uHashName[1358] = FTTHash("ANM_KICK_FT529_FT_KICK_15_ANDY_f");
+  ANIM_uHashName[1359] = FTTHash("ANM_KICK_FT530_FT_KICK_15_ANDY");
+  ANIM_uHashName[1360] = FTTHash("ANM_KICK_FT530_FT_KICK_15_ANDY_f");
+  ANIM_uHashName[1361] = FTTHash("ANM_KICK_FT532_FT_KICK_17_ANDY");
+  ANIM_uHashName[1362] = FTTHash("ANM_KICK_FT532_FT_KICK_17_ANDY_f");
+  ANIM_uHashName[1363] = FTTHash("ANM_CONTROL_FT533_FT_DEEK_0_ANDY_CTRL");
+  ANIM_uHashName[1364] = FTTHash("ANM_CONTROL_FT533_FT_DEEK_0_ANDY_CTRL_f");
+  ANIM_uHashName[1365] = FTTHash("ANM_STAND_FT506_FT_STAND");
+  ANIM_uHashName[1366] = FTTHash("ANM_STAND_FT508_FT_STAND");
+  ANIM_uHashName[1367] = FTTHash("ANM_STAND_FT508_FT_STAND_f");
+  ANIM_uHashName[1368] = FTTHash("ANM_STAND_FT509_FT_STAND");
+  ANIM_uHashName[1369] = FTTHash("ANM_STAND_FT509_FT_STAND_f");
+  ANIM_uHashName[1370] = FTTHash("ANM_CONTROL_FT703_CONTROL_DRIBBLE_1_ANDYD_DRIB");
+  ANIM_uHashName[1371] = FTTHash("ANM_CONTROL_FT703_CONTROL_DRIBBLE_1_ANDYD_DRIB_f");
+  ANIM_uHashName[1372] = FTTHash("ANM_CONTROL_FT704_CONTROL_DRIBBLE_1_ANDYS_DRIB");
+  ANIM_uHashName[1373] = FTTHash("ANM_CONTROL_FT704_CONTROL_DRIBBLE_1_ANDYS_DRIB_f");
+  ANIM_uHashName[1374] = FTTHash("ANM_CONTROL_FT704_CONTROL_DRIBBLE_1_CONTROL_DRIBBLE_TURN_ANDYD");
+  ANIM_uHashName[1375] = FTTHash("ANM_CONTROL_FT704_CONTROL_DRIBBLE_1_CONTROL_DRIBBLE_TURN_ANDYD_f");
+  ANIM_uHashName[1376] = FTTHash("ANM_CONTROL_FT706_CONTROL_JOSTLE_1_ANDYD");
+  ANIM_uHashName[1377] = FTTHash("ANM_CONTROL_FT706_CONTROL_JOSTLE_1_ANDYD_f");
+  ANIM_uHashName[1378] = FTTHash("ANM_CONTROL_FT707_CONTROL_JOSTLE_1_ANDYD");
+  ANIM_uHashName[1379] = FTTHash("ANM_CONTROL_FT707_CONTROL_JOSTLE_1_ANDYD_f");
+  ANIM_uHashName[1380] = FTTHash("ANM_CONTROL_FT710_CONTROL_JOSTLE_1_ANDYS");
+  ANIM_uHashName[1381] = FTTHash("ANM_CONTROL_FT710_CONTROL_JOSTLE_1_ANDYS_f");
+  ANIM_uHashName[1382] = FTTHash("ANM_CONTROL_FT712_CONTROL_JOSTLE_1_ANDYS");
+  ANIM_uHashName[1383] = FTTHash("ANM_CONTROL_FT712_CONTROL_JOSTLE_1_ANDYS_f");
+  ANIM_uHashName[1384] = FTTHash("ANM_CONTROL_FT713_CONTROL_MOVE_1_ANDYS");
+  ANIM_uHashName[1385] = FTTHash("ANM_CONTROL_FT713_CONTROL_MOVE_1_ANDYS_f");
+  ANIM_uHashName[1386] = FTTHash("ANM_CONTROL_FT714_CONTROL_MOVE_1_ANDYD");
+  ANIM_uHashName[1387] = FTTHash("ANM_CONTROL_FT714_CONTROL_MOVE_1_ANDYD_f");
+  ANIM_uHashName[1388] = FTTHash("ANM_CONTROL_FT715_CONTROL_MOVE_2_ANDYD");
+  ANIM_uHashName[1389] = FTTHash("ANM_CONTROL_FT715_CONTROL_MOVE_2_ANDYD_f");
+  ANIM_uHashName[1390] = FTTHash("ANM_CONTROL_FT717_CONTROL_MOVE_3_ANDYS");
+  ANIM_uHashName[1391] = FTTHash("ANM_CONTROL_FT717_CONTROL_MOVE_3_ANDYS_f");
+  ANIM_uHashName[1392] = FTTHash("ANM_CONTROL_FT719_CONTROL_MOVE_4_ANDYD");
+  ANIM_uHashName[1393] = FTTHash("ANM_CONTROL_FT719_CONTROL_MOVE_4_ANDYD_f");
+  ANIM_uHashName[1394] = FTTHash("ANM_CONTROL_FT721_CONTROL_MOVE_5_ANDYD");
+  ANIM_uHashName[1395] = FTTHash("ANM_CONTROL_FT724_CONTROL_MOVE_5_ANDYD");
+  ANIM_uHashName[1396] = FTTHash("ANM_CONTROL_FT724_CONTROL_MOVE_5_ANDYD_f");
+  ANIM_uHashName[1397] = FTTHash("ANM_CONTROL_FT725_CONTROL_MOVE_5_ANDYS");
+  ANIM_uHashName[1398] = FTTHash("ANM_CONTROL_FT725_CONTROL_MOVE_5_ANDYS_f");
+  ANIM_uHashName[1399] = FTTHash("ANM_CONTROL_FT727_CONTROL_MOVE_6_ANDYS_HEELCHOP");
+  ANIM_uHashName[1400] = FTTHash("ANM_CONTROL_FT727_CONTROL_MOVE_6_ANDYS_HEELCHOP_f");
+  ANIM_uHashName[1401] = FTTHash("ANM_CONTROL_FT728_CONTROL_MOVE_6_ANDYD_HEELCHOP");
+  ANIM_uHashName[1402] = FTTHash("ANM_CONTROL_FT728_CONTROL_MOVE_6_ANDYD_HEELCHOP_f");
+  ANIM_uHashName[1403] = FTTHash("ANM_FALL_FT730_FALL_ANDYD");
+  ANIM_uHashName[1404] = FTTHash("ANM_FALL_FT730_FALL_ANDYD_f");
+  ANIM_uHashName[1405] = FTTHash("ANM_CONTROL_FT733_CONTROL_STAND_1_ANDYS_FLICKOVER_HEAD");
+  ANIM_uHashName[1406] = FTTHash("ANM_CONTROL_FT733_CONTROL_STAND_1_ANDYS_FLICKOVER_HEAD_f");
+  ANIM_uHashName[1407] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_ANDYD");
+  ANIM_uHashName[1408] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_ANDYD_f");
+  ANIM_uHashName[1409] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_CONTROL_STAND_2_1_1_ANDYS");
+  ANIM_uHashName[1410] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_CONTROL_STAND_2_1_1_ANDYS_f");
+  ANIM_uHashName[1411] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_CONTROL_STAND_2_3_ANDYS");
+  ANIM_uHashName[1412] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_CONTROL_STAND_2_3_ANDYS_f");
+  ANIM_uHashName[1413] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_CONTROL_STAND_2_CONTROL_STAND_2_3_4_5_ANDYD");
+  ANIM_uHashName[1414] = FTTHash("ANM_CONTROL_FT734_CONTROL_STAND_2_CONTROL_STAND_2_CONTROL_STAND_2_3_4_5_ANDYD_f");
+  ANIM_uHashName[1415] = FTTHash("ANM_CONTROL_FT737_CONTROL_STAND_3_ANDYS");
+  ANIM_uHashName[1416] = FTTHash("ANM_CONTROL_FT737_CONTROL_STAND_3_ANDYS_f");
+  ANIM_uHashName[1417] = FTTHash("ANM_CONTROL_FT738_CONTROL_STAND_5_ANDYS");
+  ANIM_uHashName[1418] = FTTHash("ANM_CONTROL_FT738_CONTROL_STAND_5_ANDYS_f");
+  ANIM_uHashName[1419] = FTTHash("ANM_CONTROL_FT740_CONTROL_STAND_5_ANDYD");
+  ANIM_uHashName[1420] = FTTHash("ANM_CONTROL_FT740_CONTROL_STAND_5_ANDYD_f");
+  ANIM_uHashName[1421] = FTTHash("ANM_CONTROL_FT744_CONTROL_STAND_5_ANDYS");
+  ANIM_uHashName[1422] = FTTHash("ANM_CONTROL_FT744_CONTROL_STAND_5_ANDYS_f");
+  ANIM_uHashName[1423] = FTTHash("ANM_KICK_FT747_KICK_KICK_1_ANDYD");
+  ANIM_uHashName[1424] = FTTHash("ANM_KICK_FT747_KICK_KICK_1_ANDYD_f");
+  ANIM_uHashName[1425] = FTTHash("ANM_KICK_FT748_KICK_KICK_1_ANDYS");
+  ANIM_uHashName[1426] = FTTHash("ANM_KICK_FT748_KICK_KICK_1_ANDYS_f");
+  ANIM_uHashName[1427] = FTTHash("ANM_KICK_FT748_KICK_KICK_1_KICK_KICK_1_2_ANDYD");
+  ANIM_uHashName[1428] = FTTHash("ANM_KICK_FT748_KICK_KICK_1_KICK_KICK_1_2_ANDYD_f");
+  ANIM_uHashName[1429] = FTTHash("ANM_KICK_FT749_KICK_KICK_2_ANDYD");
+  ANIM_uHashName[1430] = FTTHash("ANM_KICK_FT749_KICK_KICK_2_ANDYD_f");
+  ANIM_uHashName[1431] = FTTHash("ANM_KICK_FT750_KICK_KICK_2_ANDYS");
+  ANIM_uHashName[1432] = FTTHash("ANM_KICK_FT750_KICK_KICK_2_ANDYS_f");
+  ANIM_uHashName[1433] = FTTHash("ANM_KICK_FT751_KICK_KICK_3_ANDYD");
+  ANIM_uHashName[1434] = FTTHash("ANM_KICK_FT751_KICK_KICK_3_ANDYD_f");
+  ANIM_uHashName[1435] = FTTHash("ANM_KICK_FT752_KICK_KICK_3_ANDYS");
+  ANIM_uHashName[1436] = FTTHash("ANM_KICK_FT752_KICK_KICK_3_ANDYS_f");
+  ANIM_uHashName[1437] = FTTHash("ANM_KICK_FT752_KICK_KICK_3_KICK_KICK_3_2_ANDYD");
+  ANIM_uHashName[1438] = FTTHash("ANM_KICK_FT752_KICK_KICK_3_KICK_KICK_3_2_ANDYD_f");
+  ANIM_uHashName[1439] = FTTHash("ANM_KICK_FT753_KICK_KICK_3_ANDYS");
+  ANIM_uHashName[1440] = FTTHash("ANM_KICK_FT753_KICK_KICK_3_ANDYS_f");
+  ANIM_uHashName[1441] = FTTHash("ANM_KICK_FT755_KICK_KICK_3_ANDYS");
+  ANIM_uHashName[1442] = FTTHash("ANM_KICK_FT755_KICK_KICK_3_ANDYS_f");
+  ANIM_uHashName[1443] = FTTHash("ANM_KICK_FT756_KICK_KICK_3_ANDYD");
+  ANIM_uHashName[1444] = FTTHash("ANM_KICK_FT756_KICK_KICK_3_ANDYD_f");
+  ANIM_uHashName[1445] = FTTHash("ANM_KICK_FT756_KICK_KICK_3_KICK_KICK_3_2_ANDYS");
+  ANIM_uHashName[1446] = FTTHash("ANM_KICK_FT756_KICK_KICK_3_KICK_KICK_3_2_ANDYS_f");
+  ANIM_uHashName[1447] = FTTHash("ANM_KICK_FT758_KICK_KICK_4_ANDYD");
+  ANIM_uHashName[1448] = FTTHash("ANM_KICK_FT758_KICK_KICK_4_ANDYD_f");
+  ANIM_uHashName[1449] = FTTHash("ANM_KICK_FT758_KICK_KICK_4_KICK_KICK_4_2_ANDYS");
+  ANIM_uHashName[1450] = FTTHash("ANM_KICK_FT758_KICK_KICK_4_KICK_KICK_4_2_ANDYS_f");
+  ANIM_uHashName[1451] = FTTHash("ANM_KICK_FT761_KICK_KICK_4_ANDYS");
+  ANIM_uHashName[1452] = FTTHash("ANM_KICK_FT761_KICK_KICK_4_ANDYS_f");
+  ANIM_uHashName[1453] = FTTHash("ANM_KICK_FT762_KICK_KICK_4_ANDYS");
+  ANIM_uHashName[1454] = FTTHash("ANM_KICK_FT762_KICK_KICK_4_ANDYS_f");
+  ANIM_uHashName[1455] = FTTHash("ANM_KICK_FT762_KICK_KICK_4_KICK_KICK_4_2_ANDYD");
+  ANIM_uHashName[1456] = FTTHash("ANM_KICK_FT762_KICK_KICK_4_KICK_KICK_4_2_ANDYD_f");
+  ANIM_uHashName[1457] = FTTHash("ANM_KICKSETPIECE_FT763_KICK_SETPIECE_1_KICK_SETPIECE_1_2_ANDYD");
+  ANIM_uHashName[1458] = FTTHash("ANM_KICKSETPIECE_FT763_KICK_SETPIECE_1_KICK_SETPIECE_1_2_ANDYD_f");
+  ANIM_uHashName[1459] = FTTHash("ANM_KICKSETPIECE_FT764_KICK_SETPIECE_1_KICK_SETPIECE_1_2_ANDYS");
+  ANIM_uHashName[1460] = FTTHash("ANM_KICKSETPIECE_FT764_KICK_SETPIECE_1_KICK_SETPIECE_1_2_ANDYS_f");
+  ANIM_uHashName[1461] = FTTHash("ANM_KICKSETPIECE_FT766_KICK_SETPIECE_2_ANDYD");
+  ANIM_uHashName[1462] = FTTHash("ANM_KICKSETPIECE_FT766_KICK_SETPIECE_2_ANDYD_f");
+  ANIM_uHashName[1463] = FTTHash("ANM_KICKSETPIECE_FT768_KICK_SETPIECE_3_ANDYD_QUICK");
+  ANIM_uHashName[1464] = FTTHash("ANM_KICKSETPIECE_FT768_KICK_SETPIECE_3_ANDYD_QUICK_f");
+  ANIM_uHashName[1465] = FTTHash("ANM_TURN_FT776_LOCO_TURN_1_LOCO_TURN_1_2_ANDYD_180L");
+  ANIM_uHashName[1466] = FTTHash("ANM_TURN_FT776_LOCO_TURN_1_LOCO_TURN_1_2_ANDYD_180L_f");
+  ANIM_uHashName[1467] = FTTHash("ANM_NIS_FT777_NIS_GK_1_ANDYS_WATCHMISS");
+  ANIM_uHashName[1468] = FTTHash("ANM_NIS_FT777_NIS_GK_1_ANDYS_WATCHMISS_f");
+  ANIM_uHashName[1469] = FTTHash("ANM_NIS_FT778_NIS_GK_1_ANDYD_WATCHMISS");
+  ANIM_uHashName[1470] = FTTHash("ANM_NIS_FT778_NIS_GK_1_ANDYD_WATCHMISS_f");
+  ANIM_uHashName[1471] = FTTHash("ANM_NIS_FT779_NIS_GK_1_ANDYS_WATCHMISS");
+  ANIM_uHashName[1472] = FTTHash("ANM_NIS_FT779_NIS_GK_1_ANDYS_WATCHMISS_f");
+  ANIM_uHashName[1473] = FTTHash("ANM_NIS_FT780_NIS_GK_1_ANDYD_WATCHMISS");
+  ANIM_uHashName[1474] = FTTHash("ANM_NIS_FT780_NIS_GK_1_ANDYD_WATCHMISS_f");
+  ANIM_uHashName[1475] = FTTHash("ANM_NIS_FT781_NIS_GK_1_ANDYS_WATCHMISSHIGH");
+  ANIM_uHashName[1476] = FTTHash("ANM_NIS_FT781_NIS_GK_1_ANDYS_WATCHMISSHIGH_f");
+  ANIM_uHashName[1477] = FTTHash("ANM_NIS_FT782_NIS_GK_2_ANDYD_ONFLOORUPSET");
+  ANIM_uHashName[1478] = FTTHash("ANM_NIS_FT783_NIS_GK_3_ANDYD_ORGANISEWALL");
+  ANIM_uHashName[1479] = FTTHash("ANM_NIS_FT783_NIS_GK_3_ANDYD_ORGANISEWALL_f");
+  ANIM_uHashName[1480] = FTTHash("ANM_NIS_FT784_NIS_HAPPYJOG_1_ANDYS");
+  ANIM_uHashName[1481] = FTTHash("ANM_NIS_FT784_NIS_HAPPYJOG_1_ANDYS_f");
+  ANIM_uHashName[1482] = FTTHash("ANM_NIS_FT785_NIS_HAPPYJOG_1_ANDYD");
+  ANIM_uHashName[1483] = FTTHash("ANM_NIS_FT785_NIS_HAPPYJOG_1_ANDYD_f");
+  ANIM_uHashName[1484] = FTTHash("ANM_NIS_FT786_NIS_HAPPYJOG_1_ANDYD");
+  ANIM_uHashName[1485] = FTTHash("ANM_NIS_FT786_NIS_HAPPYJOG_1_ANDYD_f");
+  ANIM_uHashName[1486] = FTTHash("ANM_NIS_FT786_NIS_HAPPYJOG_1_NIS_HAPPYJOG_1_2_ANDYS");
+  ANIM_uHashName[1487] = FTTHash("ANM_NIS_FT786_NIS_HAPPYJOG_1_NIS_HAPPYJOG_1_2_ANDYS_f");
+  ANIM_uHashName[1488] = FTTHash("ANM_NIS_FT787_NIS_HAPPYJOG_1_ANDYS");
+  ANIM_uHashName[1489] = FTTHash("ANM_NIS_FT788_NIS_HAPPYJOG_1_ANDYD");
+  ANIM_uHashName[1490] = FTTHash("ANM_NIS_FT788_NIS_HAPPYJOG_1_NIS_HAPPYJOG_1_2_ANDYS");
+  ANIM_uHashName[1491] = FTTHash("ANM_NIS_FT788_NIS_HAPPYJOG_1_NIS_HAPPYJOG_1_2_ANDYS_f");
+  ANIM_uHashName[1492] = FTTHash("ANM_NIS_FT789_NIS_HAPPYSTAND_1_ANDYS");
+  ANIM_uHashName[1493] = FTTHash("ANM_NIS_FT789_NIS_HAPPYSTAND_1_ANDYS_f");
+  ANIM_uHashName[1494] = FTTHash("ANM_NIS_FT791_NIS_HAPPYSTAND_1_ANDYD");
+  ANIM_uHashName[1495] = FTTHash("ANM_NIS_FT791_NIS_HAPPYSTAND_1_ANDYD_f");
+  ANIM_uHashName[1496] = FTTHash("ANM_NIS_FT792_NIS_HAPPYSTAND_1_ANDYD");
+  ANIM_uHashName[1497] = FTTHash("ANM_NIS_FT792_NIS_HAPPYSTAND_1_ANDYD_f");
+  ANIM_uHashName[1498] = FTTHash("ANM_NIS_FT793_NIS_HAPPYSTAND_1_ANDYD");
+  ANIM_uHashName[1499] = FTTHash("ANM_NIS_FT794_NIS_HAPPYSTAND_1_ANDYS");
+  ANIM_uHashName[1500] = FTTHash("ANM_NIS_FT794_NIS_HAPPYSTAND_1_ANDYS_f");
+  ANIM_uHashName[1501] = FTTHash("ANM_NIS_FT794_NIS_HAPPYSTAND_1_NIS_HAPPYSTAND_1_2_ANDYD");
+  ANIM_uHashName[1502] = FTTHash("ANM_NIS_FT794_NIS_HAPPYSTAND_1_NIS_HAPPYSTAND_1_2_ANDYD_f");
+  ANIM_uHashName[1503] = FTTHash("ANM_NIS_FT794_NIS_HAPPYSTAND_1_NIS_HAPPYSTAND_1_2_ANDYD_END");
+  ANIM_uHashName[1504] = FTTHash("ANM_NIS_FT794_NIS_HAPPYSTAND_1_NIS_HAPPYSTAND_1_2_ANDYD_END_f");
+  ANIM_uHashName[1505] = FTTHash("ANM_NIS_FT795_NIS_INJURED_1_ANDYD");
+  ANIM_uHashName[1506] = FTTHash("ANM_NIS_FT795_NIS_INJURED_1_NIS_INJURED_1_2_ANDYS");
+  ANIM_uHashName[1507] = FTTHash("ANM_NIS_FT796_NIS_INJURED_1_ANDYD");
+  ANIM_uHashName[1508] = FTTHash("ANM_NIS_FT796_NIS_INJURED_1_NIS_INJURED_1_2_ANDYS");
+  ANIM_uHashName[1509] = FTTHash("ANM_NIS_FT797_NIS_INJURED_1_ANDYD");
+  ANIM_uHashName[1510] = FTTHash("ANM_NIS_FT797_NIS_INJURED_1_ANDYS");
+  ANIM_uHashName[1511] = FTTHash("ANM_NIS_FT798_NIS_INJURED_2_ANDYD");
+  ANIM_uHashName[1512] = FTTHash("ANM_NIS_FT798_NIS_INJURED_2_NIS_INJURED_2_2_ANDYS");
+  ANIM_uHashName[1513] = FTTHash("ANM_NIS_FT799_NIS_INJURED_1_ANDYD");
+  ANIM_uHashName[1514] = FTTHash("ANM_NIS_FT799_NIS_INJURED_1_ANDYS");
+  ANIM_uHashName[1515] = FTTHash("ANM_NIS_FT801_NIS_MANAGER_1_ANDYS");
+  ANIM_uHashName[1516] = FTTHash("ANM_NIS_FT801_NIS_MANAGER_1_ANDYS_f");
+  ANIM_uHashName[1517] = FTTHash("ANM_NIS_FT802_NIS_MANAGER_2_ANDYD");
+  ANIM_uHashName[1518] = FTTHash("ANM_NIS_FT803_NIS_MANAGER_3_ANDYD");
+  ANIM_uHashName[1519] = FTTHash("ANM_NIS_FT803_NIS_MANAGER_3_NIS_MANAGER_3_2_ANDYS");
+  ANIM_uHashName[1520] = FTTHash("ANM_NIS_FT804_NIS_MANAGER_3_ANDYD");
+  ANIM_uHashName[1521] = FTTHash("ANM_NIS_FT804_NIS_MANAGER_3_NIS_MANAGER_3_2_ANDYS");
+  ANIM_uHashName[1522] = FTTHash("ANM_NIS_FT804_NIS_MANAGER_3_NIS_MANAGER_3_2_ANDYS_f");
+  ANIM_uHashName[1523] = FTTHash("ANM_NIS_FT805_NIS_MISC_01_ANDYD");
+  ANIM_uHashName[1524] = FTTHash("ANM_NIS_FT805_NIS_MISC_01_NIS_MISC_01_2_ANDYS");
+  ANIM_uHashName[1525] = FTTHash("ANM_NIS_FT805_NIS_MISC_01_NIS_MISC_01_4_ANDYS");
+  ANIM_uHashName[1526] = FTTHash("ANM_NIS_FT805_NIS_MISC_01_NIS_MISC_01_NIS_MISC_01_3_ANDYD");
+  ANIM_uHashName[1527] = FTTHash("ANM_NIS_FT806_NIS_MISC_02_ANDYD");
+  ANIM_uHashName[1528] = FTTHash("ANM_NIS_FT806_NIS_MISC_02_NIS_MISC_02_2_ANDYS");
+  ANIM_uHashName[1529] = FTTHash("ANM_NIS_FT807_NIS_MISC_03_ANDYD");
+  ANIM_uHashName[1530] = FTTHash("ANM_NIS_FT807_NIS_MISC_03_NIS_MISC_03_2_ANDYS");
+  ANIM_uHashName[1531] = FTTHash("ANM_NIS_FT808_NIS_MISC_06_ANDYD");
+  ANIM_uHashName[1532] = FTTHash("ANM_NIS_FT808_NIS_MISC_06_ANDYD_f");
+  ANIM_uHashName[1533] = FTTHash("ANM_NIS_FT808_NIS_MISC_06_NIS_MISC_06_2_ANDYS");
+  ANIM_uHashName[1534] = FTTHash("ANM_NIS_FT809_NIS_MISC_07_ANDYD");
+  ANIM_uHashName[1535] = FTTHash("ANM_NIS_FT809_NIS_MISC_07_ANDYD_f");
+  ANIM_uHashName[1536] = FTTHash("ANM_NIS_FT809_NIS_MISC_07_NIS_MISC_07_2_ANDYS");
+  ANIM_uHashName[1537] = FTTHash("ANM_NIS_FT810_NIS_MISC_08_ANDYD");
+  ANIM_uHashName[1538] = FTTHash("ANM_NIS_FT811_NIS_MISC_09_ANDYD");
+  ANIM_uHashName[1539] = FTTHash("ANM_NIS_FT811_NIS_MISC_09_NIS_MISC_09_2_ANDYS");
+  ANIM_uHashName[1540] = FTTHash("ANM_NIS_FT812_NIS_MISC_10_ANDYD");
+  ANIM_uHashName[1541] = FTTHash("ANM_NIS_FT812_NIS_MISC_10_ANDYS");
+  ANIM_uHashName[1542] = FTTHash("ANM_NIS_FT813_NIS_MISC_11_ANDYD");
+  ANIM_uHashName[1543] = FTTHash("ANM_NIS_FT813_NIS_MISC_11_ANDYS");
+  ANIM_uHashName[1544] = FTTHash("ANM_NIS_FT815_NIS_MISC_13_ANDYD");
+  ANIM_uHashName[1545] = FTTHash("ANM_NIS_FT815_NIS_MISC_13_NIS_MISC_13_2_ANDYS");
+  ANIM_uHashName[1546] = FTTHash("ANM_NIS_FT816_NIS_MISC_14_ANDYD");
+  ANIM_uHashName[1547] = FTTHash("ANM_NIS_FT816_NIS_MISC_14_ANDYS");
+  ANIM_uHashName[1548] = FTTHash("ANM_NIS_FT817_NIS_MISC_15_ANDYD");
+  ANIM_uHashName[1549] = FTTHash("ANM_NIS_FT817_NIS_MISC_15_ANDYS");
+  ANIM_uHashName[1550] = FTTHash("ANM_NIS_FT818_NIS_MISC_19_ANDYD");
+  ANIM_uHashName[1551] = FTTHash("ANM_NIS_FT818_NIS_MISC_19_ANDYD_f");
+  ANIM_uHashName[1552] = FTTHash("ANM_NIS_FT818_NIS_MISC_19_NIS_MISC_19_2_ANDYS");
+  ANIM_uHashName[1553] = FTTHash("ANM_NIS_FT818_NIS_MISC_19_NIS_MISC_19_2_ANDYS_f");
+  ANIM_uHashName[1554] = FTTHash("ANM_NIS_FT819_NIS_MISC_23_ANDYD");
+  ANIM_uHashName[1555] = FTTHash("ANM_NIS_FT819_NIS_MISC_23_ANDYS");
+  ANIM_uHashName[1556] = FTTHash("ANM_NIS_FT821_NIS_MISC_24_ANDYS");
+  ANIM_uHashName[1557] = FTTHash("ANM_NIS_FT821_NIS_MISC_24_NIS_MISC_24_2_ANDYD");
+  ANIM_uHashName[1558] = FTTHash("ANM_NIS_FT821_NIS_MISC_24_NIS_MISC_24_NIS_MISC_24_3_ANDYD");
+  ANIM_uHashName[1559] = FTTHash("ANM_NIS_FT822_NIS_MISC_24_ANDYD");
+  ANIM_uHashName[1560] = FTTHash("ANM_NIS_FT822_NIS_MISC_24_ANDYS");
+  ANIM_uHashName[1561] = FTTHash("ANM_NIS_FT824_NIS_MISC_26_ANDYD");
+  ANIM_uHashName[1562] = FTTHash("ANM_NIS_FT825_NIS_MISC_28_ANDYD");
+  ANIM_uHashName[1563] = FTTHash("ANM_NIS_FT825_NIS_MISC_28_ANDYS");
+  ANIM_uHashName[1564] = FTTHash("ANM_NIS_FT827_NIS_MISC_29_ANDYD");
+  ANIM_uHashName[1565] = FTTHash("ANM_NIS_FT827_NIS_MISC_29_ANDYS");
+  ANIM_uHashName[1566] = FTTHash("ANM_NIS_FT829_NIS_MISC_31_ANDYD");
+  ANIM_uHashName[1567] = FTTHash("ANM_NIS_FT829_NIS_MISC_31_ANDYS");
+  ANIM_uHashName[1568] = FTTHash("ANM_NIS_FT830_NIS_MISC_32_ANDYD");
+  ANIM_uHashName[1569] = FTTHash("ANM_NIS_FT830_NIS_MISC_32_ANDYS");
+  ANIM_uHashName[1570] = FTTHash("ANM_NIS_FT831_NIS_MISC_32_ANDYD");
+  ANIM_uHashName[1571] = FTTHash("ANM_NIS_FT831_NIS_MISC_32_ANDYS");
+  ANIM_uHashName[1572] = FTTHash("ANM_NIS_FT832_NIS_MISC_33_ANDYD");
+  ANIM_uHashName[1573] = FTTHash("ANM_NIS_FT832_NIS_MISC_33_ANDYS");
+  ANIM_uHashName[1574] = FTTHash("ANM_NIS_FT834_NIS_MISC_34_ANDYD");
+  ANIM_uHashName[1575] = FTTHash("ANM_NIS_FT834_NIS_MISC_34_ANDYS");
+  ANIM_uHashName[1576] = FTTHash("ANM_NIS_FT836_NIS_MISC_33_ANDYD");
+  ANIM_uHashName[1577] = FTTHash("ANM_NIS_FT836_NIS_MISC_33_ANDYS");
+  ANIM_uHashName[1578] = FTTHash("ANM_NIS_FT837_NIS_MISC_33_ANDYD");
+  ANIM_uHashName[1579] = FTTHash("ANM_NIS_FT837_NIS_MISC_33_ANDYS");
+  ANIM_uHashName[1580] = FTTHash("ANM_NIS_FT838_NIS_MISC_37_ANDYD");
+  ANIM_uHashName[1581] = FTTHash("ANM_NIS_FT838_NIS_MISC_37_ANDYS");
+  ANIM_uHashName[1582] = FTTHash("ANM_NIS_FT839_NIS_MISC_39_ANDYD");
+  ANIM_uHashName[1583] = FTTHash("ANM_NIS_FT839_NIS_MISC_39_ANDYS");
+  ANIM_uHashName[1584] = FTTHash("ANM_NIS_FT840_NIS_MISC_40_ANDYS");
+  ANIM_uHashName[1585] = FTTHash("ANM_NIS_FT840_NIS_MISC_40_ANDYS_f");
+  ANIM_uHashName[1586] = FTTHash("ANM_NIS_FT841_NIS_MISC_45_ANDYD");
+  ANIM_uHashName[1587] = FTTHash("ANM_NIS_FT841_NIS_MISC_45_ANDYS");
+  ANIM_uHashName[1588] = FTTHash("ANM_NIS_FT842_NIS_MISC_46_ANDYD");
+  ANIM_uHashName[1589] = FTTHash("ANM_NIS_FT842_NIS_MISC_46_ANDYS");
+  ANIM_uHashName[1590] = FTTHash("ANM_NIS_FT843_NIS_UNHAPPY_1_ANDYS");
+  ANIM_uHashName[1591] = FTTHash("ANM_NIS_FT843_NIS_UNHAPPY_1_ANDYS_f");
+  ANIM_uHashName[1592] = FTTHash("ANM_NIS_FT844_NIS_UNHAPPY_4_ANDYD");
+  ANIM_uHashName[1593] = FTTHash("ANM_NIS_FT844_NIS_UNHAPPY_4_ANDYD_f");
+  ANIM_uHashName[1594] = FTTHash("ANM_NIS_FT845_NIS_UNHAPPY_2_ANDYD");
+  ANIM_uHashName[1595] = FTTHash("ANM_NIS_FT845_NIS_UNHAPPY_2_ANDYD_f");
+  ANIM_uHashName[1596] = FTTHash("ANM_NIS_FT846_NIS_UNHAPPY_5_ANDYS");
+  ANIM_uHashName[1597] = FTTHash("ANM_NIS_FT846_NIS_UNHAPPY_5_ANDYS_f");
+  ANIM_uHashName[1598] = FTTHash("ANM_STAND_FT848_STAND_IDLE_4_ANDYD_GKHANDONPOST");
+  ANIM_uHashName[1599] = FTTHash("ANM_STAND_FT848_STAND_IDLE_4_ANDYD_GKHANDONPOST_f");
+  ANIM_uHashName[1600] = FTTHash("ANM_STAND_FT850_STAND_JOSTLE_1_ANDYD");
+  ANIM_uHashName[1601] = FTTHash("ANM_STAND_FT850_STAND_JOSTLE_1_ANDYD_f");
+  ANIM_uHashName[1602] = FTTHash("ANM_STAND_FT851_STAND_JOSTLE_1_ANDYS");
+  ANIM_uHashName[1603] = FTTHash("ANM_STAND_FT851_STAND_JOSTLE_1_ANDYS_f");
+  ANIM_uHashName[1604] = FTTHash("ANM_STAND_FT853_STAND_WALL_1_STAND_WALL_1_2_ANDYS_STAND");
+  ANIM_uHashName[1605] = FTTHash("ANM_STAND_FT853_STAND_WALL_1_STAND_WALL_1_2_ANDYS_STAND_f");
+  ANIM_uHashName[1606] = FTTHash("ANM_STAND_FT853_STAND_WALL_1_STAND_WALL_1_4_ANDYSQ_JUMP");
+  ANIM_uHashName[1607] = FTTHash("ANM_STAND_FT853_STAND_WALL_1_STAND_WALL_1_4_ANDYSQ_JUMP_f");
+  ANIM_uHashName[1608] = FTTHash("ANM_STAND_FT853_STAND_WALL_1_STAND_WALL_1_STAND_WALL_1_3_ANDYD_JUMP");
+  ANIM_uHashName[1609] = FTTHash("ANM_STAND_FT853_STAND_WALL_1_STAND_WALL_1_STAND_WALL_1_3_ANDYD_JUMP_f");
+  ANIM_uHashName[1610] = FTTHash("ANM_STAND_FT854_STAND_WALL_1_ANDYD_STAND_BEHIND");
+  ANIM_uHashName[1611] = FTTHash("ANM_STAND_FT854_STAND_WALL_1_ANDYD_STAND_BEHIND_f");
+  ANIM_uHashName[1612] = FTTHash("ANM_STAND_FT854_STAND_WALL_1_STAND_WALL_1_2_ANDYD");
+  ANIM_uHashName[1613] = FTTHash("ANM_STAND_FT854_STAND_WALL_1_STAND_WALL_1_2_ANDYD_f");
+  ANIM_uHashName[1614] = FTTHash("ANM_STUMBLE_FT855_STUMBLE__STUMBLE_1_ANDYS");
+  ANIM_uHashName[1615] = FTTHash("ANM_STUMBLE_FT855_STUMBLE__STUMBLE_1_ANDYS_f");
+  ANIM_uHashName[1616] = FTTHash("ANM_STUMBLE_FT856_STUMBLE__STUMBLE_1_ANDYD");
+  ANIM_uHashName[1617] = FTTHash("ANM_FALL_FT857_FALL_FALL_1_ANDYS");
+  ANIM_uHashName[1618] = FTTHash("ANM_FALL_FT857_FALL_FALL_1_ANDYS_f");
+  ANIM_uHashName[1619] = FTTHash("ANM_FALL_FT858_FALL_FALL_1_ANDYS");
+  ANIM_uHashName[1620] = FTTHash("ANM_FALL_FT858_FALL_FALL_1_ANDYS_f");
+  ANIM_uHashName[1621] = FTTHash("ANM_FALL_FT860_FALL_FALL_1_ANDYS");
+  ANIM_uHashName[1622] = FTTHash("ANM_FALL_FT860_FALL_FALL_1_ANDYS_f");
+  ANIM_uHashName[1623] = FTTHash("ANM_GK_SAVE_FT863_GK_DIVE_1_ANDYS");
+  ANIM_uHashName[1624] = FTTHash("ANM_GK_SAVE_FT863_GK_DIVE_1_ANDYS_f");
+  ANIM_uHashName[1625] = FTTHash("ANM_GK_SAVE_FT864_GK_DIVE_1_ANDYS");
+  ANIM_uHashName[1626] = FTTHash("ANM_GK_SAVE_FT864_GK_DIVE_1_ANDYS_f");
+  ANIM_uHashName[1627] = FTTHash("ANM_GK_SAVE_FT865_GK_DIVE_1_ANDYS");
+  ANIM_uHashName[1628] = FTTHash("ANM_GK_SAVE_FT865_GK_DIVE_1_ANDYS_f");
+  ANIM_uHashName[1629] = FTTHash("ANM_GK_SAVE_FT866_GK_DIVE_1_ANDYS");
+  ANIM_uHashName[1630] = FTTHash("ANM_GK_SAVE_FT866_GK_DIVE_1_ANDYS_f");
+  ANIM_uHashName[1631] = FTTHash("ANM_GK_SAVE_FT867_GK_DIVE_3_ANDYS");
+  ANIM_uHashName[1632] = FTTHash("ANM_GK_SAVE_FT867_GK_DIVE_3_ANDYS_f");
+  ANIM_uHashName[1633] = FTTHash("ANM_NIS_FT876_NIS_HAPPYSTAND_1_ANDYD");
+  ANIM_uHashName[1634] = FTTHash("ANM_NIS_FT876_NIS_HAPPYSTAND_1_ANDYD_f");
+  ANIM_uHashName[1635] = FTTHash("ANM_NIS_FT877_NIS_HAPPYSTAND_1_ANDYD");
+  ANIM_uHashName[1636] = FTTHash("ANM_NIS_FT877_NIS_HAPPYSTAND_1_ANDYD_f");
+  ANIM_uHashName[1637] = FTTHash("ANM_NIS_FT878_NIS_HAPPYSTAND_1_ANDYD");
+  ANIM_uHashName[1638] = FTTHash("ANM_NIS_FT878_NIS_HAPPYSTAND_1_NIS_HAPPYSTAND_1_2_ANDYS");
+  ANIM_uHashName[1639] = FTTHash("ANM_NIS_FT879_NIS_HAPPYSTAND_1_ANDYS");
+  ANIM_uHashName[1640] = FTTHash("ANM_NIS_FT879_NIS_HAPPYSTAND_1_ANDYS_f");
+  ANIM_uHashName[1641] = FTTHash("ANM_NIS_FT880_NIS_UNHAPPY_1_ANDYD");
+  ANIM_uHashName[1642] = FTTHash("ANM_NIS_FT880_NIS_UNHAPPY_1_ANDYD_f");
+  ANIM_uHashName[1643] = FTTHash("ANM_NIS_FT881_NIS_UNHAPPY_1_ANDYS");
+  ANIM_uHashName[1644] = FTTHash("ANM_NIS_FT882_NIS_UNHAPPY_1_ANDYS");
+  ANIM_uHashName[1645] = FTTHash("ANM_NIS_FT882_NIS_UNHAPPY_1_NIS_UNHAPPY_1_2_ANDYD");
+  ANIM_uHashName[1646] = FTTHash("ANM_NIS_FT882_NIS_UNHAPPY_1_NIS_UNHAPPY_1_2_ANDYD_f");
+  ANIM_uHashName[1647] = FTTHash("ANM_KICK_FT883_KICK_KICK_3_ANDYD");
+  ANIM_uHashName[1648] = FTTHash("ANM_KICK_FT883_KICK_KICK_3_ANDYD_f");
+  ANIM_uHashName[1649] = FTTHash("ANM_KICK_FT883_KICK_KICK_3_KICK_KICK_3_2_ANDYS");
+  ANIM_uHashName[1650] = FTTHash("ANM_KICK_FT883_KICK_KICK_3_KICK_KICK_3_2_ANDYS_f");
+  ANIM_uHashName[1651] = FTTHash("ANM_LOCO_FT905_WALK_FWD_JOSH");
+  ANIM_uHashName[1652] = FTTHash("ANM_LOCO_FT905_WALK_FWD_JOSH_f");
+  ANIM_uHashName[1653] = FTTHash("ANM_LOCO_FT907_WALK_90_JOSH");
+  ANIM_uHashName[1654] = FTTHash("ANM_LOCO_FT907_WALK_90_JOSH_f");
+  ANIM_uHashName[1655] = FTTHash("ANM_LOCO_FT910_WALK_180_JOSH");
+  ANIM_uHashName[1656] = FTTHash("ANM_LOCO_FT910_WALK_180_JOSH_f");
+  ANIM_uHashName[1657] = FTTHash("ANM_LOCO_FT930_SIDESTEP_LOW___EG_KEEPER_1_JOSH_SS");
+  ANIM_uHashName[1658] = FTTHash("ANM_LOCO_FT930_SIDESTEP_LOW___EG_KEEPER_1_JOSH_SS_f");
+  ANIM_uHashName[1659] = FTTHash("ANM_LOCO_FT931_GK_JOG_FORWARD_WITH_BALL_JOSH");
+  ANIM_uHashName[1660] = FTTHash("ANM_LOCO_FT931_GK_JOG_FORWARD_WITH_BALL_JOSH_f");
+  ANIM_uHashName[1661] = FTTHash("ANM_TURN_FT932_GK_STAND_TURN_90_TO_JOG_WITH_BALL_JOSH_STRAIGHT");
+  ANIM_uHashName[1662] = FTTHash("ANM_TURN_FT932_GK_STAND_TURN_90_TO_JOG_WITH_BALL_JOSH_STRAIGHT_f");
+  ANIM_uHashName[1663] = FTTHash("ANM_TURN_FT933_GK_STAND_TURN_45_TO_JOG_WITH_BALL_1_JOSH");
+  ANIM_uHashName[1664] = FTTHash("ANM_TURN_FT933_GK_STAND_TURN_45_TO_JOG_WITH_BALL_1_JOSH_f");
+  ANIM_uHashName[1665] = FTTHash("ANM_TURN_FT934_GK_STAND_TURN_90_TO_JOG_WITH_BALL_2_JOSH");
+  ANIM_uHashName[1666] = FTTHash("ANM_TURN_FT934_GK_STAND_TURN_90_TO_JOG_WITH_BALL_2_JOSH_f");
+  ANIM_uHashName[1667] = FTTHash("ANM_TURN_FT935_GK_STAND_TURN_135_TO_JOG_WITH_BALL_JOSH");
+  ANIM_uHashName[1668] = FTTHash("ANM_TURN_FT935_GK_STAND_TURN_135_TO_JOG_WITH_BALL_JOSH_f");
+  ANIM_uHashName[1669] = FTTHash("ANM_TURN_FT936_GK_STAND_TURN_180_TO_JOG_WITH_BALL_JOSH");
+  ANIM_uHashName[1670] = FTTHash("ANM_TURN_FT936_GK_STAND_TURN_180_TO_JOG_WITH_BALL_JOSH_f");
+  ANIM_uHashName[1671] = FTTHash("ANM_TURN_FT938_STAND_TURN_45_TO_JOG_JOSH");
+  ANIM_uHashName[1672] = FTTHash("ANM_TURN_FT938_STAND_TURN_45_TO_JOG_JOSH_f");
+  ANIM_uHashName[1673] = FTTHash("ANM_TURN_FT939_STAND_TURN_90_TO_JOG_JOSH");
+  ANIM_uHashName[1674] = FTTHash("ANM_TURN_FT939_STAND_TURN_90_TO_JOG_JOSH_f");
+  ANIM_uHashName[1675] = FTTHash("ANM_TURN_FT940_STAND_TURN_135_TO_JOG_JOSH");
+  ANIM_uHashName[1676] = FTTHash("ANM_TURN_FT940_STAND_TURN_135_TO_JOG_JOSH_f");
+  ANIM_uHashName[1677] = FTTHash("ANM_TURN_FT942_STAND_TURN_45_TO_SPRINT_JOSH");
+  ANIM_uHashName[1678] = FTTHash("ANM_TURN_FT942_STAND_TURN_45_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1679] = FTTHash("ANM_TURN_FT943_STAND_TURN_90_TO_SPRINT_JOSH");
+  ANIM_uHashName[1680] = FTTHash("ANM_TURN_FT943_STAND_TURN_90_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1681] = FTTHash("ANM_LOCO_FT943_STAND_TURN_90_TO_SPRINT_JOSH_SPRINTLOOP");
+  ANIM_uHashName[1682] = FTTHash("ANM_LOCO_FT943_STAND_TURN_90_TO_SPRINT_JOSH_SPRINTLOOP_f");
+  ANIM_uHashName[1683] = FTTHash("ANM_TURN_FT944_STAND_TURN_135_TO_SPRINT_JOSH");
+  ANIM_uHashName[1684] = FTTHash("ANM_TURN_FT944_STAND_TURN_135_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1685] = FTTHash("ANM_TURN_FT945_STAND_TURN_180_TO_SPRINT_JOSH");
+  ANIM_uHashName[1686] = FTTHash("ANM_TURN_FT945_STAND_TURN_180_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1687] = FTTHash("ANM_TURN_FT946_STAND_TURN_180_TO_SPRINT_1_JOSH");
+  ANIM_uHashName[1688] = FTTHash("ANM_TURN_FT946_STAND_TURN_180_TO_SPRINT_1_JOSH_f");
+  ANIM_uHashName[1689] = FTTHash("ANM_TURN_FT947_JOG_BACKWARDS_TURN_90_TO_JOG_JOSH");
+  ANIM_uHashName[1690] = FTTHash("ANM_TURN_FT947_JOG_BACKWARDS_TURN_90_TO_JOG_JOSH_f");
+  ANIM_uHashName[1691] = FTTHash("ANM_TURN_FT947_JOG_BACKWARDS_TURN_45_TO_JOG");
+  ANIM_uHashName[1692] = FTTHash("ANM_TURN_FT947_JOG_BACKWARDS_TURN_45_TO_JOG_f");
+  ANIM_uHashName[1693] = FTTHash("ANM_TURN_FT948_JOG_BACKWARDS_TURN_135_TO_JOG");
+  ANIM_uHashName[1694] = FTTHash("ANM_TURN_FT948_JOG_BACKWARDS_TURN_135_TO_JOG_f");
+  ANIM_uHashName[1695] = FTTHash("ANM_TURN_FT949_JOG_BACKWARDS_TURN_180_TO_JOG_1_JOSH");
+  ANIM_uHashName[1696] = FTTHash("ANM_TURN_FT949_JOG_BACKWARDS_TURN_180_TO_JOG_1_JOSH_f");
+  ANIM_uHashName[1697] = FTTHash("ANM_TURN_FT949_JOG_BACKWARDS_TURN_180_TO_JOG_1_JOSH_90");
+  ANIM_uHashName[1698] = FTTHash("ANM_TURN_FT949_JOG_BACKWARDS_TURN_180_TO_JOG_1_JOSH_90_f");
+  ANIM_uHashName[1699] = FTTHash("ANM_TURN_FT950_JOG_BACKWARDS_TURN_90_TO_SPRINT_JOSH");
+  ANIM_uHashName[1700] = FTTHash("ANM_TURN_FT950_JOG_BACKWARDS_TURN_90_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1701] = FTTHash("ANM_TURN_FT950_JOG_BACKWARDS_TURN_45_TO_SPRINT");
+  ANIM_uHashName[1702] = FTTHash("ANM_TURN_FT950_JOG_BACKWARDS_TURN_45_TO_SPRINT_f");
+  ANIM_uHashName[1703] = FTTHash("ANM_TURN_FT951_JOG_BACKWARDS_TURN_180_TO_SPRINT_JOSH");
+  ANIM_uHashName[1704] = FTTHash("ANM_TURN_FT951_JOG_BACKWARDS_TURN_180_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1705] = FTTHash("ANM_TURN_FT952_JOG_BACKWARDS_TURN_180_TO_SPRINT_1_JOSH");
+  ANIM_uHashName[1706] = FTTHash("ANM_TURN_FT952_JOG_BACKWARDS_TURN_180_TO_SPRINT_1_JOSH_f");
+  ANIM_uHashName[1707] = FTTHash("ANM_TURN_FT953_JOG_BACKWARDS_TURN_180_TO_SPRINT_3_JOSH");
+  ANIM_uHashName[1708] = FTTHash("ANM_TURN_FT953_JOG_BACKWARDS_TURN_180_TO_SPRINT_3_JOSH_f");
+  ANIM_uHashName[1709] = FTTHash("ANM_TURN_FT953_JOG_SIDEWAYS_TURN_90_TO_SPRINT");
+  ANIM_uHashName[1710] = FTTHash("ANM_TURN_FT953_JOG_SIDEWAYS_TURN_90_TO_SPRINT_f");
+  ANIM_uHashName[1711] = FTTHash("ANM_TURN_FT953_JOG_SIDEWAYS_TURN_90_TO_SPRINT_JOG");
+  ANIM_uHashName[1712] = FTTHash("ANM_TURN_FT953_JOG_SIDEWAYS_TURN_90_TO_SPRINT_JOG_f");
+  ANIM_uHashName[1713] = FTTHash("ANM_TURN_FT954_JOG_FORWARDS_TURN_90_TO_JOG_JOSH");
+  ANIM_uHashName[1714] = FTTHash("ANM_TURN_FT954_JOG_FORWARDS_TURN_90_TO_JOG_JOSH_f");
+  ANIM_uHashName[1715] = FTTHash("ANM_TURN_FT955_JOG_FORWARDS_TURN_135_TO_JOG_JOSH");
+  ANIM_uHashName[1716] = FTTHash("ANM_TURN_FT955_JOG_FORWARDS_TURN_135_TO_JOG_JOSH_f");
+  ANIM_uHashName[1717] = FTTHash("ANM_TURN_FT956_JOG_FORWARDS_TURN_135_TO_JOG_1_JOSH");
+  ANIM_uHashName[1718] = FTTHash("ANM_TURN_FT956_JOG_FORWARDS_TURN_135_TO_JOG_1_JOSH_f");
+  ANIM_uHashName[1719] = FTTHash("ANM_TURN_FT957_JOG_FORWARDS_TURN_180_TO_JOG_JOSH");
+  ANIM_uHashName[1720] = FTTHash("ANM_TURN_FT957_JOG_FORWARDS_TURN_180_TO_JOG_JOSH_f");
+  ANIM_uHashName[1721] = FTTHash("ANM_TURN_FT958_JOG_FORWARDS_TURN_90_TO_SPRINT_JOSH");
+  ANIM_uHashName[1722] = FTTHash("ANM_TURN_FT958_JOG_FORWARDS_TURN_90_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1723] = FTTHash("ANM_TURN_FT959_JOG_FORWARDS_TURN_135_TO_SPRINT_JOSH");
+  ANIM_uHashName[1724] = FTTHash("ANM_TURN_FT959_JOG_FORWARDS_TURN_135_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1725] = FTTHash("ANM_TURN_FT960_JOG_FORWARDS_TURN_180_TO_SPRINT_JOSH");
+  ANIM_uHashName[1726] = FTTHash("ANM_TURN_FT960_JOG_FORWARDS_TURN_180_TO_SPRINT_JOSH_f");
+  ANIM_uHashName[1727] = FTTHash("ANM_CONTROL_FT962_JOG_DRIBBLE_FWD_JOSH_DRIB");
+  ANIM_uHashName[1728] = FTTHash("ANM_CONTROL_FT962_JOG_DRIBBLE_FWD_JOSH_DRIB_f");
+  ANIM_uHashName[1729] = FTTHash("ANM_CONTROL_FT962_JOG_DRIBBLE_FWD_JOSH_DRIB2");
+  ANIM_uHashName[1730] = FTTHash("ANM_CONTROL_FT962_JOG_DRIBBLE_FWD_JOSH_DRIB2_f");
+  ANIM_uHashName[1731] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_JOSH_DRIB");
+  ANIM_uHashName[1732] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_JOSH_DRIB_f");
+  ANIM_uHashName[1733] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_JOSH_DRIB2");
+  ANIM_uHashName[1734] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_JOSH_DRIB2_f");
+  ANIM_uHashName[1735] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_JOSH_DRIB3");
+  ANIM_uHashName[1736] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_JOSH_DRIB3_f");
+  ANIM_uHashName[1737] = FTTHash("ANM_CONTROL_FT964_SPRINT_DRIBBLE_FWD_1_JOSH_DRIB");
+  ANIM_uHashName[1738] = FTTHash("ANM_CONTROL_FT964_SPRINT_DRIBBLE_FWD_1_JOSH_DRIB_f");
+  ANIM_uHashName[1739] = FTTHash("ANM_CONTROL_FT964_SPRINT_DRIBBLE_FWD_1_JOSH_DRIB2");
+  ANIM_uHashName[1740] = FTTHash("ANM_CONTROL_FT964_SPRINT_DRIBBLE_FWD_1_JOSH_DRIB2_f");
+  ANIM_uHashName[1741] = FTTHash("ANM_CONTROL_FT965_STANDING_PASS_FWD_2_JOSH_CTRL");
+  ANIM_uHashName[1742] = FTTHash("ANM_CONTROL_FT965_STANDING_PASS_FWD_2_JOSH_CTRL_f");
+  ANIM_uHashName[1743] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_2_JOSH_KICK");
+  ANIM_uHashName[1744] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_2_JOSH_KICK_f");
+  ANIM_uHashName[1745] = FTTHash("ANM_CONTROL_FT965_STANDING_PASS_FWD_5_JOSH_CTRL");
+  ANIM_uHashName[1746] = FTTHash("ANM_CONTROL_FT965_STANDING_PASS_FWD_5_JOSH_CTRL_f");
+  ANIM_uHashName[1747] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_5_JOSH_KICK");
+  ANIM_uHashName[1748] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_5_JOSH_KICK_f");
+  ANIM_uHashName[1749] = FTTHash("ANM_CONTROL_FT966_STANDING_PASS_45_2_JOSH_CTRL");
+  ANIM_uHashName[1750] = FTTHash("ANM_CONTROL_FT966_STANDING_PASS_45_2_JOSH_CTRL_f");
+  ANIM_uHashName[1751] = FTTHash("ANM_KICK_FT966_STANDING_PASS_45_2_JOSH_KICK");
+  ANIM_uHashName[1752] = FTTHash("ANM_KICK_FT966_STANDING_PASS_45_2_JOSH_KICK_f");
+  ANIM_uHashName[1753] = FTTHash("ANM_KICK_FT967_STANDING_PASS_90_JOSH_KICK");
+  ANIM_uHashName[1754] = FTTHash("ANM_KICK_FT967_STANDING_PASS_90_JOSH_KICK_f");
+  ANIM_uHashName[1755] = FTTHash("ANM_KICK_FT968_STANDING_PASS_135_JOSH_KICK");
+  ANIM_uHashName[1756] = FTTHash("ANM_KICK_FT968_STANDING_PASS_135_JOSH_KICK_f");
+  ANIM_uHashName[1757] = FTTHash("ANM_KICK_FT969_STANDING_PASS_135_1_JOSH_KICK");
+  ANIM_uHashName[1758] = FTTHash("ANM_KICK_FT969_STANDING_PASS_135_1_JOSH_KICK_f");
+  ANIM_uHashName[1759] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_2_JOSH_KICK");
+  ANIM_uHashName[1760] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_2_JOSH_KICK_f");
+  ANIM_uHashName[1761] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_5_JOSH_KICK");
+  ANIM_uHashName[1762] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_5_JOSH_KICK_f");
+  ANIM_uHashName[1763] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_3_JOSH_KICK");
+  ANIM_uHashName[1764] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_3_JOSH_KICK_f");
+  ANIM_uHashName[1765] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_5_JOSH_KICK");
+  ANIM_uHashName[1766] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_5_JOSH_KICK_f");
+  ANIM_uHashName[1767] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_JOSH_KICK");
+  ANIM_uHashName[1768] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_JOSH_KICK_f");
+  ANIM_uHashName[1769] = FTTHash("ANM_KICK_FT972_JOG_PASS_135_2_JOSH_KICK");
+  ANIM_uHashName[1770] = FTTHash("ANM_KICK_FT972_JOG_PASS_135_2_JOSH_KICK_f");
+  ANIM_uHashName[1771] = FTTHash("ANM_KICK_FT972_JOG_PASS_135_3_JOSH_KICK");
+  ANIM_uHashName[1772] = FTTHash("ANM_KICK_FT972_JOG_PASS_135_3_JOSH_KICK_f");
+  ANIM_uHashName[1773] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_2_JOSH_KICK");
+  ANIM_uHashName[1774] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_2_JOSH_KICK_f");
+  ANIM_uHashName[1775] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_4_JOSH_KICK");
+  ANIM_uHashName[1776] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_4_JOSH_KICK_f");
+  ANIM_uHashName[1777] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_5_JOSH_KICK");
+  ANIM_uHashName[1778] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_5_JOSH_KICK_f");
+  ANIM_uHashName[1779] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_2_JOSH_KICK");
+  ANIM_uHashName[1780] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_2_JOSH_KICK_f");
+  ANIM_uHashName[1781] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_4_JOSH_KICK");
+  ANIM_uHashName[1782] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_4_JOSH_KICK_f");
+  ANIM_uHashName[1783] = FTTHash("ANM_KICK_FT976_STANDING_VOLLEY_PASSES_135_JOSH_KICK");
+  ANIM_uHashName[1784] = FTTHash("ANM_KICK_FT976_STANDING_VOLLEY_PASSES_135_JOSH_KICK_f");
+  ANIM_uHashName[1785] = FTTHash("ANM_KICK_FT977_STANDING_VOLLEY_PASSES_135_1_JOSH_KICK");
+  ANIM_uHashName[1786] = FTTHash("ANM_KICK_FT977_STANDING_VOLLEY_PASSES_135_1_JOSH_KICK_f");
+  ANIM_uHashName[1787] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_2_JOSH");
+  ANIM_uHashName[1788] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_2_JOSH_f");
+  ANIM_uHashName[1789] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_3_JOSH");
+  ANIM_uHashName[1790] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_3_JOSH_f");
+  ANIM_uHashName[1791] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_4_MAX");
+  ANIM_uHashName[1792] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_4_MAX_f");
+  ANIM_uHashName[1793] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_JOSH");
+  ANIM_uHashName[1794] = FTTHash("ANM_KICK_FT1001_JOG_SHOT_FWD_JOSH_f");
+  ANIM_uHashName[1795] = FTTHash("ANM_KICK_FT1002_JOG_SHOT_45_2_JOSH");
+  ANIM_uHashName[1796] = FTTHash("ANM_KICK_FT1002_JOG_SHOT_45_2_JOSH_f");
+  ANIM_uHashName[1797] = FTTHash("ANM_KICK_FT1002_JOG_SHOT_45_MAX");
+  ANIM_uHashName[1798] = FTTHash("ANM_KICK_FT1002_JOG_SHOT_45_MAX_f");
+  ANIM_uHashName[1799] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_2_MAX");
+  ANIM_uHashName[1800] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_2_MAX_f");
+  ANIM_uHashName[1801] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_3_JOSH");
+  ANIM_uHashName[1802] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_3_JOSH_f");
+  ANIM_uHashName[1803] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_4_MAX");
+  ANIM_uHashName[1804] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_4_MAX_f");
+  ANIM_uHashName[1805] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_5_JOSH");
+  ANIM_uHashName[1806] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_5_JOSH_f");
+  ANIM_uHashName[1807] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_JOSH");
+  ANIM_uHashName[1808] = FTTHash("ANM_KICK_FT1003_JOG_SHOT_90_JOSH_f");
+  ANIM_uHashName[1809] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_1_JOSH");
+  ANIM_uHashName[1810] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_1_JOSH_f");
+  ANIM_uHashName[1811] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_5_MAX");
+  ANIM_uHashName[1812] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_5_MAX_f");
+  ANIM_uHashName[1813] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_6_MAX");
+  ANIM_uHashName[1814] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_6_MAX_f");
+  ANIM_uHashName[1815] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_7_JOSH");
+  ANIM_uHashName[1816] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_7_JOSH_f");
+  ANIM_uHashName[1817] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_8_MAX");
+  ANIM_uHashName[1818] = FTTHash("ANM_KICK_FT1004_JOG_SHOT_FWD_8_MAX_f");
+  ANIM_uHashName[1819] = FTTHash("ANM_KICK_FT1005_JOG_SHOT_FWD_10_JOSH");
+  ANIM_uHashName[1820] = FTTHash("ANM_KICK_FT1005_JOG_SHOT_FWD_10_JOSH_f");
+  ANIM_uHashName[1821] = FTTHash("ANM_KICK_FT1005_JOG_SHOT_FWD_11_JOSH");
+  ANIM_uHashName[1822] = FTTHash("ANM_KICK_FT1005_JOG_SHOT_FWD_11_JOSH_f");
+  ANIM_uHashName[1823] = FTTHash("ANM_KICK_FT1005_JOG_SHOT_FWD_9_JOSH");
+  ANIM_uHashName[1824] = FTTHash("ANM_KICK_FT1005_JOG_SHOT_FWD_9_JOSH_f");
+  ANIM_uHashName[1825] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_2_MAX_SP");
+  ANIM_uHashName[1826] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_2_MAX_SP_f");
+  ANIM_uHashName[1827] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_3_JOSH_SP");
+  ANIM_uHashName[1828] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_3_JOSH_SP_f");
+  ANIM_uHashName[1829] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_4_MAX_SP");
+  ANIM_uHashName[1830] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_4_MAX_SP_f");
+  ANIM_uHashName[1831] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_5_JOSH_SP");
+  ANIM_uHashName[1832] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_5_JOSH_SP_f");
+  ANIM_uHashName[1833] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_6_MAX_SP");
+  ANIM_uHashName[1834] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_6_MAX_SP_f");
+  ANIM_uHashName[1835] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_JOSH_SP");
+  ANIM_uHashName[1836] = FTTHash("ANM_KICKSETPIECE_FT1006_HARD_SHOT_FREEKICKS_JOSH_SP_f");
+  ANIM_uHashName[1837] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_2_JOSH_CTRL");
+  ANIM_uHashName[1838] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_2_JOSH_CTRL_f");
+  ANIM_uHashName[1839] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_3_MAX_CTRL");
+  ANIM_uHashName[1840] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_3_MAX_CTRL_f");
+  ANIM_uHashName[1841] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_3_MAX_CTRLA");
+  ANIM_uHashName[1842] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_3_MAX_CTRLA_f");
+  ANIM_uHashName[1843] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_4_JOSH_CTRL");
+  ANIM_uHashName[1844] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_4_JOSH_CTRL_f");
+  ANIM_uHashName[1845] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_4_JOSH_CTRLA");
+  ANIM_uHashName[1846] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_4_JOSH_CTRLA_f");
+  ANIM_uHashName[1847] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_MAX_CTRL");
+  ANIM_uHashName[1848] = FTTHash("ANM_CONTROL_FT1007_MOVING_CONTROL_GROUND_FWD_MAX_CTRL_f");
+  ANIM_uHashName[1849] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_2_JOSH_CTRL");
+  ANIM_uHashName[1850] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_2_JOSH_CTRL_f");
+  ANIM_uHashName[1851] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_3_JOSH_CTRL");
+  ANIM_uHashName[1852] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_3_JOSH_CTRL_f");
+  ANIM_uHashName[1853] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_4_JOSH_CTRL");
+  ANIM_uHashName[1854] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_4_JOSH_CTRL_f");
+  ANIM_uHashName[1855] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_5_JOSH_CTRL");
+  ANIM_uHashName[1856] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_5_JOSH_CTRL_f");
+  ANIM_uHashName[1857] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_6_JOSH_CTRL");
+  ANIM_uHashName[1858] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_6_JOSH_CTRL_f");
+  ANIM_uHashName[1859] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_7_JOSH_CTRL");
+  ANIM_uHashName[1860] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_7_JOSH_CTRL_f");
+  ANIM_uHashName[1861] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_JOSH_CTRL");
+  ANIM_uHashName[1862] = FTTHash("ANM_CONTROL_FT1008_MOVING_CONTROL_AIR_FWD_JOSH_CTRL_f");
+  ANIM_uHashName[1863] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_2_JOSH_CTRL");
+  ANIM_uHashName[1864] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_2_JOSH_CTRL_f");
+  ANIM_uHashName[1865] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_4_JOSH_CTRL");
+  ANIM_uHashName[1866] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_4_JOSH_CTRL_f");
+  ANIM_uHashName[1867] = FTTHash("ANM_KICK_FT1009_MOVING_CONTROL_AIR_90_5_JOSH_KICK");
+  ANIM_uHashName[1868] = FTTHash("ANM_KICK_FT1009_MOVING_CONTROL_AIR_90_5_JOSH_KICK_f");
+  ANIM_uHashName[1869] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_6_JOSH_CTRL");
+  ANIM_uHashName[1870] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_6_JOSH_CTRL_f");
+  ANIM_uHashName[1871] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_7_JOSH_CTRL");
+  ANIM_uHashName[1872] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_7_JOSH_CTRL_f");
+  ANIM_uHashName[1873] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_8_JOSH_CTRL");
+  ANIM_uHashName[1874] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_8_JOSH_CTRL_f");
+  ANIM_uHashName[1875] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_JOSH_CTRL");
+  ANIM_uHashName[1876] = FTTHash("ANM_CONTROL_FT1009_MOVING_CONTROL_AIR_90_JOSH_CTRL_f");
+  ANIM_uHashName[1877] = FTTHash("ANM_KICK_FT1010_STANDING_HEADER_ANIMATION_FWD_2_MAX");
+  ANIM_uHashName[1878] = FTTHash("ANM_KICK_FT1010_STANDING_HEADER_ANIMATION_FWD_2_MAX_f");
+  ANIM_uHashName[1879] = FTTHash("ANM_KICK_FT1010_STANDING_HEADER_ANIMATION_FWD_4_JOSH");
+  ANIM_uHashName[1880] = FTTHash("ANM_KICK_FT1010_STANDING_HEADER_ANIMATION_FWD_4_JOSH_f");
+  ANIM_uHashName[1881] = FTTHash("ANM_KICK_FT1010_STANDING_HEADER_ANIMATION_FWD_MAX");
+  ANIM_uHashName[1882] = FTTHash("ANM_KICK_FT1010_STANDING_HEADER_ANIMATION_FWD_MAX_f");
+  ANIM_uHashName[1883] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_2_MAX");
+  ANIM_uHashName[1884] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_2_MAX_f");
+  ANIM_uHashName[1885] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_3_JOSH");
+  ANIM_uHashName[1886] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_3_JOSH_f");
+  ANIM_uHashName[1887] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_4_MAX");
+  ANIM_uHashName[1888] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_4_MAX_f");
+  ANIM_uHashName[1889] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_5_JOSH");
+  ANIM_uHashName[1890] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_5_JOSH_f");
+  ANIM_uHashName[1891] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_6_MAX");
+  ANIM_uHashName[1892] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_6_MAX_f");
+  ANIM_uHashName[1893] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_JOSH");
+  ANIM_uHashName[1894] = FTTHash("ANM_KICK_FT1011_MOVING_HEADER_ANIMATIONS_FWD_JOSH_f");
+  ANIM_uHashName[1895] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_2_JOSH");
+  ANIM_uHashName[1896] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_2_JOSH_f");
+  ANIM_uHashName[1897] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_3_MAX");
+  ANIM_uHashName[1898] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_3_MAX_f");
+  ANIM_uHashName[1899] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_4_MAX");
+  ANIM_uHashName[1900] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_4_MAX_f");
+  ANIM_uHashName[1901] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_JOSH");
+  ANIM_uHashName[1902] = FTTHash("ANM_KICK_FT1012_MOVING_HEADER_ANIMATIONS_45_90_JOSH_f");
+  ANIM_uHashName[1903] = FTTHash("ANM_GK_SAVE_FT1013_GK_PUNCHES_2_MAX_PUNCH");
+  ANIM_uHashName[1904] = FTTHash("ANM_GK_SAVE_FT1013_GK_PUNCHES_2_MAX_PUNCH_f");
+  ANIM_uHashName[1905] = FTTHash("ANM_GK_SAVE_FT1013_GK_PUNCHES_3_MAX_PUNCH");
+  ANIM_uHashName[1906] = FTTHash("ANM_GK_SAVE_FT1013_GK_PUNCHES_3_MAX_PUNCH_f");
+  ANIM_uHashName[1907] = FTTHash("ANM_GK_SAVE_FT1013_GK_PUNCHES_MAX_PUNCH");
+  ANIM_uHashName[1908] = FTTHash("ANM_GK_SAVE_FT1013_GK_PUNCHES_MAX_PUNCH_f");
+  ANIM_uHashName[1909] = FTTHash("ANM_GK_THROW_FT1014_GK_SHORT_THROW_3_MAX_GKTHROW");
+  ANIM_uHashName[1910] = FTTHash("ANM_GK_THROW_FT1014_GK_SHORT_THROW_3_MAX_GKTHROW_f");
+  ANIM_uHashName[1911] = FTTHash("ANM_GK_THROW_FT1014_GK_SHORT_THROW_JOSH_GKTHROW");
+  ANIM_uHashName[1912] = FTTHash("ANM_GK_THROW_FT1014_GK_SHORT_THROW_JOSH_GKTHROW_f");
+  ANIM_uHashName[1913] = FTTHash("ANM_GK_THROW_FT1015_GK_LONG_THROW_2_MAX_GKTHROW");
+  ANIM_uHashName[1914] = FTTHash("ANM_GK_THROW_FT1015_GK_LONG_THROW_2_MAX_GKTHROW_f");
+  ANIM_uHashName[1915] = FTTHash("ANM_GK_THROW_FT1015_GK_LONG_THROW_MAX_GKTHROW");
+  ANIM_uHashName[1916] = FTTHash("ANM_GK_THROW_FT1015_GK_LONG_THROW_MAX_GKTHROW_f");
+  ANIM_uHashName[1917] = FTTHash("ANM_GK_KICK_FT1016_GK_DROP_KICK_2_MAX_GKKICK");
+  ANIM_uHashName[1918] = FTTHash("ANM_GK_KICK_FT1016_GK_DROP_KICK_2_MAX_GKKICK_f");
+  ANIM_uHashName[1919] = FTTHash("ANM_GK_KICK_FT1016_GK_DROP_KICK_MAX_GKKICK");
+  ANIM_uHashName[1920] = FTTHash("ANM_GK_KICK_FT1016_GK_DROP_KICK_MAX_GKKICK_f");
+  ANIM_uHashName[1921] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_2_MAX_KICKSK");
+  ANIM_uHashName[1922] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_2_MAX_KICKSK_f");
+  ANIM_uHashName[1923] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_3_JOSH_KICKSK");
+  ANIM_uHashName[1924] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_3_JOSH_KICKSK_f");
+  ANIM_uHashName[1925] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_4_MAX_KICKSK");
+  ANIM_uHashName[1926] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_4_MAX_KICKSK_f");
+  ANIM_uHashName[1927] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_JOSH_KICKSK_RABONA");
+  ANIM_uHashName[1928] = FTTHash("ANM_KICK_FT1017_FLICKS_SKILL_PASSES_SHOTS_JOSH_KICKSK_RABONA_f");
+  ANIM_uHashName[1929] = FTTHash("ANM_REFEREE_FT1019_REFEREE_LINESMAN_THROW_IN_INDICATOR_L_3_JOSH_UP");
+  ANIM_uHashName[1930] = FTTHash("ANM_REFEREE_FT1019_REFEREE_LINESMAN_THROW_IN_INDICATOR_L_4_JOSH_WAVE");
+  ANIM_uHashName[1931] = FTTHash("ANM_REFEREE_FT1019_REFEREE_LINESMAN_THROW_IN_INDICATOR_L_5_JOSH_LEFT");
+  ANIM_uHashName[1932] = FTTHash("ANM_REFEREE_FT1019_REFEREE_LINESMAN_THROW_IN_INDICATOR_L_6_JOSH_RIGHT");
+  ANIM_uHashName[1933] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_2_JOSH");
+  ANIM_uHashName[1934] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_2_JOSH_f");
+  ANIM_uHashName[1935] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_3_MAX");
+  ANIM_uHashName[1936] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_3_MAX_f");
+  ANIM_uHashName[1937] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_4_JOSH");
+  ANIM_uHashName[1938] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_4_JOSH_f");
+  ANIM_uHashName[1939] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_5_MAX");
+  ANIM_uHashName[1940] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_6_JOSH");
+  ANIM_uHashName[1941] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_6_JOSH_f");
+  ANIM_uHashName[1942] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_JOSH");
+  ANIM_uHashName[1943] = FTTHash("ANM_NIS_FT1023_MISC___STANDING_ARMFOLD_ANIMATION_JOSH_f");
+  ANIM_uHashName[1944] = FTTHash("ANM_NIS_FT1024_GK_PEN___ARM_WAVE_2_JOSH");
+  ANIM_uHashName[1945] = FTTHash("ANM_NIS_FT1024_GK_PEN___ARM_WAVE_2_JOSH_f");
+  ANIM_uHashName[1946] = FTTHash("ANM_NIS_FT1024_GK_PEN___ARM_WAVE_3_JOSH");
+  ANIM_uHashName[1947] = FTTHash("ANM_NIS_FT1024_GK_PEN___ARM_WAVE_3_JOSH_f");
+  ANIM_uHashName[1948] = FTTHash("ANM_NIS_FT1025_NIS___WARMUP_ANIMATIONS_2_MAX");
+  ANIM_uHashName[1949] = FTTHash("ANM_NIS_FT1025_NIS___WARMUP_ANIMATIONS_3_MAX");
+  ANIM_uHashName[1950] = FTTHash("ANM_NIS_FT1025_NIS___WARMUP_ANIMATIONS_4_JOSH");
+  ANIM_uHashName[1951] = FTTHash("ANM_NIS_FT1025_NIS___WARMUP_ANIMATIONS_5_JOSH");
+  ANIM_uHashName[1952] = FTTHash("ANM_NIS_FT1025_NIS___WARMUP_ANIMATIONS_JOSH");
+  ANIM_uHashName[1953] = FTTHash("ANM_NIS_FT1026_NIS___IDLE_STANDS_WAITING_FOR_KICKOFF_ETC_2_JOSH");
+  ANIM_uHashName[1954] = FTTHash("ANM_NIS_FT1026_NIS___IDLE_STANDS_WAITING_FOR_KICKOFF_ETC_3_JOSH");
+  ANIM_uHashName[1955] = FTTHash("ANM_NIS_FT1026_NIS___IDLE_STANDS_WAITING_FOR_KICKOFF_ETC_MAX");
+  ANIM_uHashName[1956] = FTTHash("ANM_NIS_FT1027_INTRO___WALKING_ONTO_PITCH_LOOKING_ROUND_POINTING_CLAPPING_ETC_2_JOSH");
+  ANIM_uHashName[1957] = FTTHash("ANM_NIS_FT1027_INTRO___WALKING_ONTO_PITCH_LOOKING_ROUND_POINTING_CLAPPING_ETC_2_JOSH_f");
+  ANIM_uHashName[1958] = FTTHash("ANM_NIS_FT1027_INTRO___WALKING_ONTO_PITCH_LOOKING_ROUND_POINTING_CLAPPING_ETC_3_JOSH");
+  ANIM_uHashName[1959] = FTTHash("ANM_NIS_FT1027_INTRO___WALKING_ONTO_PITCH_LOOKING_ROUND_POINTING_CLAPPING_ETC_3_JOSH_f");
+  ANIM_uHashName[1960] = FTTHash("ANM_NIS_FT1027_INTRO___WALKING_ONTO_PITCH_LOOKING_ROUND_POINTING_CLAPPING_ETC_MAX");
+  ANIM_uHashName[1961] = FTTHash("ANM_NIS_FT1028_INTRO___WALKING_INTO_A_LINEUP_ALL_PLAYERS_STOOD_INTO_A_LINE_THEN_TURNING_AROUND_2_MAX");
+  ANIM_uHashName[1962] = FTTHash("ANM_NIS_FT1028_INTRO___WALKING_INTO_A_LINEUP_ALL_PLAYERS_STOOD_INTO_A_LINE_THEN_TURNING_AROUND_2_MAX_f");
+  ANIM_uHashName[1963] = FTTHash("ANM_NIS_FT1028_INTRO___WALKING_INTO_A_LINEUP_ALL_PLAYERS_STOOD_INTO_A_LINE_THEN_TURNING_AROUND_3_MAX");
+  ANIM_uHashName[1964] = FTTHash("ANM_NIS_FT1028_INTRO___WALKING_INTO_A_LINEUP_ALL_PLAYERS_STOOD_INTO_A_LINE_THEN_TURNING_AROUND_JOSH");
+  ANIM_uHashName[1965] = FTTHash("ANM_NIS_FT1029_CELEBRATION___GENERIC_STANDING_ANIMATIONS_2_JOSH");
+  ANIM_uHashName[1966] = FTTHash("ANM_NIS_FT1029_CELEBRATION___GENERIC_STANDING_ANIMATIONS_2_JOSH_f");
+  ANIM_uHashName[1967] = FTTHash("ANM_NIS_FT1029_CELEBRATION___GENERIC_STANDING_ANIMATIONS_3_MAX");
+  ANIM_uHashName[1968] = FTTHash("ANM_NIS_FT1029_CELEBRATION___GENERIC_STANDING_ANIMATIONS_3_MAX_f");
+  ANIM_uHashName[1969] = FTTHash("ANM_NIS_FT1029_CELEBRATION___GENERIC_STANDING_ANIMATIONS_MAX");
+  ANIM_uHashName[1970] = FTTHash("ANM_NIS_FT1030_CELEBRATION___GENERIC_EXCITED_MOVING_ANIMATIONS_2_MAX");
+  ANIM_uHashName[1971] = FTTHash("ANM_NIS_FT1030_CELEBRATION___GENERIC_EXCITED_MOVING_ANIMATIONS_2_MAX_f");
+  ANIM_uHashName[1972] = FTTHash("ANM_NIS_FT1030_CELEBRATION___GENERIC_EXCITED_MOVING_ANIMATIONS_2_MAX_END");
+  ANIM_uHashName[1973] = FTTHash("ANM_NIS_FT1030_CELEBRATION___GENERIC_EXCITED_MOVING_ANIMATIONS_2_MAX_END_f");
+  ANIM_uHashName[1974] = FTTHash("ANM_NIS_FT1030_CELEBRATION___GENERIC_EXCITED_MOVING_ANIMATIONS_JOSH");
+  ANIM_uHashName[1975] = FTTHash("ANM_NIS_FT1030_CELEBRATION___GENERIC_EXCITED_MOVING_ANIMATIONS_JOSH_f");
+  ANIM_uHashName[1976] = FTTHash("ANM_NIS_FT1032_CELEBRATION___STERLING_CELEBRATION___COVERING_FACE_JOSH");
+  ANIM_uHashName[1977] = FTTHash("ANM_NIS_FT1032_CELEBRATION___STERLING_CELEBRATION___COVERING_FACE_JOSH_f");
+  ANIM_uHashName[1978] = FTTHash("ANM_NIS_FT1033_CELEBRATION___SUBDUED_CELEBRATIONS_2_JOSH");
+  ANIM_uHashName[1979] = FTTHash("ANM_NIS_FT1033_CELEBRATION___SUBDUED_CELEBRATIONS_2_JOSH_f");
+  ANIM_uHashName[1980] = FTTHash("ANM_NIS_FT1033_CELEBRATION___SUBDUED_CELEBRATIONS_JOSH");
+  ANIM_uHashName[1981] = FTTHash("ANM_NIS_FT1033_CELEBRATION___SUBDUED_CELEBRATIONS_JOSH_f");
+  ANIM_uHashName[1982] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_2_MAX");
+  ANIM_uHashName[1983] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_2_MAX_f");
+  ANIM_uHashName[1984] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_2_MAX_END");
+  ANIM_uHashName[1985] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_2_MAX_END_f");
+  ANIM_uHashName[1986] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_3_MAX");
+  ANIM_uHashName[1987] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_3_MAX_f");
+  ANIM_uHashName[1988] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_4_JOSH");
+  ANIM_uHashName[1989] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_4_JOSH_END");
+  ANIM_uHashName[1990] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_5_JOSH");
+  ANIM_uHashName[1991] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_5_JOSH_f");
+  ANIM_uHashName[1992] = FTTHash("ANM_NIS_FT1035_NIS___UNHAPPY___GENERIC_UPSET_ANIMATIONS_MAX");
+  ANIM_uHashName[1993] = FTTHash("ANM_NIS_FT1036_NIS___UNHAPPY___UPSET_LEAVING_THE_FIELD_IN_A_BAD_MOOD_2_JOSH");
+  ANIM_uHashName[1994] = FTTHash("ANM_NIS_FT1036_NIS___UNHAPPY___UPSET_LEAVING_THE_FIELD_IN_A_BAD_MOOD_2_JOSH_f");
+  ANIM_uHashName[1995] = FTTHash("ANM_NIS_FT1036_NIS___UNHAPPY___UPSET_LEAVING_THE_FIELD_IN_A_BAD_MOOD_MAX");
+  ANIM_uHashName[1996] = FTTHash("ANM_NIS_FT1036_NIS___UNHAPPY___UPSET_LEAVING_THE_FIELD_IN_A_BAD_MOOD_MAX_f");
+  ANIM_uHashName[1997] = FTTHash("ANM_NIS_FT1037_NIS___IDLE_STANDS_WAITING_FOR_KICKOFF_ETC_1_MAX");
+  ANIM_uHashName[1998] = FTTHash("ANM_NIS_FT1037_NIS___IDLE_STANDS_WAITING_FOR_KICKOFF_ETC_4_JOSH");
+  ANIM_uHashName[1999] = FTTHash("ANM_NIS_FT1037_NIS___IDLE_STANDS_WAITING_FOR_KICKOFF_ETC_5_JOSH");
+  ANIM_uHashName[2000] = FTTHash("ANM_NIS_FT1038_NIS_TWO_MAN___PLAYERS_MOBBING_REF_AFTER_A_CARD_JOSH");
+  ANIM_uHashName[2001] = FTTHash("ANM_NIS_FT1038_NIS_TWO_MAN___PLAYERS_MOBBING_REF_AFTER_A_CARD_MAX");
+  ANIM_uHashName[2002] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_2_JOSH");
+  ANIM_uHashName[2003] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_2_JOSH_f");
+  ANIM_uHashName[2004] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_2_MAX");
+  ANIM_uHashName[2005] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_2_MAX_f");
+  ANIM_uHashName[2006] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_3_JOSH");
+  ANIM_uHashName[2007] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_3_JOSH_f");
+  ANIM_uHashName[2008] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_3_MAX");
+  ANIM_uHashName[2009] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_3_MAX_f");
+  ANIM_uHashName[2010] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_JOSH");
+  ANIM_uHashName[2011] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_MAX");
+  ANIM_uHashName[2012] = FTTHash("ANM_NIS_FT1039_CELEBRATION___TWO_MAN___GENERIC_CELEBRATIONS_MAX_f");
+  ANIM_uHashName[2013] = FTTHash("ANM_NIS_FT1040_CELEBRATION___TWO_MAN___NISTELROOY_IN_FRONT_IF_DISGRUNTLED_OPPONENT_JOSH");
+  ANIM_uHashName[2014] = FTTHash("ANM_NIS_FT1040_CELEBRATION___TWO_MAN___NISTELROOY_IN_FRONT_IF_DISGRUNTLED_OPPONENT_MAX");
+  ANIM_uHashName[2015] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_1_JOSH");
+  ANIM_uHashName[2016] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_1_JOSH_f");
+  ANIM_uHashName[2017] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_1_MAX");
+  ANIM_uHashName[2018] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_1_MAX_f");
+  ANIM_uHashName[2019] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_3_JOSH");
+  ANIM_uHashName[2020] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_3_JOSH_f");
+  ANIM_uHashName[2021] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_3_MAX");
+  ANIM_uHashName[2022] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_3_MAX_f");
+  ANIM_uHashName[2023] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_4_JOSH");
+  ANIM_uHashName[2024] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_4_JOSH_f");
+  ANIM_uHashName[2025] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_4_MAX");
+  ANIM_uHashName[2026] = FTTHash("ANM_NIS_FT1041_CELEBRATION___SUBDUED_CELEBRATIONS_4_MAX_f");
+  ANIM_uHashName[2027] = FTTHash("ANM_NIS_FT1042_CELEBRATION___SUBDUED_CELEBRATIONS_6_JOSH");
+  ANIM_uHashName[2028] = FTTHash("ANM_NIS_FT1042_CELEBRATION___SUBDUED_CELEBRATIONS_6_JOSH_f");
+  ANIM_uHashName[2029] = FTTHash("ANM_NIS_FT1042_CELEBRATION___SUBDUED_CELEBRATIONS_6_MAX");
+  ANIM_uHashName[2030] = FTTHash("ANM_NIS_FT1042_CELEBRATION___SUBDUED_CELEBRATIONS_6_MAX_f");
+  ANIM_uHashName[2031] = FTTHash("ANM_NIS_FT1043_CELEBRATION___GENERIC_DANCE_CELEBRATIONS_1_JOSH");
+  ANIM_uHashName[2032] = FTTHash("ANM_NIS_FT1043_CELEBRATION___GENERIC_DANCE_CELEBRATIONS_1_JOSH_f");
+  ANIM_uHashName[2033] = FTTHash("ANM_LOCO_FT923_JOG_JOSTLES_ARM_LOWER_JOSH_JOSTLER");
+  ANIM_uHashName[2034] = FTTHash("ANM_LOCO_FT923_JOG_JOSTLES_ARM_LOWER_JOSH_JOSTLER_f");
+  ANIM_uHashName[2035] = FTTHash("ANM_LOCO_FT924_JOG_JOSTLES_ARM_LOWER_1_JOSH_JOSTLER");
+  ANIM_uHashName[2036] = FTTHash("ANM_LOCO_FT924_JOG_JOSTLES_ARM_LOWER_1_JOSH_JOSTLER_f");
+  ANIM_uHashName[2037] = FTTHash("ANM_LOCO_FT925_SPRINT_JOSTLE_ARM_LOW_JOSH_SJOSTLER");
+  ANIM_uHashName[2038] = FTTHash("ANM_LOCO_FT925_SPRINT_JOSTLE_ARM_LOW_JOSH_SJOSTLER_f");
+  ANIM_uHashName[2039] = FTTHash("ANM_LOCO_FT926_SPRINT_JOSTLE_ARM_LOW_1_JOSH_SJOSTLER");
+  ANIM_uHashName[2040] = FTTHash("ANM_LOCO_FT926_SPRINT_JOSTLE_ARM_LOW_1_JOSH_SJOSTLER_f");
+  ANIM_uHashName[2041] = FTTHash("ANM_STAND_FT927_STANDING_JOSTLES_JOSH");
+  ANIM_uHashName[2042] = FTTHash("ANM_STAND_FT927_STANDING_JOSTLES_JOSH_f");
+  ANIM_uHashName[2043] = FTTHash("ANM_STAND_FT927_STANDING_JOSTLES_MAX");
+  ANIM_uHashName[2044] = FTTHash("ANM_STAND_FT927_STANDING_JOSTLES_MAX_f");
+  ANIM_uHashName[2045] = FTTHash("ANM_STAND_FT928_STANDING_JOSTLES_1_JOSH");
+  ANIM_uHashName[2046] = FTTHash("ANM_STAND_FT928_STANDING_JOSTLES_1_JOSH_f");
+  ANIM_uHashName[2047] = FTTHash("ANM_STAND_FT928_STANDING_JOSTLES_1_MAX");
+  ANIM_uHashName[2048] = FTTHash("ANM_STAND_FT928_STANDING_JOSTLES_1_MAX_f");
+  ANIM_uHashName[2049] = FTTHash("ANM_FALL_FT952_JOG_BACKWARDS_TURN_180_TO_SPRINT_3_MAX_FALL");
+  ANIM_uHashName[2050] = FTTHash("ANM_FALL_FT952_JOG_BACKWARDS_TURN_180_TO_SPRINT_3_MAX_FALL_f");
+  ANIM_uHashName[2051] = FTTHash("ANM_CONTROL_FT962_JOG_DRIBBLE_FWD_MAX_DRIB");
+  ANIM_uHashName[2052] = FTTHash("ANM_CONTROL_FT962_JOG_DRIBBLE_FWD_MAX_DRIB_f");
+  ANIM_uHashName[2053] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_MAX_DRIB");
+  ANIM_uHashName[2054] = FTTHash("ANM_CONTROL_FT963_SPRINT_DRIBBLE_FWD_MAX_DRIB_f");
+  ANIM_uHashName[2055] = FTTHash("ANM_CONTROL_FT964_SPRINT_DRIBBLE_FWD_1_MAX_DRIB");
+  ANIM_uHashName[2056] = FTTHash("ANM_CONTROL_FT964_SPRINT_DRIBBLE_FWD_1_MAX_DRIB_f");
+  ANIM_uHashName[2057] = FTTHash("ANM_CONTROL_FT965_STANDING_PASS_FWD_3_MAX_CTRL");
+  ANIM_uHashName[2058] = FTTHash("ANM_CONTROL_FT965_STANDING_PASS_FWD_3_MAX_CTRL_f");
+  ANIM_uHashName[2059] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_3_MAX_KICK");
+  ANIM_uHashName[2060] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_3_MAX_KICK_f");
+  ANIM_uHashName[2061] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_4_MAX_KICK");
+  ANIM_uHashName[2062] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_4_MAX_KICK_f");
+  ANIM_uHashName[2063] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_MAX_KICK");
+  ANIM_uHashName[2064] = FTTHash("ANM_KICK_FT965_STANDING_PASS_FWD_MAX_KICK_f");
+  ANIM_uHashName[2065] = FTTHash("ANM_CONTROL_FT966_STANDING_PASS_45_3_MAX_CTRL");
+  ANIM_uHashName[2066] = FTTHash("ANM_CONTROL_FT966_STANDING_PASS_45_3_MAX_CTRL_f");
+  ANIM_uHashName[2067] = FTTHash("ANM_KICK_FT966_STANDING_PASS_45_3_MAX_KICK");
+  ANIM_uHashName[2068] = FTTHash("ANM_KICK_FT966_STANDING_PASS_45_3_MAX_KICK_f");
+  ANIM_uHashName[2069] = FTTHash("ANM_KICK_FT967_STANDING_PASS_90_2_MAX_KICK");
+  ANIM_uHashName[2070] = FTTHash("ANM_KICK_FT967_STANDING_PASS_90_2_MAX_KICK_f");
+  ANIM_uHashName[2071] = FTTHash("ANM_KICK_FT968_STANDING_PASS_135_2_MAX_KICK");
+  ANIM_uHashName[2072] = FTTHash("ANM_KICK_FT968_STANDING_PASS_135_2_MAX_KICK_f");
+  ANIM_uHashName[2073] = FTTHash("ANM_KICK_FT969_STANDING_PASS_135_3_MAX_KICK");
+  ANIM_uHashName[2074] = FTTHash("ANM_KICK_FT969_STANDING_PASS_135_3_MAX_KICK_f");
+  ANIM_uHashName[2075] = FTTHash("ANM_CONTROL_FT969_STANDING_PASS_135_4_MAX_CTRL");
+  ANIM_uHashName[2076] = FTTHash("ANM_CONTROL_FT969_STANDING_PASS_135_4_MAX_CTRL_f");
+  ANIM_uHashName[2077] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_4_MAX_KICK");
+  ANIM_uHashName[2078] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_4_MAX_KICK_f");
+  ANIM_uHashName[2079] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_MAX_KICK");
+  ANIM_uHashName[2080] = FTTHash("ANM_KICK_FT970_JOG_PASS_45_MAX_KICK_f");
+  ANIM_uHashName[2081] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_2_MAX_KICK");
+  ANIM_uHashName[2082] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_2_MAX_KICK_f");
+  ANIM_uHashName[2083] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_4_MAX_KICK");
+  ANIM_uHashName[2084] = FTTHash("ANM_KICK_FT971_JOG_PASS_90_4_MAX_KICK_f");
+  ANIM_uHashName[2085] = FTTHash("ANM_KICK_FT972_JOG_PASS_135_MAX_KICK");
+  ANIM_uHashName[2086] = FTTHash("ANM_KICK_FT972_JOG_PASS_135_MAX_KICK_f");
+  ANIM_uHashName[2087] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_3_MAX_KICK");
+  ANIM_uHashName[2088] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_3_MAX_KICK_f");
+  ANIM_uHashName[2089] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_MAX_KICK");
+  ANIM_uHashName[2090] = FTTHash("ANM_KICK_FT973_STANDING_VOLLEY_PASSES_FWD_MAX_KICK_f");
+  ANIM_uHashName[2091] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_3_MAX_KICK");
+  ANIM_uHashName[2092] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_3_MAX_KICK_f");
+  ANIM_uHashName[2093] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_MAX_KICK");
+  ANIM_uHashName[2094] = FTTHash("ANM_KICK_FT974_STANDING_VOLLEY_PASSES_90_MAX_KICK_f");
+  ANIM_uHashName[2095] = FTTHash("ANM_KICK_FT978_STANDING_VOLLEY_PASSES_135_2_MAX_KICK");
+  ANIM_uHashName[2096] = FTTHash("ANM_KICK_FT978_STANDING_VOLLEY_PASSES_135_2_MAX_KICK_f");
+  ANIM_uHashName[2097] = FTTHash("ANM_KICK_FT978_STANDING_VOLLEY_PASSES_135_3_MAX_KICK");
+  ANIM_uHashName[2098] = FTTHash("ANM_KICK_FT978_STANDING_VOLLEY_PASSES_135_3_MAX_KICK_f");
+  ANIM_uHashName[2099] = FTTHash("ANM_KICK_FT979_STANDING_VOLLEY_PASSES_135_4_MAX_KICK");
+  ANIM_uHashName[2100] = FTTHash("ANM_KICK_FT979_STANDING_VOLLEY_PASSES_135_4_MAX_KICK_f");
+  ANIM_uHashName[2101] = FTTHash("ANM_KICK_FT979_STANDING_VOLLEY_PASSES_135_5_MAX_KICK");
+  ANIM_uHashName[2102] = FTTHash("ANM_KICK_FT979_STANDING_VOLLEY_PASSES_135_5_MAX_KICK_f");
+  ANIM_uHashName[2103] = FTTHash("ANM_GK_SAVE_FT981_GK_SAVES_DIVES_LOW_CLOSE_MAX");
+  ANIM_uHashName[2104] = FTTHash("ANM_GK_SAVE_FT981_GK_SAVES_DIVES_LOW_CLOSE_MAX_f");
+  ANIM_uHashName[2105] = FTTHash("ANM_GK_SAVE_FT982_GK_SAVES_DIVES_LOW_CLOSE_1_MAX");
+  ANIM_uHashName[2106] = FTTHash("ANM_GK_SAVE_FT982_GK_SAVES_DIVES_LOW_CLOSE_1_MAX_f");
+  ANIM_uHashName[2107] = FTTHash("ANM_GK_SAVE_FT983_GK_SAVES_DIVES_LOW_CLOSE_3_MAX");
+  ANIM_uHashName[2108] = FTTHash("ANM_GK_SAVE_FT983_GK_SAVES_DIVES_LOW_CLOSE_3_MAX_f");
+  ANIM_uHashName[2109] = FTTHash("ANM_GK_SAVE_FT984_GK_SAVES_DIVES_LOW_CLOSE_2_MAX");
+  ANIM_uHashName[2110] = FTTHash("ANM_GK_SAVE_FT984_GK_SAVES_DIVES_LOW_CLOSE_2_MAX_f");
+  ANIM_uHashName[2111] = FTTHash("ANM_GK_SAVE_FT985_GK_SAVES_DIVES_LOW_CLOSE_4_MAX");
+  ANIM_uHashName[2112] = FTTHash("ANM_GK_SAVE_FT985_GK_SAVES_DIVES_LOW_CLOSE_4_MAX_f");
+  ANIM_uHashName[2113] = FTTHash("ANM_GK_SAVE_FT987_GK_SAVES_DIVES_LOW_CLOSE_5_MAX");
+  ANIM_uHashName[2114] = FTTHash("ANM_GK_SAVE_FT987_GK_SAVES_DIVES_LOW_CLOSE_5_MAX_f");
+  ANIM_uHashName[2115] = FTTHash("ANM_GK_SAVE_FT988_GK_SAVES_DIVES_LOW_CLOSE_6_MAX");
+  ANIM_uHashName[2116] = FTTHash("ANM_GK_SAVE_FT988_GK_SAVES_DIVES_LOW_CLOSE_6_MAX_f");
+  ANIM_uHashName[2117] = FTTHash("ANM_GK_SAVE_FT990_GK_SAVES_DIVES_LOW_CLOSE_7_MAX");
+  ANIM_uHashName[2118] = FTTHash("ANM_GK_SAVE_FT990_GK_SAVES_DIVES_LOW_CLOSE_7_MAX_f");
+  ANIM_uHashName[2119] = FTTHash("ANM_GK_SAVE_FT991_GK_SAVES_DIVES_LOW_CLOSE_8_MAX");
+  ANIM_uHashName[2120] = FTTHash("ANM_GK_SAVE_FT991_GK_SAVES_DIVES_LOW_CLOSE_8_MAX_f");
+  ANIM_uHashName[2121] = FTTHash("ANM_GK_SAVE_FT992_GK_SAVES_DIVES_LOW_CLOSE_9_MAX");
+  ANIM_uHashName[2122] = FTTHash("ANM_GK_SAVE_FT992_GK_SAVES_DIVES_LOW_CLOSE_9_MAX_f");
+  ANIM_uHashName[2123] = FTTHash("ANM_GK_SAVE_FT993_GK_SAVES_DIVES_LOW_CLOSE_10_MAX");
+  ANIM_uHashName[2124] = FTTHash("ANM_GK_SAVE_FT993_GK_SAVES_DIVES_LOW_CLOSE_10_MAX_f");
+  ANIM_uHashName[2125] = FTTHash("ANM_GK_SAVE_FT994_GK_SAVES_DIVES_LOW_CLOSE_11_MAX");
+  ANIM_uHashName[2126] = FTTHash("ANM_GK_SAVE_FT994_GK_SAVES_DIVES_LOW_CLOSE_11_MAX_f");
+  ANIM_uHashName[2127] = FTTHash("ANM_GK_SAVE_FT995_GK_SAVES_DIVES_LOW_CLOSE_12_MAX");
+  ANIM_uHashName[2128] = FTTHash("ANM_GK_SAVE_FT995_GK_SAVES_DIVES_LOW_CLOSE_12_MAX_f");
+  ANIM_uHashName[2129] = FTTHash("ANM_GK_SAVE_FT995_GK_SAVES_DIVES_LOW_CLOSE_13_MAX");
+  ANIM_uHashName[2130] = FTTHash("ANM_GK_SAVE_FT995_GK_SAVES_DIVES_LOW_CLOSE_13_MAX_f");
+  ANIM_uHashName[2131] = FTTHash("ANM_GK_SAVE_FT996_GK_SAVES_DIVES_LOW_CLOSE_14_MAX");
+  ANIM_uHashName[2132] = FTTHash("ANM_GK_SAVE_FT996_GK_SAVES_DIVES_LOW_CLOSE_14_MAX_f");
+  ANIM_uHashName[2133] = FTTHash("ANM_GK_SAVE_FT996_GK_SAVES_DIVES_LOW_CLOSE_15_MAX");
+  ANIM_uHashName[2134] = FTTHash("ANM_GK_SAVE_FT996_GK_SAVES_DIVES_LOW_CLOSE_15_MAX_f");
+  ANIM_uHashName[2135] = FTTHash("ANM_GK_SAVE_FT996_GK_SAVES_DIVES_LOW_CLOSE_16_MAX");
+  ANIM_uHashName[2136] = FTTHash("ANM_GK_SAVE_FT996_GK_SAVES_DIVES_LOW_CLOSE_16_MAX_f");
+  ANIM_uHashName[2137] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_10_MAX");
+  ANIM_uHashName[2138] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_10_MAX_f");
+  ANIM_uHashName[2139] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_11_MAX_GU_BALL_K_SL");
+  ANIM_uHashName[2140] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_11_MAX_GU_BALL_K_SL_f");
+  ANIM_uHashName[2141] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_3_MAX");
+  ANIM_uHashName[2142] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_3_MAX_f");
+  ANIM_uHashName[2143] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_4_MAX");
+  ANIM_uHashName[2144] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_4_MAX_f");
+  ANIM_uHashName[2145] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_5_MAX_GU_BALL_K_S");
+  ANIM_uHashName[2146] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_5_MAX_GU_BALL_K_S_f");
+  ANIM_uHashName[2147] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_6_MAX");
+  ANIM_uHashName[2148] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_6_MAX_f");
+  ANIM_uHashName[2149] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_7_MAX_GU_BALL_K_R");
+  ANIM_uHashName[2150] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_7_MAX_GU_BALL_K_R_f");
+  ANIM_uHashName[2151] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_8_MAX");
+  ANIM_uHashName[2152] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_8_MAX_f");
+  ANIM_uHashName[2153] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_9_MAX_GU_BALL_K_L");
+  ANIM_uHashName[2154] = FTTHash("ANM_GETUP_FT997_GK_COLLECT_LOW_9_MAX_GU_BALL_K_L_f");
+  ANIM_uHashName[2155] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_MAX");
+  ANIM_uHashName[2156] = FTTHash("ANM_GK_SAVE_FT997_GK_COLLECT_LOW_MAX_f");
+  ANIM_uHashName[2157] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_3_MAX");
+  ANIM_uHashName[2158] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_3_MAX_f");
+  ANIM_uHashName[2159] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_4_MAX");
+  ANIM_uHashName[2160] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_4_MAX_f");
+  ANIM_uHashName[2161] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_5_MAX");
+  ANIM_uHashName[2162] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_6_MAX");
+  ANIM_uHashName[2163] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_6_MAX_f");
+  ANIM_uHashName[2164] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_7_MAX");
+  ANIM_uHashName[2165] = FTTHash("ANM_GK_SAVE_FT998_GK_STANDING_CATCHES_7_MAX_f");
+  ANIM_uHashName[2166] = FTTHash("ANM_TURN_EXE121_STAND_TURN_R_45_GK");
+  ANIM_uHashName[2167] = FTTHash("ANM_TURN_EXE121_STAND_TURN_R_45_GK_f");
+  ANIM_uHashName[2168] = FTTHash("ANM_STAND_EXE121_STAND_GKBALL");
+  ANIM_uHashName[2169] = FTTHash("ANM_TURN_EXE122_STAND_TURN_R_90_GK");
+  ANIM_uHashName[2170] = FTTHash("ANM_TURN_EXE122_STAND_TURN_R_90_GK_f");
+  ANIM_uHashName[2171] = FTTHash("ANM_TURN_EXE123_STAND_TURN_R_135_GK");
+  ANIM_uHashName[2172] = FTTHash("ANM_TURN_EXE123_STAND_TURN_R_135_GK_f");
+  ANIM_uHashName[2173] = FTTHash("ANM_TURN_EXE124_STAND_TURN_R_180_GK");
+  ANIM_uHashName[2174] = FTTHash("ANM_TURN_EXE124_STAND_TURN_R_180_GK_f");
+  ANIM_uHashName[2175] = FTTHash("ANM_LOCO_FT1102_WALK_FWD_1_COLIN_WALKFW");
+  ANIM_uHashName[2176] = FTTHash("ANM_LOCO_FT1102_WALK_FWD_1_COLIN_WALKFW_f");
+  ANIM_uHashName[2177] = FTTHash("ANM_LOCO_FT1102_WALK_FWD_1_NOEL_WALKFW");
+  ANIM_uHashName[2178] = FTTHash("ANM_LOCO_FT1102_WALK_FWD_1_NOEL_WALKFW_f");
+  ANIM_uHashName[2179] = FTTHash("ANM_LOCO_FT1104_WALK_90_2_COLIN_90");
+  ANIM_uHashName[2180] = FTTHash("ANM_LOCO_FT1104_WALK_90_2_COLIN_90_f");
+  ANIM_uHashName[2181] = FTTHash("ANM_LOCO_FT1106_WALK_180_1_COLIN_180");
+  ANIM_uHashName[2182] = FTTHash("ANM_LOCO_FT1106_WALK_180_1_COLIN_180_f");
+  ANIM_uHashName[2183] = FTTHash("ANM_LOCO_FT1114_RUN_70PERCENT_90_QUICK_SIDESTEP_COLIN_SS");
+  ANIM_uHashName[2184] = FTTHash("ANM_LOCO_FT1114_RUN_70PERCENT_90_QUICK_SIDESTEP_COLIN_SS_f");
+  ANIM_uHashName[2185] = FTTHash("ANM_LOCO_FT1114_RUN_70PERCENT_90_QUICK_SIDESTEP_NOEL_SS");
+  ANIM_uHashName[2186] = FTTHash("ANM_LOCO_FT1114_RUN_70PERCENT_90_QUICK_SIDESTEP_NOEL_SS_f");
+  ANIM_uHashName[2187] = FTTHash("ANM_LOCO_FT1117_RUN_70PERCENT_180_COLIN_JOG_180");
+  ANIM_uHashName[2188] = FTTHash("ANM_LOCO_FT1117_RUN_70PERCENT_180_COLIN_JOG_180_f");
+  ANIM_uHashName[2189] = FTTHash("ANM_LOCO_FT1117_RUN_70PERCENT_180_NOEL_JOG_180");
+  ANIM_uHashName[2190] = FTTHash("ANM_LOCO_FT1117_RUN_70PERCENT_180_NOEL_JOG_180_f");
+  ANIM_uHashName[2191] = FTTHash("ANM_LOCO_FT1119_SPRINT_100PERCENT_FWD_1_NOEL_SPRINT");
+  ANIM_uHashName[2192] = FTTHash("ANM_LOCO_FT1119_SPRINT_100PERCENT_FWD_1_NOEL_SPRINT_f");
+  ANIM_uHashName[2193] = FTTHash("ANM_LOCO_FT1121_SPRINT_100PERCENT_FWD_3_NOEL_SPRINT");
+  ANIM_uHashName[2194] = FTTHash("ANM_LOCO_FT1121_SPRINT_100PERCENT_FWD_3_NOEL_SPRINT_f");
+  ANIM_uHashName[2195] = FTTHash("ANM_LOCO_FT1122_SPRINT_100PERCENT_FWD_COLIN_SPRINT_POINT");
+  ANIM_uHashName[2196] = FTTHash("ANM_LOCO_FT1122_SPRINT_100PERCENT_FWD_COLIN_SPRINT_POINT_f");
+  ANIM_uHashName[2197] = FTTHash("ANM_TURN_FT1124_JOG_BACKWARDS_TURN_90_TO_JOG_FW_COLIN");
+  ANIM_uHashName[2198] = FTTHash("ANM_TURN_FT1124_JOG_BACKWARDS_TURN_90_TO_JOG_FW_COLIN_f");
+  ANIM_uHashName[2199] = FTTHash("ANM_TURN_FT1125_JOG_BACKWARDS_TURN_90_TO_JOG_FW_1_NOEL");
+  ANIM_uHashName[2200] = FTTHash("ANM_TURN_FT1125_JOG_BACKWARDS_TURN_90_TO_JOG_FW_1_NOEL_f");
+  ANIM_uHashName[2201] = FTTHash("ANM_TURN_FT1126_JOG_BACKWARDS_TURN_180_TO_JOG_FW_COLIN");
+  ANIM_uHashName[2202] = FTTHash("ANM_TURN_FT1126_JOG_BACKWARDS_TURN_180_TO_JOG_FW_COLIN_f");
+  ANIM_uHashName[2203] = FTTHash("ANM_TURN_FT1126_JOG_BACKWARDS_TURN_180_TO_JOG_FW_NOEL");
+  ANIM_uHashName[2204] = FTTHash("ANM_TURN_FT1126_JOG_BACKWARDS_TURN_180_TO_JOG_FW_NOEL_f");
+  ANIM_uHashName[2205] = FTTHash("ANM_TURN_FT1127_JOG_BACKWARDS_TURN_180_TO_JOG_FW_1_COLIN");
+  ANIM_uHashName[2206] = FTTHash("ANM_TURN_FT1127_JOG_BACKWARDS_TURN_180_TO_JOG_FW_1_COLIN_f");
+  ANIM_uHashName[2207] = FTTHash("ANM_TURN_FT1128_JOG_BACKWARDS_TURN_90_TO_SPRINT_FW_1_COLIN");
+  ANIM_uHashName[2208] = FTTHash("ANM_TURN_FT1128_JOG_BACKWARDS_TURN_90_TO_SPRINT_FW_1_COLIN_f");
+  ANIM_uHashName[2209] = FTTHash("ANM_TURN_FT1129_JOG_BACKWARDS_TURN_90_TO_SPRINT_FW_COLIN");
+  ANIM_uHashName[2210] = FTTHash("ANM_TURN_FT1129_JOG_BACKWARDS_TURN_90_TO_SPRINT_FW_COLIN_f");
+  ANIM_uHashName[2211] = FTTHash("ANM_TURN_FT1132_JOG_FORWARDS_TURN_90_TO_JOG_FW_COLIN");
+  ANIM_uHashName[2212] = FTTHash("ANM_TURN_FT1132_JOG_FORWARDS_TURN_90_TO_JOG_FW_COLIN_f");
+  ANIM_uHashName[2213] = FTTHash("ANM_TURN_FT1133_JOG_FORWARDS_TURN_90_TO_JOG_FW_1_COLIN");
+  ANIM_uHashName[2214] = FTTHash("ANM_TURN_FT1133_JOG_FORWARDS_TURN_90_TO_JOG_FW_1_COLIN_f");
+  ANIM_uHashName[2215] = FTTHash("ANM_TURN_FT1135_JOG_FORWARDS_TURN_135_TO_JOG_FW_COLIN");
+  ANIM_uHashName[2216] = FTTHash("ANM_TURN_FT1135_JOG_FORWARDS_TURN_135_TO_JOG_FW_COLIN_f");
+  ANIM_uHashName[2217] = FTTHash("ANM_TURN_FT1136_JOG_FORWARDS_TURN_180_TO_JOG_FW_COLIN");
+  ANIM_uHashName[2218] = FTTHash("ANM_TURN_FT1136_JOG_FORWARDS_TURN_180_TO_JOG_FW_COLIN_f");
+  ANIM_uHashName[2219] = FTTHash("ANM_TURN_FT1137_JOG_FORWARDS_TURN_180_TO_JOG_FW_1_COLIN");
+  ANIM_uHashName[2220] = FTTHash("ANM_TURN_FT1137_JOG_FORWARDS_TURN_180_TO_JOG_FW_1_COLIN_f");
+  ANIM_uHashName[2221] = FTTHash("ANM_TURN_FT1138_JOG_FORWARDS_TURN_90_TO_SPRINT_FW_COLIN");
+  ANIM_uHashName[2222] = FTTHash("ANM_TURN_FT1138_JOG_FORWARDS_TURN_90_TO_SPRINT_FW_COLIN_f");
+  ANIM_uHashName[2223] = FTTHash("ANM_TURN_FT1138_JOG_FORWARDS_TURN_90_TO_SPRINT_FW_NOEL");
+  ANIM_uHashName[2224] = FTTHash("ANM_TURN_FT1138_JOG_FORWARDS_TURN_90_TO_SPRINT_FW_NOEL_f");
+  ANIM_uHashName[2225] = FTTHash("ANM_TURN_FT1142_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_1_COLIN");
+  ANIM_uHashName[2226] = FTTHash("ANM_TURN_FT1142_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_1_COLIN_f");
+  ANIM_uHashName[2227] = FTTHash("ANM_TURN_FT1144_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_2_COLIN");
+  ANIM_uHashName[2228] = FTTHash("ANM_TURN_FT1144_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_2_COLIN_f");
+  ANIM_uHashName[2229] = FTTHash("ANM_TURN_FT1145_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_3_COLIN");
+  ANIM_uHashName[2230] = FTTHash("ANM_TURN_FT1145_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_3_COLIN_f");
+  ANIM_uHashName[2231] = FTTHash("ANM_TURN_FT1146_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_4_COLIN");
+  ANIM_uHashName[2232] = FTTHash("ANM_TURN_FT1146_JOG_FORWARDS_TO_JOG_BACKWARDS_SAME_FACE_4_COLIN_f");
+  ANIM_uHashName[2233] = FTTHash("ANM_TURN_FT1147_STAND_TURN_45_TO_JOG_1_COLIN");
+  ANIM_uHashName[2234] = FTTHash("ANM_TURN_FT1147_STAND_TURN_45_TO_JOG_1_COLIN_f");
+  ANIM_uHashName[2235] = FTTHash("ANM_TURN_FT1148_STAND_TURN_45_TO_JOG_2_COLIN");
+  ANIM_uHashName[2236] = FTTHash("ANM_TURN_FT1148_STAND_TURN_45_TO_JOG_2_COLIN_f");
+  ANIM_uHashName[2237] = FTTHash("ANM_TURN_FT1150_STAND_TURN_90_TO_JOG_1_COLIN");
+  ANIM_uHashName[2238] = FTTHash("ANM_TURN_FT1150_STAND_TURN_90_TO_JOG_1_COLIN_f");
+  ANIM_uHashName[2239] = FTTHash("ANM_TURN_FT1152_STAND_TURN_135_TO_JOG_1_COLIN");
+  ANIM_uHashName[2240] = FTTHash("ANM_TURN_FT1152_STAND_TURN_135_TO_JOG_1_COLIN_f");
+  ANIM_uHashName[2241] = FTTHash("ANM_TURN_FT1153_STAND_TURN_180_TO_JOG_1_COLIN");
+  ANIM_uHashName[2242] = FTTHash("ANM_TURN_FT1153_STAND_TURN_180_TO_JOG_1_COLIN_f");
+  ANIM_uHashName[2243] = FTTHash("ANM_TURN_FT1154_STAND_TURN_180_TO_JOG_COLIN");
+  ANIM_uHashName[2244] = FTTHash("ANM_TURN_FT1154_STAND_TURN_180_TO_JOG_COLIN_f");
+  ANIM_uHashName[2245] = FTTHash("ANM_TURN_FT1156_STAND_TURN_90_SIDESTEP_1_COLIN");
+  ANIM_uHashName[2246] = FTTHash("ANM_TURN_FT1156_STAND_TURN_90_SIDESTEP_1_COLIN_f");
+  ANIM_uHashName[2247] = FTTHash("ANM_TURN_FT1158_STAND_TURN_90_JOG_BACKWARDS_COLIN");
+  ANIM_uHashName[2248] = FTTHash("ANM_TURN_FT1158_STAND_TURN_90_JOG_BACKWARDS_COLIN_f");
+  ANIM_uHashName[2249] = FTTHash("ANM_TURN_FT1159_STAND_TURN_180_JOG_BACKWARDS_COLIN");
+  ANIM_uHashName[2250] = FTTHash("ANM_TURN_FT1159_STAND_TURN_180_JOG_BACKWARDS_COLIN_f");
+  ANIM_uHashName[2251] = FTTHash("ANM_TURN_FT1162_STAND_TURN_180_SIDESTEP_2_COLIN");
+  ANIM_uHashName[2252] = FTTHash("ANM_TURN_FT1162_STAND_TURN_180_SIDESTEP_2_COLIN_f");
+  ANIM_uHashName[2253] = FTTHash("ANM_LOCO_FT1164_JOG_JOSTLES_ARM_LOWER_2_COLIN_JOSTLE");
+  ANIM_uHashName[2254] = FTTHash("ANM_LOCO_FT1164_JOG_JOSTLES_ARM_LOWER_2_COLIN_JOSTLE_f");
+  ANIM_uHashName[2255] = FTTHash("ANM_LOCO_FT1166_JOG_JOSTLES_ARM_LOWER_3_COLIN_JOSTLE");
+  ANIM_uHashName[2256] = FTTHash("ANM_LOCO_FT1166_JOG_JOSTLES_ARM_LOWER_3_COLIN_JOSTLE_f");
+  ANIM_uHashName[2257] = FTTHash("ANM_STAND_FT1168_STAND_JOSTLE_COLIN");
+  ANIM_uHashName[2258] = FTTHash("ANM_STAND_FT1168_STAND_JOSTLE_COLIN_f");
+  ANIM_uHashName[2259] = FTTHash("ANM_STAND_FT1168_STAND_JOSTLE_COLIN_D");
+  ANIM_uHashName[2260] = FTTHash("ANM_STAND_FT1168_STAND_JOSTLE_COLIN_D_f");
+  ANIM_uHashName[2261] = FTTHash("ANM_CONTROL_FT1204_JOG_DRIBBLE_FWD_1_NOEL");
+  ANIM_uHashName[2262] = FTTHash("ANM_CONTROL_FT1204_JOG_DRIBBLE_FWD_1_NOEL_f");
+  ANIM_uHashName[2263] = FTTHash("ANM_CONTROL_FT1204_JOG_DRIBBLE_FWD_2_COLIN");
+  ANIM_uHashName[2264] = FTTHash("ANM_CONTROL_FT1204_JOG_DRIBBLE_FWD_2_COLIN_f");
+  ANIM_uHashName[2265] = FTTHash("ANM_CONTROL_FT1205_JOG_DRIBBLE_FWD_3_COLIN");
+  ANIM_uHashName[2266] = FTTHash("ANM_CONTROL_FT1205_JOG_DRIBBLE_FWD_3_COLIN_f");
+  ANIM_uHashName[2267] = FTTHash("ANM_CONTROL_FT1206_JOG_DRIBBLE_FWD_4_NOEL");
+  ANIM_uHashName[2268] = FTTHash("ANM_CONTROL_FT1206_JOG_DRIBBLE_FWD_4_NOEL_f");
+  ANIM_uHashName[2269] = FTTHash("ANM_CONTROL_FT1207_SPRINT_DRIBBLE_FWD_4_COLIN");
+  ANIM_uHashName[2270] = FTTHash("ANM_CONTROL_FT1207_SPRINT_DRIBBLE_FWD_4_COLIN_f");
+  ANIM_uHashName[2271] = FTTHash("ANM_CONTROL_FT1207_SPRINT_DRIBBLE_FWD_4_COLIN_D");
+  ANIM_uHashName[2272] = FTTHash("ANM_CONTROL_FT1207_SPRINT_DRIBBLE_FWD_4_COLIN_D_f");
+  ANIM_uHashName[2273] = FTTHash("ANM_CONTROL_FT1209_SPRINT_DRIBBLE_FWD_2_NOEL");
+  ANIM_uHashName[2274] = FTTHash("ANM_CONTROL_FT1209_SPRINT_DRIBBLE_FWD_2_NOEL_f");
+  ANIM_uHashName[2275] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_2_COLIN");
+  ANIM_uHashName[2276] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_2_COLIN_f");
+  ANIM_uHashName[2277] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_3_COLIN");
+  ANIM_uHashName[2278] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_3_COLIN_f");
+  ANIM_uHashName[2279] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_4_COLIN");
+  ANIM_uHashName[2280] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_4_COLIN_f");
+  ANIM_uHashName[2281] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_5_COLIN");
+  ANIM_uHashName[2282] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_5_COLIN_f");
+  ANIM_uHashName[2283] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_6_NOEL");
+  ANIM_uHashName[2284] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_6_NOEL_f");
+  ANIM_uHashName[2285] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_6_NOEL_D");
+  ANIM_uHashName[2286] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_6_NOEL_D_f");
+  ANIM_uHashName[2287] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_7_NOEL");
+  ANIM_uHashName[2288] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_7_NOEL_f");
+  ANIM_uHashName[2289] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_7_NOEL_D");
+  ANIM_uHashName[2290] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_7_NOEL_D_f");
+  ANIM_uHashName[2291] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_COLIN");
+  ANIM_uHashName[2292] = FTTHash("ANM_CONTROL_FT1210_JOG_DRIBBLE_45_COLIN_f");
+  ANIM_uHashName[2293] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_10_NOEL");
+  ANIM_uHashName[2294] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_10_NOEL_f");
+  ANIM_uHashName[2295] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_11_NOEL_CTRL");
+  ANIM_uHashName[2296] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_11_NOEL_CTRL_f");
+  ANIM_uHashName[2297] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_8_COLIN_CTRL");
+  ANIM_uHashName[2298] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_8_COLIN_CTRL_f");
+  ANIM_uHashName[2299] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_9_COLIN_DRIB");
+  ANIM_uHashName[2300] = FTTHash("ANM_CONTROL_FT1211_JOG_DRIBBLE_45_9_COLIN_DRIB_f");
+  ANIM_uHashName[2301] = FTTHash("ANM_CONTROL_FT1212_CONTROL_CHEST_FWD_NOEL");
+  ANIM_uHashName[2302] = FTTHash("ANM_CONTROL_FT1212_CONTROL_CHEST_FWD_NOEL_f");
+  ANIM_uHashName[2303] = FTTHash("ANM_CONTROL_FT1212_CONTROL_CHEST_FWD_NOEL_D");
+  ANIM_uHashName[2304] = FTTHash("ANM_CONTROL_FT1212_CONTROL_CHEST_FWD_NOEL_D_f");
+  ANIM_uHashName[2305] = FTTHash("ANM_CONTROL_FT1213_CONTROL_CHEST_FWD_1_COLIN");
+  ANIM_uHashName[2306] = FTTHash("ANM_CONTROL_FT1213_CONTROL_CHEST_FWD_1_COLIN_f");
+  ANIM_uHashName[2307] = FTTHash("ANM_CONTROL_FT1213_CONTROL_CHEST_FWD_2_COLIN_CTRL");
+  ANIM_uHashName[2308] = FTTHash("ANM_CONTROL_FT1213_CONTROL_CHEST_FWD_2_COLIN_CTRL_f");
+  ANIM_uHashName[2309] = FTTHash("ANM_KICK_FT1213_CONTROL_CHEST_FWD_2_COLIN_KICK");
+  ANIM_uHashName[2310] = FTTHash("ANM_KICK_FT1213_CONTROL_CHEST_FWD_2_COLIN_KICK_f");
+  ANIM_uHashName[2311] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_3_NOEL");
+  ANIM_uHashName[2312] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_3_NOEL_f");
+  ANIM_uHashName[2313] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_4_NOEL");
+  ANIM_uHashName[2314] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_4_NOEL_f");
+  ANIM_uHashName[2315] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_4_NOEL_D");
+  ANIM_uHashName[2316] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_4_NOEL_D_f");
+  ANIM_uHashName[2317] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_5_NOEL");
+  ANIM_uHashName[2318] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_5_NOEL_f");
+  ANIM_uHashName[2319] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_6_NOEL");
+  ANIM_uHashName[2320] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_6_NOEL_f");
+  ANIM_uHashName[2321] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_6_NOEL_D");
+  ANIM_uHashName[2322] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_6_NOEL_D_f");
+  ANIM_uHashName[2323] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_7_COLIN");
+  ANIM_uHashName[2324] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_7_COLIN_f");
+  ANIM_uHashName[2325] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_7_COLIN_D");
+  ANIM_uHashName[2326] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_7_COLIN_D_f");
+  ANIM_uHashName[2327] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_8_COLIN");
+  ANIM_uHashName[2328] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_8_COLIN_f");
+  ANIM_uHashName[2329] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_8_COLIN_D");
+  ANIM_uHashName[2330] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_8_COLIN_D_f");
+  ANIM_uHashName[2331] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_9_COLIN");
+  ANIM_uHashName[2332] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_9_COLIN_f");
+  ANIM_uHashName[2333] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_9_COLIN_D");
+  ANIM_uHashName[2334] = FTTHash("ANM_CONTROL_FT1214_CONTROL_CHEST_FWD_9_COLIN_D_f");
+  ANIM_uHashName[2335] = FTTHash("ANM_CONTROL_FT1215_RUNNING_OVERHEAD_CONTROL_COLIN");
+  ANIM_uHashName[2336] = FTTHash("ANM_CONTROL_FT1215_RUNNING_OVERHEAD_CONTROL_COLIN_f");
+  ANIM_uHashName[2337] = FTTHash("ANM_CONTROL_FT1216_RUNNING_OVERHEAD_CONTROL_1_COLIN");
+  ANIM_uHashName[2338] = FTTHash("ANM_CONTROL_FT1216_RUNNING_OVERHEAD_CONTROL_1_COLIN_f");
+  ANIM_uHashName[2339] = FTTHash("ANM_DEEK_FT1218_SKILL_MOVE_1_FWD_ONLY_NOEL");
+  ANIM_uHashName[2340] = FTTHash("ANM_DEEK_FT1218_SKILL_MOVE_1_FWD_ONLY_NOEL_f");
+  ANIM_uHashName[2341] = FTTHash("ANM_DEEK_FT1220_SKILL_MOVE_1_FWD_ONLY_3_COLIN_OHFLICK");
+  ANIM_uHashName[2342] = FTTHash("ANM_DEEK_FT1220_SKILL_MOVE_1_FWD_ONLY_3_COLIN_OHFLICK_f");
+  ANIM_uHashName[2343] = FTTHash("ANM_KICK_FT1222_SKILL_MOVE_1_FWD_ONLY_5_NOEL_KICK");
+  ANIM_uHashName[2344] = FTTHash("ANM_KICK_FT1222_SKILL_MOVE_1_FWD_ONLY_5_NOEL_KICK_f");
+  ANIM_uHashName[2345] = FTTHash("ANM_DEEK_FT1222_SKILL_MOVE_1_FWD_ONLY_6_COLIN_SPIN");
+  ANIM_uHashName[2346] = FTTHash("ANM_DEEK_FT1222_SKILL_MOVE_1_FWD_ONLY_6_COLIN_SPIN_f");
+  ANIM_uHashName[2347] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_2_COLIN");
+  ANIM_uHashName[2348] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_2_COLIN_f");
+  ANIM_uHashName[2349] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_3_COLIN");
+  ANIM_uHashName[2350] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_3_COLIN_f");
+  ANIM_uHashName[2351] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_4_COLIN");
+  ANIM_uHashName[2352] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_4_COLIN_f");
+  ANIM_uHashName[2353] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_5_NOEL");
+  ANIM_uHashName[2354] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_5_NOEL_f");
+  ANIM_uHashName[2355] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_6_NOEL");
+  ANIM_uHashName[2356] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_6_NOEL_f");
+  ANIM_uHashName[2357] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_7_NOEL");
+  ANIM_uHashName[2358] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_7_NOEL_f");
+  ANIM_uHashName[2359] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_9_NOEL");
+  ANIM_uHashName[2360] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_9_NOEL_f");
+  ANIM_uHashName[2361] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_COLIN");
+  ANIM_uHashName[2362] = FTTHash("ANM_KICK_FT1223_FREESTYLE_PASSING_STANDING_1_ALL_ANGLES_COLIN_f");
+  ANIM_uHashName[2363] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_2_NOEL");
+  ANIM_uHashName[2364] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_2_NOEL_f");
+  ANIM_uHashName[2365] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_3_COLIN");
+  ANIM_uHashName[2366] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_3_COLIN_f");
+  ANIM_uHashName[2367] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_4_NOEL");
+  ANIM_uHashName[2368] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_4_NOEL_f");
+  ANIM_uHashName[2369] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_5_COLIN");
+  ANIM_uHashName[2370] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_5_COLIN_f");
+  ANIM_uHashName[2371] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_6_COLIN");
+  ANIM_uHashName[2372] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_6_COLIN_f");
+  ANIM_uHashName[2373] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_COLIN");
+  ANIM_uHashName[2374] = FTTHash("ANM_KICK_FT1224_FREESTYLE_PASSING_MOVING_2_ALL_ANGLES_COLIN_f");
+  ANIM_uHashName[2375] = FTTHash("ANM_KICK_FT1225_FREESTYLE_LOFTED_PASSING_STANDING_1_ALL_ANGLES_HEIGHTS_NOEL");
+  ANIM_uHashName[2376] = FTTHash("ANM_KICK_FT1225_FREESTYLE_LOFTED_PASSING_STANDING_1_ALL_ANGLES_HEIGHTS_NOEL_f");
+  ANIM_uHashName[2377] = FTTHash("ANM_KICK_FT1226_STANDING_SHOT_FWD_NOEL");
+  ANIM_uHashName[2378] = FTTHash("ANM_KICK_FT1226_STANDING_SHOT_FWD_NOEL_f");
+  ANIM_uHashName[2379] = FTTHash("ANM_KICK_FT1227_STANDING_SHOT_FWD_2_COLIN");
+  ANIM_uHashName[2380] = FTTHash("ANM_KICK_FT1227_STANDING_SHOT_FWD_2_COLIN_f");
+  ANIM_uHashName[2381] = FTTHash("ANM_KICK_FT1228_STANDING_SHOT_FWD_1_COLIN");
+  ANIM_uHashName[2382] = FTTHash("ANM_KICK_FT1228_STANDING_SHOT_FWD_1_COLIN_f");
+  ANIM_uHashName[2383] = FTTHash("ANM_KICK_FT1229_STANDING_SHOT_FWD_3_NOEL");
+  ANIM_uHashName[2384] = FTTHash("ANM_KICK_FT1229_STANDING_SHOT_FWD_3_NOEL_f");
+  ANIM_uHashName[2385] = FTTHash("ANM_KICK_FT1229_STANDING_SHOT_FWD_4_COLIN");
+  ANIM_uHashName[2386] = FTTHash("ANM_KICK_FT1229_STANDING_SHOT_FWD_4_COLIN_f");
+  ANIM_uHashName[2387] = FTTHash("ANM_KICK_FT1231_STANDING_SHOT_FWD_5_COLIN");
+  ANIM_uHashName[2388] = FTTHash("ANM_KICK_FT1231_STANDING_SHOT_FWD_5_COLIN_f");
+  ANIM_uHashName[2389] = FTTHash("ANM_KICK_FT1231_STANDING_SHOT_FWD_6_NOEL");
+  ANIM_uHashName[2390] = FTTHash("ANM_KICK_FT1231_STANDING_SHOT_FWD_6_NOEL_f");
+  ANIM_uHashName[2391] = FTTHash("ANM_KICK_FT1233_STANDING_SHOT_FWD_7_NOEL");
+  ANIM_uHashName[2392] = FTTHash("ANM_KICK_FT1233_STANDING_SHOT_FWD_7_NOEL_f");
+  ANIM_uHashName[2393] = FTTHash("ANM_KICK_FT1233_STANDING_SHOT_FWD_8_COLIN");
+  ANIM_uHashName[2394] = FTTHash("ANM_KICK_FT1233_STANDING_SHOT_FWD_8_COLIN_f");
+  ANIM_uHashName[2395] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_2_COLIN");
+  ANIM_uHashName[2396] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_2_COLIN_f");
+  ANIM_uHashName[2397] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_3_COLIN");
+  ANIM_uHashName[2398] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_3_COLIN_f");
+  ANIM_uHashName[2399] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_4_COLIN");
+  ANIM_uHashName[2400] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_4_COLIN_f");
+  ANIM_uHashName[2401] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_5_COLIN");
+  ANIM_uHashName[2402] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_5_COLIN_f");
+  ANIM_uHashName[2403] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_6_COLIN");
+  ANIM_uHashName[2404] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_6_COLIN_f");
+  ANIM_uHashName[2405] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_NOEL");
+  ANIM_uHashName[2406] = FTTHash("ANM_KICK_FT1234_STANDING_VOLLEY_SHOTS_FWD_NOEL_f");
+  ANIM_uHashName[2407] = FTTHash("ANM_KICK_FT1235_SKILL_PASS_1_3_COLIN");
+  ANIM_uHashName[2408] = FTTHash("ANM_KICK_FT1235_SKILL_PASS_1_3_COLIN_f");
+  ANIM_uHashName[2409] = FTTHash("ANM_KICK_FT1235_SKILL_PASS_1_NOEL");
+  ANIM_uHashName[2410] = FTTHash("ANM_KICK_FT1235_SKILL_PASS_1_NOEL_f");
+  ANIM_uHashName[2411] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_1_NOEL");
+  ANIM_uHashName[2412] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_1_NOEL_f");
+  ANIM_uHashName[2413] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_5_COLIN");
+  ANIM_uHashName[2414] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_5_COLIN_f");
+  ANIM_uHashName[2415] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_6_COLIN");
+  ANIM_uHashName[2416] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_6_COLIN_f");
+  ANIM_uHashName[2417] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_7_COLIN");
+  ANIM_uHashName[2418] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_7_COLIN_f");
+  ANIM_uHashName[2419] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_8_COLIN");
+  ANIM_uHashName[2420] = FTTHash("ANM_KICK_FT1236_STANDING_HEADER_ANIMATION_FWD_8_COLIN_f");
+  ANIM_uHashName[2421] = FTTHash("ANM_GETUP_FT1237_LIE_ON_FRONT_GETUP_TO_STAND_FW_COLIN");
+  ANIM_uHashName[2422] = FTTHash("ANM_GETUP_FT1238_LIE_ON_FRONT_GETUP_TO_STAND_90_COLIN");
+  ANIM_uHashName[2423] = FTTHash("ANM_GETUP_FT1238_LIE_ON_FRONT_GETUP_TO_STAND_90_COLIN_f");
+  ANIM_uHashName[2424] = FTTHash("ANM_GETUP_FT1239_LIE_ON_FRONT_GETUP_TO_STAND_180_COLIN");
+  ANIM_uHashName[2425] = FTTHash("ANM_GETUP_FT1239_LIE_ON_FRONT_GETUP_TO_STAND_180_COLIN_f");
+  ANIM_uHashName[2426] = FTTHash("ANM_GETUP_FT1243_LIE_ON_BACK_GETUP_TO_STAND_FW_COLIN");
+  ANIM_uHashName[2427] = FTTHash("ANM_GETUP_FT1243_LIE_ON_BACK_GETUP_TO_STAND_FW_COLIN_f");
+  ANIM_uHashName[2428] = FTTHash("ANM_GETUP_FT1244_LIE_ON_BACK_GETUP_TO_STAND_90_COLIN");
+  ANIM_uHashName[2429] = FTTHash("ANM_GETUP_FT1244_LIE_ON_BACK_GETUP_TO_STAND_90_COLIN_f");
+  ANIM_uHashName[2430] = FTTHash("ANM_GETUP_FT1245_LIE_ON_BACK_GETUP_TO_STAND_180_COLIN");
+  ANIM_uHashName[2431] = FTTHash("ANM_GETUP_FT1245_LIE_ON_BACK_GETUP_TO_STAND_180_COLIN_f");
+  ANIM_uHashName[2432] = FTTHash("ANM_KICKSETPIECE_FT1306_SET_PIECE_CURLED_FREE_KICK_COLIN");
+  ANIM_uHashName[2433] = FTTHash("ANM_KICKSETPIECE_FT1306_SET_PIECE_CURLED_FREE_KICK_COLIN_f");
+  ANIM_uHashName[2434] = FTTHash("ANM_KICKSETPIECE_FT1307_SET_PIECE_CURLED_FREE_KICK_1_NOEL");
+  ANIM_uHashName[2435] = FTTHash("ANM_KICKSETPIECE_FT1307_SET_PIECE_CURLED_FREE_KICK_1_NOEL_f");
+  ANIM_uHashName[2436] = FTTHash("ANM_KICKSETPIECE_FT1308_SET_PIECE_CURLED_FREE_KICK_2_COLIN");
+  ANIM_uHashName[2437] = FTTHash("ANM_KICKSETPIECE_FT1308_SET_PIECE_CURLED_FREE_KICK_2_COLIN_f");
+  ANIM_uHashName[2438] = FTTHash("ANM_KICKSETPIECE_FT1309_SET_PIECE_CURLED_FREE_KICK_3_NOEL");
+  ANIM_uHashName[2439] = FTTHash("ANM_KICKSETPIECE_FT1309_SET_PIECE_CURLED_FREE_KICK_3_NOEL_f");
+  ANIM_uHashName[2440] = FTTHash("ANM_KICKSETPIECE_FT1311_GOAL_KICK_1_COLIN");
+  ANIM_uHashName[2441] = FTTHash("ANM_KICKSETPIECE_FT1311_GOAL_KICK_1_COLIN_f");
+  ANIM_uHashName[2442] = FTTHash("ANM_KICKSETPIECE_FT1312_SET_PIECE_MESSI_BALOTELLI_STYLE_PENALTY_2_NOEL");
+  ANIM_uHashName[2443] = FTTHash("ANM_KICKSETPIECE_FT1312_SET_PIECE_MESSI_BALOTELLI_STYLE_PENALTY_2_NOEL_f");
+  ANIM_uHashName[2444] = FTTHash("ANM_KICKSETPIECE_FT1312_SET_PIECE_MESSI_BALOTELLI_STYLE_PENALTY_COLIN");
+  ANIM_uHashName[2445] = FTTHash("ANM_KICKSETPIECE_FT1312_SET_PIECE_MESSI_BALOTELLI_STYLE_PENALTY_COLIN_f");
+  ANIM_uHashName[2446] = FTTHash("ANM_GK_SAVE_FT1316_GK_SAVES_DIVES_MED_FAR_1_NOEL");
+  ANIM_uHashName[2447] = FTTHash("ANM_GK_SAVE_FT1316_GK_SAVES_DIVES_MED_FAR_1_NOEL_f");
+  ANIM_uHashName[2448] = FTTHash("ANM_KICK_FT1316_GK_SAVES_DIVES_MED_FAR_2_COLIN_KICK");
+  ANIM_uHashName[2449] = FTTHash("ANM_KICK_FT1316_GK_SAVES_DIVES_MED_FAR_2_COLIN_KICK_f");
+  ANIM_uHashName[2450] = FTTHash("ANM_GK_SAVE_FT1323_GK_SAVES_DIVES_MED_FAR_6_NOEL");
+  ANIM_uHashName[2451] = FTTHash("ANM_GK_SAVE_FT1323_GK_SAVES_DIVES_MED_FAR_6_NOEL_f");
+  ANIM_uHashName[2452] = FTTHash("ANM_GK_SAVE_FT1325_GK_SAVES_DIVES_MED_FAR_8_NOEL");
+  ANIM_uHashName[2453] = FTTHash("ANM_GK_SAVE_FT1325_GK_SAVES_DIVES_MED_FAR_8_NOEL_f");
+  ANIM_uHashName[2454] = FTTHash("ANM_GK_SAVE_FT1327_GK_SAVES_DIVES_MED_CLOSE_1_NOEL");
+  ANIM_uHashName[2455] = FTTHash("ANM_GK_SAVE_FT1327_GK_SAVES_DIVES_MED_CLOSE_1_NOEL_f");
+  ANIM_uHashName[2456] = FTTHash("ANM_GK_SAVE_FT1328_GK_SAVES_DIVES_MED_CLOSE_3_NOEL");
+  ANIM_uHashName[2457] = FTTHash("ANM_GK_SAVE_FT1328_GK_SAVES_DIVES_MED_CLOSE_3_NOEL_f");
+  ANIM_uHashName[2458] = FTTHash("ANM_GK_SAVE_FT1328_GK_SAVES_DIVES_MED_CLOSE_4_NOEL");
+  ANIM_uHashName[2459] = FTTHash("ANM_GK_SAVE_FT1328_GK_SAVES_DIVES_MED_CLOSE_4_NOEL_f");
+  ANIM_uHashName[2460] = FTTHash("ANM_GK_SAVE_FT1328_GK_SAVES_DIVES_MED_CLOSE_NOEL");
+  ANIM_uHashName[2461] = FTTHash("ANM_GK_SAVE_FT1328_GK_SAVES_DIVES_MED_CLOSE_NOEL_f");
+  ANIM_uHashName[2462] = FTTHash("ANM_STUMBLE_FT1339_AVOID_BALL_LOW_2_COLIN_AVOID");
+  ANIM_uHashName[2463] = FTTHash("ANM_STUMBLE_FT1339_AVOID_BALL_LOW_2_COLIN_AVOID_f");
+  ANIM_uHashName[2464] = FTTHash("ANM_STUMBLE_FT1339_AVOID_BALL_LOW_NOEL_AVOID");
+  ANIM_uHashName[2465] = FTTHash("ANM_STUMBLE_FT1339_AVOID_BALL_LOW_NOEL_AVOID_f");
+  ANIM_uHashName[2466] = FTTHash("ANM_STUMBLE_FT1348_GENERAL_STUMBLES_TO_STAND_COLIN");
+  ANIM_uHashName[2467] = FTTHash("ANM_STUMBLE_FT1348_GENERAL_STUMBLES_TO_STAND_COLIN_f");
+  ANIM_uHashName[2468] = FTTHash("ANM_STUMBLE_FT1350_STUMBLE_TO_CONTINUE_RUNNING_2_COLIN");
+  ANIM_uHashName[2469] = FTTHash("ANM_STUMBLE_FT1350_STUMBLE_TO_CONTINUE_RUNNING_2_COLIN_f");
+  ANIM_uHashName[2470] = FTTHash("ANM_FALL_FT1351_RUNNING_FALLS_2_NOEL");
+  ANIM_uHashName[2471] = FTTHash("ANM_FALL_FT1351_RUNNING_FALLS_2_NOEL_f");
+  ANIM_uHashName[2472] = FTTHash("ANM_FALL_FT1351_RUNNING_FALLS_3_COLIN");
+  ANIM_uHashName[2473] = FTTHash("ANM_FALL_FT1351_RUNNING_FALLS_3_COLIN_f");
+  ANIM_uHashName[2474] = FTTHash("ANM_FALL_FT1351_RUNNING_FALLS_COLIN");
+  ANIM_uHashName[2475] = FTTHash("ANM_FALL_FT1351_RUNNING_FALLS_COLIN_f");
+  ANIM_uHashName[2476] = FTTHash("ANM_KICK_FT1352_OVERHEAD_KICKS_2_COLIN_HEADER");
+  ANIM_uHashName[2477] = FTTHash("ANM_KICK_FT1352_OVERHEAD_KICKS_2_COLIN_HEADER_f");
+  ANIM_uHashName[2478] = FTTHash("ANM_KICK_FT1352_OVERHEAD_KICKS_COLIN");
+  ANIM_uHashName[2479] = FTTHash("ANM_KICK_FT1352_OVERHEAD_KICKS_COLIN_f");
+  ANIM_uHashName[2480] = FTTHash("ANM_TACKLESLIDE_FT1353_SLIDE_TACKLE_WITH_GETUP_COLIN");
+  ANIM_uHashName[2481] = FTTHash("ANM_TACKLESLIDE_FT1353_SLIDE_TACKLE_WITH_GETUP_COLIN_f");
+  ANIM_uHashName[2482] = FTTHash("ANM_TACKLESLIDE_FT1354_SLIDE_TACKLE_WITH_GETUP_1_COLIN");
+  ANIM_uHashName[2483] = FTTHash("ANM_TACKLESLIDE_FT1354_SLIDE_TACKLE_WITH_GETUP_1_COLIN_f");
+  ANIM_uHashName[2484] = FTTHash("ANM_TACKLESLIDE_FT1354_SLIDE_TACKLE_WITH_GETUP_2_COLIN");
+  ANIM_uHashName[2485] = FTTHash("ANM_TACKLESLIDE_FT1354_SLIDE_TACKLE_WITH_GETUP_2_COLIN_f");
+  ANIM_uHashName[2486] = FTTHash("ANM_STAND_EXE183X_STAND_LOOK_HIGH");
+  ANIM_uHashName[2487] = FTTHash("ANM_NIS_FT763_KICK_SETPIECE_1_ANDYD");
+}

+ 8 - 0
jni/ANIMHashName.h

@@ -0,0 +1,8 @@
+#ifndef _ANIMHashName_H_
+#define _ANIMHashName_H_
+
+#include "common_type.h"
+
+extern uint32 ANIM_uHashName[0x9B8];
+
+#endif  //_ANIMHashName_H_

+ 492 - 0
jni/Android.mk

@@ -0,0 +1,492 @@
+LOCAL_PATH := $(call my-dir)
+LOCAL_SHORT_COMMANDS := true
+include $(CLEAR_VARS)
+LOCAL_MODULE    := zlib
+LOCAL_SRC_FILES := zlib/$(TARGET_ARCH_ABI)/libzlib.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+
+include $(CLEAR_VARS)
+LOCAL_MODULE    := png
+LOCAL_SRC_FILES := png/$(TARGET_ARCH_ABI)/libpng1617.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_STATIC_LIBRARIES := zlib png
+LOCAL_MODULE := Hero
+LOCAL_MODULE_FILENAME := libHero
+LOCAL_SRC_FILES :=  ANIMHashName.cpp                        \
+                    AABB.cpp                                \
+                    ACT.cpp                                 \
+                    AndroidApp.cpp                          \
+                    CAnimLib.cpp                            \
+                    CAnimManager.cpp                        \
+                    CBall.cpp                               \
+                    CBallProj.cpp                           \
+                    CBallShader.cpp                         \
+                    CBlitter.cpp                            \
+                    CBlurVShader.cpp                        \
+                    CCallbackCriticalSection.cpp            \
+                    CCircle2dShader.cpp                     \
+                    CColourMulti2dShader.cpp                \
+                    CCompatibleRenderPassDescription.cpp    \
+                    CCrowdCardShader.cpp                    \
+                    CCrowdFlagShader.cpp                    \
+                    CCrowdNewShader.cpp                     \
+                    CCurrency.cpp                           \
+                    CCustomTextEntry.cpp                    \
+                    CCustomTextInfo.cpp                     \
+                    CDataBase.cpp                           \
+                    CDatabaseEntry.cpp                      \
+                    CDebugDepthShader.cpp                   \
+                    CDeviceReimbursement.cpp                \
+                    CDOFCombineShader.cpp                   \
+                    CDOFShrinkShader.cpp                    \
+                    CDressingRoomShader.cpp                 \
+                    CDynamicAABBTree.cpp                    \
+                    CEasing.cpp                             \
+                    CFE.cpp                                 \
+                    CFE3DPlayer.cpp                         \
+                    CFEEffects.cpp                          \
+                    CFEHeroScene.cpp                        \
+                    CFEImages.cpp                           \
+                    CFEKeyboard.cpp                         \
+                    CFESAndroidGraphics.cpp                 \
+                    CFESChooseHero.cpp                      \
+                    CFESChooseSideHero.cpp                  \
+                    CFESCredits.cpp                         \
+                    CFEScreen.cpp                           \
+                    CFESEditPlayer.cpp                      \
+                    CFESGame.cpp                            \
+                    CFESIntro.cpp                           \
+                    CFESLevelSelect.cpp                     \
+                    CFESMainMenu.cpp                        \
+                    CFESOptions.cpp                         \
+                    CFESPauseMenu.cpp                       \
+                    CFESPlayerName.cpp                      \
+                    CFESShop.cpp                            \
+                    CFESTemplate.cpp                        \
+                    CFESTitle.cpp                           \
+                    CFreeHUD.cpp                            \
+                    CFTT2d_Shader.cpp                       \
+                    CFTT2D_TexturedVert.cpp                 \
+                    CFTT2D_TextureUV.cpp                    \
+                    CFTT3dGenShader.cpp                     \
+                    CFTT_FTMLoader.cpp                      \
+                    CFTTAABB32.cpp                          \
+                    CFTTAndroidAppCInterface.cpp            \
+                    CFTTAndroidChartboost.cpp               \
+                    CFTTAndroidDevice.cpp                   \
+                    CFTTAndroidFBInterstitials.cpp          \
+                    CFTTAndroidGraphicsSettings.cpp         \
+                    CFTTAndroidKeychainAccess.cpp           \
+                    CFTTAnim.cpp                            \
+                    CFTTAnimBlend.cpp                       \
+                    CFTTAsyncEvent.cpp                      \
+                    CFTTAudio.cpp                           \
+                    CFTTAudio_Bank.cpp                      \
+                    CFTTAudio_Patch.cpp                     \
+                    CFTTAudio_SoundPlayer.cpp               \
+                    CFTTAudio_StreamHandler.cpp             \
+                    CFTTAWSKinesisFirehose.cpp              \
+                    CFTTBatchCache.cpp                      \
+                    CFTTBatchCacheHashTable.cpp             \
+                    CFTTBatchModelBin.cpp                   \
+                    CFTTBatchModelManager.cpp               \
+                    CFTTBMMMatrixCache.cpp                  \
+                    CFTTCamera.cpp                          \
+                    CFTTChartboost.cpp                      \
+                    CFTTCircularBuffer.cpp                  \
+                    CFTTClearSettings.cpp                   \
+                    CFTTColour.cpp                          \
+                    CFTTCone32.cpp                          \
+                    CFTTConvex.cpp                          \
+                    CFTTCube2DShader.cpp                    \
+                    CFTTCubemapShader.cpp                   \
+                    CFTTDateTimeUtils.cpp                   \
+                    CFTTDevice.cpp                          \
+                    CFTTDisplayAchievements.cpp             \
+                    CFTTFBInterstitials.cpp                 \
+                    CFTTFile.cpp                            \
+                    CFTTFile_Android.cpp                    \
+                    CFTTFile_AndroidDocs.cpp                \
+                    CFTTFile_AndroidMemMap.cpp              \
+                    CFTTFile_AsyncImmediate.cpp             \
+                    CFTTFile_AsyncQueue.cpp                 \
+                    CFTTFile_Buffered.cpp                   \
+                    CFTTFile_PAK.cpp                        \
+                    CFTTFile_RAM.cpp                        \
+                    CFTTFile_ROM.cpp                        \
+                    CFTTFile_ZLib.cpp                       \
+                    CFTTFileIterator.cpp                    \
+                    CFTTFileIterator_Android.cpp            \
+                    CFTTFileIterator_PAK.cpp                \
+                    CFTTFileSystem.cpp                      \
+                    CFTTFileSystem_Android.cpp              \
+                    CFTTFileSystem_APKX.cpp                 \
+                    CFTTFileSystem_PAK.cpp                  \
+                    CFTTFont2D.cpp                          \
+                    CFTTFontSDFShader.cpp                   \
+                    CFTTFrustum32.cpp                       \
+                    CFTTGLES2Wrapper.cpp                    \
+                    CFTTGraph.cpp                           \
+                    CFTTGraphicsBufferOGLES.cpp             \
+                    CFTTGraphicsDevice.cpp                  \
+                    CFTTGraphicsDeviceOGLES.cpp             \
+                    CFTTGraphicsDeviceOGLES3.cpp            \
+                    CFTTJob.cpp                             \
+                    CFTTJobList.cpp                         \
+                    CFTTJobQueue.cpp                        \
+                    CFTTJson.cpp                            \
+                    CFTTJsonMemWrapper.cpp                  \
+                    CFTTJsonReader.cpp                      \
+                    CFTTJSONReaderNode.cpp                  \
+                    CFTTLangDatabase.cpp                    \
+                    CFTTLocalNotification.cpp               \
+                    CFTTMaterial.cpp                        \
+                    CFTTMaterialManager.cpp                 \
+                    CFTTMatrix32.cpp                        \
+                    CFTTMatSetupData.cpp                    \
+                    CFTTMem.cpp                             \
+                    CFTTMemPool_Resizing.cpp                \
+                    CFTTMemPool_Resizing_Node.cpp           \
+                    CFTTMemPool_Static.cpp                  \
+                    CFTTMemPrivate.cpp                      \
+                    CFTTModel.cpp                           \
+                    CFTTMusicPlayer.cpp                     \
+                    CFTTNativeDialog.cpp                    \
+                    CFTTNavMesh.cpp                         \
+                    CFTTPCapsule.cpp                        \
+                    CFTTPhysics.cpp                         \
+                    CFTTPlane32.cpp                         \
+                    CFTTPObject.cpp                         \
+                    CFTTPPBox.cpp                           \
+                    CFTTPPCone.cpp                          \
+                    CFTTPPCylinder.cpp                      \
+                    CFTTPPPolyhedron.cpp                    \
+                    CFTTPPrimitive.cpp                      \
+                    CFTTPPSphere.cpp                        \
+                    CFTTQuaternion32.cpp                    \
+                    CFTTRandom.cpp                          \
+                    CFTTRandomNumberGenerator.cpp           \
+                    CFTTRandomNumberGeneratorThreadsafe.cpp \
+                    CFTTRandomThreadsafe.cpp                \
+                    CFTTRenderBuffer.cpp                    \
+                    CFTTRenderBufferOGLES.cpp               \
+                    CFTTRenderHelper.cpp                    \
+                    CFTTRenderTarget.cpp                    \
+                    CFTTRenderTargetOGLES.cpp               \
+                    CFTTRenderToTexture.cpp                 \
+                    CFTTRenderToTextureOGLES.cpp            \
+                    CFTTSaveFile.cpp                        \
+                    CFTTSerialize.cpp                       \
+                    CFTTServerTime.cpp                      \
+                    CFTTShaderBuiltInConstants.cpp          \
+                    CFTTShaderProgram.cpp                   \
+                    CFTTShaderProgramOGLES.cpp              \
+                    CFTTSkinningTask.cpp                    \
+                    CFTTSphere32.cpp                        \
+                    CFTTSystemFont.cpp                      \
+                    CFTTSystemFontCached.cpp                \
+                    CFTTTexLoadOptions.cpp                  \
+                    CFTTTexMan_TexInfo.cpp                  \
+                    CFTTTexture.cpp                         \
+                    CFTTTextureAtlas.cpp                    \
+                    CFTTTextureCache.cpp                    \
+                    CFTTTextureData.cpp                     \
+                    CFTTTextureManager.cpp                  \
+                    CFTTTextureOGLES.cpp                    \
+                    CFTTTextureWriter.cpp                   \
+                    CFTTTextureWriterDropMip.cpp            \
+                    CFTTTime.cpp                            \
+                    CFTTUberShader.cpp                      \
+                    CFTTUberShaderBlendMode.cpp             \
+                    CFTTVector32.cpp                        \
+                    CFTTVector32x4.cpp                      \
+                    CFTTXmlMemWrapper.cpp                   \
+                    CFTTXmlReader.cpp                       \
+                    CFTTXmlReaderNode.cpp                   \
+                    CFTTXmlReaderWriter.cpp                 \
+                    CFTTXmlWriter.cpp                       \
+                    CFTTXmlWriterNode.cpp                   \
+                    CGameFeats.cpp                          \
+                    CGameLoop.cpp                           \
+                    CGameSettings.cpp                       \
+                    CGaussianNewShader.cpp                  \
+                    CGaussianShader.cpp                     \
+                    CGfxAdboard.cpp                         \
+                    CGfxCharacter.cpp                       \
+                    CGfxCloth.cpp                           \
+                    CGfxCornerFlag.cpp                      \
+                    TCrowdMember.cpp                        \
+                    CGfxCrowd.cpp                           \
+                    CGfxCrowdCardGroup.cpp                  \
+                    CGfxCrowdFlagPhysics.cpp                \
+                    CGfxCrowdFlagRender.cpp                 \
+                    CGfxDynNormMap.cpp                      \
+                    CGfxEnv.cpp                             \
+                    CGfxEnvironmentMap.cpp                  \
+                    CGfxEnvMapRenderer.cpp                  \
+                    CGfxFakePlayer.cpp                      \
+                    CGFXFlag.cpp                            \
+                    CGfxFloodLights.cpp                     \
+                    CGFXFX.cpp                              \
+                    CGfxGlareManager.cpp                    \
+                    CGfxGravel.cpp                          \
+                    CGfxGroundShadow.cpp                    \
+                    CGfxIngameRenderer.cpp                  \
+                    CGfxKits.cpp                            \
+                    CGFXLensFlare.cpp                       \
+                    CGfxPitch.cpp                           \
+                    CGfxPitchLinePatch.cpp                  \
+                    CGfxPitchLines.cpp                      \
+                    CGfxPlayer.cpp                          \
+                    CGfxPlinth.cpp                          \
+                    CGfxPodium.cpp                          \
+                    CGfxPostProcess.cpp                     \
+                    CGfxPostProcessRenderer.cpp             \
+                    CGfxPrecipitation.cpp                   \
+                    CGfxProp.cpp                            \
+                    CGfxShadow.cpp                          \
+                    CGfxShadowMap.cpp                       \
+                    CGfxShadowMapManager.cpp                \
+                    CGfxShadowMapPSSM.cpp                   \
+                    CGfxShadowMapUniform.cpp                \
+                    CGFXSHADOWStaticShadow.cpp              \
+                    CGfxSky.cpp                             \
+                    CGFXSpec.cpp                            \
+                    CGfxStadiumProps.cpp                    \
+                    CGfxStaticShirt.cpp                     \
+                    CGfxSubBoard.cpp                        \
+                    CGfxTrophy.cpp                          \
+                    CGlareOccShader.cpp                     \
+                    CGlareRadialShader.cpp                  \
+                    CGoalNetShader.cpp                      \
+                    CGraphicsRewindEffect.cpp               \
+                    CGraphicsTexLoadOptions.cpp             \
+                    CGravelShader.cpp                       \
+                    CInFlightCredits.cpp                    \
+                    CIntegrateBRDFShader.cpp                \
+                    CKitGenShader.cpp                       \
+                    CLegacyLitShader.cpp                    \
+                    CLightingLUTState.cpp                   \
+                    CLinearDepthShader.cpp                  \
+                    CLoadingScreen.cpp                      \
+                    CMatchSetup.cpp                         \
+                    CMessageBox.cpp                         \
+                    CMessageBoxHandler.cpp                  \
+                    CMessageBoxWithDownloadTile.cpp         \
+                    CModelMan_ModelInfo.cpp                 \
+                    CModelManager.cpp                       \
+                    CMusicPlayerDestroyParams.cpp           \
+                    CMyProfile.cpp                          \
+                    CPackedCombineShader.cpp                \
+                    CPartAdditive2dShader.cpp               \
+                    CPBRLighting.cpp                        \
+                    CPerfTest2dShader.cpp                   \
+                    CPhotoPostShader.cpp                    \
+                    CPitchCircleShader.cpp                  \
+                    CPitchPostShader.cpp                    \
+                    CPitchShader.cpp                        \
+                    CPlayer.cpp                             \
+                    CPlayerManager.cpp                      \
+                    CPlayerShader.cpp                       \
+                    CPolaroid2dShader.cpp                   \
+                    CPoseAnalyzer.cpp                       \
+                    CPPBlendShader.cpp                      \
+                    CPPBlitShader.cpp                       \
+                    CPrecipitationShader.cpp                \
+                    CProfileFeats.cpp                       \
+                    CProfileStats.cpp                       \
+                    CRawDiffuseShader.cpp                   \
+                    CRawEnvShader.cpp                       \
+                    CRawSpecularShader.cpp                  \
+                    CReplay.cpp                             \
+                    CResourceManager.cpp                    \
+                    CrowdSortB.cpp                          \
+                    CrowdSortD.cpp                          \
+                    CrowdTextureCreationData.cpp            \
+                    CRSplineF.cpp                           \
+                    CRSplinePieceF.cpp                      \
+                    CSDFFontVisFBShader.cpp                 \
+                    CSeason.cpp                             \
+                    CShaderSetup.cpp                        \
+                    CShadowBatchShader.cpp                  \
+                    CShadowMapShader.cpp                    \
+                    CShadowRenderShader.cpp                 \
+                    CSheen2dShader.cpp                      \
+                    CSideStoryProfile.cpp                   \
+                    CSpringSlider.cpp                       \
+                    CStadiumShader.cpp                      \
+                    CStage.cpp                              \
+                    CStageManager.cpp                       \
+                    CStoryCore.cpp                          \
+                    CStoryHUD.cpp                           \
+                    CStoryProfile.cpp                       \
+                    CStoryProfileStages.cpp                 \
+                    CStoryTutorial.cpp                      \
+                    CTexLoadHelper.cpp                      \
+                    CTouchStateInternal.cpp                 \
+                    Cubic.cpp                               \
+                    CUIMsgContract.cpp                      \
+                    CUIMsgNewUpdate.cpp                     \
+                    CUIMsgPolaroid.cpp                      \
+                    CUIMsgProfile.cpp                       \
+                    CUIMsgPromotion.cpp                     \
+                    CUIMsgPromotionItem.cpp                 \
+                    CUIMsgRewind.cpp                        \
+                    CUIMsgShirt.cpp                         \
+                    CUIMsgShop.cpp                          \
+                    CUIMsgShopButton.cpp                    \
+                    CUIMsgShopItem.cpp                      \
+                    CUIMsgSideStory.cpp                     \
+                    CUITile.cpp                             \
+                    CUITileActions.cpp                      \
+                    CUITileBasic.cpp                        \
+                    CUITileButton.cpp                       \
+                    CUITileButtonExpander.cpp               \
+                    CUITileCredits.cpp                      \
+                    CUITileCrossPromotion.cpp               \
+                    CUITileEnergy.cpp                       \
+                    CUITileGoldenBoot.cpp                   \
+                    CUITileGoldenBootPurchase.cpp           \
+                    CUITileHeadShot.cpp                     \
+                    CUITileHUDText.cpp                      \
+                    CUITileItemSelector.cpp                 \
+                    CUITileLevel.cpp                        \
+                    CUITileLocked.cpp                       \
+                    CUITileManager.cpp                      \
+                    CUITileNationality.cpp                  \
+                    CUITileNationalityLarge.cpp             \
+                    CUITileNewspaper.cpp                    \
+                    CUITileNPMenu.cpp                       \
+                    CUITileNumberSelector.cpp               \
+                    CUITileOptionLang.cpp                   \
+                    CUITileOptionOnOff.cpp                  \
+                    CUITileOptionScale.cpp                  \
+                    CUITileOptionSpinBox.cpp                \
+                    CUITilePageBG.cpp                       \
+                    CUITilePauseButton.cpp                  \
+                    CUITileScoreboard.cpp                   \
+                    CUITileScroller.cpp                     \
+                    CUITileSideClock.cpp                    \
+                    CUITileSideClockLS.cpp                  \
+                    CUITileSideStory.cpp                    \
+                    CUITileSideStoryTicket.cpp              \
+                    CUITileSkinColour.cpp                   \
+                    CUITileStars.cpp                        \
+                    CUITileStarsLS.cpp                      \
+                    CUITileSticker.cpp                      \
+                    CUITileTextSelector.cpp                 \
+                    CUITileUser.cpp                         \
+                    CUnlockables.cpp                        \
+                    CVHSEffectsShader.cpp                   \
+                    CXmlUtil.cpp                            \
+                    DatagramHeaderFormat.cpp                \
+                    FE2D.cpp                                \
+                    FE_Language.cpp                         \
+                    FEBU.cpp                                \
+                    FESU.cpp                                \
+                    FETU.cpp                                \
+                    FEU.cpp                                 \
+                    FileHandler.cpp                         \
+                    FlagSort.cpp                            \
+                    FREE.cpp                                \
+                    FTT2D.cpp                               \
+                    FTT3D.cpp                               \
+                    FTTAtlasGenerator.cpp                   \
+                    FTTColour.cpp                           \
+                    FTTFILE.cpp                             \
+                    FTTFont.cpp                             \
+                    FTTGenerateKeyFrame.cpp                 \
+                    FTTGraphics.cpp                         \
+                    FTTInput.cpp                            \
+                    FTTJNI.cpp                              \
+                    FTTMutex.cpp                            \
+                    FTTSemaphore.cpp                        \
+                    FTTThread.cpp                           \
+                    GFXBALL.cpp                             \
+                    GFXCAMERA.cpp                           \
+                    GFXFADE.cpp                             \
+                    GFXHUD.cpp                              \
+                    GFXNET.cpp                              \
+                    GFXRENDER.cpp                           \
+                    GFXSCENE.cpp                            \
+                    GL.cpp                                  \
+                    GPA.cpp                                 \
+                    GM.cpp                                  \
+                    GU.cpp                                  \
+                    global_func.cpp                         \
+                    HalfConverter.cpp                       \
+                    HeightSort.cpp                          \
+                    IAP.cpp                                 \
+                    LOCstring.cpp                           \
+                    memctrl.cpp                             \
+                    PlatformMesh.cpp                        \
+                    Matrix.cpp                              \
+                    SAT.cpp                                 \
+                    SETUP.cpp                               \
+                    SNDFE.cpp                               \
+                    SNDGAME.cpp                             \
+                    Soccer.cpp                              \
+                    STORY.cpp                               \
+                    str_conv.cpp                            \
+                    SYS.cpp                                 \
+                    SYSCORE.cpp                             \
+                    TAABB.cpp                               \
+                    TAudioOptions.cpp                       \
+                    TFTTCacheLookup.cpp                     \
+                    TFTTCacheBucket.cpp                     \
+                    TFTTFace.cpp                            \
+                    TGame.cpp                               \
+                    TNMVert.cpp                             \
+                    TMetricsOptions.cpp                     \
+                    TPitchLineCircle.cpp                    \
+                    TPitchLineGen.cpp                       \
+                    TPitchLineRect.cpp                      \
+                    TPlayerInfoLight.cpp                    \
+                    TStorySeason.cpp                        \
+                    TPhoto.cpp                              \
+                    TStageOperation.cpp                     \
+                    Util.cpp                                \
+                    XCTRL.cpp                               \
+                    XDBG.cpp                                \
+                    XMATH.cpp                               \
+                    XML.cpp                                 \
+                    xsnprintf.cpp                           \
+                    XSYS.cpp                                \
+                    md5.cpp                                 \
+                    gl3stub.c                               \
+                    GetAttribute.cpp                        \
+                    sub.cpp
+
+LOCAL_ARM_NEON := true
+LOCAL_CFLAGS   += -fshort-wchar -fvisibility=default  -fomit-frame-pointer -fno-stack-protector
+LOCAL_CPPFLAGS += -Wno-switch
+LOCAL_LDFLAGS  += -fPIC
+LOCAL_LDLIBS   += -Wl,--no-wchar-size-warning -Wundefined-inline -llog -landroid -lEGL -lGLESv2 -lGLESv3
+LOCAL_STATIC_LIBRARIES += cpufeatures
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module,android/cpufeatures)
+
+# -L$(SYSROOT)/usr/lib -fno-stack-protector -fomit-frame-pointer
+# -nostdlib  -fno-builtin
+# CFTTRenderBufferVulkan.cpp
+# CFTTGraphicsDeviceVulkan.cpp
+# CFTTGraphicsBufferVulkan.cpp
+# CFTTShaderProgramVulkan.cpp
+# CFTTRenderToTextureVulkan.cpp
+# CFTTRenderTargetVulkan.cpp
+# CFTTVulkanCommandPool.cpp
+# CFTTVulkanMemory.cpp
+# CFTTVulkanPipelineManager.cpp
+# CFTTVulkanPipelineState.cpp
+# CFTTVulkanProjectSetup.cpp
+# CFTTVulkanSetup.cpp
+# CFTTVulkanStreamAllocator.cpp
+# CFTTTextureVulkan.cpp
+# CMyVulkanProjectSetup.cpp
+# FTTVulkanChunkAllocator.cpp
+# FTTVulkanMemoryChunk.cpp
+# include $(BUILD_SHARED_LIBRARY)

+ 162 - 0
jni/AndroidApp.cpp

@@ -0,0 +1,162 @@
+#include <dlfcn.h>
+#include <elf.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <linux/auxvec.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/sysinfo.h>
+#include <sys/types.h>
+#include <cpu-features.h>
+#include "AndroidApp.h"
+extern "C" {
+#include "cpu-features.h"
+}
+
+//该CPP函数有栈保护
+
+MYSTATIC char PackageName_5CDEFE[0x80];  //005CDEFE AndroidApp_RegisterPackageName
+uint8 byte_5CFC44;                       //005CFC44
+uint8 byte_5CFC48;                       //005CFC48
+//cpuinfo_once cpuinfo_5CFC50;    //005CFC50
+int dword_5CFC68;  //005CFC68
+uint32_t dRAMKB_5CDF80;
+MYSTATIC JavaVM *JavaVM_5CDF84 = nullptr;
+MYSTATIC jobject context_5CDF88;
+
+//-------------------------------------------------------------------------------------------------------
+//0026A244 //^_^
+__attribute__((noinline))
+jint AndroidApp_SetupJNI(JNIEnv *env, jobject obj) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A260 //^_- 经过单元测试,功能正常
+__attribute__((noinline))
+JNIEnv *AndroidApp_GetJNI() {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A2B0 //^_^
+__attribute__((noinline))
+void AndroidApp_CheckJNI(JNIEnv *env) {
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A2D8  //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetContext() {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A2E4 //^_^  经过单元测试,功能正常
+__attribute__((noinline))
+void AndroidApp_RegisterPackageName(const char *a1) {
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A324 //^_^
+__attribute__((noinline))
+char *AndroidApp_GetPackageName() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A330 //^_^
+__attribute__((noinline))
+jclass AndroidApp_FindJavaClass(char const *name) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A38C //^_^
+__attribute__((noinline))
+jclass AndroidApp_FindFTTJavaClass(char const *name) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A3E0 //^_^
+__attribute__((noinline))
+bool AndroidApp_IsCpuX86() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A3FA //^_^
+__attribute__((noinline))
+uint32 AndroidApp_GetNEONAvailable() {
+  uint32 result = 0;
+  return result;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A418 //^_- 经过单元测试,功能正常
+__attribute__((noinline))
+int AndroidApp_GetTotalRAMInKB() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A4B0 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetAdSupportInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A464 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetPushNotificationsInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A4FC //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetGooglePlusManagerInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A6C4 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetAdjustTrackerInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A678 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetAnalyticsManagerInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A62C //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetBannerAdManagerInstance() {
+  return nullptr;
+}
+
+//-------------------------------------------------------------------------------------------------------
+//0026A62C //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetFBAudienceManagerInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A594 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetFacebookManagerInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A5E0 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetHttpDownloadManagerInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026A710 //^_^
+__attribute__((noinline))
+jobject AndroidApp_GetNativeDialogInstance() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------
+//0026CEB4 //^_^
+__attribute__((noinline))
+int FTTMEM_PlatformFreeDiskSpace() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------------

+ 57 - 0
jni/AndroidApp.h

@@ -0,0 +1,57 @@
+// AABB - [2020-04-13 11:57:46]
+#ifndef _ANDROIDAPP_H_
+#define _ANDROIDAPP_H_
+
+#include "common.h"
+#include <jni.h>
+
+/*
+0026A244 AndroidApp_SetupJNI(_JNIEnv *,jclass *)
+0026A260 AndroidApp_GetJNI()
+0026A2B0 AndroidApp_CheckJNI(_JNIEnv *)
+0026A2D8 AndroidApp_GetContext()
+0026A2E4 AndroidApp_RegisterPackageName(char const*)
+0026A324 AndroidApp_GetPackageName()
+0026A330 AndroidApp_FindJavaClass(char const*)
+0026A38C AndroidApp_FindFTTJavaClass(char const*)
+0026A3E0 AndroidApp_IsCpuX86()
+0026A3FA AndroidApp_GetNEONAvailable()
+0026A418 AndroidApp_GetTotalRAMInKB()
+0026A464 AndroidApp_GetPushNotificationsInstance()
+0026A4B0 AndroidApp_GetAdSupportInstance()
+0026A4FC AndroidApp_GetGooglePlusManagerInstance()
+0026A548 AndroidApp_GetFBAudienceManagerInstance()
+0026A594 AndroidApp_GetFacebookManagerInstance()
+0026A5E0 AndroidApp_GetHttpDownloadManagerInstance()
+0026A62C AndroidApp_GetBannerAdManagerInstance()
+0026A678 AndroidApp_GetAnalyticsManagerInstance()
+0026A6C4 AndroidApp_GetAdjustTrackerInstance()
+0026A710 AndroidApp_GetNativeDialogInstance()
+*/
+
+void AndroidApp_CheckJNI(JNIEnv* a1);
+jclass AndroidApp_FindFTTJavaClass(char const* name);
+jclass AndroidApp_FindJavaClass(char const* name);
+jobject AndroidApp_GetAdSupportInstance();
+jobject AndroidApp_GetAdjustTrackerInstance();
+jobject AndroidApp_GetAnalyticsManagerInstance();
+jobject AndroidApp_GetBannerAdManagerInstance();
+jobject AndroidApp_GetContext();
+jobject AndroidApp_GetFBAudienceManagerInstance();
+jobject AndroidApp_GetFacebookManagerInstance();
+jobject AndroidApp_GetGooglePlusManagerInstance();
+jobject AndroidApp_GetHttpDownloadManagerInstance();
+JNIEnv* AndroidApp_GetJNI();
+uint32 AndroidApp_GetNEONAvailable();
+jobject AndroidApp_GetNativeDialogInstance();
+char* AndroidApp_GetPackageName();
+jobject AndroidApp_GetPushNotificationsInstance();
+int AndroidApp_GetTotalRAMInKB();
+bool AndroidApp_IsCpuX86();
+void AndroidApp_RegisterPackageName(const char* a1);
+jint AndroidApp_SetupJNI(JNIEnv* env, jobject obj);
+
+int FTTMEM_PlatformFreeDiskSpace();  // 0026CEB4
+// 00274DB0
+int FTTNet_GetReachability();
+#endif  //_ANDROIDAPP_H_

+ 8 - 0
jni/Application.mk

@@ -0,0 +1,8 @@
+APP_PLATFORM := android-19
+APP_OPTIM    := release
+#APP_OPTIM    := debug
+APP_STL      := c++_static
+APP_CPPFLAGS += -fexceptions -std=c++17
+APP_ABI      := armeabi-v7a
+APP_SHORT_COMMANDS := true
+#-frtti

+ 27 - 0
jni/CAM.cpp

@@ -0,0 +1,27 @@
+#include "CAM.h"
+
+//-------------------------------------------------------------------------------------------------
+//0015978C
+void CAM_Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//001597C8
+void CAM_GetAngle() {
+}
+//-------------------------------------------------------------------------------------------------
+//001597E4
+void CAM_Update() {
+}
+//-------------------------------------------------------------------------------------------------
+//0015981C
+void CAM_GetMode() {
+}
+//-------------------------------------------------------------------------------------------------
+//00159824
+void CAM_Setup(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00159D38
+void CAM_SetupGameCamera(int, int, TPoint3D &, TPoint3D &) {
+}
+//-------------------------------------------------------------------------------------------------

+ 25 - 0
jni/CAM.h

@@ -0,0 +1,25 @@
+// CAM - [2020-06-22 11:41:46]
+#ifndef _CAM_H_
+#define _CAM_H_
+
+#include "common.h"
+
+//0015978C
+void CAM_Init();
+
+//001597C8
+int CAM_GetAngle();
+
+//001597E4
+int CAM_Update();
+
+//0015981C
+int CAM_GetMode();
+
+//00159824
+int CAM_Setup(int);
+
+//00159D38
+void CAM_SetupGameCamera(int, int, TPoint3D &, TPoint3D &);
+
+#endif  //_CAM_H_

+ 2 - 0
jni/CAndroidBQPlayer.cpp

@@ -0,0 +1,2 @@
+#include "CAndroidBQPlayer.h"
+

+ 30 - 0
jni/CAndroidBQPlayer.h

@@ -0,0 +1,30 @@
+// CAndroidBQPlayer - [2020-04-13 11:57:46]
+#ifndef _CANDROIDBQPLAYER_H_
+#define _CANDROIDBQPLAYER_H_
+
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+#include "CFTTAudio_SoundPlayer.h"
+
+/*
+001FBE74 CAndroidBQPlayer::SafeDestroy()
+*/
+
+class CFTTAudio_SoundPlayer;
+
+class CAndroidBQPlayer {
+public:
+  void SafeDestroy();
+  char field_0;
+  char field_1;
+  char field_2;
+  char field_3;
+  CFTTAudio_SoundPlayer* soundPlayer_4;
+  SLObjectItf field_8;
+  SLPlayItf playItf_C;
+  SLBufferQueueItf bufferQueueItf_10;
+  SLVolumeItf volumeItf_14;
+  SLPlaybackRateItf playbackItf_18;
+};
+
+#endif  //_CANDROIDBQPLAYER_H_

+ 71 - 0
jni/CAnimLib.cpp

@@ -0,0 +1,71 @@
+#include "CAnimLib.h"
+#include "CFTTFileSystem.h"
+#include "CFTTFile.h"
+#include "CFTTFileSystem_PAK.h"
+#include "TGame.h"
+#include "memctrl.h"
+
+TPreLoadAnimData CAnimLib::ms_tPreLoadAnimData[13] = {
+    {1, 0xE, 0xC, -1},
+    {1, 0xE, 9, 2},
+    {1, 0xE, 9, 1},
+    {1, 0xE, 3, 1},
+    {1, 0xE, 3, 4},
+    {1, 0xE, 3, 8},
+    {1, 0xE, 3, 0x10},
+    {1, 0xE, 3, 2},
+    {1, 0xE, 2, 1},
+    {1, 0xE, 2, 2},
+    {1, 0xE, 2, 4},
+    {1, 0xE, 6, 4},
+    {1, 0xE, 0xA, -1}};
+
+//-------------------------------------------------------------------------------------------------
+//0017BBD4 ^_^ 开栈保护编译
+CAnimLib::CAnimLib() {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C01C ~_~
+CAnimLib::~CAnimLib() {
+}
+//-------------------------------------------------------------------------------------------------
+//0017BCCC ^_- 开栈保护编译
+TSATAnim_TSX* CAnimLib::LoadAnim(int a1, int a2) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//0017BDC0 ^_^ 开栈保护编译
+void CAnimLib::PreLoadAnims(int a1, int a2, int a3, int a4) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017BE24 ~_~
+TSATAnim_TSX* CAnimLib::PreLoadAnimsByID(EAnimID a1, int a2) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//0017BE28 ~_~
+void CAnimLib::FreeDynamicAnims() {
+}
+//-------------------------------------------------------------------------------------------------
+//0017BE94 ~_~
+void CAnimLib::FreeAnim(int a1) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017BF1E ~_~
+void CAnimLib::UnloadPermanentAnims() {
+}
+//-------------------------------------------------------------------------------------------------
+//0017BF54 ~_~
+void CAnimLib::ReloadPermanentAnims() {
+}
+//-------------------------------------------------------------------------------------------------
+//0017BFA0 ~_~
+TSATAnim_TSX* CAnimLib::GetAnim(int a1, bool a2) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//0017BFF0 ~_~
+TSATAnim_TSX* CAnimLib::CheckAnim(int a1) {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------

+ 70 - 0
jni/CAnimLib.h

@@ -0,0 +1,70 @@
+// CAnimLib - [2020-04-13 11:57:46]
+#ifndef _CANIMLIB_H_
+#define _CANIMLIB_H_
+
+#include "common.h"
+#include "SAT.h"
+#include "CAnimManager.h"
+
+/*
+0017BBD4 CAnimLib::CAnimLib()
+0017C01C CAnimLib::~CAnimLib()
+0017BCCC CAnimLib::LoadAnim(int,int)
+0017BDC0 CAnimLib::PreLoadAnims(int,int,int,int)
+0017BE24 CAnimLib::PreLoadAnimsByID(EAnimID,int)
+0017BE28 CAnimLib::FreeDynamicAnims()
+0017BE94 CAnimLib::FreeAnim(int)
+0017BF1E CAnimLib::UnloadPermanentAnims()
+0017BF54 CAnimLib::ReloadPermanentAnims()
+0017BFA0 CAnimLib::GetAnim(int,bool)
+0017BFF0 CAnimLib::CheckAnim(int)
+
+0x7E6C
+*/
+
+struct TPreLoadAnimData {
+  int filed_0;
+  int filed_4;
+  int filed_8;
+  int filed_c;
+};
+
+enum EAnimID {
+  EAnimID_0,
+  EAnimID_1,
+  EAnimID_2,
+  EAnimID_3,
+  EAnimID_4,
+  EAnimID_5,
+};
+
+class CFTTFile;
+class CFTTFileSystem_PAK;
+class CAnimLib {
+public:
+  CAnimLib();                                    // 0017BBD4
+  ~CAnimLib();                                   // 0017C01C
+  TSATAnim_TSX* LoadAnim(int, int);              // 0017BCCC
+  void PreLoadAnims(int, int, int, int);         // 0017BDC0
+  TSATAnim_TSX* PreLoadAnimsByID(EAnimID, int);  // 0017BE24
+  void FreeDynamicAnims();                       // 0017BE28
+  void FreeAnim(int);                            // 0017BE94
+  void UnloadPermanentAnims();                   // 0017BF1E
+  void ReloadPermanentAnims();                   // 0017BF54
+  TSATAnim_TSX* GetAnim(int, bool);              // 0017BFA0
+  TSATAnim_TSX* CheckAnim(int);                  // 0017BFF0
+
+  TSATAnim_TSX* pAnims_0[2488];
+  char filed_26e0[2488];
+  int filed_3098;
+  int filed_309c[2488];
+  int filed_577c[2488];
+  int filed_7e5c;
+  int filed_7e60;
+  CFTTFile* filed_7e64;
+  CFTTFileSystem_PAK* filed_7e68;
+
+  static TPreLoadAnimData ms_tPreLoadAnimData[13];
+};
+
+#endif  //_CANIMLIB_H_

+ 125 - 0
jni/CAnimManager.cpp

@@ -0,0 +1,125 @@
+#include "CAnimManager.h"
+#include "CFTTFileSystem.h"
+#include "CFTTFile.h"
+#include "CFTTFileSystem_PAK.h"
+#include "ANIMHashName.h"
+#include "XMATH.h"
+#include "CGfxCharacter.h"
+#include "memctrl.h"
+
+TAnimEntry *CAnimManager::s_pAnimEntries;
+int16_t *CAnimManager::s_pS16Pool;
+int CAnimManager::s_iAnimCount;
+TAnimData *CAnimManager::s_tAnimData;
+int CAnimManager::s_iStandardWalk[3] = {0, 0x673, 0x2D1};
+int CAnimManager::s_iStandardSprint[4] = {0x206, 0x208, 0x20A, 0x691};
+int CAnimManager::s_iStandardSprintJostle[3] = {0x2D5, 0x7F5, 0x7F7};
+int CAnimManager::s_iStateFlags[20] = {1, 0, 1, 1, 1, 0, 6, 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 10};
+TStateList CAnimManager::s_tStateList[20];
+bool CAnimManager::s_bInited;
+
+//0015666C ^_- 单元测试输出数值一样
+void SET_ROOT_POS(int i0, TAnimData *pTAnimData1, TPoint &pTPoint2, int i3) {
+}
+
+//00156504 //^_^----
+//00156526 指令顺序不同
+//00156546 指令顺序不同
+//0015655C 指令不同
+void SET_ROOT_POS_NO_SCALE(TAnimData *p_tanimdata_r0_arg, TPoint &p_tpoint_r1_arg, int d_r2_arg) {
+}
+//-------------------------------------------------------------------------------------------------
+//001559E4
+void CAnimManager::GetStateAnimCount(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//001559FC 模块测试程序可以正常运行
+void CAnimManager::LoadAnimDB() {
+}
+//-------------------------------------------------------------------------------------------------
+//00155D2C
+void CAnimManager::FreeAnimDB() {
+}
+//-------------------------------------------------------------------------------------------------
+//00155D48
+void CAnimManager::UnloadAnimations() {
+}
+//-------------------------------------------------------------------------------------------------
+//00155D9C
+void CAnimManager::AnimFreeAll() {
+}
+//-------------------------------------------------------------------------------------------------
+//00155E04 //模块测试程序可以正常运行
+void CAnimManager::StateInfoListFill(void (*)()) {
+}
+//-------------------------------------------------------------------------------------------------
+//00155F48 //模块测试程序可以正常运行
+void CAnimManager::AnimDataFill(int a1) {
+}
+//-------------------------------------------------------------------------------------------------
+//0015639A ^_^
+void CAnimManager::SetupRootBoneInitialMove(TAnimData *a1) {
+}
+//-------------------------------------------------------------------------------------------------
+//00156404 ^_^
+void CAnimManager::AnimDataListFill(void (*)(int)) {
+}
+//-------------------------------------------------------------------------------------------------
+//00156424 ^_^
+void CAnimManager::AnimDataListInit() {
+}
+//-------------------------------------------------------------------------------------------------
+//00156464 ^_^
+void CAnimManager::InitAnimations() {
+}
+//-------------------------------------------------------------------------------------------------
+//00156490
+int CAnimManager::GetState(int) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001564D8
+TStateList *CAnimManager::StateInfoGet(int) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//001564EC
+int CAnimManager::StateInfoGetAnimCount(int) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00156588
+void CAnimManager::GetRootBoneMove(TPoint *, int, int, int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00156710
+void CAnimManager::GetRootBoneOfs(TPoint *, int, int, int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0015679C
+int CAnimManager::GetActionTime(int, int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001567C8
+int CAnimManager::GetActionAnim(CPlayer *, EPlayerState, TPoint3D *, int, int, int, int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00156AB8 ^_^
+int CAnimManager::GetAnimID(char const *a1) {
+  return -1;
+}
+//-------------------------------------------------------------------------------------------------
+//00156AE8
+void CAnimManager::GetAnimID(uint) {
+}
+//-------------------------------------------------------------------------------------------------
+//00156B14 ^_-(模块测试通过,MD5输出一致)
+void CAnimManager::GetBonePositionAnim(short *a1, int a2, int a3, int a4, int a5, int a6) {
+}
+//-------------------------------------------------------------------------------------------------
+//00156D30
+void CAnimManager::GetBoneOrientationAnim(TPoint3D *, int, int, int) {
+}
+//-------------------------------------------------------------------------------------------------

+ 86 - 0
jni/CAnimManager.h

@@ -0,0 +1,86 @@
+// CAnimManager - [2020-04-13 11:57:46]
+#ifndef _CANIMMANAGER_H_
+#define _CANIMMANAGER_H_
+
+#include "common.h"
+#include "TAnimEntry.h"
+#include "TAnimData.h"
+#include "TStateList.h"
+/*
+001559E4 CAnimManager::GetStateAnimCount(int)
+001559FC CAnimManager::LoadAnimDB()
+00155D2C CAnimManager::FreeAnimDB()
+00155D48 CAnimManager::UnloadAnimations()
+00155D9C CAnimManager::AnimFreeAll()
+00155E04 CAnimManager::StateInfoListFill(void (*)())
+00155F48 CAnimManager::AnimDataFill(int)
+0015639A CAnimManager::SetupRootBoneInitialMove(TAnimData *)
+00156404 CAnimManager::AnimDataListFill(void (*)(int))
+00156424 CAnimManager::AnimDataListInit()
+00156464 CAnimManager::InitAnimations()
+00156490 CAnimManager::GetState(int)
+001564D8 CAnimManager::StateInfoGet(int)
+001564EC CAnimManager::StateInfoGetAnimCount(int)
+00156588 CAnimManager::GetRootBoneMove(TPoint *,int,int,int,int)
+00156710 CAnimManager::GetRootBoneOfs(TPoint *,int,int,int,int)
+0015679C CAnimManager::GetActionTime(int,int,int)
+001567C8 CAnimManager::GetActionAnim(CPlayer *,EPlayerState,TPoint3D *,int,int,int,int,int)
+00156AB8 CAnimManager::GetAnimID(char const*)
+00156AE8 CAnimManager::GetAnimID(uint)
+00156B14 CAnimManager::GetBonePositionAnim(short *,int,int,int,int,int)
+00156D30 CAnimManager::GetBoneOrientationAnim(TPoint3D *,int,int,int)
+*/
+
+enum EPlayerState {
+  EPlayerState_0,
+  EPlayerState_1,
+  EPlayerState_2,
+  EPlayerState_3,
+  EPlayerState_4,
+  EPlayerState_5,
+  EPlayerState_12 = 12,
+};
+
+class CPlayer;
+
+class CAnimManager {
+public:
+  void GetStateAnimCount(int);                                                             // 001559E4
+  static void LoadAnimDB();                                                                // 001559FC
+  static void FreeAnimDB();                                                                // 00155D2C
+  static void UnloadAnimations();                                                          // 00155D48
+  static void AnimFreeAll();                                                               // 00155D9C
+  static void StateInfoListFill(void (*)());                                               // 00155E04
+  static void AnimDataFill(int);                                                           // 00155F48
+  static void SetupRootBoneInitialMove(TAnimData *);                                       // 0015639A
+  static void AnimDataListFill(void (*)(int));                                             // 00156404
+  static void AnimDataListInit();                                                          // 00156424
+  static void InitAnimations();                                                            // 00156464
+  static int GetState(int);                                                                // 00156490
+  static TStateList *StateInfoGet(int);                                                    // 001564D8
+  static int StateInfoGetAnimCount(int);                                                   // 001564EC
+  static void GetRootBoneMove(TPoint *, int, int, int, int);                               // 00156588
+  static void GetRootBoneOfs(TPoint *, int, int, int, int);                                // 00156710
+  static int GetActionTime(int, int, int);                                                 // 0015679C
+  static int GetActionAnim(CPlayer *, EPlayerState, TPoint3D *, int, int, int, int, int);  // 001567C8
+  static int GetAnimID(char const *);                                                      // 00156AB8
+  void GetAnimID(uint);                                                                    // 00156AE8
+  static void GetBonePositionAnim(short *, int, int, int, int, int);                       // 00156B14
+  void GetBoneOrientationAnim(TPoint3D *, int, int, int);                                  // 00156D30
+
+  static TAnimEntry *s_pAnimEntries;
+  static int16_t *s_pS16Pool;
+  static int s_iAnimCount;
+  static TAnimData *s_tAnimData;
+  static int s_iStateFlags[20];
+  static TStateList s_tStateList[20];
+  static int s_iStandardWalk[3];
+  static int s_iStandardSprint[4];
+  static int s_iStandardSprintJostle[3];
+  static bool s_bInited;
+};
+
+void SET_ROOT_POS(int i0, TAnimData *pTAnimData1, TPoint &pTPoint2, int i3);
+void SET_ROOT_POS_NO_SCALE(TAnimData *p_tanimdata_r0_arg, TPoint &p_tpoint_r1_arg, int d_r2_arg);
+
+#endif  //_CANIMMANAGER_H_

+ 148 - 0
jni/CBall.cpp

@@ -0,0 +1,148 @@
+#include "CBall.h"
+CBall cBall;
+//-------------------------------------------------------------------------------------------------
+//00156E3C
+void CBall::UpdateFrame() {
+}
+//-------------------------------------------------------------------------------------------------
+//00156F38
+void CBall::CheckEvents() {
+}
+//-------------------------------------------------------------------------------------------------
+//001575DC
+void CBall::ClampSpeed(int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00157648
+void CBall::Stop() {
+}
+//-------------------------------------------------------------------------------------------------
+//00157668
+void CBall::SetVel(int, int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00157678
+void CBall::SetVelRel(int, int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00157698
+void CBall::AdjustKickToPos(TPoint) {
+}
+//-------------------------------------------------------------------------------------------------
+//001577B4
+int CBall::SetBallMoveToPosSpin(TPoint3D *, int, int, TPoint3D, TPoint3D, int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0015799E
+CBall& CBall::operator=(CBall const & ball1) {
+  return *this;
+}
+//-------------------------------------------------------------------------------------------------
+//00157A3C
+int CBall::SetBallMoveToPosLowSpin(TPoint3D *, int, int, TPoint3D, TPoint3D, int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00157C94
+int CBall::GetPassPowerX(int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00157D08
+int CBall::GetPassLength(int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00157DA4
+int CBall::SetBallMoveToPos(TPoint3D *, TPoint3D, TPoint3D, int, int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00157EAC
+int CBall::SetBallMoveToPosLow(TPoint3D *, TPoint3D, TPoint3D, int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00157FF4
+void CBall::AirResistanceInit() {
+}
+//-------------------------------------------------------------------------------------------------
+//0015806C
+void CBall::ProjectionPassLengthInit() {
+}
+//-------------------------------------------------------------------------------------------------
+//00158148
+void CBall::PlayNetSound() {
+}
+//-------------------------------------------------------------------------------------------------
+//0015818C
+void CBall::CornerFlagCollision(int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00158228
+int CBall::PointBallTest(TPoint *, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00158254
+void CBall::DoBallGoalBounce() {
+}
+//-------------------------------------------------------------------------------------------------
+//00158638
+void CBall::Deflect() {
+}
+//-------------------------------------------------------------------------------------------------
+//001586DC
+bool CBall::CheckPostXYCol(TPoint3D) {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//001588E8
+bool CBall::CheckPostYZCol(TPoint3D) {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0015897C
+bool CBall::DoBallPostCollisions() {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//001589CC
+bool CBall::BannerCollisionX(int) {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00158A60
+bool CBall::BannerCollisionY(int) {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//001592A0
+void CBall::CounterBallSpinZ(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//001592F8
+void CBall::ApplySpin(TPoint3D *, TPoint3D *, int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00159334
+void CBall::ApplyExactSpin(TPoint3D *, TPoint3D *, int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00159370
+void CBall::ApplyGroundSpin(TPoint3D *, TPoint3D *) {
+}
+//-------------------------------------------------------------------------------------------------
+//00159404
+void CBall::CalcSpeed() {
+}
+//-------------------------------------------------------------------------------------------------
+//0015946C
+void CBall::CalcVars() {
+}
+//-------------------------------------------------------------------------------------------------
+//001595A4
+void CBall::CheckBallInGoal() {
+}
+//-------------------------------------------------------------------------------------------------

+ 127 - 0
jni/CBall.h

@@ -0,0 +1,127 @@
+// CBall - [2020-04-13 11:57:46]
+#ifndef _CBALL_H_
+#define _CBALL_H_
+
+#include "common.h"
+#include "XMATH.h"
+#include "TGame.h"
+
+/*
+
+00156E3C CBall::UpdateFrame()
+00156F38 CBall::CheckEvents()
+001575DC CBall::ClampSpeed(int,int)
+00157648 CBall::Stop()
+00157668 CBall::SetVel(int,int,int)
+00157678 CBall::SetVelRel(int,int,int)
+00157698 CBall::AdjustKickToPos(TPoint)
+001577B4 CBall::SetBallMoveToPosSpin(TPoint3D *,int,int,TPoint3D,TPoint3D,int,int)
+0015799E CBall::operator=(CBall const&)
+00157A3C CBall::SetBallMoveToPosLowSpin(TPoint3D *,int,int,TPoint3D,TPoint3D,int,int)
+00157C94 CBall::GetPassPowerX(int,int)
+00157D08 CBall::GetPassLength(int,int)
+00157DA4 CBall::SetBallMoveToPos(TPoint3D *,TPoint3D,TPoint3D,int,int,int)
+00157EAC CBall::SetBallMoveToPosLow(TPoint3D *,TPoint3D,TPoint3D,int,int)
+00157FF4 CBall::AirResistanceInit()
+0015806C CBall::ProjectionPassLengthInit()
+00158148 CBall::PlayNetSound()
+0015818C CBall::CornerFlagCollision(int,int)
+00158228 CBall::PointBallTest(TPoint *,int)
+00158254 CBall::DoBallGoalBounce()
+00158638 CBall::Deflect()
+001586DC CBall::CheckPostXYCol(TPoint3D)
+001588E8 CBall::CheckPostYZCol(TPoint3D)
+0015897C CBall::DoBallPostCollisions()
+001589CC CBall::BannerCollisionX(int)
+00158A60 CBall::BannerCollisionY(int)
+001592A0 CBall::CounterBallSpinZ(int)
+001592F8 CBall::ApplySpin(TPoint3D *,TPoint3D *,int,int)
+00159334 CBall::ApplyExactSpin(TPoint3D *,TPoint3D *,int,int)
+00159370 CBall::ApplyGroundSpin(TPoint3D *,TPoint3D *)
+00159404 CBall::CalcSpeed()
+0015946C CBall::CalcVars()
+001595A4 CBall::CheckBallInGoal()
+
+0xDC
+*/
+
+class CBall {
+public:
+  void UpdateFrame();                                                               // 00156E3C
+  void CheckEvents();                                                               // 00156F38
+  void ClampSpeed(int, int);                                                        // 001575DC
+  void Stop();                                                                      // 00157648
+  __attribute__((noinline)) void SetVel(int, int, int);                             // 00157668
+  void SetVelRel(int, int, int);                                                    // 00157678
+  void AdjustKickToPos(TPoint);                                                     // 00157698
+  int SetBallMoveToPosSpin(TPoint3D *, int, int, TPoint3D, TPoint3D, int, int);     // 001577B4
+  CBall &operator=(CBall const &);                                                  // 0015799E
+  int SetBallMoveToPosLowSpin(TPoint3D *, int, int, TPoint3D, TPoint3D, int, int);  // 00157A3C
+  int GetPassPowerX(int, int);                                                      // 00157C94
+  int GetPassLength(int, int);                                                      // 00157D08
+  int SetBallMoveToPos(TPoint3D *, TPoint3D, TPoint3D, int, int, int);              // 00157DA4
+  int SetBallMoveToPosLow(TPoint3D *, TPoint3D, TPoint3D, int, int);                // 00157EAC
+  void AirResistanceInit();                                                         // 00157FF4
+  void ProjectionPassLengthInit();                                                  // 0015806C
+  void PlayNetSound();                                                              // 00158148
+  void CornerFlagCollision(int, int);                                               // 0015818C
+  int PointBallTest(TPoint *, int);                                                 // 00158228
+  void DoBallGoalBounce();                                                          // 00158254
+  void Deflect();                                                                   // 00158638
+  bool CheckPostXYCol(TPoint3D);                                                    // 001586DC
+  bool CheckPostYZCol(TPoint3D);                                                    // 001588E8
+  bool DoBallPostCollisions();                                                      // 0015897C
+  bool BannerCollisionX(int);                                                       // 001589CC
+  bool BannerCollisionY(int);                                                       // 00158A60
+  void CounterBallSpinZ(int);                                                       // 001592A0
+  void ApplySpin(TPoint3D *, TPoint3D *, int, int);                                 // 001592F8
+  void ApplyExactSpin(TPoint3D *, TPoint3D *, int, int);                            // 00159334
+  void ApplyGroundSpin(TPoint3D *, TPoint3D *);                                     // 00159370
+  void CalcSpeed();                                                                 // 00159404
+  void CalcVars();                                                                  // 0015946C
+  void CheckBallInGoal();                                                           // 001595A4
+
+  bool field_0;
+  uint8 field_1;
+  uint8 field_2;
+  uint8 field_3;
+  TPoint3D ballPosPrev_4;  // 0016FB3E 此处可断定,类型为TPoint3D
+  TPoint3D ballMovePrev_10;
+  TPoint3D point3D_1C;
+  uint speedXY_28;  // point3D_10 的xy坐标的距离
+  TPoint3D point3D_2C;
+  TPoint3D point3D_38;
+  TPoint3D point3D_44;
+  uint speedXYZ_50;  // point3D_10 的xyz坐标的距离
+  TPoint3D point3D_54;
+  TPoint point_60;
+  TQuat quat_68;
+  TPoint3D point3D_78;
+  TPoint3D point3D_84;
+  int field_90;
+  int HeightTime_94;
+  TPoint TimePos_98;
+  int field_A0;
+  int field_A4;
+  int field_A8;
+  int field_AC;
+  int field_B0;
+  int field_B4;
+  int field_B8;
+  int field_BC;
+  int field_C0;
+  TPoint TimePos_C4;
+  int HeightTime_CC;
+  TPoint TimePos_D0;
+  int HeightTime_D8;
+  static uint16 s_iAirResistanceDistMult[201];
+  static int16 s_iAirResistanceMult[201];
+  static int s_iPassProjectionLength[180][360];
+  static int s_iPassProjectionLength_COKTime[360];
+};
+
+extern CBall cBall;  // 00356A70
+
+extern TPoint G_vGoalPos[2];
+
+#endif  //_CBALL_H_

+ 62 - 0
jni/CBallProj.cpp

@@ -0,0 +1,62 @@
+#include "CBallProj.h"
+
+//-------------------------------------------------------------------------------------------------
+//00158AF8
+int CBallProj::GetTimeHeight(int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00158B7C
+void CBallProj::EnsureProj(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00158BB4
+void CBallProj::Iterate(CBall *) {
+}
+//-------------------------------------------------------------------------------------------------
+//00158D74
+int CBallProj::GetHeightTime(int, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00158E50
+bool CBallProj::GetTimePos(TPoint *, int) {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00158ED0
+void CBallProj::GetTimePos3D(TPoint3D *, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00158F68
+void CBallProj::GetTimeSpeed(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00158FA0
+int CBallProj::GetBallPosTime(TPoint) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001590D4
+void CBallProj::StoreBallProj(bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//00159114
+void CBallProj::ClearProj() {
+}
+//-------------------------------------------------------------------------------------------------
+//00159164
+int CBallProj::CheckBallProj() {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0015919C
+uint CBallProj::GetPathNearestPoint(TPoint3D *, TPoint3D *, int *) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00159220
+uint CBallProj::GetPathNearestPoint(TPoint *, TPoint *, int *) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 53 - 0
jni/CBallProj.h

@@ -0,0 +1,53 @@
+// CBallProj - [2020-04-13 11:57:46]
+#ifndef _CBALLPROJ_H_
+#define _CBALLPROJ_H_
+
+#include "CBall.h"
+
+/*
+00158AF8 CBallProj::GetTimeHeight(int)
+00158B7C CBallProj::EnsureProj(int)
+00158BB4 CBallProj::Iterate(CBall *)
+00158D74 CBallProj::GetHeightTime(int,int)
+00158E50 CBallProj::GetTimePos(TPoint *,int)
+00158ED0 CBallProj::GetTimePos3D(TPoint3D *,int)
+00158F68 CBallProj::GetTimeSpeed(int)
+00158FA0 CBallProj::GetBallPosTime(TPoint)
+001590D4 CBallProj::StoreBallProj(bool)
+00159114 CBallProj::ClearProj()
+00159164 CBallProj::CheckBallProj()
+0015919C CBallProj::GetPathNearestPoint(TPoint3D *,TPoint3D *,int *)
+00159220 CBallProj::GetPathNearestPoint(TPoint *,TPoint *,int *)
+*/
+
+class CBallProj {
+public:
+  int GetTimeHeight(int);                                   // 00158AF8
+  void EnsureProj(int);                                     // 00158B7C
+  void Iterate(CBall *);                                    // 00158BB4
+  int GetHeightTime(int, int);                              // 00158D74
+  bool GetTimePos(TPoint *, int);                           // 00158E50
+  void GetTimePos3D(TPoint3D *, int);                       // 00158ED0
+  void GetTimeSpeed(int);                                   // 00158F68
+  int GetBallPosTime(TPoint);                               // 00158FA0
+  void StoreBallProj(bool);                                 // 001590D4
+  void ClearProj();                                         // 00159114
+  int CheckBallProj();                                      // 00159164
+  uint GetPathNearestPoint(TPoint3D *, TPoint3D *, int *);  // 0015919C
+  uint GetPathNearestPoint(TPoint *, TPoint *, int *);      // 00159220
+
+  CBall ball_0;
+  int field_DC;
+  int field_E0;
+  int field_E4;
+  struct {
+    TPoint3D point3D_0;
+    TPoint3D point3D_C;
+    TPoint3D point3D_14;
+    int field_24;
+  } field_E8[512];
+};
+
+extern CBallProj cBallProj;
+
+#endif  //_CBALLPROJ_H_

+ 99 - 0
jni/CBallShader.cpp

@@ -0,0 +1,99 @@
+#include "CBallShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CBallShader_Setup.h"
+
+CBallShader CBallShader::s_tInstance;
+//-------------------------------------------------------------------------------------------------
+//001CF60C
+CBallShader::CBallShader() : CFTTUberShader(&CBallShaderSetup_32394C) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF618 //^_^
+CBallShader::~CBallShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C56C //^_^
+void CBallShader::SetShadowMap(EBallShader_ShadowMap eShadowMap) {
+
+}
+//-------------------------------------------------------------------------------------------------
+//0017C57E //^_^
+void CBallShader::SetShadowMapTex(CFTTTexParam aTexparam) {
+
+}
+//-------------------------------------------------------------------------------------------------
+//0017C5AC //^_^
+void CBallShader::SetShadowMapProj01(CFTTMatrix32 const& pMatrix32) {
+
+}
+//-------------------------------------------------------------------------------------------------
+//0017C5B8 //^_^
+void CBallShader::SetShadowMapProj02(CFTTMatrix32 const& pMatrix32) {
+
+}
+//-------------------------------------------------------------------------------------------------
+//0017C5C4 //^_^
+void CBallShader::SetViewParams(float const* pfloat) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C5D0 //^_^
+void CBallShader::SetShadowMapSplit(float af) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C5E2 //^_^
+void CBallShader::SetLightDir(CFTTVector32x4 const& pVector32x4) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C5EE //^_^
+void CBallShader::SetModel(EBallShader_Model eModel) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C600 //^_^
+void CBallShader::SetSpecularLUT(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C614 //^_^
+void CBallShader::SetDiffuseEnv(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C628 //^_^
+void CBallShader::SetSpecularEnv(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C63C //^_^
+void CBallShader::SetBRDFLUT(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C650 //^_^
+void CBallShader::SetPBR(CFTTVector32x4 const& pVector32x4) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C950 //^_^
+void CBallShader::SetDiffuse(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C964 //^_^
+void CBallShader::SetNormal(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C978 //^_^
+void CBallShader::SetAmbient(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0017C98C
+void CBallShader::SetFloatingPoint(EBallShader_FloatingPoint eFloatingPoint) {
+}
+//-------------------------------------------------------------------------------------------------
+//001E6990
+void CBallShader::SetCinematic(EBallShader_Cinematic eCinematic) {
+}
+//-------------------------------------------------------------------------------------------------
+//001E69A2
+void CBallShader::SetCinematicLighting(CFTTVector32 const& pVector32) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF61C
+ushort CBallShader::CreateMat() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 97 - 0
jni/CBallShader.h

@@ -0,0 +1,97 @@
+// CBallShader - [2020-04-13 11:57:46]
+#ifndef _CBALLSHADER_H_
+#define _CBALLSHADER_H_
+
+#include "common.h"
+#include "CFTTMatrix32.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF60C CBallShader::CBallShader()
+001CF618 CBallShader::~CBallShader()
+0017C56C CBallShader::SetShadowMap(EBallShader_ShadowMap)
+0017C57E CBallShader::SetShadowMapTex(CFTTTexParam)
+0017C5AC CBallShader::SetShadowMapProj01(CFTTMatrix32 const&)
+0017C5B8 CBallShader::SetShadowMapProj02(CFTTMatrix32 const&)
+0017C5C4 CBallShader::SetViewParams(float const*)
+0017C5D0 CBallShader::SetShadowMapSplit(float)
+0017C5E2 CBallShader::SetLightDir(CFTTVector32x4 const&)
+0017C5EE CBallShader::SetModel(EBallShader_Model)
+0017C600 CBallShader::SetSpecularLUT(CFTTTexParam)
+0017C614 CBallShader::SetDiffuseEnv(CFTTTexParam)
+0017C628 CBallShader::SetSpecularEnv(CFTTTexParam)
+0017C63C CBallShader::SetBRDFLUT(CFTTTexParam)
+0017C650 CBallShader::SetPBR(CFTTVector32x4 const&)
+0017C950 CBallShader::SetDiffuse(CFTTTexParam)
+0017C964 CBallShader::SetNormal(CFTTTexParam)
+0017C978 CBallShader::SetAmbient(CFTTTexParam)
+0017C98C CBallShader::SetFloatingPoint(EBallShader_FloatingPoint)
+001CF61C CBallShader::CreateMat()
+001E6990 CBallShader::SetCinematic(EBallShader_Cinematic)
+001E69A2 CBallShader::SetCinematicLighting(CFTTVector32 const&)
+*/
+
+enum EBallShader_ShadowMap {
+  EBallShader_ShadowMap_0,
+  EBallShader_ShadowMap_1,
+  EBallShader_ShadowMap_2,
+  EBallShader_ShadowMap_3,
+  EBallShader_ShadowMap_4,
+};
+
+enum EBallShader_Model {
+  EBallShader_Model_0,
+  EBallShader_Model_1,
+  EBallShader_Model_2,
+  EBallShader_Model_3,
+  EBallShader_Model_4,
+  EBallShader_Model_5,
+};
+
+enum EBallShader_FloatingPoint {
+  EBallShader_FloatingPoint_0,
+  EBallShader_FloatingPoint_1,
+  EBallShader_FloatingPoint_2,
+  EBallShader_FloatingPoint_3,
+  EBallShader_FloatingPoint_4,
+  EBallShader_FloatingPoint_5,
+};
+
+enum EBallShader_Cinematic {
+  EBallShader_Cinematic_0,
+  EBallShader_Cinematic_1,
+  EBallShader_Cinematic_2,
+  EBallShader_Cinematic_3,
+  EBallShader_Cinematic_4,
+  EBallShader_Cinematic_5,
+};
+
+class CBallShader : public CFTTUberShader {
+public:
+  CBallShader();                                     // 001CF60C
+  ~CBallShader();                                    // 001CF618
+  void SetShadowMap(EBallShader_ShadowMap);          // 0017C56C
+  void SetShadowMapTex(CFTTTexParam);                // 0017C57E
+  void SetShadowMapProj01(CFTTMatrix32 const&);      // 0017C5AC
+  void SetShadowMapProj02(CFTTMatrix32 const&);      // 0017C5B8
+  void SetViewParams(float const*);                  // 0017C5C4
+  void SetShadowMapSplit(float);                     // 0017C5D0
+  void SetLightDir(CFTTVector32x4 const&);           // 0017C5E2
+  void SetModel(EBallShader_Model);                  // 0017C5EE
+  void SetSpecularLUT(CFTTTexParam);                 // 0017C600
+  void SetDiffuseEnv(CFTTTexParam);                  // 0017C614
+  void SetSpecularEnv(CFTTTexParam);                 // 0017C628
+  void SetBRDFLUT(CFTTTexParam);                     // 0017C63C
+  void SetPBR(CFTTVector32x4 const&);                // 0017C650
+  void SetDiffuse(CFTTTexParam);                     // 0017C950
+  void SetNormal(CFTTTexParam);                      // 0017C964
+  void SetAmbient(CFTTTexParam);                     // 0017C978
+  void SetFloatingPoint(EBallShader_FloatingPoint);  // 0017C98C
+  ushort CreateMat();                                // 001CF61C
+  void SetCinematic(EBallShader_Cinematic);          // 001E6990
+  void SetCinematicLighting(CFTTVector32 const&);    // 001E69A2
+
+  static CBallShader s_tInstance;
+};
+
+#endif  //_CBALLSHADER_H_

+ 105 - 0
jni/CBlitter.cpp

@@ -0,0 +1,105 @@
+#include "CFTTGraphicsBufferOGLES.h"
+#include "CFTTTextureManager.h"
+#include "CFTTGraphicsDevice.h"
+#include "CFTTMaterialManager.h"
+#include "CFTTUberShader.h"
+#include "CBlitter.h"
+#include "FTT2D.h"
+#include "memctrl.h"
+
+/*
+这个类很奇怪,很多的类的成员变量,在实际使用时,每次都从内存重新加载,不使用优化的代码
+*/
+
+//-------------------------------------------------------------------------------------------------
+//0020CF2C //^_- 经过单元测试,功能正常
+CBlitter::CBlitter(int a1, int a2, int a3) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020CFE0 ^_^ 经过单元测试,功能正常
+CBlitter::~CBlitter() {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D004 //^_-  经过单元测试,功能正常
+void CBlitter::Clear() {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D05C //-_- 经过单元测试, 功能正常
+void CBlitter::Render() {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D2B8
+void CBlitter::OnFrameEnd() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//0020D2BC ^_- 不崩溃,图片显示异常
+void CBlitter::OnMaterialModified(CFTTUberShader *pUberShader, int a1) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D328
+void CBlitter::OnTextureDeletion(CFTTTexture *pTex) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D32A -_- 经过单元测试,功能正常
+CFTT2D_TexturedVert *CBlitter::AllocRect() {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0020D3B8 //^_^ 经过单元测试,功能正常
+bool CBlitter::CheckForDrawCallSwitch(int a1, int a2) {
+  return true;
+}
+//-------------------------------------------------------------------------------------------------
+//0020D45A
+CFTT2D_TexturedVert *CBlitter::AllocTri() {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0020D4DA //^_- 经过单元测试,功能正常
+void CBlitter::OnIBORequired() {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D518
+CFTT2D_TexturedVert *CBlitter::AllocLines(int a1) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0020D5AE -_- 经过单元测试,功能正常
+void CBlitter::AddVertList(CFTT2D_TexturedVert *pTexturedVert, int a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D668 //^_^ 经过单元测试,功能正常
+void CBlitter::SetTexture(CFTTTexture *pTexture) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D688 //^_^
+void CBlitter::SetPrimType(FTTPRIMTYPE e) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D68C //^_^
+void CBlitter::SetMatID(int dId) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D690 //^_^
+void CBlitter::SetScissor(int x, int y, int w, int h) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D69C //^_^
+void CBlitter::SetFlipY(bool b) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D6A0 //^_^
+void CBlitter::SetFlipX(bool b) {
+}
+//-------------------------------------------------------------------------------------------------
+//0020D6A4 //^_^
+bool CBlitter::GetFlipX() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0020D6A8 //^_^
+bool CBlitter::GetFlipY() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 96 - 0
jni/CBlitter.h

@@ -0,0 +1,96 @@
+// CBlitter - [2020-04-13 11:57:46]
+#ifndef _CBLITTER_H_
+#define _CBLITTER_H_
+
+#include "CFTTUberShader.h"
+#include "CFTTTexture.h"
+#include "CFTT2D_TexturedVert.h"
+#include "CFTTGraphicsBuffer.h"
+
+/*
+0020CF2C CBlitter::CBlitter(int,int,int)
+0020CFE0 CBlitter::~CBlitter()
+0020D004 CBlitter::Clear()
+0020D05C CBlitter::Render()
+0020D2B8 CBlitter::OnFrameEnd()
+0020D2BC CBlitter::OnMaterialModified(CFTTUberShader *,int)
+0020D328 CBlitter::OnTextureDeletion(CFTTTexture *)
+0020D32A CBlitter::AllocRect()
+0020D3B8 CBlitter::CheckForDrawCallSwitch(int,int)
+0020D45A CBlitter::AllocTri()
+0020D4DA CBlitter::OnIBORequired()
+0020D518 CBlitter::AllocLines(int)
+0020D5AE CBlitter::AddVertList(CFTT2D_TexturedVert *,int)
+0020D668 CBlitter::SetTexture(CFTTTexture *)
+0020D688 CBlitter::SetPrimType(FTTPRIMTYPE)
+0020D68C CBlitter::SetMatID(int)
+0020D690 CBlitter::SetScissor(int,int,int,int)
+0020D69C CBlitter::SetFlipY(bool)
+0020D6A0 CBlitter::SetFlipX(bool)
+0020D6A4 CBlitter::GetFlipX()
+0020D6A8 CBlitter::GetFlipY()
+
+0x50
+*/
+
+struct Material_0x20 {
+  int dMatID_0;
+  CFTTTexture *pTexture_4;
+  FTTPRIMTYPE ePrimType_8;
+  int x_C;  //裁剪区域
+  int y_10;
+  int width_14;
+  int height_18;
+  CFTTUberShaderSnapshot *pSnapshot_1C;
+};
+
+struct CBlitter_struct_2C {
+  Material_0x20 material_0;
+  int field_20;
+  uint32_t field_24;
+  uint32_t field_28;
+};
+
+class CBlitter {
+public:
+  CBlitter(int, int, int);                         // 0020CF2C
+  ~CBlitter();                                     // 0020CFE0
+  void Clear();                                    // 0020D004
+  void Render();                                   // 0020D05C
+  void OnFrameEnd();                               // 0020D2B8
+  void OnMaterialModified(CFTTUberShader *, int);  // 0020D2BC
+  void OnTextureDeletion(CFTTTexture *);           // 0020D328
+  CFTT2D_TexturedVert *AllocRect();                // 0020D32A
+  bool CheckForDrawCallSwitch(int, int);           // 0020D3B8
+  CFTT2D_TexturedVert *AllocTri();                 // 0020D45A
+  void OnIBORequired();                            // 0020D4DA
+  CFTT2D_TexturedVert *AllocLines(int);            // 0020D518
+  void AddVertList(CFTT2D_TexturedVert *, int);    // 0020D5AE
+  void SetTexture(CFTTTexture *pTexture);          // 0020D668
+  void SetPrimType(FTTPRIMTYPE e);                 // 0020D688
+  void SetMatID(int);                              // 0020D68C
+  void SetScissor(int x, int y, int w, int h);     // 0020D690
+  void SetFlipY(bool b);                           // 0020D69C
+  void SetFlipX(bool b);                           // 0020D6A0
+  bool GetFlipX();                                 // 0020D6A4
+  bool GetFlipY();                                 // 0020D6A8
+
+  bool bFlipX_0;
+  bool bFlipY_1;
+  bool bIBO_2;
+  bool unuse_3;  //没有用到,仅对齐
+  Material_0x20 material_4;
+  CBlitter_struct_2C *pT_24;
+  int dList24Count_28;
+  uint dCount_2C;
+  int field_30;
+  int field_34;
+  int dLineCount_38;
+  volatile int dint_3C;  //部分指令是取short, 但是总体上认为3C这个位置是一个int
+  CFTTGraphicsBuffer *pGrabuf_40;
+  CFTTGraphicsBuffer *pGrabuf_44;
+  ushort *pshort_48;  //没有找到分配的函数
+  CFTT2D_TexturedVert *pTextureVer_4C;
+};
+
+#endif  //_CBLITTER_H_

+ 36 - 0
jni/CBlurVShader.cpp

@@ -0,0 +1,36 @@
+#include "CBlurVShader.h"
+#include "shader_data/CBlurVShader_Setup.h"
+#include "CFTTMaterialManager.h"
+
+CBlurVShader CBlurVShader::s_tInstance;
+
+//-------------------------------------------------------------------------------------------------
+//001CF654 //^_^
+CBlurVShader::CBlurVShader() : CFTTUberShader(&CBlurVShaderSetup_323C8C) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF660 //^_^
+CBlurVShader::~CBlurVShader() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//0014A170 //^_^
+void CBlurVShader::SetBlurParams(CFTTVector32x4 const& pVector32x4, int a3) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014A17A //逻辑是一样,但是原始汇编跳过了R1参数,不知道,他是怎么做到的
+void CBlurVShader::SetTex01(CFTTTexParam aTexParam, int a5) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014A192 //^_^
+void CBlurVShader::SetMode(EBlurVShader_Mode eMode, int a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF664 //^_- 经过单元测试,功能正常
+ushort CBlurVShader::CreateMat(EBlurVShader_Mode eMode,
+                               CFTTVector32x4 const& pVector32x4,
+                               CFTTTexParam aTexParam,
+                               EBlurVShader_BlendMode eBlendMode) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 51 - 0
jni/CBlurVShader.h

@@ -0,0 +1,51 @@
+// CBlurVShader - [2020-04-13 11:57:46]
+#ifndef _CBLURVSHADER_H_
+#define _CBLURVSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF654 CBlurVShader::CBlurVShader()
+001CF660 CBlurVShader::~CBlurVShader()
+0014A170 CBlurVShader::SetBlurParams(CFTTVector32x4 const&,int)
+0014A17A CBlurVShader::SetTex01(CFTTTexParam,int)
+0014A192 CBlurVShader::SetMode(EBlurVShader_Mode,int)
+001CF664 CBlurVShader::CreateMat(EBlurVShader_Mode,CFTTVector32x4 const&,CFTTTexParam,EBlurVShader_BlendMode)
+*/
+
+enum EBlurVShader_Mode {
+  EBlurVShader_Mode_0,
+  EBlurVShader_Mode_1,
+  EBlurVShader_Mode_2,
+  EBlurVShader_Mode_3,
+  EBlurVShader_Mode_4,
+  EBlurVShader_Mode_5,
+};
+
+enum EBlurVShader_BlendMode {
+  EBlurVShader_BlendMode_0,
+  EBlurVShader_BlendMode_1,
+  EBlurVShader_BlendMode_2,
+  EBlurVShader_BlendMode_3,
+  EBlurVShader_BlendMode_4,
+  EBlurVShader_BlendMode_5,
+};
+
+class CBlurVShader : public CFTTUberShader {
+public:
+  CBlurVShader();   // 001CF654
+  ~CBlurVShader();  // 001CF660
+
+  void SetBlurParams(CFTTVector32x4 const&, int);  // 0014A170
+  void SetTex01(CFTTTexParam, int);                // 0014A17A
+  void SetMode(EBlurVShader_Mode, int);            // 0014A192
+  ushort CreateMat(EBlurVShader_Mode,
+                   CFTTVector32x4 const&,
+                   CFTTTexParam,
+                   EBlurVShader_BlendMode);  // 001CF664
+
+  static CBlurVShader s_tInstance;
+};
+
+#endif  //_CBLURVSHADER_H_

+ 15 - 0
jni/CCallbackCriticalSection.cpp

@@ -0,0 +1,15 @@
+#include "CCallbackCriticalSection.h"
+#include "CFTTAudio.h"
+#include "FTTThread.h"
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+
+//-------------------------------------------------------------------------------------------------
+//001FC388 //^_^
+CCallbackCriticalSection::CCallbackCriticalSection(bool* b1) {
+}
+//-------------------------------------------------------------------------------------------------
+//001FC3D4 //^_^
+CCallbackCriticalSection::~CCallbackCriticalSection() {
+}
+//-------------------------------------------------------------------------------------------------

+ 19 - 0
jni/CCallbackCriticalSection.h

@@ -0,0 +1,19 @@
+// CCallbackCriticalSection - [2020-04-13 11:57:46]
+#ifndef _CCALLBACKCRITICALSECTION_H_
+#define _CCALLBACKCRITICALSECTION_H_
+
+#include "common.h"
+
+/*
+001FC388 CCallbackCriticalSection::CCallbackCriticalSection(bool *)
+001FC3D4 CCallbackCriticalSection::~CCallbackCriticalSection()
+*/
+
+class CCallbackCriticalSection {
+public:
+  CCallbackCriticalSection(bool* b1);  // 001FC388
+  ~CCallbackCriticalSection();         // 001FC3D4
+  bool bool_0;
+};
+
+#endif  //_CCALLBACKCRITICALSECTION_H_

+ 44 - 0
jni/CCircle2dShader.cpp

@@ -0,0 +1,44 @@
+#include "CCircle2dShader.h"
+#include "shader_data/CCircle2dShader_Setup.h"
+#include "CFTTMaterialManager.h"
+
+CCircle2dShader CCircle2dShader::s_tInstance;
+
+//-------------------------------------------------------------------------------------------------
+//001CF6DC
+CCircle2dShader::CCircle2dShader() : CFTTUberShader(&CCircle2dShaderSetup_323DD4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF6E8
+CCircle2dShader::~CCircle2dShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//001BE5E8
+void CCircle2dShader::SetFlipY(float a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001BE5FA
+void CCircle2dShader::SetCentre(float const* a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001BE606
+void CCircle2dShader::SetInner(float a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001BE618
+void CCircle2dShader::SetOuter(float a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001BE62A
+void CCircle2dShader::SetAngleMin(float a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001BE63C
+void CCircle2dShader::SetAngleMax(float a1) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF6EC
+ushort CCircle2dShader::CreateMat() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 35 - 0
jni/CCircle2dShader.h

@@ -0,0 +1,35 @@
+// CCircle2dShader - [2020-04-13 11:57:46]
+#ifndef _CCIRCLE2DSHADER_H_
+#define _CCIRCLE2DSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF6DC CCircle2dShader::CCircle2dShader()
+001CF6E8 CCircle2dShader::~CCircle2dShader()
+001BE5E8 CCircle2dShader::SetFlipY(float)
+001BE5FA CCircle2dShader::SetCentre(float const*)
+001BE606 CCircle2dShader::SetInner(float)
+001BE618 CCircle2dShader::SetOuter(float)
+001BE62A CCircle2dShader::SetAngleMin(float)
+001BE63C CCircle2dShader::SetAngleMax(float)
+001CF6EC CCircle2dShader::CreateMat()
+*/
+
+class CCircle2dShader : public CFTTUberShader {
+public:
+  CCircle2dShader();             // 001CF6DC
+  ~CCircle2dShader();            // 001CF6E8
+  void SetFlipY(float);          // 001BE5E8
+  void SetCentre(float const*);  // 001BE5FA
+  void SetInner(float);          // 001BE606
+  void SetOuter(float);          // 001BE618
+  void SetAngleMin(float);       // 001BE62A
+  void SetAngleMax(float);       // 001BE63C
+  ushort CreateMat();            // 001CF6EC
+
+  static CCircle2dShader s_tInstance;
+};
+
+#endif  //_CCIRCLE2DSHADER_H_

+ 22 - 0
jni/CColourMulti2dShader.cpp

@@ -0,0 +1,22 @@
+#include "CColourMulti2dShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CColourMulti2dShader_Setup.h"
+
+//-------------------------------------------------------------------------------------------------
+//001CF724
+CColourMulti2dShader::CColourMulti2dShader() : CFTTUberShader(&CColourMulti2dShaderSetup_323F54) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF730
+CColourMulti2dShader::~CColourMulti2dShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//001C545E
+void CColourMulti2dShader::SetColour(CFTTVector32x4 const& pVector32x4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF734
+ushort CColourMulti2dShader::CreateMat(EColourMulti2dShader_Mode eMode) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 33 - 0
jni/CColourMulti2dShader.h

@@ -0,0 +1,33 @@
+// CColourMulti2dShader - [2020-04-13 11:57:46]
+#ifndef _CCOLOURMULTI2DSHADER_H_
+#define _CCOLOURMULTI2DSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF724 CColourMulti2dShader::CColourMulti2dShader()
+001CF730 CColourMulti2dShader::~CColourMulti2dShader()
+001C545E CColourMulti2dShader::SetColour(CFTTVector32x4 const&)
+001CF734 CColourMulti2dShader::CreateMat(EColourMulti2dShader_Mode)
+*/
+
+enum EColourMulti2dShader_Mode {
+  EColourMulti2dShader_Mode_0,
+  EColourMulti2dShader_Mode_1,
+  EColourMulti2dShader_Mode_2,
+  EColourMulti2dShader_Mode_3,
+  EColourMulti2dShader_Mode_4,
+  EColourMulti2dShader_Mode_5,
+};
+
+class CColourMulti2dShader : public CFTTUberShader {
+public:
+  CColourMulti2dShader();                       // 001CF724
+  ~CColourMulti2dShader();                      // 001CF730
+  void SetColour(CFTTVector32x4 const&);        // 001C545E
+  ushort CreateMat(EColourMulti2dShader_Mode);  // 001CF734
+  static CColourMulti2dShader s_tInstance;
+};
+
+#endif  //_CCOLOURMULTI2DSHADER_H_

+ 6 - 0
jni/CCompatibleRenderPassDescription.cpp

@@ -0,0 +1,6 @@
+#include "CCompatibleRenderPassDescription.h"
+
+bool CCompatibleRenderPassDescription::operator==(CCompatibleRenderPassDescription const& other) const{
+  bool bret = false;
+  return bret;
+}

+ 23 - 0
jni/CCompatibleRenderPassDescription.h

@@ -0,0 +1,23 @@
+// CCompatibleRenderPassDescription - [2020-04-13 11:57:46]
+#ifndef _CCOMPATIBLERENDERPASSDESCRIPTION_H_
+#define _CCOMPATIBLERENDERPASSDESCRIPTION_H_
+
+#include "common.h"
+
+/*
+00226618 CCompatibleRenderPassDescription::operator==(CCompatibleRenderPassDescription const&)
+*/
+
+class CCompatibleRenderPassDescription {
+public:
+  bool operator==(CCompatibleRenderPassDescription const& other) const;  // 00226618
+
+  int field_0;
+  int field_4;
+  uint8 field_8;
+  uint8 reserve_9;
+  uint8 reserve_A;
+  uint8 reserve_B;
+};
+
+#endif  //_CCOMPATIBLERENDERPASSDESCRIPTION_H_

+ 43 - 0
jni/CCrowdCardShader.cpp

@@ -0,0 +1,43 @@
+#include "CCrowdCardShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CCrowdCardShader_Setup.h"
+
+//-------------------------------------------------------------------------------------------------
+//001CF77C
+CCrowdCardShader::CCrowdCardShader() : CFTTUberShader(&CCrowdCardShaderSetup_324080) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF788
+CCrowdCardShader::~CCrowdCardShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//001A4070
+void CCrowdCardShader::SetDiffuse(CFTTTexParam aTexParam, int a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A4088
+void CCrowdCardShader::SetRotation(float a2, int a3) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A4098
+void CCrowdCardShader::SetUp(float a2, int a3) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A40A8
+void CCrowdCardShader::SetAlpha(float a2, int a3) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A40B8
+void CCrowdCardShader::SetLightDir(CFTTVector32 const& pVector32) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF78C
+ushort CCrowdCardShader::CreateMat(ECrowdCardShader_Axis eAxis,
+                                  CFTTVector32 const& pVector32,
+                                  float a4,
+                                  float a5,
+                                  float a6,
+                                  CFTTTexParam aTexParam) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 47 - 0
jni/CCrowdCardShader.h

@@ -0,0 +1,47 @@
+// CCrowdCardShader - [2020-04-13 11:57:46]
+#ifndef _CCROWDCARDSHADER_H_
+#define _CCROWDCARDSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF77C CCrowdCardShader::CCrowdCardShader()
+001CF788 CCrowdCardShader::~CCrowdCardShader()
+001A4070 CCrowdCardShader::SetDiffuse(CFTTTexParam,int)
+001A4088 CCrowdCardShader::SetRotation(float,int)
+001A4098 CCrowdCardShader::SetUp(float,int)
+001A40A8 CCrowdCardShader::SetAlpha(float,int)
+001A40B8 CCrowdCardShader::SetLightDir(CFTTVector32 const&)
+001CF78C CCrowdCardShader::CreateMat(ECrowdCardShader_Axis,CFTTVector32 const&,float,float,float,CFTTTexParam)
+*/
+
+enum ECrowdCardShader_Axis {
+  ECrowdCardShader_Axis_0,
+  ECrowdCardShader_Axis_1,
+  ECrowdCardShader_Axis_2,
+  ECrowdCardShader_Axis_3,
+  ECrowdCardShader_Axis_4,
+  ECrowdCardShader_Axis_5,
+};
+
+class CCrowdCardShader : public CFTTUberShader {
+public:
+  CCrowdCardShader();                     // 001CF77C
+  ~CCrowdCardShader();                    // 001CF788
+  void SetDiffuse(CFTTTexParam, int);     // 001A4070
+  void SetRotation(float, int);           // 001A4088
+  void SetUp(float, int);                 // 001A4098
+  void SetAlpha(float, int);              // 001A40A8
+  void SetLightDir(CFTTVector32 const&);  // 001A40B8
+  ushort CreateMat(ECrowdCardShader_Axis,
+                   CFTTVector32 const&,
+                   float,
+                   float,
+                   float,
+                   CFTTTexParam);  // 001CF78C
+
+  static CCrowdCardShader s_tInstance;
+};
+
+#endif  //_CCROWDCARDSHADER_H_

+ 26 - 0
jni/CCrowdFlagShader.cpp

@@ -0,0 +1,26 @@
+#include "CCrowdFlagShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CCrowdFlagShader_Setup.h"
+
+//-------------------------------------------------------------------------------------------------
+//001CF81C
+CCrowdFlagShader::CCrowdFlagShader() : CFTTUberShader(&CCrowdFlagShaderSetup_32421C) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF828
+CCrowdFlagShader::~CCrowdFlagShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//001A3770
+void CCrowdFlagShader::SetDiffuse(CFTTTexParam aTexParam, int a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A3788
+void CCrowdFlagShader::SetLightDir(CFTTVector32 const& pVector32) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF82C
+ushort CCrowdFlagShader::CreateMat(CFTTTexParam aTexParam) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 27 - 0
jni/CCrowdFlagShader.h

@@ -0,0 +1,27 @@
+// CCrowdFlagShader - [2020-04-13 11:57:46]
+#ifndef _CCROWDFLAGSHADER_H_
+#define _CCROWDFLAGSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF81C CCrowdFlagShader::CCrowdFlagShader()
+001CF828 CCrowdFlagShader::~CCrowdFlagShader()
+001A3770 CCrowdFlagShader::SetDiffuse(CFTTTexParam,int)
+001A3788 CCrowdFlagShader::SetLightDir(CFTTVector32 const&)
+001CF82C CCrowdFlagShader::CreateMat(CFTTTexParam)
+*/
+
+class CCrowdFlagShader : public CFTTUberShader {
+public:
+  CCrowdFlagShader();                               // 001CF81C
+  ~CCrowdFlagShader();                              // 001CF828
+  void SetDiffuse(CFTTTexParam aTexParam, int a2);  // 001A3770
+  void SetLightDir(CFTTVector32 const& pVector32);  // 001A3788
+  ushort CreateMat(CFTTTexParam aTexParam);         // 001CF82C
+
+  static CCrowdFlagShader s_tInstance;
+};
+
+#endif  //_CCROWDFLAGSHADER_H_

+ 37 - 0
jni/CCrowdNewShader.cpp

@@ -0,0 +1,37 @@
+#include "CCrowdNewShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CCrowdNewShader_Setup.h"
+
+//-------------------------------------------------------------------------------------------------
+//001CF874
+CCrowdNewShader::CCrowdNewShader() : CFTTUberShader(&CCrowdNewShaderSetup_324348) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF880
+CCrowdNewShader::~CCrowdNewShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//00197126
+void CCrowdNewShader::SetDiffuse(CFTTTexParam aTexParam, int a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A0DF0
+void CCrowdNewShader::SetUVOffsetH(CFTTVector32x4 const& pVector32x4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A0DFC
+void CCrowdNewShader::SetUVOffsetA(CFTTVector32x4 const& pVector32x4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001A0E08
+void CCrowdNewShader::SetYOffset(CFTTVector32x4 const& pVector32x4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF884
+ushort CCrowdNewShader::CreateMat(ECrowdNewShader_Quads eQuads,
+                                 ECrowdNewShader_Alphatest eAlphatest,
+                                 CFTTTexParam aTexParam,
+                                 ECrowdNewShader_CullMode eCullMode) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 62 - 0
jni/CCrowdNewShader.h

@@ -0,0 +1,62 @@
+// CCrowdNewShader - [2020-04-13 11:57:46]
+#ifndef _CCROWDNEWSHADER_H_
+#define _CCROWDNEWSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF874 CCrowdNewShader::CCrowdNewShader()
+001CF880 CCrowdNewShader::~CCrowdNewShader()
+00197126 CCrowdNewShader::SetDiffuse(CFTTTexParam,int)
+001A0DF0 CCrowdNewShader::SetUVOffsetH(CFTTVector32x4 const&)
+001A0DFC CCrowdNewShader::SetUVOffsetA(CFTTVector32x4 const&)
+001A0E08 CCrowdNewShader::SetYOffset(CFTTVector32x4 const&)
+001CF884 CCrowdNewShader::CreateMat(ECrowdNewShader_Quads,ECrowdNewShader_Alphatest,CFTTTexParam,ECrowdNewShader_CullMode)
+*/
+
+//-------------------------------------------------------------------------------------------------
+enum ECrowdNewShader_Quads {
+  ECrowdNewShader_Quads_0,
+  ECrowdNewShader_Quads_1,
+  ECrowdNewShader_Quads_2,
+  ECrowdNewShader_Quads_3,
+  ECrowdNewShader_Quads_4,
+  ECrowdNewShader_Quads_5,
+};
+//-------------------------------------------------------------------------------------------------
+enum ECrowdNewShader_Alphatest {
+  ECrowdNewShader_Alphatest_0,
+  ECrowdNewShader_Alphatest_1,
+  ECrowdNewShader_Alphatest_2,
+  ECrowdNewShader_Alphatest_3,
+  ECrowdNewShader_Alphatest_4,
+  ECrowdNewShader_Alphatest_5,
+};
+//-------------------------------------------------------------------------------------------------
+enum ECrowdNewShader_CullMode {
+  ECrowdNewShader_CullMode_0,
+  ECrowdNewShader_CullMode_1,
+  ECrowdNewShader_CullMode_2,
+  ECrowdNewShader_CullMode_3,
+  ECrowdNewShader_CullMode_4,
+  ECrowdNewShader_CullMode_5,
+};
+//-------------------------------------------------------------------------------------------------
+class CCrowdNewShader : public CFTTUberShader {
+public:
+  CCrowdNewShader();                                     // 001CF874
+  ~CCrowdNewShader();                                    // 001CF880
+  void SetDiffuse(CFTTTexParam aTexParam, int a2);       // 00197126
+  void SetUVOffsetH(CFTTVector32x4 const& pVector32x4);  // 001A0DF0
+  void SetUVOffsetA(CFTTVector32x4 const& pVector32x4);  // 001A0DFC
+  void SetYOffset(CFTTVector32x4 const& pVector32x4);    // 001A0E08
+  ushort CreateMat(ECrowdNewShader_Quads,
+                   ECrowdNewShader_Alphatest,
+                   CFTTTexParam,
+                   ECrowdNewShader_CullMode);  // 001CF884
+
+  static CCrowdNewShader s_tInstance;
+};
+//-------------------------------------------------------------------------------------------------
+#endif  //_CCROWDNEWSHADER_H_

+ 101 - 0
jni/CCurrency.cpp

@@ -0,0 +1,101 @@
+#include "CCurrency.h"
+#include "TStoryConfig.h"
+#include "CMyProfile.h"
+#include "CFE.h"
+#include "CFEEffects.h"
+#include "GFXRENDER.h"
+#include "XMATH.h"
+#include "SNDFE.h"
+#include "SYSCORE.h"
+
+int CCurrency::s_iCredits = -1;                  //00342E30
+float CCurrency::s_fAnimCredits = -1.0;          //00342E34
+int CCurrency::s_iPurchasedCredits;              //00477DF0
+int CCurrency::s_iSpentCredits;                  //00477DF4
+float CCurrency::s_fAnimCoinAdjust;              //00477DF8
+int CCurrency::s_iDuringMatchCredits;            //00477DFC
+int CCurrency::s_iEffectDelay;                   //00477E00
+int CCurrency::s_iEffectCredits;                 //00477E04
+bool CCurrency::s_bEffectAnimation;              //00477E08
+int64_t CCurrency::m_iAnimTick;                  //00477E10
+CInFlightCredits CCurrency::s_tInFlightCredits;  //00477E18
+
+//-------------------------------------------------------------------------------------------------
+//001CBBF4
+void CCurrency::Init() {
+  // empty
+}
+//-------------------------------------------------------------------------------------------------
+//001CBBF6
+void CCurrency::Shutdown() {
+  // empty
+}
+//-------------------------------------------------------------------------------------------------
+//001CBBF8 //^_^
+void CCurrency::SetDefaults() {
+}
+//-------------------------------------------------------------------------------------------------
+//001CBC3C //^_^
+void CCurrency::SetCredits(int a0) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CBC60 //^_^
+void CCurrency::ResetCreditsAnim() {
+}
+//-------------------------------------------------------------------------------------------------
+//001CBC84 //^_^
+void CCurrency::AddCredits(int a0, bool b1, int a2, bool b3, bool b4, bool b5) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CBD68 此函数会调用上报分析的功能,都不写,因此不一样
+void CCurrency::SubtractCredits(int a0, ETrigger eTrigger1, bool b2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CBE90 //^_^
+void CCurrency::AddSpentCredits(int a0) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CBEA4 //^_^
+int CCurrency::GetRenderCredits() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001CBEE4 //^_^
+void CCurrency::Process() {
+}
+//-------------------------------------------------------------------------------------------------
+//001CC020 //^_^
+void CCurrency::ResetDuringMatchCredits() {
+}
+//-------------------------------------------------------------------------------------------------
+//001CC030 //^_^
+void CCurrency::IncDuringMatchCredits(int a0) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CC044 //^_^
+int CCurrency::GetDuringMatchCredits() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001CC054  //^_^
+void CCurrency::SetInFlightCredits(float f0, float f1, float f2, int a3, float f4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CC084 //^_- 经过单元测试,功能正常
+int CCurrency::UpdateInFlightCredits(float f0, float f1, float f2) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001CC24C //^_^
+bool CCurrency::InFlightActive() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//001CC280 //^_^
+void CCurrency::RenderInFlightCredits() {
+}
+//-------------------------------------------------------------------------------------------------
+//001CC2AC 逻辑上是一致的,但是无法避免调用构造函数
+void CCurrency::RenderCredits(float f0, float f1, float f2, int a3, float f4) {
+}
+//-------------------------------------------------------------------------------------------------

+ 91 - 0
jni/CCurrency.h

@@ -0,0 +1,91 @@
+// CCurrency - [2020-04-13 11:57:46]
+#ifndef _CCURRENCY_H_
+#define _CCURRENCY_H_
+
+#include "common.h"
+#include "CInFlightCredits.h"
+/*
+001CBBF4 CCurrency::Init()
+001CBBF6 CCurrency::Shutdown()
+001CBBF8 CCurrency::SetDefaults()
+001CBC3C CCurrency::SetCredits(int)
+001CBC60 CCurrency::ResetCreditsAnim()
+001CBC84 CCurrency::AddCredits(int a1, bool b, int a3, bool b4 ,bool b5, bool b6)
+001CBD68 CCurrency::SubtractCredits(int a1,ETrigger e, bool b)
+001CBE90 CCurrency::AddSpentCredits(int a1)
+001CBEA4 CCurrency::GetRenderCredits()
+001CBEE4 CCurrency::Process()
+001CC020 CCurrency::ResetDuringMatchCredits()
+001CC030 CCurrency::IncDuringMatchCredits(int a1)
+001CC044 CCurrency::GetDuringMatchCredits()
+001CC054 CCurrency::SetInFlightCredits(float f1, float f2, float f3, int a4, float f5)
+001CC084 CCurrency::UpdateInFlightCredits(float f1, float f2, float f3)
+001CC24C CCurrency::InFlightActive()
+001CC280 CCurrency::RenderInFlightCredits()
+001CC2AC CCurrency::RenderCredits(float f1,float f2, float f3, int a4, float f5)
+*/
+
+enum ETrigger {
+  ETrigger_0,
+  ETrigger_1,
+  ETrigger_2,
+  ETrigger_3,
+  ETrigger_4,
+  ETrigger_5,
+  ETrigger_6,
+  ETrigger_7,
+};
+
+class CCurrency {
+public:
+  // 001CBBF4
+  static void Init();
+  // 001CBBF6
+  static void Shutdown();
+  // 001CBBF8
+  static void SetDefaults();
+  // 001CBC3C
+  static void SetCredits(int);
+  // 001CBC60
+  static void ResetCreditsAnim();
+  // 001CBC84
+  static void AddCredits(int a1, bool b, int a3, bool b4, bool b5, bool b6);
+  // 001CBD68
+  static void SubtractCredits(int a1, ETrigger e, bool b);
+  // 001CBE90
+  static void AddSpentCredits(int a1);
+  // 001CBEA4
+  static int GetRenderCredits();
+  // 001CBEE4
+  static void Process();
+  // 001CC020
+  static void ResetDuringMatchCredits();
+  // 001CC030
+  static void IncDuringMatchCredits(int a1);
+  // 001CC044
+  static int GetDuringMatchCredits();
+  // 001CC054
+  static void SetInFlightCredits(float f1, float f2, float f3, int a4, float f5);
+  // 001CC084
+  static int UpdateInFlightCredits(float f1, float f2, float f3);
+  // 001CC24C
+  static bool InFlightActive();
+  // 001CC280
+  static void RenderInFlightCredits();
+  // 001CC2AC
+  static void RenderCredits(float f1, float f2, float f3, int a4, float f5);
+
+  static int s_iCredits;                       // 00342E30
+  static float s_fAnimCredits;                 // 00342E34
+  static int s_iPurchasedCredits;              // 00477DF0
+  static int s_iSpentCredits;                  // 00477DF4
+  static float s_fAnimCoinAdjust;              // 00477DF8
+  static int s_iDuringMatchCredits;            // 00477DFC
+  static int s_iEffectDelay;                   // 00477E00
+  static int s_iEffectCredits;                 // 00477E04
+  static bool s_bEffectAnimation;              // 00477E08
+  static int64_t m_iAnimTick;                  // 00477E10
+  static CInFlightCredits s_tInFlightCredits;  // 00477E18
+};
+
+#endif  //_CCURRENCY_H_

+ 46 - 0
jni/CCustomTextEntry.cpp

@@ -0,0 +1,46 @@
+#include "CCustomTextEntry.h"
+#include "CFTTLangDatabase.h"
+#include "memctrl.h"
+
+//-------------------------------------------------------------------------------------------------
+//00221034
+CCustomTextEntry::CCustomTextEntry() {
+}
+//-------------------------------------------------------------------------------------------------
+//00221074
+CCustomTextEntry::CCustomTextEntry(CCustomTextEntry const &other) {
+}
+//-------------------------------------------------------------------------------------------------
+//002210E6  //^_^
+CCustomTextEntry::~CCustomTextEntry() {
+}
+//-------------------------------------------------------------------------------------------------
+//00220F68
+bool CCustomTextEntry::IsValid() {
+  return 1;
+}
+//-------------------------------------------------------------------------------------------------
+//00220F6C
+int CCustomTextEntry::GetTextID() {
+  return 1;
+}
+//-------------------------------------------------------------------------------------------------
+//00220F70
+wchar_t *CCustomTextEntry::GetString(ELangType e) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//00221022 //^_^
+CCustomTextEntry &CCustomTextEntry::operator=(CCustomTextEntry const &other) {
+  return *this;
+}
+//-------------------------------------------------------------------------------------------------
+//00221080
+void CCustomTextEntry::CopyMembers(CCustomTextEntry const &other) {
+}
+//-------------------------------------------------------------------------------------------------
+//00221122
+int CCustomTextEntry::SetTextEntry(CFTTLangDatabase *other, char const *pStr, ELangType eType) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 57 - 0
jni/CCustomTextEntry.h

@@ -0,0 +1,57 @@
+// CCustomTextEntry - [2020-04-13 11:57:46]
+#ifndef _CCUSTOMTEXTENTRY_H_
+#define _CCUSTOMTEXTENTRY_H_
+
+#include "common.h"
+
+/*
+00221034 CCustomTextEntry::CCustomTextEntry()
+00221074 CCustomTextEntry::CCustomTextEntry(CCustomTextEntry const&)
+002210E6 CCustomTextEntry::~CCustomTextEntry()
+00220F68 CCustomTextEntry::IsValid()
+00220F6C CCustomTextEntry::GetTextID()
+00220F70 CCustomTextEntry::GetString(ELangType)
+00221022 CCustomTextEntry::operator=(CCustomTextEntry const&)
+00221080 CCustomTextEntry::CopyMembers(CCustomTextEntry const&)
+00221122 CCustomTextEntry::SetTextEntry(CFTTLangDatabase *,char const*,ELangType)
+
+0xC
+*/
+
+class CFTTLangDatabase;
+
+enum ELangType {
+  ELangType_ERR = -1,
+  ELangType_0 = 0,
+  ELangType_1 = 1,
+  ELangType_2 = 2,
+  ELangType_3 = 3,
+  ELangType_4 = 4,
+  ELangType_5 = 5,
+  ELangType_6 = 6,
+};
+
+struct WStringArray {
+  wchar_t *list_0[14];
+};
+
+class CCustomTextEntry {
+public:
+  CCustomTextEntry();                                     // 00221034
+  CCustomTextEntry(CCustomTextEntry const &);             // 00221074
+  ~CCustomTextEntry();                                    // 002210E6
+  bool IsValid();                                         // 00220F68
+  int GetTextID();                                        // 00220F6C
+  wchar_t *GetString(ELangType);                          // 00220F70
+  CCustomTextEntry &operator=(CCustomTextEntry const &);  // 00221022
+  void CopyMembers(CCustomTextEntry const &);             // 00221080
+  int SetTextEntry(CFTTLangDatabase *other,
+                   char const *pStr,
+                   ELangType eType);  // 00221122
+
+  WStringArray *string_list_0;
+  int dTextId_4;
+  bool bValid_8;
+};
+
+#endif  //_CCUSTOMTEXTENTRY_H_

+ 12 - 0
jni/CCustomTextInfo.cpp

@@ -0,0 +1,12 @@
+#include "CCustomTextInfo.h"
+
+//-------------------------------------------------------------------------------------------------
+//001E3818
+void CCustomTextInfo::ReplaceString(wchar_t *, wchar_t const *, wchar_t const *) {
+}
+//-------------------------------------------------------------------------------------------------
+//001E3894
+void CCustomTextInfo::LoadInfo(CFTTXmlReaderNode *) {
+  LOGI("CCustomTextInfo::LoadInfo entry");
+}
+//-------------------------------------------------------------------------------------------------

+ 18 - 0
jni/CCustomTextInfo.h

@@ -0,0 +1,18 @@
+// CCustomTextInfo - [2020-04-13 11:57:46]
+#ifndef _CCUSTOMTEXTINFO_H_
+#define _CCUSTOMTEXTINFO_H_
+
+#include "CFTTXmlReaderNode.h"
+
+/*
+001E3818 CCustomTextInfo::ReplaceString(wchar_t *,wchar_t const*,wchar_t const*)
+001E3894 CCustomTextInfo::LoadInfo(CFTTXmlReaderNode *)
+*/
+
+class CCustomTextInfo {
+public:
+  void ReplaceString(wchar_t *, wchar_t const *, wchar_t const *);  // 001E3818
+  void LoadInfo(CFTTXmlReaderNode *);                               // 001E3894
+};
+
+#endif  //_CCUSTOMTEXTINFO_H_

+ 26 - 0
jni/CDOFCombineShader.cpp

@@ -0,0 +1,26 @@
+#include "CDOFCombineShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CDOFCombineShader_Setup.h"
+
+//-------------------------------------------------------------------------------------------------
+//001CF944
+CDOFCombineShader::CDOFCombineShader() : CFTTUberShader(&CDOFCombineShaderSetup_3245F4) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF950
+CDOFCombineShader::~CDOFCombineShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//0018A298
+void CDOFCombineShader::SetSmall(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//0018A2AC
+void CDOFCombineShader::SetLarge(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF954
+ushort CDOFCombineShader::CreateMat() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 27 - 0
jni/CDOFCombineShader.h

@@ -0,0 +1,27 @@
+// CDOFCombineShader - [2020-04-13 11:57:46]
+#ifndef _CDOFCOMBINESHADER_H_
+#define _CDOFCOMBINESHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF944 CDOFCombineShader::CDOFCombineShader()
+001CF950 CDOFCombineShader::~CDOFCombineShader()
+0018A298 CDOFCombineShader::SetSmall(CFTTTexParam)
+0018A2AC CDOFCombineShader::SetLarge(CFTTTexParam)
+001CF954 CDOFCombineShader::CreateMat()
+*/
+
+class CDOFCombineShader : public CFTTUberShader {
+public:
+  CDOFCombineShader();          // 001CF944
+  ~CDOFCombineShader();         // 001CF950
+  void SetSmall(CFTTTexParam);  // 0018A298
+  void SetLarge(CFTTTexParam);  // 0018A2AC
+  ushort CreateMat();           // 001CF954
+
+  static CDOFCombineShader s_tInstance;  // 0047B6C4
+};
+
+#endif  //_CDOFCOMBINESHADER_H_

+ 42 - 0
jni/CDOFShrinkShader.cpp

@@ -0,0 +1,42 @@
+#include "CDOFShrinkShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CDOFShrinkShader_Setup.h"
+
+//------------------------------------------------------------------------------------------------------------
+//001CF98C
+CDOFShrinkShader::CDOFShrinkShader() : CFTTUberShader(&CDOFShrinkShaderSetup_324720) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//001CF998
+CDOFShrinkShader::~CDOFShrinkShader() {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//0018A23C
+void CDOFShrinkShader::SetDepth(CFTTTexParam aTexParam) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//0018A250
+void CDOFShrinkShader::SetDepthTexMode(EDOFShrinkShader_DepthTexMode eMode) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//0018A262
+void CDOFShrinkShader::SetDOFRowDelta(float const* pf) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//0018A26E
+void CDOFShrinkShader::SetDOFEqWorld(float const* pf) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//0018A27A
+void CDOFShrinkShader::SetDepthParams(CFTTVector32x4 const& pVector32x4) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//0018A286
+void CDOFShrinkShader::SetNear(EDOFShrinkShader_Near eNear) {
+}
+//---------------------------------------------------------------------------------------------------------------------
+//001CF99C //^_^
+ushort CDOFShrinkShader::CreateMat() {
+  return 0;
+}
+//---------------------------------------------------------------------------------------------------------------------

+ 53 - 0
jni/CDOFShrinkShader.h

@@ -0,0 +1,53 @@
+// CDOFShrinkShader - [2020-04-13 11:57:46]
+#ifndef _CDOFSHRINKSHADER_H_
+#define _CDOFSHRINKSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF98C CDOFShrinkShader::CDOFShrinkShader()
+001CF998 CDOFShrinkShader::~CDOFShrinkShader()
+0018A23C CDOFShrinkShader::SetDepth(CFTTTexParam)
+0018A250 CDOFShrinkShader::SetDepthTexMode(EDOFShrinkShader_DepthTexMode)
+0018A262 CDOFShrinkShader::SetDOFRowDelta(float const*)
+0018A26E CDOFShrinkShader::SetDOFEqWorld(float const*)
+0018A27A CDOFShrinkShader::SetDepthParams(CFTTVector32x4 const&)
+0018A286 CDOFShrinkShader::SetNear(EDOFShrinkShader_Near)
+001CF99C CDOFShrinkShader::CreateMat()
+*/
+
+enum EDOFShrinkShader_Near {
+  EDOFShrinkShader_Near_0,
+  EDOFShrinkShader_Near_1,
+  EDOFShrinkShader_Near_2,
+  EDOFShrinkShader_Near_3,
+  EDOFShrinkShader_Near_4,
+  EDOFShrinkShader_Near_5,
+};
+
+enum EDOFShrinkShader_DepthTexMode {
+  EDOFShrinkShader_DepthTexMode_0,
+  EDOFShrinkShader_DepthTexMode_1,
+  EDOFShrinkShader_DepthTexMode_2,
+  EDOFShrinkShader_DepthTexMode_3,
+  EDOFShrinkShader_DepthTexMode_4,
+  EDOFShrinkShader_DepthTexMode_5,
+};
+
+class CDOFShrinkShader : public CFTTUberShader {
+public:
+  CDOFShrinkShader();                                         // 001CF98C
+  ~CDOFShrinkShader();                                        // 001CF998
+  void SetDepth(CFTTTexParam aTexParam);                      // 0018A23C
+  void SetDepthTexMode(EDOFShrinkShader_DepthTexMode eMode);  // 0018A250
+  void SetDOFRowDelta(float const*);                          // 0018A262
+  void SetDOFEqWorld(float const*);                           // 0018A26E
+  void SetDepthParams(CFTTVector32x4 const&);                 // 0018A27A
+  void SetNear(EDOFShrinkShader_Near);                        // 0018A286
+  ushort CreateMat();                                         // 001CF99C
+
+  static CDOFShrinkShader s_tInstance;  // 0047B6F0
+};
+
+#endif  //_CDOFSHRINKSHADER_H_

+ 180 - 0
jni/CDataBase.cpp

@@ -0,0 +1,180 @@
+#include "CDataBase.h"
+#include "CFTTFileSystem.h"
+#include "FE_Language.h"
+#include "LOCstring.h"
+#include "XSYS.h"
+#include "CMyProfile.h"
+#include "memctrl.h"
+
+CDataBase *CDataBase::ms_pInstance = nullptr;
+
+//-------------------------------------------------------------------------------------------------
+//0011AB70 //^_^
+CDataBase::CDataBase() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011AB78 //^_^
+CDataBase::~CDataBase() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011AB48 //^_^ 经过单元测试,功能正常 static
+CDataBase *CDataBase::GetInstance() {
+  return ms_pInstance;
+}
+//-------------------------------------------------------------------------------------------------
+//0011AB84 //^_^
+void CDataBase::FreeTeams() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011AB98 static //^_^ 经过单元测试,功能正常
+void CDataBase::CalculateTiers() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011AC70 -_- 经过单元测试,功能正常
+ushort *CDataBase::GetSortedRatingListForLeague(int *a1, int a2, int a3, int a4, int &a5) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0011AEA4 static //^_- 经过单元测试,功能正常
+TTeamInfo *CDataBase::GetTeamInfo(int index) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0011AF04 //^_^ 经过单元测试,功能正常
+void CDataBase::LoadTeams() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011AFE0 //^_^
+void CDataBase::Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011B00C //^_^
+void CDataBase::Shutdown() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011B030 static
+TTeamInfo *CDataBase::GetTeam(int index) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B048 static
+int CDataBase::GetTeamIndex(int index) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B078 static
+int CDataBase::GetTeamCount() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B088
+int CDataBase::GetTeamCount(ELeague e) {
+  int dret = 0;
+
+  return dret;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B0BC static
+int CDataBase::GetTeamCount(int d) {
+  int dret = 0;
+
+  return dret;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B0F8 static
+bool CDataBase::IsLeagueInternational(ELeague e, int a) {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B116 static
+bool CDataBase::IsTeamInternational(int a) {
+  //loc_11B13C
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B140 static
+ELeague CDataBase::GetLeagueForTeamID(int a) {
+  return ELeague_0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B150
+wchar_t *CDataBase::GetSortedAlphabeticalListForLeague(int r0, int &r1, int *r2, int r3, int arg_0, int arg_4, bool arg_8) {
+  wchar_t *tmp;
+  return tmp;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B37C
+wchar_t *CDataBase::GetTeamName(int a, ETeamNameType e) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+struct struc_286 {
+  short dindex_0;
+  wchar_t wName_2[32];
+};
+//-------------------------------------------------------------------------------------------------
+int sub_11B4B0(const void *a, const void *b) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B408
+ushort *CDataBase::GetSortedAlphabeticalListForGivenTeams(int *list, int count) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B4B8
+ushort *CDataBase::GetSortedRatingListForTier(int a1, int a2, int a3, int &list, bool a5) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B6E8
+void CDataBase::GetCompetitionName(wchar_t *pbuf, int len, ELeague e, int ar3) {
+  //xsnprintf(pbuf, len, pFormat, pTmp);
+}
+//-------------------------------------------------------------------------------------------------
+//0011B7EC
+void CDataBase::GetCountryName(wchar_t *pbuf, int len, ELeague e) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011B838 //^_^
+int CDataBase::GetDefaultTeam(int d) {
+  uint dr1 = d - 9;
+  int dr0 = 12;
+  if (dr1 < 5)
+    dr0 = 212;
+  return dr0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B848 static
+int CDataBase::GetTeamIDFromLeagueWithTier(ELeague e, int a2, int *list, int count) {
+  int dret = 0;
+
+  return dret;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B92C //^_^
+int CDataBase::GetXBestTeamInLeague(ELeague e, int a1, int a2, int a3) {
+  //void CDataBase::GetSortedRatingListForLeague(int *, int, int, int, int &)
+  int dret = 0;
+
+  return dret;
+}
+//-------------------------------------------------------------------------------------------------
+//0011B952 //^_^
+int CDataBase::GetXBestTeamInTier(int a1, int a2, int a3, int a4) {
+  //void CDataBase::GetSortedRatingListForTier(int, int, int, int &, bool) {
+  int dr4 = 0;
+
+  //loc_11B972
+  return dr4;
+}
+//-------------------------------------------------------------------------------------------------
+
+/*
+9, 0xcb807fe0 in ?? ()  0011AFE0 CDataBase::Init()
+3, 0xcb807b48 in ?? ()  0011AB48 CDataBase::GetInstance()
+8, 0xcb807f04 in ?? ()  0011AF04 CDataBase::LoadTeams()
+5, 0xcb807b98 in ?? ()  0011AB98 CDataBase::CalculateTiers()
+6, 0xcb807c70 in ?? ()  0011AC70 CDataBase::GetSortedRatingListForLeague(int *,int,int,int,int &)
+7, 0xcb807ea4 in ?? ()  0011AEA4 CDataBase::GetTeamInfo(int)
+*/

+ 192 - 0
jni/CDataBase.h

@@ -0,0 +1,192 @@
+// CDataBase - [2020-04-13 11:57:46]
+#ifndef _CDATABASE_H_
+#define _CDATABASE_H_
+
+#include "TPlayerInfoLight.h"
+
+/*
+0011AB70 CDataBase::CDataBase()
+0011AB78 CDataBase::~CDataBase()
+0011AB48 CDataBase::GetInstance()
+0011AB84 CDataBase::FreeTeams()
+0011AB98 CDataBase::CalculateTiers()
+0011AC70 CDataBase::GetSortedRatingListForLeague(int *,int,int,int,int &)
+0011AEA4 CDataBase::GetTeamInfo(int)
+0011AF04 CDataBase::LoadTeams()
+0011AFE0 CDataBase::Init()
+0011B00C CDataBase::Shutdown()
+0011B030 CDataBase::GetTeam(int)
+0011B048 CDataBase::GetTeamIndex(int)
+0011B078 CDataBase::GetTeamCount()
+0011B088 CDataBase::GetTeamCount(ELeague)
+0011B0BC CDataBase::GetTeamCount(int)
+0011B0F8 CDataBase::IsLeagueInternational(ELeague,int)
+0011B116 CDataBase::IsTeamInternational(int)
+0011B140 CDataBase::GetLeagueForTeamID(int)
+0011B150 CDataBase::GetSortedAlphabeticalListForLeague(int,int &,int *,int,int,int,bool)
+0011B37C CDataBase::GetTeamName(int,ETeamNameType)
+0011B408 CDataBase::GetSortedAlphabeticalListForGivenTeams(int *,int)
+0011B4B8 CDataBase::GetSortedRatingListForTier(int,int,int,int &,bool)
+0011B6E8 CDataBase::GetCompetitionName(wchar_t *,int,ELeague,int)
+0011B7EC CDataBase::GetCountryName(wchar_t *,int,ELeague)
+0011B838 CDataBase::GetDefaultTeam(int)
+0011B848 CDataBase::GetTeamIDFromLeagueWithTier(int,int,int *,int)
+0011B92C CDataBase::GetXBestTeamInLeague(ELeague,int,int,int)
+0011B952 CDataBase::GetXBestTeamInTier(int,int,int,int)
+*/
+
+struct TTeamInfo_Struct_28 {
+  char field_0[0x28];
+};
+
+//-------------------------------------------------------------------------------------------------
+enum ELeague {
+  ELeague_neg1 = -1,
+  ELeague_0 = 0,
+  ELeague_1,
+  ELeague_2,
+  ELeague_3,
+  ELeague_4,
+  ELeague_5,
+  ELeague_6,
+  ELeague_7,
+  ELeague_8,
+  ELeague_9,
+  ELeague_10,
+  ELeague_11,
+  ELeague_12,
+  ELeague_13,
+  ELeague_14,
+};
+//-------------------------------------------------------------------------------------------------
+enum ETeamNameType {
+  ETeamNameType_0,
+  ETeamNameType_1,
+  ETeamNameType_2,
+  ETeamNameType_3,
+  ETeamNameType_4,
+  ETeamNameType_5,
+};
+//-------------------------------------------------------------------------------------------------
+// TTeamInfo 结构体长度 0x11E0
+struct TTeamInfo {
+  int index_0;
+  ELeague dLeagueId_4;
+  TTeamInfo_Struct_28 field_8[2];
+  TTeamInfo_Struct_28 field_58[2];
+  int field_A8[2];
+  int field_B0[2];
+  int field_B8[2];
+  int field_C0[2];
+  int field_C8;
+  uchar field_CC[0xFDC];
+  TPlayerInfoLight ptplayerInfoLight_10A8[0x10];
+  TPlayerInfoLight tplayerInfoLight_11C8;
+  uchar field_11DA;
+  uchar field_11DB;
+  int field_11DC;
+};
+//-------------------------------------------------------------------------------------------------
+// 0x11DC
+struct TTeamInfoFileNode {
+  uchar tmp[0x11DC];
+};
+//-------------------------------------------------------------------------------------------------
+class CDataBase {
+public:
+  // 0011AB70
+  CDataBase();
+
+  // 0011AB78
+  ~CDataBase();
+
+  // 0011AB48
+  static CDataBase *GetInstance();
+
+  // 0011AB84
+  void FreeTeams();
+
+  // 0011AB98
+  static void CalculateTiers();
+
+  // 0011AC70
+  static ushort *GetSortedRatingListForLeague(int *a1, int a2, int a3, int a4, int &a5);
+
+  // 0011AEA4
+  static TTeamInfo *GetTeamInfo(int);
+
+  // 0011AF04
+  void LoadTeams();
+
+  // 0011AFE0
+  static void Init();
+
+  // 0011B00C
+  static void Shutdown();
+
+  // 0011B030
+  static TTeamInfo *GetTeam(int index);
+
+  // 0011B048
+  static int GetTeamIndex(int index);
+
+  // 0011B078
+  static int GetTeamCount();
+
+  // 0011B088
+  static int GetTeamCount(ELeague e);
+
+  // 0011B0BC
+  static int GetTeamCount(int d);
+
+  // 0011B0F8
+  static bool IsLeagueInternational(ELeague e, int a);
+
+  // 0011B116
+  static bool IsTeamInternational(int a);
+
+  // 0011B140
+  static ELeague GetLeagueForTeamID(int a);
+
+  // 0011B150
+  static wchar_t *GetSortedAlphabeticalListForLeague(int, int &, int *, int, int, int, bool);
+
+  // 0011B37C
+  static wchar_t *GetTeamName(int a, ETeamNameType e);
+
+  // 0011B408
+  static ushort *GetSortedAlphabeticalListForGivenTeams(int *, int);
+
+  // 0011B4B8
+  static ushort *GetSortedRatingListForTier(int a1, int a2, int a3, int &list, bool a5);
+
+  // 0011B6E8
+  static void GetCompetitionName(wchar_t *pbuf, int len, ELeague e, int ar3);
+
+  // 0011B7EC
+  static void GetCountryName(wchar_t *, int, ELeague);
+
+  // 0011B838
+  static int GetDefaultTeam(int);
+
+  // 0011B848
+  static int GetTeamIDFromLeagueWithTier(ELeague e, int a2, int *list, int count);
+
+  // 0011B92C
+  static int GetXBestTeamInLeague(ELeague, int, int, int);
+
+  // 0011B952
+  static int GetXBestTeamInTier(int, int, int, int);
+
+  bool bInit_0;
+  // int field_1;
+  // int field_2;
+  // int field_3;
+  TTeamInfo *pTteamInfo_4;
+  int dTeamCount_8;
+  wchar_t pbuf_C[32];
+
+  static CDataBase *ms_pInstance;
+};
+//-------------------------------------------------------------------------------------------------
+#endif  //_CDATABASE_H_

+ 8 - 0
jni/CDatabaseEntry.cpp

@@ -0,0 +1,8 @@
+#include "CDatabaseEntry.h"
+
+//0026AC34 //^_^
+int CDatabaseEntry::SortCB(void const* pr0, void const* pr1) {
+  int dret = 0;
+
+  return dret;
+}

+ 16 - 0
jni/CDatabaseEntry.h

@@ -0,0 +1,16 @@
+// CDatabaseEntry - [2020-04-13 11:57:46]
+#ifndef _CDATABASEENTRY_H_
+#define _CDATABASEENTRY_H_
+
+#include "common.h"
+
+/*
+0026AC34 CDatabaseEntry::SortCB(void const*,void const*)
+*/
+
+class CDatabaseEntry {
+public:
+  static int SortCB(void const*, void const*);  // 0026AC34
+};
+
+#endif  //_CDATABASEENTRY_H_

+ 19 - 0
jni/CDebugDepthShader.cpp

@@ -0,0 +1,19 @@
+#include "CDebugDepthShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CDebugDepthShader_Setup.h"
+
+//-------------------------------------------------------------------------------------------------
+//001CF8FC //^_^
+CDebugDepthShader::CDebugDepthShader() : CFTTUberShader(&CDebugDepthShaderSetup_3244C8) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF908 //^_^
+CDebugDepthShader::~CDebugDepthShader() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//001CF90C //^_^
+ushort CDebugDepthShader::CreateMat() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 23 - 0
jni/CDebugDepthShader.h

@@ -0,0 +1,23 @@
+// CDebugDepthShader - [2020 - 04 - 13 11:57:46]
+#ifndef _CDEBUGDEPTHSHADER_H_
+#define _CDEBUGDEPTHSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF8FC CDebugDepthShader::CDebugDepthShader()
+001CF908 CDebugDepthShader::~CDebugDepthShader()
+001CF90C CDebugDepthShader::CreateMat()
+*/
+
+class CDebugDepthShader : public CFTTUberShader {
+public:
+  CDebugDepthShader();   // 001CF8FC
+  ~CDebugDepthShader();  // 001CF908
+  ushort CreateMat();    // 001CF90C
+
+  static CDebugDepthShader s_tInstance;  // 0047B698
+};
+
+#endif  //_CDEBUGDEPTHSHADER_H_

+ 11 - 0
jni/CDeviceReimbursement.cpp

@@ -0,0 +1,11 @@
+#include "CDeviceReimbursement.h"
+
+//-------------------------------------------------------------------------------------------------
+//001F1EF0
+void CDeviceReimbursement::CheckReimbursement() {
+}
+//-------------------------------------------------------------------------------------------------
+//001F1F30
+void CDeviceReimbursement::ReimbursementSuccess(TStoryReimburse *) {
+}
+//-------------------------------------------------------------------------------------------------

+ 27 - 0
jni/CDeviceReimbursement.h

@@ -0,0 +1,27 @@
+// CDeviceReimbursement - [2020-04-13 11:57:46]
+#ifndef _CDEVICEREIMBURSEMENT_H_
+#define _CDEVICEREIMBURSEMENT_H_
+
+#include "common.h"
+
+/*
+001F1EF0 CDeviceReimbursement::CheckReimbursement()
+001F1F30 CDeviceReimbursement::ReimbursementSuccess(TStoryReimburse *)
+*/
+
+// sizeof = 0x8C
+struct TStoryReimburse {
+  // int field_0;
+  wchar_t pwsz_0[0x40];
+  int i_80;
+  int i_84;
+  int i_88;
+};
+
+class CDeviceReimbursement {
+public:
+  void CheckReimbursement();                     // 001F1EF0
+  void ReimbursementSuccess(TStoryReimburse *);  // 001F1F30
+};
+
+#endif  //_CDEVICEREIMBURSEMENT_H_

+ 58 - 0
jni/CDownloads.h

@@ -0,0 +1,58 @@
+// 8:51 2022-02-24
+#include "CFTTFile.h"
+// sizeof = unknown
+struct TScoreDownloadType {
+};
+
+enum ElmageType {
+  ElmageType_0 = 0,
+  ElmageType_1,
+  ElmageType_2,
+  ElmageType_3,
+  ElmageType_4,
+  ElmageType_5
+
+};
+
+class CDownloads {
+public:
+  CDownloads(void);       // 0011CB24
+  virtual ~CDownloads();  // 0011CB40
+
+  static void AddDownload(char const *, TScoreDownloadType, char const *, bool, bool);  // 0011CCCO
+  static void AttemptConfigDownload(bool);                                              // 0011DAD4
+  static void CheckConfigDownloads(bool *);                                             // 0011DA74
+  static void CheckFileVersions(void);                                                  // 0011DA28
+  static void ChecklmageFile(char const *, ElmageType);                                 // 0011D944
+  static void ClearDownloadList(void);                                                  // 0011CB5C
+  static void DeleteUpdateFiles(void);                                                  // 0011DB4C
+  static void ExtractSeasonStages(char const *);                                        // 0011D6D8
+  static void Init(void);                                                               // 0011CBB4
+  static void lsCurrentDownload(char const *);                                          // 0011CBFC
+  static void IsDownloadComplete(TScoreDownloadType);                                   // 0011D19C
+  static void lsDownloadInProgress(void);                                               // 0011D154
+  static void IsFileQueued(char const *);                                               // 0011D0EC
+  static bool IsInDownloadList(char const *, bool);                                     // 0011CC30
+  static void PrioritiseDownload(char const *);                                         // 0011D040
+  static void Process(void);                                                            // 0011D170
+  static void RequestStageDownload(int);                                                // 0011D9B8
+  static void ShutDown(void);                                                           // 0011CBEO
+  static void StartNextDownload(void);                                                  // 0011CE94
+  static void StoreConnectionState(void);                                               // 0011D150
+  static void UncompressWithFile(CFTTFile *, char *, uint, char *);                     // 0011D5B0
+  static void UncompressWithFilename(char *, char *, uint);                             // 0011D55C
+  static void UpdateVersionNumber(TScoreDownloadType, char);                            // 0011D838
+  static bool IsCurrentDownload(char const *);                                          // 0011CBFC
+  static int ms_bDownloadInProgress;                                                    // 0034A5F0
+  static int ms_blnitialised;                                                           // 0034A5E0
+  static int ms_iDownloadCount;                                                         // 0034A5EC
+  static int ms_iListSize;                                                              // 0034A5E8
+  static int ms_pFilesToDownload;                                                       // 0034A5E4
+  static int ms_pHttpDownload;                                                          // 0034A89C
+  static int ms_sFilename;                                                              // 0034A5F1
+  static int ms_sSaveAs;                                                                // 0034A7F1
+  static int ms_tDownloadMutex;                                                         // 0034A878
+  static int ms_tType;                                                                  // 0034A874
+  static int s_iConfigDownloadAttemptedTick;                                            // 0034A8A0
+  static int s_iConfigDownloadSuccessTick;                                              // 0034A8A4
+};

+ 35 - 0
jni/CDressingRoomShader.cpp

@@ -0,0 +1,35 @@
+#include "CDressingRoomShader.h"
+#include "CFTTMaterialManager.h"
+#include "shader_data/CDressingRoomShader_Setup.h"
+
+CDressingRoomShader CDressingRoomShader::s_tInstance;
+
+//-------------------------------------------------------------------------------------------------
+//001CF9D4
+CDressingRoomShader::CDressingRoomShader() : CFTTUberShader(&CDressingRoomShaderSetup_3248D8) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF9E0
+CDressingRoomShader::~CDressingRoomShader() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FD90
+void CDressingRoomShader::SetLightPos(CFTTVector32 const& pVector32) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FD9C
+void CDressingRoomShader::SetLightSpecular(CFTTVector32 const& pVector32) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FDA8
+void CDressingRoomShader::SetReflectionMap(CFTTTexParam aTexParam) {
+}
+//-------------------------------------------------------------------------------------------------
+//001CF9E4
+ushort CDressingRoomShader::CreateMat(EDressingRoomShader_Mode eMode,
+                                     CFTTTexParam aTex1,
+                                     CFTTTexParam aTex2,
+                                     CFTTTexParam aTex3) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------

+ 41 - 0
jni/CDressingRoomShader.h

@@ -0,0 +1,41 @@
+// CDressingRoomShader - [2020-04-13 11:57:46]
+#ifndef _CDRESSINGROOMSHADER_H_
+#define _CDRESSINGROOMSHADER_H_
+
+#include "common.h"
+#include "CFTTUberShader.h"
+
+/*
+001CF9D4 CDressingRoomShader::CDressingRoomShader()
+001CF9E0 CDressingRoomShader::~CDressingRoomShader()
+0011FD90 CDressingRoomShader::SetLightPos(CFTTVector32 const&)
+0011FD9C CDressingRoomShader::SetLightSpecular(CFTTVector32 const&)
+0011FDA8 CDressingRoomShader::SetReflectionMap(CFTTTexParam)
+001CF9E4 CDressingRoomShader::CreateMat(EDressingRoomShader_Mode,CFTTTexParam,CFTTTexParam,CFTTTexParam)
+*/
+
+enum EDressingRoomShader_Mode {
+  EDressingRoomShader_Mode_0,
+  EDressingRoomShader_Mode_1,
+  EDressingRoomShader_Mode_2,
+  EDressingRoomShader_Mode_3,
+  EDressingRoomShader_Mode_4,
+  EDressingRoomShader_Mode_5,
+};
+
+class CDressingRoomShader : public CFTTUberShader {
+public:
+  CDressingRoomShader();                       // 001CF9D4
+  ~CDressingRoomShader();                      // 001CF9E0
+  void SetLightPos(CFTTVector32 const&);       // 0011FD90
+  void SetLightSpecular(CFTTVector32 const&);  // 0011FD9C
+  void SetReflectionMap(CFTTTexParam);         // 0011FDA8
+  ushort CreateMat(EDressingRoomShader_Mode eMode,
+                   CFTTTexParam aTex1,
+                   CFTTTexParam aTex2,
+                   CFTTTexParam aTex3);  // 001CF9E4
+
+  static CDressingRoomShader s_tInstance;
+};
+
+#endif  //_CDRESSINGROOMSHADER_H_

+ 1 - 0
jni/CDynamicAABBTree.cpp

@@ -0,0 +1 @@
+#include "CDynamicAABBTree.h"

+ 33 - 0
jni/CDynamicAABBTree.h

@@ -0,0 +1,33 @@
+// CDynamicAABBTree - [2020-04-13 11:57:46]
+#ifndef _CDYNAMICAABBTREE_H_
+#define _CDYNAMICAABBTREE_H_
+
+#include "common.h"
+
+/*
+00198C88 CDynamicAABBTree<uint>::CDynamicAABBTree(uint,float)
+00198CFE CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::CDynamicAABBTree(uint,float)
+00198E3A CDynamicAABBTree<uint>::Query(TAABB const&)
+00198E94 CDynamicAABBTree<uint>::Insert(TAABB,uint)
+0019918C CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::Query(TAABB const&)
+00199294 CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::Remove(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *)
+0019933C CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::Insert(TAABB,FTTList<TEdgeGroup>::Iterator)
+001A4ECC CDynamicAABBTree<uint>::Query(TDynamicAABBNode<uint> *,TAABB const&,FTTVector<FTTPair<uint,TDynamicAABBNode<uint> *>> &)
+001A510A CDynamicAABBTree<uint>::Balance(TDynamicAABBNode<uint> *)
+001A519E CDynamicAABBTree<uint>::RotateLeft(TDynamicAABBNode<uint> *)
+001A522C CDynamicAABBTree<uint>::RotateRightLeft(TDynamicAABBNode<uint> *)
+001A5318 CDynamicAABBTree<uint>::RotateRight(TDynamicAABBNode<uint> *)
+001A53A8 CDynamicAABBTree<uint>::RotateLeftRight(TDynamicAABBNode<uint> *)
+001A549C CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::Query(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *,TAABB const&,FTTVector<FTTPair<FTTList<TEdgeGroup>::Iterator,TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *>> &)
+001A5624 CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::Balance(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *)
+001A56CA CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::RotateLeft(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *)
+001A576C CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::RotateRightLeft(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *)
+001A5874 CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::RotateRight(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *)
+001A5914 CDynamicAABBTree<FTTList<TEdgeGroup>::Iterator>::RotateLeftRight(TDynamicAABBNode<FTTList<TEdgeGroup>::Iterator> *)
+*/
+
+class CDynamicAABBTree {
+public:
+};
+
+#endif  //_CDYNAMICAABBTREE_H_

+ 92 - 0
jni/CEasing.cpp

@@ -0,0 +1,92 @@
+#include "CEasing.h"
+
+//-------------------------------------------------------------------------------------------------
+//0014BAF4
+void CEasing::MoveInFromTop(TRect, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BB2C
+void CEasing::Ease(float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BB3E
+void CEasing::MoveFromPoint(TRect, float, float, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BB9C
+void CEasing::InterpolateRect(TRect, float, float, float, TRect, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BC08
+void CEasing::InterpolateFloat(float, float, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BC3C
+void CEasing::ExpandFromMiddle(TRect, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BC94
+void CEasing::ExpandFromTop(TRect, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BCBE
+void CEasing::ExpandFromLeft(TRect, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BCEA
+void CEasing::ExpandFromRight(TRect, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BD28
+void CEasing::ContractToMiddle(TRect, float, float, float, float, EasingFunc) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014BD92
+float CEasing::GetProgressPercent(float, float, float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BDB8
+float CEasing::Ease(float, EasingFunc) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BDE8
+float CEasing::QuadOut(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BE0A
+float CEasing::QuadIn(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BE20
+float CEasing::QuadInOut(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BE6E
+float CEasing::CubicOut(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BE94
+float CEasing::CubicIn(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BEAE
+float CEasing::CubicInOut(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BF00
+float CEasing::ElasticOut(float) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0014BF54
+void CEasing::CubicOut(float, float, float) {
+}
+//-------------------------------------------------------------------------------------------------

+ 59 - 0
jni/CEasing.h

@@ -0,0 +1,59 @@
+// CEasing - [2020-04-13 11:57:46]
+#ifndef _CEASING_H_
+#define _CEASING_H_
+
+#include "common.h"
+#include "XMATH.h"
+
+/*
+0014BAF4  CEasing::MoveInFromTop(TRect,float,float,float,EasingFunc)
+0014BB2C  CEasing::Ease(float,float,float,EasingFunc)
+0014BB3E  CEasing::MoveFromPoint(TRect,float,float,float,float,float,EasingFunc)
+0014BB9C  CEasing::InterpolateRect(TRect,float,float,float,TRect,EasingFunc)
+0014BC08  CEasing::InterpolateFloat(float,float,float,float,float,EasingFunc)
+0014BC3C  CEasing::ExpandFromMiddle(TRect,float,float,float,EasingFunc)
+0014BC94  CEasing::ExpandFromTop(TRect,float,float,float,EasingFunc)
+0014BCBE  CEasing::ExpandFromLeft(TRect,float,float,float,EasingFunc)
+0014BCEA  CEasing::ExpandFromRight(TRect,float,float,float,EasingFunc)
+0014BD28  CEasing::ContractToMiddle(TRect,float,float,float,float,EasingFunc)
+0014BD92  CEasing::GetProgressPercent(float,float,float)
+0014BDB8  CEasing::Ease(float,EasingFunc)
+0014BDE8  CEasing::QuadOut(float)
+0014BE0A  CEasing::QuadIn(float)
+0014BE20  CEasing::QuadInOut(float)
+0014BE6E  CEasing::CubicOut(float)
+0014BE94  CEasing::CubicIn(float)
+0014BEAE  CEasing::CubicInOut(float)
+0014BF00  CEasing::ElasticOut(float)
+0014BF54  CEasing::CubicOut(float,float,float)
+*/
+
+struct EasingFunc {
+  int fun_index;
+};
+
+class CEasing {
+public:
+  static void MoveInFromTop(TRect, float, float, float, EasingFunc);                // 0014BAF4
+  static void Ease(float, float, float, EasingFunc);                                // 0014BB2C
+  static void MoveFromPoint(TRect, float, float, float, float, float, EasingFunc);  // 0014BB3E
+  static void InterpolateRect(TRect, float, float, float, TRect, EasingFunc);       // 0014BB9C
+  static void InterpolateFloat(float, float, float, float, float, EasingFunc);      // 0014BC08
+  static void ExpandFromMiddle(TRect, float, float, float, EasingFunc);             // 0014BC3C
+  static void ExpandFromTop(TRect, float, float, float, EasingFunc);                // 0014BC94
+  static void ExpandFromLeft(TRect, float, float, float, EasingFunc);               // 0014BCBE
+  static void ExpandFromRight(TRect, float, float, float, EasingFunc);              // 0014BCEA
+  static void ContractToMiddle(TRect, float, float, float, float, EasingFunc);      // 0014BD28
+  static float GetProgressPercent(float, float, float);                             // 0014BD92
+  static float Ease(float, EasingFunc);                                             // 0014BDB8
+  static float QuadOut(float);                                                      // 0014BDE8
+  static float QuadIn(float);                                                       // 0014BE0A
+  static float QuadInOut(float);                                                    // 0014BE20
+  static float CubicOut(float);                                                     // 0014BE6E
+  static float CubicIn(float);                                                      // 0014BE94
+  static float CubicInOut(float);                                                   // 0014BEAE
+  static float ElasticOut(float);                                                   // 0014BF00
+  static void CubicOut(float, float, float);                                        // 0014BF54
+};
+
+#endif  //_CEASING_H_

+ 667 - 0
jni/CFE.cpp

@@ -0,0 +1,667 @@
+#include <math.h>
+#include <typeinfo>
+#include "CFE.h"
+#include "AndroidApp.h"
+#include "CFTTRenderTarget.h"
+#include "FTT2D.h"
+#include "FTTGraphics.h"
+#include "CFTTCamera.h"
+#include "SYSCORE.h"
+#include "GFXRENDER.h"
+#include "LOCstring.h"
+#include "CFTTServerTime.h"
+#include "CFESTitle.h"
+#include "CFTTDevice.h"
+#include "GFXCAMERA.h"
+#include "CFTTDevice.h"
+#include "CFESGame.h"
+#include "CFESIntro.h"
+#include "FE2D.h"
+#include "CFEImages.h"
+#include "FETU.h"
+#include "SNDFE.h"
+#include "FTTGraphics.h"
+#include "CGameFeats.h"
+#include "CMessageBoxHandler.h"
+#include "CGFXFX.h"
+#include "CFEEffects.h"
+#include "GFXFADE.h"
+#include "CFESChooseHero.h"
+#include "CFESChooseSideHero.h"
+#include "CFESEditPlayer.h"
+#include "CFESPlayerName.h"
+#include "CFESMainMenu.h"
+#include "CFESLevelSelect.h"
+#include "CFESOptions.h"
+#include "CFESCredits.h"
+#include "CFESPauseMenu.h"
+#include "CFESShop.h"
+#include "CFESAndroidGraphics.h"
+#include "CGFXSpec.h"
+#include "CFTTNativeDialog.h"
+#include "TStoryConfig.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "TGame.h"
+#include "CStoryCore.h"
+#include "XCTRL.h"
+#include "SNDGAME.h"
+//#include "CFESShopHelper.h"
+#include "memctrl.h"
+
+extern bool FE_bBackButtonPressed;
+
+float CFE::s_fUniformWidth;                          //0034A41C
+float CFE::s_fUniformHeight;                         //0034A420
+float CFE::s_fHardwareWidth = 480.0f;                //00335024
+float CFE::s_fHardwareHeight = 320.0f;               //00335028
+TRect CFE::s_tOffsetAndResolution_Software;          //0034A444
+TRect CFE::s_tOffsetAndResolution_Hardware;          //0034A454
+TRect CFE::tOffsetAndResolution_SoftwareNative;      //0034A424
+TRect CFE::tOffsetAndResolution_HardwareNative;      //0034A434
+float CFE::ms_fDestCustomViewportPercentage = 1.0f;  //0033502C
+float CFE::ms_fCustomViewportPercentage = 1.0f;      //00335030
+bool CFE::ms_bCustomViewportActive;                  //0034A464
+time_t CFE::m_tMinimiseTime = -1;                    //003365F8
+int CFE::m_iScreenStackPos;                          //00354144
+CFEScreen* CFE::m_apScreenStack[16];                 //003540BC
+EFEScreen CFE::m_apScreenStackID[16];                //003540FC
+CFTTTexture* CFE::s_pBGTexture = nullptr;            //00354194
+bool CFE::ms_bShuttingDown;                          //003540B4
+int CFE::s_iUnpauseSoundCounter;                     //003540B8
+CFTTJobQueue* CFE::ms_pJobQueue = nullptr;           //0035416C
+bool CFE::m_bDeleteTopScreen;                        //0035414C
+int CFE::m_eScreen;                                  //00354140
+int CFE::m_eLastFlowDirection;                       //0035413C
+int CFE::ms_iFrame;                                  //00354160
+int CFE::m_iFirstInGameScreen;                       //00354148
+int CFE::ms_iProcessFrames;                          //0035415C
+bool CFE::s_bCouldHaveBannerAds;                     //00354159
+int GFXUTIL_eAspectRatio;                            //00462728
+int SCR_SAFE_TOP;                                    //00354198
+int SCR_SAFE_BOTTOM;                                 //0035419C
+int SCR_SAFE_LEFT;                                   //003541A0
+int SCR_SAFE_RIGHT;                                  //003541A4
+int SCR_WID = 640;                                   //003365EC
+int SCR_HEI = 960;                                   //003365F0
+FTTMutex CFE::s_tRenderMutex;                        //00354170
+
+//-------------------------------------------------------------------------------------------------
+//001199F4 //^_^
+void CFE::StoreUniformSpaceDimensions(float w, float h) {
+}
+//-------------------------------------------------------------------------------------------------
+//00119A10 //^_^  经过单元测试,功能正常
+void CFE::SetToUniformSpace() {
+}
+//-------------------------------------------------------------------------------------------------
+//00119AC0 //^_^ 经过单元测试,功能正常
+void CFE::SetViewport_Uniform() {
+}
+//-------------------------------------------------------------------------------------------------
+//00119BCC //^_^ 经过单元测试,功能正常
+void CFE::Begin2DScene() {
+}
+//-------------------------------------------------------------------------------------------------
+//00119BE0 //^_^ 经过单元测试,功能正常
+void CFE::SetupUniformRes() {
+}
+//-------------------------------------------------------------------------------------------------
+//00119C28 //^_^
+void CFE::BeginCustom2DScene(float f) {
+}
+//-------------------------------------------------------------------------------------------------
+//00119C58 //^_^
+void CFE::SetupCustomRes(float f) {
+}
+//-------------------------------------------------------------------------------------------------
+//00119D60 //^_^
+void CFE::ResetCustom2DScene() {
+}
+//-------------------------------------------------------------------------------------------------
+//00119D8C //^_^
+void CFE::End2DScene() {
+}
+//-------------------------------------------------------------------------------------------------
+//00119D90 //^_^
+float CFE::GetUniformXFromNativeX(float f1) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00119DCC //^_^
+float CFE::GetUniformYFromNativeY(float f1) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00119E08 //^_^
+float CFE::GetNativeXFromUniformX(float f1) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00119E48 //^_^
+float CFE::GetNativeYFromUniformY(float f1) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00119E88 //^_^
+float CFE::RoundToNativeXPixel(float f1) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00119ED4 //^_^
+float CFE::RoundToNativeYPixel(float f1) {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00119F20 //^_^
+void CFE::SetNativeHardwareSize(float fw, float fh) {
+}
+//-------------------------------------------------------------------------------------------------
+//00119F30 //-_- 经过单元测试,功能正常
+void CFE::ResolveScreenDims() {
+}
+//-------------------------------------------------------------------------------------------------
+//001522AC //^_- 经过单元测试,功能正常
+void CFE::Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//00152394 //^_- 经过单元测试,功能正常
+void CFE::Forward(int eScreenID, bool b2, bool b3) {
+  // locret_152442
+}
+//-------------------------------------------------------------------------------------------------
+//00152464 //^_^
+void CFE::Exit() {
+}
+//-------------------------------------------------------------------------------------------------
+//0015249C
+void CFE::InitialiseBannerAds() {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//001524BC
+bool CFE::AllowBannerAds() {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00152508
+void CFE::RemoveBannerAd() {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//0015251C
+void CFE::ShutDown() {
+}
+//-------------------------------------------------------------------------------------------------
+//001525B4
+void CFE::PauseSoundForRecording() {
+  // SNDFE_Music_Pause(true);
+  // SNDGAME_Crowd_Pause(true);
+}
+//-------------------------------------------------------------------------------------------------
+//001525C6
+void CFE::PlaySoundAfterRecording() {
+  // SNDFE_Music_UnPause();
+}
+//-------------------------------------------------------------------------------------------------
+//001525CC
+bool CFE::CheckMusic() {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0015261C
+bool CFE::ProcessAdverts() {
+  // give up
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0015263C
+void CFE::AttemptToPlayVideoAd(bool b1, int a2, bool b3, bool b4) {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00152714
+int CFE::AttemptToDisplayInterstitialAd() {
+  // give up
+  return 1;
+}
+//-------------------------------------------------------------------------------------------------
+//00152770
+void CFE::AttemptToStartVideoAdNetworks() {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00152864
+bool CFE::AllowVideoAds(EVideoAdZones) {
+  // give up
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00152914
+void CFE::VideoAnalytics(int a1) {
+  // empty
+}
+//-------------------------------------------------------------------------------------------------
+//00152918
+void CFE::PlayRewardedVideo(int a1, void* pdat) {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00152998
+void CFE::VideoAdEnergyRewardCallback(int a1, int a2, bool b3, char const* pdata) {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00152A74
+void CFE::VideoAdCurrencyRewardCallback(int a1, int a2, bool b1, char const* pdata) {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00152BB8
+bool CFE::ReadyToPlayVideoAd(bool b1, int a2, bool b3) {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00152C08
+bool CFE::PassedVideoTime() {
+  // give up
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00152C44
+void CFE::UpdateAdvertTimings(bool b) {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00152CD4
+bool CFE::PassedFullScreenTime() {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00152D0C //^_^
+void CFE::AndroidExitAppCB(int a1, void* pData) {
+}
+//-------------------------------------------------------------------------------------------------
+//00152D50
+EVideoAdZones CFE::GetAnalyticsVideoSourceFromZone(EVideoAdZones e) {
+  // give up
+  return EVideoAdZones_0;
+}
+//-------------------------------------------------------------------------------------------------
+//00152D94 //-_- 经过单元测试,功能正常
+int CFE::Process(float f0) {
+  // LOGI("CFE::Process %.2f entry", f0);
+
+  if (CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1] != nullptr) {
+    // 00152DC2
+    if (tGame.mTLogic_6678.bisRunning_A9) {
+      // 00152DD4
+      CFE::SetToUniformSpace();
+    }
+
+    // 00152DD8
+    GFXFADE_Update(true);
+    CFEEffects::Update(f0);
+    CFE::CheckMusic();
+
+    if (!tGame.mTLogic_6678.bisRunning_A9 &&
+        CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->m_pUITileManager_4->GetHasButton(256) &&
+        CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->m_pUITileManager_4->dIndex_0 >= 1) {
+      CStoryCore::m_cProfile.EnergyCheckRestore();
+    }
+
+    // loc_152E20
+    if (CFE::m_bDeleteTopScreen) {
+      // 00152E2A
+      CFE::DeleteTopScreen();
+      CFE::m_bDeleteTopScreen = false;
+    }
+
+    // loc_152E32
+    CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->PositionTileManager(-1);  // 00152E40
+
+    // CFTTRewardedVideos::AdOnScreen(void)
+    // 00152E4E
+    if (CMessageBoxHandler::MessageBoxShown()) {
+      // 00152E54
+      if (FE_bBackButtonPressed) {
+        if (CMessageBoxHandler::GetCanBackButtonRemove()) {
+          CMessageBoxHandler::ShutDownMessageBox();
+        }
+
+        // loc_152E68
+        FE_bBackButtonPressed = false;
+      } else {
+        // loc_152E6E
+        CMessageBoxHandler::Process();
+        XCTRL_TouchProcess_ClearTriggers();
+        if (tGame.mTLogic_6678.bisRunning_A9) {
+          // 00152E80
+          CStoryCore::m_cProfile.EnergyCheckRestore();
+        }
+
+        // loc_152E8A
+        if (!CGameLoop::s_bPaused && CFE::s_iUnpauseSoundCounter == 0) {
+          SNDGAME_Process();
+        }
+      }
+    }
+
+    // loc_152EA2
+    if (!CMessageBoxHandler::MessageBoxShown() || CMessageBoxHandler::CanProcess()) {
+      // loc_152EB2
+      int r7_dpos = CFE::m_iScreenStackPos;
+      CFEScreen* r0_pScreen = CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1];
+      if (FE_bBackButtonPressed) {
+        // 00152EC6
+        if (r0_pScreen->dId_C == 8) {
+          // 00152ECC
+          CMessageBoxHandler::NewMessageBox(CFE::AndroidExitAppCB,
+                                            nullptr,
+                                            EMessageBoxType_1,
+                                            LOCstring(239),
+                                            nullptr,
+                                            0,
+                                            128,
+                                            true,
+                                            1,
+                                            0,
+                                            false,
+                                            false,
+                                            true,
+                                            true);
+
+        } else if (r0_pScreen->m_pUITileManager_4->GetHasButton(2)) {  // loc_152F24
+          // 00152F2E
+          if (CFE::m_iScreenStackPos <= 1) {
+            // 00152F34
+            int var_1C = 8;
+            CFE::SetupStack(&var_1C, 1);
+          } else {
+            CFE::Back(false, true);
+          }
+        } else {
+          // loc_152F42
+          switch (r0_pScreen->dId_C) {
+            case 0:
+              CGameLoop::Pause(-1, EPauseType_0, EFEScreen_12);
+              break;
+            case 4:
+              CFESChooseHero::BackButtonPressed();
+              break;
+            case 5:
+              CFESChooseSideHero::BackButtonPressed();
+              break;
+            case 6:
+              CFESEditPlayer::CancelChanges();
+              break;
+            case 9:
+              CFESLevelSelect::BackButtonPressed();
+              break;
+            case 12:
+              CFESPauseMenu::ResumeGame();
+              break;
+            default:
+              break;
+          }
+        }
+
+        // loc_152F8C
+        FE_bBackButtonPressed = false;
+      } else {
+        // loc_152EFE
+        r0_pScreen->Process();
+        if (CFE::m_iScreenStackPos != r7_dpos && CFE::m_iScreenStackPos != 0) {
+          // 00152F0E
+          XCTRL_Process_ClearTriggers();
+          CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->Process();
+        }
+      }
+    }
+
+    // loc_152F90
+    //中间与网络下载相关的代码被忽略
+    // loc_152FDA
+    // CFESShopHelper::Process();  //CFESShopHelper 跳过
+    SNDFE_Process();
+
+    // loc_153018
+    // CFESShopHelper::CheckForSave(); //CFESShopHelper 跳过
+    // CFTTAndroidRewardedVideos::InitialiseNextAdNetwork();
+    MP_cMyProfile.CheckSave();
+  }
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0015307C //^_^
+void CFE::DeleteTopScreen() {
+}
+//-------------------------------------------------------------------------------------------------
+//001530C8 //^_^ 经过单元测试,功能正常
+void CFE::SetupStack(int* pdata, int dCount) {
+}
+//-------------------------------------------------------------------------------------------------
+//001530EC //^_^
+void CFE::Back(bool b1, bool b2) {
+}
+//-------------------------------------------------------------------------------------------------
+//00153190 //^_^ 经过单元测试,功能正常
+void CFE::RenderScreen(int a1) {
+}
+//-------------------------------------------------------------------------------------------------
+//001531AC
+void CFE::RenderAdBackground(bool b) {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//00153208
+void CFE::RenderFrameRate() {
+  // empty
+}
+//-------------------------------------------------------------------------------------------------
+//0015320C //^_^ 经过单元测试,功能正常
+void CFE::Render() {
+}
+//-------------------------------------------------------------------------------------------------
+//00153274 ^_^ 经过单元测试,功能正常
+void CFE::RenderInner() {
+}
+//-------------------------------------------------------------------------------------------------
+//00153318 //^_^ 经过单元测试,功能正常
+int CFE::GetScreenID() {
+  int dret = -1;
+
+  // loc_153338
+  return dret;
+}
+//-------------------------------------------------------------------------------------------------
+//00153348 //^_^ 经过单元测试,功能正常
+CFEScreen* CFE::NewScreen(int a1) {
+  CFEScreen* pRet = nullptr;
+
+  return pRet;
+}
+//-------------------------------------------------------------------------------------------------
+//00153528  //^_^
+void CFE::BackToScreen(int a1, bool b2) {
+}
+//-------------------------------------------------------------------------------------------------
+//001535B4 //^_^ 经过单元测试,功能正常
+CFTTTexture* CFE::GetBGTexture() {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+// typedef void (*CMessageBoxHandler_func)(int, void *);
+//这个函数两个参数没有用到
+//00153584 //^_^
+void SeenStartupMessageCB(int a1, void* pbuf2) {
+}
+//-------------------------------------------------------------------------------------------------
+//00153618 -_- 仅打log时,功能正常
+void CFE::DisplayInitialMessage() {
+  LOGI("CFE::DisplayInitialMessage entry");
+  // fixit STY_tConfig结构未知
+  //  if (STY_tConfig->buf_5B91 && !MP_cMyProfile->ShowUpdateMessageBox() &&
+  //      (STY_tConfig->field_6394 == -1 || STY_tConfig->field_6394 != MP_cMyProfile->field_4)) {
+  //    //loc_15364C
+  //    wchar_t* tmp = new wchar_t[2048];
+  //    UTF8ToUnicode(tmp, STY_tConfig->buf_5B91, 2047);  //00268EDC UTF8ToUnicode(wchar_t *,char const*,uint)
+  //    CMessageBoxHandler::NewMessageBox(SeenStartupMessageCB, 0, EMessageBoxType_0, tmp, 0, 0, 128, 1, 1, 0, 0, 0, 1, 1);
+  //    delete[] tmp;
+  //  }
+}
+//-------------------------------------------------------------------------------------------------
+//001536AC //^_^
+void CFE::ShopCB(int a1, void* pdata) {
+}
+//-------------------------------------------------------------------------------------------------
+//001536B6
+void CFE::ShowShop(bool b) {
+  LOGI("CFE::ShowShop entry");
+}
+//-------------------------------------------------------------------------------------------------
+//001536FC
+void CFE::OpenFacebookLink() {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//0015371C
+void CFE::OpenTwitterLink() {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//0015373C //^_^
+void CFE::DeleteScreenStack() {
+}
+//-------------------------------------------------------------------------------------------------
+//00153758
+void CFE::LoadSideStoryFirstNISIfExists() {
+  //??? 会不会调用到不是十分确定
+  LOGI("CFE::LoadSideStoryFirstNISIfExists entry");
+}
+//-------------------------------------------------------------------------------------------------
+//00153820
+void CFE::SetInitialAdvertTimings() {
+  //??? 好像与广告相关,不是十分确定
+}
+//-------------------------------------------------------------------------------------------------
+//00153884
+bool CFE::AllowInterstitials() {
+  // give up
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//001538DC
+bool CFE::AlwaysShowLevelSelectVideoAds() {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//00153908
+bool CFE::CouldHaveVideoAds(EVideoAdZones e) {
+  // give up
+  return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0015399C
+bool CFE::CouldHaveInterstitials() {
+  bool bret = false;
+  // fixit
+  //  if (STY_tConfig[MP_cMyProfile->GetUserType()].field_63E8 > -1) {
+  //    bret = true;
+  //  } else {
+  //    bret = STORY_ShouldForceAdverts();
+  //  }
+  return bret;
+}
+//-------------------------------------------------------------------------------------------------
+//001539D8
+void CFE::AddBannerAd() {
+  // give up
+}
+//-------------------------------------------------------------------------------------------------
+//001539F4 //^_^
+bool CFE::CurrentScreenHasBackButton() {
+  bool bret = false;
+
+  return bret;
+}
+//-------------------------------------------------------------------------------------------------
+//00153A20 //^_^
+void CFE::OpenTermsOfServiceURL() {
+}
+//-------------------------------------------------------------------------------------------------
+//00153A2C //^_^
+void CFE::OpenPrivacyPolicyURL() {
+}
+//-------------------------------------------------------------------------------------------------
+//00153A38
+void CFE::OpenTermsOfService() {
+  // CHeroAnalytics::LogEvent();
+}
+//-------------------------------------------------------------------------------------------------
+//00153A88
+void CFE::OpenPrivacyPolicy() {
+  // CHeroAnalytics::LogEvent();
+}
+//-------------------------------------------------------------------------------------------------
+//00153AD8 //^_-
+void CFE::ContinueTermsOfServiceNativeDialog() {
+  // CHeroAnalytics::LogEvent()
+}
+//-------------------------------------------------------------------------------------------------
+//00153B4C //^_^ 经过单元测试,功能正常
+bool CFE::ShowNativeDialogForTerms() {
+  return true;
+}
+//-------------------------------------------------------------------------------------------------
+//00153BEC //^_^
+void CFE::StoreMinimiseTime() {
+}
+//-------------------------------------------------------------------------------------------------
+//00153C04
+void CFE::CheckTimeMinimised() {
+  // locret_153C32
+}
+//-------------------------------------------------------------------------------------------------
+//00153C3C //^_- 经过单元测试,功能正常
+void CFE::PerformHousekeeping() {
+  // locret_153CA4
+  return;
+}
+//-------------------------------------------------------------------------------------------------
+//00153CC4 //^_^
+void CFE::DeleteHeadshot() {
+}
+//-------------------------------------------------------------------------------------------------
+
+/*
+第一个界面要调用到的函数
+
+77, 0x7665ac04 in ?? ()  00153C04  CFE::CheckTimeMinimised()
+17, 0x76620f30 in ?? ()  00119F30  CFE::ResolveScreenDims()
+2,  0x76620a10 in ?? ()  00119A10  CFE::SetToUniformSpace()
+31, 0x76659770 in ?? ()  00152770  CFE::AttemptToStartVideoAdNetworks()
+64, 0x7665a884 in ?? ()  00153884  CFE::AllowInterstitials()
+67, 0x7665a99c in ?? ()  0015399C  CFE::CouldHaveInterstitials()
+32, 0x76659864 in ?? ()  00152864  CFE::AllowVideoAds(EVideoAdZones)
+66, 0x7665a908 in ?? ()  00153908  CFE::CouldHaveVideoAds(EVideoAdZones)
+63, 0x7665a820 in ?? ()  00153820  CFE::SetInitialAdvertTimings()
+75, 0x7665ab4c in ?? ()  00153B4C  CFE::ShowNativeDialogForTerms()
+18, 0x766592ac in ?? ()  001522AC  CFE::Init()
+19, 0x76659394 in ?? ()  00152394  CFE::Forward(int a1, bool b1, bool b2)
+53, 0x7665a348 in ?? ()  00153348  CFE::NewScreen(int)
+43, 0x76659d94 in ?? ()  00152D94  CFE::Process(float f)
+27, 0x766595cc in ?? ()  001525CC  CFE::CheckMusic()
+52, 0x7665a318 in ?? ()  00153318  CFE::GetScreenID()
+50, 0x7665a20c in ?? ()  0015320C  CFE::Render()
+51, 0x7665a274 in ?? ()  00153274  CFE::RenderInner()
+3,  0x76620ac0 in ?? ()  00119AC0  CFE::SetViewport_Uniform()
+4,  0x76620bcc in ?? ()  00119BCC  CFE::Begin2DScene()
+5,  0x76620be0 in ?? ()  00119BE0  CFE::SetupUniformRes()
+47, 0x7665a190 in ?? ()  00153190  CFE::RenderScreen(int a1)
+9,  0x76620d8c in ?? ()  00119D8C  CFE::End2DScene()
+21, 0x7665949c in ?? ()  0015249C  CFE::InitialiseBannerAds()
+22, 0x766594bc in ?? ()  001524BC  CFE::AllowBannerAds()
+78, 0x7665ac3c in ?? ()  00153C3C  CFE::PerformHousekeeping()
+55, 0x7665a5b4 in ?? ()  001535B4  CFE::GetBGTexture()
+56, 0x7665a618 in ?? ()  00153618  CFE::DisplayInitialMessage()
+*/

+ 381 - 0
jni/CFE.h

@@ -0,0 +1,381 @@
+// CFE - [2020-04-13 11:57:46]
+#ifndef _CFE_H_
+#define _CFE_H_
+
+#include "XMATH.h"
+#include "CFTTTexture.h"
+#include "CFTTJobQueue.h"
+#include "CFEScreen.h"
+#include "CGameLoop.h"
+#include "CFTTTexLoadOptions.h"
+#include "FTTMutex.h"
+
+/*
+001199F4  CFE::StoreUniformSpaceDimensions(float f1, float f2)
+00119A10  CFE::SetToUniformSpace()
+00119AC0  CFE::SetViewport_Uniform()
+00119BCC  CFE::Begin2DScene()
+00119BE0  CFE::SetupUniformRes()
+00119C28  CFE::BeginCustom2DScene(float f1)
+00119C58  CFE::SetupCustomRes(float d1)
+00119D60  CFE::ResetCustom2DScene()
+00119D8C  CFE::End2DScene()
+00119D90  CFE::GetUniformXFromNativeX(float f1)
+00119DCC  CFE::GetUniformYFromNativeY(float f1)
+00119E08  CFE::GetNativeXFromUniformX(float f1)
+00119E48  CFE::GetNativeYFromUniformY(float f1)
+00119E88  CFE::RoundToNativeXPixel(float f1)
+00119ED4  CFE::RoundToNativeYPixel(float f1)
+00119F20  CFE::SetNativeHardwareSize(float f1, float f2)
+00119F30  CFE::ResolveScreenDims()
+001522AC  CFE::Init()
+00152394  CFE::Forward(int a1, bool b1, bool b2)
+00152464  CFE::Exit()
+0015249C  CFE::InitialiseBannerAds()
+001524BC  CFE::AllowBannerAds()
+00152508  CFE::RemoveBannerAd()
+0015251C  CFE::ShutDown()
+001525B4  CFE::PauseSoundForRecording()
+001525C6  CFE::PlaySoundAfterRecording()
+001525CC  CFE::CheckMusic()
+0015261C  CFE::ProcessAdverts()
+0015263C  CFE::AttemptToPlayVideoAd(bool b1, int a2 ,bool b3 ,bool b4)
+00152714  CFE::AttemptToDisplayInterstitialAd()
+00152770  CFE::AttemptToStartVideoAdNetworks()
+00152864  CFE::AllowVideoAds(EVideoAdZones)
+00152914  CFE::VideoAnalytics(int a1)
+00152918  CFE::PlayRewardedVideo(int a1, void * pdat)
+00152998  CFE::VideoAdEnergyRewardCallback(int a1, int a2, bool b3, char const* pdata)
+00152A74  CFE::VideoAdCurrencyRewardCallback(int a1, int a2, bool b1, char const* pdata)
+00152BB8  CFE::ReadyToPlayVideoAd(bool b1, int a2, bool b3)
+00152C08  CFE::PassedVideoTime()
+00152C44  CFE::UpdateAdvertTimings(bool b)
+00152CD4  CFE::PassedFullScreenTime()
+00152D0C  CFE::AndroidExitAppCB(int a1, void * pdata)
+00152D50  CFE::GetAnalyticsVideoSourceFromZone(EVideoAdZones e)
+00152D94  CFE::Process(float f)
+0015307C  CFE::DeleteTopScreen()
+001530C8  CFE::SetupStack(int * pdata, int a2)
+001530EC  CFE::Back(bool b1, bool b2)
+00153190  CFE::RenderScreen(int a1)
+001531AC  CFE::RenderAdBackground(bool b)
+00153208  CFE::RenderFrameRate()
+0015320C  CFE::Render()
+00153274  CFE::RenderInner()
+00153318  CFE::GetScreenID()
+00153348  CFE::NewScreen(int)
+00153528  CFE::BackToScreen(int a1, bool b)
+001535B4  CFE::GetBGTexture()
+00153618  CFE::DisplayInitialMessage()
+001536AC  CFE::ShopCB(int a1, void * pdata)
+001536B6  CFE::ShowShop(bool b)
+001536FC  CFE::OpenFacebookLink()
+0015371C  CFE::OpenTwitterLink()
+0015373C  CFE::DeleteScreenStack()
+00153758  CFE::LoadSideStoryFirstNISIfExists()
+00153820  CFE::SetInitialAdvertTimings()
+00153884  CFE::AllowInterstitials()
+001538DC  CFE::AlwaysShowLevelSelectVideoAds()
+00153908  CFE::CouldHaveVideoAds(EVideoAdZones)
+0015399C  CFE::CouldHaveInterstitials()
+001539D8  CFE::AddBannerAd()
+001539F4  CFE::CurrentScreenHasBackButton()
+00153A20  CFE::OpenTermsOfServiceURL()
+00153A2C  CFE::OpenPrivacyPolicyURL()
+00153A38  CFE::OpenTermsOfService()
+00153A88  CFE::OpenPrivacyPolicy()
+00153AD8  CFE::ContinueTermsOfServiceNativeDialog()
+00153B4C  CFE::ShowNativeDialogForTerms()
+00153BEC  CFE::StoreMinimiseTime()
+00153C04  CFE::CheckTimeMinimised()
+00153C3C  CFE::PerformHousekeeping()
+00153CC4  CFE::DeleteHeadshot()
+
+共79个函数
+*/
+
+enum EVideoAdZones {
+  EVideoAdZones_0,
+  EVideoAdZones_1,
+  EVideoAdZones_2,
+  EVideoAdZones_3,
+  EVideoAdZones_4,
+};
+
+class CFE {
+public:
+  // 001199F4
+  static void StoreUniformSpaceDimensions(float w, float h);
+
+  // 00119A10
+  static void SetToUniformSpace();
+
+  // 00119AC0
+  static void SetViewport_Uniform();
+
+  // 00119BCC
+  static void Begin2DScene();
+
+  // 00119BE0
+  static void SetupUniformRes();
+
+  // 00119C28
+  static void BeginCustom2DScene(float f1);
+
+  // 00119C58
+  static void SetupCustomRes(float d1);
+
+  // 00119D60
+  static void ResetCustom2DScene();
+
+  // 00119D8C
+  static void End2DScene();
+
+  // 00119D90
+  static float GetUniformXFromNativeX(float f1);
+
+  // 00119DCC
+  static float GetUniformYFromNativeY(float f1);
+
+  // 00119E08
+  static float GetNativeXFromUniformX(float f1);
+
+  // 00119E48
+  static float GetNativeYFromUniformY(float f1);
+
+  // 00119E88
+  static float RoundToNativeXPixel(float f1);
+
+  // 00119ED4
+  static float RoundToNativeYPixel(float f1);
+
+  // 00119F20
+  static void SetNativeHardwareSize(float fw, float fh);
+
+  // 00119F30
+  static void ResolveScreenDims();
+
+  // 001522AC
+  static void Init();
+
+  // 00152394
+  static void Forward(int a1, bool b1, bool b2);
+
+  // 00152464
+  static void Exit();
+
+  // 0015249C
+  static void InitialiseBannerAds();
+
+  // 001524BC
+  static bool AllowBannerAds();
+
+  // 00152508
+  static void RemoveBannerAd();
+
+  // 0015251C
+  static void ShutDown();
+
+  // 001525B4
+  static void PauseSoundForRecording();
+
+  // 001525C6
+  static void PlaySoundAfterRecording();
+
+  // 001525CC
+  static bool CheckMusic();
+
+  // 0015261C give up
+  static bool ProcessAdverts();
+
+  // 0015263C
+  static void AttemptToPlayVideoAd(bool b1, int a2, bool b3, bool b4);
+
+  // 00152714 give up
+  static int AttemptToDisplayInterstitialAd();
+
+  // 00152770 give up
+  static void AttemptToStartVideoAdNetworks();
+
+  // 00152864 give up
+  static bool AllowVideoAds(EVideoAdZones);
+
+  // 00152914 empty
+  static void VideoAnalytics(int a1);
+
+  // 00152918 give up
+  static void PlayRewardedVideo(int a1, void* pdat);
+
+  // 00152998 give up
+  static void VideoAdEnergyRewardCallback(int a1, int a2, bool b3, char const* pdata);
+
+  // 00152A74 give up
+  static void VideoAdCurrencyRewardCallback(int a1, int a2, bool b1, char const* pdata);
+
+  // 00152BB8
+  static bool ReadyToPlayVideoAd(bool b1, int a2, bool b3);
+
+  // 00152C08 give up
+  static bool PassedVideoTime();
+
+  // 00152C44
+  static void UpdateAdvertTimings(bool b);
+
+  // 00152CD4 give up
+  static bool PassedFullScreenTime();
+
+  // 00152D0C
+  static void AndroidExitAppCB(int a1, void* pData);
+
+  // 00152D50 give up
+  static EVideoAdZones GetAnalyticsVideoSourceFromZone(EVideoAdZones e);
+
+  // 00152D94
+  static int Process(float f);
+
+  // 0015307C
+  static void DeleteTopScreen();
+
+  // 001530C8
+  static void SetupStack(int* pdata, int dCount);
+
+  // 001530EC
+  static void Back(bool b1, bool b2);
+
+  // 00153190
+  static void RenderScreen(int a1);
+
+  // 001531AC
+  static void RenderAdBackground(bool b);
+
+  // 00153208
+  static void RenderFrameRate();
+
+  // 0015320C
+  static void Render();
+
+  // 00153274
+  static void RenderInner();
+
+  // 00153318
+  static int GetScreenID();
+
+  // 00153348
+  static CFEScreen* NewScreen(int);
+
+  // 00153528
+  static void BackToScreen(int a1, bool b2);
+
+  // 001535B4
+  static CFTTTexture* GetBGTexture();
+
+  // 00153618
+  static void DisplayInitialMessage();
+
+  // 001536AC
+  static void ShopCB(int a1, void* pdata);
+
+  // 001536B6
+  static void ShowShop(bool b);
+
+  // 001536FC
+  static void OpenFacebookLink();
+
+  // 0015371C
+  static void OpenTwitterLink();
+
+  // 0015373C
+  static void DeleteScreenStack();
+
+  // 00153758
+  static void LoadSideStoryFirstNISIfExists();
+
+  // 00153820
+  static void SetInitialAdvertTimings();
+
+  // 00153884
+  static bool AllowInterstitials();
+
+  // 001538DC
+  static bool AlwaysShowLevelSelectVideoAds();
+
+  // 00153908
+  static bool CouldHaveVideoAds(EVideoAdZones);
+
+  // 0015399C
+  static bool CouldHaveInterstitials();
+
+  // 001539D8
+  static void AddBannerAd();
+
+  // 001539F4
+  static bool CurrentScreenHasBackButton();
+
+  // 00153A20
+  static void OpenTermsOfServiceURL();
+
+  // 00153A2C
+  static void OpenPrivacyPolicyURL();
+
+  // 00153A38
+  static void OpenTermsOfService();
+
+  // 00153A88
+  static void OpenPrivacyPolicy();
+
+  // 00153AD8
+  static void ContinueTermsOfServiceNativeDialog();
+
+  // 00153B4C
+  static bool ShowNativeDialogForTerms();
+
+  // 00153BEC
+  static void StoreMinimiseTime();
+
+  // 00153C04
+  static void CheckTimeMinimised();
+
+  // 00153C3C
+  static void PerformHousekeeping();
+
+  // 00153CC4
+  static void DeleteHeadshot();
+
+  static float s_fUniformWidth;
+  static float s_fUniformHeight;
+  static float s_fHardwareWidth;
+  static float s_fHardwareHeight;
+  static TRect s_tOffsetAndResolution_Software;
+  static TRect s_tOffsetAndResolution_Hardware;
+  static TRect tOffsetAndResolution_SoftwareNative;
+  static TRect tOffsetAndResolution_HardwareNative;
+  static float ms_fDestCustomViewportPercentage;
+  static float ms_fCustomViewportPercentage;
+  static bool ms_bCustomViewportActive;
+  static time_t m_tMinimiseTime;
+  static int m_iScreenStackPos;
+  static CFEScreen* m_apScreenStack[16];
+  static EFEScreen m_apScreenStackID[16];
+  static CFTTTexture* s_pBGTexture;
+  static bool ms_bShuttingDown;
+  static int s_iUnpauseSoundCounter;
+  static CFTTJobQueue* ms_pJobQueue;
+  static bool m_bDeleteTopScreen;
+  static int m_eScreen;
+  static int m_eLastFlowDirection;  //??? enum
+  static int ms_iFrame;
+  static int m_iFirstInGameScreen;
+  static int ms_iProcessFrames;
+  static bool s_bCouldHaveBannerAds;
+
+  static FTTMutex s_tRenderMutex;  // 00354170
+};
+
+extern int SCR_SAFE_TOP;
+extern int SCR_SAFE_BOTTOM;
+extern int SCR_SAFE_LEFT;
+extern int SCR_SAFE_RIGHT;
+extern int SCR_WID;  // 003365EC
+extern int SCR_HEI;  // 003365F0
+
+#endif  //_CFE_H_

+ 128 - 0
jni/CFE3DPlayer.cpp

@@ -0,0 +1,128 @@
+#include "CFE3DPlayer.h"
+#include "CFTTTextureOGLES.h"
+
+//-------------------------------------------------------------------------------------------------
+//0011DB9C
+CFE3DPlayer::CFE3DPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC14
+CFE3DPlayer::~CFE3DPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DBC8
+void CFE3DPlayer::Shutdown() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC20
+float CFE3DPlayer::GetYRot() {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC26
+float CFE3DPlayer::GetDestY() {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC2C
+void CFE3DPlayer::SetDestY(float) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC32
+void CFE3DPlayer::SetYRot(float r1) {
+  LOGI("CFE3DPlayer::SetYRot 0011DC32");
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC38
+void CFE3DPlayer::SetFaceForward() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC44
+char CFE3DPlayer::Rotating() {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC4C
+void CFE3DPlayer::SetFaceBackward() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DC58
+void CFE3DPlayer::Init(int, int, TPlayerInfo *, EPlayerKitID, int, TBuildKitTeamTextures *, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DE94
+int CFE3DPlayer::LoadKitTexture(EPlayerKitID, int) {
+	return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0011DED8
+void CFE3DPlayer::CalculatePlayerMatrix() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DF44 ^_^
+void CFE3DPlayer::UpdatePlayerRender() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011DF60
+void CFE3DPlayer::Process() {
+  LOGI("CFE3DPlayer::Process 0011DF60");
+}
+//-------------------------------------------------------------------------------------------------
+//0011DFAC
+void CFE3DPlayer::PreRender() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E044
+void CFE3DPlayer::Render2D() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E084
+void CFE3DPlayer::Render3DProps() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E0A0
+void CFE3DPlayer::Render(bool, EEnvMapOverride) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E154
+void CFE3DPlayer::SetPlayerKitType(EPlayerKitID) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E1AC
+void CFE3DPlayer::RenderSetup() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E1CC
+void CFE3DPlayer::UpdatePlayerAtlas(TPlayerInfo *, bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E1EC
+void CFE3DPlayer::UpdateKit(TPlayerInfo *, EPlayerKitID) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011E260
+void CFE3DPlayer::SetScale(float r1) {
+  LOGI("CFE3DPlayer::SetScale 0011E260");
+}
+//-------------------------------------------------------------------------------------------------
+//0011E268
+void CFE3DPlayer::SetPos(float r1, float r2, float r3, float arg_0, float arg_4) {
+  LOGI("CFE3DPlayer::SetPos 0011E268");
+}
+//-------------------------------------------------------------------------------------------------
+//0011E4A8
+CFTTTexture *CFE3DPlayer::GetHeadshotTexture(bool r1, int r2) {
+  LOGI("CFE3DPlayer::GetHeadshotTexture 0011E4A8");
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0011E84C
+void CFE3DPlayer::SaveHeadshotTexture(CFTTTexture *r0) {
+  LOGI("CFE3DPlayer::SaveHeadshotTexture: %u", r0->dCount_C);
+}
+//-------------------------------------------------------------------------------------------------
+//0011E8B8
+void CFE3DPlayer::UpdateBlinking() {
+  LOGI("CFE3DPlayer::UpdateBlinking 0011E8B8");
+}
+//-------------------------------------------------------------------------------------------------

+ 120 - 0
jni/CFE3DPlayer.h

@@ -0,0 +1,120 @@
+// CFE3DPlayer - [2020-04-13 11:57:46]
+#ifndef _CFE3DPLAYER_H_
+#define _CFE3DPLAYER_H_
+
+#include "CFTTTexture.h"
+#include "CPlayer.h"
+#include "CGfxKits.h"
+#include "CGfxEnvironmentMap.h"
+#include "CPlayer.h"
+#include "CGfxCharacter.h"
+
+/*
+0011DB9C CFE3DPlayer::CFE3DPlayer()
+0011DC14 CFE3DPlayer::~CFE3DPlayer()
+0011DBC8 CFE3DPlayer::Shutdown()
+0011DC20 CFE3DPlayer::GetYRot()
+0011DC26 CFE3DPlayer::GetDestY()
+0011DC2C CFE3DPlayer::SetDestY(float)
+0011DC32 CFE3DPlayer::SetYRot(float)
+0011DC38 CFE3DPlayer::SetFaceForward()
+0011DC44 CFE3DPlayer::Rotating()
+0011DC4C CFE3DPlayer::SetFaceBackward()
+0011DC58 CFE3DPlayer::Init(int,int,TPlayerInfo *,EPlayerKitID,int,TBuildKitTeamTextures *,int)
+0011DE94 CFE3DPlayer::LoadKitTexture(EPlayerKitID,int)
+0011DED8 CFE3DPlayer::CalculatePlayerMatrix()
+0011DF44 CFE3DPlayer::UpdatePlayerRender()
+0011DF60 CFE3DPlayer::Process()
+0011DFAC CFE3DPlayer::PreRender()
+0011E044 CFE3DPlayer::Render2D()
+0011E084 CFE3DPlayer::Render3DProps()
+0011E0A0 CFE3DPlayer::Render(bool,EEnvMapOverride)
+0011E154 CFE3DPlayer::SetPlayerKitType(EPlayerKitID)
+0011E1AC CFE3DPlayer::RenderSetup()
+0011E1CC CFE3DPlayer::UpdatePlayerAtlas(TPlayerInfo *,bool)
+0011E1EC CFE3DPlayer::UpdateKit(TPlayerInfo *,EPlayerKitID)
+0011E260 CFE3DPlayer::SetScale(float)
+0011E268 CFE3DPlayer::SetPos(float,float,float,float,float)
+0011E4A8 CFE3DPlayer::GetHeadshotTexture(bool,int)
+0011E84C CFE3DPlayer::SaveHeadshotTexture(CFTTTexture *)
+0011E8B8 CFE3DPlayer::UpdateBlinking()
+
+0x2d8
+*/
+
+enum EPlayerKitID {
+  EPlayerKitID_0,
+  EPlayerKitID_1,
+  EPlayerKitID_2,
+  EPlayerKitID_3,
+  EPlayerKitID_4,
+  EPlayerKitID_5,
+};
+
+class CFE3DPlayer {
+public:
+  CFE3DPlayer();                                                                        // 0011DB9C
+  ~CFE3DPlayer();                                                                       // 0011DC14
+  void Shutdown();                                                                      // 0011DBC8
+  float GetYRot();                                                                      // 0011DC20
+  float GetDestY();                                                                     // 0011DC26
+  void SetDestY(float);                                                                 // 0011DC2C
+  void SetYRot(float);                                                                  // 0011DC32
+  void SetFaceForward();                                                                // 0011DC38
+  char Rotating();                                                                      // 0011DC44
+  void SetFaceBackward();                                                               // 0011DC4C
+  void Init(int, int, TPlayerInfo *, EPlayerKitID, int, TBuildKitTeamTextures *, int);  // 0011DC58
+  int LoadKitTexture(EPlayerKitID, int);                                                // 0011DE94
+  void CalculatePlayerMatrix();                                                         // 0011DED8
+  void UpdatePlayerRender();                                                            // 0011DF44
+  void Process();                                                                       // 0011DF60
+  void PreRender();                                                                     // 0011DFAC
+  void Render2D();                                                                      // 0011E044
+  void Render3DProps();                                                                 // 0011E084
+  void Render(bool, EEnvMapOverride);                                                   // 0011E0A0
+  void SetPlayerKitType(EPlayerKitID);                                                  // 0011E154
+  void RenderSetup();                                                                   // 0011E1AC
+  void UpdatePlayerAtlas(TPlayerInfo *, bool);                                          // 0011E1CC
+  void UpdateKit(TPlayerInfo *, EPlayerKitID);                                          // 0011E1EC
+  void SetScale(float);                                                                 // 0011E260
+  void SetPos(float, float, float, float, float);                                       // 0011E268
+  CFTTTexture *GetHeadshotTexture(bool, int);                                           // 0011E4A8
+  static void SaveHeadshotTexture(CFTTTexture *pftttexture);                            // 0011E84C
+  void UpdateBlinking();                                                                // 0011E8B8
+
+  CGfxCharacter *pGfxCharacter_0;
+  TBuildKitTeamTextures *field_4;
+  int kit_8;
+  CFTTRenderToTexture *field_C;
+  CPlayer tPlayer_10;  // size 0x1a4
+  TPlayerInfo *field_1B4;
+  CFTTMatrix32 field_1B8;
+  int teamId_1F8;
+  bool isKeeper_1FC;
+  bool field_1FD;
+  bool field_1FE;
+  bool field_1FF;
+  float yRot_200;
+  float Scale_204;
+  float destY_208;
+  int field_20C;
+  char field_210;
+  char field_211;
+  char field_212;
+  char field_213;
+  int field_214;
+  int field_218;
+  int field_21C;
+  int field_220;
+  CFTTVector32 field_224;
+  int field_230;
+  int field_234;
+  int field_238;
+  char field_23C;
+  char field_23D;
+  char field_23E;
+  char field_23F;
+  char field_240[0x98];
+};
+
+#endif  //_CFE3DPLAYER_H_

+ 16 - 0
jni/CFECloudMessages.h

@@ -0,0 +1,16 @@
+#ifndef _CFECLOUDMESSAGES_H_
+#define _CFECLOUDMESSAGES_H_
+
+class CFECloudMessages {
+public:
+  CFECloudMessages();
+  ~CFECloudMessages();
+
+  static void ProcessCloudWaitMessageBox();                           // 0011EDE4
+  static int GetConflictRecommendation();                             // 0011F380
+  static int FillConflictDetails(wchar_t*, wchar_t*, wchar_t*, int);  // 0011EF2C
+
+  static void LevelSelectScreenCheck();  // 0011EA4C
+};
+
+#endif

+ 132 - 0
jni/CFEEffects.cpp

@@ -0,0 +1,132 @@
+#include "CFEEffects.h"
+#include "CFTTCamera.h"
+#include "CFE.h"
+#include "CFTT3dGenShader.h"
+#include "CFTTRenderHelper.h"
+#include "Matrix.h"
+#include "CFTTGraphicsDevice.h"
+#include "CFTTColour.h"
+#include "CFTTTextureCache.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "Matrix.h"
+#include "memctrl.h"
+
+float const flt_2FDE68[8] = {0.06, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.6};
+
+//0034A9DC
+Particles CFEEffects::ms_tParticles[0x100];
+int CFEEffects::ms_iFEEffectsMat = -1;
+CFTTRenderHelper *CFEEffects::ms_pRenderHelper;
+float CFEEffects::ms_fXScaleAdjust;
+float CFEEffects::ms_fYScaleAdjust;
+struct UseBy_CFEEffects_ParticleRender_Sub {
+  CFTTVector32 vec32_0;
+  CFTTGraphicsDevice *p_cfttgraphicsdevice_c;
+  float f_10;
+  float f_14;
+};
+
+struct UseBy_CFEEffects_ParticleRender {
+  UseBy_CFEEffects_ParticleRender_Sub useby_cfeeffects_particlerender_sub[4];
+};
+
+const char *off_321A30[8] = {"data/fx/star1.png",
+                             "data/fx/star1.png",
+                             "data/fx/dot0.png",
+                             "data/fx/coin.png",
+                             "data/fx/dot0.png",
+                             "data/fx/dot0.png",
+                             "data/fx/smoke.png",
+                             "data/fx/star1.png"};
+
+//-------------------------------------------------------------------------------------------------
+//00123360
+void CFEEffects::Shutdown() {
+}
+//-------------------------------------------------------------------------------------------------
+//001233A8
+void CFEEffects::Reset() {
+}
+//-------------------------------------------------------------------------------------------------
+//001233E0
+void CFEEffects::LogicUpdate() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//001239D6
+void CFEEffects::RotatePointZ(CFTTVector32 &, CFTTVector32 *, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//00123A44
+Particles *CFEEffects::ParticleAdd(EFEParticle,
+                                   CFTTVector32 *,
+                                   CFTTVector32 *,
+                                   CFTTVector32 *,
+                                   int, float, float, uint,
+                                   uint, float, float, float, CFTTVector32 *) {
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//00123B14
+void CFEEffects::InitParticleFountain(float, float, EFEParticle, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00123E24
+void CFEEffects::ProcessLevelUpCircleAnim(float, float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//00123F0C
+void CFEEffects::ProcessVerticalXPWaterfall(float, float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//00123FB8
+void CFEEffects::InitEnergyExplosion(float, float, float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//001241E0
+void CFEEffects::InitDustRect(CFTTVector32 const &, float, float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//00124518
+void CFEEffects::InitStarExplosion(float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//00124670
+void CFEEffects::InitCreditTrail(float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//001247F4
+void CFEEffects::InitCreditExplosion(float, float) {
+}
+//-------------------------------------------------------------------------------------------------
+//0x00124A24
+void CFEEffects::StopAllAnimations() {
+}
+//-------------------------------------------------------------------------------------------------
+//00124A28 //??? 未实现
+void CFEEffects::StopCreditFountain() {
+  printf("CFEEffects::StopCreditFountain");
+}
+//-------------------------------------------------------------------------------------------------
+//001233DC //^_^
+void CFEEffects::Update(float f_r1) {
+}
+//-------------------------------------------------------------------------------------------------
+//001233E4 //^_^
+void CFEEffects::ParticleProcess() {
+}
+//-------------------------------------------------------------------------------------------------
+//001235B0 //-_- 经过单元测试,功能正常
+void CFEEffects::ParticleRender(uint ud_r0) {
+}
+//-------------------------------------------------------------------------------------------------
+//001234C8 //^_- 经过单元测试,功能正常
+//001234EE处我的是STR + STRD,原始代码是STRD + STR
+void CFEEffects::Render(uint d_r0) {
+}
+//-------------------------------------------------------------------------------------------------
+//00123288 //^_- 经过单元测试,功能正常
+//局部变量cfttvector32x4_v_30、cfttrenderhelp_initparams_v_30二者的内存空间中的前16个字节重叠
+void CFEEffects::Init(void) {
+}
+//-------------------------------------------------------------------------------------------------

+ 106 - 0
jni/CFEEffects.h

@@ -0,0 +1,106 @@
+// CFEEffects - [2020-04-13 11:57:46]
+#ifndef _CFEEFFECTS_H_
+#define _CFEEFFECTS_H_
+
+#include "CFTTVector32.h"
+#include "common.h"
+#include "CFTTRenderHelper.h"
+
+/*
+00123288 CFEEffects::Init()
+00123360 CFEEffects::Shutdown()
+001233A8 CFEEffects::Reset()
+001233DC CFEEffects::Update(float)
+001233E0 CFEEffects::LogicUpdate()
+001233E4 CFEEffects::ParticleProcess()
+001234C8 CFEEffects::Render(uint)
+001235B0 CFEEffects::ParticleRender(uint)
+001239D6 CFEEffects::RotatePointZ(CFTTVector32 &,CFTTVector32*,float)
+00123A44 CFEEffects::ParticleAdd(EFEParticle,CFTTVector32 *,CFTTVector32 *,CFTTVector32 *,int,float,float,uint,uint,float,float,float,CFTTVector32 *)
+00123B14 CFEEffects::InitParticleFountain(float,float,EFEParticle,int)
+00123E24 CFEEffects::ProcessLevelUpCircleAnim(float,float,float)
+00123F0C CFEEffects::ProcessVerticalXPWaterfall(float,float,float)
+00123FB8 CFEEffects::InitEnergyExplosion(float,float,float,float)
+001241E0 CFEEffects::InitDustRect(CFTTVector32 const&,float,float,float)
+00124518 CFEEffects::InitStarExplosion(float,float)
+00124670 CFEEffects::InitCreditTrail(float,float)
+001247F4 CFEEffects::InitCreditExplosion(float,float)
+00124A24 CFEEffects::StopAllAnimations()
+00124A28 CFEEffects::StopCreditFountain()
+*/
+
+enum EFEParticle {
+  EFEParticle_0,
+  EFEParticle_1,
+  EFEParticle_2,
+  EFEParticle_3,
+  EFEParticle_4,
+  EFEParticle_5,
+  EFEParticle_6,
+  EFEParticle_7,
+  EFEParticle_8,
+};
+
+struct Particles {
+  EFEParticle efeparticle_0;
+  CFTTVector32 cfttvector32_4;
+  CFTTVector32 cfttvector32_10;
+  CFTTVector32 cfttvector32_1c;
+  CFTTVector32 cfttvector32_28;
+  int field_34;
+  int field_38;
+  float field_3C;
+  float field_40;
+  float field_44;
+  float field_48;
+  float field_4C;
+  float field_50;
+  uint field_54;
+  uint field_58;
+};
+
+class CFEEffects {
+public:
+  // empty
+  static void Init();                                               // 00123288
+  static void Shutdown();                                           // 00123360
+  static void Reset();                                              // 001233A8
+  static void Update(float f_r1);                                   // 001233DC
+  static void LogicUpdate();                                        // 001233E0
+  static void ParticleProcess();                                    // 001233E4
+  static void Render(uint);                                         // 001234C8
+  static void ParticleRender(uint ud_r0);                           // 001235B0
+  static void RotatePointZ(CFTTVector32 &, CFTTVector32 *, float);  // 001239D6 //好像没有调用到
+  static Particles *ParticleAdd(EFEParticle efeparticle_r0_arg,
+                                CFTTVector32 *p_cfttvector32_r1_arg,
+                                CFTTVector32 *p_cfttvector32_r2_arg,
+                                CFTTVector32 *p_cfttvector32_r3_arg,
+                                int d_arg_0,
+                                float f_arg_4,
+                                float f_arg_8,
+                                uint ud_arg_c,
+                                uint ud_arg_10,
+                                float f_arg_14,
+                                float f_arg_18,
+                                float f_arg_1c,
+                                CFTTVector32 *p_cfttvector32_arg_20);  // 00123A44
+
+  static void InitParticleFountain(float, float, EFEParticle, int);     // 00123B14 //好像没有调用到
+  void ProcessLevelUpCircleAnim(float, float, float);                   // 00123E24 //好像没有调用到
+  void ProcessVerticalXPWaterfall(float, float, float);                 // 00123F0C //好像没有调用到
+  static void InitEnergyExplosion(float, float, float, float);          // 00123FB8
+  static void InitDustRect(CFTTVector32 const &, float, float, float);  // 001241E0
+  static void InitStarExplosion(float, float);                          // 00124518
+  static void InitCreditTrail(float, float);                            // 00124670
+  static void InitCreditExplosion(float, float);                        // 001247F4
+  static void StopAllAnimations();                                      // 00124A24 //好像没有调用到
+  static void StopCreditFountain();                                     // 00124A28 //好像没有调用到
+
+  static Particles ms_tParticles[0x100];  // 0034A9DC
+  static int ms_iFEEffectsMat;
+  static CFTTRenderHelper *ms_pRenderHelper;
+  static float ms_fXScaleAdjust;
+  static float ms_fYScaleAdjust;
+};
+
+#endif  //_CFEEFFECTS_H_

+ 71 - 0
jni/CFEHeroScene.cpp

@@ -0,0 +1,71 @@
+#include "CFEHeroScene.h"
+#include "GFXSCENE.h"
+#include "Matrix.h"
+#include "CMyProfile.h"
+#include "CModelManager.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "CTexLoadHelper.h"
+#include "CFTT3dGenShader.h"
+#include "CFTTVector32.h"
+#include "CGFXSpec.h"
+#include "CFTTTextureManager.h"
+#include "CGfxEnvironmentMap.h"
+#include "global_func.h"
+#include "CShaderSetup.h"
+#include "CPlayerShader.h"
+#include "CGfxCharacter.h"
+#include "memctrl.h"
+#include "GFXRENDER.h"
+#include "CFTTPlane32.h"
+#include "CDressingRoomShader.h"
+
+MYSTATIC const CFTTVector32 dword_2FDE50_mystatic[] = {{0.0, 0.0, 0.0}, {4.0, 0.0, 0.0}};
+
+//-------------------------------------------------------------------------------------------------
+//0011F4A8 //^_- 仔细对照了两边的汇编,自认为逻辑相同
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+//单元测试注意事项:
+//  调用CFTT3dGenShader::CreateMat函数传递CFTTTexParam类型的参数的传参是正确的
+//  调用CPlayerShader::Set[xxx]函数传递CFTTTexParam类型的参数的传参是错误的,原始的R1没有用到,我们用到了
+//  所以我测试的时候,在CFTTTexParam的起始位置加上一个无用参数,保证CPlayerShader::Set[xxx]函数传参是正确的
+//  CFTT3dGenShader::CreateMat函数调用我们自己的
+CFEHeroScene::CFEHeroScene(int d_r1_arg) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FA58
+CFEHeroScene::~CFEHeroScene() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011F848 //^_-
+//单元测试结果:
+//  1.输出的全局变量GFXSCENE_vLightDir值相同
+//  2.局部变量setting_v_58值相同
+void CFEHeroScene::ApplySceneSettings() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FAB8 //^_^
+void CFEHeroScene::PreRender(CGfxPostProcessRenderer& renderer_r1_arg) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FB4C //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFEHeroScene::RenderEnvironment(bool b_r1_arg) {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FDFE
+void CFEHeroScene::RenderGlows() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//0011FE00 //^_^
+void CFEHeroScene::RenderHUD() {
+}
+//-------------------------------------------------------------------------------------------------
+//0011FE8C
+void CFEHeroScene::RenderGlow(float, CFTTRenderHelper*) {
+}
+//-------------------------------------------------------------------------------------------------

+ 49 - 0
jni/CFEHeroScene.h

@@ -0,0 +1,49 @@
+// CFEHeroScene - [2020-04-13 11:57:46]
+#ifndef _CFEHEROSCENE_H_
+#define _CFEHEROSCENE_H_
+
+//#include "CGfxPostProcessRenderer.h"
+#include "CFTTRenderHelper.h"
+#include "CFTTModel.h"
+#include "CFTTVector32.h"
+
+/*
+0011F4A8 CFEHeroScene::CFEHeroScene(int)
+0011FA58 CFEHeroScene::~CFEHeroScene()
+0011F848 CFEHeroScene::ApplySceneSettings()
+0011FAB8 CFEHeroScene::PreRender(CGfxPostProcessRenderer &)
+0011FB4C CFEHeroScene::RenderEnvironment(bool)
+0011FDFE CFEHeroScene::RenderGlows()
+0011FE00 CFEHeroScene::RenderHUD()
+0011FE8C CFEHeroScene::RenderGlow(float,CFTTRenderHelper *)
+
+0x28
+*/
+
+class CGfxPostProcessRenderer;
+
+class CFEHeroScene {
+public:
+  CFEHeroScene(int);                          // 0011F4A8
+  ~CFEHeroScene();                            // 0011FA58
+  void ApplySceneSettings();                  // 0011F848
+  void PreRender(CGfxPostProcessRenderer&);   // 0011FAB8
+  void RenderEnvironment(bool);               // 0011FB4C
+  void RenderGlows();                         // 0011FDFE
+  void RenderHUD();                           // 0011FE00
+  void RenderGlow(float, CFTTRenderHelper*);  // 0011FE8C
+
+  CFTTModel* pModel_0;
+  int field_4;
+  int field_8;
+  CFTTRenderHelper* pRenderHelper_C;
+  CFTTVector32 vec32_10;
+  int field_1C;
+  int field_20;
+  char field_24;  // maybe bool
+  char field_25;
+  char field_26;
+  char field_27;
+};
+
+#endif  //_CFEHEROSCENE_H_

+ 108 - 0
jni/CFEImages.cpp

@@ -0,0 +1,108 @@
+#include "CFEImages.h"
+#include "CFTTTexLoadOptions.h"
+#include "SYSCORE.h"
+#include "CFTTTextureCache.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "str_conv.h"
+#include "memctrl.h"
+
+uchar CFEImages::s_tLoadScreenTextures[1088];
+CFEImages *CFEImages::s_pInst = nullptr;
+bool CFEImages::s_bScaleLoadedTexture;
+//-------------------------------------------------------------------------------------------------
+struct AtlasFileType {
+  const char *pFile;
+  int dType;
+};
+//-------------------------------------------------------------------------------------------------
+AtlasFileType list_322C28[] = {
+    {"Data/FE/UI/common.atlas", 1},
+    {"Data/env/adimages/adimages.atlas", 0},
+    {"Data/FE/hud/hud.atlas", 0},
+    {"Data/FE/hero/hero.atlas", 0},
+    {"Data/FE/customise/customise.atlas", 0},
+    {"Data/FE/flags/flags.atlas", 0},
+    {"Data/FE/keyboard/keyboard.atlas", 0},
+};
+//-------------------------------------------------------------------------------------------------
+//0014C6F8 //^_^
+CFEImages::CFEImages() {
+}
+//-------------------------------------------------------------------------------------------------
+//0014C734 //^_^
+CFEImages::~CFEImages() {
+  // empty
+}
+//-------------------------------------------------------------------------------------------------
+//0014C71C //^_^
+void CFEImages::ClearCache() {
+}
+//-------------------------------------------------------------------------------------------------
+//0014C738 //^_^
+void CFEImages::Free() {
+}
+//-------------------------------------------------------------------------------------------------
+//0014C758
+void CFEImages::FreeAtlases() {
+}
+//-------------------------------------------------------------------------------------------------
+//0014C7D0 //^_^ 经过单元测试,功能正常
+CFEImages *CFEImages::GetInstance() {
+  // loc_14C800
+  return s_pInst;
+}
+//-------------------------------------------------------------------------------------------------
+//0014C80C ^_- 经过单元测试,功能正常 有栈保护
+// CFEImages::GetTexture("PKG:/Data/fe/mag/magbg_1.jpg", a3, eFormat, a5, a6, a7);
+// FETU_GetImage(&image, "PKG:/Data/fe/splash/ftg_logo.ftc", false, EFTTTexFormat_19, false, false, true);
+CFTTTexture *CFEImages::GetTexture(char const *pFileName,
+                                   bool b,
+                                   EFTTTexFormat e,
+                                   bool b1,
+                                   bool b2,
+                                   bool b3) {
+  // loc_14C8BE
+  //00222D20 CFTTTextureCache::GetTexture(char const*,CFTTTexLoadOptions const&,uint)
+  return nullptr;
+}
+//-------------------------------------------------------------------------------------------------
+//0014C8E8
+void CFEImages::HighToLowResProcess(CFTTTexture **) {
+  //没有调用到
+  LOGI("CFEImages::HighToLowResProcess: Entry");
+}
+//-------------------------------------------------------------------------------------------------
+//0014CC84
+void CFEImages::CacheFree() {
+  //没有调用到
+  LOGI("CFEImages::CacheFree: Entry");
+}
+//-------------------------------------------------------------------------------------------------
+//0014CCBC -_- 经过单元测试,功能正常
+void CFEImages::LoadAtlasData() {
+}
+//-------------------------------------------------------------------------------------------------
+//0014CE24 //^_^ 经过单元测试,功能正常
+void CFEImages::ReorderAtlases() {
+  // locret_14CE5C
+}
+//-------------------------------------------------------------------------------------------------
+//0014CE5E
+void CFEImages::SwapAtlasPositions(ushort a1, ushort a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014CE9A //^_- 经过单元测试,功能正常
+void CFEImages::FreeAtlasCache(bool b) {
+}
+//-------------------------------------------------------------------------------------------------
+//0014CEEE
+void CFEImages::FreeAtlasCacheByTimestamp() {
+  //没有调用到
+}
+//-------------------------------------------------------------------------------------------------
+//0014CF60 //^_- 经过单元测试,功能正常
+//有栈保护, 单元测试已跑过所有分支
+bool CFEImages::FindAndOpenAtlas(TAtlasData *pAtlasData, char const *pName) {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------

+ 67 - 0
jni/CFEImages.h

@@ -0,0 +1,67 @@
+// CFEImages - [2020-04-13 11:57:46]
+#ifndef _CFEIMAGES_H_
+#define _CFEIMAGES_H_
+
+#include "CFTTTextureAtlas.h"
+
+/*
+0014C6F8 CFEImages::CFEImages()
+0014C734 CFEImages::~CFEImages()
+0014C71C CFEImages::ClearCache()
+0014C738 CFEImages::Free()
+0014C758 CFEImages::FreeAtlases()
+0014C7D0 CFEImages::GetInstance()
+0014C80C CFEImages::GetTexture(char const*,bool,EFTTTexFormat,bool,bool,bool)
+0014C8E8 CFEImages::HighToLowResProcess(CFTTTexture **)
+0014CC84 CFEImages::CacheFree()
+0014CCBC CFEImages::LoadAtlasData()
+0014CE24 CFEImages::ReorderAtlases()
+0014CE5E CFEImages::SwapAtlasPositions(ushort,ushort)
+0014CE9A CFEImages::FreeAtlasCache(bool)
+0014CEEE CFEImages::FreeAtlasCacheByTimestamp()
+0014CF60 CFEImages::FindAndOpenAtlas(TAtlasData *,char const*)
+
+0x10
+*/
+
+// 0xC    0014D002 0C 35         ADDS            R5, #0xC
+struct TAtlasData {
+  CFTTTextureAtlas *pTextureAtlas_0;
+  short field_4;  //大多数代码是按照2个字节short读写,少数是按4个字节int读取,总体上,我认为是short. anderson
+                  // 0014CFEA   LDR             R2, [R2,#4]
+  short field_6;
+  uint32_t dTick_8;
+};
+
+class CFEImages {
+public:
+  CFEImages();                      // 0014C6F8
+  ~CFEImages();                     // 0014C734
+  void ClearCache();                // 0014C71C
+  void Free();                      // 0014C738
+  void FreeAtlases();               // 0014C758
+  static CFEImages *GetInstance();  // 0014C7D0
+  CFTTTexture *GetTexture(char const *pFileName,
+                          bool b, EFTTTexFormat e,
+                          bool b1,
+                          bool b2, bool b3);          // 0014C80C
+  void HighToLowResProcess(CFTTTexture **);           // 0014C8E8
+  void CacheFree();                                   // 0014CC84
+  void LoadAtlasData();                               // 0014CCBC
+  void ReorderAtlases();                              // 0014CE24
+  void SwapAtlasPositions(ushort, ushort);            // 0014CE5E
+  void FreeAtlasCache(bool);                          // 0014CE9A
+  void FreeAtlasCacheByTimestamp();                   // 0014CEEE
+  bool FindAndOpenAtlas(TAtlasData *, char const *);  // 0014CF60
+
+  bool byte_0;
+  TAtlasData *list_4;
+  uint **pHashTable_8;
+  int *list_count_C;
+
+  static uchar s_tLoadScreenTextures[1088];
+  static CFEImages *s_pInst;
+  static bool s_bScaleLoadedTexture;
+};
+
+#endif  //_CFEIMAGES_H_

+ 144 - 0
jni/CFEKeyboard.cpp

@@ -0,0 +1,144 @@
+#include "CFEKeyboard.h"
+#include "AndroidApp.h"
+#include "SYSCORE.h"
+#include "CFE.h"
+#include "SYS.h"
+#include "XCTRL.h"
+
+bool CFEKeyboard::ms_bShowKeyboard;  //0034A930
+
+//-------------------------------------------------------------------------------------------------
+//0011FFEC
+CFEKeyboard::CFEKeyboard(bool a2, const wchar_t *a3, EKeyboardType a4, float a5, bool a6) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120324
+CFEKeyboard::~CFEKeyboard() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120220
+void CFEKeyboard::Show() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120274
+void CFEKeyboard::SetString(wchar_t const *a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120320
+void CFEKeyboard::Setup() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//00120378
+void CFEKeyboard::Hide() {
+}
+//-------------------------------------------------------------------------------------------------
+//001203CC
+void CFEKeyboard::RecalculateRowOffsets() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//001203CE
+void CFEKeyboard::SetPlaceHolderText(wchar_t const *) {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//001203D0
+int CFEKeyboard::Process() {
+  return 1;
+}
+//-------------------------------------------------------------------------------------------------
+//00120710 //^_^
+void CFEKeyboard::ToggleKeyboard() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120758
+void CFEKeyboard::BackSpace() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120778
+void CFEKeyboard::GetStringLength() {
+}
+//-------------------------------------------------------------------------------------------------
+//001207C0
+void CFEKeyboard::Space() {
+}
+//-------------------------------------------------------------------------------------------------
+//001207F4 //^_^
+void CFEKeyboard::Render() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120848
+void CFEKeyboard::CheckMinimumLength() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012089c ^_^
+const wchar_t *CFEKeyboard::GetString() {
+  return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//00120928
+void CFEKeyboard::ClearTextfieldOnBeginEdit(bool) {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//0012092C
+//0012092c ^_^
+void CFEKeyboard::SetMaxNumChars(int a2) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012097C
+void CFEKeyboard::GetKeyRect(uchar, TRectI *, bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120E00
+int CFEKeyboard::GetKeyArrayIndex(uchar a1) {
+  return a1 - 6;
+}
+//-------------------------------------------------------------------------------------------------
+//00120E06
+void CFEKeyboard::RenderKey(uchar, bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120E08
+void CFEKeyboard::RenderCursor(float, float, wchar_t *, uint) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120E6C
+void CFEKeyboard::GetKeyTexture(TImage *, uchar) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120EA8
+void CFEKeyboard::GetKeyTextureHandle(TImage *, uchar) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120EE4
+void CFEKeyboard::GetKey(uchar, uchar) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120EF2
+void CFEKeyboard::HideTextField() {
+  field_850 = 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00120EFA
+void CFEKeyboard::HideIfNeeded() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120F12
+void CFEKeyboard::ShowTextField() {
+}
+//-------------------------------------------------------------------------------------------------
+//00120F1A
+void CFEKeyboard::SetEnteringPassword(bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120F20
+void CFEKeyboard::ShowKeyboard(bool b0) {
+}
+//-------------------------------------------------------------------------------------------------
+//00120f30 ^_^
+bool CFEKeyboard::IsShowing() {
+  return false;
+}
+//-------------------------------------------------------------------------------------------------

+ 132 - 0
jni/CFEKeyboard.h

@@ -0,0 +1,132 @@
+//CFEKeyboard - [2020-04-13 11:57:46]
+#ifndef _CFEKEYBOARD_H_
+#define _CFEKEYBOARD_H_
+
+#include "FETU.h"
+
+/*
+0011FFEC CFEKeyboard::CFEKeyboard(bool,wchar_t const*,EKeyboardType,float,bool)
+00120324 CFEKeyboard::~CFEKeyboard()
+00120220 CFEKeyboard::Show()
+00120274 CFEKeyboard::SetString(wchar_t const*)
+00120320 CFEKeyboard::Setup()
+00120378 CFEKeyboard::Hide()
+001203CC CFEKeyboard::RecalculateRowOffsets()
+001203CE CFEKeyboard::SetPlaceHolderText(wchar_t const*)
+001203D0 CFEKeyboard::Process()
+00120710 CFEKeyboard::ToggleKeyboard()
+00120758 CFEKeyboard::BackSpace()
+00120778 CFEKeyboard::GetStringLength()
+001207C0 CFEKeyboard::Space()
+001207F4 CFEKeyboard::Render()
+00120848 CFEKeyboard::CheckMinimumLength()
+0012089C CFEKeyboard::GetString()
+00120928 CFEKeyboard::ClearTextfieldOnBeginEdit(bool)
+0012092C CFEKeyboard::SetMaxNumChars(int)
+0012097C CFEKeyboard::GetKeyRect(uchar,TRectI *,bool)
+00120E00 CFEKeyboard::GetKeyArrayIndex(uchar)
+00120E06 CFEKeyboard::RenderKey(uchar,bool)
+00120E08 CFEKeyboard::RenderCursor(float,float,wchar_t *,uint)
+00120E6C CFEKeyboard::GetKeyTexture(TImage *,uchar)
+00120EA8 CFEKeyboard::GetKeyTextureHandle(TImage *,uchar)
+00120EE4 CFEKeyboard::GetKey(uchar,uchar)
+00120EF2 CFEKeyboard::HideTextField()
+00120EFA CFEKeyboard::HideIfNeeded()
+00120F12 CFEKeyboard::ShowTextField()
+00120F1A CFEKeyboard::SetEnteringPassword(bool)
+00120F20 CFEKeyboard::ShowKeyboard(bool)
+00120F30 CFEKeyboard::IsShowing()
+
+//0x878
+*/
+
+enum EKeyboardType {
+  EKeyboardType_0,
+  EKeyboardType_1,
+  EKeyboardType_2,
+  EKeyboardType_3,
+  EKeyboardType_4,
+  EKeyboardType_5,
+};
+
+class CFEKeyboard {
+public:
+  CFEKeyboard(bool, wchar_t const *, EKeyboardType, float, bool);  //0011FFEC
+  ~CFEKeyboard();                                                  //00120324
+  void Show();                                                     //00120220
+  void SetString(wchar_t const *);                                 //00120274
+  void Setup();                                                    //00120320
+  void Hide();                                                     //00120378
+  void RecalculateRowOffsets();                                    //001203CC
+  void SetPlaceHolderText(wchar_t const *);                        //001203CE
+  int Process();                                                   //001203D0
+  void ToggleKeyboard();                                           //00120710
+  void BackSpace();                                                //00120758
+  void GetStringLength();                                          //00120778
+  void Space();                                                    //001207C0
+  void Render();                                                   //001207F4
+  void CheckMinimumLength();                                       //00120848
+  const wchar_t *GetString();                                      //0012089C
+  void ClearTextfieldOnBeginEdit(bool);                            //00120928
+  void SetMaxNumChars(int);                                        //0012092C
+  void GetKeyRect(uchar, TRectI *, bool);                          //0012097C
+  int GetKeyArrayIndex(uchar);                                     //00120E00
+  void RenderKey(uchar, bool);                                     //00120E06
+  void RenderCursor(float, float, wchar_t *, uint);                //00120E08
+  void GetKeyTexture(TImage *, uchar);                             //00120E6C
+  void GetKeyTextureHandle(TImage *, uchar);                       //00120EA8
+  void GetKey(uchar, uchar);                                       //00120EE4
+  void HideTextField();                                            //00120EF2
+  void HideIfNeeded();                                             //00120EFA
+  void ShowTextField();                                            //00120F12
+  void SetEnteringPassword(bool);                                  //00120F1A
+  static void ShowKeyboard(bool);                                  //00120F20
+  bool IsShowing();                                                //00120F30
+
+  float f_0;
+  float f_4;
+  float f_8;
+  float f_C;
+  char field_10;
+  char field_11;
+  char field_12;
+  char field_13;
+  int field_14;
+  uint64_t field_18;
+  uint64_t field_20;
+  char field_28;
+  char field_29;
+  char field_2A;
+  char field_2B;
+  int field_2C;  //field_30的count 0x200
+  wchar_t pWBuf_30[0x200];
+  wchar_t pWbuf_430[0x200];
+  EKeyboardType eType_830;
+  int field_834;
+  int field_838;
+  char field_83C;
+  char field_83D;
+  char field_83E;
+  char field_83F;
+  float f_840;
+  int field_844;
+  int field_848;
+  int field_84C;
+  bool field_850;
+  bool field_851;
+  bool field_852;
+  bool field_853;
+  bool b_854;
+  char field_855;
+  char field_856;
+  char field_857;
+  int field_858;
+  float f_85C;
+  float f_860;
+  int field_864;
+  TRectI rectI_868;
+
+  static bool ms_bShowKeyboard;
+};
+
+#endif  //_CFEKEYBOARD_H_

+ 61 - 0
jni/CFESAndroidGraphics.cpp

@@ -0,0 +1,61 @@
+#include "CFESAndroidGraphics.h"
+
+//-------------------------------------------------------------------------------------------------
+//00153510
+CFESAndroidGraphics::CFESAndroidGraphics() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125394
+CFESAndroidGraphics::~CFESAndroidGraphics() {
+}
+//-------------------------------------------------------------------------------------------------
+//00124EDC
+void CFESAndroidGraphics::Init() {
+  LOGI("CFESAndroidGraphics::Init");
+}
+//-------------------------------------------------------------------------------------------------
+//0012509C
+void CFESAndroidGraphics::Process() {
+  LOGI("CFESAndroidGraphics::Process");
+}
+//-------------------------------------------------------------------------------------------------
+//001250A6
+void CFESAndroidGraphics::Render2D() {
+  LOGI("CFESAndroidGraphics::Render2D");
+}
+//-------------------------------------------------------------------------------------------------
+//001250AC
+void CFESAndroidGraphics::Render2DHUD() {
+  LOGI("CFESAndroidGraphics::Render2DHUD");
+}
+//-------------------------------------------------------------------------------------------------
+//00125130
+void CFESAndroidGraphics::SendGraphicsAnalytics() {
+  LOGI("CFESAndroidGraphics::SendGraphicsAnalytics");
+}
+//-------------------------------------------------------------------------------------------------
+//0012520C
+void CFESAndroidGraphics::Exit() {
+  LOGI("CFESAndroidGraphics::Exit");
+}
+//-------------------------------------------------------------------------------------------------
+//00125210
+void CFESAndroidGraphics::OnBackPressed() {
+  LOGI("CFESAndroidGraphics::OnBackPressed");
+}
+//-------------------------------------------------------------------------------------------------
+//00125288
+void CFESAndroidGraphics::RebootGameCB(int, void *) {
+  LOGI("CFESAndroidGraphics::RebootGameCB");
+}
+//-------------------------------------------------------------------------------------------------
+//001252B8
+void CFESAndroidGraphics::OnInfoPressed() {
+  LOGI("CFESAndroidGraphics::OnInfoPressed");
+}
+//-------------------------------------------------------------------------------------------------
+//00125328
+void CFESAndroidGraphics::HelpCB(int, void *) {
+  LOGI("CFESAndroidGraphics::HelpCB");
+}
+//-------------------------------------------------------------------------------------------------

+ 42 - 0
jni/CFESAndroidGraphics.h

@@ -0,0 +1,42 @@
+// CFESAndroidGraphics - [2020-04-13 11:57:46]
+#ifndef _CFESANDROIDGRAPHICS_H_
+#define _CFESANDROIDGRAPHICS_H_
+
+#include "common.h"
+#include "CFEScreen.h"
+
+/*
+00153510 CFESAndroidGraphics::CFESAndroidGraphics()
+00125394 CFESAndroidGraphics::~CFESAndroidGraphics()
+00124EDC CFESAndroidGraphics::Init()
+0012509C CFESAndroidGraphics::Process()
+001250A6 CFESAndroidGraphics::Render2D()
+001250AC CFESAndroidGraphics::Render2DHUD()
+00125130 CFESAndroidGraphics::SendGraphicsAnalytics()
+0012520C CFESAndroidGraphics::Exit()
+00125210 CFESAndroidGraphics::OnBackPressed()
+00125288 CFESAndroidGraphics::RebootGameCB(int,void *)
+001252B8 CFESAndroidGraphics::OnInfoPressed()
+00125328 CFESAndroidGraphics::HelpCB(int,void *)
+*/
+
+class CFESAndroidGraphics : public CFEScreen {
+public:
+  CFESAndroidGraphics();                  // 00153510
+  virtual ~CFESAndroidGraphics();         // 00125394
+  void Init();                            // 00124EDC
+  virtual void Process();                 // 0012509C
+  void Render2D();                        // 001250A6
+  void Render2DHUD();                     // 001250AC
+  static void SendGraphicsAnalytics();    // 00125130
+  void Exit();                            // 0012520C
+  static void OnBackPressed();            // 00125210
+  static void RebootGameCB(int, void *);  // 00125288
+  static void OnInfoPressed();            // 001252B8
+  static void HelpCB(int, void *);        // 00125328
+  static int ms_iValues[3];
+  static uint ms_iOriginalValues[3];
+  ;
+};
+
+#endif  //_CFESANDROIDGRAPHICS_H_

+ 198 - 0
jni/CFESChooseHero.cpp

@@ -0,0 +1,198 @@
+#include "CFESChooseHero.h"
+#include "CFE.h"
+#include "CFTTDevice.h"
+#include "CFTTVector32x4.h"
+#include "CGFXSpec.h"
+#include "CGfxKits.h"
+#include "CGfxShadowMapManager.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "CPlayerShader.h"
+#include "FETU.h"
+#include "FREE.h"
+#include "GFXCAMERA.h"
+#include "GFXRENDER.h"
+#include "Matrix.h"
+#include "SNDFE.h"
+#include "TGame.h"
+#include "XCTRL.h"
+#include "FE2D.h"
+#include "CFTTBatchModelManager.h"
+#include "CMessageBoxHandler.h"
+#include "CGfxPlayer.h"
+#include "CFTTCamera.h"
+#include "CFTTServerTime.h"
+#include "XSYS.h"
+#include "CUITileHUDText.h"
+#include "CFTTTextureManager.h"
+#include "CDataBase.h"
+#include "CUITileNationality.h"
+#include "SETUP.h"
+#include "memctrl.h"
+
+struct struct_CFEScreen {
+  int vtable_ptr;
+  CUITileManager *m_pUITileManager_4;
+  bool m_bfield_8;
+  int dId_C;
+};
+
+struct CountryInfo {
+  const char *pc_country_code;
+  int d_country_num;
+};
+
+struct SixInt {
+  uint field_0[6];
+};
+
+bool CFESChooseHero::ms_bBackButtonPressed;
+
+const CountryInfo country_info_321AD4[] = {{"ES", 0xC7}, {"IT", 0xC8}, {"DE", 0xC9}, {"NL", 0xCA}, {"HR", 0xCB}, {"BR", 0xCC}, {"AR", 0xCD}, {"CZ", 0xCE}, {"PT", 0xCF}, {"TR", 0xD0}, {"FR", 0xD1}, {"RU", 0xD2}, {"CM", 0xD3}, {"GB", 0xD4}, {"GR", 0xD6}, {"GH", 0xD7}, {"EG", 0xD8}, {"UY", 0xD9}, {"CI", 0xDA}, {"MX", 0xDB}, {"PY", 0xDC}, {"NG", 0xDD}, {"US", 0xDE}, {"CO", 0xDF}, {"PL", 0xE0}, {"SE", 0xE1}, {"JP", 0xE3}, {"MA", 0xE4}, {"IE", 0xE5}, {"AU", 0xE6}, {"CL", 0xE7}, {"TN", 0xE8}, {"SN", 0xE9}, {"IR", 0XEA}, {"SA", 0xEB}, {"KR", 0xEC}, {"EC", 0xED}, {"HN", 0xEF}, {"ZA", 0xF1}, {"CR", 0xF2}, {"TT", 0xF3}, {"CA", 0xF4}, {"CN", 0xF5}, {"JM", 0xF6}, {"KP", 0xF7}, {"BB", 0xF8}, {"IN", 0xF9}, {"DZ", 0xFA}, {"SI", 0xFB}, {"RS", 0xFC}, {"DK", 0xFD}, {"SK", 0xFF}, {"CH", 0x100}, {"BE", 0x155}, {"UA", 0x164}, {"BG", 0x165}, {"RO", 0x166}, {"NO", 0X167}, {"AT", 0X168}, {"MK", 0X17C}, {"HU", 0x17F}, {"PE", 0x180}, {"SM", 0x181}, {"FI", 0x183}, {"KW", 0x185}, {"BA", 0x186}, {"IL", 0x187}, {"ME", 0x18B}, {"GE", 0x18E}, {"IS", 0x190}, {"LU", 0x194}, {"IQ", 0x1A3}, {"QA", 0x1A6}, {"HK", 0x1F9}, {"ID", 0X1FC}, {"MY", 0x1FD}, {"SG", 0x1FF}, {"TH", 0x1FA}, {"AE", 0x1FE}, {"VN", 0x1FB}, {"NZ", 0xFE}};
+
+MYSTATIC int dword_336264_mystaic[] = {0xC7, 0xC8, 0xC9, 0xCA, 0xCC, 0xCD, 0xCF, 0xD0,
+                                       0xD1, 0xD4, 0xD5, 0xDB, 0xDE, 0xE3, 0xEB, 0xEE};
+MYSTATIC char byte_350691_mystatic;
+
+const SixInt dword_2FE0D0[] = {{0x0, 0x0, 0x1, 0xC, 0x1, 0x1},
+                               {0x0, 0x0, 0x3, 0xC, 0x1, 0x2},
+                               {0x1, 0x1, 0x2, 0xC, 0x2, 0x1},
+                               {0x3, 0x2, 0x0, 0x6, 0x2, 0x2},
+                               {0x4, 0x3, 0x0, 0x6, 0x1, 0x0},
+                               {0x5, 0x4, 0x0, 0x7, 0x2, 0x0}};
+
+//-------------------------------------------------------------------------------------------------
+//001253A4 //^_- 待完成 参考https://reverseengineering.stackexchange.com/questions/4543/what-is-a-non-virtual-thunk
+CFESChooseHero::CFESChooseHero() {
+}
+//-------------------------------------------------------------------------------------------------
+//001253F0 001253F4
+//编译器生成的代码,不用写
+CFESChooseHero::~CFESChooseHero() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125408 //^_-
+//单元测试等级: 测试本类成员字段的值
+//单元测试结果: 完全相同
+void CFESChooseHero::Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125630 //^_^
+bool CFESChooseHero::UseMinimalScene() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//00125648 //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::SetupPlayers() {
+}
+//-------------------------------------------------------------------------------------------------
+//001257FC //^_^
+void CFESChooseHero::LocaliseCommonCountryList() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125858 //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::SetupSelectText(int d_r1_arg, float f_r2_arg, bool b_r3_arg) {
+}
+//-------------------------------------------------------------------------------------------------
+//001258F8 //^_^
+void CFESChooseHero::Exit() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012596C //^_^
+void CFESChooseHero::ProcessChoosePlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125A34
+void CFESChooseHero::SetupNationality() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125BFC //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::ProcessPlayer() {
+  // LOGI("CFESChooseHero::ProcessPlayer end");
+}
+//-------------------------------------------------------------------------------------------------
+//00125D90 //^_^
+void CFESChooseHero::UpdateCamera() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125EE8 //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::UpdatePosition() {
+}
+//-------------------------------------------------------------------------------------------------
+//00125FB8 //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::Process() {
+  // LOGI("CFESChooseHero::Process entry");
+
+  //0012622C end
+  // LOGI("CFESChooseHero::Process return 3");
+}
+//-------------------------------------------------------------------------------------------------
+//00126260
+void CFESChooseHero::ShutdownNationality() {
+  LOGI("CFESChooseHero::ShutdownNationality: %d", this->field_450);
+}
+//-------------------------------------------------------------------------------------------------
+//0012627C //^_^
+void CFESChooseHero::ProcessNationality() {
+}
+//-------------------------------------------------------------------------------------------------
+//001262A2
+void CFESChooseHero::Render2D() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//001262A4 //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::SetupCamera(bool b_r1_arg) {
+  LOGI("CFESChooseHero::SetupCamera end");
+};
+//-------------------------------------------------------------------------------------------------
+//自己添加的函数,避免全局变量被优化没了,保证汇编相同和可以进行单元测试,整体测试的时候,这个函数可以删除
+void CFESChooseHeroTest(int r0) {
+  // byte_350691_mystatic = r0;
+}
+//-------------------------------------------------------------------------------------------------
+//0012644C //^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 启动游戏到第2关(包括第2关)
+//单元测试结果: 正常
+void CFESChooseHero::PreRender3D() {
+  LOGI("CFESChooseHero::PreRender3D entry");
+}
+//-------------------------------------------------------------------------------------------------
+//001265F0 //^_^
+void CFESChooseHero::Render3D() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012665C //^_^
+void CFESChooseHero::RenderScene(EGfxRenderPass egfxrenderpass_r1_arg) {
+}
+//-------------------------------------------------------------------------------------------------
+//00126738 //^_^
+void CFESChooseHero::Render2DHUD() {
+}
+//-------------------------------------------------------------------------------------------------
+//001268CC //未调用到
+void CFESChooseHero::SetNationalKit() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126938
+void CFESChooseHero::BackButtonPressed() {
+}
+//-------------------------------------------------------------------------------------------------

+ 107 - 0
jni/CFESChooseHero.h

@@ -0,0 +1,107 @@
+// CFESChooseHero - [2020-04-13 11:57:46]
+#ifndef _CFESCHOOSEHERO_H_
+#define _CFESCHOOSEHERO_H_
+
+#include "render.h"
+#include "CFEScreen.h"
+#include "CFE3DPlayer.h"
+#include "CFEHeroScene.h"
+#include "CGfxPostProcessRenderer.h"
+
+/*
+001253A4 CFESChooseHero::CFESChooseHero()
+001253F0 CFESChooseHero::~CFESChooseHero()
+001253F4 CFESChooseHero::~CFESChooseHero()
+00125408 CFESChooseHero::Init()
+00125630 CFESChooseHero::UseMinimalScene()
+00125648 CFESChooseHero::SetupPlayers()
+001257FC CFESChooseHero::LocaliseCommonCountryList()
+00125858 CFESChooseHero::SetupSelectText(int,float,bool)
+001258F8 CFESChooseHero::Exit()
+0012596C CFESChooseHero::ProcessChoosePlayer()
+00125A34 CFESChooseHero::SetupNationality()
+00125BFC CFESChooseHero::ProcessPlayer()
+00125D90 CFESChooseHero::UpdateCamera()
+00125EE8 CFESChooseHero::UpdatePosition()
+00125FB8 CFESChooseHero::Process()
+00126260 CFESChooseHero::ShutdownNationality()
+0012627C CFESChooseHero::ProcessNationality()
+001262A2 CFESChooseHero::Render2D()
+001262A4 CFESChooseHero::SetupCamera(bool)
+0012644C CFESChooseHero::PreRender3D()
+001265F0 CFESChooseHero::Render3D()
+0012665C CFESChooseHero::RenderScene(EGfxRenderPass)
+00126738 CFESChooseHero::Render2DHUD()
+001268CC CFESChooseHero::SetNationalKit()
+00126938 CFESChooseHero::BackButtonPressed()
+
+0x464
+*/
+
+class CFESChooseHero : public CFEScreen, public CGfxPostProcessRenderer {
+public:
+  CFESChooseHero();            // 001253A4
+  ~CFESChooseHero();           // 001253F0 001253F4
+  virtual void Init();         // 00125408
+  virtual void Exit();         // 001258F8
+  virtual void Process();      // 00125FB8
+  virtual void Render2D();     // 001262A2
+  virtual void PreRender3D();  // 0012644C
+  virtual void Render3D();     // 001265F0
+  virtual void Render2DHUD();  // 00126738
+
+  void SetupPlayers();                     // 00125648
+  void SetupSelectText(int, float, bool);  // 00125858
+  void ProcessChoosePlayer();              // 0012596C
+  void SetupNationality();                 // 00125A34
+  void ProcessPlayer();                    // 00125BFC
+  void UpdateCamera();                     // 00125D90
+  void UpdatePosition();                   // 00125EE8
+  void ShutdownNationality();              // 00126260
+  void SetupCamera(bool);                  // 001262A4
+  void RenderScene(EGfxRenderPass);        // 0012665C
+  void SetNationalKit();                   // 001268CC
+
+  static bool UseMinimalScene();            // 00125630
+  static void LocaliseCommonCountryList();  // 001257FC
+  static void ProcessNationality();         // 0012627C
+  static void BackButtonPressed();          // 00126938
+
+  // size 0x464
+  // int vtable_0
+  //父类CFEScreen 0xc
+  //父类CGfxPostProcessRenderer field_10; //00126570
+  int player_index_14[6];  //更衣室6个球员随机列表
+  TPlayerInfo tPlayerInfo_2C[6];
+  CFE3DPlayer* p3DPlayer_344[6];
+  TPoint3D point3D_35C[6];
+  int field_3a4[6];
+  int field_3bc[6];
+  int field_3d4[6];
+  int field_3ec[6];
+  TBuildKitTeamTextures tBKTTex_404;
+  int field_41c;
+  int dSelect_420;  //被选中的球员
+  int field_424;
+  // int field_426;
+  CFTTVector32 field_428;
+
+  float field_434;
+  float field_438;
+  float field_43c;
+
+  int field_440;
+  int field_444;
+  int field_448;
+  int field_44c;
+
+  int field_450;
+  int field_454;
+  CFEHeroScene* pHeroScene_458;
+  int field_45c;
+  bool field_460;
+
+  static bool ms_bBackButtonPressed;
+};
+
+#endif  //_CFESCHOOSEHERO_H_

+ 104 - 0
jni/CFESChooseSideHero.cpp

@@ -0,0 +1,104 @@
+#include "CFESChooseSideHero.h"
+
+bool CFESChooseSideHero::ms_bBackButtonPressed;
+
+//-------------------------------------------------------------------------------------------------
+//0012694C
+CFESChooseSideHero::CFESChooseSideHero() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126994 00126998
+CFESChooseSideHero::~CFESChooseSideHero() {
+}
+//-------------------------------------------------------------------------------------------------
+//001269A8
+void CFESChooseSideHero::Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126C00
+void CFESChooseSideHero::UseMinimalScene() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126C18
+void CFESChooseSideHero::SetupPlayers() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126DB4
+void CFESChooseSideHero::LocaliseCommonCountryList() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126E10
+void CFESChooseSideHero::SetupSelectText(int, float, bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//00126EB0
+void CFESChooseSideHero::Exit() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126F24
+void CFESChooseSideHero::ProcessChoosePlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//00126FEC
+void CFESChooseSideHero::SetupNationality() {
+}
+//-------------------------------------------------------------------------------------------------
+//001271B4
+void CFESChooseSideHero::ProcessPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//00127318
+void CFESChooseSideHero::UpdateCamera() {
+}
+//-------------------------------------------------------------------------------------------------
+//00127470
+void CFESChooseSideHero::UpdatePosition() {
+}
+//-------------------------------------------------------------------------------------------------
+//001274D8
+void CFESChooseSideHero::Process() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012778C
+void CFESChooseSideHero::ShutdownNationality() {
+}
+//-------------------------------------------------------------------------------------------------
+//001277A8
+void CFESChooseSideHero::ProcessNationality() {
+}
+//-------------------------------------------------------------------------------------------------
+//001277CE
+void CFESChooseSideHero::Render2D() {
+  LOGI("CFESChooseSideHero::Render2D");
+}
+//-------------------------------------------------------------------------------------------------
+//001277D0
+void CFESChooseSideHero::SetupCamera(bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//001278D8
+void CFESChooseSideHero::PreRender3D() {
+  LOGI("CFESChooseSideHero::PreRender3D");
+}
+//-------------------------------------------------------------------------------------------------
+//001279A8
+void CFESChooseSideHero::Render3D() {
+}
+//-------------------------------------------------------------------------------------------------
+//001279C0
+void CFESChooseSideHero::RenderScene(EGfxRenderPass) {
+}
+//-------------------------------------------------------------------------------------------------
+//00127A9C
+void CFESChooseSideHero::Render2DHUD() {
+}
+//-------------------------------------------------------------------------------------------------
+//00127C30
+void CFESChooseSideHero::SetNationalKit() {
+}
+//-------------------------------------------------------------------------------------------------
+//00127C9C
+void CFESChooseSideHero::BackButtonPressed() {
+  CFESChooseSideHero::ms_bBackButtonPressed = true;
+}
+//-------------------------------------------------------------------------------------------------

+ 114 - 0
jni/CFESChooseSideHero.h

@@ -0,0 +1,114 @@
+// CFESChooseSideHero - [2020-04-13 11:57:46]
+#ifndef _CFESCHOOSESIDEHERO_H_
+#define _CFESCHOOSESIDEHERO_H_
+
+#include "CFE3DPlayer.h"
+#include "CFEHeroScene.h"
+#include "CFEScreen.h"
+#include "CGfxPostProcessRenderer.h"
+#include "common.h"
+#include "render.h"
+
+/*
+0012694C CFESChooseSideHero::CFESChooseSideHero()
+00126994 CFESChooseSideHero::~CFESChooseSideHero()
+00126998 CFESChooseSideHero::~CFESChooseSideHero()
+001269A8 CFESChooseSideHero::Init()
+00126C00 CFESChooseSideHero::UseMinimalScene()
+00126C18 CFESChooseSideHero::SetupPlayers()
+00126DB4 CFESChooseSideHero::LocaliseCommonCountryList()
+00126E10 CFESChooseSideHero::SetupSelectText(int,float,bool)
+00126EB0 CFESChooseSideHero::Exit()
+00126F24 CFESChooseSideHero::ProcessChoosePlayer()
+00126FEC CFESChooseSideHero::SetupNationality()
+001271B4 CFESChooseSideHero::ProcessPlayer()
+00127318 CFESChooseSideHero::UpdateCamera()
+00127470 CFESChooseSideHero::UpdatePosition()
+001274D8 CFESChooseSideHero::Process()
+0012778C CFESChooseSideHero::ShutdownNationality()
+001277A8 CFESChooseSideHero::ProcessNationality()
+001277CE CFESChooseSideHero::Render2D()
+001277D0 CFESChooseSideHero::SetupCamera(bool)
+001278D8 CFESChooseSideHero::PreRender3D()
+001279A8 CFESChooseSideHero::Render3D()
+001279C0 CFESChooseSideHero::RenderScene(EGfxRenderPass)
+00127A9C CFESChooseSideHero::Render2DHUD()
+00127C30 CFESChooseSideHero::SetNationalKit()
+00127C9C CFESChooseSideHero::BackButtonPressed()
+
+0x420
+*/
+
+//函数分为两类: 成员函数和静态成员函数
+//成员函数必会调用构造函数或者内联构造函数
+//通过分析发现不会调用构造函数,同时假设不会内联构造函数,那么得到结论: 成员函数未被调用到
+//通过分析发现,静态成员函数只被成员函数调用到,那么得出结论: 静态成员函数未被调用到
+//注意:BackButtonPressed函数未被分析,所以BackButtonPressed不确定是否会被调用到
+
+class CFESChooseSideHero : public CFEScreen, public CGfxPostProcessRenderer {
+public:
+  CFESChooseSideHero();                     // 0012694C
+  ~CFESChooseSideHero();                    // 00126994 00126998
+  virtual void Init();                      // 001269A8
+  static void UseMinimalScene();            // 00126C00
+  void SetupPlayers();                      // 00126C18
+  static void LocaliseCommonCountryList();  // 00126DB4
+  void SetupSelectText(int, float, bool);   // 00126E10
+  virtual void Exit();                      // 00126EB0
+  void ProcessChoosePlayer();               // 00126F24
+  void SetupNationality();                  // 00126FEC
+  void ProcessPlayer();                     // 001271B4
+  void UpdateCamera();                      // 00127318
+  void UpdatePosition();                    // 00127470
+  virtual void Process();                   // 001274D8
+  void ShutdownNationality();               // 0012778C
+  static void ProcessNationality();         // 001277A8
+  virtual void Render2D();                  // 001277CE
+  void SetupCamera(bool);                   // 001277D0
+  virtual void PreRender3D();               // 001278D8
+  virtual void Render3D();                  // 001279A8
+  void RenderScene(EGfxRenderPass);         // 001279C0
+  virtual void Render2DHUD();               // 00127A9C
+  void SetNationalKit();                    // 00127C30
+  static void BackButtonPressed();          // 00127C9C
+
+  // size 0x420
+  //父类 CFEScreen
+  // vtable 0x0
+  // CUITileManager* m_pUITileManager_4;
+  // bool m_bfield_8;
+  // int dId_C;
+  //父类 CGfxPostProcessRenderer
+  // vtable 0x10
+  int field_14[6];
+  TPlayerInfo tplayerinfo_2c[6];
+  CFE3DPlayer *p_cfe3dpayer_344[6];
+  int field_35c;  //分析未知,凑数
+  TPoint3D tpoint3d_360[6];
+  int field_3a8[4];
+  int field_3b8;
+  int field_3bc;
+  TBuildKitTeamTextures tbuildkitteamtextures_3c0;
+  int field_3c4;
+  int field_3c8[4];  //分析未知,凑数
+  int field_3d8;
+  ushort field_3dc;  // 00127C3A
+  ushort field_3de;  //不确定是否存在
+  float field_3e0;
+  float field_3e4;
+  float field_3e8;
+  float field_3ec;
+  float field_3f0;
+  float field_3f4;
+  int field_3f8[4];
+  int field_408;
+  int field_40c;  ////分析未知,凑数
+  CFEHeroScene *p_cfeheroscence_410;
+  int field_414;
+  bool field_418;
+  int field_41c;
+
+  static bool ms_bBackButtonPressed;
+};
+
+#endif  //_CFESCHOOSESIDEHERO_H_

+ 41 - 0
jni/CFESCredits.cpp

@@ -0,0 +1,41 @@
+#include "CFESCredits.h"
+
+//-------------------------------------------------------------------------------------------------
+//001534E0
+CFESCredits::CFESCredits() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128106
+CFESCredits::~CFESCredits() {
+}
+//-------------------------------------------------------------------------------------------------
+//00127CAC
+void CFESCredits::Init() {
+	LOGI("CFESCredits::Render2DHUD Init");
+}
+//-------------------------------------------------------------------------------------------------
+//00127E64
+wchar_t* CFESCredits::HeroCreditsString(int) {
+	LOGI("CFESCredits::Render2DHUD HeroCreditsString");
+	return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//00127EC8
+void CFESCredits::Exit() {
+	LOGI("CFESCredits::Render2DHUD Exit");
+}
+//-------------------------------------------------------------------------------------------------
+//00127EE4
+void CFESCredits::Process() {
+	LOGI("CFESCredits::Render2DHUD Process");
+}
+//-------------------------------------------------------------------------------------------------
+//00127F3C
+void CFESCredits::Render2D() {
+	LOGI("CFESCredits::Render2DHUD Render2D");
+}
+//-------------------------------------------------------------------------------------------------
+//00128100 ^_^
+void CFESCredits::Render2DHUD() {
+}
+//-------------------------------------------------------------------------------------------------

+ 44 - 0
jni/CFESCredits.h

@@ -0,0 +1,44 @@
+// CFESCredits - [2020-04-13 11:57:46]
+#ifndef _CFESCREDITS_H_
+#define _CFESCREDITS_H_
+
+#include "common.h"
+#include "CFEScreen.h"
+
+/*
+001534E0 CFESCredits::CFESCredits()
+00128106 CFESCredits::~CFESCredits()
+00127CAC CFESCredits::Init()
+00127E64 CFESCredits::HeroCreditsString(int)
+00127EC8 CFESCredits::Exit()
+00127EE4 CFESCredits::Process()
+00127F3C CFESCredits::Render2D()
+00128100 CFESCredits::Render2DHUD()
+*/
+
+class CFESCredits : public CFEScreen {
+public:
+  CFESCredits();                    // 001534E0
+  virtual ~CFESCredits();           // 00128106
+  virtual void Init();              // 00127CAC
+  virtual void Exit();              // 00127EC8
+  virtual void Process();           // 00127EE4
+  virtual void Render2D();          // 00127F3C
+  virtual void Render2DHUD();       // 00128100
+  wchar_t *HeroCreditsString(int);  // 00127E64
+
+  int filed_10;
+  int filed_14;
+  const wchar_t **filed_18;
+  uint16 *filed_1c;
+  float filed_20;
+  float filed_24;
+  int filed_28;
+  int filed_2c;
+  int filed_30;
+  float filed_34;
+  float filed_38;
+  float filed_3c;
+};
+
+#endif  //_CFESCREDITS_H_

+ 180 - 0
jni/CFESEditPlayer.cpp

@@ -0,0 +1,180 @@
+#include "CFESEditPlayer.h"
+
+bool CFESEditPlayer::ms_bCancelChanges;  //003507BC
+//-------------------------------------------------------------------------------------------------
+//00128118
+CFESEditPlayer::CFESEditPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//001281FC 00128200
+CFESEditPlayer::~CFESEditPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128210
+void CFESEditPlayer::Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128374
+void CFESEditPlayer::RevertToProfile() {
+}
+//-------------------------------------------------------------------------------------------------
+//001283D8
+void CFESEditPlayer::SetupPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//001284C0
+void CFESEditPlayer::SetupEditMode(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00128798
+void CFESEditPlayer::GetCustomiseTile(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00128904
+void CFESEditPlayer::SetUpdateMovement() {
+}
+//-------------------------------------------------------------------------------------------------
+//001289CC
+void CFESEditPlayer::SetupHighlight() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128A50
+void CFESEditPlayer::SetupEditMode_NAME() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128A84
+void CFESEditPlayer::SetupEditMode_NUMBER() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128C40
+void CFESEditPlayer::SetupEditMode_HAIRSTYLE() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128DBC
+void CFESEditPlayer::SetupEditMode_HAIRCOLOUR() {
+}
+//-------------------------------------------------------------------------------------------------
+//00128F08
+void CFESEditPlayer::SetupEditMode_FACIALHAIR() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012907C
+void CFESEditPlayer::SetupEditMode_SLEEVELENGTH() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129198
+void CFESEditPlayer::SetupEditMode_BOOTS() {
+}
+//-------------------------------------------------------------------------------------------------
+//001292E0
+void CFESEditPlayer::ProcessEditMode(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00129358
+void CFESEditPlayer::ProcessEditMode_NAME() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012944C
+void CFESEditPlayer::ProcessEditMode_NUMBER() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012944E
+void CFESEditPlayer::ProcessEditMode_HAIRSTYLE() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012946E
+void CFESEditPlayer::ProcessEditMode_HAIRCOLOUR() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012948E
+void CFESEditPlayer::ProcessEditMode_FACIALHAIR() {
+}
+//-------------------------------------------------------------------------------------------------
+//001294AE
+void CFESEditPlayer::ProcessEditMode_SLEEVELENGTH() {
+}
+//-------------------------------------------------------------------------------------------------
+//001294B0
+void CFESEditPlayer::ProcessEditMode_BOOTS() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129504
+void CFESEditPlayer::ShowKeyboard(int, void *) {
+}
+//-------------------------------------------------------------------------------------------------
+//00129514
+void CFESEditPlayer::ApplyToProfile() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129658
+void CFESEditPlayer::Exit() {
+}
+//-------------------------------------------------------------------------------------------------
+//001296D8
+void CFESEditPlayer::ProcessPlayer() {
+}
+//-------------------------------------------------------------------------------------------------
+//001297B8
+void CFESEditPlayer::HaveEasterEggName(wchar_t *) {
+}
+//-------------------------------------------------------------------------------------------------
+//00129860
+void CFESEditPlayer::UpdatePosition() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129944
+void CFESEditPlayer::ConfirmUnlockCB(int, void *) {
+}
+//-------------------------------------------------------------------------------------------------
+//001299A4
+void CFESEditPlayer::HaveEnoughCredits() {
+}
+//-------------------------------------------------------------------------------------------------
+//001299C0
+void CFESEditPlayer::CompleteUnlock() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129A5C
+void CFESEditPlayer::CancelChanges() {
+  CFESEditPlayer::ms_bCancelChanges = true;
+}
+//-------------------------------------------------------------------------------------------------
+//00129A6C
+void CFESEditPlayer::Process() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129C54
+void CFESEditPlayer::CheckUnlocked(int, int) {
+}
+//-------------------------------------------------------------------------------------------------
+//00129CD0
+void CFESEditPlayer::RenderLines() {
+}
+//-------------------------------------------------------------------------------------------------
+//00129EC4 ^_^
+void CFESEditPlayer::Render2D() {
+  LOGI("CFESEditPlayer::Render2D Entry");
+  LOGI("CFESEditPlayer::Render2D End");
+}
+//-------------------------------------------------------------------------------------------------
+//00129ECC
+void CFESEditPlayer::SetupCamera(bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A0A0
+void CFESEditPlayer::PreRender3D() {
+  LOGI("CFESEditPlayer::PreRender3D");
+}
+//-------------------------------------------------------------------------------------------------
+//0012A1DC
+void CFESEditPlayer::Render3D() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A1F4
+void CFESEditPlayer::RenderScene(EGfxRenderPass) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A314
+void CFESEditPlayer::Render2DHUD() {
+}
+//-------------------------------------------------------------------------------------------------

+ 110 - 0
jni/CFESEditPlayer.h

@@ -0,0 +1,110 @@
+// CFESEditPlayer - [2020-04-13 11:57:46]
+#ifndef _CFESEDITPLAYER_H_
+#define _CFESEDITPLAYER_H_
+
+#include "common.h"
+#include "render.h"
+#include "CFEScreen.h"
+
+/*
+00128118 CFESEditPlayer::CFESEditPlayer()
+001281FC CFESEditPlayer::~CFESEditPlayer()
+00128200 CFESEditPlayer::~CFESEditPlayer()
+00128210 CFESEditPlayer::Init()
+00128374 CFESEditPlayer::RevertToProfile()
+001283D8 CFESEditPlayer::SetupPlayer()
+001284C0 CFESEditPlayer::SetupEditMode(int)
+00128798 CFESEditPlayer::GetCustomiseTile(int)
+00128904 CFESEditPlayer::SetUpdateMovement()
+001289CC CFESEditPlayer::SetupHighlight()
+00128A50 CFESEditPlayer::SetupEditMode_NAME()
+00128A84 CFESEditPlayer::SetupEditMode_NUMBER()
+00128C40 CFESEditPlayer::SetupEditMode_HAIRSTYLE()
+00128DBC CFESEditPlayer::SetupEditMode_HAIRCOLOUR()
+00128F08 CFESEditPlayer::SetupEditMode_FACIALHAIR()
+0012907C CFESEditPlayer::SetupEditMode_SLEEVELENGTH()
+00129198 CFESEditPlayer::SetupEditMode_BOOTS()
+001292E0 CFESEditPlayer::ProcessEditMode(int)
+00129358 CFESEditPlayer::ProcessEditMode_NAME()
+0012944C CFESEditPlayer::ProcessEditMode_NUMBER()
+0012944E CFESEditPlayer::ProcessEditMode_HAIRSTYLE()
+0012946E CFESEditPlayer::ProcessEditMode_HAIRCOLOUR()
+0012948E CFESEditPlayer::ProcessEditMode_FACIALHAIR()
+001294AE CFESEditPlayer::ProcessEditMode_SLEEVELENGTH()
+001294B0 CFESEditPlayer::ProcessEditMode_BOOTS()
+00129504 CFESEditPlayer::ShowKeyboard(int,void *)
+00129514 CFESEditPlayer::ApplyToProfile()
+00129658 CFESEditPlayer::Exit()
+001296D8 CFESEditPlayer::ProcessPlayer()
+001297B8 CFESEditPlayer::HaveEasterEggName(wchar_t *)
+00129860 CFESEditPlayer::UpdatePosition()
+00129944 CFESEditPlayer::ConfirmUnlockCB(int,void *)
+001299A4 CFESEditPlayer::HaveEnoughCredits()
+001299C0 CFESEditPlayer::CompleteUnlock()
+00129A5C CFESEditPlayer::CancelChanges()
+00129A6C CFESEditPlayer::Process()
+00129C54 CFESEditPlayer::CheckUnlocked(int,int)
+00129CD0 CFESEditPlayer::RenderLines()
+00129EC4 CFESEditPlayer::Render2D()
+00129ECC CFESEditPlayer::SetupCamera(bool)
+0012A0A0 CFESEditPlayer::PreRender3D()
+0012A1DC CFESEditPlayer::Render3D()
+0012A1F4 CFESEditPlayer::RenderScene(EGfxRenderPass)
+0012A314 CFESEditPlayer::Render2DHUD()
+
+*/
+
+class CFESEditPlayer : public CFEScreen {
+public:
+  CFESEditPlayer();            // 00128118
+  virtual ~CFESEditPlayer();   // 001281FC 00128200
+  virtual void Init();         // 00128210
+  virtual void Exit();         // 00129658
+  virtual void Process();      // 00129A6C
+  virtual void Render2D();     // 00129EC4
+  virtual void PreRender3D();  // 0012A0A0
+  virtual void Render3D();     // 0012A1DC
+  virtual void Render2DHUD();  // 0012A314
+
+  void RevertToProfile();               // 00128374
+  void SetupPlayer();                   // 001283D8
+  void SetupEditMode(int);              // 001284C0
+  void GetCustomiseTile(int);           // 00128798
+  void SetUpdateMovement();             // 00128904
+  void SetupHighlight();                // 001289CC
+  void SetupEditMode_NAME();            // 00128A50
+  void SetupEditMode_NUMBER();          // 00128A84
+  void SetupEditMode_HAIRSTYLE();       // 00128C40
+  void SetupEditMode_HAIRCOLOUR();      // 00128DBC
+  void SetupEditMode_FACIALHAIR();      // 00128F08
+  void SetupEditMode_SLEEVELENGTH();    // 0012907C
+  void SetupEditMode_BOOTS();           // 00129198
+  void ProcessEditMode(int);            // 001292E0
+  void ProcessEditMode_NAME();          // 00129358
+  void ProcessEditMode_NUMBER();        // 0012944C
+  void ProcessEditMode_HAIRSTYLE();     // 0012944E
+  void ProcessEditMode_HAIRCOLOUR();    // 0012946E
+  void ProcessEditMode_FACIALHAIR();    // 0012948E
+  void ProcessEditMode_SLEEVELENGTH();  // 001294AE
+  void ProcessEditMode_BOOTS();         // 001294B0
+  void ShowKeyboard(int, void *);       // 00129504
+  void ApplyToProfile();                // 00129514
+
+  void ProcessPlayer();               // 001296D8
+  void HaveEasterEggName(wchar_t *);  // 001297B8
+  void UpdatePosition();              // 00129860
+  void ConfirmUnlockCB(int, void *);  // 00129944
+  void HaveEnoughCredits();           // 001299A4
+  void CompleteUnlock();              // 001299C0
+  static void CancelChanges();        // 00129A5C
+
+  void CheckUnlocked(int, int);  // 00129C54
+  void RenderLines();            // 00129CD0
+
+  void SetupCamera(bool);            // 00129ECC
+  void RenderScene(EGfxRenderPass);  // 0012A1F4
+
+  static bool ms_bCancelChanges;  // 003507BC
+};
+
+#endif  //_CFESEDITPLAYER_H_

+ 85 - 0
jni/CFESGame.cpp

@@ -0,0 +1,85 @@
+#include "CFESGame.h"
+#include "CFE.h"
+#include "CStoryCore.h"
+#include "FREE.h"
+#include "CReplay.h"
+#include "GFXHUD.h"
+#include "GFXNET.h"
+#include "CGfxPitch.h"
+#include "CGfxEnv.h"
+#include "CGfxStadiumProps.h"
+#include "CGfxCrowd.h"
+#include "CGfxPrecipitation.h"
+#include "CGfxFloodLights.h"
+#include "SNDGAME.h"
+#include "GFXFADE.h"
+#include "XSYS.h"
+#include "CGfxPlayer.h"
+#include "CFTTTextureCache.h"
+#include "CFTTGraphicsDevice.h"
+#include "STORY.h"
+#include "XCTRL.h"
+#include "CFEImages.h"
+#include "GFXSCENE.h"
+#include "CGfxSky.h"
+#include "CGfxEnvironmentMap.h"
+#include "FETU.h"
+#include "GFXRENDER.h"
+#include "CFTTTime.h"
+#include "CLoadingScreen.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "memctrl.h"
+
+//-------------------------------------------------------------------------------------------------
+//0012A33C
+CFESGame::CFESGame() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A364 //0012A404
+CFESGame::~CFESGame() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A610
+void CFESGame::Exit() {
+  //empty
+}
+//-------------------------------------------------------------------------------------------------
+//0012A384
+void CFESGame::FreeGameAssets() {
+ 
+}
+//-------------------------------------------------------------------------------------------------
+//0012A5E0
+void CFESGame::Init() {
+ 
+}
+//-------------------------------------------------------------------------------------------------
+//0012A414
+void CFESGame::LoadGameAssets() {
+
+}
+//-------------------------------------------------------------------------------------------------
+//0012A804
+void CFESGame::PreRender3D() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A614
+//???
+void CFESGame::Process() {
+ 
+}
+//-------------------------------------------------------------------------------------------------
+//0012A7DC
+void CFESGame::Render2D() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A7E8
+void CFESGame::Render2DHUD() {
+
+}
+//-------------------------------------------------------------------------------------------------
+//0012A810
+void CFESGame::Render3D() {
+
+}
+//-------------------------------------------------------------------------------------------------

+ 60 - 0
jni/CFESGame.h

@@ -0,0 +1,60 @@
+// CFESGame - [2020-04-13 11:57:46]
+#ifndef _CFESGAME_H_
+#define _CFESGAME_H_
+
+#include "common.h"
+#include "CFEScreen.h"
+
+/*
+0012A33C CFESGame::CFESGame()
+0012A610 CFESGame::Exit()
+0012A384 CFESGame::FreeGameAssets()
+0012A5E0 CFESGame::Init()
+0012A414 CFESGame::LoadGameAssets()
+0012A804 CFESGame::PreRender3D()
+0012A614 CFESGame::Process()
+0012A7DC CFESGame::Render2D()
+0012A7E8 CFESGame::Render2DHUD()
+0012A810 CFESGame::Render3D()
+0012A364 CFESGame::~CFESGame()
+0012A404 CFESGame::~CFESGame()
+
+_ZTV8CFESGame   DCD 0                             ; CFESGame::CFESGame()+12↑o ...
+                DCD 0
+off_3221D0      DCD _ZN8CFESGameD2Ev+1            ; CFESGame::~CFESGame()
+                DCD _ZN8CFESGameD0Ev+1            ; CFESGame::~CFESGame()
+                DCD _ZN8CFESGame4InitEv+1         ; CFESGame::Init()
+                DCD _ZN8CFESGame7ProcessEv+1      ; CFESGame::Process()
+                DCD _ZN8CFESGame8Render2DEv+1     ; CFESGame::Render2D()
+                DCD _ZN8CFESGame11Render2DHUDEv+1 ; CFESGame::Render2DHUD()
+                DCD _ZN8CFESGame11PreRender3DEv+1 ; CFESGame::PreRender3D()
+                DCD _ZN8CFESGame8Render3DEv+1     ; CFESGame::Render3D()
+                DCD _ZN8CFESGame4ExitEv+1         ; CFESGame::Exit()
+
+0x1C
+*/
+
+class CFESGame : public CFEScreen {
+public:
+  CFESGame();           // 0012A33C
+  virtual ~CFESGame();  // 0012A364 //0012A404
+
+  virtual void Exit();            // 0012A610
+  virtual void FreeGameAssets();  // 0012A384
+  virtual void Init();            // 0012A5E0
+  virtual void LoadGameAssets();  // 0012A414
+  virtual void PreRender3D();     // 0012A804
+  virtual void Process();         // 0012A614
+  virtual void Render2D();        // 0012A7DC
+  virtual void Render2DHUD();     // 0012A7E8
+  virtual void Render3D();        // 0012A810
+
+  bool bPreRender_10;
+  // bool unuse_11;
+  // bool unuse_12;
+  // bool unuse_13;
+  int field_14;
+  int field_18;
+};
+
+#endif  //_CFESGAME_H_

+ 36 - 0
jni/CFESIntro.cpp

@@ -0,0 +1,36 @@
+#include "CFESIntro.h"
+
+//-------------------------------------------------------------------------------------------------
+//0012A81C
+CFESIntro::CFESIntro() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A834 0012A838
+CFESIntro::~CFESIntro() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A848
+void CFESIntro::Init() {
+  LOGI("CFESIntro::Init");
+}
+//-------------------------------------------------------------------------------------------------
+//0012A864
+void CFESIntro::Exit() {
+  LOGI("CFESIntro::Exit");
+}
+//-------------------------------------------------------------------------------------------------
+//0012A866
+void CFESIntro::Process() {
+  LOGI("CFESIntro::Process");
+}
+//-------------------------------------------------------------------------------------------------
+//0012A870
+void CFESIntro::Render2D() {
+  LOGI("CFESIntro::Render2D");
+}
+//-------------------------------------------------------------------------------------------------
+//0012A876
+void CFESIntro::Render2DHUD() {
+  LOGI("CFESIntro::Render2DHUD");
+}
+//-------------------------------------------------------------------------------------------------

+ 30 - 0
jni/CFESIntro.h

@@ -0,0 +1,30 @@
+// CFESIntro - [2020-04-13 11:57:46]
+#ifndef _CFESINTRO_H_
+#define _CFESINTRO_H_
+
+#include "common.h"
+#include "CFEScreen.h"
+
+/*
+0012A81C CFESIntro::CFESIntro()
+0012A834 CFESIntro::~CFESIntro()
+0012A838 CFESIntro::~CFESIntro()
+0012A848 CFESIntro::Init()
+0012A864 CFESIntro::Exit()
+0012A866 CFESIntro::Process()
+0012A870 CFESIntro::Render2D()
+0012A876 CFESIntro::Render2DHUD()
+*/
+
+class CFESIntro : public CFEScreen {
+public:
+  CFESIntro();                 // 0012A81C
+  virtual ~CFESIntro();        // 0012A834 0012A838
+  virtual void Init();         // 0012A848
+  virtual void Exit();         // 0012A864
+  virtual void Process();      // 0012A866
+  virtual void Render2D();     // 0012A870
+  virtual void Render2DHUD();  // 0012A876
+};
+
+#endif  //_CFESINTRO_H_

+ 176 - 0
jni/CFESLevelSelect.cpp

@@ -0,0 +1,176 @@
+#include "CFESLevelSelect.h"
+
+bool CFESLevelSelect::ms_bCompletedMusic;
+bool CFESLevelSelect::ms_bBackButtonPressed;  //003508D4
+
+//-------------------------------------------------------------------------------------------------
+//0012A87C
+CFESLevelSelect::CFESLevelSelect() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A8D0 0012A8F4
+CFESLevelSelect::~CFESLevelSelect() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012A904
+void CFESLevelSelect::Init() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012AFFC
+void CFESLevelSelect::ReCalculateVisibleSeasons(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012B048
+bool CFESLevelSelect::CompletePostOperationFromStage(bool) {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0012B134
+void CFESLevelSelect::SetupUnlocks() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012B24C
+void CFESLevelSelect::SetupLevels(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012BB9C
+void CFESLevelSelect::SetupVideoAds(bool) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012BDB8
+void CFESLevelSelect::SetupClouds() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012BECC
+void CFESLevelSelect::ShowNewspaper(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C0B8
+TPointF CFESLevelSelect::GetStageMapPos(int, int) {
+	TPointF tPointRet_R4;
+
+  return tPointRet_R4;
+}
+//-------------------------------------------------------------------------------------------------
+//0012C150
+void CFESLevelSelect::RenderClouds() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C624
+bool CFESLevelSelect::DisplayPolaroidMessageBox() {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0012C744
+void CFESLevelSelect::ShareCB(int, void *) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C790
+void CFESLevelSelect::NonShareCB(int, void *) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C7B0
+int* CFESLevelSelect::GetFriendScores(int &) {
+	return NULL;
+}
+//-------------------------------------------------------------------------------------------------
+//0012C82C
+void CFESLevelSelect::AddPulses() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C8B8
+void CFESLevelSelect::UnlockSeason(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C8EC
+void CFESLevelSelect::Exit() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C91C
+void CFESLevelSelect::RemoveVideoAd() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012C92C
+void CFESLevelSelect::CompleteSigning(int) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012CA48
+void CFESLevelSelect::CloseNewspaper() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012CAA4
+void CFESLevelSelect::BackToMainMenu() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012CAC4
+void CFESLevelSelect::Process() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012D3F4
+bool CFESLevelSelect::CheckCallback() {
+	return false;
+}
+//-------------------------------------------------------------------------------------------------
+//0012D4A0
+void CFESLevelSelect::RefreshScreen() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012D4B0
+void CFESLevelSelect::ChooseTeamCB(int, void *) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012D51C
+void CFESLevelSelect::Render2D() {
+  LOGI("CFESLevelSelect::Render2D");
+}
+//-------------------------------------------------------------------------------------------------
+//0012D54C
+void CFESLevelSelect::RenderPitches() {
+  LOGI("CFESLevelSelect::RenderPitches");
+}
+//-------------------------------------------------------------------------------------------------
+//0012DED0
+void CFESLevelSelect::RenderPath() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E070
+void CFESLevelSelect::Render2DHUD() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E15C
+void CFESLevelSelect::PlayerNameCB() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E170
+void CFESLevelSelect::SignContractCB() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E180
+void CFESLevelSelect::ResetCallbackFunction() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E190
+void CFESLevelSelect::FacebookExplainCB(int, void *) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E1D0
+void CFESLevelSelect::ForceUnlockCheck() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E1E0
+void CFESLevelSelect::ForceAddPulses() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E1F0
+void CFESLevelSelect::RefreshUserTile() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E200
+void CFESLevelSelect::RefreshCreditsTile() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E210
+void CFESLevelSelect::BackButtonPressed() {
+  CFESLevelSelect::ms_bBackButtonPressed = true;
+}
+//-------------------------------------------------------------------------------------------------

+ 162 - 0
jni/CFESLevelSelect.h

@@ -0,0 +1,162 @@
+// CFESLevelSelect - [2020-04-13 11:57:46]
+#ifndef _CFESLEVELSELECT_H_
+#define _CFESLEVELSELECT_H_
+
+#include "common.h"
+#include "CFEScreen.h"
+#include "CUITileManager.h"
+#include "CUITileButtonExpander.h"
+#include "CUITileNPMenu.h"
+#include "CUITileLocked.h"
+#include "CUITileVideoAd.h"
+#include "CUITileSticker.h"
+#include "CUITileUser.h"
+#include "CUITileLevel.h"
+
+/*
+0012A87C  CFESLevelSelect::CFESLevelSelect()
+0012A8D0  CFESLevelSelect::~CFESLevelSelect()
+0012A8F4  CFESLevelSelect::~CFESLevelSelect()
+0012A904  CFESLevelSelect::Init()
+0012AFFC  CFESLevelSelect::ReCalculateVisibleSeasons(int)
+0012B048  CFESLevelSelect::CompletePostOperationFromStage(bool)
+0012B134  CFESLevelSelect::SetupUnlocks()
+0012B24C  CFESLevelSelect::SetupLevels(int)
+0012BB9C  CFESLevelSelect::SetupVideoAds(bool)
+0012BDB8  CFESLevelSelect::SetupClouds()
+0012BECC  CFESLevelSelect::ShowNewspaper(int)
+0012C0B8  CFESLevelSelect::GetStageMapPos(int,int)
+0012C150  CFESLevelSelect::RenderClouds()
+0012C624  CFESLevelSelect::DisplayPolaroidMessageBox()
+0012C744  CFESLevelSelect::ShareCB(int,void *)
+0012C790  CFESLevelSelect::NonShareCB(int,void *)
+0012C7B0  CFESLevelSelect::GetFriendScores(int &)
+0012C82C  CFESLevelSelect::AddPulses()
+0012C8B8  CFESLevelSelect::UnlockSeason(int)
+0012C8EC  CFESLevelSelect::Exit()
+0012C91C  CFESLevelSelect::RemoveVideoAd()
+0012C92C  CFESLevelSelect::CompleteSigning(int)
+0012CA48  CFESLevelSelect::CloseNewspaper()
+0012CAA4  CFESLevelSelect::BackToMainMenu()
+0012CAC4  CFESLevelSelect::Process()
+0012D3F4  CFESLevelSelect::CheckCallback()
+0012D4A0  CFESLevelSelect::RefreshScreen()
+0012D4B0  CFESLevelSelect::ChooseTeamCB(int,void *)
+0012D51C  CFESLevelSelect::Render2D()
+0012D54C  CFESLevelSelect::RenderPitches()
+0012DED0  CFESLevelSelect::RenderPath()
+0012E070  CFESLevelSelect::Render2DHUD()
+0012E15C  CFESLevelSelect::PlayerNameCB()
+0012E170  CFESLevelSelect::SignContractCB()
+0012E180  CFESLevelSelect::ResetCallbackFunction()
+0012E190  CFESLevelSelect::FacebookExplainCB(int,void *)
+0012E1D0  CFESLevelSelect::ForceUnlockCheck()
+0012E1E0  CFESLevelSelect::ForceAddPulses()
+0012E1F0  CFESLevelSelect::RefreshUserTile()
+0012E200  CFESLevelSelect::RefreshCreditsTile()
+0012E210  CFESLevelSelect::BackButtonPressed()
+
+
+virtual void Init() = 0;
+virtual void Process() = 0;
+virtual void Render2D() = 0;
+virtual void Render2DHUD();          //0012327C
+virtual void PreRender3D();          //0012327E
+virtual void Render3D();             //00123280
+virtual void Exit();                 //00123282
+*/
+typedef void (*CallBack_Func)();
+
+// sizeof = 0x0C
+struct TCloudInfo {
+  int iImageIndex_0;
+  int iRandom_4;
+  int iHieght_8;
+};
+
+class CFESLevelSelect : public CFEScreen {
+public:
+  CFESLevelSelect();           // 0012A87C
+  virtual ~CFESLevelSelect();  // 0012A8D0  0012A8F4
+  virtual void Init();         // 0012A904
+  virtual void Process();      // 0012CAC4
+  virtual void Render2D();     // 0012D51C
+  virtual void Render2DHUD();  // 0012E070
+  virtual void Exit();         // 0012C8EC
+
+  static void ReCalculateVisibleSeasons(int);  // 0012AFFC
+  bool CompletePostOperationFromStage(bool);   // 0012B048
+  void SetupUnlocks();                         // 0012B134
+  void SetupLevels(int);                       // 0012B24C
+  void SetupVideoAds(bool);                    // 0012BB9C
+  void SetupClouds();                          // 0012BDB8
+  void ShowNewspaper(int);                     // 0012BECC
+  TPointF GetStageMapPos(int, int);            // 0012C0B8
+  void RenderClouds();                         // 0012C150
+  bool DisplayPolaroidMessageBox();            // 0012C624
+  static void ShareCB(int, void*);             // 0012C744
+  static void NonShareCB(int, void*);          // 0012C790
+  int* GetFriendScores(int&);                  // 0012C7B0
+  void AddPulses();                            // 0012C82C
+  void UnlockSeason(int);                      // 0012C8B8
+  void RemoveVideoAd();                        // 0012C91C
+  static void CompleteSigning(int);            // 0012C92C
+  void CloseNewspaper();                       // 0012CA48
+  void BackToMainMenu();                       // 0012CAA4
+  bool CheckCallback();                        // 0012D3F4
+  static void RefreshScreen();                 // 0012D4A0
+  static void ChooseTeamCB(int, void*);        // 0012D4B0
+  void RenderPitches();                        // 0012D54C
+  void RenderPath();                           // 0012DED0
+  static void PlayerNameCB();                  // 0012E15C
+  static void SignContractCB();                // 0012E170
+  void ResetCallbackFunction();                // 0012E180
+  static void FacebookExplainCB(int, void*);   // 0012E190
+  void ForceUnlockCheck();                     // 0012E1D0
+  void ForceAddPulses();                       // 0012E1E0
+  void RefreshUserTile();                      // 0012E1F0
+  static void RefreshCreditsTile();            // 0012E200
+  static void BackButtonPressed();             // 0012E210
+
+  // sizeof = 0x514 //0015340C
+  int m_i_10;
+  CUITileNPMenu* m_pUITNPM_14;
+  CUITileButtonExpander* m_pUITBEx_18;
+  int m_iUITileCount_1C;
+  int m_iUITileUse_20;
+  CUITileLevel** m_ppUITileLvl_24;
+  bool m_b_28;
+  uchar m_b_29[3];  //补齐
+  CUITileUser* m_pUITU_2C;
+  TPointF m_tPointF_30;
+  TPointF m_tPointF_38;
+  float m_fLineCurve_40;
+  int m_i_44;
+  TCloudInfo m_tCloudInfo_48[2][50];
+  int m_iCloudCount_4F8[2];
+  float m_fTime_500;
+  CUITileVideoAd* m_pUITVAd_504;
+  CUITileLocked* m_pUITLd_508;
+  CUITileUser** m_ppUIUser_50C;
+  int m_iUITileCount_510;
+
+  static bool ms_bAddNewSticker;              // 003508CC
+  static bool ms_bAddPulses;                  // 003508C5
+  static bool ms_bBackButtonPressed;          // 003508D4
+  static bool ms_bCompletedMusic;             // 003508DC
+  static bool ms_bRefreshCreditsTile;         // 003508D2
+  static bool ms_bRefreshScreen;              // 003508D1
+  static bool ms_bRefreshUserTile;            // 003508D0
+  static bool ms_bRemoveVideoAd;              // 003508CF
+  static bool ms_bRepositionFriendTiles;      // 003508D3
+  static bool ms_bShowBootPromotion;          // 003508DD
+  static bool ms_bSignContract;               // 003508CE
+  static bool ms_bUnlockCheck;                // 003508C4
+  static bool ms_bWaitingToPlay;              // 003508CD
+  static int ms_iRandSeed;                    // 0033645C
+  static int ms_iVisibleSeasons;              // 003508D8
+  static CallBack_Func ms_pCallBackFunction;  // 003508C0
+  static CUITileSticker* ms_pSticker;         // 003508C8
+};
+
+#endif  //_CFESLEVELSELECT_H_

+ 105 - 0
jni/CFESMainMenu.cpp

@@ -0,0 +1,105 @@
+#include "CFESMainMenu.h"
+#include "CFE.h"
+#include "CFTTDevice.h"
+#include "CFTTServerTime.h"
+#include "CMessageBox.h"
+#include "CMessageBoxHandler.h"
+#include "CMyProfile.h"
+#include "CStoryCore.h"
+#include "CStoryProfileStages.h"
+#include "CUITile.h"
+#include "CUITileActions.h"
+#include "FE2D.h"
+#include "LOCstring.h"
+#include "SNDFE.h"
+#include "TStoryConfig.h"
+#include "memctrl.h"
+
+int dword_4B7690;
+
+//-------------------------------------------------------------------------------------------------
+//0012E220 //^_-
+// 单元测试等级: 目测游戏表现
+// 单元测试结果: 正常
+CFESMainMenu::CFESMainMenu() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E24C 0012E250
+//编译器生成的,不用写
+CFESMainMenu::~CFESMainMenu() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012EA30
+void CFESMainMenu::Exit() {
+  // empty
+}
+//-------------------------------------------------------------------------------------------------
+//0012EC8C //^_^
+// 单元测试等级: 目测游戏表现
+// 单元测试结果: 正常
+void CFESMainMenu::Render2D() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012EE70 //^_^
+// 单元测试等级: 目测游戏表现
+// 单元测试结果: 正常
+void CFESMainMenu::Render2DHUD() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012EA34 //^_^
+void CFESMainMenu::ContinueCB(int d_r0, void* p_v_r1) {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E484 //^_^
+float CFESMainMenu::GetPosterH() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0012EE7A //^_^
+float CFESMainMenu::GetPosterW() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0012EC9C //^_^ //前景图 就是球员图
+void CFESMainMenu::RenderMainMenu() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E69C //^_- 经过单元测试,功能正常
+//0012E6C0 我的代码把重复的代码合成一份
+//0012E78C 跳转指令不同 我的 vs 原始的 : BLE vs
+// BGT,跳转指令不同导致后面的指令也不同
+void CFESMainMenu::ShowCrossPromotion() {
+  return;
+}
+//-------------------------------------------------------------------------------------------------
+//0012E4AC //^_- 经过单元测试,功能正常
+bool CFESMainMenu::TryToAddSideStoryButton() {
+  return 0;
+}
+//-------------------------------------------------------------------------------------------------
+//0012EBE0
+//不需要实现
+void CFESMainMenu::FacebookLoginComplete() {
+  LOGI("CFESMainMenu::FacebookLoginComplete");
+}
+//-------------------------------------------------------------------------------------------------
+//0012E7C8
+//不需要实现
+void CFESMainMenu::SetupFacebookTile() {
+  LOGI("CFESMainMenu::SetupFacebookTile: %f", this->filed_14);
+}
+//-------------------------------------------------------------------------------------------------
+//0012EA48 // ^_-
+//模块测试通过[修复:(LOGO能正常显示)点击第一个界面的PLAY按钮无效]
+//影响开始界面上面的两个按钮
+void CFESMainMenu::Process() {
+}
+//-------------------------------------------------------------------------------------------------
+//0012E260 //^_-
+//模块测试通过[修复:(LOGO能正常显示)点击第一个界面的PLAY按钮无效]
+void CFESMainMenu::Init() {
+  LOGI("CFESMainMenu::Init 99EN");
+
+  LOGI("CFESMainMenu::Init end");
+}
+//-------------------------------------------------------------------------------------------------

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.