// // Generated By: dol2asm // Translation Unit: c_phase // #include "SSystem/SComponent/c_phase.h" #include "dol2asm.h" #include "dolphin/types.h" extern "C" static void cPhs_UnCompleate__FP30request_of_phase_process_class(); extern "C" static void cPhs_Compleate__FP30request_of_phase_process_class(); extern "C" static void cPhs_Next__FP30request_of_phase_process_class(); // // External References: // // // Declarations: // /* 80266624-80266630 000C+00 s=1 e=2 z=0 None .text * cPhs_Reset__FP30request_of_phase_process_class */ void cPhs_Reset(request_of_phase_process_class* pPhase) { pPhase->mPhaseStep = 0; } /* 80266630-80266640 0010+00 s=0 e=3 z=0 None .text * cPhs_Set__FP30request_of_phase_process_classPPFPv_i */ void cPhs_Set(request_of_phase_process_class* pPhase, cPhs__Handler* pHandlerTable) { pPhase->mpHandlerTable = pHandlerTable; pPhase->mPhaseStep = 0; } /* 80266640-80266668 0028+00 s=1 e=0 z=0 None .text * cPhs_UnCompleate__FP30request_of_phase_process_class */ void cPhs_UnCompleate(request_of_phase_process_class* pPhase) { pPhase->mpHandlerTable = NULL; cPhs_Reset(pPhase); } /* 80266668-80266678 0010+00 s=2 e=0 z=0 None .text * cPhs_Compleate__FP30request_of_phase_process_class */ int cPhs_Compleate(request_of_phase_process_class* pPhase) { pPhase->mpHandlerTable = NULL; return cPhs_COMPLEATE_e; } /* 80266678-802666D8 0060+00 s=1 e=0 z=0 None .text cPhs_Next__FP30request_of_phase_process_class */ int cPhs_Next(request_of_phase_process_class* pPhase) { if (const cPhs__Handler* handlerTable = pPhase->mpHandlerTable) { pPhase->mPhaseStep++; cPhs__Handler handler = handlerTable[pPhase->mPhaseStep]; // Double null check here actually matters for emitted assembly. // Wee old compilers. if (handler == NULL || handler == NULL) { return cPhs_Compleate(pPhase); } else { return 1; } } return cPhs_COMPLEATE_e; } /* 802666D8-802667AC 00D4+00 s=1 e=3 z=0 None .text cPhs_Do__FP30request_of_phase_process_classPv */ #if NON_MATCHING int cPhs_Do(request_of_phase_process_class* pPhase, void* pUserData) { if (const cPhs__Handler* pHandlerTable = pPhase->mpHandlerTable) { // the load of pUserData seems to be slightly scrambled.. const cPhs__Handler pHandler = pHandlerTable[pPhase->mPhaseStep]; const int newStep = pHandler(pUserData); switch (newStep) { case 1: return cPhs_Next(pPhase); case 2: { const int step2 = cPhs_Next(pPhase); return step2 == 1 ? 2 : cPhs_COMPLEATE_e; } case cPhs_COMPLEATE_e: return cPhs_Compleate(pPhase); case 3: { cPhs_UnCompleate(pPhase); return 3; } case cPhs_ERROR_e: cPhs_UnCompleate(pPhase); return cPhs_ERROR_e; } return newStep; } else { return cPhs_Compleate(pPhase); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm int cPhs_Do(request_of_phase_process_class* param_0, void* param_1) { nofralloc #include "asm/SSystem/SComponent/c_phase/cPhs_Do__FP30request_of_phase_process_classPv.s" } #pragma pop #endif /* 802667AC-802667D4 0028+00 s=0 e=2 z=0 None .text * cPhs_Handler__FP30request_of_phase_process_classPPFPv_iPv */ int cPhs_Handler(request_of_phase_process_class* pPhase, cPhs__Handler* pHandlerTable, void* pUserData) { pPhase->mpHandlerTable = pHandlerTable; return cPhs_Do(pPhase, pUserData); }