diff --git a/asm/include/main_02065C84.inc b/asm/include/main_02065C84.inc index 881f5021..b21cef35 100644 --- a/asm/include/main_02065C84.inc +++ b/asm/include/main_02065C84.inc @@ -1,153 +1,40 @@ #pragma once -.public AddMissionToJobList -.public AlreadyHaveMission .public BulkItemToItem -.public CanDungeonBeUsedForMission -.public CanSendItem -.public CheckAcceptedMissionByTypeAndDungeon -.public CheckDungeonMissionUnlockConditions -.public CloseCollectionMenu -.public ClosePortraitBox .public CopyFrameTypeOption -.public CountJobListMissions -.public CreateCollectionMenu -.public CreatePortraitBox .public Debug_Print0 .public DirectoryFileMngr_ExtractAllDirectoryFiles -.public DrawTextInWindow -.public DungeonRequestsDoneWrapper -.public DungeonSwapIdToIdx .public ExplorersOfSkyMain -.public FormatMissionHeader -.public FormatSpecialEpisodeMissionHeader -.public GenerateMissionDetailsStruct -.public GetAcceptedMission -.public GetAdventureLogDungeonFloor .public GetDebugSpecialEpisodeNumber -.public GetDungeonMode -.public GetLanguageType -.public GetMainTeamNameWithCheck -.public GetRank -.public GetResolvedPerformanceProgressFlag -.public GetScenarioBalance .public GetSosMailCount .public GetSpecialEpisodeType -.public GetStringFromFileVeneer -.public GetWindowIdSelectedMenuItemIdx .public GlobalProgressAlloc .public InitKaomadoStream .public InitObjGraphicsControls .public InitOptionsVeneer -.public InitPreprocessorArgs .public InitScriptVariableValues .public InitSpecialEpisodeHero .public InitWanTable -.public IsAcceptedMissionSlotEmpty -.public IsCollectionMenuActive -.public IsMissionTypeSpecialEpisode -.public IsSpecialEpisodeBeaten -.public IsSpecialEpisodeOpen -.public JOB_MENU_ITEMS_1 -.public JOB_MENU_ITEMS_10 -.public JOB_MENU_ITEMS_11 -.public JOB_MENU_ITEMS_12 -.public JOB_MENU_ITEMS_13 -.public JOB_MENU_ITEMS_2 -.public JOB_MENU_ITEMS_3 -.public JOB_MENU_ITEMS_4 -.public JOB_MENU_ITEMS_5 -.public JOB_MENU_ITEMS_6 -.public JOB_MENU_ITEMS_7 -.public JOB_MENU_ITEMS_8 -.public JOB_MENU_ITEMS_9 -.public JOB_WINDOW_PARAMS_1 -.public JOB_WINDOW_PARAMS_2 .public KeyWaitInit .public LoadOverlay .public LoadTblTalk .public LoadWazaP .public MainGame -.public MakeMissionDetails -.public MakeSpecialEpisodeMissionDetails -.public MemAlloc -.public MemFree -.public MemZero .public NoteLoadBase -.public NoteSaveBase .public OverlayIsLoaded -.public PlaySeVolumeWrapper -.public PreprocessStringFromId .public ReadSaveHeader .public SetAdventureLogStructLocation .public SetBothScreensWindowsColor -.public SetCollectionMenuField0x1B2 .public SetGameMode -.public SetQuestionMarks .public SetScenarioProgressScriptVar -.public SetSpecialEpisodeOpen .public SetSpecialEpisodeType -.public ShowPortraitInPortraitBox -.public StrncpySimpleNoPadSafe .public UnloadOverlay -.public UpdateWindow .public WAN_TABLE .public ZeroInitScriptVariable .public _020A9208 -.public _020A9268 -.public _020A9278 -.public _020A9288 -.public _020A9298 -.public _020A92A8 -.public _020A92EC -.public _020A9304 -.public _020A931C -.public _020A9334 -.public _020A9364 -.public _020A937C -.public _020A9394 -.public _020A93B4 -.public _020B0A54 -.public _020B0B24 -.public _020B0B2C -.public _020B0B2D -.public _020B0B2E -.public _020B0B2F -.public _020B0B30 -.public _020B0B31 -.public _020B0B32 -.public _020B0B33 -.public _020B0B34 -.public _020B0B35 -.public _020B0B36 -.public _020B0B37 -.public _020B0B38 -.public _020B0B39 -.public _020B0B3A -.public _020B0B3B -.public _020B0B3C -.public _020B0B3D -.public _020B0B3E -.public _020B0B3F -.public _020B0B44 -.public _020B0B48 .public _022B7320 .public ov00_022BE0C8 -.public ov01_02337B3C -.public ov01_02337B68 -.public ov01_02337BA0 -.public ov01_02337C54 -.public ov01_02337E0C -.public ov03_0233CAA8 -.public ov03_0233CAD8 -.public ov03_0233CB10 -.public ov03_0233CB3C -.public ov03_0233CDC8 -.public ov03_0233CDD8 -.public ov03_0233CDE4 .public ov11_022E82CC .public sub_020024A0 -.public sub_02003B94 -.public sub_02003BC8 .public sub_0200CA8C .public sub_0201D7A8 .public sub_0201DD90 @@ -157,33 +44,7 @@ .public sub_02025AD8 .public sub_02026E78 .public sub_02027180 -.public sub_0202836C -.public sub_02029F88 -.public sub_02029FBC -.public sub_0202C620 -.public sub_0202C654 -.public sub_0202C6F0 -.public sub_0202C75C -.public sub_0202D07C .public sub_020346C0 -.public sub_020469BC -.public sub_020469E8 -.public sub_02046A20 -.public sub_02046A9C -.public sub_02046B04 -.public sub_02046BA0 -.public sub_02046BB4 -.public sub_02046BE8 -.public sub_02046C30 -.public sub_02046C78 -.public sub_02046D20 -.public sub_02046D2C -.public sub_0204707C -.public sub_020470D0 -.public sub_02047148 -.public sub_02047150 -.public sub_02047188 -.public sub_020474A0 .public sub_02048420 .public sub_02048430 .public sub_02048454 @@ -194,31 +55,7 @@ .public sub_02048644 .public sub_0204872C .public sub_0204A1A4 -.public sub_0204D018 -.public sub_0204E210 -.public sub_0204F1B4 .public sub_0204F9B8 .public sub_02052C3C .public sub_0205B44C -.public sub_0205B77C -.public sub_0205BD40 .public sub_0205C73C -.public sub_0205C870 -.public sub_0205C8E0 -.public sub_0205D1F4 -.public sub_0205E954 -.public sub_0205E970 -.public sub_0205E984 -.public sub_0205EAC8 -.public sub_0205EAE8 -.public sub_0205EB00 -.public sub_0205EBD8 -.public sub_0205EBF0 -.public sub_0205EC38 -.public sub_0205EC50 -.public sub_0205ECF4 -.public sub_0205F588 -.public sub_0205F5A8 -.public sub_0205F710 -.public sub_0205FA38 -.public sub_0206276C diff --git a/asm/include/main_020664B8.inc b/asm/include/main_020664B8.inc new file mode 100644 index 00000000..36bf0105 --- /dev/null +++ b/asm/include/main_020664B8.inc @@ -0,0 +1,162 @@ +#pragma once +.public AddMissionToJobList +.public AlreadyHaveMission +.public CanDungeonBeUsedForMission +.public CanSendItem +.public CheckAcceptedMissionByTypeAndDungeon +.public CheckDungeonMissionUnlockConditions +.public CloseCollectionMenu +.public ClosePortraitBox +.public CountJobListMissions +.public CreateCollectionMenu +.public CreatePortraitBox +.public DrawTextInWindow +.public DungeonRequestsDoneWrapper +.public DungeonSwapIdToIdx +.public FormatMissionHeader +.public FormatSpecialEpisodeMissionHeader +.public GenerateMissionDetailsStruct +.public GetAcceptedMission +.public GetAdventureLogDungeonFloor +.public GetDungeonMode +.public GetLanguageType +.public GetMainTeamNameWithCheck +.public GetRank +.public GetResolvedPerformanceProgressFlag +.public GetScenarioBalance +.public GetStringFromFileVeneer +.public GetWindowIdSelectedMenuItemIdx +.public InitPreprocessorArgs +.public IsAcceptedMissionSlotEmpty +.public IsCollectionMenuActive +.public IsMissionTypeSpecialEpisode +.public IsSpecialEpisodeBeaten +.public IsSpecialEpisodeOpen +.public JOB_MENU_ITEMS_1 +.public JOB_MENU_ITEMS_10 +.public JOB_MENU_ITEMS_11 +.public JOB_MENU_ITEMS_12 +.public JOB_MENU_ITEMS_13 +.public JOB_MENU_ITEMS_2 +.public JOB_MENU_ITEMS_3 +.public JOB_MENU_ITEMS_4 +.public JOB_MENU_ITEMS_5 +.public JOB_MENU_ITEMS_6 +.public JOB_MENU_ITEMS_7 +.public JOB_MENU_ITEMS_8 +.public JOB_MENU_ITEMS_9 +.public JOB_WINDOW_PARAMS_1 +.public JOB_WINDOW_PARAMS_2 +.public MakeMissionDetails +.public MakeSpecialEpisodeMissionDetails +.public MemAlloc +.public MemFree +.public MemZero +.public NoteSaveBase +.public PlaySeVolumeWrapper +.public PreprocessStringFromId +.public SetCollectionMenuField0x1B2 +.public SetQuestionMarks +.public SetSpecialEpisodeOpen +.public ShowPortraitInPortraitBox +.public StrncpySimpleNoPadSafe +.public UpdateWindow +.public _020A9268 +.public _020A9278 +.public _020A9288 +.public _020A9298 +.public _020A92A8 +.public _020A92EC +.public _020A9304 +.public _020A931C +.public _020A9334 +.public _020A9364 +.public _020A937C +.public _020A9394 +.public _020A93B4 +.public _020B0A54 +.public _020B0B24 +.public _020B0B2C +.public _020B0B2D +.public _020B0B2E +.public _020B0B2F +.public _020B0B30 +.public _020B0B31 +.public _020B0B32 +.public _020B0B33 +.public _020B0B34 +.public _020B0B35 +.public _020B0B36 +.public _020B0B37 +.public _020B0B38 +.public _020B0B39 +.public _020B0B3A +.public _020B0B3B +.public _020B0B3C +.public _020B0B3D +.public _020B0B3E +.public _020B0B3F +.public _020B0B44 +.public _020B0B48 +.public ov01_02337B3C +.public ov01_02337B68 +.public ov01_02337BA0 +.public ov01_02337C54 +.public ov01_02337E0C +.public ov03_0233CAA8 +.public ov03_0233CAD8 +.public ov03_0233CB10 +.public ov03_0233CB3C +.public ov03_0233CDC8 +.public ov03_0233CDD8 +.public ov03_0233CDE4 +.public sub_02003B94 +.public sub_02003BC8 +.public sub_0202836C +.public sub_02029F88 +.public sub_02029FBC +.public sub_0202C620 +.public sub_0202C654 +.public sub_0202C6F0 +.public sub_0202C75C +.public sub_0202D07C +.public sub_020469BC +.public sub_020469E8 +.public sub_02046A20 +.public sub_02046B04 +.public sub_02046BA0 +.public sub_02046BB4 +.public sub_02046BE8 +.public sub_02046C78 +.public sub_02046D20 +.public sub_02046D2C +.public sub_0204707C +.public sub_020470D0 +.public sub_02047148 +.public sub_02047150 +.public sub_02047188 +.public sub_020474A0 +.public sub_0204D018 +.public sub_0204E210 +.public sub_0204F1B4 +.public sub_0205B77C +.public sub_0205BD40 +.public sub_0205C870 +.public sub_0205C8E0 +.public sub_0205D1F4 +.public sub_0205E954 +.public sub_0205E970 +.public sub_0205E984 +.public sub_0205EAC8 +.public sub_0205EAE8 +.public sub_0205EB00 +.public sub_0205EBD8 +.public sub_0205EBF0 +.public sub_0205EC38 +.public sub_0205EC50 +.public sub_0205ECF4 +.public sub_0205F588 +.public sub_0205F5A8 +.public sub_0205F710 +.public sub_0205FA38 +.public sub_0206276C diff --git a/asm/include/main_0206A878.inc b/asm/include/main_0206A878.inc index ea32a9bc..ca9ca436 100644 --- a/asm/include/main_0206A878.inc +++ b/asm/include/main_0206A878.inc @@ -1,4 +1,23 @@ #pragma once +.public CosAbs4096 +.public Debug_Print0 +.public DelayWteFree +.public DeleteWanTableEntryVeneer +.public DisplayAndSwitchAnimationControlCurrentFrame +.public GetExecuteSpecialEpisodeType +.public InitAnimationControlWithSet__0201C0B0 +.public LoadWanTableEntry +.public LoadWteFromRom +.public MAP_MARKER_PLACEMENTS +.public MemAlloc +.public MemFree +.public MemZero +.public MultiplyByFixedPoint +.public Rand16Bit +.public SetAnimationForAnimationControl +.public SetSpriteIdForAnimationControl +.public SinAbs4096 +.public WAN_TABLE .public _020A94BC .public _020A94C6 .public _020A94D2 @@ -13,58 +32,12 @@ .public _020B0B4C .public _020B0B5C .public _020B0B60 -.public _020B0B6C -.public _020B0B70 -.public _020B0B74 -.public _020B1290 -.public _022B7331 -.public _022B7334 -.public _022B7340 -.public _022B734C -.public _022B7A30 -.public _022B8330 -.public _022B9130 .public _s32_div_f -.public CosAbs4096 -.public Debug_Print0 -.public DelayWteFree -.public DeleteWanTableEntryVeneer -.public DisplayAndSwitchAnimationControlCurrentFrame -.public DRIVER_WORK -.public DseBgm_StopAll -.public DseBgm_SysSetupNoteList -.public DseDriver_StartMainThread -.public DseDriver_StartTickTimer -.public DseMem_Clear -.public DseMem_Quit -.public DseSe_StopAll -.public DseSe_SysReset -.public DseSequence_PauseList -.public DseSwd_SysInit -.public DseSwd_SysQuit -.public DseVoice_ResetAll -.public DseVoice_ResetHW -.public GetExecuteSpecialEpisodeType -.public InitAnimationControlWithSet__0201C0B0 -.public LoadWanTableEntry -.public LoadWteFromRom -.public MAP_MARKER_PLACEMENTS -.public MemAlloc -.public MemFree -.public MemZero -.public MultiplyByFixedPoint -.public OS_InitAlarm -.public OS_InitTick -.public OS_SetTick .public ov10_022C2340 .public ov10_022C23B0 .public ov10_022C23EC .public ov10_022C2450 .public ov10_022C24DC -.public Rand16Bit -.public SetAnimationForAnimationControl -.public SetSpriteIdForAnimationControl -.public SinAbs4096 .public sub_0201D12C .public sub_0201D9C8 .public sub_0201DF38 @@ -78,20 +51,3 @@ .public sub_0201F36C .public sub_02024934 .public sub_0206A7CC -.public sub_0206DC78 -.public sub_0206F6FC -.public sub_0206F774 -.public sub_0206F9A4 -.public sub_02070124 -.public sub_02070148 -.public sub_02070158 -.public sub_02070188 -.public sub_020701B0 -.public sub_02070EA0 -.public sub_02070F4C -.public sub_020729A4 -.public sub_02075600 -.public sub_020756E8 -.public sub_0207A7EC -.public sub_0207A8F4 -.public WAN_TABLE diff --git a/asm/include/main_0206C1BC.inc b/asm/include/main_0206C1BC.inc new file mode 100644 index 00000000..78686642 --- /dev/null +++ b/asm/include/main_0206C1BC.inc @@ -0,0 +1,42 @@ +#pragma once +.public DRIVER_WORK +.public DseBgm_StopAll +.public DseBgm_SysSetupNoteList +.public DseDriver_StartMainThread +.public DseDriver_StartTickTimer +.public DseMem_Clear +.public DseMem_Quit +.public DseSe_StopAll +.public DseSe_SysReset +.public DseSequence_PauseList +.public DseSwd_SysInit +.public DseSwd_SysQuit +.public DseVoice_ResetAll +.public DseVoice_ResetHW +.public OS_InitAlarm +.public OS_InitTick +.public OS_SetTick +.public _020B1290 +.public _022B7331 +.public _022B7334 +.public _022B7340 +.public _022B734C +.public _022B7A30 +.public _022B8330 +.public _022B9130 +.public sub_0206C184 +.public sub_0206C19C +.public sub_0206DC78 +.public sub_0206F6FC +.public sub_0206F774 +.public sub_0206F9A4 +.public sub_02070124 +.public sub_02070148 +.public sub_02070158 +.public sub_02070188 +.public sub_020701B0 +.public sub_02070EA0 +.public sub_02070F4C +.public sub_020729A4 +.public sub_02075600 +.public sub_020756E8 diff --git a/asm/include/overlay_00.inc b/asm/include/overlay_00.inc index c51748a8..512d3423 100644 --- a/asm/include/overlay_00.inc +++ b/asm/include/overlay_00.inc @@ -1,35 +1,76 @@ #pragma once -.public _02000BDC -.public _02000BF4 -.public _02000C1C -.public _02000C34 -.public _020AECB0 -.public _020AED30 -.public _020AEDB0 -.public _022BCA70 -.public _d2f -.public _dadd -.public _ddiv -.public _dflt -.public _dmul -.public _dsub -.public _ll_udiv -.public _s32_div_f -.public _start_AutoloadDoneCallback -.public _u32_div_f -.public abs -.public atof -.public atoi -.public Crypto_RC4Encrypt .public CRYPTO_RC4Init +.public Crypto_RC4Encrypt .public DC_FlushRange .public DC_InvalidateRange .public DC_StoreRange .public DC_WaitWriteBufferEmpty .public Debug_GetDebugFlag +.public Dwc_Alloc +.public Dwc_Auth_CheckWiFiIdNeedCreate +.public Dwc_BM_Init +.public Dwc_CheckDirtyFlag +.public Dwc_CheckFriendKey +.public Dwc_CheckHasProfile +.public Dwc_CheckInet +.public Dwc_CheckUserData +.public Dwc_CheckValidConsole +.public Dwc_CleanupInetAsync +.public Dwc_ClearDirtyFlag +.public Dwc_ClearError +.public Dwc_ConnectInetAsync +.public Dwc_CreateExchangeToken +.public Dwc_CreateFriendKey +.public Dwc_CreateFriendKeyToken +.public Dwc_CreateUserData +.public Dwc_DeleteBuddyFriendData +.public Dwc_Free +.public Dwc_GetFriendDataType +.public Dwc_GetFriendKey +.public Dwc_GetGsProfileId +.public Dwc_GetInetStatus +.public Dwc_GetIngamesnCheckResult +.public Dwc_GetLastErrorEx +.public Dwc_GetLinkLevel +.public Dwc_InitFriendsMatch +.public Dwc_InitInet +.public Dwc_IsBuddyFriendData +.public Dwc_IsEqualFriendData +.public Dwc_IsValidFriendData +.public Dwc_LoginAsync +.public Dwc_NdCancelAsync +.public Dwc_NdCleanupAsync +.public Dwc_NdGetFileAsync +.public Dwc_NdGetFileListAsync +.public Dwc_NdGetFileListNumAsync +.public Dwc_NdInitAsync +.public Dwc_NdSetAttr +.public Dwc_Netcheck_Abort +.public Dwc_Netcheck_Create +.public Dwc_Netcheck_Destroy +.public Dwc_Netcheck_GetError +.public Dwc_Netcheck_GetReturnCode +.public Dwc_ProcessFriendsMatch +.public Dwc_ProcessInet +.public Dwc_ReportUserData +.public Dwc_SetAuthServer +.public Dwc_SetBuddyFriendCallback +.public Dwc_SetMemFunc +.public Dwc_ShutdownFriendsMatch +.public Dwc_UpdateServersAsync +.public Dwci_Auth_MakeWiFiID +.public Dwci_BM_GetApInfo +.public Dwci_GsFree +.public Dwci_GsMalloc +.public Dwci_GsMemalign +.public Dwci_GsRealloc +.public Dwci_RankingSessionCancel +.public Dwci_RankingSessionGetAsync +.public Dwci_RankingSessionGetResponse +.public Dwci_RankingSessionInitialize +.public Dwci_RankingSessionProcess +.public Dwci_RankingSessionShutdown .public EnableIrqFlag -.public fclose -.public fread .public FS_CloseFile .public FS_FindArchive .public FS_InitFile @@ -37,37 +78,12 @@ .public FS_OpenFileDirect .public FS_ReadFile .public FS_SeekFile -.public fseek -.public ftell .public G3X_Reset -.public GetDsFirmwareUserSettings .public GetFadeStatus .public GetLanguage .public GetProcessorMode -.public GpiCheckForBuddy .public GroupOamAttributesBothScreens -.public Gt2Accept -.public Gt2AddressToString -.public Gt2CloseAllConnectionsHard -.public Gt2CloseConnectionHard -.public Gt2CloseSocket -.public Gt2Connect -.public Gt2CreateSocket -.public Gt2GetConnectionData -.public Gt2GetConnectionState -.public Gt2GetLocalIP -.public Gt2GetLocalPort -.public Gt2GetOutgoingBufferFreeSpace -.public Gt2GetOutgoingBufferSize -.public Gt2GetRemoteIP -.public Gt2GetRemotePort -.public Gt2GetSocketSocket -.public Gt2Listen -.public Gt2Reject -.public Gt2Send -.public Gt2SetConnectionData -.public Gt2SetUnrecognizedMessageCallback -.public Gt2Think +.public GsiMemoryCallbacksSet .public HandleFadesVeneer .public HandleMenus .public HardwareInterrupt @@ -75,25 +91,11 @@ .public InitWfcSettingsOverlay .public LoadOverlay .public MATH_CalcCRC16 -.public MATH_CalcCRC32 -.public MATH_CalcCRC8 -.public Math_CalcSha1 -.public Math_CountPopulation .public MATHi_CRC16InitTable .public MATHi_CRC16Update -.public MATHi_CRC32InitTable -.public MATHi_CRC8InitTable .public MD5_Digest .public MD5_Init .public MD5_Update -.public MemAlloc -.public memcmp -.public memcpy -.public MemcpySimple -.public MemFree -.public memmove -.public memset -.public MemZero .public MI_CpuCopy8 .public MI_CpuFill8 .public MI_DmaCopy16 @@ -104,11 +106,11 @@ .public MTi_CpuCopy16 .public MTi_CpuCopy32 .public MTi_CpuCopy32Fast -.public NnBeginNegotiationWithSocket -.public NnCancel -.public NnFreeNegotiateList -.public NnProcessData -.public NnThink +.public Math_CountPopulation +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple .public OS_CancelAlarm .public OS_CreateAlarm .public OS_CreateThread @@ -116,7 +118,6 @@ .public OS_DisableScheduler .public OS_EnableScheduler .public OS_ExitThread -.public OS_GetLowEntropyData .public OS_GetMacAddress .public OS_GetThreadPriority .public OS_GetTick @@ -125,7 +126,6 @@ .public OS_InitMutex .public OS_InitTick .public OS_IsAlarmAvailable -.public OS_IsThreadAvailable .public OS_IsThreadTerminated .public OS_IsTickAvailable .public OS_JamMessage @@ -142,12 +142,35 @@ .public OS_SpinWait .public OS_TryLockMutex .public OS_UnlockMutex -.public OS_VsPrintf .public OS_WakeupThread .public OS_WakeupThreadDirect .public OS_YieldThread .public OSi_ReferSymbol .public OSi_ThreadInfo +.public PXI_Init +.public PXI_IsCallbackReady +.public PXI_SendWordByFifo +.public PXI_SetFifoRecvCallback +.public PlayBgmByIdVeneer +.public RandInt +.public Rtc_ConvertDateTimeToSecond +.public Rtc_GetDate +.public Rtc_GetTime +.public Rtc_Init +.public SetIrqFlag +.public Std_CopyLString +.public UnloadOverlay +.public WaitForever2 +.public _02000BDC +.public _02000BF4 +.public _02000C1C +.public _02000C34 +.public _ll_udiv +.public _s32_div_f +.public _start_AutoloadDoneCallback +.public _u32_div_f +.public memcmp +.public memmove .public ov00_02317F44 .public ov00_02317F54 .public ov00_02317F5C @@ -169,33 +192,6 @@ .public ov00_02318244 .public ov00_02318254 .public ov00_02318264 -.public ov00_02318268 -.public ov00_0231826C -.public ov00_02318274 -.public ov00_02318284 -.public ov00_02318295 -.public ov00_023182A8 -.public ov00_023182EC -.public ov00_023182FC -.public ov00_02318308 -.public ov00_02318314 -.public ov00_02318324 -.public ov00_023183A4 -.public ov00_023183B7 -.public ov00_023183BC -.public ov00_023183E4 -.public ov00_02318430 -.public ov00_02318454 -.public ov00_02318468 -.public ov00_0231846C -.public ov00_02318470 -.public ov00_02318474 -.public ov00_02318484 -.public ov00_02318490 -.public ov00_023184A0 -.public ov00_023184AC -.public ov00_023184D0 -.public ov00_02318660 .public ov00_02318758_EU .public ov00_023187A0 .public ov00_023187C4 @@ -235,624 +231,6 @@ .public ov00_02318B0C .public ov00_02318B74 .public ov00_02318B80 -.public ov00_02318B8C -.public ov00_02318B94 -.public ov00_02318BB8 -.public ov00_02318BC8 -.public ov00_02318C0C -.public ov00_02318C1C -.public ov00_02318C2C -.public ov00_02318C4C -.public ov00_02318C5C -.public ov00_02318C68 -.public ov00_02318C70 -.public ov00_02318C7C -.public ov00_02318C88 -.public ov00_02318C90 -.public ov00_02318C98 -.public ov00_02318CA4 -.public ov00_02318CB0 -.public ov00_02318CBC -.public ov00_02318CC8 -.public ov00_02318CD0 -.public ov00_02318CD8 -.public ov00_02318CE0 -.public ov00_02318CE4 -.public ov00_02318CEC -.public ov00_02318CF8 -.public ov00_02318D00 -.public ov00_02318D08 -.public ov00_02318D10 -.public ov00_02318D1C -.public ov00_02318D38 -.public ov00_02318D48 -.public ov00_02318D54 -.public ov00_02318D5C -.public ov00_02318D64 -.public ov00_02318D6C -.public ov00_02318D74 -.public ov00_02318D7C -.public ov00_02318D84 -.public ov00_02318D8C -.public ov00_02318D94 -.public ov00_02318D9C -.public ov00_02318DA4 -.public ov00_02318DAC -.public ov00_02318DB4 -.public ov00_02318DBC -.public ov00_02318DC4 -.public ov00_02318DDC -.public ov00_02318DE8 -.public ov00_02318DF8 -.public ov00_02318E28 -.public ov00_02318E40 -.public ov00_02318E58 -.public ov00_02318E64 -.public ov00_02318E6C -.public ov00_02318E74 -.public ov00_02318E78 -.public ov00_02318E88 -.public ov00_02318E9C -.public ov00_02318EA0 -.public ov00_02318EB8 -.public ov00_02318ED0 -.public ov00_02318F24 -.public ov00_02318F44 -.public ov00_02318F50 -.public ov00_02318F54 -.public ov00_02318F5C -.public ov00_02318F60 -.public ov00_02318F74 -.public ov00_02318F88 -.public ov00_02318F98 -.public ov00_02318FA0 -.public ov00_02318FAC -.public ov00_02318FB0 -.public ov00_02318FB4 -.public ov00_02318FD4 -.public ov00_02318FF4 -.public ov00_02319010 -.public ov00_0231902C -.public ov00_02319030 -.public ov00_0231903C -.public ov00_02319040 -.public ov00_02319044 -.public ov00_02319048 -.public ov00_0231904C -.public ov00_02319068 -.public ov00_02319084 -.public ov00_023190AC -.public ov00_023190C0 -.public ov00_023190D0 -.public ov00_023190E0 -.public ov00_023190FC -.public ov00_0231911C -.public ov00_02319130 -.public ov00_0231914C -.public ov00_02319158 -.public ov00_02319168 -.public ov00_02319178 -.public ov00_02319198 -.public ov00_023191A4 -.public ov00_023191C4 -.public ov00_023191CC -.public ov00_023191D4 -.public ov00_023191E4 -.public ov00_023191EC -.public ov00_023191F4 -.public ov00_02319200 -.public ov00_02319204 -.public ov00_0231920C -.public ov00_02319214 -.public ov00_02319220 -.public ov00_0231922C -.public ov00_02319268 -.public ov00_02319298 -.public ov00_023192B8 -.public ov00_023192C8 -.public ov00_023192D8 -.public ov00_023192F8 -.public ov00_02319300 -.public ov00_02319308 -.public ov00_0231930C -.public ov00_02319314 -.public ov00_02319320 -.public ov00_0231932C -.public ov00_02319334 -.public ov00_02319344 -.public ov00_02319350 -.public ov00_0231A0E0 -.public ov00_0231A108 -.public ov00_0231A12C -.public ov00_0231A14C -.public ov00_0231A154 -.public ov00_0231A168 -.public ov00_0231A17C -.public ov00_0231A184 -.public ov00_0231A190 -.public ov00_0231A194 -.public ov00_0231A19C -.public ov00_0231A1A0 -.public ov00_0231A1A4 -.public ov00_0231A1A8 -.public ov00_0231A1AC -.public ov00_0231A1B0 -.public ov00_0231A1BC -.public ov00_0231A1C0 -.public ov00_0231A1C4 -.public ov00_0231A1C8 -.public ov00_0231A1CC -.public ov00_0231A1D0 -.public ov00_0231A1DC -.public ov00_0231A1E8 -.public ov00_0231A200 -.public ov00_0231A204 -.public ov00_0231A208 -.public ov00_0231A210 -.public ov00_0231A21C -.public ov00_0231A228 -.public ov00_0231A234 -.public ov00_0231A240 -.public ov00_0231A248 -.public ov00_0231A2A0 -.public ov00_0231A2A4 -.public ov00_0231A2AC -.public ov00_0231A2B4 -.public ov00_0231A2BC -.public ov00_0231A2C0 -.public ov00_0231A2C4 -.public ov00_0231A2D8 -.public ov00_0231A2F8 -.public ov00_0231A33C -.public ov00_0231A368 -.public ov00_0231A370 -.public ov00_0231A378 -.public ov00_0231A3A0 -.public ov00_0231A3C4 -.public ov00_0231A3EC -.public ov00_0231A3F4 -.public ov00_0231A3F8 -.public ov00_0231A400 -.public ov00_0231A41C -.public ov00_0231A448 -.public ov00_0231A534 -.public ov00_0231A54C -.public ov00_0231A550 -.public ov00_0231A560 -.public ov00_0231A56C -.public ov00_0231A578 -.public ov00_0231A580 -.public ov00_0231A58C -.public ov00_0231A594 -.public ov00_0231A59C -.public ov00_0231A5A4 -.public ov00_0231A5AC -.public ov00_0231A5B4 -.public ov00_0231A5BC -.public ov00_0231A5C4 -.public ov00_0231A5CC -.public ov00_0231A5D4 -.public ov00_0231A5E4 -.public ov00_0231A5EC -.public ov00_0231A5F0 -.public ov00_0231A5FC -.public ov00_0231A60C -.public ov00_0231A614 -.public ov00_0231A620 -.public ov00_0231A630 -.public ov00_0231A638 -.public ov00_0231A640 -.public ov00_0231A648 -.public ov00_0231A64C -.public ov00_0231A658 -.public ov00_0231A660 -.public ov00_0231A664 -.public ov00_0231A668 -.public ov00_0231A698 -.public ov00_0231A6CC -.public ov00_0231A6E0 -.public ov00_0231A6E4 -.public ov00_0231A6EC -.public ov00_0231A6F0 -.public ov00_0231A6F4 -.public ov00_0231A6FC -.public ov00_0231A70C -.public ov00_0231A718 -.public ov00_0231A724 -.public ov00_0231A738 -.public ov00_0231A740 -.public ov00_0231A7B0 -.public ov00_0231A7BC -.public ov00_0231A7E0 -.public ov00_0231A7E4 -.public ov00_0231A7E8 -.public ov00_0231A7EC -.public ov00_0231A7F0 -.public ov00_0231A7F4 -.public ov00_0231A7F8 -.public ov00_0231A804 -.public ov00_0231A810 -.public ov00_0231A814 -.public ov00_0231A818 -.public ov00_0231A81C -.public ov00_0231A824 -.public ov00_0231A858 -.public ov00_0231A85C -.public ov00_0231A890 -.public ov00_0231A898 -.public ov00_0231A8DC -.public ov00_0231A8E0 -.public ov00_0231A8F4 -.public ov00_0231A938 -.public ov00_0231A944 -.public ov00_0231A968 -.public ov00_0231A990 -.public ov00_0231A998 -.public ov00_0231A9C4 -.public ov00_0231A9D8 -.public ov00_0231A9DC -.public ov00_0231A9E4 -.public ov00_0231AA0C -.public ov00_0231AA38 -.public ov00_0231AA68 -.public ov00_0231AABC -.public ov00_0231AAC0 -.public ov00_0231AAEC -.public ov00_0231AAF4 -.public ov00_0231AB00 -.public ov00_0231AB04 -.public ov00_0231AB08 -.public ov00_0231AB10 -.public ov00_0231AB18 -.public ov00_0231AB20 -.public ov00_0231AB2C -.public ov00_0231AB34 -.public ov00_0231AB3C -.public ov00_0231AB40 -.public ov00_0231AB4C -.public ov00_0231AB5C -.public ov00_0231AB68 -.public ov00_0231AB74 -.public ov00_0231AB7C -.public ov00_0231AB80 -.public ov00_0231AB90 -.public ov00_0231ABA0 -.public ov00_0231ABB0 -.public ov00_0231ABB4 -.public ov00_0231ABB8 -.public ov00_0231ABC0 -.public ov00_0231ABCC -.public ov00_0231ABDC -.public ov00_0231ABEC -.public ov00_0231AC08 -.public ov00_0231AC18 -.public ov00_0231AC28 -.public ov00_0231AC2C -.public ov00_0231AC5C -.public ov00_0231AC6C -.public ov00_0231AC78 -.public ov00_0231AC84 -.public ov00_0231AC94 -.public ov00_0231ACA0 -.public ov00_0231ACA8 -.public ov00_0231ACB8 -.public ov00_0231ACC8 -.public ov00_0231ACE0 -.public ov00_0231ACF8 -.public ov00_0231AD04 -.public ov00_0231AD14 -.public ov00_0231AD20 -.public ov00_0231AD34 -.public ov00_0231AD38 -.public ov00_0231AD64 -.public ov00_0231AD6C -.public ov00_0231AD7C -.public ov00_0231AD84 -.public ov00_0231AD8C -.public ov00_0231AD94 -.public ov00_0231AD9C -.public ov00_0231ADA4 -.public ov00_0231ADCC -.public ov00_0231ADD8 -.public ov00_0231ADE4 -.public ov00_0231ADF0 -.public ov00_0231AE00 -.public ov00_0231AE08 -.public ov00_0231AE10 -.public ov00_0231AE18 -.public ov00_0231AE48 -.public ov00_0231AE4C -.public ov00_0231AE54 -.public ov00_0231AE64 -.public ov00_0231AE6C -.public ov00_0231AE78 -.public ov00_0231AE7C -.public ov00_0231AE84 -.public ov00_0231AE8C -.public ov00_0231AE94 -.public ov00_0231AE98 -.public ov00_0231AEA0 -.public ov00_0231AEA4 -.public ov00_0231AEA8 -.public ov00_0231AEB4 -.public ov00_0231AEBC -.public ov00_0231AEC4 -.public ov00_0231AECC -.public ov00_0231AED8 -.public ov00_0231AEE4 -.public ov00_0231AEEC -.public ov00_0231AEF4 -.public ov00_0231AF00 -.public ov00_0231AF0C -.public ov00_0231AF18 -.public ov00_0231AF24 -.public ov00_0231AF30 -.public ov00_0231AF3C -.public ov00_0231AF4C -.public ov00_0231AF50 -.public ov00_0231AF54 -.public ov00_0231AF68 -.public ov00_0231AF70 -.public ov00_0231AF94 -.public ov00_0231AFA0 -.public ov00_0231AFB0 -.public ov00_0231AFC0 -.public ov00_0231AFC4 -.public ov00_0231AFEC -.public ov00_0231B018 -.public ov00_0231B020 -.public ov00_0231B024 -.public ov00_0231B02C -.public ov00_0231B03C -.public ov00_0231B07C -.public ov00_0231B0BC -.public ov00_0231B0C8 -.public ov00_0231B0F0 -.public ov00_0231B11C -.public ov00_0231B144 -.public ov00_0231B178 -.public ov00_0231B1AC -.public ov00_0231B1D4 -.public ov00_0231B1E8 -.public ov00_0231B1F8 -.public ov00_0231B1FC -.public ov00_0231B200 -.public ov00_0231B208 -.public ov00_0231B210 -.public ov00_0231B220 -.public ov00_0231B254 -.public ov00_0231B25C -.public ov00_0231B268 -.public ov00_0231B274 -.public ov00_0231B284 -.public ov00_0231B28C -.public ov00_0231B290 -.public ov00_0231B29C -.public ov00_0231B2A8 -.public ov00_0231B2B4 -.public ov00_0231B2C0 -.public ov00_0231B2CC -.public ov00_0231B2D4 -.public ov00_0231B2E0 -.public ov00_0231B2EC -.public ov00_0231B2FC -.public ov00_0231B30C -.public ov00_0231B314 -.public ov00_0231B31C -.public ov00_0231B324 -.public ov00_0231B330 -.public ov00_0231B338 -.public ov00_0231B340 -.public ov00_0231B350 -.public ov00_0231B35C -.public ov00_0231B364 -.public ov00_0231B36C -.public ov00_0231B39C -.public ov00_0231B3A4 -.public ov00_0231B3D4 -.public ov00_0231B3DC -.public ov00_0231B3E8 -.public ov00_0231B3F0 -.public ov00_0231B3F8 -.public ov00_0231B418 -.public ov00_0231B440 -.public ov00_0231B454 -.public ov00_0231B458 -.public ov00_0231B468 -.public ov00_0231B470 -.public ov00_0231B4A0 -.public ov00_0231B4AC -.public ov00_0231B4B4 -.public ov00_0231B4C4 -.public ov00_0231B4CC -.public ov00_0231B4D8 -.public ov00_0231B4E4 -.public ov00_0231B4F0 -.public ov00_0231B4FC -.public ov00_0231B508 -.public ov00_0231B518 -.public ov00_0231B520 -.public ov00_0231B528 -.public ov00_0231B530 -.public ov00_0231B53C -.public ov00_0231B544 -.public ov00_0231B54C -.public ov00_0231B554 -.public ov00_0231B55C -.public ov00_0231B564 -.public ov00_0231B56C -.public ov00_0231B574 -.public ov00_0231B57C -.public ov00_0231B584 -.public ov00_0231B58C -.public ov00_0231B594 -.public ov00_0231B59C -.public ov00_0231B5A4 -.public ov00_0231B5B4 -.public ov00_0231B5CC -.public ov00_0231B5D8 -.public ov00_0231B5E0 -.public ov00_0231B5F4 -.public ov00_0231B608 -.public ov00_0231B60C -.public ov00_0231B610 -.public ov00_0231B614 -.public ov00_0231B618 -.public ov00_0231B628 -.public ov00_0231B638 -.public ov00_0231B644 -.public ov00_0231B650 -.public ov00_0231B660 -.public ov00_0231B670 -.public ov00_0231B680 -.public ov00_0231B694 -.public ov00_0231B6A4 -.public ov00_0231B6B4 -.public ov00_0231B6C4 -.public ov00_0231B6D4 -.public ov00_0231B6EC -.public ov00_0231B700 -.public ov00_0231B714 -.public ov00_0231B720 -.public ov00_0231B738 -.public ov00_0231B740 -.public ov00_0231B750 -.public ov00_0231B764 -.public ov00_0231B778 -.public ov00_0231B784 -.public ov00_0231B788 -.public ov00_0231B798 -.public ov00_0231B7B4 -.public ov00_0231B7BC -.public ov00_0231B7C4 -.public ov00_0231B7CC -.public ov00_0231B7D4 -.public ov00_0231B7DC -.public ov00_0231B7E4 -.public ov00_0231B808 -.public ov00_0231B810 -.public ov00_0231B830 -.public ov00_0231B838 -.public ov00_0231B848 -.public ov00_0231B84C -.public ov00_0231B884 -.public ov00_0231B888 -.public ov00_0231B890 -.public ov00_0231B898 -.public ov00_0231B8AC -.public ov00_0231B8B0 -.public ov00_0231B8C0 -.public ov00_0231B8C8 -.public ov00_0231B8F8 -.public ov00_0231B904 -.public ov00_0231B914 -.public ov00_0231B91C -.public ov00_0231B95C -.public ov00_0231B96C -.public ov00_0231B994 -.public ov00_0231B9C8 -.public ov00_0231B9F8 -.public ov00_0231BA20 -.public ov00_0231BA34 -.public ov00_0231BA4C -.public ov00_0231BA50 -.public ov00_0231BA7C -.public ov00_0231BA88 -.public ov00_0231BA94 -.public ov00_0231BAA0 -.public ov00_0231BAB0 -.public ov00_0231BABC -.public ov00_0231BAC4 -.public ov00_0231BAD4 -.public ov00_0231BADC -.public ov00_0231BAE8 -.public ov00_0231BAF4 -.public ov00_0231BB00 -.public ov00_0231BB08 -.public ov00_0231BB10 -.public ov00_0231BB18 -.public ov00_0231BB24 -.public ov00_0231BB30 -.public ov00_0231BB3C -.public ov00_0231BB44 -.public ov00_0231BB50 -.public ov00_0231BB5C -.public ov00_0231BB64 -.public ov00_0231BB70 -.public ov00_0231BB80 -.public ov00_0231BB8C -.public ov00_0231BB94 -.public ov00_0231BB98 -.public ov00_0231BBA8 -.public ov00_0231BBB8 -.public ov00_0231BBC4 -.public ov00_0231BBCC -.public ov00_0231BBF8 -.public ov00_0231BC00 -.public ov00_0231BC08 -.public ov00_0231BC0C -.public ov00_0231BC10 -.public ov00_0231BC18 -.public ov00_0231BC24 -.public ov00_0231BC30 -.public ov00_0231BC3C -.public ov00_0231BC44 -.public ov00_0231BC6C -.public ov00_0231BC70 -.public ov00_0231BC74 -.public ov00_0231BC7C -.public ov00_0231BC84 -.public ov00_0231BC88 -.public ov00_0231BC90 -.public ov00_0231BC9C -.public ov00_0231BCA0 -.public ov00_0231BCA8 -.public ov00_0231BCAC -.public ov00_0231BCB4 -.public ov00_0231BCBC -.public ov00_0231BCC0 -.public ov00_0231BCC8 -.public ov00_0231BCD0 -.public ov00_0231BCDC -.public ov00_0231BCE4 -.public ov00_0231BCE8 -.public ov00_0231BCF0 -.public ov00_0231BCF4 -.public ov00_0231BD0C -.public ov00_0231BD14 -.public ov00_0231BD20 -.public ov00_0231BD28 -.public ov00_0231BD58 -.public ov00_0231BD68 -.public ov00_0231BD70 -.public ov00_0231BD78 -.public ov00_0231BD80 -.public ov00_0231BD8C -.public ov00_0231BD94 -.public ov00_0231BDCC -.public ov00_0231BDDC -.public ov00_0231BE28 -.public ov00_0231BE38 -.public ov00_0231BE48 -.public ov00_0231BE4C -.public ov00_0231BE50 -.public ov00_0231BE58 -.public ov00_0231BE5C -.public ov00_0231BE64 -.public ov00_0231BE6C -.public ov00_0231BE74 -.public ov00_0231BE78 -.public ov00_0231BE7C -.public ov00_0231BE84 -.public ov00_0231BE8C -.public ov00_0231BE94 -.public ov00_0231BEA0 -.public ov00_0231BEAC -.public ov00_0231BEB8 -.public ov00_0231BEC4 -.public ov00_0231BECC -.public ov00_0231BED4 -.public ov00_0231BF24 .public ov00_0231D420 .public ov00_0231D42C .public ov00_0231D490 @@ -938,114 +316,6 @@ .public ov00_02326C90 .public ov00_02326CA4 .public ov00_02326CA8 -.public ov00_02326CB4 -.public ov00_02326CBC -.public ov00_02326CC0 -.public ov00_02326CD4 -.public ov00_02326CD8 -.public ov00_02326CDC -.public ov00_02326CF0 -.public ov00_02326D0C -.public ov00_02326D54 -.public ov00_02326D68 -.public ov00_02326D6C -.public ov00_02326D74 -.public ov00_02326D7C -.public ov00_02326D84 -.public ov00_02326D88 -.public ov00_02326DA0 -.public ov00_02326DA8 -.public ov00_02326E28 -.public ov00_02326F28 -.public ov00_02326F34 -.public ov00_02326F48 -.public ov00_02326F68 -.public ov00_02326F88 -.public ov00_02326F89 -.public ov00_02326F90 -.public ov00_023276C0 -.public ov00_023276C8 -.public ov00_023276CC -.public ov00_023276D4 -.public ov00_023276E0 -.public ov00_023276E5 -.public ov00_023276E6 -.public ov00_023276EA -.public ov00_023276EC -.public ov00_02327700 -.public ov00_02327720 -.public ov00_02327724 -.public ov00_02327728 -.public ov00_0232772C -.public ov00_02327730 -.public ov00_02327734 -.public ov00_0232773C -.public ov00_02327740 -.public ov00_02327744 -.public ov00_02327748 -.public ov00_0232774C -.public ov00_02327758 -.public ov00_02327764 -.public ov00_02327778 -.public ov00_02327790 -.public ov00_023277AC -.public ov00_023277D0 -.public ov00_023277D8 -.public ov00_0232780C -.public ov00_02327818 -.public ov00_02327830 -.public ov00_0232788C -.public ov00_0232790C -.public ov00_02327910 -.public ov00_02327928 -.public ov00_02327940 -.public ov00_02327944 -.public ov00_02327948 -.public ov00_0232794C -.public ov00_02327950 -.public ov00_02327954 -.public ov00_0232795C -.public ov00_02327960 -.public ov00_02327964 -.public ov00_02328224 -.public ov00_02328228 -.public ov00_02328240 -.public ov00_02328260 -.public ov00_02328320 -.public ov00_02328340 -.public ov00_02328348 -.public ov00_0232834C -.public ov00_02328388 -.public ov00_02328391 -.public ov00_02328788 -.public ov00_023287A0 -.public ov00_023287B0 -.public ov00_023287C4 -.public ov00_02328800 -.public ov00_02328804 -.public ov00_02328844 -.public ov00_02328884 -.public ov00_02328888 -.public ov00_0232888C -.public ov00_02328890 -.public ov00_02328895 -.public ov00_023288DC -.public ov00_023288E0 -.public ov00_023288E4 -.public ov00_023288E8 -.public ov00_0232896C -.public ov00_023289A8 -.public ov00_023289AC -.public ov00_023289B0 -.public ov00_023289C0 -.public ov00_023289C4 -.public ov00_023289D8 -.public ov00_023289DC -.public ov00_023289E0 -.public ov00_023289E8 -.public ov00_02328A18 -.public ov00_02328B18 -.public ov00_02328C18 .public ov01_0232BE98 .public ov01_0232C244 .public ov01_0232C4D8 @@ -1061,65 +331,9 @@ .public ov01_023310B8 .public ov01_02337914 .public ov01_0233AE64 -.public PlayBgmByIdVeneer -.public PXI_Init -.public PXI_IsCallbackReady -.public PXI_SendWordByFifo -.public PXI_SetFifoRecvCallback -.public qr2_buffer_add_int -.public Qr2_Buffer_AddA -.public qr2_init_socketa -.public qr2_keybuffer_add -.public qr2_parse_querya -.public qr2_register_clientmessage_callback -.public qr2_register_natneg_callback -.public qr2_register_publicaddress_callback -.public qr2_send_statechanged -.public qr2_shutdown -.public qr2_think -.public rand -.public RandInt -.public rewind -.public Rtc_ConvertDateTimeToSecond -.public Rtc_GetDate -.public Rtc_GetDateTime -.public Rtc_GetTime -.public Rtc_Init -.public SbServerGetIntValueA -.public SbServerGetPrivateInetAddress -.public SbServerGetPrivateQueryPort -.public SbServerGetPublicInetAddress -.public SbServerGetPublicQueryPort -.public SbServerHasPrivateAddress -.public ServerBrowserClear -.public ServerBrowserFree -.public ServerBrowserGetMyPublicIpAddr -.public ServerBrowserGetServer -.public ServerBrowserLimitUpdateA -.public ServerBrowserSendMessageToServerA -.public ServerBrowserSendNatNegotiateCookieToServerA -.public ServerBrowserState -.public ServerBrowserThink -.public SetIrqFlag -.public snprintf -.public sprintf -.public srand -.public Std_CompareNString -.public Std_CompareString__020852CC -.public Std_CopyLString -.public Std_GetStringLength -.public Std_TsScanf -.public strcat -.public strchr .public strcmp -.public strcpy -.public strcspn .public strlen .public strncmp -.public strncpy -.public strstr -.public strtol -.public strtoul .public sub_02002448 .public sub_020024B0 .public sub_020024C0 @@ -1174,8 +388,3 @@ .public sub_0205B77C .public sub_0205B80C .public sub_02079990 -.public SVC_WaitByLoop -.public UnloadOverlay -.public Util_RandSeed -.public WaitForever2 -.public wcslen diff --git a/asm/include/overlay_00_022DB1A4.inc b/asm/include/overlay_00_022DB1A4.inc new file mode 100644 index 00000000..9e36c74c --- /dev/null +++ b/asm/include/overlay_00_022DB1A4.inc @@ -0,0 +1,970 @@ +#pragma once +.public CloseVeneer +.public Cps_GetSslLowThreadPriority +.public Cps_Resolve +.public Cps_SetRootCa +.public Cps_SetSsl +.public Cps_SetSslLowThreadPriority +.public Cps_SocBind +.public Cps_SocConsume +.public Cps_SocFlush +.public Cps_SocGetLength +.public Cps_SocRead +.public Cps_SocRegister +.public Cps_SocRelease +.public Cps_SocUnRegister +.public Cps_SocUse +.public Cps_SocWrite +.public Cps_SslAddRandomSeed +.public Cps_TcpClose +.public Cps_TcpConnect +.public Cps_TcpShutdown +.public DC_InvalidateRange +.public DC_StoreRange +.public Dwc_AC_CancelGetWdsInfo +.public Dwc_AC_CleanupGetWdsInfo +.public Dwc_AC_Create +.public Dwc_AC_Destroy +.public Dwc_AC_GetApSpotInfo +.public Dwc_AC_GetApType +.public Dwc_AC_GetStatus +.public Dwc_AC_ProcessGetWdsInfo +.public Dwc_AC_SetSpecifyAp +.public Dwc_AC_StartupGetWdsInfo +.public Dwci_Acc_GetFlags +.public Dwci_Acc_GetFriendKey +.public Dwci_Acc_GetGsProfileId +.public Dwci_Acc_GetPlayerId +.public Dwci_Acc_GetUserId +.public Dwci_Acc_SetFriendKey +.public Dwci_Acc_SetGsProfileId +.public Dwci_Acc_SetMaskBits +.public Dwci_Acc_SetPlayerId +.public Dwci_Acc_SetUserId +.public EnableIrqFlag +.public GetDsFirmwareUserSettings +.public Gt2Accept +.public Gt2AddressToString +.public Gt2CloseAllConnectionsHard +.public Gt2CloseConnectionHard +.public Gt2CloseSocket +.public Gt2Connect +.public Gt2CreateSocket +.public Gt2GetConnectionData +.public Gt2GetConnectionState +.public Gt2GetLocalIP +.public Gt2GetLocalPort +.public Gt2GetOutgoingBufferFreeSpace +.public Gt2GetOutgoingBufferSize +.public Gt2GetRemoteIP +.public Gt2GetRemotePort +.public Gt2GetSocketSocket +.public Gt2Listen +.public Gt2Reject +.public Gt2Send +.public Gt2SetConnectionData +.public Gt2SetUnrecognizedMessageCallback +.public Gt2Think +.public InitWfc +.public MATH_CalcCRC16 +.public MATH_CalcCRC32 +.public MATH_CalcCRC8 +.public MATHi_CRC16InitTable +.public MATHi_CRC32InitTable +.public MATHi_CRC8InitTable +.public MD5Final_Ghi +.public MD5Init_Ghi +.public MD5Update_Ghi +.public MD5_Digest +.public MD5_Init +.public MD5_Update +.public MI_CpuCopy8 +.public MI_CpuFill8 +.public MTi_CpuClear16 +.public MTi_CpuClear32 +.public MTi_CpuCopy16 +.public MTi_CpuCopy32 +.public Math_CalcSha1 +.public NnBeginNegotiationWithSocket +.public NnCancel +.public NnFreeNegotiateList +.public NnProcessData +.public NnThink +.public OS_CreateThread +.public OS_GetLowEntropyData +.public OS_GetMacAddress +.public OS_GetThreadPriority +.public OS_GetTick +.public OS_InitMessageQueue +.public OS_InitMutex +.public OS_IsThreadAvailable +.public OS_IsThreadTerminated +.public OS_IsTickAvailable +.public OS_JoinThread +.public OS_LockMutex +.public OS_ReceiveMessage +.public OS_SendMessage +.public OS_Sleep +.public OS_SnPrintf +.public OS_UnlockMutex +.public OS_VsPrintf +.public OS_WakeupThreadDirect +.public OSi_ThreadInfo +.public PXI_IsCallbackReady +.public PXI_SendWordByFifo +.public PXI_SetFifoRecvCallback +.public Qr2_Buffer_AddA +.public Rtc_ConvertDateTimeToSecond +.public Rtc_GetDate +.public Rtc_GetDateTime +.public Rtc_GetTime +.public Rtc_Init +.public SVC_WaitByLoop +.public SbServerGetIntValueA +.public SbServerGetPrivateInetAddress +.public SbServerGetPrivateQueryPort +.public SbServerGetPublicInetAddress +.public SbServerGetPublicQueryPort +.public SbServerHasPrivateAddress +.public ServerBrowserClear +.public ServerBrowserFree +.public ServerBrowserGetMyPublicIpAddr +.public ServerBrowserGetServer +.public ServerBrowserLimitUpdateA +.public ServerBrowserSendMessageToServerA +.public ServerBrowserSendNatNegotiateCookieToServerA +.public ServerBrowserState +.public ServerBrowserThink +.public SetIrqFlag +.public Soc_GetHostByName +.public Soc_GetHostID +.public Soc_GetSockName +.public Soc_InetAtoN +.public Soc_Poll +.public Soc_Shutdown +.public Soc_U32to4U8 +.public Socl_EnableSsl +.public Socl_GetHostID +.public Socl_Resolve +.public Std_CompareNString +.public Std_CompareString__020852CC +.public Std_GetStringLength +.public Std_TsScanf +.public WaitForever2 +.public Wcm_GetApEssid +.public Wcm_GetApMacAddress +.public Wcm_GetLinkLevel +.public Wcm_GetPhase +.public _020AECB0 +.public _020AED30 +.public _020AEDB0 +.public _022BCA70 +.public _d2f +.public _dadd +.public _ddiv +.public _dflt +.public _dmul +.public _dsub +.public _ll_udiv +.public _s32_div_f +.public _u32_div_f +.public abs +.public atof +.public atoi +.public bind +.public connect +.public fclose +.public fcntl +.public fread +.public fseek +.public ftell +.public memcmp +.public memcpy +.public memmove +.public memset +.public ov00_02318268 +.public ov00_0231826C +.public ov00_02318274 +.public ov00_02318284 +.public ov00_02318295 +.public ov00_023182A8 +.public ov00_023182EC +.public ov00_023182FC +.public ov00_02318308 +.public ov00_02318314 +.public ov00_02318324 +.public ov00_023183A4 +.public ov00_023183B7 +.public ov00_023183BC +.public ov00_023183E4 +.public ov00_02318430 +.public ov00_02318454 +.public ov00_02318468 +.public ov00_0231846C +.public ov00_02318470 +.public ov00_02318474 +.public ov00_02318484 +.public ov00_02318490 +.public ov00_023184A0 +.public ov00_023184AC +.public ov00_023184D0 +.public ov00_02318660 +.public ov00_02318B8C +.public ov00_02318B94 +.public ov00_02318BB8 +.public ov00_02318BC8 +.public ov00_02318C0C +.public ov00_02318C1C +.public ov00_02318C2C +.public ov00_02318C4C +.public ov00_02318C5C +.public ov00_02318C68 +.public ov00_02318C70 +.public ov00_02318C7C +.public ov00_02318C88 +.public ov00_02318C90 +.public ov00_02318C98 +.public ov00_02318CA4 +.public ov00_02318CB0 +.public ov00_02318CBC +.public ov00_02318CC8 +.public ov00_02318CD0 +.public ov00_02318CD8 +.public ov00_02318CE0 +.public ov00_02318CE4 +.public ov00_02318CEC +.public ov00_02318CF8 +.public ov00_02318D00 +.public ov00_02318D08 +.public ov00_02318D10 +.public ov00_02318D1C +.public ov00_02318D38 +.public ov00_02318D48 +.public ov00_02318D54 +.public ov00_02318D5C +.public ov00_02318D64 +.public ov00_02318D6C +.public ov00_02318D74 +.public ov00_02318D7C +.public ov00_02318D84 +.public ov00_02318D8C +.public ov00_02318D94 +.public ov00_02318D9C +.public ov00_02318DA4 +.public ov00_02318DAC +.public ov00_02318DB4 +.public ov00_02318DBC +.public ov00_02318DC4 +.public ov00_02318DDC +.public ov00_02318DE8 +.public ov00_02318DF8 +.public ov00_02318E28 +.public ov00_02318E40 +.public ov00_02318E58 +.public ov00_02318E64 +.public ov00_02318E6C +.public ov00_02318E74 +.public ov00_02318E78 +.public ov00_02318E88 +.public ov00_02318E9C +.public ov00_02318EA0 +.public ov00_02318EB8 +.public ov00_02318ED0 +.public ov00_02318F24 +.public ov00_02318F44 +.public ov00_02318F50 +.public ov00_02318F54 +.public ov00_02318F5C +.public ov00_02318F60 +.public ov00_02318F74 +.public ov00_02318F88 +.public ov00_02318F98 +.public ov00_02318FA0 +.public ov00_02318FAC +.public ov00_02318FB0 +.public ov00_02318FB4 +.public ov00_02318FD4 +.public ov00_02318FF4 +.public ov00_02319010 +.public ov00_0231902C +.public ov00_02319030 +.public ov00_0231903C +.public ov00_02319040 +.public ov00_02319044 +.public ov00_02319048 +.public ov00_0231904C +.public ov00_02319068 +.public ov00_02319084 +.public ov00_023190AC +.public ov00_023190C0 +.public ov00_023190D0 +.public ov00_023190E0 +.public ov00_023190FC +.public ov00_0231911C +.public ov00_02319130 +.public ov00_0231914C +.public ov00_02319158 +.public ov00_02319168 +.public ov00_02319178 +.public ov00_02319198 +.public ov00_023191A4 +.public ov00_023191C4 +.public ov00_023191CC +.public ov00_023191D4 +.public ov00_023191E4 +.public ov00_023191EC +.public ov00_023191F4 +.public ov00_02319200 +.public ov00_02319204 +.public ov00_0231920C +.public ov00_02319214 +.public ov00_02319220 +.public ov00_0231922C +.public ov00_02319268 +.public ov00_02319298 +.public ov00_023192B8 +.public ov00_023192C8 +.public ov00_023192D8 +.public ov00_023192F8 +.public ov00_02319300 +.public ov00_02319308 +.public ov00_0231930C +.public ov00_02319314 +.public ov00_02319320 +.public ov00_0231932C +.public ov00_02319334 +.public ov00_02319344 +.public ov00_02319350 +.public ov00_0231A0E0 +.public ov00_0231A108 +.public ov00_0231A12C +.public ov00_0231A14C +.public ov00_0231A154 +.public ov00_0231A168 +.public ov00_0231A17C +.public ov00_0231A184 +.public ov00_0231A190 +.public ov00_0231A194 +.public ov00_0231A19C +.public ov00_0231A1A0 +.public ov00_0231A1A4 +.public ov00_0231A1A8 +.public ov00_0231A1AC +.public ov00_0231A1B0 +.public ov00_0231A1BC +.public ov00_0231A1C0 +.public ov00_0231A1C4 +.public ov00_0231A1C8 +.public ov00_0231A1CC +.public ov00_0231A1D0 +.public ov00_0231A1DC +.public ov00_0231A1E8 +.public ov00_0231A200 +.public ov00_0231A204 +.public ov00_0231A208 +.public ov00_0231A210 +.public ov00_0231A21C +.public ov00_0231A228 +.public ov00_0231A234 +.public ov00_0231A240 +.public ov00_0231A248 +.public ov00_0231A2A0 +.public ov00_0231A2A4 +.public ov00_0231A2AC +.public ov00_0231A2B4 +.public ov00_0231A2BC +.public ov00_0231A2C0 +.public ov00_0231A2C4 +.public ov00_0231A2D8 +.public ov00_0231A2F8 +.public ov00_0231A33C +.public ov00_0231A368 +.public ov00_0231A370 +.public ov00_0231A378 +.public ov00_0231A3A0 +.public ov00_0231A3C4 +.public ov00_0231A3EC +.public ov00_0231A3F4 +.public ov00_0231A3F8 +.public ov00_0231A400 +.public ov00_0231A41C +.public ov00_0231A448 +.public ov00_0231A534 +.public ov00_0231A54C +.public ov00_0231A550 +.public ov00_0231A560 +.public ov00_0231A56C +.public ov00_0231A578 +.public ov00_0231A580 +.public ov00_0231A58C +.public ov00_0231A594 +.public ov00_0231A59C +.public ov00_0231A5A4 +.public ov00_0231A5AC +.public ov00_0231A5B4 +.public ov00_0231A5BC +.public ov00_0231A5C4 +.public ov00_0231A5CC +.public ov00_0231A5D4 +.public ov00_0231A5E4 +.public ov00_0231A5EC +.public ov00_0231A5F0 +.public ov00_0231A5FC +.public ov00_0231A60C +.public ov00_0231A614 +.public ov00_0231A620 +.public ov00_0231A630 +.public ov00_0231A638 +.public ov00_0231A640 +.public ov00_0231A648 +.public ov00_0231A64C +.public ov00_0231A658 +.public ov00_0231A660 +.public ov00_0231A664 +.public ov00_0231A668 +.public ov00_0231A698 +.public ov00_0231A6CC +.public ov00_0231A6E0 +.public ov00_0231A6E4 +.public ov00_0231A6EC +.public ov00_0231A6F0 +.public ov00_0231A6F4 +.public ov00_0231A6FC +.public ov00_0231A70C +.public ov00_0231A718 +.public ov00_0231A724 +.public ov00_0231A738 +.public ov00_0231A740 +.public ov00_0231A7B0 +.public ov00_0231A7BC +.public ov00_0231A7E0 +.public ov00_0231A7E4 +.public ov00_0231A7E8 +.public ov00_0231A7EC +.public ov00_0231A7F0 +.public ov00_0231A7F4 +.public ov00_0231A7F8 +.public ov00_0231A804 +.public ov00_0231A810 +.public ov00_0231A814 +.public ov00_0231A818 +.public ov00_0231A81C +.public ov00_0231A824 +.public ov00_0231A858 +.public ov00_0231A85C +.public ov00_0231A890 +.public ov00_0231A898 +.public ov00_0231A8DC +.public ov00_0231A8E0 +.public ov00_0231A8F4 +.public ov00_0231A938 +.public ov00_0231A944 +.public ov00_0231A968 +.public ov00_0231A990 +.public ov00_0231A998 +.public ov00_0231A9C4 +.public ov00_0231A9D8 +.public ov00_0231A9DC +.public ov00_0231A9E4 +.public ov00_0231AA0C +.public ov00_0231AA38 +.public ov00_0231AA68 +.public ov00_0231AABC +.public ov00_0231AAC0 +.public ov00_0231AAEC +.public ov00_0231AAF4 +.public ov00_0231AB00 +.public ov00_0231AB04 +.public ov00_0231AB08 +.public ov00_0231AB10 +.public ov00_0231AB18 +.public ov00_0231AB20 +.public ov00_0231AB2C +.public ov00_0231AB34 +.public ov00_0231AB3C +.public ov00_0231AB40 +.public ov00_0231AB4C +.public ov00_0231AB5C +.public ov00_0231AB68 +.public ov00_0231AB74 +.public ov00_0231AB7C +.public ov00_0231AB80 +.public ov00_0231AB90 +.public ov00_0231ABA0 +.public ov00_0231ABB0 +.public ov00_0231ABB4 +.public ov00_0231ABB8 +.public ov00_0231ABC0 +.public ov00_0231ABCC +.public ov00_0231ABDC +.public ov00_0231ABEC +.public ov00_0231AC08 +.public ov00_0231AC18 +.public ov00_0231AC28 +.public ov00_0231AC2C +.public ov00_0231AC5C +.public ov00_0231AC6C +.public ov00_0231AC78 +.public ov00_0231AC84 +.public ov00_0231AC94 +.public ov00_0231ACA0 +.public ov00_0231ACA8 +.public ov00_0231ACB8 +.public ov00_0231ACC8 +.public ov00_0231ACE0 +.public ov00_0231ACF8 +.public ov00_0231AD04 +.public ov00_0231AD14 +.public ov00_0231AD20 +.public ov00_0231AD34 +.public ov00_0231AD38 +.public ov00_0231AD64 +.public ov00_0231AD6C +.public ov00_0231AD7C +.public ov00_0231AD84 +.public ov00_0231AD8C +.public ov00_0231AD94 +.public ov00_0231AD9C +.public ov00_0231ADA4 +.public ov00_0231ADCC +.public ov00_0231ADD8 +.public ov00_0231ADE4 +.public ov00_0231ADF0 +.public ov00_0231AE00 +.public ov00_0231AE08 +.public ov00_0231AE10 +.public ov00_0231AE18 +.public ov00_0231AE48 +.public ov00_0231AE4C +.public ov00_0231AE54 +.public ov00_0231AE64 +.public ov00_0231AE6C +.public ov00_0231AE78 +.public ov00_0231AE7C +.public ov00_0231AE84 +.public ov00_0231AE8C +.public ov00_0231AE94 +.public ov00_0231AE98 +.public ov00_0231AEA0 +.public ov00_0231AEA4 +.public ov00_0231AEA8 +.public ov00_0231AEB4 +.public ov00_0231AEBC +.public ov00_0231AEC4 +.public ov00_0231AECC +.public ov00_0231AED8 +.public ov00_0231AEE4 +.public ov00_0231AEEC +.public ov00_0231AEF4 +.public ov00_0231AF00 +.public ov00_0231AF0C +.public ov00_0231AF18 +.public ov00_0231AF24 +.public ov00_0231AF30 +.public ov00_0231AF3C +.public ov00_0231AF4C +.public ov00_0231AF50 +.public ov00_0231AF54 +.public ov00_0231AF68 +.public ov00_0231AF70 +.public ov00_0231AF94 +.public ov00_0231AFA0 +.public ov00_0231AFB0 +.public ov00_0231AFC0 +.public ov00_0231AFC4 +.public ov00_0231AFEC +.public ov00_0231B018 +.public ov00_0231B020 +.public ov00_0231B024 +.public ov00_0231B02C +.public ov00_0231B03C +.public ov00_0231B07C +.public ov00_0231B0BC +.public ov00_0231B0C8 +.public ov00_0231B0F0 +.public ov00_0231B11C +.public ov00_0231B144 +.public ov00_0231B178 +.public ov00_0231B1AC +.public ov00_0231B1D4 +.public ov00_0231B1E8 +.public ov00_0231B1F8 +.public ov00_0231B1FC +.public ov00_0231B200 +.public ov00_0231B208 +.public ov00_0231B210 +.public ov00_0231B220 +.public ov00_0231B254 +.public ov00_0231B25C +.public ov00_0231B268 +.public ov00_0231B274 +.public ov00_0231B284 +.public ov00_0231B28C +.public ov00_0231B290 +.public ov00_0231B29C +.public ov00_0231B2A8 +.public ov00_0231B2B4 +.public ov00_0231B2C0 +.public ov00_0231B2CC +.public ov00_0231B2D4 +.public ov00_0231B2E0 +.public ov00_0231B2EC +.public ov00_0231B2FC +.public ov00_0231B30C +.public ov00_0231B314 +.public ov00_0231B31C +.public ov00_0231B324 +.public ov00_0231B330 +.public ov00_0231B338 +.public ov00_0231B340 +.public ov00_0231B350 +.public ov00_0231B35C +.public ov00_0231B364 +.public ov00_0231B36C +.public ov00_0231B39C +.public ov00_0231B3A4 +.public ov00_0231B3D4 +.public ov00_0231B3DC +.public ov00_0231B3E8 +.public ov00_0231B3F0 +.public ov00_0231B3F8 +.public ov00_0231B418 +.public ov00_0231B440 +.public ov00_0231B454 +.public ov00_0231B458 +.public ov00_0231B468 +.public ov00_0231B470 +.public ov00_0231B4A0 +.public ov00_0231B4AC +.public ov00_0231B4B4 +.public ov00_0231B4C4 +.public ov00_0231B4CC +.public ov00_0231B4D8 +.public ov00_0231B4E4 +.public ov00_0231B4F0 +.public ov00_0231B4FC +.public ov00_0231B508 +.public ov00_0231B518 +.public ov00_0231B520 +.public ov00_0231B528 +.public ov00_0231B530 +.public ov00_0231B53C +.public ov00_0231B544 +.public ov00_0231B54C +.public ov00_0231B554 +.public ov00_0231B55C +.public ov00_0231B564 +.public ov00_0231B56C +.public ov00_0231B574 +.public ov00_0231B57C +.public ov00_0231B584 +.public ov00_0231B58C +.public ov00_0231B594 +.public ov00_0231B59C +.public ov00_0231B5A4 +.public ov00_0231B5B4 +.public ov00_0231B5CC +.public ov00_0231B5D8 +.public ov00_0231B5E0 +.public ov00_0231B5F4 +.public ov00_0231B608 +.public ov00_0231B60C +.public ov00_0231B610 +.public ov00_0231B614 +.public ov00_0231B618 +.public ov00_0231B628 +.public ov00_0231B638 +.public ov00_0231B644 +.public ov00_0231B650 +.public ov00_0231B660 +.public ov00_0231B670 +.public ov00_0231B680 +.public ov00_0231B694 +.public ov00_0231B6A4 +.public ov00_0231B6B4 +.public ov00_0231B6C4 +.public ov00_0231B6D4 +.public ov00_0231B6EC +.public ov00_0231B700 +.public ov00_0231B714 +.public ov00_0231B720 +.public ov00_0231B738 +.public ov00_0231B740 +.public ov00_0231B750 +.public ov00_0231B764 +.public ov00_0231B778 +.public ov00_0231B784 +.public ov00_0231B788 +.public ov00_0231B798 +.public ov00_0231B7B4 +.public ov00_0231B7BC +.public ov00_0231B7C4 +.public ov00_0231B7CC +.public ov00_0231B7D4 +.public ov00_0231B7DC +.public ov00_0231B7E4 +.public ov00_0231B808 +.public ov00_0231B810 +.public ov00_0231B830 +.public ov00_0231B838 +.public ov00_0231B848 +.public ov00_0231B84C +.public ov00_0231B884 +.public ov00_0231B888 +.public ov00_0231B890 +.public ov00_0231B898 +.public ov00_0231B8AC +.public ov00_0231B8B0 +.public ov00_0231B8C0 +.public ov00_0231B8C8 +.public ov00_0231B8F8 +.public ov00_0231B904 +.public ov00_0231B914 +.public ov00_0231B91C +.public ov00_0231B95C +.public ov00_0231B96C +.public ov00_0231B994 +.public ov00_0231B9C8 +.public ov00_0231B9F8 +.public ov00_0231BA20 +.public ov00_0231BA34 +.public ov00_0231BA4C +.public ov00_0231BA50 +.public ov00_0231BA7C +.public ov00_0231BA88 +.public ov00_0231BA94 +.public ov00_0231BAA0 +.public ov00_0231BAB0 +.public ov00_0231BABC +.public ov00_0231BAC4 +.public ov00_0231BAD4 +.public ov00_0231BADC +.public ov00_0231BAE8 +.public ov00_0231BAF4 +.public ov00_0231BB00 +.public ov00_0231BB08 +.public ov00_0231BB10 +.public ov00_0231BB18 +.public ov00_0231BB24 +.public ov00_0231BB30 +.public ov00_0231BB3C +.public ov00_0231BB44 +.public ov00_0231BB50 +.public ov00_0231BB5C +.public ov00_0231BB64 +.public ov00_0231BB70 +.public ov00_0231BB80 +.public ov00_0231BB8C +.public ov00_0231BB94 +.public ov00_0231BB98 +.public ov00_0231BBA8 +.public ov00_0231BBB8 +.public ov00_0231BBC4 +.public ov00_0231BBCC +.public ov00_0231BBF8 +.public ov00_0231BC00 +.public ov00_0231BC08 +.public ov00_0231BC0C +.public ov00_0231BC10 +.public ov00_0231BC18 +.public ov00_0231BC24 +.public ov00_0231BC30 +.public ov00_0231BC3C +.public ov00_0231BC44 +.public ov00_0231BC6C +.public ov00_0231BC70 +.public ov00_0231BC74 +.public ov00_0231BC7C +.public ov00_0231BC84 +.public ov00_0231BC88 +.public ov00_0231BC90 +.public ov00_0231BC9C +.public ov00_0231BCA0 +.public ov00_0231BCA8 +.public ov00_0231BCAC +.public ov00_0231BCB4 +.public ov00_0231BCBC +.public ov00_0231BCC0 +.public ov00_0231BCC8 +.public ov00_0231BCD0 +.public ov00_0231BCDC +.public ov00_0231BCE4 +.public ov00_0231BCE8 +.public ov00_0231BCF0 +.public ov00_0231BCF4 +.public ov00_0231BD0C +.public ov00_0231BD14 +.public ov00_0231BD20 +.public ov00_0231BD28 +.public ov00_0231BD58 +.public ov00_0231BD68 +.public ov00_0231BD70 +.public ov00_0231BD78 +.public ov00_0231BD80 +.public ov00_0231BD8C +.public ov00_0231BD94 +.public ov00_0231BDCC +.public ov00_0231BDDC +.public ov00_0231BE28 +.public ov00_0231BE38 +.public ov00_0231BE48 +.public ov00_0231BE4C +.public ov00_0231BE50 +.public ov00_0231BE58 +.public ov00_0231BE5C +.public ov00_0231BE64 +.public ov00_0231BE6C +.public ov00_0231BE74 +.public ov00_0231BE78 +.public ov00_0231BE7C +.public ov00_0231BE84 +.public ov00_0231BE8C +.public ov00_0231BE94 +.public ov00_0231BEA0 +.public ov00_0231BEAC +.public ov00_0231BEB8 +.public ov00_0231BEC4 +.public ov00_0231BECC +.public ov00_0231BED4 +.public ov00_0231BF24 +.public ov00_023250C8 +.public ov00_02326CB4 +.public ov00_02326CBC +.public ov00_02326CC0 +.public ov00_02326CD4 +.public ov00_02326CD8 +.public ov00_02326CDC +.public ov00_02326CF0 +.public ov00_02326D0C +.public ov00_02326D54 +.public ov00_02326D68 +.public ov00_02326D6C +.public ov00_02326D74 +.public ov00_02326D7C +.public ov00_02326D84 +.public ov00_02326D88 +.public ov00_02326DA0 +.public ov00_02326DA8 +.public ov00_02326E28 +.public ov00_02326F28 +.public ov00_02326F34 +.public ov00_02326F48 +.public ov00_02326F68 +.public ov00_02326F88 +.public ov00_02326F89 +.public ov00_02326F90 +.public ov00_023276C0 +.public ov00_023276C8 +.public ov00_023276CC +.public ov00_023276D4 +.public ov00_023276E0 +.public ov00_023276E5 +.public ov00_023276E6 +.public ov00_023276EA +.public ov00_023276EC +.public ov00_02327700 +.public ov00_02327720 +.public ov00_02327724 +.public ov00_02327728 +.public ov00_0232772C +.public ov00_02327730 +.public ov00_02327734 +.public ov00_0232773C +.public ov00_02327740 +.public ov00_02327744 +.public ov00_02327748 +.public ov00_0232774C +.public ov00_02327758 +.public ov00_02327764 +.public ov00_02327778 +.public ov00_02327790 +.public ov00_023277AC +.public ov00_023277D0 +.public ov00_023277D8 +.public ov00_0232780C +.public ov00_02327818 +.public ov00_02327830 +.public ov00_0232788C +.public ov00_0232790C +.public ov00_02327910 +.public ov00_02327928 +.public ov00_02327940 +.public ov00_02327944 +.public ov00_02327948 +.public ov00_0232794C +.public ov00_02327950 +.public ov00_02327954 +.public ov00_0232795C +.public ov00_02327960 +.public ov00_02327964 +.public ov00_02328224 +.public ov00_02328228 +.public ov00_02328240 +.public ov00_02328260 +.public ov00_02328320 +.public ov00_02328340 +.public ov00_02328348 +.public ov00_0232834C +.public ov00_02328388 +.public ov00_02328391 +.public ov00_02328788 +.public ov00_023287A0 +.public ov00_023287B0 +.public ov00_023287C4 +.public ov00_02328800 +.public ov00_02328804 +.public ov00_02328844 +.public ov00_02328884 +.public ov00_02328888 +.public ov00_0232888C +.public ov00_02328890 +.public ov00_02328895 +.public ov00_023288DC +.public ov00_023288E0 +.public ov00_023288E4 +.public ov00_023288E8 +.public ov00_0232896C +.public ov00_023289A8 +.public ov00_023289AC +.public ov00_023289B0 +.public ov00_023289C0 +.public ov00_023289C4 +.public ov00_023289D8 +.public ov00_023289DC +.public ov00_023289E0 +.public ov00_023289E8 +.public ov00_02328A18 +.public ov00_02328B18 +.public ov00_02328C18 +.public qr2_buffer_add_int +.public qr2_init_socketa +.public qr2_keybuffer_add +.public qr2_parse_querya +.public qr2_register_clientmessage_callback +.public qr2_register_natneg_callback +.public qr2_register_publicaddress_callback +.public qr2_send_statechanged +.public qr2_shutdown +.public qr2_think +.public rand +.public recv +.public recvfrom +.public rewind +.public send +.public sendto +.public snprintf +.public socket +.public sprintf +.public srand +.public strcat +.public strchr +.public strcmp +.public strcpy +.public strcspn +.public strlen +.public strncmp +.public strncpy +.public strstr +.public strtol +.public strtoul +.public wcslen diff --git a/asm/include/overlay_11_022E96F4.inc b/asm/include/overlay_11_022E96F4.inc index d3a3c49f..826c369a 100644 --- a/asm/include/overlay_11_022E96F4.inc +++ b/asm/include/overlay_11_022E96F4.inc @@ -1,1475 +1,9 @@ #pragma once -.public C_ROUTINE_NAMES -.public ClampComponentAbs -.public Debug_GetDebugFlag -.public EuclideanNorm__020050B0 -.public GROUND_WAN_FILES_TABLE -.public GetFadeStatus -.public GetHeldButtons -.public GetPressedButtons -.public GetReleasedStylus -.public GetSpeedOption -.public HandleFadesVeneer .public InitRender3dElement64 -.public IsTouchScreenUseAnywhere -.public KeyWaitInit -.public MemAlloc -.public MemFree -.public RandRange -.public SCRIPT_OP_CODE_NAMES -.public UnlockScriptingLock -.public _fdiv -.public _ffix -.public _fflt -.public ov10_022BDB54 -.public ov10_022BDB60 -.public ov10_022BDBA4 -.public ov11_022EF53C -.public ov11_022F1F3C -.public ov11_022F7188 -.public ov11_022F75C0 -.public ov11_022F9074 -.public ov11_022F90F4 -.public ov11_022FBBC8 -.public ov11_022FBC0C -.public ov11_022FCCC4 -.public ov11_022FE3B0 -.public ov11_0230114C -.public ov11_0230D000 -.public ov11_0230D220 -.public ov11_0230ED28 -.public ov11_0230F25C -.public ov11_0230F28C -.public ov11_02310D44 -.public ov11_02310DE0 -.public ov11_02316AFC -.public ov11_02316B04 -.public ov11_02316B14 -.public ov11_02316B1C -.public ov11_02316B24 -.public ov11_02316B2C -.public ov11_02316B34 -.public ov11_02316B3C -.public ov11_02316B44 -.public ov11_02316B4C -.public ov11_02316B54 -.public ov11_02316B5C -.public ov11_02316B64 -.public ov11_02316B6C -.public ov11_02316B74 -.public ov11_02316B7C -.public ov11_02316B84 -.public ov11_02316B8C -.public ov11_02316B94 -.public ov11_02316B9C -.public ov11_02316BA4 -.public ov11_02316BAC -.public ov11_02316BB4 -.public ov11_02316BBC -.public ov11_02316BC8 -.public ov11_02316BD4 -.public ov11_02316BE0 -.public ov11_02316BEC -.public ov11_02316BF8 -.public ov11_02316C04 -.public ov11_02316C10 -.public ov11_02316C1C -.public ov11_02316C28 -.public ov11_02316C34 -.public ov11_02316C40 -.public ov11_02316C4C -.public ov11_02316C58 -.public ov11_02316C64 -.public ov11_02316C70 -.public ov11_02316C7C -.public ov11_02316C88 -.public ov11_02316C94 -.public ov11_02316CA0 -.public ov11_02316CAC -.public ov11_02316CB8 -.public ov11_02316CC4 -.public ov11_02316CDC -.public ov11_02316CE8 -.public ov11_02316CF4 -.public ov11_02316D00 -.public ov11_02316D0C -.public ov11_02316D18 -.public ov11_02316D24 -.public ov11_02316D30 -.public ov11_02316D3C -.public ov11_02316D48 -.public ov11_02316D54 -.public ov11_02316D60 -.public ov11_02316D6C -.public ov11_02316D78 -.public ov11_02316D84 -.public ov11_02316D90 -.public ov11_02316D9C -.public ov11_02316DA8 -.public ov11_02316DB4 -.public ov11_02316DC0 -.public ov11_02316DCC -.public ov11_02316DDC -.public ov11_02316DEC -.public ov11_02316DFC -.public ov11_02316E0C -.public ov11_02316E1C -.public ov11_02316E2C -.public ov11_02316E3C -.public ov11_02316E4C -.public ov11_02316E5C -.public ov11_02316E6C -.public ov11_02316E7C -.public ov11_02316E8C -.public ov11_02316E9C -.public ov11_02316EAC -.public ov11_02316EBC -.public ov11_02316ECC -.public ov11_02316EDC -.public ov11_02316EEC -.public ov11_02316EFC -.public ov11_02316F0C -.public ov11_02316F1C -.public ov11_02316F2C -.public ov11_02316F3C -.public ov11_02316F4C -.public ov11_02316F5C -.public ov11_02316F6C -.public ov11_02316F7C -.public ov11_02316F8C -.public ov11_02316F9C -.public ov11_02316FAC -.public ov11_02316FBC -.public ov11_02316FCC -.public ov11_02316FDC -.public ov11_02316FEC -.public ov11_02316FFC -.public ov11_0231700C -.public ov11_0231701C -.public ov11_0231702C -.public ov11_0231703C -.public ov11_0231704C -.public ov11_0231705C -.public ov11_0231706C -.public ov11_0231707C -.public ov11_0231708C -.public ov11_0231709C -.public ov11_023170AC -.public ov11_023170BC -.public ov11_023170CC -.public ov11_023170DC -.public ov11_023170EC -.public ov11_023170FC -.public ov11_0231710C -.public ov11_0231711C -.public ov11_0231712C -.public ov11_0231713C -.public ov11_0231714C -.public ov11_0231715C -.public ov11_0231716C -.public ov11_0231717C -.public ov11_0231718C -.public ov11_0231719C -.public ov11_023171AC -.public ov11_023171BC -.public ov11_023171CC -.public ov11_023171DC -.public ov11_023171EC -.public ov11_023171FC -.public ov11_0231720C -.public ov11_0231721C -.public ov11_0231722C -.public ov11_0231723C -.public ov11_0231724C -.public ov11_0231725C -.public ov11_0231726C -.public ov11_0231727C -.public ov11_0231728C -.public ov11_0231729C -.public ov11_023172AC -.public ov11_023172BC -.public ov11_023172CC -.public ov11_023172DC -.public ov11_023172EC -.public ov11_023172FC -.public ov11_0231730C -.public ov11_02317320 -.public ov11_02317334 -.public ov11_02317348 -.public ov11_0231735C -.public ov11_02317370 -.public ov11_02317384 -.public ov11_02317398 -.public ov11_023173AC -.public ov11_023173C0 -.public ov11_023173D4 -.public ov11_023173E8 -.public ov11_023173FC -.public ov11_02317410 -.public ov11_02317424 -.public ov11_02317438 -.public ov11_0231744C -.public ov11_02317460 -.public ov11_02317474 -.public ov11_02317488 -.public ov11_0231749C -.public ov11_023174B0 -.public ov11_023174C4 -.public ov11_023174D8 -.public ov11_023174EC -.public ov11_02317500 -.public ov11_02317514 -.public ov11_02317528 -.public ov11_0231753C -.public ov11_02317550 -.public ov11_02317564 -.public ov11_02317578 -.public ov11_0231758C -.public ov11_023175A0 -.public ov11_023175B4 -.public ov11_023175C8 -.public ov11_023175DC -.public ov11_023175F0 -.public ov11_02317604 -.public ov11_02317618 -.public ov11_0231762C -.public ov11_02317640 -.public ov11_02317654 -.public ov11_02317668 -.public ov11_0231767C -.public ov11_02317690 -.public ov11_023176A4 -.public ov11_023176B8 -.public ov11_023176CC -.public ov11_023176E0 -.public ov11_023176F4 -.public ov11_02317708 -.public ov11_0231771C -.public ov11_02317730 -.public ov11_02317744 -.public ov11_02317758 -.public ov11_0231776C -.public ov11_02317780 -.public ov11_02317794 -.public ov11_023177A8 -.public ov11_023177BC -.public ov11_023177D0 -.public ov11_023177E4 -.public ov11_023177F8 -.public ov11_0231780C -.public ov11_02317820 -.public ov11_02317834 -.public ov11_02317848 -.public ov11_0231785C -.public ov11_02317870 -.public ov11_02317884 -.public ov11_02317898 -.public ov11_023178AC -.public ov11_023178C0 -.public ov11_023178D4 -.public ov11_023178E8 -.public ov11_023178FC -.public ov11_02317910 -.public ov11_02317924 -.public ov11_02317938 -.public ov11_0231794C -.public ov11_02317960 -.public ov11_02317974 -.public ov11_02317988 -.public ov11_0231799C -.public ov11_023179B0 -.public ov11_023179C4 -.public ov11_023179D8 -.public ov11_023179EC -.public ov11_02317A00 -.public ov11_02317A14 -.public ov11_02317A28 -.public ov11_02317A3C -.public ov11_02317A50 -.public ov11_02317A64 -.public ov11_02317A78 -.public ov11_02317A8C -.public ov11_02317AA0 -.public ov11_02317AB4 -.public ov11_02317AC8 -.public ov11_02317ADC -.public ov11_02317AF0 -.public ov11_02317B04 -.public ov11_02317B18 -.public ov11_02317B2C -.public ov11_02317B40 -.public ov11_02317B54 -.public ov11_02317B68 -.public ov11_02317B7C -.public ov11_02317B90 -.public ov11_02317BA4 -.public ov11_02317BB8 -.public ov11_02317BCC -.public ov11_02317BE0 -.public ov11_02317BF4 -.public ov11_02317C08 -.public ov11_02317C1C -.public ov11_02317C30 -.public ov11_02317C44 -.public ov11_02317C58 -.public ov11_02317C6C -.public ov11_02317C80 -.public ov11_02317C94 -.public ov11_02317CA8 -.public ov11_02317CBC -.public ov11_02317CD4 -.public ov11_02317CEC -.public ov11_02317D04 -.public ov11_02317D1C -.public ov11_02317D34 -.public ov11_02317D4C -.public ov11_02317D64 -.public ov11_02317D7C -.public ov11_02317D94 -.public ov11_02317DAC -.public ov11_02317DC4 -.public ov11_02317DDC -.public ov11_02317DF4 -.public ov11_02317E0C -.public ov11_02317E24 -.public ov11_02317E3C -.public ov11_02317E54 -.public ov11_02317E6C -.public ov11_02317E84 -.public ov11_02317E9C -.public ov11_02317EB4 -.public ov11_02317ECC -.public ov11_02317EE4 -.public ov11_02317EFC -.public ov11_02317F14 -.public ov11_02317F2C -.public ov11_02317F44 -.public ov11_02317F5C -.public ov11_02317F74 -.public ov11_02317F8C -.public ov11_02317FA4 -.public ov11_02317FBC -.public ov11_02317FD4 -.public ov11_02317FEC -.public ov11_02318004 -.public ov11_0231801C -.public ov11_02318034 -.public ov11_0231804C -.public ov11_02318064 -.public ov11_0231807C -.public ov11_02318094 -.public ov11_023180AC -.public ov11_023180C4 -.public ov11_023180DC -.public ov11_023180F4 -.public ov11_0231810C -.public ov11_02318124 -.public ov11_0231813C -.public ov11_02318154 -.public ov11_0231816C -.public ov11_02318184 -.public ov11_0231819C -.public ov11_023181B4 -.public ov11_023181D0 -.public ov11_023181EC -.public ov11_02318208 -.public ov11_02318224 -.public ov11_02318240 -.public ov11_0231825C -.public ov11_02318278 -.public ov11_02318294 -.public ov11_023182B0 -.public ov11_023182CC -.public ov11_023182E8 -.public ov11_02318304 -.public ov11_02318320 -.public ov11_0231833C -.public ov11_02318358 -.public ov11_02318374 -.public ov11_02318390 -.public ov11_023183AC -.public ov11_023183C8 -.public ov11_023183E4 -.public ov11_02318400 -.public ov11_0231841C -.public ov11_02318438 -.public ov11_02318454 -.public ov11_02318470 -.public ov11_0231848C -.public ov11_023184A8 -.public ov11_023184C4 -.public ov11_023184E4 -.public ov11_02318504 -.public ov11_02318524 -.public ov11_02318544 -.public ov11_02318564 -.public ov11_02318584 -.public ov11_023185A4 -.public ov11_023185C8 -.public ov11_023185EC -.public ov11_02319AF4 -.public ov11_02319AFC -.public ov11_02319B04 -.public ov11_02319B0C -.public ov11_02319B14 -.public ov11_02319B1C -.public ov11_02319B28 -.public ov11_02319B34 -.public ov11_02319B40 -.public ov11_02319B4C -.public ov11_02319B58 -.public ov11_02319B64 -.public ov11_02319B70 -.public ov11_02319B7C -.public ov11_02319B88 -.public ov11_02319B94 -.public ov11_02319BA0 -.public ov11_02319BAC -.public ov11_02319BB8 -.public ov11_02319BC4 -.public ov11_02319BD0 -.public ov11_02319BDC -.public ov11_02319BE8 -.public ov11_02319BF4 -.public ov11_02319C00 -.public ov11_02319C0C -.public ov11_02319C18 -.public ov11_02319C24 -.public ov11_02319C30 -.public ov11_02319C3C -.public ov11_02319C48 -.public ov11_02319C54 -.public ov11_02319C60 -.public ov11_02319C6C -.public ov11_02319C78 -.public ov11_02319C84 -.public ov11_02319C90 -.public ov11_02319C9C -.public ov11_02319CA8 -.public ov11_02319CB4 -.public ov11_02319CC0 -.public ov11_02319CCC -.public ov11_02319CD8 -.public ov11_02319CE4 -.public ov11_02319CF0 -.public ov11_02319CFC -.public ov11_02319D08 -.public ov11_02319D14 -.public ov11_02319D20 -.public ov11_02319D30 -.public ov11_02319D40 -.public ov11_02319D50 -.public ov11_02319D60 -.public ov11_02319D70 -.public ov11_02319D80 -.public ov11_02319D90 -.public ov11_02319DA0 -.public ov11_02319DB0 -.public ov11_02319DC0 -.public ov11_02319DD0 -.public ov11_02319DE0 -.public ov11_02319DF0 -.public ov11_02319E00 -.public ov11_02319E10 -.public ov11_02319E20 -.public ov11_02319E30 -.public ov11_02319E40 -.public ov11_02319E50 -.public ov11_02319E60 -.public ov11_02319E70 -.public ov11_02319E80 -.public ov11_02319E90 -.public ov11_02319EA0 -.public ov11_02319EB0 -.public ov11_02319EC0 -.public ov11_02319ED0 -.public ov11_02319EE0 -.public ov11_02319EF0 -.public ov11_02319F00 -.public ov11_02319F10 -.public ov11_02319F20 -.public ov11_02319F30 -.public ov11_02319F40 -.public ov11_02319F50 -.public ov11_02319F60 -.public ov11_02319F70 -.public ov11_02319F80 -.public ov11_02319F90 -.public ov11_02319FA0 -.public ov11_02319FB0 -.public ov11_02319FC0 -.public ov11_02319FD0 -.public ov11_02319FE0 -.public ov11_02319FF0 -.public ov11_0231A000 -.public ov11_0231A010 -.public ov11_0231A020 -.public ov11_0231A030 -.public ov11_0231A040 -.public ov11_0231A050 -.public ov11_0231A060 -.public ov11_0231A070 -.public ov11_0231A080 -.public ov11_0231A090 -.public ov11_0231A0A0 -.public ov11_0231A0B0 -.public ov11_0231A0C0 -.public ov11_0231A0D0 -.public ov11_0231A0E0 -.public ov11_0231A0F0 -.public ov11_0231A100 -.public ov11_0231A110 -.public ov11_0231A120 -.public ov11_0231A130 -.public ov11_0231A140 -.public ov11_0231A150 -.public ov11_0231A160 -.public ov11_0231A170 -.public ov11_0231A180 -.public ov11_0231A190 -.public ov11_0231A1A0 -.public ov11_0231A1B0 -.public ov11_0231A1C0 -.public ov11_0231A1D0 -.public ov11_0231A1E0 -.public ov11_0231A1F0 -.public ov11_0231A200 -.public ov11_0231A210 -.public ov11_0231A220 -.public ov11_0231A230 -.public ov11_0231A240 -.public ov11_0231A250 -.public ov11_0231A260 -.public ov11_0231A270 -.public ov11_0231A280 -.public ov11_0231A290 -.public ov11_0231A2A0 -.public ov11_0231A2B0 -.public ov11_0231A2C0 -.public ov11_0231A2D0 -.public ov11_0231A2E0 -.public ov11_0231A2F0 -.public ov11_0231A300 -.public ov11_0231A310 -.public ov11_0231A320 -.public ov11_0231A330 -.public ov11_0231A340 -.public ov11_0231A350 -.public ov11_0231A360 -.public ov11_0231A370 -.public ov11_0231A380 -.public ov11_0231A390 -.public ov11_0231A3A0 -.public ov11_0231A3B0 -.public ov11_0231A3C0 -.public ov11_0231A3D0 -.public ov11_0231A3E0 -.public ov11_0231A3F0 -.public ov11_0231A400 -.public ov11_0231A410 -.public ov11_0231A420 -.public ov11_0231A430 -.public ov11_0231A440 -.public ov11_0231A450 -.public ov11_0231A460 -.public ov11_0231A470 -.public ov11_0231A480 -.public ov11_0231A490 -.public ov11_0231A4A0 -.public ov11_0231A4B0 -.public ov11_0231A4C0 -.public ov11_0231A4D0 -.public ov11_0231A4E0 -.public ov11_0231A4F0 -.public ov11_0231A500 -.public ov11_0231A510 -.public ov11_0231A520 -.public ov11_0231A530 -.public ov11_0231A540 -.public ov11_0231A550 -.public ov11_0231A560 -.public ov11_0231A570 -.public ov11_0231A580 -.public ov11_0231A590 -.public ov11_0231A5A0 -.public ov11_0231A5B0 -.public ov11_0231A5C0 -.public ov11_0231A5D0 -.public ov11_0231A5E0 -.public ov11_0231A5F0 -.public ov11_0231A600 -.public ov11_0231A610 -.public ov11_0231A620 -.public ov11_0231A630 -.public ov11_0231A640 -.public ov11_0231A650 -.public ov11_0231A660 -.public ov11_0231A670 -.public ov11_0231A680 -.public ov11_0231A690 -.public ov11_0231A6A0 -.public ov11_0231A6B0 -.public ov11_0231A6C0 -.public ov11_0231A6D0 -.public ov11_0231A6E0 -.public ov11_0231A6F0 -.public ov11_0231A700 -.public ov11_0231A710 -.public ov11_0231A720 -.public ov11_0231A730 -.public ov11_0231A740 -.public ov11_0231A750 -.public ov11_0231A760 -.public ov11_0231A770 -.public ov11_0231A780 -.public ov11_0231A790 -.public ov11_0231A7A0 -.public ov11_0231A7B0 -.public ov11_0231A7C0 -.public ov11_0231A7D0 -.public ov11_0231A7E0 -.public ov11_0231A7F0 -.public ov11_0231A800 -.public ov11_0231A810 -.public ov11_0231A820 -.public ov11_0231A830 -.public ov11_0231A840 -.public ov11_0231A850 -.public ov11_0231A860 -.public ov11_0231A870 -.public ov11_0231A880 -.public ov11_0231A890 -.public ov11_0231A8A0 -.public ov11_0231A8B0 -.public ov11_0231A8C0 -.public ov11_0231A8D0 -.public ov11_0231A8E0 -.public ov11_0231A8F0 -.public ov11_0231A900 -.public ov11_0231A910 -.public ov11_0231A920 -.public ov11_0231A930 -.public ov11_0231A940 -.public ov11_0231A950 -.public ov11_0231A960 -.public ov11_0231A970 -.public ov11_0231A980 -.public ov11_0231A990 -.public ov11_0231A9A0 -.public ov11_0231A9B0 -.public ov11_0231A9C0 -.public ov11_0231A9D0 -.public ov11_0231A9E0 -.public ov11_0231A9F0 -.public ov11_0231AA00 -.public ov11_0231AA10 -.public ov11_0231AA20 -.public ov11_0231AA30 -.public ov11_0231AA40 -.public ov11_0231AA50 -.public ov11_0231AA60 -.public ov11_0231AA70 -.public ov11_0231AA80 -.public ov11_0231AA90 -.public ov11_0231AAA0 -.public ov11_0231AAB0 -.public ov11_0231AAC0 -.public ov11_0231AAD0 -.public ov11_0231AAE0 -.public ov11_0231AAF0 -.public ov11_0231AB00 -.public ov11_0231AB10 -.public ov11_0231AB20 -.public ov11_0231AB30 -.public ov11_0231AB40 -.public ov11_0231AB50 -.public ov11_0231AB60 -.public ov11_0231AB70 -.public ov11_0231AB80 -.public ov11_0231AB90 -.public ov11_0231ABA0 -.public ov11_0231ABB0 -.public ov11_0231ABC0 -.public ov11_0231ABD0 -.public ov11_0231ABE0 -.public ov11_0231ABF0 -.public ov11_0231AC00 -.public ov11_0231AC10 -.public ov11_0231AC20 -.public ov11_0231AC30 -.public ov11_0231AC40 -.public ov11_0231AC50 -.public ov11_0231AC60 -.public ov11_0231AC70 -.public ov11_0231AC80 -.public ov11_0231AC90 -.public ov11_0231ACA0 -.public ov11_0231ACB0 -.public ov11_0231ACC0 -.public ov11_0231ACD0 -.public ov11_0231ACE0 -.public ov11_0231ACF0 -.public ov11_0231AD00 -.public ov11_0231AD10 -.public ov11_0231AD20 -.public ov11_0231AD30 -.public ov11_0231AD40 -.public ov11_0231AD50 -.public ov11_0231AD60 -.public ov11_0231AD70 -.public ov11_0231AD80 -.public ov11_0231AD90 -.public ov11_0231ADA0 -.public ov11_0231ADB0 -.public ov11_0231ADC0 -.public ov11_0231ADD0 -.public ov11_0231ADE0 -.public ov11_0231ADF0 -.public ov11_0231AE00 -.public ov11_0231AE10 -.public ov11_0231AE20 -.public ov11_0231AE30 -.public ov11_0231AE40 -.public ov11_0231AE50 -.public ov11_0231AE60 -.public ov11_0231AE70 -.public ov11_0231AE80 -.public ov11_0231AE90 -.public ov11_0231AEA0 -.public ov11_0231AEB0 -.public ov11_0231AEC0 -.public ov11_0231AED0 -.public ov11_0231AEE0 -.public ov11_0231AEF0 -.public ov11_0231AF00 -.public ov11_0231AF10 -.public ov11_0231AF20 -.public ov11_0231AF30 -.public ov11_0231AF40 -.public ov11_0231AF50 -.public ov11_0231AF60 -.public ov11_0231AF70 -.public ov11_0231AF80 -.public ov11_0231AF90 -.public ov11_0231AFA0 -.public ov11_0231AFB0 -.public ov11_0231AFC0 -.public ov11_0231AFD0 -.public ov11_0231AFE0 -.public ov11_0231AFF0 -.public ov11_0231B000 -.public ov11_0231B010 -.public ov11_0231B020 -.public ov11_0231B030 -.public ov11_0231B040 -.public ov11_0231B050 -.public ov11_0231B060 -.public ov11_0231B070 -.public ov11_0231B080 -.public ov11_0231B090 -.public ov11_0231B0A0 -.public ov11_0231B0B0 -.public ov11_0231B0C0 -.public ov11_0231B0D0 -.public ov11_0231B0E0 -.public ov11_0231B0F0 -.public ov11_0231B100 -.public ov11_0231B110 -.public ov11_0231B120 -.public ov11_0231B130 -.public ov11_0231B140 -.public ov11_0231B150 -.public ov11_0231B160 -.public ov11_0231B170 -.public ov11_0231B180 -.public ov11_0231B190 -.public ov11_0231B1A0 -.public ov11_0231B1B0 -.public ov11_0231B1C0 -.public ov11_0231B1D0 -.public ov11_0231B1E0 -.public ov11_0231B1F0 -.public ov11_0231B200 -.public ov11_0231B210 -.public ov11_0231B220 -.public ov11_0231B230 -.public ov11_0231B240 -.public ov11_0231B250 -.public ov11_0231B260 -.public ov11_0231B270 -.public ov11_0231B280 -.public ov11_0231B290 -.public ov11_0231B2A0 -.public ov11_0231B2B0 -.public ov11_0231B2C0 -.public ov11_0231B2D0 -.public ov11_0231B2E0 -.public ov11_0231B2F0 -.public ov11_0231B300 -.public ov11_0231B310 -.public ov11_0231B320 -.public ov11_0231B330 -.public ov11_0231B340 -.public ov11_0231B350 -.public ov11_0231B360 -.public ov11_0231B370 -.public ov11_0231B380 -.public ov11_0231B390 -.public ov11_0231B3A0 -.public ov11_0231B3B0 -.public ov11_0231B3C0 -.public ov11_0231B3D0 -.public ov11_0231B3E0 -.public ov11_0231B3F0 -.public ov11_0231B400 -.public ov11_0231B410 -.public ov11_0231B420 -.public ov11_0231B430 -.public ov11_0231B440 -.public ov11_0231B450 -.public ov11_0231B460 -.public ov11_0231B470 -.public ov11_0231B480 -.public ov11_0231B490 -.public ov11_0231B4A0 -.public ov11_0231B4B0 -.public ov11_0231B4C0 -.public ov11_0231B4D0 -.public ov11_0231B4E0 -.public ov11_0231B4F0 -.public ov11_0231B500 -.public ov11_0231B510 -.public ov11_0231B520 -.public ov11_0231B530 -.public ov11_0231B540 -.public ov11_0231B550 -.public ov11_0231B560 -.public ov11_0231B570 -.public ov11_0231B580 -.public ov11_0231B590 -.public ov11_0231B5A0 -.public ov11_0231B5B0 -.public ov11_0231B5C0 -.public ov11_0231B5D0 -.public ov11_0231B5E0 -.public ov11_0231B5F0 -.public ov11_0231B600 -.public ov11_0231B610 -.public ov11_0231B620 -.public ov11_0231B630 -.public ov11_0231B640 -.public ov11_0231B650 -.public ov11_0231B660 -.public ov11_0231B670 -.public ov11_0231B680 -.public ov11_0231B690 -.public ov11_0231B6A0 -.public ov11_0231B6B0 -.public ov11_0231B6C0 -.public ov11_0231B6D0 -.public ov11_0231B6E0 -.public ov11_0231B6F0 -.public ov11_0231B700 -.public ov11_0231B710 -.public ov11_0231B720 -.public ov11_0231B730 -.public ov11_0231B740 -.public ov11_0231B750 -.public ov11_0231B760 -.public ov11_0231B770 -.public ov11_0231B780 -.public ov11_0231B790 -.public ov11_0231B7A0 -.public ov11_0231B7B0 -.public ov11_0231B7C0 -.public ov11_0231B7D0 -.public ov11_0231B7E0 -.public ov11_0231B7F0 -.public ov11_0231B800 -.public ov11_0231B810 -.public ov11_0231B820 -.public ov11_0231B830 -.public ov11_0231B840 -.public ov11_0231B850 -.public ov11_0231B860 -.public ov11_0231B870 -.public ov11_0231B880 -.public ov11_0231B890 -.public ov11_0231B8A0 -.public ov11_0231B8B0 -.public ov11_0231B8C0 -.public ov11_0231B8D0 -.public ov11_0231B8E0 -.public ov11_0231B8F0 -.public ov11_0231B900 -.public ov11_0231B910 -.public ov11_0231B920 -.public ov11_0231B930 -.public ov11_0231B940 -.public ov11_0231B950 -.public ov11_0231B960 -.public ov11_0231B970 -.public ov11_0231B980 -.public ov11_0231B990 -.public ov11_0231B9A0 -.public ov11_0231B9B0 -.public ov11_0231B9C0 -.public ov11_0231B9D0 -.public ov11_0231B9E0 -.public ov11_0231B9F0 -.public ov11_0231BA00 -.public ov11_0231BA10 -.public ov11_0231BA20 -.public ov11_0231BA30 -.public ov11_0231BA40 -.public ov11_0231BA50 -.public ov11_0231BA60 -.public ov11_0231BA70 -.public ov11_0231BA80 -.public ov11_0231BA90 -.public ov11_0231BAA0 -.public ov11_0231BAB0 -.public ov11_0231BAC0 -.public ov11_0231BAD0 -.public ov11_0231BAE0 -.public ov11_0231BAF0 -.public ov11_0231BB00 -.public ov11_0231BB10 -.public ov11_0231BB20 -.public ov11_0231BB30 -.public ov11_0231BB40 -.public ov11_0231BB50 -.public ov11_0231BB60 -.public ov11_0231BB70 -.public ov11_0231BB80 -.public ov11_0231BB90 -.public ov11_0231BBA0 -.public ov11_0231BBB0 -.public ov11_0231BBC0 -.public ov11_0231BBD0 -.public ov11_0231BBE0 -.public ov11_0231BBF0 -.public ov11_0231BC00 -.public ov11_0231BC10 -.public ov11_0231BC20 -.public ov11_0231BC30 -.public ov11_0231BC40 -.public ov11_0231BC50 -.public ov11_0231BC60 -.public ov11_0231BC70 -.public ov11_0231BC80 -.public ov11_0231BC90 -.public ov11_0231BCA0 -.public ov11_0231BCB0 -.public ov11_0231BCC0 -.public ov11_0231BCD0 -.public ov11_0231BCE0 -.public ov11_0231BCF0 -.public ov11_0231BD00 -.public ov11_0231BD10 -.public ov11_0231BD20 -.public ov11_0231BD30 -.public ov11_0231BD40 -.public ov11_0231BD50 -.public ov11_0231BD60 -.public ov11_0231BD70 -.public ov11_0231BD80 -.public ov11_0231BD90 -.public ov11_0231BDA0 -.public ov11_0231BDB0 -.public ov11_0231BDC0 -.public ov11_0231BDD0 -.public ov11_0231BDE0 -.public ov11_0231BDF0 -.public ov11_0231BE00 -.public ov11_0231BE10 -.public ov11_0231BE20 -.public ov11_0231BE30 -.public ov11_0231BE40 -.public ov11_0231BE50 -.public ov11_0231BE60 -.public ov11_0231BE70 -.public ov11_0231BE80 -.public ov11_0231BE90 -.public ov11_0231BEA0 -.public ov11_0231BEB0 -.public ov11_0231BEC0 -.public ov11_0231BED0 -.public ov11_0231BEE0 -.public ov11_0231BEF0 -.public ov11_0231BF00 -.public ov11_0231BF10 -.public ov11_0231BF20 -.public ov11_0231BF30 -.public ov11_0231BF40 -.public ov11_0231BF50 -.public ov11_0231BF60 -.public ov11_0231BF70 -.public ov11_0231BF80 -.public ov11_0231BF90 -.public ov11_0231BFA0 -.public ov11_0231BFB0 -.public ov11_0231BFC0 -.public ov11_0231BFD0 -.public ov11_0231BFE0 -.public ov11_0231BFF0 -.public ov11_0231C000 -.public ov11_0231C010 -.public ov11_0231C020 -.public ov11_0231C030 -.public ov11_0231C040 -.public ov11_0231C050 -.public ov11_0231C060 -.public ov11_0231C070 -.public ov11_0231C080 -.public ov11_0231C090 -.public ov11_0231C0A0 -.public ov11_0231C0B0 -.public ov11_0231C0C4 -.public ov11_0231C0D8 -.public ov11_0231C0EC -.public ov11_0231C100 -.public ov11_0231C114 -.public ov11_0231C128 -.public ov11_0231C13C -.public ov11_0231C150 -.public ov11_0231C164 -.public ov11_0231C178 -.public ov11_0231C18C -.public ov11_0231C1A0 -.public ov11_0231C1B4 -.public ov11_0231C1C8 -.public ov11_0231C1DC -.public ov11_0231C1F0 -.public ov11_0231C204 -.public ov11_0231C218 -.public ov11_0231C22C -.public ov11_0231C240 -.public ov11_0231C254 -.public ov11_0231C268 -.public ov11_0231C27C -.public ov11_0231C290 -.public ov11_0231C2A4 -.public ov11_0231C2B8 -.public ov11_0231C2CC -.public ov11_0231C2E0 -.public ov11_0231C2F4 -.public ov11_0231C308 -.public ov11_0231C31C -.public ov11_0231C330 -.public ov11_0231C344 -.public ov11_0231C358 -.public ov11_0231C36C -.public ov11_0231C380 -.public ov11_0231C394 -.public ov11_0231C3A8 -.public ov11_0231C3C0 -.public ov11_0231C3D8 -.public ov11_0231C3F0 -.public ov11_0231C408 -.public ov11_0231C420 -.public ov11_0231C438 -.public ov11_0231C450 -.public ov11_0231C468 -.public ov11_0231C480 -.public ov11_0231C498 -.public ov11_0231C4B0 -.public ov11_0231C4C8 -.public ov11_0231C4E0 -.public ov11_0231C4F8 -.public ov11_0231C510 -.public ov11_0231C528 -.public ov11_0231C540 -.public ov11_0231C558 -.public ov11_0231C570 -.public ov11_0231C588 -.public ov11_0231C5A0 -.public ov11_0231C5B8 -.public ov11_0231C5D0 -.public ov11_0231C5E8 -.public ov11_0231C600 -.public ov11_0231C618 -.public ov11_0231C630 -.public ov11_0231C648 -.public ov11_0231C660 -.public ov11_0231C678 -.public ov11_0231C690 -.public ov11_0231C6A8 -.public ov11_0231C6C4 -.public ov11_0231C6E0 -.public ov11_0231C6FC -.public ov11_0231C718 -.public ov11_0231C734 -.public ov11_0231C750 -.public ov11_0231C76C -.public ov11_0231C788 -.public ov11_0231C7A8 -.public ov11_0231C7C8 -.public ov11_0231C7E8 -.public ov11_0231C808 -.public ov11_0231DE4C -.public ov11_0231DE58 -.public ov11_0231DE64 -.public ov11_0231DE70 -.public ov11_0231DE7C -.public ov11_0231DE88 -.public ov11_0231DE94 -.public ov11_0231DEA0 -.public ov11_0231DEAC -.public ov11_0231DEB8 -.public ov11_0231DEC4 -.public ov11_0231DED0 -.public ov11_0231DEDC -.public ov11_0231DEE8 -.public ov11_0231DEF4 -.public ov11_0231DF00 -.public ov11_0231DF0C -.public ov11_0231DF18 -.public ov11_0231DF24 -.public ov11_0231DF30 -.public ov11_0231DF3C -.public ov11_0231DF48 -.public ov11_0231DF54 -.public ov11_0231DF60 -.public ov11_0231DF6C -.public ov11_0231DF78 -.public ov11_0231DF84 -.public ov11_0231DF90 -.public ov11_0231DF9C -.public ov11_0231DFA8 -.public ov11_0231DFB4 -.public ov11_0231DFC0 -.public ov11_0231DFCC -.public ov11_0231DFD8 -.public ov11_0231DFE4 -.public ov11_0231DFF0 -.public ov11_0231DFFC -.public ov11_0231E008 -.public ov11_0231E014 -.public ov11_0231E020 -.public ov11_0231E02C -.public ov11_0231E038 -.public ov11_0231E044 -.public ov11_0231E050 -.public ov11_0231E05C -.public ov11_0231E068 -.public ov11_0231E074 -.public ov11_0231E080 -.public ov11_0231E08C -.public ov11_0231E098 -.public ov11_0231E0A4 -.public ov11_0231E0B0 -.public ov11_0231E0BC -.public ov11_0231E0C8 -.public ov11_0231E0D4 -.public ov11_0231E0E0 -.public ov11_0231E0EC -.public ov11_0231E0F8 -.public ov11_0231E104 -.public ov11_0231E110 -.public ov11_0231E11C -.public ov11_0231E128 -.public ov11_0231E134 -.public ov11_0231E140 -.public ov11_0231E14C -.public ov11_0231E158 -.public ov11_0231E164 -.public ov11_0231E170 -.public ov11_0231E17C -.public ov11_0231E188 -.public ov11_0231E194 -.public ov11_0231E1A0 -.public ov11_0231E1AC -.public ov11_0231E1B8 -.public ov11_0231E1C4 -.public ov11_0231E1D0 -.public ov11_0231E1DC -.public ov11_0231E1E8 -.public ov11_0231E1F4 -.public ov11_0231E200 -.public ov11_0231E20C -.public ov11_0231E218 -.public ov11_0231E224 -.public ov11_0231E230 -.public ov11_0231E23C -.public ov11_0231E248 -.public ov11_0231E254 -.public ov11_0231E260 -.public ov11_0231E26C -.public ov11_0231E278 -.public ov11_0231E284 -.public ov11_0231E290 -.public ov11_0231E29C -.public ov11_0231E2A8 -.public ov11_0231E2B4 -.public ov11_0231E2C0 -.public ov11_0231E2CC -.public ov11_0231E2D8 -.public ov11_0231E2E4 -.public ov11_0231E2F0 -.public ov11_0231E2FC -.public ov11_0231E308 -.public ov11_0231E314 -.public ov11_0231E320 -.public ov11_0231E32C -.public ov11_0231E338 -.public ov11_0231E344 -.public ov11_0231E350 -.public ov11_0231E35C -.public ov11_0231E368 -.public ov11_0231E374 -.public ov11_0231E380 -.public ov11_0231E38C -.public ov11_0231E398 -.public ov11_0231E3A4 -.public ov11_0231E3B0 -.public ov11_0231E3BC -.public ov11_0231E3C8 -.public ov11_0231E3D4 -.public ov11_0231E3E0 -.public ov11_0231E3EC -.public ov11_0231E3F8 -.public ov11_0231E404 -.public ov11_0231E410 -.public ov11_0231E41C -.public ov11_0231E428 -.public ov11_0231E434 -.public ov11_0231E440 -.public ov11_0231E44C -.public ov11_0231E458 -.public ov11_0231E464 -.public ov11_0231E470 -.public ov11_0231E47C -.public ov11_0231E488 -.public ov11_0231E494 -.public ov11_0231E4A0 -.public ov11_0231E4AC -.public ov11_0231E4B8 -.public ov11_0231E4C4 -.public ov11_0231E4D0 -.public ov11_0231E4DC -.public ov11_0231E4E8 -.public ov11_0231E4F4 -.public ov11_0231E500 -.public ov11_0231E50C -.public ov11_0231E518 -.public ov11_0231E524 -.public ov11_0231E530 -.public ov11_0231E53C -.public ov11_0231E548 -.public ov11_0231E554 -.public ov11_0231E560 -.public ov11_0231E56C -.public ov11_0231E578 -.public ov11_0231E584 -.public ov11_0231E590 -.public ov11_0231E59C -.public ov11_0231E5A8 -.public ov11_0231E5B4 -.public ov11_0231E5C0 -.public ov11_0231E5CC -.public ov11_0231E5D8 -.public ov11_0231E5E4 -.public ov11_0231E5F0 -.public ov11_0231E5FC -.public ov11_0231E608 -.public ov11_0231E614 -.public ov11_0231E620 -.public ov11_0231E62C -.public ov11_0231E638 -.public ov11_0231E644 -.public ov11_0231E650 -.public ov11_0231E65C -.public ov11_0231E668 -.public ov11_0231E674 -.public ov11_0231E680 -.public ov11_0231E68C -.public ov11_0231E698 -.public ov11_0231E6A4 -.public ov11_0231E6B0 -.public ov11_0231E6BC -.public ov11_0231E6C8 -.public ov11_0231E6D4 -.public ov11_0231E6E0 -.public ov11_0231E6EC -.public ov11_0231E6F8 -.public ov11_0231E704 -.public ov11_0231E710 -.public ov11_0231E71C -.public ov11_0231E728 -.public ov11_0231E734 -.public ov11_0231E740 -.public ov11_0231E74C -.public ov11_0231E758 -.public ov11_0231E764 -.public ov11_0231E770 -.public ov11_0231E77C -.public ov11_0231E788 -.public ov11_0231E794 -.public ov11_0231E7A0 -.public ov11_0231E7AC -.public ov11_0231E7B8 -.public ov11_0231E7C4 -.public ov11_0231E7D0 -.public ov11_0231E7DC -.public ov11_0231E7E8 -.public ov11_0231E7F4 -.public ov11_0231E800 -.public ov11_0231E80C -.public ov11_0231E818 -.public ov11_0231E824 -.public ov11_0231E830 -.public ov11_0231E83C -.public ov11_0231E848 -.public ov11_0231E854 -.public ov11_0231E860 -.public ov11_0231E86C -.public ov11_0231E878 -.public ov11_0231E884 -.public ov11_0231E890 -.public ov11_0231E89C -.public ov11_0231E8A8 -.public ov11_0231E8B4 -.public ov11_0231E8C0 -.public ov11_0231E8CC -.public ov11_0231E8D8 -.public ov11_0231E8E4 -.public ov11_0231E8F0 -.public ov11_0231E8FC -.public ov11_0231E908 -.public ov11_0231E914 -.public ov11_0231E920 -.public ov11_0231E92C -.public ov11_0231E938 -.public ov11_0231E944 -.public ov11_0231E950 -.public ov11_0231E95C -.public ov11_0231E968 -.public ov11_0231E974 -.public ov11_0231E980 -.public ov11_0231E98C -.public ov11_0231E998 -.public ov11_0231E9A4 -.public ov11_0231E9B0 -.public ov11_0231E9BC -.public ov11_0231E9C8 -.public ov11_0231E9D4 -.public ov11_0231E9E0 -.public ov11_0231E9EC -.public ov11_0231E9F8 -.public ov11_0231EA04 -.public ov11_0231EA10 -.public ov11_0231EA1C -.public ov11_0231EA28 -.public ov11_0231EA34 -.public ov11_0231EA40 -.public ov11_0231EA4C -.public ov11_0231EA58 -.public ov11_0231EA64 -.public ov11_0231EA70 -.public ov11_0231EA7C -.public ov11_0231EA88 -.public ov11_0231EA94 -.public ov11_0231EAA0 -.public ov11_0231EAAC -.public ov11_0231EAB8 -.public ov11_0231EAC4 -.public ov11_0231EAD0 -.public ov11_0231EADC -.public ov11_0231EAE8 -.public ov11_0231EAF4 -.public ov11_0231EB00 -.public ov11_0231EB0C -.public ov11_0231EB18 -.public ov11_0231EB24 -.public ov11_0231EB30 -.public ov11_0231EB3C -.public ov11_0231EB48 -.public ov11_0231EB54 -.public ov11_0231EB60 -.public ov11_0231EB6C -.public ov11_0231EB78 -.public ov11_0231EB84 -.public ov11_0231EB90 -.public ov11_0231EB9C -.public ov11_0231EBA8 -.public ov11_0231EBB4 -.public ov11_0231EBC0 -.public ov11_0231EBCC -.public ov11_0231EBD8 -.public ov11_0231EBE4 -.public ov11_0231EBF0 -.public ov11_0231EBFC -.public ov11_0231EC08 -.public ov11_0231EC14 -.public ov11_0231EC20 -.public ov11_0231EC2C -.public ov11_0231EC38 -.public ov11_0231EC44 -.public ov11_0231EC50 -.public ov11_0231EC5C -.public ov11_0231EC68 -.public ov11_0231EC74 -.public ov11_0231EC80 -.public ov11_0231EC8C -.public ov11_0231EC98 -.public ov11_0231ECA4 -.public ov11_0231ECB0 -.public ov11_0231ECBC -.public ov11_0231ECC8 -.public ov11_0231ECD4 -.public ov11_0231ECE0 -.public ov11_0231ECEC -.public ov11_0231ECF8 -.public ov11_0231ED04 -.public ov11_0231ED10 -.public ov11_0231ED1C -.public ov11_0231ED28 -.public ov11_0231ED34 -.public ov11_0231ED40 -.public ov11_0231ED4C -.public ov11_0231ED58 -.public ov11_0231ED64 -.public ov11_0231ED70 -.public ov11_0231ED7C -.public ov11_0231ED88 -.public ov11_0231ED94 -.public ov11_0231EDA0 -.public ov11_0231EDAC -.public ov11_0231EDB8 -.public ov11_0231EDC4 -.public ov11_0231EDD0 -.public ov11_0231EDDC -.public ov11_0231EDE8 -.public ov11_0231EDF4 -.public ov11_0231EE00 -.public ov11_0231EE0C -.public ov11_0231EE18 -.public ov11_0231EE24 -.public ov11_0231EE30 -.public ov11_0231EE3C -.public ov11_0231EE48 -.public ov11_0231F414 -.public ov11_0231F420 -.public ov11_0231F42C -.public ov11_0231F438 -.public ov11_0231F444 -.public ov11_0231F450 -.public ov11_0231F45C -.public ov11_0231F468 -.public ov11_0231F474 -.public ov11_0231F480 -.public ov11_0231F48C -.public ov11_0231F498 -.public ov11_0231F4A4 -.public ov11_0231F4B0 -.public ov11_0231F4BC -.public ov11_0231F4C8 -.public ov11_0231F4D4 -.public ov11_0231F4E0 -.public ov11_0231F4EC -.public ov11_02320BBC -.public ov11_02324CBC +.public ov11_022EA80C +.public ov11_022EA8A0 +.public ov11_022EBAE8 +.public ov11_022EBB14 .public ov11_02324FA0 .public ov11_02388FC0 .public ov11_02388FD4 @@ -1480,37 +14,11 @@ .public ov11_023890E4 .public ov11_02389128 .public ov11_0238916C -.public ov11_023891F4 -.public ov11_023891F8 -.public sub_02002878 -.public sub_0200514C -.public sub_02008F3C .public sub_02008F4C -.public sub_02009120 -.public sub_02009194 -.public sub_020091B0 -.public sub_02009454 -.public sub_020094C4 -.public sub_0200A124 -.public sub_0200A158 -.public sub_0200A478 -.public sub_0200A4C4 -.public sub_0200B2C4 -.public sub_0200B314 .public sub_0200B894 .public sub_0200B8B8 .public sub_0200B8D4 .public sub_0200B908 .public sub_0200B918 -.public sub_0200BB60 -.public sub_0200BB74 -.public sub_0200BB88 -.public sub_0200BBF8 -.public sub_0200BC60 -.public sub_0200BCB0 -.public sub_0200BD14 -.public sub_0200BD50 .public sub_0201BCCC .public sub_0201BCF4 -.public sub_0201F2A0 -.public sub_0206C0FC diff --git a/asm/include/overlay_11_022E9B84.inc b/asm/include/overlay_11_022E9B84.inc new file mode 100644 index 00000000..7e3d6d8f --- /dev/null +++ b/asm/include/overlay_11_022E9B84.inc @@ -0,0 +1,1510 @@ +#pragma once +.public C_ROUTINE_NAMES +.public ClampComponentAbs +.public Debug_GetDebugFlag +.public EuclideanNorm__020050B0 +.public GROUND_WAN_FILES_TABLE +.public GetFadeStatus +.public GetHeldButtons +.public GetPressedButtons +.public GetReleasedStylus +.public GetSpeedOption +.public HandleFadesVeneer +.public IsTouchScreenUseAnywhere +.public KeyWaitInit +.public MemAlloc +.public MemFree +.public RandRange +.public SCRIPT_OP_CODE_NAMES +.public UnlockScriptingLock +.public _fdiv +.public _ffix +.public _fflt +.public ov10_022BDB54 +.public ov10_022BDB60 +.public ov10_022BDBA4 +.public ov11_022E9A78 +.public ov11_022E9A90 +.public ov11_022E9AA8 +.public ov11_022E9AC0 +.public ov11_022EF53C +.public ov11_022F1F3C +.public ov11_022F7188 +.public ov11_022F75C0 +.public ov11_022F9074 +.public ov11_022F90F4 +.public ov11_022FBBC8 +.public ov11_022FBC0C +.public ov11_022FCCC4 +.public ov11_022FE3B0 +.public ov11_0230114C +.public ov11_0230D000 +.public ov11_0230D220 +.public ov11_0230ED28 +.public ov11_0230F25C +.public ov11_0230F28C +.public ov11_02310D44 +.public ov11_02310DE0 +.public ov11_02316AFC +.public ov11_02316B04 +.public ov11_02316B14 +.public ov11_02316B1C +.public ov11_02316B24 +.public ov11_02316B2C +.public ov11_02316B34 +.public ov11_02316B3C +.public ov11_02316B44 +.public ov11_02316B4C +.public ov11_02316B54 +.public ov11_02316B5C +.public ov11_02316B64 +.public ov11_02316B6C +.public ov11_02316B74 +.public ov11_02316B7C +.public ov11_02316B84 +.public ov11_02316B8C +.public ov11_02316B94 +.public ov11_02316B9C +.public ov11_02316BA4 +.public ov11_02316BAC +.public ov11_02316BB4 +.public ov11_02316BBC +.public ov11_02316BC8 +.public ov11_02316BD4 +.public ov11_02316BE0 +.public ov11_02316BEC +.public ov11_02316BF8 +.public ov11_02316C04 +.public ov11_02316C10 +.public ov11_02316C1C +.public ov11_02316C28 +.public ov11_02316C34 +.public ov11_02316C40 +.public ov11_02316C4C +.public ov11_02316C58 +.public ov11_02316C64 +.public ov11_02316C70 +.public ov11_02316C7C +.public ov11_02316C88 +.public ov11_02316C94 +.public ov11_02316CA0 +.public ov11_02316CAC +.public ov11_02316CB8 +.public ov11_02316CC4 +.public ov11_02316CDC +.public ov11_02316CE8 +.public ov11_02316CF4 +.public ov11_02316D00 +.public ov11_02316D0C +.public ov11_02316D18 +.public ov11_02316D24 +.public ov11_02316D30 +.public ov11_02316D3C +.public ov11_02316D48 +.public ov11_02316D54 +.public ov11_02316D60 +.public ov11_02316D6C +.public ov11_02316D78 +.public ov11_02316D84 +.public ov11_02316D90 +.public ov11_02316D9C +.public ov11_02316DA8 +.public ov11_02316DB4 +.public ov11_02316DC0 +.public ov11_02316DCC +.public ov11_02316DDC +.public ov11_02316DEC +.public ov11_02316DFC +.public ov11_02316E0C +.public ov11_02316E1C +.public ov11_02316E2C +.public ov11_02316E3C +.public ov11_02316E4C +.public ov11_02316E5C +.public ov11_02316E6C +.public ov11_02316E7C +.public ov11_02316E8C +.public ov11_02316E9C +.public ov11_02316EAC +.public ov11_02316EBC +.public ov11_02316ECC +.public ov11_02316EDC +.public ov11_02316EEC +.public ov11_02316EFC +.public ov11_02316F0C +.public ov11_02316F1C +.public ov11_02316F2C +.public ov11_02316F3C +.public ov11_02316F4C +.public ov11_02316F5C +.public ov11_02316F6C +.public ov11_02316F7C +.public ov11_02316F8C +.public ov11_02316F9C +.public ov11_02316FAC +.public ov11_02316FBC +.public ov11_02316FCC +.public ov11_02316FDC +.public ov11_02316FEC +.public ov11_02316FFC +.public ov11_0231700C +.public ov11_0231701C +.public ov11_0231702C +.public ov11_0231703C +.public ov11_0231704C +.public ov11_0231705C +.public ov11_0231706C +.public ov11_0231707C +.public ov11_0231708C +.public ov11_0231709C +.public ov11_023170AC +.public ov11_023170BC +.public ov11_023170CC +.public ov11_023170DC +.public ov11_023170EC +.public ov11_023170FC +.public ov11_0231710C +.public ov11_0231711C +.public ov11_0231712C +.public ov11_0231713C +.public ov11_0231714C +.public ov11_0231715C +.public ov11_0231716C +.public ov11_0231717C +.public ov11_0231718C +.public ov11_0231719C +.public ov11_023171AC +.public ov11_023171BC +.public ov11_023171CC +.public ov11_023171DC +.public ov11_023171EC +.public ov11_023171FC +.public ov11_0231720C +.public ov11_0231721C +.public ov11_0231722C +.public ov11_0231723C +.public ov11_0231724C +.public ov11_0231725C +.public ov11_0231726C +.public ov11_0231727C +.public ov11_0231728C +.public ov11_0231729C +.public ov11_023172AC +.public ov11_023172BC +.public ov11_023172CC +.public ov11_023172DC +.public ov11_023172EC +.public ov11_023172FC +.public ov11_0231730C +.public ov11_02317320 +.public ov11_02317334 +.public ov11_02317348 +.public ov11_0231735C +.public ov11_02317370 +.public ov11_02317384 +.public ov11_02317398 +.public ov11_023173AC +.public ov11_023173C0 +.public ov11_023173D4 +.public ov11_023173E8 +.public ov11_023173FC +.public ov11_02317410 +.public ov11_02317424 +.public ov11_02317438 +.public ov11_0231744C +.public ov11_02317460 +.public ov11_02317474 +.public ov11_02317488 +.public ov11_0231749C +.public ov11_023174B0 +.public ov11_023174C4 +.public ov11_023174D8 +.public ov11_023174EC +.public ov11_02317500 +.public ov11_02317514 +.public ov11_02317528 +.public ov11_0231753C +.public ov11_02317550 +.public ov11_02317564 +.public ov11_02317578 +.public ov11_0231758C +.public ov11_023175A0 +.public ov11_023175B4 +.public ov11_023175C8 +.public ov11_023175DC +.public ov11_023175F0 +.public ov11_02317604 +.public ov11_02317618 +.public ov11_0231762C +.public ov11_02317640 +.public ov11_02317654 +.public ov11_02317668 +.public ov11_0231767C +.public ov11_02317690 +.public ov11_023176A4 +.public ov11_023176B8 +.public ov11_023176CC +.public ov11_023176E0 +.public ov11_023176F4 +.public ov11_02317708 +.public ov11_0231771C +.public ov11_02317730 +.public ov11_02317744 +.public ov11_02317758 +.public ov11_0231776C +.public ov11_02317780 +.public ov11_02317794 +.public ov11_023177A8 +.public ov11_023177BC +.public ov11_023177D0 +.public ov11_023177E4 +.public ov11_023177F8 +.public ov11_0231780C +.public ov11_02317820 +.public ov11_02317834 +.public ov11_02317848 +.public ov11_0231785C +.public ov11_02317870 +.public ov11_02317884 +.public ov11_02317898 +.public ov11_023178AC +.public ov11_023178C0 +.public ov11_023178D4 +.public ov11_023178E8 +.public ov11_023178FC +.public ov11_02317910 +.public ov11_02317924 +.public ov11_02317938 +.public ov11_0231794C +.public ov11_02317960 +.public ov11_02317974 +.public ov11_02317988 +.public ov11_0231799C +.public ov11_023179B0 +.public ov11_023179C4 +.public ov11_023179D8 +.public ov11_023179EC +.public ov11_02317A00 +.public ov11_02317A14 +.public ov11_02317A28 +.public ov11_02317A3C +.public ov11_02317A50 +.public ov11_02317A64 +.public ov11_02317A78 +.public ov11_02317A8C +.public ov11_02317AA0 +.public ov11_02317AB4 +.public ov11_02317AC8 +.public ov11_02317ADC +.public ov11_02317AF0 +.public ov11_02317B04 +.public ov11_02317B18 +.public ov11_02317B2C +.public ov11_02317B40 +.public ov11_02317B54 +.public ov11_02317B68 +.public ov11_02317B7C +.public ov11_02317B90 +.public ov11_02317BA4 +.public ov11_02317BB8 +.public ov11_02317BCC +.public ov11_02317BE0 +.public ov11_02317BF4 +.public ov11_02317C08 +.public ov11_02317C1C +.public ov11_02317C30 +.public ov11_02317C44 +.public ov11_02317C58 +.public ov11_02317C6C +.public ov11_02317C80 +.public ov11_02317C94 +.public ov11_02317CA8 +.public ov11_02317CBC +.public ov11_02317CD4 +.public ov11_02317CEC +.public ov11_02317D04 +.public ov11_02317D1C +.public ov11_02317D34 +.public ov11_02317D4C +.public ov11_02317D64 +.public ov11_02317D7C +.public ov11_02317D94 +.public ov11_02317DAC +.public ov11_02317DC4 +.public ov11_02317DDC +.public ov11_02317DF4 +.public ov11_02317E0C +.public ov11_02317E24 +.public ov11_02317E3C +.public ov11_02317E54 +.public ov11_02317E6C +.public ov11_02317E84 +.public ov11_02317E9C +.public ov11_02317EB4 +.public ov11_02317ECC +.public ov11_02317EE4 +.public ov11_02317EFC +.public ov11_02317F14 +.public ov11_02317F2C +.public ov11_02317F44 +.public ov11_02317F5C +.public ov11_02317F74 +.public ov11_02317F8C +.public ov11_02317FA4 +.public ov11_02317FBC +.public ov11_02317FD4 +.public ov11_02317FEC +.public ov11_02318004 +.public ov11_0231801C +.public ov11_02318034 +.public ov11_0231804C +.public ov11_02318064 +.public ov11_0231807C +.public ov11_02318094 +.public ov11_023180AC +.public ov11_023180C4 +.public ov11_023180DC +.public ov11_023180F4 +.public ov11_0231810C +.public ov11_02318124 +.public ov11_0231813C +.public ov11_02318154 +.public ov11_0231816C +.public ov11_02318184 +.public ov11_0231819C +.public ov11_023181B4 +.public ov11_023181D0 +.public ov11_023181EC +.public ov11_02318208 +.public ov11_02318224 +.public ov11_02318240 +.public ov11_0231825C +.public ov11_02318278 +.public ov11_02318294 +.public ov11_023182B0 +.public ov11_023182CC +.public ov11_023182E8 +.public ov11_02318304 +.public ov11_02318320 +.public ov11_0231833C +.public ov11_02318358 +.public ov11_02318374 +.public ov11_02318390 +.public ov11_023183AC +.public ov11_023183C8 +.public ov11_023183E4 +.public ov11_02318400 +.public ov11_0231841C +.public ov11_02318438 +.public ov11_02318454 +.public ov11_02318470 +.public ov11_0231848C +.public ov11_023184A8 +.public ov11_023184C4 +.public ov11_023184E4 +.public ov11_02318504 +.public ov11_02318524 +.public ov11_02318544 +.public ov11_02318564 +.public ov11_02318584 +.public ov11_023185A4 +.public ov11_023185C8 +.public ov11_023185EC +.public ov11_02319AF4 +.public ov11_02319AFC +.public ov11_02319B04 +.public ov11_02319B0C +.public ov11_02319B14 +.public ov11_02319B1C +.public ov11_02319B28 +.public ov11_02319B34 +.public ov11_02319B40 +.public ov11_02319B4C +.public ov11_02319B58 +.public ov11_02319B64 +.public ov11_02319B70 +.public ov11_02319B7C +.public ov11_02319B88 +.public ov11_02319B94 +.public ov11_02319BA0 +.public ov11_02319BAC +.public ov11_02319BB8 +.public ov11_02319BC4 +.public ov11_02319BD0 +.public ov11_02319BDC +.public ov11_02319BE8 +.public ov11_02319BF4 +.public ov11_02319C00 +.public ov11_02319C0C +.public ov11_02319C18 +.public ov11_02319C24 +.public ov11_02319C30 +.public ov11_02319C3C +.public ov11_02319C48 +.public ov11_02319C54 +.public ov11_02319C60 +.public ov11_02319C6C +.public ov11_02319C78 +.public ov11_02319C84 +.public ov11_02319C90 +.public ov11_02319C9C +.public ov11_02319CA8 +.public ov11_02319CB4 +.public ov11_02319CC0 +.public ov11_02319CCC +.public ov11_02319CD8 +.public ov11_02319CE4 +.public ov11_02319CF0 +.public ov11_02319CFC +.public ov11_02319D08 +.public ov11_02319D14 +.public ov11_02319D20 +.public ov11_02319D30 +.public ov11_02319D40 +.public ov11_02319D50 +.public ov11_02319D60 +.public ov11_02319D70 +.public ov11_02319D80 +.public ov11_02319D90 +.public ov11_02319DA0 +.public ov11_02319DB0 +.public ov11_02319DC0 +.public ov11_02319DD0 +.public ov11_02319DE0 +.public ov11_02319DF0 +.public ov11_02319E00 +.public ov11_02319E10 +.public ov11_02319E20 +.public ov11_02319E30 +.public ov11_02319E40 +.public ov11_02319E50 +.public ov11_02319E60 +.public ov11_02319E70 +.public ov11_02319E80 +.public ov11_02319E90 +.public ov11_02319EA0 +.public ov11_02319EB0 +.public ov11_02319EC0 +.public ov11_02319ED0 +.public ov11_02319EE0 +.public ov11_02319EF0 +.public ov11_02319F00 +.public ov11_02319F10 +.public ov11_02319F20 +.public ov11_02319F30 +.public ov11_02319F40 +.public ov11_02319F50 +.public ov11_02319F60 +.public ov11_02319F70 +.public ov11_02319F80 +.public ov11_02319F90 +.public ov11_02319FA0 +.public ov11_02319FB0 +.public ov11_02319FC0 +.public ov11_02319FD0 +.public ov11_02319FE0 +.public ov11_02319FF0 +.public ov11_0231A000 +.public ov11_0231A010 +.public ov11_0231A020 +.public ov11_0231A030 +.public ov11_0231A040 +.public ov11_0231A050 +.public ov11_0231A060 +.public ov11_0231A070 +.public ov11_0231A080 +.public ov11_0231A090 +.public ov11_0231A0A0 +.public ov11_0231A0B0 +.public ov11_0231A0C0 +.public ov11_0231A0D0 +.public ov11_0231A0E0 +.public ov11_0231A0F0 +.public ov11_0231A100 +.public ov11_0231A110 +.public ov11_0231A120 +.public ov11_0231A130 +.public ov11_0231A140 +.public ov11_0231A150 +.public ov11_0231A160 +.public ov11_0231A170 +.public ov11_0231A180 +.public ov11_0231A190 +.public ov11_0231A1A0 +.public ov11_0231A1B0 +.public ov11_0231A1C0 +.public ov11_0231A1D0 +.public ov11_0231A1E0 +.public ov11_0231A1F0 +.public ov11_0231A200 +.public ov11_0231A210 +.public ov11_0231A220 +.public ov11_0231A230 +.public ov11_0231A240 +.public ov11_0231A250 +.public ov11_0231A260 +.public ov11_0231A270 +.public ov11_0231A280 +.public ov11_0231A290 +.public ov11_0231A2A0 +.public ov11_0231A2B0 +.public ov11_0231A2C0 +.public ov11_0231A2D0 +.public ov11_0231A2E0 +.public ov11_0231A2F0 +.public ov11_0231A300 +.public ov11_0231A310 +.public ov11_0231A320 +.public ov11_0231A330 +.public ov11_0231A340 +.public ov11_0231A350 +.public ov11_0231A360 +.public ov11_0231A370 +.public ov11_0231A380 +.public ov11_0231A390 +.public ov11_0231A3A0 +.public ov11_0231A3B0 +.public ov11_0231A3C0 +.public ov11_0231A3D0 +.public ov11_0231A3E0 +.public ov11_0231A3F0 +.public ov11_0231A400 +.public ov11_0231A410 +.public ov11_0231A420 +.public ov11_0231A430 +.public ov11_0231A440 +.public ov11_0231A450 +.public ov11_0231A460 +.public ov11_0231A470 +.public ov11_0231A480 +.public ov11_0231A490 +.public ov11_0231A4A0 +.public ov11_0231A4B0 +.public ov11_0231A4C0 +.public ov11_0231A4D0 +.public ov11_0231A4E0 +.public ov11_0231A4F0 +.public ov11_0231A500 +.public ov11_0231A510 +.public ov11_0231A520 +.public ov11_0231A530 +.public ov11_0231A540 +.public ov11_0231A550 +.public ov11_0231A560 +.public ov11_0231A570 +.public ov11_0231A580 +.public ov11_0231A590 +.public ov11_0231A5A0 +.public ov11_0231A5B0 +.public ov11_0231A5C0 +.public ov11_0231A5D0 +.public ov11_0231A5E0 +.public ov11_0231A5F0 +.public ov11_0231A600 +.public ov11_0231A610 +.public ov11_0231A620 +.public ov11_0231A630 +.public ov11_0231A640 +.public ov11_0231A650 +.public ov11_0231A660 +.public ov11_0231A670 +.public ov11_0231A680 +.public ov11_0231A690 +.public ov11_0231A6A0 +.public ov11_0231A6B0 +.public ov11_0231A6C0 +.public ov11_0231A6D0 +.public ov11_0231A6E0 +.public ov11_0231A6F0 +.public ov11_0231A700 +.public ov11_0231A710 +.public ov11_0231A720 +.public ov11_0231A730 +.public ov11_0231A740 +.public ov11_0231A750 +.public ov11_0231A760 +.public ov11_0231A770 +.public ov11_0231A780 +.public ov11_0231A790 +.public ov11_0231A7A0 +.public ov11_0231A7B0 +.public ov11_0231A7C0 +.public ov11_0231A7D0 +.public ov11_0231A7E0 +.public ov11_0231A7F0 +.public ov11_0231A800 +.public ov11_0231A810 +.public ov11_0231A820 +.public ov11_0231A830 +.public ov11_0231A840 +.public ov11_0231A850 +.public ov11_0231A860 +.public ov11_0231A870 +.public ov11_0231A880 +.public ov11_0231A890 +.public ov11_0231A8A0 +.public ov11_0231A8B0 +.public ov11_0231A8C0 +.public ov11_0231A8D0 +.public ov11_0231A8E0 +.public ov11_0231A8F0 +.public ov11_0231A900 +.public ov11_0231A910 +.public ov11_0231A920 +.public ov11_0231A930 +.public ov11_0231A940 +.public ov11_0231A950 +.public ov11_0231A960 +.public ov11_0231A970 +.public ov11_0231A980 +.public ov11_0231A990 +.public ov11_0231A9A0 +.public ov11_0231A9B0 +.public ov11_0231A9C0 +.public ov11_0231A9D0 +.public ov11_0231A9E0 +.public ov11_0231A9F0 +.public ov11_0231AA00 +.public ov11_0231AA10 +.public ov11_0231AA20 +.public ov11_0231AA30 +.public ov11_0231AA40 +.public ov11_0231AA50 +.public ov11_0231AA60 +.public ov11_0231AA70 +.public ov11_0231AA80 +.public ov11_0231AA90 +.public ov11_0231AAA0 +.public ov11_0231AAB0 +.public ov11_0231AAC0 +.public ov11_0231AAD0 +.public ov11_0231AAE0 +.public ov11_0231AAF0 +.public ov11_0231AB00 +.public ov11_0231AB10 +.public ov11_0231AB20 +.public ov11_0231AB30 +.public ov11_0231AB40 +.public ov11_0231AB50 +.public ov11_0231AB60 +.public ov11_0231AB70 +.public ov11_0231AB80 +.public ov11_0231AB90 +.public ov11_0231ABA0 +.public ov11_0231ABB0 +.public ov11_0231ABC0 +.public ov11_0231ABD0 +.public ov11_0231ABE0 +.public ov11_0231ABF0 +.public ov11_0231AC00 +.public ov11_0231AC10 +.public ov11_0231AC20 +.public ov11_0231AC30 +.public ov11_0231AC40 +.public ov11_0231AC50 +.public ov11_0231AC60 +.public ov11_0231AC70 +.public ov11_0231AC80 +.public ov11_0231AC90 +.public ov11_0231ACA0 +.public ov11_0231ACB0 +.public ov11_0231ACC0 +.public ov11_0231ACD0 +.public ov11_0231ACE0 +.public ov11_0231ACF0 +.public ov11_0231AD00 +.public ov11_0231AD10 +.public ov11_0231AD20 +.public ov11_0231AD30 +.public ov11_0231AD40 +.public ov11_0231AD50 +.public ov11_0231AD60 +.public ov11_0231AD70 +.public ov11_0231AD80 +.public ov11_0231AD90 +.public ov11_0231ADA0 +.public ov11_0231ADB0 +.public ov11_0231ADC0 +.public ov11_0231ADD0 +.public ov11_0231ADE0 +.public ov11_0231ADF0 +.public ov11_0231AE00 +.public ov11_0231AE10 +.public ov11_0231AE20 +.public ov11_0231AE30 +.public ov11_0231AE40 +.public ov11_0231AE50 +.public ov11_0231AE60 +.public ov11_0231AE70 +.public ov11_0231AE80 +.public ov11_0231AE90 +.public ov11_0231AEA0 +.public ov11_0231AEB0 +.public ov11_0231AEC0 +.public ov11_0231AED0 +.public ov11_0231AEE0 +.public ov11_0231AEF0 +.public ov11_0231AF00 +.public ov11_0231AF10 +.public ov11_0231AF20 +.public ov11_0231AF30 +.public ov11_0231AF40 +.public ov11_0231AF50 +.public ov11_0231AF60 +.public ov11_0231AF70 +.public ov11_0231AF80 +.public ov11_0231AF90 +.public ov11_0231AFA0 +.public ov11_0231AFB0 +.public ov11_0231AFC0 +.public ov11_0231AFD0 +.public ov11_0231AFE0 +.public ov11_0231AFF0 +.public ov11_0231B000 +.public ov11_0231B010 +.public ov11_0231B020 +.public ov11_0231B030 +.public ov11_0231B040 +.public ov11_0231B050 +.public ov11_0231B060 +.public ov11_0231B070 +.public ov11_0231B080 +.public ov11_0231B090 +.public ov11_0231B0A0 +.public ov11_0231B0B0 +.public ov11_0231B0C0 +.public ov11_0231B0D0 +.public ov11_0231B0E0 +.public ov11_0231B0F0 +.public ov11_0231B100 +.public ov11_0231B110 +.public ov11_0231B120 +.public ov11_0231B130 +.public ov11_0231B140 +.public ov11_0231B150 +.public ov11_0231B160 +.public ov11_0231B170 +.public ov11_0231B180 +.public ov11_0231B190 +.public ov11_0231B1A0 +.public ov11_0231B1B0 +.public ov11_0231B1C0 +.public ov11_0231B1D0 +.public ov11_0231B1E0 +.public ov11_0231B1F0 +.public ov11_0231B200 +.public ov11_0231B210 +.public ov11_0231B220 +.public ov11_0231B230 +.public ov11_0231B240 +.public ov11_0231B250 +.public ov11_0231B260 +.public ov11_0231B270 +.public ov11_0231B280 +.public ov11_0231B290 +.public ov11_0231B2A0 +.public ov11_0231B2B0 +.public ov11_0231B2C0 +.public ov11_0231B2D0 +.public ov11_0231B2E0 +.public ov11_0231B2F0 +.public ov11_0231B300 +.public ov11_0231B310 +.public ov11_0231B320 +.public ov11_0231B330 +.public ov11_0231B340 +.public ov11_0231B350 +.public ov11_0231B360 +.public ov11_0231B370 +.public ov11_0231B380 +.public ov11_0231B390 +.public ov11_0231B3A0 +.public ov11_0231B3B0 +.public ov11_0231B3C0 +.public ov11_0231B3D0 +.public ov11_0231B3E0 +.public ov11_0231B3F0 +.public ov11_0231B400 +.public ov11_0231B410 +.public ov11_0231B420 +.public ov11_0231B430 +.public ov11_0231B440 +.public ov11_0231B450 +.public ov11_0231B460 +.public ov11_0231B470 +.public ov11_0231B480 +.public ov11_0231B490 +.public ov11_0231B4A0 +.public ov11_0231B4B0 +.public ov11_0231B4C0 +.public ov11_0231B4D0 +.public ov11_0231B4E0 +.public ov11_0231B4F0 +.public ov11_0231B500 +.public ov11_0231B510 +.public ov11_0231B520 +.public ov11_0231B530 +.public ov11_0231B540 +.public ov11_0231B550 +.public ov11_0231B560 +.public ov11_0231B570 +.public ov11_0231B580 +.public ov11_0231B590 +.public ov11_0231B5A0 +.public ov11_0231B5B0 +.public ov11_0231B5C0 +.public ov11_0231B5D0 +.public ov11_0231B5E0 +.public ov11_0231B5F0 +.public ov11_0231B600 +.public ov11_0231B610 +.public ov11_0231B620 +.public ov11_0231B630 +.public ov11_0231B640 +.public ov11_0231B650 +.public ov11_0231B660 +.public ov11_0231B670 +.public ov11_0231B680 +.public ov11_0231B690 +.public ov11_0231B6A0 +.public ov11_0231B6B0 +.public ov11_0231B6C0 +.public ov11_0231B6D0 +.public ov11_0231B6E0 +.public ov11_0231B6F0 +.public ov11_0231B700 +.public ov11_0231B710 +.public ov11_0231B720 +.public ov11_0231B730 +.public ov11_0231B740 +.public ov11_0231B750 +.public ov11_0231B760 +.public ov11_0231B770 +.public ov11_0231B780 +.public ov11_0231B790 +.public ov11_0231B7A0 +.public ov11_0231B7B0 +.public ov11_0231B7C0 +.public ov11_0231B7D0 +.public ov11_0231B7E0 +.public ov11_0231B7F0 +.public ov11_0231B800 +.public ov11_0231B810 +.public ov11_0231B820 +.public ov11_0231B830 +.public ov11_0231B840 +.public ov11_0231B850 +.public ov11_0231B860 +.public ov11_0231B870 +.public ov11_0231B880 +.public ov11_0231B890 +.public ov11_0231B8A0 +.public ov11_0231B8B0 +.public ov11_0231B8C0 +.public ov11_0231B8D0 +.public ov11_0231B8E0 +.public ov11_0231B8F0 +.public ov11_0231B900 +.public ov11_0231B910 +.public ov11_0231B920 +.public ov11_0231B930 +.public ov11_0231B940 +.public ov11_0231B950 +.public ov11_0231B960 +.public ov11_0231B970 +.public ov11_0231B980 +.public ov11_0231B990 +.public ov11_0231B9A0 +.public ov11_0231B9B0 +.public ov11_0231B9C0 +.public ov11_0231B9D0 +.public ov11_0231B9E0 +.public ov11_0231B9F0 +.public ov11_0231BA00 +.public ov11_0231BA10 +.public ov11_0231BA20 +.public ov11_0231BA30 +.public ov11_0231BA40 +.public ov11_0231BA50 +.public ov11_0231BA60 +.public ov11_0231BA70 +.public ov11_0231BA80 +.public ov11_0231BA90 +.public ov11_0231BAA0 +.public ov11_0231BAB0 +.public ov11_0231BAC0 +.public ov11_0231BAD0 +.public ov11_0231BAE0 +.public ov11_0231BAF0 +.public ov11_0231BB00 +.public ov11_0231BB10 +.public ov11_0231BB20 +.public ov11_0231BB30 +.public ov11_0231BB40 +.public ov11_0231BB50 +.public ov11_0231BB60 +.public ov11_0231BB70 +.public ov11_0231BB80 +.public ov11_0231BB90 +.public ov11_0231BBA0 +.public ov11_0231BBB0 +.public ov11_0231BBC0 +.public ov11_0231BBD0 +.public ov11_0231BBE0 +.public ov11_0231BBF0 +.public ov11_0231BC00 +.public ov11_0231BC10 +.public ov11_0231BC20 +.public ov11_0231BC30 +.public ov11_0231BC40 +.public ov11_0231BC50 +.public ov11_0231BC60 +.public ov11_0231BC70 +.public ov11_0231BC80 +.public ov11_0231BC90 +.public ov11_0231BCA0 +.public ov11_0231BCB0 +.public ov11_0231BCC0 +.public ov11_0231BCD0 +.public ov11_0231BCE0 +.public ov11_0231BCF0 +.public ov11_0231BD00 +.public ov11_0231BD10 +.public ov11_0231BD20 +.public ov11_0231BD30 +.public ov11_0231BD40 +.public ov11_0231BD50 +.public ov11_0231BD60 +.public ov11_0231BD70 +.public ov11_0231BD80 +.public ov11_0231BD90 +.public ov11_0231BDA0 +.public ov11_0231BDB0 +.public ov11_0231BDC0 +.public ov11_0231BDD0 +.public ov11_0231BDE0 +.public ov11_0231BDF0 +.public ov11_0231BE00 +.public ov11_0231BE10 +.public ov11_0231BE20 +.public ov11_0231BE30 +.public ov11_0231BE40 +.public ov11_0231BE50 +.public ov11_0231BE60 +.public ov11_0231BE70 +.public ov11_0231BE80 +.public ov11_0231BE90 +.public ov11_0231BEA0 +.public ov11_0231BEB0 +.public ov11_0231BEC0 +.public ov11_0231BED0 +.public ov11_0231BEE0 +.public ov11_0231BEF0 +.public ov11_0231BF00 +.public ov11_0231BF10 +.public ov11_0231BF20 +.public ov11_0231BF30 +.public ov11_0231BF40 +.public ov11_0231BF50 +.public ov11_0231BF60 +.public ov11_0231BF70 +.public ov11_0231BF80 +.public ov11_0231BF90 +.public ov11_0231BFA0 +.public ov11_0231BFB0 +.public ov11_0231BFC0 +.public ov11_0231BFD0 +.public ov11_0231BFE0 +.public ov11_0231BFF0 +.public ov11_0231C000 +.public ov11_0231C010 +.public ov11_0231C020 +.public ov11_0231C030 +.public ov11_0231C040 +.public ov11_0231C050 +.public ov11_0231C060 +.public ov11_0231C070 +.public ov11_0231C080 +.public ov11_0231C090 +.public ov11_0231C0A0 +.public ov11_0231C0B0 +.public ov11_0231C0C4 +.public ov11_0231C0D8 +.public ov11_0231C0EC +.public ov11_0231C100 +.public ov11_0231C114 +.public ov11_0231C128 +.public ov11_0231C13C +.public ov11_0231C150 +.public ov11_0231C164 +.public ov11_0231C178 +.public ov11_0231C18C +.public ov11_0231C1A0 +.public ov11_0231C1B4 +.public ov11_0231C1C8 +.public ov11_0231C1DC +.public ov11_0231C1F0 +.public ov11_0231C204 +.public ov11_0231C218 +.public ov11_0231C22C +.public ov11_0231C240 +.public ov11_0231C254 +.public ov11_0231C268 +.public ov11_0231C27C +.public ov11_0231C290 +.public ov11_0231C2A4 +.public ov11_0231C2B8 +.public ov11_0231C2CC +.public ov11_0231C2E0 +.public ov11_0231C2F4 +.public ov11_0231C308 +.public ov11_0231C31C +.public ov11_0231C330 +.public ov11_0231C344 +.public ov11_0231C358 +.public ov11_0231C36C +.public ov11_0231C380 +.public ov11_0231C394 +.public ov11_0231C3A8 +.public ov11_0231C3C0 +.public ov11_0231C3D8 +.public ov11_0231C3F0 +.public ov11_0231C408 +.public ov11_0231C420 +.public ov11_0231C438 +.public ov11_0231C450 +.public ov11_0231C468 +.public ov11_0231C480 +.public ov11_0231C498 +.public ov11_0231C4B0 +.public ov11_0231C4C8 +.public ov11_0231C4E0 +.public ov11_0231C4F8 +.public ov11_0231C510 +.public ov11_0231C528 +.public ov11_0231C540 +.public ov11_0231C558 +.public ov11_0231C570 +.public ov11_0231C588 +.public ov11_0231C5A0 +.public ov11_0231C5B8 +.public ov11_0231C5D0 +.public ov11_0231C5E8 +.public ov11_0231C600 +.public ov11_0231C618 +.public ov11_0231C630 +.public ov11_0231C648 +.public ov11_0231C660 +.public ov11_0231C678 +.public ov11_0231C690 +.public ov11_0231C6A8 +.public ov11_0231C6C4 +.public ov11_0231C6E0 +.public ov11_0231C6FC +.public ov11_0231C718 +.public ov11_0231C734 +.public ov11_0231C750 +.public ov11_0231C76C +.public ov11_0231C788 +.public ov11_0231C7A8 +.public ov11_0231C7C8 +.public ov11_0231C7E8 +.public ov11_0231C808 +.public ov11_0231DE4C +.public ov11_0231DE58 +.public ov11_0231DE64 +.public ov11_0231DE70 +.public ov11_0231DE7C +.public ov11_0231DE88 +.public ov11_0231DE94 +.public ov11_0231DEA0 +.public ov11_0231DEAC +.public ov11_0231DEB8 +.public ov11_0231DEC4 +.public ov11_0231DED0 +.public ov11_0231DEDC +.public ov11_0231DEE8 +.public ov11_0231DEF4 +.public ov11_0231DF00 +.public ov11_0231DF0C +.public ov11_0231DF18 +.public ov11_0231DF24 +.public ov11_0231DF30 +.public ov11_0231DF3C +.public ov11_0231DF48 +.public ov11_0231DF54 +.public ov11_0231DF60 +.public ov11_0231DF6C +.public ov11_0231DF78 +.public ov11_0231DF84 +.public ov11_0231DF90 +.public ov11_0231DF9C +.public ov11_0231DFA8 +.public ov11_0231DFB4 +.public ov11_0231DFC0 +.public ov11_0231DFCC +.public ov11_0231DFD8 +.public ov11_0231DFE4 +.public ov11_0231DFF0 +.public ov11_0231DFFC +.public ov11_0231E008 +.public ov11_0231E014 +.public ov11_0231E020 +.public ov11_0231E02C +.public ov11_0231E038 +.public ov11_0231E044 +.public ov11_0231E050 +.public ov11_0231E05C +.public ov11_0231E068 +.public ov11_0231E074 +.public ov11_0231E080 +.public ov11_0231E08C +.public ov11_0231E098 +.public ov11_0231E0A4 +.public ov11_0231E0B0 +.public ov11_0231E0BC +.public ov11_0231E0C8 +.public ov11_0231E0D4 +.public ov11_0231E0E0 +.public ov11_0231E0EC +.public ov11_0231E0F8 +.public ov11_0231E104 +.public ov11_0231E110 +.public ov11_0231E11C +.public ov11_0231E128 +.public ov11_0231E134 +.public ov11_0231E140 +.public ov11_0231E14C +.public ov11_0231E158 +.public ov11_0231E164 +.public ov11_0231E170 +.public ov11_0231E17C +.public ov11_0231E188 +.public ov11_0231E194 +.public ov11_0231E1A0 +.public ov11_0231E1AC +.public ov11_0231E1B8 +.public ov11_0231E1C4 +.public ov11_0231E1D0 +.public ov11_0231E1DC +.public ov11_0231E1E8 +.public ov11_0231E1F4 +.public ov11_0231E200 +.public ov11_0231E20C +.public ov11_0231E218 +.public ov11_0231E224 +.public ov11_0231E230 +.public ov11_0231E23C +.public ov11_0231E248 +.public ov11_0231E254 +.public ov11_0231E260 +.public ov11_0231E26C +.public ov11_0231E278 +.public ov11_0231E284 +.public ov11_0231E290 +.public ov11_0231E29C +.public ov11_0231E2A8 +.public ov11_0231E2B4 +.public ov11_0231E2C0 +.public ov11_0231E2CC +.public ov11_0231E2D8 +.public ov11_0231E2E4 +.public ov11_0231E2F0 +.public ov11_0231E2FC +.public ov11_0231E308 +.public ov11_0231E314 +.public ov11_0231E320 +.public ov11_0231E32C +.public ov11_0231E338 +.public ov11_0231E344 +.public ov11_0231E350 +.public ov11_0231E35C +.public ov11_0231E368 +.public ov11_0231E374 +.public ov11_0231E380 +.public ov11_0231E38C +.public ov11_0231E398 +.public ov11_0231E3A4 +.public ov11_0231E3B0 +.public ov11_0231E3BC +.public ov11_0231E3C8 +.public ov11_0231E3D4 +.public ov11_0231E3E0 +.public ov11_0231E3EC +.public ov11_0231E3F8 +.public ov11_0231E404 +.public ov11_0231E410 +.public ov11_0231E41C +.public ov11_0231E428 +.public ov11_0231E434 +.public ov11_0231E440 +.public ov11_0231E44C +.public ov11_0231E458 +.public ov11_0231E464 +.public ov11_0231E470 +.public ov11_0231E47C +.public ov11_0231E488 +.public ov11_0231E494 +.public ov11_0231E4A0 +.public ov11_0231E4AC +.public ov11_0231E4B8 +.public ov11_0231E4C4 +.public ov11_0231E4D0 +.public ov11_0231E4DC +.public ov11_0231E4E8 +.public ov11_0231E4F4 +.public ov11_0231E500 +.public ov11_0231E50C +.public ov11_0231E518 +.public ov11_0231E524 +.public ov11_0231E530 +.public ov11_0231E53C +.public ov11_0231E548 +.public ov11_0231E554 +.public ov11_0231E560 +.public ov11_0231E56C +.public ov11_0231E578 +.public ov11_0231E584 +.public ov11_0231E590 +.public ov11_0231E59C +.public ov11_0231E5A8 +.public ov11_0231E5B4 +.public ov11_0231E5C0 +.public ov11_0231E5CC +.public ov11_0231E5D8 +.public ov11_0231E5E4 +.public ov11_0231E5F0 +.public ov11_0231E5FC +.public ov11_0231E608 +.public ov11_0231E614 +.public ov11_0231E620 +.public ov11_0231E62C +.public ov11_0231E638 +.public ov11_0231E644 +.public ov11_0231E650 +.public ov11_0231E65C +.public ov11_0231E668 +.public ov11_0231E674 +.public ov11_0231E680 +.public ov11_0231E68C +.public ov11_0231E698 +.public ov11_0231E6A4 +.public ov11_0231E6B0 +.public ov11_0231E6BC +.public ov11_0231E6C8 +.public ov11_0231E6D4 +.public ov11_0231E6E0 +.public ov11_0231E6EC +.public ov11_0231E6F8 +.public ov11_0231E704 +.public ov11_0231E710 +.public ov11_0231E71C +.public ov11_0231E728 +.public ov11_0231E734 +.public ov11_0231E740 +.public ov11_0231E74C +.public ov11_0231E758 +.public ov11_0231E764 +.public ov11_0231E770 +.public ov11_0231E77C +.public ov11_0231E788 +.public ov11_0231E794 +.public ov11_0231E7A0 +.public ov11_0231E7AC +.public ov11_0231E7B8 +.public ov11_0231E7C4 +.public ov11_0231E7D0 +.public ov11_0231E7DC +.public ov11_0231E7E8 +.public ov11_0231E7F4 +.public ov11_0231E800 +.public ov11_0231E80C +.public ov11_0231E818 +.public ov11_0231E824 +.public ov11_0231E830 +.public ov11_0231E83C +.public ov11_0231E848 +.public ov11_0231E854 +.public ov11_0231E860 +.public ov11_0231E86C +.public ov11_0231E878 +.public ov11_0231E884 +.public ov11_0231E890 +.public ov11_0231E89C +.public ov11_0231E8A8 +.public ov11_0231E8B4 +.public ov11_0231E8C0 +.public ov11_0231E8CC +.public ov11_0231E8D8 +.public ov11_0231E8E4 +.public ov11_0231E8F0 +.public ov11_0231E8FC +.public ov11_0231E908 +.public ov11_0231E914 +.public ov11_0231E920 +.public ov11_0231E92C +.public ov11_0231E938 +.public ov11_0231E944 +.public ov11_0231E950 +.public ov11_0231E95C +.public ov11_0231E968 +.public ov11_0231E974 +.public ov11_0231E980 +.public ov11_0231E98C +.public ov11_0231E998 +.public ov11_0231E9A4 +.public ov11_0231E9B0 +.public ov11_0231E9BC +.public ov11_0231E9C8 +.public ov11_0231E9D4 +.public ov11_0231E9E0 +.public ov11_0231E9EC +.public ov11_0231E9F8 +.public ov11_0231EA04 +.public ov11_0231EA10 +.public ov11_0231EA1C +.public ov11_0231EA28 +.public ov11_0231EA34 +.public ov11_0231EA40 +.public ov11_0231EA4C +.public ov11_0231EA58 +.public ov11_0231EA64 +.public ov11_0231EA70 +.public ov11_0231EA7C +.public ov11_0231EA88 +.public ov11_0231EA94 +.public ov11_0231EAA0 +.public ov11_0231EAAC +.public ov11_0231EAB8 +.public ov11_0231EAC4 +.public ov11_0231EAD0 +.public ov11_0231EADC +.public ov11_0231EAE8 +.public ov11_0231EAF4 +.public ov11_0231EB00 +.public ov11_0231EB0C +.public ov11_0231EB18 +.public ov11_0231EB24 +.public ov11_0231EB30 +.public ov11_0231EB3C +.public ov11_0231EB48 +.public ov11_0231EB54 +.public ov11_0231EB60 +.public ov11_0231EB6C +.public ov11_0231EB78 +.public ov11_0231EB84 +.public ov11_0231EB90 +.public ov11_0231EB9C +.public ov11_0231EBA8 +.public ov11_0231EBB4 +.public ov11_0231EBC0 +.public ov11_0231EBCC +.public ov11_0231EBD8 +.public ov11_0231EBE4 +.public ov11_0231EBF0 +.public ov11_0231EBFC +.public ov11_0231EC08 +.public ov11_0231EC14 +.public ov11_0231EC20 +.public ov11_0231EC2C +.public ov11_0231EC38 +.public ov11_0231EC44 +.public ov11_0231EC50 +.public ov11_0231EC5C +.public ov11_0231EC68 +.public ov11_0231EC74 +.public ov11_0231EC80 +.public ov11_0231EC8C +.public ov11_0231EC98 +.public ov11_0231ECA4 +.public ov11_0231ECB0 +.public ov11_0231ECBC +.public ov11_0231ECC8 +.public ov11_0231ECD4 +.public ov11_0231ECE0 +.public ov11_0231ECEC +.public ov11_0231ECF8 +.public ov11_0231ED04 +.public ov11_0231ED10 +.public ov11_0231ED1C +.public ov11_0231ED28 +.public ov11_0231ED34 +.public ov11_0231ED40 +.public ov11_0231ED4C +.public ov11_0231ED58 +.public ov11_0231ED64 +.public ov11_0231ED70 +.public ov11_0231ED7C +.public ov11_0231ED88 +.public ov11_0231ED94 +.public ov11_0231EDA0 +.public ov11_0231EDAC +.public ov11_0231EDB8 +.public ov11_0231EDC4 +.public ov11_0231EDD0 +.public ov11_0231EDDC +.public ov11_0231EDE8 +.public ov11_0231EDF4 +.public ov11_0231EE00 +.public ov11_0231EE0C +.public ov11_0231EE18 +.public ov11_0231EE24 +.public ov11_0231EE30 +.public ov11_0231EE3C +.public ov11_0231EE48 +.public ov11_0231F414 +.public ov11_0231F420 +.public ov11_0231F42C +.public ov11_0231F438 +.public ov11_0231F444 +.public ov11_0231F450 +.public ov11_0231F45C +.public ov11_0231F468 +.public ov11_0231F474 +.public ov11_0231F480 +.public ov11_0231F48C +.public ov11_0231F498 +.public ov11_0231F4A4 +.public ov11_0231F4B0 +.public ov11_0231F4BC +.public ov11_0231F4C8 +.public ov11_0231F4D4 +.public ov11_0231F4E0 +.public ov11_0231F4EC +.public ov11_02320BBC +.public ov11_02324CBC +.public ov11_02388FC0 +.public ov11_02388FD4 +.public ov11_02388FD8 +.public ov11_02389018 +.public ov11_0238905C +.public ov11_023890A0 +.public ov11_023890E4 +.public ov11_02389128 +.public ov11_0238916C +.public ov11_023891F4 +.public ov11_023891F8 +.public sub_02002878 +.public sub_0200514C +.public sub_02008F3C +.public sub_02009120 +.public sub_02009194 +.public sub_020091B0 +.public sub_02009454 +.public sub_020094C4 +.public sub_0200A124 +.public sub_0200A158 +.public sub_0200A478 +.public sub_0200A4C4 +.public sub_0200B2C4 +.public sub_0200B314 +.public sub_0200BB60 +.public sub_0200BB74 +.public sub_0200BB88 +.public sub_0200BBF8 +.public sub_0200BC60 +.public sub_0200BCB0 +.public sub_0200BD14 +.public sub_0200BD50 +.public sub_0201F2A0 +.public sub_0206C0FC diff --git a/asm/include/overlay_11_022EE5E4.inc b/asm/include/overlay_11_022EE5E4.inc index 70d44c92..c76d6f90 100644 --- a/asm/include/overlay_11_022EE5E4.inc +++ b/asm/include/overlay_11_022EE5E4.inc @@ -1,9 +1,4 @@ #pragma once -.public _fdiv -.public _ffix -.public _fflt -.public _s32_div_f -.public abs .public ACTOR_FUNCTION_TABLE .public AddItemToBagNoHeld .public AnimationControlGetAllocForMaxFrame @@ -17,12 +12,10 @@ .public CheckInventoryMenuField0x1A0 .public CheckParentMenuField0x1A0 .public CheckTeamMemberIdx -.public ClampComponentAbs .public CloseAdvancedMenu .public CloseAdvancedTextBox .public CloseAreaNameBox .public CloseCollectionMenu -.public CloseControlsChart .public CloseDialogueBox .public CloseInventoryMenu .public CloseParentMenu @@ -41,10 +34,8 @@ .public CreateAdvancedTextBox .public CreateAreaNameBox .public CreateCollectionMenu -.public CreateControlsChart .public CreateDialogueBox .public CreateInventoryMenuOuter -.public CreateJobSummary .public CreateMonsterSummaryFromTeamMember .public CreateParentMenu .public CreateParentMenuFromStringIds @@ -65,19 +56,18 @@ .public DrawTextInWindow .public DungeonMoveToGroundMove .public DungeonSwapIdxToId -.public EnableIqSkill .public ENTITIES -.public EntryOverlay13 -.public EuclideanNorm__020050B0 .public EVENTS .public EXCLUSIVE_ITEM_REQUIREMENTS_PTR +.public EnableIqSkill .public FemaleToMaleForm .public FillOamAttributeInfo .public FillPaletteDataRgba .public FreeMissionRewardStructMain .public FuncThatCallsRunNextOpcode -.public FX_Atan2Idx -.public GetAcceptedMission +.public GROUND_STATE_MAP +.public GROUND_STATE_PTRS +.public GROUND_WEATHER_TABLE .public GetActiveRosterIndex .public GetActiveTeamMember .public GetActorMatchingStorageId @@ -100,11 +90,8 @@ .public GetItemMoveId16 .public GetKeyboardStatus .public GetKeyboardStringResult -.public GetLanguage .public GetLearnableIqSkills -.public GetMainCharacter1 .public GetMaxReachedFloor -.public GetMissionRankWithCapAndModifiersAndCap .public GetMoneyCarried .public GetNameRaw .public GetNameWithGender @@ -119,27 +106,20 @@ .public GetSpriteIndex__02052724 .public GetStringFromFileVeneer .public GetTeamMember -.public GetTopScreenOption .public GetWindowContents .public GetWindowIdPageStart .public GetWindowIdSelectedItemOnPage .public GetWindowIdSelectedMenuItemIdx -.public GpiCheckForBuddy -.public GROUND_STATE_MAP -.public GROUND_STATE_PTRS -.public GROUND_WEATHER_TABLE .public GroundBg_FreeAll .public GroundBg_Init .public InitAnimationControlWithSet__0201C0B0 .public InitMenu -.public InitMenuWithWindowExtraInfo .public InitMove .public InitOamAdjustmentInfo .public InitPortraitParams .public InitPreprocessorArgs .public InitRender3dElement64 .public InitScriptRoutine -.public IsAcceptedMissionSlotEmpty .public IsAdvancedMenuActive .public IsAdvancedMenuActive2 .public IsAdvancedTextBoxActive @@ -147,7 +127,6 @@ .public IsBagFull .public IsCollectionMenuActive .public IsCollectionMenuState3 -.public IsControlsChartActive .public IsDialogueBoxActive .public IsGummi .public IsHM @@ -155,7 +134,6 @@ .public IsInventoryMenuState3 .public IsMonsterOnTeam .public IsParentMenuActive -.public IsScreenFadeInProgress .public IsScrollBoxActive .public IsSimpleMenuActive .public ItemZInit @@ -174,14 +152,84 @@ .public MaybeGetFormattedItemName .public MaybeGetUncoloredFormattedItemName .public MemAlloc -.public memcpy -.public Memcpy32 -.public MemcpySimple .public MemFree .public MemZero +.public Memcpy32 +.public MemcpySimple .public NewWindowScreenCheck -.public OBJECT_FUNCTION_TABLE .public OBJECTS +.public OBJECT_FUNCTION_TABLE +.public PERFORMER_FUNCTION_TABLE +.public PlaySeVolumeWrapper +.public PopInventoryMenuField0x1A3 +.public PreprocessString +.public PreprocessStringFromId +.public PrintBadgeMark +.public PrintIqSkillsMenu +.public RandInt +.public RecolorNameString +.public RemoveItemNoHole +.public RemoveItemNoHoleCheck +.public Render3dElement64 +.public ResumeAdvancedMenu +.public ResumeParentMenu +.public ReturnScriptMenuResult +.public ReturnScriptMenuResultZero +.public SETANIMATION_TABLE +.public SWAP_SHOP_CLUMSET_ONE_STAR_STR +.public SWAP_SHOP_CLUMSET_THREE_STAR_STR +.public SWAP_SHOP_CLUMSET_TWO_STAR_STR +.public SWAP_SHOP_INVENTORY_PTRS +.public SWAP_SHOP_ONE_STAR_STR +.public SWAP_SHOP_RED_TEXT_TAG_STR +.public SWAP_SHOP_THREE_STAR_STR +.public SWAP_SHOP_TWO_STAR_STR +.public SWAP_SHOP_UNCENTER_TEXT_TAG_STR +.public SaveScriptVariableValue +.public SaveScriptVariableValueBytes +.public ScriptStationLoadTalk +.public SetActorTalkMain +.public SetActorTalkMainAndActorTalkSub +.public SetActorTalkSub +.public SetAnimationForAnimationControl +.public SetAreaNameBoxState3 +.public SetCollectionMenuField0x1A4 +.public SetCollectionMenuField0x1C8 +.public SetInventoryMenuState0 +.public SetInventoryMenuState6 +.public SetItemAcquired +.public SetNewFriendActor +.public SetParentMenuState7 +.public SetSpriteIdForAnimationControl +.public SetWindowTitle +.public ShowDialogueBox +.public ShowKeyboard +.public ShowStringIdInDialogueBox +.public ShowStringInDialogueBox +.public SortItemsInBag +.public StrcmpMonsterName +.public StrcpyName +.public StrcpySimple +.public StringFromId +.public StrncpyName +.public StrncpySimple +.public StrncpySimpleNoPad +.public StrncpySimpleNoPadSafe +.public SwapShopFreeDoublePointer +.public SwitchAnimationControlToNextFrame +.public TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS +.public TEAM_MEMBER_TABLE_PTR +.public UnloadFile +.public UnlockRoutine +.public UpdateWindow +.public ValidateTeamMembers +.public WAN_TABLE +.public WorldMapSetCamera +.public WorldMapSetMode +.public ZeroInitMissionRewardDataStruct +.public _s32_div_f +.public abs +.public memcpy .public ov10_022BCC60 .public ov10_022BCC7C .public ov10_022BCCB0 @@ -212,13 +260,6 @@ .public ov10_022C3378 .public ov10_022C34F0 .public ov10_022C3890 -.public ov11_022DC240 -.public ov11_022DC368 -.public ov11_022DC3A0 -.public ov11_022DC3FC -.public ov11_022DC434 -.public ov11_022DC46C -.public ov11_022DC494 .public ov11_022DC504 .public ov11_022DC934 .public ov11_022DC940 @@ -254,42 +295,31 @@ .public ov11_022E5EFC .public ov11_022E6EE8 .public ov11_022E7FA8 -.public ov11_022E8168 .public ov11_022E8340 .public ov11_022E83F8 .public ov11_022E84AC .public ov11_022E9B84 .public ov11_022E9BD0 -.public ov11_022E9C98 -.public ov11_022E9CB0 -.public ov11_022E9D10 .public ov11_022E9DE4 .public ov11_022E9E2C .public ov11_022E9E74 .public ov11_022E9EBC .public ov11_022E9F48 .public ov11_022E9FA4 -.public ov11_022EA014 .public ov11_022EA920 .public ov11_022EA954 .public ov11_022EA990 .public ov11_022EA9E4 .public ov11_022EAA24 .public ov11_022EAF60 -.public ov11_022EAFF8 -.public ov11_022EB0C0 -.public ov11_022EB0E4 .public ov11_022EB128 .public ov11_022EB2A4 -.public ov11_022EB2F4 .public ov11_022EB3C8 -.public ov11_022EBAA0 .public ov11_022EC240 .public ov11_022EC27C .public ov11_022ED69C .public ov11_022EDD14 .public ov11_022EDD20 -.public ov11_022EDE64 .public ov11_022EE0C8 .public ov11_022EE138 .public ov11_022EE144 @@ -301,6 +331,32 @@ .public ov11_022EE230 .public ov11_022EE268 .public ov11_022EE2D0 +.public ov11_0230CFF4 +.public ov11_0230D000 +.public ov11_0230D220 +.public ov11_0230D318 +.public ov11_0230D71C +.public ov11_0230D92C +.public ov11_0230E964 +.public ov11_0230F138 +.public ov11_0230F1EC +.public ov11_02310BDC +.public ov11_02310BF0 +.public ov11_02310C04 +.public ov11_023113E8 +.public ov11_0231145C +.public ov11_023118E8 +.public ov11_0231195C +.public ov11_02313DF4 +.public ov11_02314670 +.public ov11_02314684 +.public ov11_023146B0 +.public ov11_023146D4 +.public ov11_023146F8 +.public ov11_0231474C +.public ov11_0231598C +.public ov11_023159B0 +.public ov11_023159CC .public ov11_02320858 .public ov11_02320BE4 .public ov11_02320BF4 @@ -530,147 +586,6 @@ .public ov11_02322FD4 .public ov11_02322FE4 .public ov11_02322FF4 -.public ov11_0232307C -.public ov11_0232308C -.public ov11_0232309C -.public ov11_023230AC -.public ov11_023230BC -.public ov11_023230CC -.public ov11_023230DC -.public ov11_023230EC -.public ov11_023230FC -.public ov11_0232310C -.public ov11_0232311C -.public ov11_0232312C -.public ov11_0232313C -.public ov11_0232314C -.public ov11_0232315C -.public ov11_0232316C -.public ov11_0232317C -.public ov11_0232318C -.public ov11_0232319C -.public ov11_023231AC -.public ov11_023231BC -.public ov11_023231E0 -.public ov11_02323204 -.public ov11_02323228 -.public ov11_02323244 -.public ov11_02323268 -.public ov11_02323284 -.public ov11_023232A8 -.public ov11_023232BC -.public ov11_023232D8 -.public ov11_023232FC -.public ov11_02323310 -.public ov11_02323330 -.public ov11_02323340 -.public ov11_02323350 -.public ov11_02323374 -.public ov11_02323394 -.public ov11_023233B0 -.public ov11_023233E8 -.public ov11_02323490 -.public ov11_02323730 -.public ov11_02323750 -.public ov11_0232376C -.public ov11_02323788 -.public ov11_023237AC -.public ov11_02323818 -.public ov11_0232382C -.public ov11_02323840 -.public ov11_0232385C -.public ov11_02323864 -.public ov11_02323894 -.public ov11_023238B0 -.public ov11_023238CC -.public ov11_023238DC -.public ov11_02323920 -.public ov11_0232393C -.public ov11_02323958 -.public ov11_02323974 -.public ov11_02323998 -.public ov11_023239B4 -.public ov11_023239C4 -.public ov11_02323A04 -.public ov11_02323A20 -.public ov11_02323A3C -.public ov11_02323A58 -.public ov11_02323A7C -.public ov11_02323A98 -.public ov11_02323AA8 -.public ov11_02323AE8 -.public ov11_02323B04 -.public ov11_02323B20 -.public ov11_02323B3C -.public ov11_02323B60 -.public ov11_02323B7C -.public ov11_02323B98 -.public ov11_02323BBC -.public ov11_02323BD0 -.public ov11_02323BD8 -.public ov11_02323BE0 -.public ov11_02323BE8 -.public ov11_02323BF8 -.public ov11_02323C38 -.public ov11_02323C54 -.public ov11_02323C8C -.public ov11_02323CAC -.public ov11_02323CC8 -.public ov11_02323CD0 -.public ov11_02323CEC -.public ov11_02323D0C -.public ov11_02323D2C -.public ov11_02323D60 -.public ov11_02323D7C -.public ov11_02323D98 -.public ov11_02323DB4 -.public ov11_02323DD0 -.public ov11_02323DEE -.public ov11_02323E2C -.public ov11_02323E4E -.public ov11_02323E70 -.public ov11_02323E92 -.public ov11_02323EBC -.public ov11_02323EFC -.public ov11_02323F40 -.public ov11_02323F84 -.public ov11_02323FD4 -.public ov11_02324024 -.public ov11_02324040 -.public ov11_0232405C -.public ov11_02324078 -.public ov11_02324094 -.public ov11_023240B0 -.public ov11_023240CC -.public ov11_023240E8 -.public ov11_02324160 -.public ov11_023241D8 -.public ov11_02324258 -.public ov11_023242D8 -.public ov11_02324380 -.public ov11_02324460 -.public ov11_02324540 -.public ov11_02324620 -.public ov11_02324700 -.public ov11_0232471C -.public ov11_02324738 -.public ov11_02324754 -.public ov11_023247E0 -.public ov11_023248C0 -.public ov11_02324B0C -.public ov11_02324B24 -.public ov11_02324B3C -.public ov11_02324B54 -.public ov11_02324B6C -.public ov11_02324B84 -.public ov11_02324B9C -.public ov11_02324BB4 -.public ov11_02324BCC -.public ov11_02324BDC -.public ov11_02324BF8 -.public ov11_02324C1C -.public ov11_02324C30 -.public ov11_02324C38 .public ov11_02324CBC .public ov11_02324CC8 .public ov11_02324CD0 @@ -706,24 +621,6 @@ .public ov11_02324D90 .public ov11_02324D94 .public ov11_02324D98 -.public ov11_02324DBC -.public ov11_02324DC0 -.public ov11_02324DC4 -.public ov11_02324DC8 -.public ov11_02324DD4 -.public ov11_02324DDC -.public ov11_02324DF0 -.public ov11_02324DF8 -.public ov11_02324E00 -.public ov11_02324E08 -.public ov11_02324E10 -.public ov11_02324E18 -.public ov11_02324E20 -.public ov11_02324E28 -.public ov11_02324E30 -.public ov11_02324E34 -.public ov11_02324E38 -.public ov11_02324E78 .public ov11_023892A0 .public ov11_0238A020 .public ov11_0238A034 @@ -737,84 +634,20 @@ .public ov11_0238A080 .public ov11_0238A084 .public ov11_0238A088 -.public ov11_0238A08C -.public ov11_0238A090 -.public ov11_0238A094 -.public ov11_0238A098 -.public ov11_0238A130 -.public ov11_0238A134 .public ov16_0238CC94 .public ov16_0238CCA8 -.public ov16_0238CCBC -.public ov16_0238CCD8 -.public ov16_0238CCF0 -.public OVERLAY11_OVERLAY_LOAD_TABLE -.public OverlayIsLoaded -.public PERFORMER_FUNCTION_TABLE -.public PlaySeVolumeWrapper -.public PopInventoryMenuField0x1A3 -.public PreprocessString -.public PreprocessStringFromId -.public PrintBadgeMark -.public PrintIqSkillsMenu -.public RandInt -.public RecolorNameString -.public RECYCLE_SHOP_OVERLAY_STATUS -.public RemoveItemNoHole -.public RemoveItemNoHoleCheck -.public Render3dElement64 -.public ResumeAdvancedMenu -.public ResumeParentMenu -.public ReturnScriptMenuResult -.public ReturnScriptMenuResultZero -.public SaveScriptVariableValue -.public SaveScriptVariableValueBytes -.public ScriptStationLoadTalk -.public SentryUpdateDisplay -.public SetActorTalkMain -.public SetActorTalkMainAndActorTalkSub -.public SetActorTalkSub -.public SETANIMATION_TABLE -.public SetAnimationForAnimationControl -.public SetAreaNameBoxState3 -.public SetCollectionMenuField0x1A4 -.public SetCollectionMenuField0x1C8 -.public SetInventoryMenuState0 -.public SetInventoryMenuState6 -.public SetItemAcquired -.public SetNewFriendActor -.public SetParentMenuState7 -.public SetSpriteIdForAnimationControl -.public SetWindowTitle -.public ShowDialogueBox -.public ShowKeyboard -.public ShowStringIdInDialogueBox -.public ShowStringInDialogueBox -.public SortItemsInBag -.public SPINDA_CAFE_OVERLAY_STATUS .public sprintf .public strcat -.public StrcmpMonsterName .public strcpy -.public StrcpyName -.public StrcpySimple -.public StringFromId -.public StrncpyName -.public StrncpySimple -.public StrncpySimpleNoPad -.public StrncpySimpleNoPadSafe -.public sub_020017EC .public sub_0200302C .public sub_020030FC .public sub_020037A4 -.public sub_0200514C .public sub_02005430 .public sub_02005494 .public sub_020054C0 .public sub_020055C8 .public sub_02006DC8 .public sub_02008BA8 -.public sub_02008F64 .public sub_02009120 .public sub_02009194 .public sub_020091B0 @@ -846,10 +679,6 @@ .public sub_0201E020 .public sub_0201E12C .public sub_0201E7D8 -.public sub_0201F2E4 -.public sub_0201F324 -.public sub_0201F348 -.public sub_0201F36C .public sub_02025304_JP .public sub_020262E0 .public sub_020265A8 @@ -934,14 +763,8 @@ .public sub_02047148 .public sub_02047150 .public sub_02047188 -.public sub_02048384 -.public sub_020483B8 -.public sub_020483D8 .public sub_02048764 .public sub_02048794 -.public sub_0204AFD0 -.public sub_0204CDCC -.public sub_0204CE00 .public sub_0204CF0C .public sub_0204E210 .public sub_02052E2C @@ -965,9 +788,6 @@ .public sub_0205882C .public sub_02058AFC .public sub_0205B028 -.public sub_02061F44 -.public sub_02061F90 -.public sub_02062DB4 .public sub_02063830 .public sub_02064FFC .public sub_02065014 @@ -983,14 +803,7 @@ .public sub_02067584 .public sub_02067664 .public sub_020676AC -.public sub_020698B8 -.public sub_02069904 .public sub_0206A84C -.public sub_0206A878 -.public sub_0206A8A0 -.public sub_0206A96C -.public sub_0206A9DC -.public sub_0206AA40 .public sub_0206AA5C .public sub_0206AB98 .public sub_0206ABB0 @@ -999,26 +812,4 @@ .public sub_0206B9DC .public sub_0206BA5C .public sub_0206C110 -.public SWAP_SHOP_CLUMSET_ONE_STAR_STR -.public SWAP_SHOP_CLUMSET_THREE_STAR_STR -.public SWAP_SHOP_CLUMSET_TWO_STAR_STR -.public SWAP_SHOP_INVENTORY_PTRS -.public SWAP_SHOP_ONE_STAR_STR -.public SWAP_SHOP_RED_TEXT_TAG_STR -.public SWAP_SHOP_THREE_STAR_STR -.public SWAP_SHOP_TWO_STAR_STR -.public SWAP_SHOP_UNCENTER_TEXT_TAG_STR -.public SwapShopFreeDoublePointer -.public SwitchAnimationControlToNextFrame -.public TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS -.public TEAM_MEMBER_TABLE_PTR -.public TRIG_TABLE -.public UnloadFile -.public UnlockRoutine -.public UpdateWindow -.public ValidateTeamMembers -.public VEC_Distance .public vsprintf -.public WAN_TABLE -.public WORLD_MAP_MODE -.public ZeroInitMissionRewardDataStruct diff --git a/asm/include/overlay_11_0230CCE0.inc b/asm/include/overlay_11_0230CCE0.inc new file mode 100644 index 00000000..dc315f1d --- /dev/null +++ b/asm/include/overlay_11_0230CCE0.inc @@ -0,0 +1,289 @@ +#pragma once +.public AnimRelatedFunction__022F6F14 +.public AppendStandardStringToMission +.public ClampComponentAbs +.public CloseAreaNameBox +.public CloseControlsChart +.public CreateAreaNameBox +.public CreateControlsChart +.public CreateJobSummary +.public Debug_FatalError +.public Debug_Print +.public DelayWteFree +.public DrawTextInWindow +.public EVENTS +.public EuclideanNorm__020050B0 +.public FX_Atan2Idx +.public GROUND_WEATHER_TABLE +.public GetAcceptedMission +.public GetDungeonMode +.public GetExecuteSpecialEpisodeType +.public GetGameMode +.public GetHero +.public GetLanguage +.public GetMainCharacter1 +.public GetMissionRankWithCapAndModifiersAndCap +.public GetPartner +.public GetTopScreenOption +.public GroundBg_FreeAll +.public GroundBg_Init +.public InitAnimDataFromOtherAnimDataVeneer +.public InitMenu +.public InitMenuWithWindowExtraInfo +.public IsAcceptedMissionSlotEmpty +.public IsAreaNameBoxActive +.public IsControlsChartActive +.public IsScreenFadeInProgress +.public LoadObjectAnimData +.public LoadScriptVariableValue +.public LoadWteFromRom +.public MemAlloc +.public MemFree +.public OverlayIsLoaded +.public RECYCLE_SHOP_OVERLAY_STATUS +.public SentryUpdateDisplay +.public SetAnimDataFields2 +.public TRIG_TABLE +.public UpdateWindow +.public VEC_Distance +.public WORLD_MAP_MODE +.public _fdiv +.public _ffix +.public _fflt +.public _s32_div_f +.public ov11_022DC240 +.public ov11_022DC368 +.public ov11_022DC3A0 +.public ov11_022DC3FC +.public ov11_022DC434 +.public ov11_022DC46C +.public ov11_022DC494 +.public ov11_022DC504 +.public ov11_022E8168 +.public ov11_022E9C98 +.public ov11_022E9CB0 +.public ov11_022E9D10 +.public ov11_022EA014 +.public ov11_022EAFF8 +.public ov11_022EB0C0 +.public ov11_022EB0E4 +.public ov11_022EB2F4 +.public ov11_022EB3C8 +.public ov11_022EBAA0 +.public ov11_022EC27C +.public ov11_022EDE64 +.public ov11_022EE5E4 +.public ov11_022EE5EC +.public ov11_022EE60C +.public ov11_022EE620 +.public ov11_022EF2D4 +.public ov11_022EF498 +.public ov11_022EF53C +.public ov11_022EF70C +.public ov11_022EFB70 +.public ov11_022EFD5C +.public ov11_022F03F8 +.public ov11_022F040C +.public ov11_022F042C +.public ov11_022F1798 +.public ov11_022F17B4 +.public ov11_022F17E8 +.public ov11_022F1E70 +.public ov11_022F1E90 +.public ov11_022F1EEC +.public ov11_022F4734 +.public ov11_022F47BC +.public ov11_022F4974 +.public ov11_022F5BBC +.public ov11_022F5C3C +.public ov11_022F5C94 +.public ov11_022F6EFC +.public ov11_022F6FE0 +.public ov11_022F7058 +.public ov11_023230FC +.public ov11_0232310C +.public ov11_0232311C +.public ov11_0232312C +.public ov11_0232313C +.public ov11_0232314C +.public ov11_0232315C +.public ov11_0232316C +.public ov11_0232317C +.public ov11_0232318C +.public ov11_0232319C +.public ov11_023231AC +.public ov11_023231BC +.public ov11_023231E0 +.public ov11_02323204 +.public ov11_02323228 +.public ov11_02323244 +.public ov11_02323268 +.public ov11_02323284 +.public ov11_023232A8 +.public ov11_023232BC +.public ov11_023232D8 +.public ov11_023232FC +.public ov11_02323310 +.public ov11_02323330 +.public ov11_02323340 +.public ov11_02323350 +.public ov11_02323374 +.public ov11_02323394 +.public ov11_023233B0 +.public ov11_023233E8 +.public ov11_02323490 +.public ov11_02323730 +.public ov11_02323750 +.public ov11_0232376C +.public ov11_02323788 +.public ov11_023237AC +.public ov11_02323818 +.public ov11_0232382C +.public ov11_02323840 +.public ov11_0232385C +.public ov11_02323864 +.public ov11_02323894 +.public ov11_023238B0 +.public ov11_023238CC +.public ov11_023238DC +.public ov11_02323920 +.public ov11_0232393C +.public ov11_02323958 +.public ov11_02323974 +.public ov11_02323998 +.public ov11_023239B4 +.public ov11_023239C4 +.public ov11_02323A04 +.public ov11_02323A20 +.public ov11_02323A3C +.public ov11_02323A58 +.public ov11_02323A7C +.public ov11_02323A98 +.public ov11_02323AA8 +.public ov11_02323AE8 +.public ov11_02323B04 +.public ov11_02323B20 +.public ov11_02323B3C +.public ov11_02323B60 +.public ov11_02323B7C +.public ov11_02323B98 +.public ov11_02323BBC +.public ov11_02323BD0 +.public ov11_02323BD8 +.public ov11_02323BE0 +.public ov11_02323BE8 +.public ov11_02323BF8 +.public ov11_02323C38 +.public ov11_02323C54 +.public ov11_02323C8C +.public ov11_02323CAC +.public ov11_02323CC8 +.public ov11_02323CD0 +.public ov11_02323CEC +.public ov11_02323D0C +.public ov11_02323D2C +.public ov11_02323D60 +.public ov11_02323D7C +.public ov11_02323D98 +.public ov11_02323DB4 +.public ov11_02323DD0 +.public ov11_02323DEE +.public ov11_02323E2C +.public ov11_02323E4E +.public ov11_02323E70 +.public ov11_02323E92 +.public ov11_02323EBC +.public ov11_02323EFC +.public ov11_02323F40 +.public ov11_02323F84 +.public ov11_02323FD4 +.public ov11_02324024 +.public ov11_02324040 +.public ov11_0232405C +.public ov11_02324078 +.public ov11_02324094 +.public ov11_023240B0 +.public ov11_023240CC +.public ov11_023240E8 +.public ov11_02324160 +.public ov11_023241D8 +.public ov11_02324258 +.public ov11_023242D8 +.public ov11_02324380 +.public ov11_02324460 +.public ov11_02324540 +.public ov11_02324620 +.public ov11_02324700 +.public ov11_0232471C +.public ov11_02324738 +.public ov11_02324754 +.public ov11_023247E0 +.public ov11_023248C0 +.public ov11_02324B0C +.public ov11_02324B24 +.public ov11_02324B3C +.public ov11_02324B54 +.public ov11_02324B6C +.public ov11_02324B84 +.public ov11_02324B9C +.public ov11_02324BB4 +.public ov11_02324BCC +.public ov11_02324BDC +.public ov11_02324BF8 +.public ov11_02324C1C +.public ov11_02324C30 +.public ov11_02324C38 +.public ov11_02324DBC +.public ov11_02324DC0 +.public ov11_02324DC4 +.public ov11_02324DC8 +.public ov11_02324DD4 +.public ov11_02324DDC +.public ov11_02324DF0 +.public ov11_02324DF8 +.public ov11_02324E00 +.public ov11_02324E08 +.public ov11_02324E10 +.public ov11_02324E18 +.public ov11_02324E20 +.public ov11_02324E28 +.public ov11_02324E30 +.public ov11_02324E34 +.public ov11_02324E38 +.public ov11_02324E78 +.public ov11_0238A094 +.public ov11_0238A098 +.public ov11_0238A130 +.public ov11_0238A134 +.public ov16_0238CCBC +.public ov16_0238CCD8 +.public ov16_0238CCF0 +.public sub_0200514C +.public sub_020055C8 +.public sub_02008F64 +.public sub_0201DF38 +.public sub_0201E020 +.public sub_0201E12C +.public sub_0201E7D8 +.public sub_0201F2E4 +.public sub_0201F324 +.public sub_0201F348 +.public sub_0201F36C +.public sub_0204707C +.public sub_02047150 +.public sub_02048384 +.public sub_020483B8 +.public sub_020483D8 +.public sub_0204AFD0 +.public sub_0204CDCC +.public sub_0204CE00 +.public sub_02061F44 +.public sub_02061F90 +.public sub_02062DB4 +.public sub_020698B8 +.public sub_02069904 +.public sub_0206A878 +.public sub_0206A8A0 +.public sub_0206A96C +.public sub_0206A9DC +.public sub_0206AA40 diff --git a/asm/main_02065C84.s b/asm/main_02065C84.s index 0c8de431..d7fd8bd8 100644 --- a/asm/main_02065C84.s +++ b/asm/main_02065C84.s @@ -547,5100 +547,3 @@ _0206639C: bl UnloadOverlay ldmia sp!, {r3, pc} arm_func_end sub_0206637C - - arm_func_start sub_020663C8 -sub_020663C8: ; 0x020663C8 - stmdb sp!, {r3, lr} - ldrsb ip, [sp, #8] - str ip, [sp] - bl sub_02046A9C - ldmia sp!, {r3, pc} - arm_func_end sub_020663C8 - - arm_func_start sub_020663DC -sub_020663DC: ; 0x020663DC - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr ip, [sp, #0x10] - ldrh lr, [sp, #0x14] - str ip, [sp] - mov ip, #0 - str lr, [sp, #4] - str ip, [sp, #8] - bl sub_02046A20 - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end sub_020663DC - - arm_func_start sub_02066408 -sub_02066408: ; 0x02066408 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr ip, [sp, #0x10] - ldrh lr, [sp, #0x14] - str ip, [sp] - ldr ip, [sp, #0x18] - str lr, [sp, #4] - str ip, [sp, #8] - bl sub_02046A20 - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end sub_02066408 - - arm_func_start sub_02066434 -sub_02066434: ; 0x02066434 - stmdb sp!, {r3, lr} - bl sub_02046B04 - mvn r1, #1 - cmp r0, r1 - moveq r0, #0x1f - ldmeqia sp!, {r3, pc} - add r1, r1, #1 - cmp r0, r1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_02066434 - - arm_func_start sub_0206645C -sub_0206645C: ; 0x0206645C - ldr ip, _02066464 ; =sub_02046BA0 - bx ip - .align 2, 0 -_02066464: .word sub_02046BA0 - arm_func_end sub_0206645C - - arm_func_start sub_02066468 -sub_02066468: ; 0x02066468 - ldr ip, _02066474 ; =sub_02046BE8 - mov r2, #0 - bx ip - .align 2, 0 -_02066474: .word sub_02046BE8 - arm_func_end sub_02066468 - - arm_func_start sub_02066478 -sub_02066478: ; 0x02066478 - ldr ip, _02066484 ; =sub_02046C30 - mov r2, #0 - bx ip - .align 2, 0 -_02066484: .word sub_02046C30 - arm_func_end sub_02066478 - - arm_func_start sub_02066488 -sub_02066488: ; 0x02066488 - ldr ip, _02066490 ; =sub_02046BE8 - bx ip - .align 2, 0 -_02066490: .word sub_02046BE8 - arm_func_end sub_02066488 - - arm_func_start sub_02066494 -sub_02066494: ; 0x02066494 - stmdb sp!, {r3, lr} - bl sub_02046C78 - cmp r0, #0 - movne r0, #0x1f - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_02066494 - - arm_func_start sub_020664AC -sub_020664AC: ; 0x020664AC - ldr ip, _020664B4 ; =sub_02046D20 - bx ip - .align 2, 0 -_020664B4: .word sub_02046D20 - arm_func_end sub_020664AC - - arm_func_start sub_020664B8 -sub_020664B8: ; 0x020664B8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_020676AC - ldr r2, _0206650C ; =_020B0B24 - mov r3, #0 - mov r0, #0xa8 - mov r1, #8 - strb r3, [r2] - bl MemAlloc - ldr r2, _0206650C ; =_020B0B24 - mov r1, #0xa8 - str r0, [r2, #4] - bl MemZero - ldr r1, _0206650C ; =_020B0B24 - mov r2, #0 - ldr r3, [r1, #4] - mov r0, #1 - str r4, [r3, #8] - ldr r1, [r1, #4] - str r2, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_0206650C: .word _020B0B24 - arm_func_end sub_020664B8 - - arm_func_start sub_02066510 -sub_02066510: ; 0x02066510 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - ldr r0, _02066874 ; =_020B0B24 - ldr r1, [r0, #4] - ldr r0, [r1] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _02066868 -_02066530: ; jump table - b _02066544 ; case 0 - b _02066640 ; case 1 - b _02066700 ; case 2 - b _02066708 ; case 3 - b _02066724 ; case 4 -_02066544: - mov r2, #0 - add r1, r1, #0xa4 - mov r0, r2 -_02066550: - strb r0, [r1, r2] - add r2, r2, #1 - cmp r2, #4 - blt _02066550 - ldr r0, _02066874 ; =_020B0B24 - mov r1, #0x98 - ldr r0, [r0, #4] - add r0, r0, #0xc - bl MemZero - ldr r0, _02066874 ; =_020B0B24 - ldr r2, [r0, #4] - add r1, r2, #0xa4 - str r1, [r2, #0x6c] - ldr r0, [r0, #4] - ldr r0, [r0, #8] - cmp r0, #0 - bne _020665B4 - ldr r4, _02066878 ; =JOB_MENU_ITEMS_1 - bl sub_0205E954 - cmp r0, #0 - ldreq r0, _02066874 ; =_020B0B24 - moveq r1, #3 - ldreq r0, [r0, #4] - streqb r1, [r0, #0xa4] - b _020665D8 -_020665B4: - cmp r0, #1 - bne _020665D8 - ldr r4, _0206687C ; =JOB_MENU_ITEMS_2 - bl sub_0205EAC8 - cmp r0, #0 - ldreq r0, _02066874 ; =_020B0B24 - moveq r1, #3 - ldreq r0, [r0, #4] - streqb r1, [r0, #0xa4] -_020665D8: - bl CountJobListMissions - cmp r0, #0 - ldreq r0, _02066874 ; =_020B0B24 - moveq r1, #3 - ldreq r0, [r0, #4] - ldr r3, _02066874 ; =_020B0B24 - streqb r1, [r0, #0xa5] - ldrsb r2, [r3] - ldr ip, [r3, #4] - mov r1, #0 - add r2, r4, r2, lsl #3 - ldr lr, [r2, #4] - ldr r0, _02066880 ; =JOB_WINDOW_PARAMS_1 - str lr, [ip, #0xc] - str r4, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - ldr r3, [r3, #4] - ldr r2, _02066884 ; =0x00000233 - add r3, r3, #0xc - bl sub_02046A20 - ldr r0, _02066874 ; =_020B0B24 - mov r1, #1 - ldr r0, [r0, #4] - str r1, [r0] - b _02066868 -_02066640: - bl sub_02046B04 - mov r4, r0 - mvn r1, #1 - cmp r4, r1 - moveq r4, #4 - beq _02066674 - sub r0, r1, #1 - cmp r4, r0 - moveq r4, #4 - beq _02066674 - add r0, r1, #1 - cmp r4, r0 - moveq r4, #0 -_02066674: - bl sub_02046BA0 - ldr r1, _02066874 ; =_020B0B24 - cmp r4, #1 - strb r0, [r1] - bne _020666A4 - ldr r0, [r1, #4] - mov r2, #0xa - str r2, [r0, #4] - ldr r0, [r1, #4] - mov r1, #3 - str r1, [r0] - b _02066868 -_020666A4: - cmp r4, #2 - bne _020666C8 - ldr r0, [r1, #4] - mov r2, #0xb - str r2, [r0, #4] - ldr r0, [r1, #4] - mov r1, #3 - str r1, [r0] - b _02066868 -_020666C8: - cmp r4, #3 - bne _020666EC - ldr r0, [r1, #4] - mov r2, #0xe - str r2, [r0, #4] - ldr r0, [r1, #4] - mov r1, #3 - str r1, [r0] - b _02066868 -_020666EC: - cmp r4, #4 - ldreq r0, [r1, #4] - moveq r1, #2 - streq r1, [r0] - b _02066868 -_02066700: - mov r0, #1 - b _0206686C -_02066708: - ldr r0, [r1, #4] - bl sub_020668B4 - ldr r0, _02066874 ; =_020B0B24 - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0] - b _02066868 -_02066724: - bl sub_02066A44 - movs r4, r0 - beq _02066868 - bl sub_02067664 - add r0, r4, #1 - cmp r0, #0x17 - addls pc, pc, r0, lsl #2 - b _02066868 -_02066744: ; jump table - b _02066858 ; case 0 - b _02066868 ; case 1 - b _020667A4 ; case 2 - b _02066868 ; case 3 - b _020667B8 ; case 4 - b _020667C0 ; case 5 - b _020667C8 ; case 6 - b _020667D0 ; case 7 - b _020667D8 ; case 8 - b _020667E0 ; case 9 - b _020667E8 ; case 10 - b _020667F0 ; case 11 - b _020667F8 ; case 12 - b _02066800 ; case 13 - b _02066808 ; case 14 - b _02066810 ; case 15 - b _02066818 ; case 16 - b _02066820 ; case 17 - b _02066828 ; case 18 - b _02066830 ; case 19 - b _02066838 ; case 20 - b _02066840 ; case 21 - b _02066848 ; case 22 - b _02066850 ; case 23 -_020667A4: - ldr r0, _02066874 ; =_020B0B24 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0] - b _02066868 -_020667B8: - mov r0, #2 - b _0206686C -_020667C0: - mov r0, #3 - b _0206686C -_020667C8: - mov r0, #4 - b _0206686C -_020667D0: - mov r0, #5 - b _0206686C -_020667D8: - mov r0, #6 - b _0206686C -_020667E0: - mov r0, #7 - b _0206686C -_020667E8: - mov r0, #8 - b _0206686C -_020667F0: - mov r0, #9 - b _0206686C -_020667F8: - mov r0, #0xa - b _0206686C -_02066800: - mov r0, #0xb - b _0206686C -_02066808: - mov r0, #0xc - b _0206686C -_02066810: - mov r0, #0xd - b _0206686C -_02066818: - mov r0, #0xe - b _0206686C -_02066820: - mov r0, #0xf - b _0206686C -_02066828: - mov r0, #0x10 - b _0206686C -_02066830: - mov r0, #0x11 - b _0206686C -_02066838: - mov r0, #0x12 - b _0206686C -_02066840: - mov r0, #0x13 - b _0206686C -_02066848: - mov r0, #0x14 - b _0206686C -_02066850: - mov r0, #0x15 - b _0206686C -_02066858: - ldr r0, _02066874 ; =_020B0B24 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0] -_02066868: - mov r0, #0 -_0206686C: - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02066874: .word _020B0B24 -_02066878: .word JOB_MENU_ITEMS_1 -_0206687C: .word JOB_MENU_ITEMS_2 -_02066880: .word JOB_WINDOW_PARAMS_1 -_02066884: .word 0x00000233 - arm_func_end sub_02066510 - - arm_func_start sub_02066888 -sub_02066888: ; 0x02066888 - stmdb sp!, {r3, lr} - ldr r0, _020668B0 ; =_020B0B24 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _020668B0 ; =_020B0B24 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020668B0: .word _020B0B24 - arm_func_end sub_02066888 - - arm_func_start sub_020668B4 -sub_020668B4: ; 0x020668B4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - sub r0, r5, #0x13 - cmp r0, #2 - movls r0, #0 - ldmlsia sp!, {r3, r4, r5, pc} - ldr r0, _02066988 ; =0x00000EF8 - mov r1, #8 - bl MemAlloc - ldr r2, _0206698C ; =_020B0B2C - ldr r1, _02066988 ; =0x00000EF8 - str r0, [r2, #0x14] - bl MemZero - ldr r0, _0206698C ; =_020B0B2C - mov r2, #0 - ldr r4, [r0, #0x14] - mov r1, r2 -_020668F8: - add r0, r4, r2 - add r2, r2, #1 - strb r1, [r0, #0x4c] - cmp r2, #0x20 - blt _020668F8 - ldr r0, _0206698C ; =_020B0B2C - ldr r0, [r0, #0x14] - str r5, [r0, #4] - str r1, [r4, #8] - str r1, [r4, #0xef0] - bl sub_020686F4 - mov r2, #0 - str r2, [r4, #0x74] - sub r1, r2, #1 - str r1, [r4, #0x78] - cmp r0, #0 - bne _0206695C - bl sub_020692B4 - ldr r0, _0206698C ; =_020B0B2C - ldr r0, [r0, #0x14] - bl MemFree - ldr r1, _0206698C ; =_020B0B2C - mov r0, #0 - str r0, [r1, #0x14] - ldmia sp!, {r3, r4, r5, pc} -_0206695C: - sub r0, r2, #2 - strb r0, [r4, #0x7d] - bl sub_020692FC - mvn r1, #1 - ldr r0, _0206698C ; =_020B0B2C - strb r1, [r4, #0xd85] - ldr r0, [r0, #0x14] - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02066988: .word 0x00000EF8 -_0206698C: .word _020B0B2C - arm_func_end sub_020668B4 - - arm_func_start sub_02066990 -sub_02066990: ; 0x02066990 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - ldr r0, _02066A3C ; =0x00000EF8 - mov r1, #8 - mov r6, r2 - mov r5, r3 - bl MemAlloc - ldr r2, _02066A40 ; =_020B0B2C - ldr r1, _02066A3C ; =0x00000EF8 - str r0, [r2, #0x14] - bl MemZero - ldr r0, _02066A40 ; =_020B0B2C - mov r1, #0 - ldr r4, [r0, #0x14] - str r8, [r4, #4] - str r7, [r4, #0x74] - str r6, [r4, #0x6c] - str r5, [r4, #0x78] - str r1, [r4, #8] - str r1, [r4, #0xef0] - bl sub_020686F4 - cmp r0, #0 - bne _02066A10 - bl sub_020692B4 - ldr r0, _02066A40 ; =_020B0B2C - ldr r0, [r0, #0x14] - bl MemFree - ldr r1, _02066A40 ; =_020B0B2C - mov r0, #0 - str r0, [r1, #0x14] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02066A10: - mvn r0, #1 - strb r0, [r4, #0x7d] - bl sub_020692FC - mvn r1, #1 - ldr r0, _02066A40 ; =_020B0B2C - strb r1, [r4, #0xd85] - ldr r0, [r0, #0x14] - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02066A3C: .word 0x00000EF8 -_02066A40: .word _020B0B2C - arm_func_end sub_02066990 - - arm_func_start sub_02066A44 -sub_02066A44: ; 0x02066A44 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr r0, _020674A0 ; =_020B0B2C - ldr r6, [r0, #0x14] - ldr r0, [r6] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02067494 -_02066A64: ; jump table - b _02066A80 ; case 0 - b _02066B08 ; case 1 - b _02066DA4 ; case 2 - b _02066DAC ; case 3 - b _020672F4 ; case 4 - b _02067374 ; case 5 - b _02067474 ; case 6 -_02066A80: - bl sub_020691B8 - ldr r0, _020674A0 ; =_020B0B2C - mov r2, #1 - ldr r1, [r0, #0x14] - str r2, [r1] - ldr r1, [r6, #0xee4] - cmp r1, #0 - bne _02066AF4 - ldr r1, [r0, #0x14] - ldr r0, [r1, #4] - sub r0, r0, #0xa - cmp r0, #3 - bhi _02066AC8 - add r0, r1, #0x2e4 - ldr r1, _020674A4 ; =_020A92A8 - ldr r2, _020674A8 ; =sub_020696E8 - add r0, r0, #0xc00 - bl sub_0204707C -_02066AC8: - ldr r0, _020674A0 ; =_020B0B2C - ldr r1, [r0, #0x14] - ldr r0, [r1, #4] - cmp r0, #0xe - bne _02067494 - add r0, r1, #0x2e4 - ldr r1, _020674A4 ; =_020A92A8 - ldr r2, _020674AC ; =sub_02069750 - add r0, r0, #0xc00 - bl sub_0204707C - b _02067494 -_02066AF4: - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047188 - b _02067494 -_02066B08: - ldrsb r0, [r6, #0x7d] - bl GetWindowIdSelectedMenuItemIdx - ldr r1, [r6, #0xef0] - mov r4, r0 - cmp r1, #0 - strneb r4, [r1] - ldrsb r0, [r6, #0x7d] - bl IsCollectionMenuActive - cmp r0, #0 - bne _02066D68 - ldrsb r0, [r6, #0x7d] - bl sub_0202C75C - movs r5, r0 - bpl _02066BAC - mov r2, #0 - mov r1, r2 - b _02066B58 -_02066B4C: - add r0, r6, r2 - strb r1, [r0, #0x4c] - add r2, r2, #1 -_02066B58: - ldr r0, [r6, #0x6c] - cmp r2, r0 - blt _02066B4C - mvn r0, #0 - str r0, [r6, #8] - bl sub_020692B4 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r0, [r0, #4] - sub r0, r0, #0xa - cmp r0, #3 - bhi _02066BA4 - bl sub_0205F5A8 - bl sub_0205F710 -_02066BA4: - mvn r0, #0 - b _02067498 -_02066BAC: - bl sub_020674E8 - cmp r0, #0 - beq _02066BE8 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r0, [r0, #4] - sub r0, r0, #0x12 - cmp r0, #1 - bhi _02066D68 - bl sub_020692B4 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #2 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02066D68 -_02066BE8: - ldr r3, [r6, #8] - cmp r3, r5 - bne _02066D64 - ldr r0, _020674A0 ; =_020B0B2C - ldr r1, [r0, #0x14] - ldr r2, [r1, #4] - cmp r2, #0xe - cmpne r2, #0xf - cmpne r2, #0x11 - moveq r0, #2 - streq r0, [r1] - beq _02066D68 - sub r1, r2, #0xa - cmp r1, #3 - bhi _02066CF4 - bl CountJobListMissions - cmp r0, #8 - bge _02066CEC - ldr r1, _020674A0 ; =_020B0B2C - mov r0, #0 - ldr r1, [r1, #0x14] - ldr r1, [r1, #4] - sub r1, r1, #0xa - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _02066CCC -_02066C50: ; jump table - b _02066C60 ; case 0 - b _02066C7C ; case 1 - b _02066C98 ; case 2 - b _02066CB4 ; case 3 -_02066C60: - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205E970 - b _02066CCC -_02066C7C: - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EAE8 - b _02066CCC -_02066C98: - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EBD8 - b _02066CCC -_02066CB4: - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC38 -_02066CCC: - bl AddMissionToJobList - bl sub_020686F4 - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047188 -_02066CEC: - bl sub_020691B8 - b _02066D68 -_02066CF4: - cmp r2, #0x10 - bne _02066D04 - bl sub_020691B8 - b _02066D68 -_02066D04: - sub r1, r2, #0x12 - cmp r1, #1 - bhi _02066D30 - add r1, r6, r3 - mov r2, #1 - strb r2, [r1, #0x4c] - ldr r0, [r0, #0x14] - mov r1, #2 - str r1, [r0] - bl sub_020692B4 - b _02066D68 -_02066D30: - cmp r2, #9 - cmpne r2, #0x14 - cmpne r2, #4 - bne _02066D58 - bl sub_020692B4 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #2 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02066D68 -_02066D58: - bl sub_020692B4 - mov r0, #1 - b _02067498 -_02066D64: - bl sub_020691B8 -_02066D68: - bl sub_020698B8 - cmp r0, #0 - beq _02066D90 - cmp r4, #0 - blt _02066D90 - ldr r0, [r6, #8] - cmp r0, r4 - beq _02066D90 - str r4, [r6, #8] - bl sub_0206937C -_02066D90: - ldr r0, [r6, #0xee4] - cmp r0, #0 - beq _02067494 - bl sub_020470D0 - b _02067494 -_02066DA4: - bl sub_02067708 - b _02067494 -_02066DAC: - bl sub_02046B04 - bl sub_02068308 - ldr r1, [r6, #0xef4] - mov r4, r0 - cmp r1, #0 - beq _02066DD0 - bl sub_02046BA0 - ldr r1, [r6, #0xef4] - strb r0, [r1] -_02066DD0: - cmp r4, #1 - bne _02066E00 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r0, [r0, #4] - cmp r0, #9 - bne _02066DF4 - bl sub_0206955C - bl sub_02046D20 -_02066DF4: - bl sub_020692B4 - mov r0, #1 - b _02067498 -_02066E00: - cmp r4, #2 - bne _02066EDC - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r0, [r0, #4] - cmp r0, #0xa - bne _02066E3C - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205E970 - bl AddMissionToJobList - b _02066EC0 -_02066E3C: - cmp r0, #0xb - bne _02066E64 - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EAE8 - bl AddMissionToJobList - b _02066EC0 -_02066E64: - cmp r0, #0xc - bne _02066E8C - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EBD8 - bl AddMissionToJobList - b _02066EC0 -_02066E8C: - cmp r0, #0xd - bne _02066EB4 - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC38 - bl AddMissionToJobList - b _02066EC0 -_02066EB4: - cmp r0, #0x14 - moveq r0, #1 - beq _02067498 -_02066EC0: - bl sub_020686F4 - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02066EDC: - cmp r4, #3 - bne _02066EF4 - bl sub_02067C8C - cmp r0, #0 - beq _02067494 - b _02067498 -_02066EF4: - cmp r4, #4 - bne _02066F44 - bl sub_02046BB4 - mov r0, #6 - bl PlaySeVolumeWrapper - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r1, #4 - strb r1, [r0] - bl sub_020686F4 - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02066F44: - cmp r4, #5 - bne _02067020 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r0, [r0, #4] - cmp r0, #0x11 - bne _02066F84 - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205F588 - bl sub_0205F5A8 - mov r0, #1 - b _02067498 -_02066F84: - cmp r0, #0x12 - moveq r0, #1 - beq _02067498 - cmp r0, #0xe - bne _02066FB4 - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #4 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02066FB4: - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205F588 - bl sub_0205F5A8 - bl CountJobListMissions - cmp r0, #0 - bne _02066FFC - bl sub_020692B4 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - mvn r0, #0 - b _02067498 -_02066FFC: - bl sub_020686F4 - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - mov r2, #0 - ldr r1, [r0, #0x14] - mov r0, #1 - str r2, [r1] - strb r0, [r6, #0xd84] - b _02067494 -_02067020: - cmp r4, #6 - bne _020670F4 - ldr r3, [r6, #0x70] - mov r1, #1 - add r0, r6, r3 - strb r1, [r0, #0x4c] - add r2, r3, #1 - ldr r1, [r6, #0x6c] - b _0206705C -_02067044: - add r0, r6, r2 - ldrb r0, [r0, #0x4c] - cmp r0, #0 - strne r2, [r6, #0x70] - bne _02067064 - add r2, r2, #1 -_0206705C: - cmp r2, r1 - blt _02067044 -_02067064: - ldr r0, [r6, #0x70] - cmp r0, r3 - bne _020670A0 - bl sub_020674E8 - cmp r0, #0 - bne _02067098 - bl sub_02046D20 - mov r1, #0 - ldr r0, _020674A0 ; =_020B0B2C - str r1, [r6, #8] - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02067098: - mov r0, #2 - b _02067498 -_020670A0: - str r0, [r6, #8] - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - ldr r1, _020674B0 ; =_020A937C - ldrsb r3, [r0, #0xd] - ldr r0, _020674B4 ; =_020B0B39 - ldr r2, _020674B8 ; =JOB_MENU_ITEMS_11 - ldr r1, [r1, r3, lsl #3] - add r3, r6, #0x248 - str r1, [r6, #0xe48] - str r0, [r6, #0xef4] - mov r0, #0 - ldr r1, _020674BC ; =0x00003878 - str r2, [sp] - str r1, [sp, #4] - ldr r2, _020674C0 ; =0x00000233 - mov r1, r0 - add r3, r3, #0xc00 - str r0, [sp, #8] - bl sub_02046A20 - b _02067494 -_020670F4: - sub r0, r4, #7 - cmp r0, #1 - bhi _02067494 - ldr r0, _020674A0 ; =_020B0B2C - ldr r1, [r0, #0x14] - ldr r0, [r1, #4] - cmp r0, #0x11 - bne _02067134 - bl sub_02046D20 - ldr r1, [r6, #8] - ldr r0, _020674A0 ; =_020B0B2C - str r1, [r6, #0xd88] - ldr r0, [r0, #0x14] - mov r1, #0 - str r1, [r0] - b _02067494 -_02067134: - cmp r0, #0x13 - bne _02067210 - ldr r3, [r6, #0x70] - mov r1, #0 - add r0, r6, r3 - strb r1, [r0, #0x4c] - mov r2, r3 - ldr r1, [r6, #0x6c] - b _02067170 -_02067158: - add r0, r6, r2 - ldrb r0, [r0, #0x4c] - cmp r0, #0 - strne r2, [r6, #0x70] - bne _02067178 - add r2, r2, #1 -_02067170: - cmp r2, r1 - blt _02067158 -_02067178: - ldr r0, [r6, #0x70] - cmp r0, r3 - bne _020671BC - bl sub_020674E8 - cmp r0, #0 - bne _020671B4 - bl sub_02046D20 - mov r0, #0 - str r0, [r6, #8] - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_020671B4: - mov r0, #2 - b _02067498 -_020671BC: - str r0, [r6, #8] - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - ldr r1, _020674B0 ; =_020A937C - ldrsb r3, [r0, #0xd] - ldr r0, _020674B4 ; =_020B0B39 - ldr r2, _020674B8 ; =JOB_MENU_ITEMS_11 - ldr r1, [r1, r3, lsl #3] - add r3, r6, #0x248 - str r1, [r6, #0xe48] - str r0, [r6, #0xef4] - mov r0, #0 - ldr r1, _020674BC ; =0x00003878 - str r2, [sp] - str r1, [sp, #4] - ldr r2, _020674C0 ; =0x00000233 - mov r1, r0 - add r3, r3, #0xc00 - str r0, [sp, #8] - bl sub_02046A20 - b _02067494 -_02067210: - cmp r0, #9 - bne _02067234 - bl sub_0206955C - bl sub_02046D20 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02067234: - cmp r0, #4 - bne _02067254 - bl sub_02046D20 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02067254: - cmp r0, #0x12 - bne _02067298 - mov r2, #0 - mov r1, r2 - b _02067274 -_02067268: - add r0, r6, r2 - strb r1, [r0, #0x4c] - add r2, r2, #1 -_02067274: - ldr r0, [r6, #0x6c] - cmp r2, r0 - blt _02067268 - bl sub_02046D20 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02067298: - cmp r0, #0x14 - bne _020672B8 - bl sub_02046D20 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_020672B8: - cmp r0, #0xe - bne _020672E8 - bl sub_02046BB4 - cmp r4, #7 - bne _020672D4 - mov r0, #0 - bl PlaySeVolumeWrapper -_020672D4: - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_020672E8: - mov r0, #0 - str r0, [r1] - b _02067494 -_020672F4: - mov r0, #0 - ldr r5, _020674C4 ; =_020A9268 - bl sub_02046D2C - str r0, [r6, #0xee8] - mov r0, #0 - bl sub_020474A0 - str r0, [r6, #0xeec] - bl sub_020469BC - bl sub_02068338 - ldr r0, _020674A0 ; =_020B0B2C - add r3, r6, #0x248 - ldr r0, [r0, #0x14] - mov r1, #0 - ldr r0, [r0, #4] - ldr r2, _020674C0 ; =0x00000233 - cmp r0, #0xe - moveq r0, #7 - streq r0, [r6, #0xe48] - moveq r0, #0 - streq r0, [r6, #0xef4] - ldreq r4, _020674C8 ; =JOB_MENU_ITEMS_4 - mov r0, r5 - str r4, [sp] - str r1, [sp, #4] - add r3, r3, #0xc00 - str r1, [sp, #8] - bl sub_02046A20 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #5 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02067374: - bl sub_02046B04 - bl sub_02068308 - ldr r1, [r6, #0xef4] - mov r4, r0 - cmp r1, #0 - beq _02067398 - bl sub_02046BA0 - ldr r1, [r6, #0xef4] - strb r0, [r1] -_02067398: - cmp r4, #5 - bne _02067430 - bl sub_020469E8 - ldr r0, [r6, #0xee8] - bl sub_02046D2C - ldr r0, [r6, #0xeec] - bl sub_020474A0 - mov r0, #0 - str r0, [r6, #0xee8] - str r0, [r6, #0xeec] - bl sub_02046BB4 - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205F588 - bl sub_0205F5A8 - bl CountJobListMissions - cmp r0, #0 - bne _0206740C - bl sub_020692B4 - ldr r0, _020674A0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - mvn r0, #0 - b _02067498 -_0206740C: - bl sub_020686F4 - bl sub_0206937C - ldr r0, _020674A0 ; =_020B0B2C - mov r2, #0 - ldr r1, [r0, #0x14] - mov r0, #1 - str r2, [r1] - strb r0, [r6, #0xd84] - b _02067494 -_02067430: - sub r0, r4, #7 - cmp r0, #1 - bhi _02067494 - bl sub_020469E8 - ldr r0, [r6, #0xee8] - bl sub_02046D2C - ldr r0, [r6, #0xeec] - bl sub_020474A0 - mov r0, #0 - str r0, [r6, #0xee8] - str r0, [r6, #0xeec] - bl sub_02046BB4 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] - b _02067494 -_02067474: - bl sub_02046C78 - cmp r0, #0 - beq _02067494 - bl sub_02046D20 - ldr r0, _020674A0 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - str r1, [r0] -_02067494: - mov r0, #0 -_02067498: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_020674A0: .word _020B0B2C -_020674A4: .word _020A92A8 -_020674A8: .word sub_020696E8 -_020674AC: .word sub_02069750 -_020674B0: .word _020A937C -_020674B4: .word _020B0B39 -_020674B8: .word JOB_MENU_ITEMS_11 -#if defined(EUROPE) -_020674BC: .word 0x0000387A -#elif defined(JAPAN) -_020674BC: .word 0x000034B6 -#else -_020674BC: .word 0x00003878 -#endif -_020674C0: .word 0x00000233 -_020674C4: .word _020A9268 -_020674C8: .word JOB_MENU_ITEMS_4 - arm_func_end sub_02066A44 - - arm_func_start sub_020674CC -sub_020674CC: ; 0x020674CC - ldr r0, _020674E4 ; =_020B0B2C - ldr r1, [r0, #0x14] - ldr r0, [r1, #8] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #0xc] - bx lr - .align 2, 0 -_020674E4: .word _020B0B2C - arm_func_end sub_020674CC - - arm_func_start sub_020674E8 -sub_020674E8: ; 0x020674E8 - ldr r0, _02067520 ; =_020B0B2C - mov ip, #0 - ldr r2, [r0, #0x14] - mov r0, ip - ldr r3, [r2, #0x6c] - b _02067514 -_02067500: - add r1, r2, ip - ldrb r1, [r1, #0x4c] - add ip, ip, #1 - cmp r1, #0 - addne r0, r0, #1 -_02067514: - cmp ip, r3 - blt _02067500 - bx lr - .align 2, 0 -_02067520: .word _020B0B2C - arm_func_end sub_020674E8 - - arm_func_start sub_02067524 -sub_02067524: ; 0x02067524 - stmdb sp!, {r4, lr} - mov lr, #0 - mov r4, lr - ldr r2, _02067580 ; =_020B0B2C - b _02067568 -_02067538: - cmp lr, r1 - movge r0, #0 - ldmgeia sp!, {r4, pc} - add r3, ip, r4 - ldrb r3, [r3, #0x4c] - cmp r3, #0 - addne r3, ip, r4, lsl #1 - ldrnesh ip, [r3, #0xc] - movne r3, lr, lsl #1 - addne lr, lr, #1 - strneh ip, [r0, r3] - add r4, r4, #1 -_02067568: - ldr ip, [r2, #0x14] - ldr r3, [ip, #0x6c] - cmp r4, r3 - blt _02067538 - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_02067580: .word _020B0B2C - arm_func_end sub_02067524 - - arm_func_start sub_02067584 -sub_02067584: ; 0x02067584 - stmdb sp!, {r4, lr} - sub sp, sp, #0x40 - cmp r0, #0x13 - addls pc, pc, r0, lsl #2 - b _02067658 -_02067598: ; jump table - b _020675E8 ; case 0 - b _020675E8 ; case 1 - b _020675E8 ; case 2 - b _020675E8 ; case 3 - b _020675E8 ; case 4 - b _020675E8 ; case 5 - b _020675E8 ; case 6 - b _020675E8 ; case 7 - b _02067658 ; case 8 - b _020675E8 ; case 9 - b _020675E8 ; case 10 - b _020675E8 ; case 11 - b _020675E8 ; case 12 - b _020675E8 ; case 13 - b _02067638 ; case 14 - b _02067638 ; case 15 - b _02067638 ; case 16 - b _02067604 ; case 17 - b _020675E8 ; case 18 - b _02067650 ; case 19 -_020675E8: - add r1, sp, #0 - bl sub_02068390 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - b _0206765C -_02067604: - bl sub_0204E210 - cmp r0, #1 - bne _02067638 - bl CountJobListMissions - mov r4, r0 - bl GetAdventureLogDungeonFloor - ldrb r0, [r0] - bl DungeonRequestsDoneWrapper - subs r0, r4, r0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - b _0206765C -_02067638: - bl CountJobListMissions - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - b _0206765C -_02067650: - mov r0, #0 - b _0206765C -_02067658: - mov r0, #1 -_0206765C: - add sp, sp, #0x40 - ldmia sp!, {r4, pc} - arm_func_end sub_02067584 - - arm_func_start sub_02067664 -sub_02067664: ; 0x02067664 - stmdb sp!, {r3, lr} - ldr r0, _020676A8 ; =_020B0B2C - ldr r0, [r0, #0x14] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - bl sub_02069904 - bl sub_020692B4 - ldr r0, _020676A8 ; =_020B0B2C - ldr r0, [r0, #0x14] - bl MemFree - ldr r0, _020676A8 ; =_020B0B2C - mov r1, #0 - str r1, [r0, #0x14] - ldmia sp!, {r3, pc} - .align 2, 0 -_020676A8: .word _020B0B2C - arm_func_end sub_02067664 - - arm_func_start sub_020676AC -sub_020676AC: ; 0x020676AC - ldr r0, _02067704 ; =_020B0B2C - mov r1, #0 - strb r1, [r0, #0x10] - strb r1, [r0, #0xe] - strb r1, [r0, #9] - strb r1, [r0, #8] - strb r1, [r0, #6] - strb r1, [r0, #0xb] - strb r1, [r0, #4] - strb r1, [r0, #0xd] - strb r1, [r0, #7] - strb r1, [r0, #3] - strb r1, [r0, #2] - strb r1, [r0, #5] - strb r1, [r0, #1] - strb r1, [r0] - strb r1, [r0, #0x13] - strb r1, [r0, #0x12] - strb r1, [r0, #0x11] - strb r1, [r0, #0xa] - strb r1, [r0, #0xf] - bx lr - .align 2, 0 -_02067704: .word _020B0B2C - arm_func_end sub_020676AC - - arm_func_start sub_02067708 -sub_02067708: ; 0x02067708 -#if defined(EUROPE) -#define SUB_02067708_WORD_OFFSET 2 -#elif defined(JAPAN) -#define SUB_02067708_WORD_OFFSET -0x3C2 -#else -#define SUB_02067708_WORD_OFFSET 0 -#endif - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x5c - ldr r1, _02067C00 ; =_020B0B2C - mov r6, #0 - add r0, sp, #0xc - mov sb, r6 - ldr r4, [r1, #0x14] - ldr r7, _02067C04 ; =_020A9298 - ldr r8, _02067C08 ; =0x00000233 - bl InitPreprocessorArgs - bl sub_02068338 - ldr r1, _02067C00 ; =_020B0B2C - ldr r0, [r1, #0x14] - ldr r2, [r0, #4] - sub r2, r2, #4 - cmp r2, #0x10 - addls pc, pc, r2, lsl #2 - b _02067BC4 -_02067750: ; jump table - b _02067AF8 ; case 0 - b _02067BC4 ; case 1 - b _02067BC4 ; case 2 - b _02067BC4 ; case 3 - b _02067BC4 ; case 4 - b _02067A80 ; case 5 - b _02067794 ; case 6 - b _020677F0 ; case 7 - b _0206784C ; case 8 - b _020678A8 ; case 9 - b _02067904 ; case 10 - b _020679E0 ; case 11 - b _02067BC4 ; case 12 - b _02067A50 ; case 13 - b _02067B20 ; case 14 - b _02067B3C ; case 15 - b _02067BA0 ; case 16 -_02067794: - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205E970 - bl AlreadyHaveMission - cmp r0, #0 - bne _020677C4 - bl CountJobListMissions - cmp r0, #8 - blt _020677CC -_020677C4: - mov r0, #3 - strb r0, [r4, #0xee0] -_020677CC: - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C0C ; =_020A9364 - ldrsb r2, [r0, #0x10] - ldr r0, _02067C10 ; =_020B0B3C - ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_020677F0: - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EAE8 - bl AlreadyHaveMission - cmp r0, #0 - bne _02067820 - bl CountJobListMissions - cmp r0, #8 - blt _02067828 -_02067820: - mov r0, #3 - strb r0, [r4, #0xee0] -_02067828: - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C0C ; =_020A9364 - ldrsb r2, [r0, #0xe] - ldr r0, _02067C18 ; =_020B0B3A - ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_0206784C: - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EBD8 - bl AlreadyHaveMission - cmp r0, #0 - bne _0206787C - bl CountJobListMissions - cmp r0, #8 - blt _02067884 -_0206787C: - mov r0, #3 - strb r0, [r4, #0xee0] -_02067884: - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C0C ; =_020A9364 - ldrsb r2, [r0, #9] - ldr r0, _02067C1C ; =_020B0B35 - ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_020678A8: - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC38 - bl AlreadyHaveMission - cmp r0, #0 - bne _020678D8 - bl CountJobListMissions - cmp r0, #8 - blt _020678E0 -_020678D8: - mov r0, #3 - strb r0, [r4, #0xee0] -_020678E0: - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C0C ; =_020A9364 - ldrsb r2, [r0, #8] - ldr r0, _02067C20 ; =_020B0B34 - ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_02067904: - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r5, r0 - ldrb r0, [r5, #4] - bl DungeonSwapIdToIdx - ldrb r0, [r5] - orr r8, r8, #0x400000 - orr r8, r8, #0x80000000 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0206798C -_02067940: ; jump table - b _0206798C ; case 0 - b _02067954 ; case 1 - b _02067954 ; case 2 - b _02067954 ; case 3 - b _02067954 ; case 4 -_02067954: - mov r0, r5 - bl sub_0205ECF4 - cmp r0, #0 - movne r0, #3 - strneb r0, [r4, #0xee0] - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C24 ; =_020A9394 - ldrsb r2, [r0, #6] - ldr r0, _02067C28 ; =_020B0B32 - ldr r5, _02067C2C ; =JOB_MENU_ITEMS_12 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_0206798C: - ldrb r1, [r5, #1] - cmp r1, #3 - ldreqb r0, [r5, #2] - cmpeq r0, #3 - moveq r0, #3 - streqb r0, [r4, #0xee0] - beq _020679BC - cmp r1, #6 - ldreqb r0, [r5, #2] - cmpeq r0, #4 - moveq r0, #3 - streqb r0, [r4, #0xee0] -_020679BC: - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C30 ; =_020A93B4 - ldrsb r2, [r0, #6] - ldr r0, _02067C28 ; =_020B0B32 - ldr r5, _02067C34 ; =JOB_MENU_ITEMS_13 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_020679E0: - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldrb r0, [r0] - cmp r0, #4 - beq _02067A2C - ldr r0, [r4, #8] - add r0, r4, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldrb r0, [r0] - cmp r0, #1 - movne r0, #3 - strneb r0, [r4, #0xee0] -_02067A2C: - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C38 ; =_020A92EC - ldrsb r2, [r0, #0xb] - ldr r0, _02067C3C ; =_020B0B37 - ldr r5, _02067C40 ; =JOB_MENU_ITEMS_5 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_02067A50: - ldr r5, _02067C44 ; =JOB_MENU_ITEMS_7 - ldr r6, _02067C48 ; =0x000037B0 - mov r7, sb - bl sub_020692B4 - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C4C ; =_020A931C - ldrsb r2, [r0, #4] - ldr r0, _02067C50 ; =_020B0B30 - ldr r1, [r1, r2, lsl #3] - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_02067A80: - sub r1, r8, #0x100 - str r1, [sp, #0xc] - add r1, r0, #0xd00 - mov r7, r6 - ldrsb r2, [r1, #0x85] - sub r1, r7, #2 - ldr r5, _02067C54 ; =JOB_MENU_ITEMS_3 - cmp r2, r1 - ldreq r0, [r0, #4] - ldr r6, _02067C58 ; =0x0000380C - mov sb, #0x1000 - cmpeq r0, #9 - bne _02067AE4 - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl CreatePortraitBox - ldr r2, _02067C00 ; =_020B0B2C - ldr r1, _02067C5C ; =_020A9278 - ldr r3, [r2, #0x14] - strb r0, [r3, #0xd85] - ldr r0, [r2, #0x14] - add r0, r0, #0xd00 - ldrsb r0, [r0, #0x85] - bl ShowPortraitInPortraitBox -_02067AE4: - ldr r1, [r5, #0xc] - mov r0, #0 - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] - b _02067BC4 -_02067AF8: - ldrsb r2, [r1, #0xc] - ldr r1, _02067C60 ; =_020A9304 - ldr r0, _02067C64 ; =_020B0B38 - ldr r1, [r1, r2, lsl #3] - ldr r5, _02067C68 ; =JOB_MENU_ITEMS_6 - str r1, [r4, #0xe48] - str r0, [r4, #0xef4] -#ifdef NORTH_AMERICA - rsb r6, r8, #0x3a40 -#else - ldr r6, _02067FF0 ; =0x0000380F -#endif - mov r7, sb - b _02067BC4 -_02067B20: - mov r0, #7 - mov r7, r6 - str r0, [r4, #0xe48] - str r7, [r4, #0xef4] - ldr r5, _02067C6C ; =JOB_MENU_ITEMS_9 - ldr r6, _02067C70 ; =0x000038BF - b _02067BC4 -_02067B3C: - ldr r1, [r4, #0x6c] - ldr r5, _02067C74 ; =JOB_MENU_ITEMS_11 - ldr r6, _02067C78 ; =0x00003878 - mov r2, sb - b _02067B68 -_02067B50: - add r0, r4, r2 - ldrb r0, [r0, #0x4c] - cmp r0, #0 - strne r2, [r4, #0x70] - bne _02067B70 - add r2, r2, #1 -_02067B68: - cmp r2, r1 - blt _02067B50 -_02067B70: - ldr r0, [r4, #0x70] - mov r7, #0 - str r0, [r4, #8] - bl sub_0206937C - ldr r0, _02067C00 ; =_020B0B2C - ldr r1, _02067C7C ; =_020B0B39 - ldrsb r0, [r0, #0xd] - add r0, r5, r0, lsl #3 - ldr r0, [r0, #4] - str r0, [r4, #0xe48] - str r1, [r4, #0xef4] - b _02067BC4 -_02067BA0: - ldrsb r2, [r1, #7] - ldr r1, _02067C80 ; =_020A9334 - ldr r0, _02067C84 ; =_020B0B33 - ldr r1, [r1, r2, lsl #3] - ldr r5, _02067C88 ; =JOB_MENU_ITEMS_8 - str r1, [r4, #0xe48] -#ifdef NORTH_AMERICA - add r6, r8, #0x3580 -#else - ldr r6, _02068014 ; =0x000037B5 -#endif - str r0, [r4, #0xef4] - mov r7, sb -_02067BC4: - add r3, r4, #0x248 - stmia sp, {r5, r6} - add r4, sp, #0xc - mov r0, r7 - mov r1, sb - mov r2, r8 - add r3, r3, #0xc00 - str r4, [sp, #8] - bl sub_02046A20 - ldr r0, _02067C00 ; =_020B0B2C - mov r1, #3 - ldr r0, [r0, #0x14] - str r1, [r0] - add sp, sp, #0x5c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02067C00: .word _020B0B2C -_02067C04: .word _020A9298 -_02067C08: .word 0x00000233 -_02067C0C: .word _020A9364 -_02067C10: .word _020B0B3C -_02067C14: .word JOB_MENU_ITEMS_10 -_02067C18: .word _020B0B3A -_02067C1C: .word _020B0B35 -_02067C20: .word _020B0B34 -_02067C24: .word _020A9394 -_02067C28: .word _020B0B32 -_02067C2C: .word JOB_MENU_ITEMS_12 -_02067C30: .word _020A93B4 -_02067C34: .word JOB_MENU_ITEMS_13 -_02067C38: .word _020A92EC -_02067C3C: .word _020B0B37 -_02067C40: .word JOB_MENU_ITEMS_5 -_02067C44: .word JOB_MENU_ITEMS_7 -#ifdef JAPAN -_02067C48: .word 0x00003432 -#else -_02067C48: .word 0x000037B0 + SUB_02067708_WORD_OFFSET -#endif -_02067C4C: .word _020A931C -_02067C50: .word _020B0B30 -_02067C54: .word JOB_MENU_ITEMS_3 -_02067C58: .word 0x0000380C + SUB_02067708_WORD_OFFSET -_02067C5C: .word _020A9278 -_02067C60: .word _020A9304 -_02067C64: .word _020B0B38 -_02067C68: .word JOB_MENU_ITEMS_6 -#if defined(EUROPE) -_02067FF0: .word 0x0000380F -#elif defined(JAPAN) -_02067FF0: .word 0x0000344B -#endif -_02067C6C: .word JOB_MENU_ITEMS_9 -_02067C70: .word 0x000038BF + SUB_02067708_WORD_OFFSET -_02067C74: .word JOB_MENU_ITEMS_11 -_02067C78: .word 0x00003878 + SUB_02067708_WORD_OFFSET -_02067C7C: .word _020B0B39 -_02067C80: .word _020A9334 -_02067C84: .word _020B0B33 -_02067C88: .word JOB_MENU_ITEMS_8 -#ifdef EUROPE -_02068014: .word 0x000037B5 -#elif defined(JAPAN) -_02068014: .word 0x00003435 -#endif - arm_func_end sub_02067708 - - arm_func_start sub_02067C8C -sub_02067C8C: ; 0x02067C8C -#if defined(EUROPE) -#define SUB_02067C8C_WORD_OFFSET 2 -#elif defined(JAPAN) -#define SUB_02067C8C_WORD_OFFSET -0x3C2 -#else -#define SUB_02067C8C_WORD_OFFSET 0 -#endif - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x60 - ldr r0, _020682E0 ; =_020B0B2C - ldr r6, [r0, #0x14] - bl sub_02046BB4 - mov r0, #6 - bl PlaySeVolumeWrapper - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r4, r0 - ldrb r0, [r4, #4] - bl DungeonSwapIdToIdx - mov r5, r0 - add r0, sp, #8 - str r0, [sp] - ldrb r0, [r4, #1] - add r1, r4, #2 - add r2, sp, #4 - add r3, sp, #0xc - bl sub_0206276C - ldrb r1, [r4, #1] - cmp r1, #0xe - ldreqb r0, [r4, #2] - cmpeq r0, #1 - bne _02067E70 - bl GetRank - ldrb r1, [sp, #4] - cmp r1, r0 - bhi _02067D3C - bl GetScenarioBalance - ldr r1, [sp, #0xc] - cmp r1, r0 - bgt _02067D3C - ldr r0, [sp, #8] - cmp r0, #0 - beq _02067D7C - mov r0, #0x16 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - bne _02067D7C -_02067D3C: - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _020682E4 ; =0x0000381F - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_02067D7C: - mov r0, r5 - bl GetDungeonMode - cmp r0, #3 - bne _02067DCC - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _020682E8 ; =0x00003820 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_02067DCC: - ldrb r0, [r4, #4] - mov r4, #0 - sub r0, r0, #0x49 - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _02067E4C -_02067DE4: ; jump table - b _02067E30 ; case 0 - b _02067E4C ; case 1 - b _02067E28 ; case 2 - b _02067E4C ; case 3 - b _02067E18 ; case 4 - b _02067E4C ; case 5 - b _02067E20 ; case 6 - b _02067E4C ; case 7 - b _02067E38 ; case 8 - b _02067E4C ; case 9 - b _02067E48 ; case 10 - b _02067E4C ; case 11 - b _02067E40 ; case 12 -_02067E18: - mov r4, #3 - b _02067E4C -_02067E20: - mov r4, #4 - b _02067E4C -_02067E28: - mov r4, #5 - b _02067E4C -_02067E30: - mov r4, #6 - b _02067E4C -_02067E38: - mov r4, #7 - b _02067E4C -_02067E40: - mov r4, #8 - b _02067E4C -_02067E48: - mov r4, #9 -_02067E4C: - ldr r0, [r6, #8] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205F588 - bl sub_0205F5A8 - mov r0, r4 - b _020682D8 -_02067E70: - cmp r1, #3 - ldreqb r0, [r4, #2] - cmpeq r0, #3 - bne _02067FE0 - ldrb r0, [r4, #4] - bl CheckDungeonMissionUnlockConditions - cmp r0, #1 - bne _02067ED0 - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 -#ifdef NORTH_AMERICA - mov r0, #0x1c - rsb r1, r0, #0x3840 -#else - ldr r1, _02068678 ; =0x00003826 - mov r0, #0x1c -#endif - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_02067ED0: - cmp r0, #0 - beq _02067F28 - add r0, sp, #0x10 - bl InitPreprocessorArgs - ldrb r0, [r4, #4] - str r0, [sp, #0x20] - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _020682EC ; =0x00003825 - add r2, sp, #0x10 - mov r0, #0x1c - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_02067F28: - mov r0, r5 - mov r1, #3 - bl sub_0204D018 - mov r0, #5 - strb r0, [r4] - ldrb r0, [r4, #4] - sub r0, r0, #0x57 - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02067FE0 -_02067F50: ; jump table - b _02067F80 ; case 0 - b _02067F88 ; case 1 - b _02067F90 ; case 2 - b _02067F98 ; case 3 - b _02067FA0 ; case 4 - b _02067FA8 ; case 5 - b _02067FB0 ; case 6 - b _02067FB8 ; case 7 - b _02067FC0 ; case 8 - b _02067FC8 ; case 9 - b _02067FD0 ; case 10 - b _02067FD8 ; case 11 -_02067F80: - mov r0, #0xa - b _020682D8 -_02067F88: - mov r0, #0xb - b _020682D8 -_02067F90: - mov r0, #0xc - b _020682D8 -_02067F98: - mov r0, #0xd - b _020682D8 -_02067FA0: - mov r0, #0xe - b _020682D8 -_02067FA8: - mov r0, #0xf - b _020682D8 -_02067FB0: - mov r0, #0x10 - b _020682D8 -_02067FB8: - mov r0, #0x11 - b _020682D8 -_02067FC0: - mov r0, #0x12 - b _020682D8 -_02067FC8: - mov r0, #0x13 - b _020682D8 -_02067FD0: - mov r0, #0x14 - b _020682D8 -_02067FD8: - mov r0, #0x15 - b _020682D8 -_02067FE0: - ldrb r0, [r4, #1] - cmp r0, #0xb - bne _02068158 - ldrb r1, [r4, #2] - cmp r1, #1 - blo _02068158 - cmp r1, #5 - bhi _02068158 - add r1, r4, #2 - mov r2, #0xff - bl CheckAcceptedMissionByTypeAndDungeon - cmp r0, #0 - beq _02068054 - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _020682F0 ; =0x00003821 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_02068054: - bl GetRank - ldrb r1, [sp, #4] - cmp r1, r0 - bhi _02068090 - bl GetScenarioBalance - ldr r1, [sp, #0xc] - cmp r1, r0 - bgt _02068090 - ldr r0, [sp, #8] - cmp r0, #0 - beq _020680D0 - mov r0, #0x16 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - bne _020680D0 -_02068090: - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 -#ifdef EUROPE - mov r0, #0x1c - rsb r1, r0, #0x3840 -#else - ldr r1, _020682F4 ; =0x00003822 - mov r0, #0x1c -#endif - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_020680D0: - ldrb r0, [r4, #2] - cmp r0, #5 - bne _02068158 - mov r0, #0 - bl IsSpecialEpisodeBeaten - cmp r0, #0 - bne _0206812C - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _020682F8 ; =0x00003823 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_0206812C: - mov r0, r5 - bl GetDungeonMode - cmp r0, #3 - beq _02068158 - mov r0, r5 - mov r1, #3 - bl sub_0204D018 - mov r0, #5 - strb r0, [r4] - mov r0, #0x16 - b _020682D8 -_02068158: - ldrb r1, [r4, #1] - cmp r1, #6 - ldreqb r0, [r4, #2] - cmpeq r0, #4 - bne _02068260 - ldrb r0, [r4, #4] - bl CheckDungeonMissionUnlockConditions - mov r6, r0 - bl GetRank - ldrb r1, [sp, #4] - cmp r1, r0 - bhi _020681BC - bl GetScenarioBalance - ldr r1, [sp, #0xc] - cmp r1, r0 - bgt _020681BC - ldr r0, [sp, #8] - cmp r0, #0 - beq _020681B4 - mov r0, #0x16 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _020681BC -_020681B4: - cmp r6, #1 - bne _020681FC -_020681BC: - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 -#ifdef JAPAN - mov r0, #0x1c - rsb r1, r0, #0x3480 -#else - ldr r1, _020682FC ; =0x00003826 - mov r0, #0x1c -#endif - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_020681FC: - cmp r6, #0 - beq _02068244 - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _02068300 ; =0x00003827 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_02068244: - mov r2, #5 - mov r0, r5 - mov r1, #3 - strb r2, [r4] - bl sub_0204D018 - mov r0, #0xe - b _020682D8 -_02068260: - cmp r1, #0xc - beq _020682B8 - ldrb r0, [r4, #4] - bl CanDungeonBeUsedForMission - cmp r0, #0 - bne _020682B8 - bl sub_020692B4 - ldr r0, _020682E0 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, #0x2e4 - add r0, r0, #0xc00 - bl sub_02047150 - ldr r1, _02068304 ; =0x00003828 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _020682E0 ; =_020B0B2C - mov r2, #6 - ldr r1, [r0, #0x14] - mov r0, #0 - str r2, [r1] - b _020682D8 -_020682B8: - mov r0, #5 - strb r0, [r4] - bl sub_020686F4 - bl sub_0206937C - ldr r1, _020682E0 ; =_020B0B2C - mov r0, #0 - ldr r1, [r1, #0x14] - str r0, [r1] -_020682D8: - add sp, sp, #0x60 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020682E0: .word _020B0B2C -_020682E4: .word 0x0000381F + SUB_02067C8C_WORD_OFFSET -_020682E8: .word 0x00003820 + SUB_02067C8C_WORD_OFFSET -#if defined(EUROPE) -_02068678: .word 0x00003826 -#elif defined(JAPAN) -_02068678: .word 0x00003462 -#endif -_020682EC: .word 0x00003825 + SUB_02067C8C_WORD_OFFSET -_020682F0: .word 0x00003821 + SUB_02067C8C_WORD_OFFSET -#ifndef EUROPE -_020682F4: .word 0x00003822 + SUB_02067C8C_WORD_OFFSET -#endif -_020682F8: .word 0x00003823 + SUB_02067C8C_WORD_OFFSET -#ifndef JAPAN -_020682FC: .word 0x00003826 + SUB_02067C8C_WORD_OFFSET -#endif -_02068300: .word 0x00003827 + SUB_02067C8C_WORD_OFFSET -_02068304: .word 0x00003828 + SUB_02067C8C_WORD_OFFSET - arm_func_end sub_02067C8C - - arm_func_start sub_02068308 -sub_02068308: ; 0x02068308 - mvn r2, #1 - cmp r0, r2 - moveq r0, #8 - bxeq lr - sub r1, r2, #1 - cmp r0, r1 - moveq r0, #8 - bxeq lr - add r1, r2, #1 - cmp r0, r1 - moveq r0, #0 - bx lr - arm_func_end sub_02068308 - - arm_func_start sub_02068338 -sub_02068338: ; 0x02068338 - stmdb sp!, {r3, lr} - ldr r0, _0206838C ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - add r2, r0, #0xee0 - mov r0, r1 -_02068350: - strb r0, [r2, r1] - add r1, r1, #1 - cmp r1, #4 - blt _02068350 - ldr r0, _0206838C ; =_020B0B2C - mov r1, #0x98 - ldr r0, [r0, #0x14] - add r0, r0, #0x248 - add r0, r0, #0xc00 - bl MemZero - ldr r0, _0206838C ; =_020B0B2C - ldr r1, [r0, #0x14] - add r0, r1, #0xee0 - str r0, [r1, #0xea8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0206838C: .word _020B0B2C - arm_func_end sub_02068338 - - arm_func_start sub_02068390 -sub_02068390: ; 0x02068390 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - cmp r0, #0x12 - mov r4, #0 - addls pc, pc, r0, lsl #2 - b _020686E4 -_020683AC: ; jump table - b _020683F8 ; case 0 - b _02068468 ; case 1 - b _020684A0 ; case 2 - b _02068510 ; case 3 - b _020684D8 ; case 4 - b _02068548 ; case 5 - b _02068430 ; case 6 - b _02068580 ; case 7 - b _020686E4 ; case 8 - b _020684A0 ; case 9 - b _020685B8 ; case 10 - b _020685E8 ; case 11 - b _02068618 ; case 12 - b _02068634 ; case 13 - b _02068650 ; case 14 - b _020686E4 ; case 15 - b _020686E4 ; case 16 - b _020686E4 ; case 17 - b _02068680 ; case 18 -_020683F8: - ldr r1, _020686F0 ; =_020B0A54 - mov ip, r4 - mov r0, #0xb0 -_02068404: - mul r2, ip, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #0 - movne r2, r4, lsl #1 - strneh ip, [r5, r2] - add ip, ip, #1 - addne r4, r4, #1 - cmp ip, #0x20 - blt _02068404 - b _020686E4 -_02068430: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_0206843C: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #6 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _0206843C - b _020686E4 -_02068468: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_02068474: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #1 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _02068474 - b _020686E4 -_020684A0: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_020684AC: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #2 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _020684AC - b _020686E4 -_020684D8: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_020684E4: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #4 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _020684E4 - b _020686E4 -_02068510: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_0206851C: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #3 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _0206851C - b _020686E4 -_02068548: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_02068554: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #5 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _02068554 - b _020686E4 -_02068580: - ldr r1, _020686F0 ; =_020B0A54 - mov r6, r4 - mov r0, #0xb0 -_0206858C: - mul r2, r6, r0 - ldr r3, [r1] - ldrb r2, [r3, r2] - cmp r2, #7 - moveq r2, r4, lsl #1 - streqh r6, [r5, r2] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #0x20 - blt _0206858C - b _020686E4 -_020685B8: - mov r6, r4 -_020685BC: - mov r0, r6, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205E984 - cmp r0, #0 - moveq r0, r4, lsl #1 - streqh r6, [r5, r0] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #8 - blt _020685BC - b _020686E4 -_020685E8: - mov r6, r4 -_020685EC: - mov r0, r6, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EB00 - cmp r0, #0 - moveq r0, r4, lsl #1 - streqh r6, [r5, r0] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #8 - blt _020685EC - b _020686E4 -_02068618: - mov r0, r4 - bl sub_0205EBF0 - cmp r0, #0 - moveq r0, r4 - streqh r0, [r5] - addeq r4, r4, #1 - b _020686E4 -_02068634: - mov r0, r4 - bl sub_0205EC50 - cmp r0, #0 - moveq r0, r4 - streqh r0, [r5] - addeq r4, r4, #1 - b _020686E4 -_02068650: - mov r6, r4 -_02068654: - mov r0, r6, lsl #0x18 - mov r0, r0, asr #0x18 - bl IsAcceptedMissionSlotEmpty - cmp r0, #0 - moveq r0, r4, lsl #1 - streqh r6, [r5, r0] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #8 - blt _02068654 - b _020686E4 -_02068680: - sub r0, r4, #1 - strb r0, [sp] - bl sub_0204E210 - cmp r0, #2 - bne _020686A8 - add r0, sp, #0 - bl sub_0204F1B4 - cmp r0, #0 - mvneq r0, #0 - streqb r0, [sp] -_020686A8: - ldrsb ip, [sp] - ldr r1, _020686F0 ; =_020B0A54 - mov lr, #2 - mov r0, #0xb0 -_020686B8: - cmp ip, lr - mulne r2, lr, r0 - ldrne r3, [r1] - ldrneb r2, [r3, r2] - cmpne r2, #0 - movne r2, r4, lsl #1 - strneh lr, [r5, r2] - add lr, lr, #1 - addne r4, r4, #1 - cmp lr, #0x20 - blt _020686B8 -_020686E4: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_020686F0: .word _020B0A54 - arm_func_end sub_02068390 - - arm_func_start sub_020686F4 -sub_020686F4: ; 0x020686F4 -#if defined(EUROPE) -#define SUB_020686F4_WORD_OFFSET 2 -#elif defined(JAPAN) -#define SUB_020686F4_WORD_OFFSET -0x3C2 -#else -#define SUB_020686F4_WORD_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x68 - ldr r0, _02068E14 ; =_020B0B2C - mov r4, #0 - ldr r7, [r0, #0x14] - ldr r5, [r7, #4] - cmp r5, #0x15 - addls pc, pc, r5, lsl #2 - b _02068E08 -_02068718: ; jump table - b _02068770 ; case 0 - b _02068770 ; case 1 - b _02068770 ; case 2 - b _02068770 ; case 3 - b _02068770 ; case 4 - b _02068770 ; case 5 - b _02068770 ; case 6 - b _02068770 ; case 7 - b _02068770 ; case 8 - b _02068770 ; case 9 - b _020688D0 ; case 10 - b _02068960 ; case 11 - b _020689F0 ; case 12 - b _02068A6C ; case 13 - b _02068AE8 ; case 14 - b _02068AE8 ; case 15 - b _02068AE8 ; case 16 - b _02068AE8 ; case 17 - b _02068770 ; case 18 - b _02068C48 ; case 19 - b _02068CA4 ; case 20 - b _02068D00 ; case 21 -_02068770: - add r1, r7, #0x188 - mov r0, r5 - add r4, r1, #0xc00 - bl sub_02067584 - cmp r0, #0 - movne r4, #0 - bne _02068E08 - ldr r0, _02068E14 ; =_020B0B2C - add r1, r7, #0xc - ldr r0, [r0, #0x14] - ldr r0, [r0, #4] - bl sub_02068390 - str r0, [r7, #0x6c] - mov r0, #0 - bl sub_0205B77C - bl sub_02068E7C - mov r1, #0 - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - cmp r5, #9 - bgt _02068800 - cmp r5, #0 - addge pc, pc, r5, lsl #2 - b _020688C0 -_020687D8: ; jump table - b _020688C0 ; case 0 - b _020688C0 ; case 1 - b _02068838 ; case 2 - b _0206880C ; case 3 - b _0206880C ; case 4 - b _0206882C ; case 5 - b _020688C0 ; case 6 - b _020688C0 ; case 7 - b _020688C0 ; case 8 - b _02068838 ; case 9 -_02068800: - cmp r5, #0x12 - beq _02068858 - b _020688C0 -_0206880C: - ldr r0, _02068E14 ; =_020B0B2C - ldr r1, _02068E1C ; =_020B0B2E - ldrsb r2, [r0, #2] - ldr r0, _02068E20 ; =0x00003815 - str r2, [r7, #8] - str r1, [r7, #0xef0] - strh r0, [r4, #8] - b _020688C8 -_0206882C: - ldr r0, _02068E24 ; =0x00003817 - strh r0, [r4, #8] - b _020688C8 -_02068838: - ldr r1, _02068E28 ; =0x00003816 - ldr r0, _02068E14 ; =_020B0B2C - strh r1, [r4, #8] - ldrsb r1, [r0, #5] - ldr r0, _02068E2C ; =_020B0B31 - str r1, [r7, #8] - str r0, [r7, #0xef0] - b _020688C8 -_02068858: - ldr r1, _02068E30 ; =0x00003818 - ldr r0, _02068E34 ; =sub_02069598 - strh r1, [r4, #8] - str r0, [r7, #0xe40] - mov r1, #1 - ldr r0, _02068E14 ; =_020B0B2C - strb r1, [r7, #0x7c] - ldrsb r1, [r0, #1] - ldr r0, _02068E38 ; =_020B0B2D - str r1, [r7, #8] - str r0, [r7, #0xef0] - b _020688A4 -_02068888: - bl sub_020693EC - ldrb r0, [r0] - cmp r0, #0 - bne _020688B0 - ldr r0, [r7, #8] - sub r0, r0, #1 - str r0, [r7, #8] -_020688A4: - ldr r0, [r7, #8] - cmp r0, #0 - bgt _02068888 -_020688B0: - ldr r1, [r7, #8] - ldr r0, _02068E14 ; =_020B0B2C - strb r1, [r0, #1] - b _020688C8 -_020688C0: - ldr r0, _02068E3C ; =0x00003F1E - strh r0, [r4, #8] -_020688C8: - mov r4, #1 - b _02068E08 -_020688D0: - add r0, r7, #0x188 - mov r6, r4 - add r5, r0, #0xc00 -_020688DC: - mov r0, r6, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205E984 - cmp r0, #0 - addeq r0, r7, r4, lsl #1 - streqh r6, [r0, #0xc] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #8 - blt _020688DC - str r4, [r7, #0x6c] - cmp r4, #0 - moveq r4, #0 - beq _02068E08 - mov r0, #0 - bl sub_0205E970 - ldr r1, _02068E40 ; =sub_02069074 - mov r2, #0 - bl sub_020690D8 - ldr r1, _02068E44 ; =0x00003819 - ldr r0, _02068E14 ; =_020B0B2C - strh r1, [r5, #8] - ldrsb r2, [r0, #0x12] - ldr r0, _02068E48 ; =_020B0B3E - mov r1, #0 - str r2, [r7, #8] - str r0, [r7, #0xef0] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - mov r4, #1 - b _02068E08 -_02068960: - add r0, r7, #0x188 - mov r6, r4 - add r5, r0, #0xc00 -_0206896C: - mov r0, r6, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EB00 - cmp r0, #0 - addeq r0, r7, r4, lsl #1 - streqh r6, [r0, #0xc] - add r6, r6, #1 - addeq r4, r4, #1 - cmp r6, #8 - blt _0206896C - str r4, [r7, #0x6c] - cmp r4, #0 - moveq r4, #0 - beq _02068E08 - mov r0, #0 - bl sub_0205EAE8 - ldr r1, _02068E40 ; =sub_02069074 - mov r2, #0 - bl sub_020690D8 - ldr r1, _02068E4C ; =0x0000381A - ldr r0, _02068E14 ; =_020B0B2C - strh r1, [r5, #8] - ldrsb r2, [r0, #0x11] - ldr r0, _02068E50 ; =_020B0B3D - mov r1, #0 - str r2, [r7, #8] - str r0, [r7, #0xef0] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - mov r4, #1 - b _02068E08 -_020689F0: - add r1, r7, #0x188 - mov r0, r4 - add r5, r1, #0xc00 - bl sub_0205EBF0 - cmp r0, #0 - moveq r0, r4 - streqh r0, [r7, #0xc] - addeq r4, r4, #1 - str r4, [r7, #0x6c] - cmp r4, #0 - moveq r4, #0 - beq _02068E08 - mov r0, #0 - bl sub_0205EBD8 - ldr r1, _02068E40 ; =sub_02069074 - mov r2, #0 - bl sub_020690D8 - ldr r1, _02068E54 ; =0x0000381B - ldr r0, _02068E14 ; =_020B0B2C - strh r1, [r5, #8] - ldrsb r2, [r0, #0xa] - ldr r0, _02068E58 ; =_020B0B36 - mov r1, #0 - str r2, [r7, #8] - str r0, [r7, #0xef0] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - mov r4, #1 - b _02068E08 -_02068A6C: - add r1, r7, #0x188 - mov r0, r4 - add r5, r1, #0xc00 - bl sub_0205EC50 - cmp r0, #0 - moveq r0, r4 - streqh r0, [r7, #0xc] - addeq r4, r4, #1 - str r4, [r7, #0x6c] - cmp r4, #0 - moveq r4, #0 - beq _02068E08 - mov r0, #0 - bl sub_0205EC38 - ldr r1, _02068E40 ; =sub_02069074 - mov r2, #0 - bl sub_020690D8 - ldr r1, _02068E5C ; =0x0000381C - ldr r0, _02068E14 ; =_020B0B2C - strh r1, [r5, #8] - ldrsb r2, [r0, #0xf] - ldr r0, _02068E60 ; =_020B0B3B - mov r1, #0 - str r2, [r7, #8] - str r0, [r7, #0xef0] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - mov r4, #1 - b _02068E08 -_02068AE8: - add r0, r7, #0x188 - cmp r5, #0x11 - add r8, r0, #0xc00 - bne _02068B74 - bl sub_0204E210 - cmp r0, #1 - bne _02068B74 - mov r6, r4 -_02068B08: - mov r0, r6, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r1, r6, lsl #0x18 - mov r5, r0 - mov r0, r1, asr #0x18 - bl IsAcceptedMissionSlotEmpty - cmp r0, #0 - bne _02068B64 - bl GetAdventureLogDungeonFloor - ldrb r1, [r5, #4] - ldrb r0, [r0] - cmp r1, r0 - bne _02068B58 - ldrb r0, [r5] - cmp r0, #5 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - beq _02068B64 -_02068B58: - add r0, r7, r4, lsl #1 - strh r6, [r0, #0xc] - add r4, r4, #1 -_02068B64: - add r6, r6, #1 - cmp r6, #8 - blt _02068B08 - b _02068BA0 -_02068B74: - mov r5, #0 -_02068B78: - mov r0, r5, lsl #0x18 - mov r0, r0, asr #0x18 - bl IsAcceptedMissionSlotEmpty - cmp r0, #0 - addeq r0, r7, r4, lsl #1 - streqh r5, [r0, #0xc] - add r5, r5, #1 - addeq r4, r4, #1 - cmp r5, #8 - blt _02068B78 -_02068BA0: - str r4, [r7, #0x6c] - cmp r4, #0 - moveq r4, #0 - beq _02068E08 - mov r0, #0 - bl GetAcceptedMission - mov r1, #0 - mov r2, #1 - bl sub_020690D8 - ldr r0, _02068E14 ; =_020B0B2C - ldr r1, [r0, #0x14] - ldr r1, [r1, #4] - cmp r1, #0xe - bne _02068BF4 - ldr r2, _02068E64 ; =0x0000381D - ldr r1, _02068E68 ; =_020B0B2C - strh r2, [r8, #8] - ldrsb r0, [r0] - str r0, [r7, #8] - str r1, [r7, #0xef0] - b _02068C18 -_02068BF4: -#ifdef EUROPE - sub r0, r1, #0xf - cmp r0, #2 - bhi _02068C18 - cmp r1, #0x11 - ldreq r1, _02068E64 ; =0x0000381F - ldr r0, _02068E14 ; =_020B0B2C - ldrne r1, _02068E6C ; =0x00003820 - strh r1, [r8, #8] - ldrsb r1, [r0, #0x13] - ldr r0, _02068E70 ; =_020B0B3F - str r1, [r7, #8] - str r0, [r7, #0xef0] -#else - sub r1, r1, #0xf - cmp r1, #2 - bhi _02068C18 - ldr r2, _02068E6C ; =0x0000381E - ldr r1, _02068E70 ; =_020B0B3F - strh r2, [r8, #8] - ldrsb r0, [r0, #0x13] - str r0, [r7, #8] - str r1, [r7, #0xef0] -#endif -_02068C18: - ldr r1, [r7, #0x6c] - ldr r0, [r7, #8] - mov r4, #1 - cmp r0, r1 - subge r0, r1, #1 - strge r0, [r7, #8] - mov r1, #0 - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - b _02068E08 -_02068C48: - add r0, r7, #0x188 - add r5, r0, #0xc00 - ldr r0, [r7, #0x74] - mov r2, r4 - b _02068C70 -_02068C5C: - add r1, r7, r4, lsl #1 - strh r4, [r1, #0xc] - add r1, r7, r4 - strb r2, [r1, #0x4c] - add r4, r4, #1 -_02068C70: - ldr r1, [r7, #0x6c] - cmp r4, r1 - blt _02068C5C - bl sub_02068E7C - ldr r0, _02068E28 ; =0x00003816 - ldr r1, _02068E34 ; =sub_02069598 - strh r0, [r5, #8] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - mov r4, #1 - strb r4, [r7, #0x7c] - b _02068E08 -_02068CA4: - add r0, r7, #0x188 - add r5, r0, #0xc00 - b _02068CBC -_02068CB0: - add r0, r7, r4, lsl #1 - strh r4, [r0, #0xc] - add r4, r4, #1 -_02068CBC: - ldr r0, [r7, #0x6c] - cmp r4, r0 - blt _02068CB0 - bl sub_0206901C - ldr r0, [r7, #0x74] - ldr r1, _02068E74 ; =sub_020690A4 - mov r2, #0 - bl sub_020690D8 - ldr r0, _02068E6C ; =0x0000381E - mov r1, #0 - strh r0, [r5, #8] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - strb r1, [r7, #0x7c] - mov r4, #1 - b _02068E08 -_02068D00: - add r0, r7, #0x188 - add r6, r0, #0xc00 - b _02068D18 -_02068D0C: - add r0, r7, r4, lsl #1 - strh r4, [r0, #0xc] - add r4, r4, #1 -_02068D18: - ldr r0, [r7, #0x6c] - cmp r4, r0 - blt _02068D0C - mov r8, #0 - str r8, [r7, #0x80] - add r5, sp, #0 - add r4, sp, #0x47 - add fp, sp, #0x48 - mov sb, #0x68 - b _02068DB0 -_02068D40: - add r0, r7, r8, lsl #1 - ldrsh r0, [r0, #0xc] - ldr r2, [r7, #0x74] - mov r1, r5 - add sl, r2, r0, lsl #5 - mov r0, sl - bl GenerateMissionDetailsStruct - mov r0, sl - mov r1, r4 - mov r2, fp - mov r3, #0 - bl sub_02069958 - str sl, [sp, #0x5c] - ldr r1, [r7, #0x80] - add sl, sp, #0 - mla r0, r1, sb, r7 - add lr, r0, #0x84 - mov ip, #6 -_02068D88: - ldmia sl!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02068D88 - ldmia sl, {r0, r1} - stmia lr, {r0, r1} - ldr r0, [r7, #0x80] - add r8, r8, #1 - add r0, r0, #1 - str r0, [r7, #0x80] -_02068DB0: - ldr r0, [r7, #0x6c] - cmp r8, r0 - blt _02068D40 - bl sub_0206901C - mov r1, #0 - ldr r0, _02068E6C ; =0x0000381E - str r1, [r6] - strh r0, [r6, #8] - mov r0, #0x10 - str r0, [r6, #0xc] - mov r0, #0x1a - str r0, [r6, #4] - ldr r0, _02068E18 ; =ChooseMissionTitle - str r1, [r7, #0xe40] - str r0, [r7, #0xe44] - ldr r0, _02068E14 ; =_020B0B2C - strb r1, [r7, #0x7c] - ldrsb r1, [r0, #3] - ldr r0, _02068E78 ; =_020B0B2F - mov r4, #1 - str r1, [r7, #8] - str r0, [r7, #0xef0] -_02068E08: - mov r0, r4 - add sp, sp, #0x68 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02068E14: .word _020B0B2C -_02068E18: .word ChooseMissionTitle -_02068E1C: .word _020B0B2E -_02068E20: .word 0x00003815 + SUB_020686F4_WORD_OFFSET -_02068E24: .word 0x00003817 + SUB_020686F4_WORD_OFFSET -_02068E28: .word 0x00003816 + SUB_020686F4_WORD_OFFSET -_02068E2C: .word _020B0B31 -_02068E30: .word 0x00003818 + SUB_020686F4_WORD_OFFSET -_02068E34: .word sub_02069598 -_02068E38: .word _020B0B2D -#ifdef JAPAN -_02068E3C: .word 0x000038A2 -#else -_02068E3C: .word 0x00003F1E + SUB_020686F4_WORD_OFFSET -#endif -_02068E40: .word sub_02069074 -_02068E44: .word 0x00003819 + SUB_020686F4_WORD_OFFSET -_02068E48: .word _020B0B3E -_02068E4C: .word 0x0000381A + SUB_020686F4_WORD_OFFSET -_02068E50: .word _020B0B3D -_02068E54: .word 0x0000381B + SUB_020686F4_WORD_OFFSET -_02068E58: .word _020B0B36 -_02068E5C: .word 0x0000381C + SUB_020686F4_WORD_OFFSET -_02068E60: .word _020B0B3B -_02068E64: .word 0x0000381D + SUB_020686F4_WORD_OFFSET -_02068E68: .word _020B0B2C -_02068E6C: .word 0x0000381E + SUB_020686F4_WORD_OFFSET -_02068E70: .word _020B0B3F -_02068E74: .word sub_020690A4 -_02068E78: .word _020B0B2F - arm_func_end sub_020686F4 - - arm_func_start sub_02068E7C -sub_02068E7C: ; 0x02068E7C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x68 - ldr r1, _02069018 ; =_020B0B2C - mov r8, r0 - ldr r7, [r1, #0x14] - add r4, r7, #0x188 - bl sub_0206901C - mov r5, #0 - str r5, [r7, #0xd88] - mov r0, #0x10 - str r0, [r4, #0xc0c] - str r5, [r7, #0x80] - b _02068FF4 -_02068EB0: - add r0, r7, r5, lsl #1 - ldrsh r0, [r0, #0xc] - mov r2, #0 - mov r1, #7 - mov r0, r0, lsl #0x18 - mov r3, r0, asr #0x18 - mov r0, #0xb0 - mla r6, r3, r0, r8 - add r0, r6, #4 - strb r2, [sp, #0x46] - strb r2, [sp, #0x48] - str r0, [sp, #8] - strh r2, [sp, #0x10] - strh r2, [sp, #0x12] - strh r2, [sp, #0x14] - strh r2, [sp, #0x16] - strb r1, [sp, #0x1a] - str r2, [sp, #0x5c] - str r6, [sp, #0x64] - bl GetLanguageType - ldrsb r1, [r6, #0x1c] - cmp r1, r0 - movne r0, #0 - strne r0, [sp, #0xc] - strne r0, [sp, #0x54] - strne r0, [sp, #0x58] - bne _02068F34 - add r2, r6, #0x1d - add r1, r6, #0x32 - add r0, r6, #0x56 - str r2, [sp, #0xc] - str r1, [sp, #0x54] - str r0, [sp, #0x58] -_02068F34: - ldr r0, [sp, #0x54] - mov r1, #1 - cmp r0, #0 - ldrneh r0, [r0] - cmpne r0, #0 - movne r1, #0 - cmp r1, #0 - movne r1, #0 - moveq r1, #6 - ldrb r0, [r6] - strb r1, [sp, #0x44] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02068FAC -_02068F6C: ; jump table - b _02068FAC ; case 0 - b _02068FA0 ; case 1 - b _02068FA0 ; case 2 - b _02068FAC ; case 3 - b _02068F88 ; case 4 - b _02068F94 ; case 5 - b _02068F94 ; case 6 -_02068F88: - mov r0, #3 - strb r0, [sp, #0x47] - b _02068FB4 -_02068F94: - mov r0, #4 - strb r0, [sp, #0x47] - b _02068FB4 -_02068FA0: - mov r0, #1 - strb r0, [sp, #0x47] - b _02068FB4 -_02068FAC: - mov r0, #2 - strb r0, [sp, #0x47] -_02068FB4: - ldr r1, [r7, #0x80] - mov r0, #0x68 - mla r0, r1, r0, r7 - add lr, sp, #0 - add ip, r0, #0x84 - mov r6, #6 -_02068FCC: - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r6, r6, #1 - bne _02068FCC - ldmia lr, {r0, r1} - stmia ip, {r0, r1} - ldr r0, [r7, #0x80] - add r5, r5, #1 - add r0, r0, #1 - str r0, [r7, #0x80] -_02068FF4: - ldr r0, [r7, #0x6c] - cmp r5, r0 - blt _02068EB0 - mov r0, #0x10 - str r0, [r4, #0xc0c] - mov r0, #0x1a - str r0, [r4, #0xc04] - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02069018: .word _020B0B2C - arm_func_end sub_02068E7C - - arm_func_start sub_0206901C -sub_0206901C: ; 0x0206901C - stmdb sp!, {r3, lr} - ldr r0, _02069070 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - add r2, r0, #0xe20 - mov r0, r1 -_02069034: - strb r0, [r2, r1] - add r1, r1, #1 - cmp r1, #0x20 - blt _02069034 - ldr r0, _02069070 ; =_020B0B2C - mov r1, #0x98 - ldr r0, [r0, #0x14] - add r0, r0, #0x188 - add r0, r0, #0xc00 - bl MemZero - ldr r0, _02069070 ; =_020B0B2C - ldr r1, [r0, #0x14] - add r0, r1, #0xe20 - str r0, [r1, #0xde8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02069070: .word _020B0B2C - arm_func_end sub_0206901C - - arm_func_start sub_02069074 -sub_02069074: ; 0x02069074 - stmdb sp!, {r4, lr} - mov r4, r1 - bl AlreadyHaveMission - cmp r0, #0 - movne r0, #3 - strneb r0, [r4] - bl CountJobListMissions - cmp r0, #8 - ldrgeb r0, [r4] - orrge r0, r0, #1 - strgeb r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end sub_02069074 - - arm_func_start sub_020690A4 -sub_020690A4: ; 0x020690A4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl AlreadyHaveMission - cmp r0, #0 - bne _020690CC - mov r0, r5 - bl sub_0205FA38 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_020690CC: - mov r0, #3 - strb r0, [r4] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020690A4 - - arm_func_start sub_020690D8 -sub_020690D8: ; 0x020690D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x68 - ldr r3, _020691B4 ; =_020B0B2C - mov sb, r0 - ldr r6, [r3, #0x14] - mov r8, r1 - mov r7, r2 - bl sub_0206901C - mov r5, #0 - str r5, [r6, #0x80] - add r4, r6, #0xe20 - mov fp, #0x68 - b _02069188 -_0206910C: - add r0, r6, r5, lsl #1 - ldrsh r0, [r0, #0xc] - add r1, sp, #0 - add sl, sb, r0, lsl #5 - mov r0, sl - bl GenerateMissionDetailsStruct - mov r0, sl - add r1, sp, #0x47 - add r2, sp, #0x48 - mov r3, r7 - bl sub_02069958 - cmp r8, #0 - beq _0206914C - mov r0, sl - add r1, r4, r5 - blx r8 -_0206914C: - ldr r1, [r6, #0x80] - add sl, sp, #0 - mla r0, r1, fp, r6 - add lr, r0, #0x84 - mov ip, #6 -_02069160: - ldmia sl!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02069160 - ldmia sl, {r0, r1} - stmia lr, {r0, r1} - ldr r0, [r6, #0x80] - add r5, r5, #1 - add r0, r0, #1 - str r0, [r6, #0x80] -_02069188: - ldr r0, [r6, #0x6c] - cmp r5, r0 - blt _0206910C - mov r0, #0 - str r0, [r6, #0xd88] - mov r0, #0x10 - str r0, [r6, #0xd94] - mov r0, #0x1a - str r0, [r6, #0xd8c] - add sp, sp, #0x68 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020691B4: .word _020B0B2C - arm_func_end sub_020690D8 - - arm_func_start sub_020691B8 -sub_020691B8: ; 0x020691B8 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r2, _020692A8 ; =_020B0B2C - mvn r1, #1 - ldr ip, [r2, #0x14] - ldrsb r0, [ip, #0x7d] - cmp r0, r1 - bne _0206926C - ldr r0, [ip, #8] - mov r3, #4 - str r0, [ip, #0xd88] - ldr lr, [r2, #0x14] - ldr r0, _020692AC ; =_020A9288 - ldr r1, [lr, #0xe40] - add r2, lr, #0x188 - str r1, [sp] - ldr ip, [lr, #0x80] - ldr r1, _020692B0 ; =0x00441E33 - str ip, [sp, #4] - str r3, [sp, #8] - ldr r3, [lr, #0xe44] - add r2, r2, #0xc00 - bl CreateCollectionMenu - ldr r3, _020692A8 ; =_020B0B2C - mov r1, #0 - ldr ip, [r3, #0x14] - mov r2, #0xc - strb r0, [ip, #0x7d] - ldr r0, [r3, #0x14] - ldrsb r0, [r0, #0x7d] - bl sub_0202C6F0 - ldr r0, _020692A8 ; =_020B0B2C - mov r1, #1 - ldr r0, [r0, #0x14] - ldrsb r0, [r0, #0x7d] - bl SetCollectionMenuField0x1B2 - ldr r0, _020692A8 ; =_020B0B2C - ldr r1, [r0, #0x14] - ldrb r0, [r1, #0x7c] - cmp r0, #0 - bne _02069290 - ldrsb r0, [r1, #0x7d] - mov r1, #1 - bl sub_0202D07C - b _02069290 -_0206926C: - ldrb r1, [ip, #0xd84] - cmp r1, #0 - beq _0206928C - ldr r1, [ip, #0x80] - mov r2, #4 - mov r3, #0 - bl sub_0202C654 - b _02069290 -_0206928C: - bl sub_0202C620 -_02069290: - ldr r0, _020692A8 ; =_020B0B2C - mov r1, #0 - ldr r0, [r0, #0x14] - strb r1, [r0, #0xd84] - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_020692A8: .word _020B0B2C -_020692AC: .word _020A9288 -_020692B0: .word 0x00441E33 - arm_func_end sub_020691B8 - - arm_func_start sub_020692B4 -sub_020692B4: ; 0x020692B4 - stmdb sp!, {r3, lr} - ldr r0, _020692F8 ; =_020B0B2C - mvn r1, #1 - ldr r0, [r0, #0x14] - ldrsb r0, [r0, #0x7d] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202836C - ldr r0, _020692F8 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldrsb r0, [r0, #0x7d] - bl CloseCollectionMenu - ldr r0, _020692F8 ; =_020B0B2C - mvn r1, #1 - ldr r0, [r0, #0x14] - strb r1, [r0, #0x7d] - ldmia sp!, {r3, pc} - .align 2, 0 -_020692F8: .word _020B0B2C - arm_func_end sub_020692B4 - - arm_func_start sub_020692FC -sub_020692FC: ; 0x020692FC - stmdb sp!, {r3, lr} - ldr r0, _02069378 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r1, [r0, #4] - sub r0, r1, #0xe - cmp r0, #3 - bhi _02069328 - bl sub_02069444 - mov r1, #1 - bl CreateJobSummary - ldmia sp!, {r3, pc} -_02069328: - cmp r1, #0xa - cmpne r1, #0xb - cmpne r1, #0xc - cmpne r1, #0xd - beq _02069348 - sub r0, r1, #0x14 - cmp r0, #1 - bhi _02069358 -_02069348: - bl sub_02069444 - mov r1, #0 - bl CreateJobSummary - ldmia sp!, {r3, pc} -_02069358: - cmp r1, #0x13 - bne _0206936C - bl sub_0206941C - bl sub_02069790 - ldmia sp!, {r3, pc} -_0206936C: - bl sub_020693EC - bl sub_02069790 - ldmia sp!, {r3, pc} - .align 2, 0 -_02069378: .word _020B0B2C - arm_func_end sub_020692FC - - arm_func_start sub_0206937C -sub_0206937C: ; 0x0206937C - stmdb sp!, {r3, lr} - ldr r0, _020693E8 ; =_020B0B2C - ldr r0, [r0, #0x14] - ldr r1, [r0, #4] - cmp r1, #0xa - cmpne r1, #0xb - cmpne r1, #0xc - cmpne r1, #0xd - cmpne r1, #0xe - cmpne r1, #0xf - cmpne r1, #0x10 - cmpne r1, #0x11 - beq _020693BC - sub r0, r1, #0x14 - cmp r0, #1 - bhi _020693C8 -_020693BC: - bl sub_02069444 - bl sub_02069894 - ldmia sp!, {r3, pc} -_020693C8: - cmp r1, #0x13 - bne _020693DC - bl sub_0206941C - bl sub_02069870 - ldmia sp!, {r3, pc} -_020693DC: - bl sub_020693EC - bl sub_02069870 - ldmia sp!, {r3, pc} - .align 2, 0 -_020693E8: .word _020B0B2C - arm_func_end sub_0206937C - - arm_func_start sub_020693EC -sub_020693EC: ; 0x020693EC - ldr r1, _02069414 ; =_020B0B2C - ldr r0, _02069418 ; =_020B0A54 - ldr r3, [r1, #0x14] - ldr r2, [r0] - ldr r1, [r3, #8] - mov r0, #0xb0 - add r1, r3, r1, lsl #1 - ldrsh r1, [r1, #0xc] - smlabb r0, r1, r0, r2 - bx lr - .align 2, 0 -_02069414: .word _020B0B2C -_02069418: .word _020B0A54 - arm_func_end sub_020693EC - - arm_func_start sub_0206941C -sub_0206941C: ; 0x0206941C - ldr r1, _02069440 ; =_020B0B2C - mov r0, #0xb0 - ldr r3, [r1, #0x14] - ldr r1, [r3, #8] - ldr r2, [r3, #0x74] - add r1, r3, r1, lsl #1 - ldrsh r1, [r1, #0xc] - smlabb r0, r1, r0, r2 - bx lr - .align 2, 0 -_02069440: .word _020B0B2C - arm_func_end sub_0206941C - - arm_func_start sub_02069444 -sub_02069444: ; 0x02069444 - stmdb sp!, {r3, lr} - ldr r0, _02069558 ; =_020B0B2C - ldr r2, [r0, #0x14] - ldr r0, [r2, #4] - sub r0, r0, #0xa - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02069550 -_02069464: ; jump table - b _02069494 ; case 0 - b _020694B0 ; case 1 - b _020694CC ; case 2 - b _020694E8 ; case 3 - b _02069504 ; case 4 - b _02069504 ; case 5 - b _02069504 ; case 6 - b _02069504 ; case 7 - b _02069550 ; case 8 - b _02069550 ; case 9 - b _02069520 ; case 10 - b _02069538 ; case 11 -_02069494: - ldr r0, [r2, #8] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205E970 - ldmia sp!, {r3, pc} -_020694B0: - ldr r0, [r2, #8] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EAE8 - ldmia sp!, {r3, pc} -_020694CC: - ldr r0, [r2, #8] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EBD8 - ldmia sp!, {r3, pc} -_020694E8: - ldr r0, [r2, #8] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC38 - ldmia sp!, {r3, pc} -_02069504: - ldr r0, [r2, #8] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldmia sp!, {r3, pc} -_02069520: - ldr r0, [r2, #8] - ldr r1, [r2, #0x74] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - add r0, r1, r0, lsl #5 - ldmia sp!, {r3, pc} -_02069538: - ldr r0, [r2, #8] - ldr r1, [r2, #0x74] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0xc] - add r0, r1, r0, lsl #5 - ldmia sp!, {r3, pc} -_02069550: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02069558: .word _020B0B2C - arm_func_end sub_02069444 - - arm_func_start sub_0206955C -sub_0206955C: ; 0x0206955C - stmdb sp!, {r3, lr} - ldr r0, _02069594 ; =_020B0B2C - mvn r1, #1 - ldr r0, [r0, #0x14] - add r0, r0, #0xd00 - ldrsb r0, [r0, #0x85] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ClosePortraitBox - ldr r0, _02069594 ; =_020B0B2C - mvn r1, #1 - ldr r0, [r0, #0x14] - strb r1, [r0, #0xd85] - ldmia sp!, {r3, pc} - .align 2, 0 -_02069594: .word _020B0B2C - arm_func_end sub_0206955C - - arm_func_start sub_02069598 -sub_02069598: ; 0x02069598 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _0206965C ; =_020B0B2C - tst r0, #0x400 - ldr r5, [r1, #0x14] - beq _02069654 - ldrsb r0, [r5, #0x7d] - ldr r6, [r5, #8] - bl GetWindowIdSelectedMenuItemIdx - ldr r1, [r5, #8] - cmp r1, r0 - bne _0206964C - add r4, r5, #0x4c - ldrb r0, [r4, r6] - cmp r0, #0 - beq _02069600 - mov r0, #6 - bl PlaySeVolumeWrapper - mov r0, #0 - strb r0, [r4, r6] - bl sub_020674E8 - cmp r0, #0 - bne _02069644 - ldrsb r0, [r5, #0x7d] - mov r1, #0 - bl sub_0202D07C - b _02069644 -_02069600: - ldr r0, [r5, #0x78] - cmp r0, #0 - blt _0206961C - bl sub_020674E8 - ldr r1, [r5, #0x78] - cmp r0, r1 - bhs _0206963C -_0206961C: - mov r0, #6 - bl PlaySeVolumeWrapper - ldrsb r0, [r5, #0x7d] - mov r1, #1 - bl sub_0202D07C - mov r0, #1 - strb r0, [r4, r6] - b _02069644 -_0206963C: - mov r0, #2 - bl PlaySeVolumeWrapper -_02069644: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_0206964C: - mov r0, #3 - bl PlaySeVolumeWrapper -_02069654: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0206965C: .word _020B0B2C - arm_func_end sub_02069598 - - arm_func_start ChooseMissionTitle -ChooseMissionTitle: ; 0x02069660 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _020696E4 ; =_020B0B2C - mov r5, r0 - ldr r0, [r3, #0x14] - add r0, r0, r1 - ldrb r0, [r0, #0x4c] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - str r0, [r2] - mov r0, #0x68 - mul r4, r1, r0 - ldr r0, _020696E4 ; =_020B0B2C - ldr r0, [r0, #0x14] - add r0, r0, r4 - ldr r0, [r0, #0xe0] - cmp r0, #0 - beq _020696C4 - bl IsMissionTypeSpecialEpisode - cmp r0, #0 - beq _020696C4 - mov r0, r5 - bl FormatSpecialEpisodeMissionHeader - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_020696C4: - ldr r1, _020696E4 ; =_020B0B2C - mov r0, r5 - ldr r1, [r1, #0x14] - add r1, r1, #0x84 - add r1, r1, r4 - bl FormatMissionHeader - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020696E4: .word _020B0B2C - arm_func_end ChooseMissionTitle - - arm_func_start sub_020696E8 -sub_020696E8: ; 0x020696E8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x154 - mov r4, r0 - add r0, sp, #0x104 - bl InitPreprocessorArgs - bl CountJobListMissions - str r0, [sp, #0x128] - mov r0, #8 - str r0, [sp, #0x12c] - add r3, sp, #0x104 - str r3, [sp] - ldr r2, _0206974C ; =0x00003813 - add r0, sp, #4 - mov r1, #0x100 - mov r3, #0 - bl PreprocessStringFromId - mov r0, r4 - mov r1, #0 - mov r2, #3 - add r3, sp, #4 - bl DrawTextInWindow - mov r0, r4 - bl UpdateWindow - add sp, sp, #0x154 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -#if defined(EUROPE) -_0206974C: .word 0x00003815 -#elif defined(JAPAN) -_0206974C: .word 0x00003451 -#else -_0206974C: .word 0x00003813 -#endif - arm_func_end sub_020696E8 - - arm_func_start sub_02069750 -sub_02069750: ; 0x02069750 - stmdb sp!, {r4, lr} - sub sp, sp, #0x100 - ldr r1, _0206978C ; =0x00003814 - mov r4, r0 - add r0, sp, #0 - bl GetStringFromFileVeneer - add r3, sp, #0 - mov r0, r4 - mov r1, #0 - mov r2, #3 - bl DrawTextInWindow - mov r0, r4 - bl UpdateWindow - add sp, sp, #0x100 - ldmia sp!, {r4, pc} - .align 2, 0 -#if defined(EUROPE) -_0206978C: .word 0x00003816 -#elif defined(JAPAN) -_0206978C: .word 0x00003452 -#else -_0206978C: .word 0x00003814 -#endif - arm_func_end sub_02069750 - - arm_func_start sub_02069790 -sub_02069790: ; 0x02069790 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x14 - mov r1, #8 - bl MemAlloc - ldr r2, _020697F4 ; =_020B0B44 - mov r1, #0x14 - str r0, [r2] - bl MemZero - ldr r0, _020697F4 ; =_020B0B44 - mov ip, #0 - ldr r2, [r0] - ldr r1, _020697F8 ; =JOB_WINDOW_PARAMS_2 - str r4, [r2] - ldr r3, [r0] - ldr r2, _020697FC ; =sub_02069AEC - strh ip, [r3, #8] - ldr r0, [r0] - add r0, r0, #0xc - bl sub_0204707C - ldr r0, _020697F4 ; =_020B0B44 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x10] - ldmia sp!, {r4, pc} - .align 2, 0 -_020697F4: .word _020B0B44 -_020697F8: .word JOB_WINDOW_PARAMS_2 -_020697FC: .word sub_02069AEC - arm_func_end sub_02069790 - - arm_func_start CreateJobSummary -CreateJobSummary: ; 0x02069800 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #0x14 - mov r1, #8 - bl MemAlloc - ldr r2, _02069864 ; =_020B0B44 - mov r1, #0x14 - str r0, [r2] - bl MemZero - ldr r0, _02069864 ; =_020B0B44 - mov ip, #0 - ldr r2, [r0] - ldr r1, _02069868 ; =JOB_WINDOW_PARAMS_2 - str r5, [r2, #4] - ldr r3, [r0] - ldr r2, _0206986C ; =sub_02069CC0 - strh ip, [r3, #8] - ldr r0, [r0] - add r0, r0, #0xc - bl sub_0204707C - ldr r0, _02069864 ; =_020B0B44 - ldr r0, [r0] - strb r4, [r0, #0x10] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02069864: .word _020B0B44 -_02069868: .word JOB_WINDOW_PARAMS_2 -_0206986C: .word sub_02069CC0 - arm_func_end CreateJobSummary - - arm_func_start sub_02069870 -sub_02069870: ; 0x02069870 - ldr r1, _0206988C ; =_020B0B44 - ldr ip, _02069890 ; =sub_02047188 - ldr r2, [r1] - str r0, [r2] - ldr r0, [r1] - add r0, r0, #0xc - bx ip - .align 2, 0 -_0206988C: .word _020B0B44 -_02069890: .word sub_02047188 - arm_func_end sub_02069870 - - arm_func_start sub_02069894 -sub_02069894: ; 0x02069894 - ldr r1, _020698B0 ; =_020B0B44 - ldr ip, _020698B4 ; =sub_02047188 - ldr r2, [r1] - str r0, [r2, #4] - ldr r0, [r1] - add r0, r0, #0xc - bx ip - .align 2, 0 -_020698B0: .word _020B0B44 -_020698B4: .word sub_02047188 - arm_func_end sub_02069894 - - arm_func_start sub_020698B8 -sub_020698B8: ; 0x020698B8 - stmdb sp!, {r3, lr} - ldr r0, _02069900 ; =_020B0B44 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0xc] - cmpne r0, #0 - beq _020698F8 - bl sub_020470D0 - ldr r0, _02069900 ; =_020B0B44 - ldr r0, [r0] - ldr r0, [r0, #0xc] - bl sub_02047148 - mvn r1, #0 - cmp r0, r1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_020698F8: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02069900: .word _020B0B44 - arm_func_end sub_020698B8 - - arm_func_start sub_02069904 -sub_02069904: ; 0x02069904 - stmdb sp!, {r3, lr} - ldr r0, _0206993C ; =_020B0B44 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0xc - bl sub_02047150 - ldr r0, _0206993C ; =_020B0B44 - ldr r0, [r0] - bl MemFree - ldr r0, _0206993C ; =_020B0B44 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0206993C: .word _020B0B44 - arm_func_end sub_02069904 - - arm_func_start sub_02069940 -sub_02069940: ; 0x02069940 - ldr r1, _02069954 ; =_020B0B44 - ldr r1, [r1] - cmp r1, #0 - strneh r0, [r1, #8] - bx lr - .align 2, 0 -_02069954: .word _020B0B44 - arm_func_end sub_02069940 - - arm_func_start sub_02069958 -sub_02069958: ; 0x02069958 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - mov r5, #0 - b _02069AD0 -_02069974: - mov r0, r5, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r4, r0 - ldrb r0, [r4] - cmp r0, #0 - beq _02069ACC - ldrb r1, [sb, #1] - ldrb r0, [r4, #1] - cmp r1, r0 - ldreqb r1, [sb, #2] - ldreqb r0, [r4, #2] - cmpeq r1, r0 - ldreqb r1, [sb, #4] - ldreqb r0, [r4, #4] - cmpeq r1, r0 - ldreqb r1, [sb, #5] - ldreqb r0, [r4, #5] - cmpeq r1, r0 - ldreq r1, [sb, #8] - ldreq r0, [r4, #8] - cmpeq r1, r0 - ldreqsh r1, [sb, #0xe] - ldreqsh r0, [r4, #0xe] - cmpeq r1, r0 - ldreqsh r1, [sb, #0x10] - ldreqsh r0, [r4, #0x10] - cmpeq r1, r0 - ldreqsh r1, [sb, #0x12] - ldreqsh r0, [r4, #0x12] - cmpeq r1, r0 - ldreqsh r1, [sb, #0x14] - ldreqsh r0, [r4, #0x14] - cmpeq r1, r0 - ldreqb r0, [sb, #0x16] - ldreqb r1, [r4, #0x16] - cmpeq r0, r1 - bne _02069ACC - add r1, sb, #0x18 - add r2, r4, #0x18 - bl sub_0205C870 - cmp r0, #0 - beq _02069ACC - add r0, sb, #0x1a - add r1, r4, #0x1a - bl sub_0205C8E0 - cmp r0, #0 - beq _02069ACC - ldrb r0, [r4] - sub r0, r0, #4 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _02069AA4 -_02069A48: ; jump table - b _02069A5C ; case 0 - b _02069A6C ; case 1 - b _02069A88 ; case 2 - b _02069A6C ; case 3 - b _02069A6C ; case 4 -_02069A5C: - mov r0, #1 - strb r0, [r8] - strb r0, [r7] - b _02069ABC -_02069A6C: - cmp r6, #0 - movne r0, #3 - moveq r0, #1 - strb r0, [r8] - mov r0, #2 - strb r0, [r7] - b _02069ABC -_02069A88: - cmp r6, #0 - movne r0, #0 - moveq r0, #1 - strb r0, [r8] - mov r0, #3 - strb r0, [r7] - b _02069ABC -_02069AA4: - cmp r6, #0 - movne r0, #0 - moveq r0, #1 - strb r0, [r8] - mov r0, #0 - strb r0, [r7] -_02069ABC: - cmp r6, #0 - moveq r0, #0 - streqb r0, [r7] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02069ACC: - add r5, r5, #1 -_02069AD0: - cmp r5, #8 - blt _02069974 - mov r0, #2 - strb r0, [r8] - mov r0, #0 - strb r0, [r7] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end sub_02069958 - - arm_func_start sub_02069AEC -sub_02069AEC: ; 0x02069AEC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x68 - ldr r1, _02069CBC ; =_020B0B44 - mov r2, #0 - ldr r1, [r1] - mov r5, r0 - ldr r4, [r1] - add r0, r4, #4 - strb r2, [sp, #0x46] - strh r2, [sp, #0x10] - strh r2, [sp, #0x12] - strh r2, [sp, #0x14] - strh r2, [sp, #0x16] - str r2, [sp, #0x5c] - str r4, [sp, #0x64] - str r0, [sp, #8] - ldrsh r0, [r4, #0xa2] - cmp r0, #0 - moveq r0, #7 - streqb r0, [sp, #0x1a] - beq _02069B60 - mov r0, #2 - strb r0, [sp, #0x1a] - ldrh r0, [r4, #0x9e] - strh r0, [sp, #0x28] - ldrh r0, [r4, #0xa0] - strh r0, [sp, #0x2a] - ldrh r0, [r4, #0xa2] - strh r0, [sp, #0x2c] -_02069B60: - bl GetLanguageType - ldrsb r1, [r4, #0x1c] - cmp r1, r0 - movne r0, #0 - strne r0, [sp, #0xc] - strne r0, [sp, #0x54] - strne r0, [sp, #0x58] - bne _02069B98 - add r2, r4, #0x1d - add r1, r4, #0x32 - add r0, r4, #0x56 - str r2, [sp, #0xc] - str r1, [sp, #0x54] - str r0, [sp, #0x58] -_02069B98: - ldrb r0, [r4] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _02069C00 -_02069BA8: ; jump table - b _02069C00 ; case 0 - b _02069C00 ; case 1 - b _02069C00 ; case 2 - b _02069C00 ; case 3 - b _02069C00 ; case 4 - b _02069BC8 ; case 5 - b _02069BF4 ; case 6 - b _02069BC8 ; case 7 -_02069BC8: - ldr r0, _02069CBC ; =_020B0B44 - ldr r1, [r0] - ldrsh r0, [r1, #8] - cmp r0, #0 - movne r0, #6 - strneb r0, [sp, #0x1a] - ldrnesh r0, [r1, #8] - strneh r0, [sp, #0x3c] - mov r0, #0 - strb r0, [sp, #0x48] - b _02069C50 -_02069BF4: - mov r0, #0 - strb r0, [sp, #0x48] - b _02069C50 -_02069C00: - ldrb r0, [r4, #0xae] - bl sub_0205BD40 - cmp r0, #0 - beq _02069C24 - cmp r0, #1 - beq _02069C30 - cmp r0, #2 - beq _02069C3C - b _02069C48 -_02069C24: - mov r0, #6 - strb r0, [sp, #0x48] - b _02069C50 -_02069C30: - mov r0, #4 - strb r0, [sp, #0x48] - b _02069C50 -_02069C3C: - mov r0, #5 - strb r0, [sp, #0x48] - b _02069C50 -_02069C48: - mov r0, #0 - strb r0, [sp, #0x48] -_02069C50: - ldr r0, [sp, #0x54] - mov r1, #1 - cmp r0, #0 - ldrneh r0, [r0] - cmpne r0, #0 - movne r1, #0 - cmp r1, #0 - movne r1, #0 - moveq r1, #6 - ldr r0, [sp, #0x58] - strb r1, [sp, #0x44] - cmp r0, #0 - ldrneh r0, [r0] - mov r1, #1 - cmpne r0, #0 - movne r1, #0 - cmp r1, #0 - movne r2, #0 - moveq r2, #9 - add r0, sp, #0 - mov r1, r5 - strb r2, [sp, #0x45] - bl MakeMissionDetails - mov r0, r5 - bl UpdateWindow - add sp, sp, #0x68 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02069CBC: .word _020B0B44 - arm_func_end sub_02069AEC - - arm_func_start sub_02069CC0 -sub_02069CC0: ; 0x02069CC0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x68 - ldr r1, _02069D3C ; =_020B0B44 - mov r6, r0 - ldr r0, [r1] - ldr r4, [r0, #4] - ldrb r5, [r0, #0x10] - mov r0, r4 - bl IsMissionTypeSpecialEpisode - cmp r0, #0 - beq _02069CFC - mov r0, r6 - mov r1, r4 - bl MakeSpecialEpisodeMissionDetails - b _02069D2C -_02069CFC: - add r1, sp, #0 - mov r0, r4 - bl GenerateMissionDetailsStruct - add r1, sp, #0x47 - add r2, sp, #0x48 - mov r0, r4 - mov r3, r5 - bl sub_02069958 - add r0, sp, #0 - mov r1, r6 - str r4, [sp, #0x5c] - bl MakeMissionDetails -_02069D2C: - mov r0, r6 - bl UpdateWindow - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02069D3C: .word _020B0B44 - arm_func_end sub_02069CC0 - - arm_func_start sub_02069D40 -sub_02069D40: ; 0x02069D40 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0xc4 - mov r1, #8 - bl MemAlloc - ldr r2, _02069D90 ; =_020B0B48 - mov r1, #0xc4 - str r0, [r2] - bl MemZero - ldr r0, _02069D90 ; =_020B0B48 - mov r2, #0 - ldr r1, [r0] - str r2, [r1] - ldr r1, [r0] - strh r4, [r1, #0xc0] - ldr r1, [r0] - add r0, r1, #0x37 - bic r0, r0, #0x1f - str r0, [r1, #0x14] - ldmia sp!, {r4, pc} - .align 2, 0 -_02069D90: .word _020B0B48 - arm_func_end sub_02069D40 - - arm_func_start sub_02069D94 -sub_02069D94: ; 0x02069D94 - stmdb sp!, {r3, lr} - ldr r0, _02069DBC ; =_020B0B48 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02069DBC ; =_020B0B48 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02069DBC: .word _020B0B48 - arm_func_end sub_02069D94 - - arm_func_start sub_02069DC0 -sub_02069DC0: ; 0x02069DC0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20c - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r5, [r0] - ldr r1, [r5] - cmp r1, #0x3000 - bgt _02069E30 - bge _0206A388 - ldr r0, _0206A5E4 ; =0x00001001 - cmp r1, r0 - bgt _02069E10 - cmp r1, #0x1000 - blt _02069E04 - beq _0206A0AC - cmp r1, r0 - beq _0206A104 - b _0206A5D4 -_02069E04: - cmp r1, #0 - beq _02069E84 - b _0206A5D4 -_02069E10: - cmp r1, #0x2000 - bgt _02069E20 - beq _0206A464 - b _0206A5D4 -_02069E20: - add r0, r0, #0x1000 - cmp r1, r0 - beq _0206A490 - b _0206A5D4 -_02069E30: - cmp r1, #0x4000 - bgt _02069E4C - bge _0206A4A4 - ldr r0, _0206A5E8 ; =0x00003001 - cmp r1, r0 - beq _0206A3A0 - b _0206A5D4 -_02069E4C: - ldr r0, _0206A5EC ; =0x00004004 - cmp r1, r0 - bgt _02069E78 - sub r0, r0, #3 - subs r0, r1, r0 - addpl pc, pc, r0, lsl #2 - b _0206A5D4 -_02069E68: ; jump table - b _0206A4F8 ; case 0 - b _0206A4C4 ; case 1 - b _0206A584 ; case 2 - b _0206A5B0 ; case 3 -_02069E78: - cmp r1, #0x8000 - beq _0206A5C4 - b _0206A5D4 -_02069E84: - add r4, r5, #0x58 - add r5, r5, #0x90 - bl ov03_0233CAA8 - cmp r0, #1 - bne _02069F90 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, [r0] - cmp r1, #0 - movne r0, #1 - strne r0, [r1, #0xc] - mov r0, r4 - mov r1, #0x38 - bl MemZero - mov r0, r5 - mov r1, #0x18 - bl MemZero - ldr r1, _0206A5E0 ; =_020B0B48 - mov r2, #0x18 - ldr r0, [r1] - mov r6, #0x38 - str r2, [r0, #0xa8] - ldr r0, [r1] - ldr r3, _0206A5F0 ; =sub_0206A628 - str r5, [r0, #0xac] - ldr r2, [r1] - mov r0, #0 - str r6, [r2, #0xb0] - ldr r2, [r1] - mov r8, #1 - str r4, [r2, #0xb4] - ldr r2, [r1] - mov r7, #9 - str r3, [r2, #0xb8] - ldr r2, [r1] - mov r3, #0x12 - strb r0, [r2, #0xbc] - ldr r6, [r1] - mov r2, #0x11 - strb r8, [r6, #0x10] - ldr r6, [r1] - ldr r6, [r6, #0x14] - strb r7, [r6] - ldr r1, [r1] - ldr r1, [r1, #0x14] - strb r0, [r1, #1] - strb r3, [r4] - strb r2, [r5] - bl GetLanguageType - strb r0, [r5, #2] - ldrsb r1, [r5, #2] - add r0, r5, #4 - strb r1, [r4, #2] - bl GetMainTeamNameWithCheck - ldrb r0, [r5, #4] - cmp r0, #0 - bne _02069F6C - add r0, r5, #4 - bl SetQuestionMarks -_02069F6C: - add r0, r5, #4 - mov r1, #0x14 - bl ov01_02337B3C - ldr r1, _0206A5E0 ; =_020B0B48 - strb r0, [r5, #3] - ldr r0, [r1] - mov r1, #0x1000 - str r1, [r0] - b _0206A5D4 -_02069F90: - bl ov03_0233CAA8 - cmp r0, #0 - bne _0206A5D4 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, [r0] - cmp r1, #0 - movne r0, #0 - strne r0, [r1, #0xc] - mov r0, r4 - mov r1, #0x38 - bl MemZero - mov r0, r5 - mov r1, #0x18 - bl MemZero - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r0, [r0] - ldrsh r0, [r0, #0xc0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov sl, r0 - add sb, r4, #0x18 - ldmia sl!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - ldmia sl, {r0, r1, r2, r3} - ldr ip, _0206A5E0 ; =_020B0B48 - stmia sb, {r0, r1, r2, r3} - ldr r0, [ip] - mov r8, #0x38 - str r8, [r0, #0xa8] - ldr r0, [ip] - mov r7, #0x18 - str r4, [r0, #0xac] - ldr r0, [ip] - ldr r6, _0206A5F4 ; =_02337B68 - str r7, [r0, #0xb0] - ldr r0, [ip] - mov lr, #0 - str r5, [r0, #0xb4] - ldr r0, [ip] - mov fp, #9 - str r6, [r0, #0xb8] - ldr r0, [ip] - strb lr, [r0, #0xbc] - ldr r0, [ip] - strb lr, [r0, #0x10] - ldr r0, [ip] - ldr r0, [r0, #0x14] - strb fp, [r0] - ldr r0, [ip] - ldr r0, [r0, #0x14] - strb lr, [r0, #1] - mov r0, #0x12 - strb r0, [r4] - mov r0, #0x11 - strb r0, [r5] - bl GetLanguageType - strb r0, [r5, #2] - ldrsb r1, [r5, #2] - add r0, r4, #4 - strb r1, [r4, #2] - bl GetMainTeamNameWithCheck - add r0, r4, #4 - mov r1, #0x34 - bl ov01_02337B3C - strb r0, [r4, #3] - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x1000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A0AC: - add r0, r5, #0xa8 - mov r4, #1 - str r0, [sp, #0xac] - str r4, [sp, #0xa8] - ldr r1, [r5, #0xc] - add r0, sp, #0xa8 - str r1, [sp, #0xb8] - ldrb r3, [r5, #0x10] - mov r2, #0x20 - mov r1, #0 - strb r3, [sp, #0xbc] - ldr r3, [r5, #0x14] - str r3, [sp, #0xc0] - strh r2, [sp, #0xc4] - strb r1, [sp, #0xc6] - str r4, [sp, #0xc8] - bl ov01_02337BA0 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A5E4 ; =0x00001001 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A104: - bl ov01_02337E0C - movs r4, r0 - beq _0206A5D4 - bl ov01_02337C54 - cmp r4, #0xe - addls pc, pc, r4, lsl #2 - b _0206A5D4 -_0206A120: ; jump table - b _0206A5D4 ; case 0 - b _0206A380 ; case 1 - b _0206A5D4 ; case 2 - b _0206A5D4 ; case 3 - b _0206A15C ; case 4 - b _0206A380 ; case 5 - b _0206A380 ; case 6 - b _0206A380 ; case 7 - b _0206A380 ; case 8 - b _0206A380 ; case 9 - b _0206A380 ; case 10 - b _0206A380 ; case 11 - b _0206A380 ; case 12 - b _0206A380 ; case 13 - b _0206A380 ; case 14 -_0206A15C: - bl ov03_0233CAA8 - cmp r0, #1 - bne _0206A300 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r0, [r0] - add r0, r0, #0x70 - bl IsMissionTypeSpecialEpisode - cmp r0, #0 - beq _0206A244 - mov r0, #2 - bl IsSpecialEpisodeOpen - cmp r0, #0 - beq _0206A1B0 - ldr r1, _0206A5F8 ; =0x000037A8 - mov r0, #0x1c - bl ov03_0233CDC8 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A5FC ; =0x00002001 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A1B0: - add r0, sp, #0x1bc - bl InitPreprocessorArgs - mov r0, #2 - mov r1, #1 - bl SetSpecialEpisodeOpen - add r0, sp, #0x7e - mov r1, #0x2a - bl MemZero - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r4, [r0] - bl GetLanguageType - ldrsb r1, [r4, #0x5a] - cmp r1, r0 - add r0, sp, #0x7e - bne _0206A1FC - add r1, r4, #0x5c - mov r2, #0x14 - bl StrncpySimpleNoPadSafe - b _0206A204 -_0206A1FC: - ldr r1, _0206A600 ; =0x000038C9 - bl GetStringFromFileVeneer -_0206A204: - ldr r1, _0206A604 ; =0x0000379F - add r3, sp, #0x7e - add r2, sp, #0x1bc - mov r0, #0x1c - str r3, [sp, #0x1f4] - bl ov03_0233CDD8 - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x70 - bl CreateJobSummary - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x2000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A244: - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r0, [r0] - add r0, r0, #0x70 - bl AddMissionToJobList - cmp r0, #0 - bne _0206A2EC - bl sub_0205F5A8 - bl sub_0205F710 - add r0, sp, #0x16c - bl InitPreprocessorArgs - add r0, sp, #0x54 - mov r1, #0x2a - bl MemZero - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r4, [r0] - bl GetLanguageType - ldrsb r1, [r4, #0x5a] - cmp r1, r0 - add r0, sp, #0x54 - bne _0206A2A4 - add r1, r4, #0x5c - mov r2, #0x14 - bl StrncpySimpleNoPadSafe - b _0206A2AC -_0206A2A4: - ldr r1, _0206A600 ; =0x000038C9 - bl GetStringFromFileVeneer -_0206A2AC: - ldr r1, _0206A604 ; =0x0000379F - add r3, sp, #0x54 - add r2, sp, #0x16c - mov r0, #0x1c - str r3, [sp, #0x1a4] - bl ov03_0233CDD8 - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x70 - bl CreateJobSummary - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x2000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A2EC: - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x3000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A300: - bl ov03_0233CAA8 - cmp r0, #0 - bne _0206A5D4 - add r0, sp, #0x11c - bl InitPreprocessorArgs - add r0, sp, #0x2a - mov r1, #0x2a - bl MemZero - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r4, [r0] - bl GetLanguageType - ldrsb r1, [r4, #0x92] - cmp r1, r0 - add r0, sp, #0x2a - bne _0206A34C - add r1, r4, #0x94 - mov r2, #0x14 - bl StrncpySimpleNoPadSafe - b _0206A354 -_0206A34C: - ldr r1, _0206A600 ; =0x000038C9 - bl GetStringFromFileVeneer -_0206A354: - ldr r1, _0206A608 ; =0x00003793 - add r3, sp, #0x2a - add r2, sp, #0x11c - mov r0, #0x1c - str r3, [sp, #0x154] - bl ov03_0233CDD8 - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x8000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A380: - mov r0, #1 - b _0206A5D8 -_0206A388: - bl ov03_0233CAD8 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A5E8 ; =0x00003001 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A3A0: - bl ov03_0233CB3C - cmp r0, #2 - bne _0206A450 - bl ov03_0233CB10 - add r0, sp, #0xcc - bl InitPreprocessorArgs - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r0, [r0] - add r0, r0, #0x70 - bl AddMissionToJobList - bl sub_0205F5A8 - bl sub_0205F710 - add r0, sp, #0 - mov r1, #0x2a - bl MemZero - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r4, [r0] - bl GetLanguageType - ldrsb r1, [r4, #0x5a] - cmp r1, r0 - add r0, sp, #0 - bne _0206A408 - add r1, r4, #0x5c - mov r2, #0x14 - bl StrncpySimpleNoPadSafe - b _0206A410 -_0206A408: - ldr r1, _0206A600 ; =0x000038C9 - bl GetStringFromFileVeneer -_0206A410: - ldr r1, _0206A604 ; =0x0000379F - add r3, sp, #0 - add r2, sp, #0xcc - mov r0, #0x1c - str r3, [sp, #0x104] - bl ov03_0233CDD8 - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x70 - bl CreateJobSummary - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x2000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A450: - cmp r0, #1 - bne _0206A5D4 - bl ov03_0233CB10 - mov r0, #1 - b _0206A5D8 -_0206A464: - bl ov03_0233CDE4 - mov r4, r0 - bl sub_020698B8 - cmp r4, #0x12 - bne _0206A5D4 - bl sub_02069904 - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x4000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A490: - bl ov03_0233CDE4 - cmp r0, #0x12 - bne _0206A5D4 - mov r0, #1 - b _0206A5D8 -_0206A4A4: - ldr r1, _0206A60C ; =0x0000023B - mov r0, #0 - bl ov03_0233CDC8 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A610 ; =0x00004002 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A4C4: - bl ov03_0233CDE4 - cmp r0, #0x12 - bne _0206A5D4 - mov r0, #0xe0 - mov r1, #0x88 - mov r2, #1 - bl sub_02029F88 - bl sub_02003B94 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A614 ; =0x00004001 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A4F8: - mov r0, #3 - bl NoteSaveBase - mov r4, r0 - bl sub_02003BC8 - bl sub_02029FBC - cmp r4, #0 - bne _0206A558 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r0, [r0] - add r0, r0, #0x70 - bl IsMissionTypeSpecialEpisode - cmp r0, #0 - mov r0, #0x1c - beq _0206A53C - ldr r1, _0206A618 ; =0x0000379E - bl ov03_0233CDC8 - b _0206A544 -_0206A53C: -#ifdef JAPAN - ldr r1, _0206A90C ; =0x000004CD -#else - mov r1, #0x23c -#endif - bl ov03_0233CDC8 -_0206A544: - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A61C ; =0x00004003 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A558: - cmp r4, #1 - moveq r0, #3 - beq _0206A5D8 - ldr r1, _0206A620 ; =0x00000239 - mov r0, #0x1c - bl ov03_0233CDC8 - ldr r0, _0206A5E0 ; =_020B0B48 - ldr r1, _0206A5EC ; =0x00004004 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A584: - bl ov03_0233CDE4 - cmp r0, #0x12 - bne _0206A5D4 - ldr r1, _0206A624 ; =0x000037A0 - mov r0, #0x1c - bl ov03_0233CDC8 - ldr r0, _0206A5E0 ; =_020B0B48 - mov r1, #0x8000 - ldr r0, [r0] - str r1, [r0] - b _0206A5D4 -_0206A5B0: - bl ov03_0233CDE4 - cmp r0, #0x12 - bne _0206A5D4 - mov r0, #1 - b _0206A5D8 -_0206A5C4: - bl ov03_0233CDE4 - cmp r0, #0x12 - moveq r0, #2 - beq _0206A5D8 -_0206A5D4: - mov r0, #0 -_0206A5D8: - add sp, sp, #0x20c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#if defined(EUROPE) -#define SUB_02069DC0_OFFSET 2 -#elif defined(JAPAN) -#define SUB_02069DC0_OFFSET -0x37E -#else -#define SUB_02069DC0_OFFSET 0 -#endif -_0206A5E0: .word _020B0B48 -_0206A5E4: .word 0x00001001 -_0206A5E8: .word 0x00003001 -_0206A5EC: .word 0x00004004 -_0206A5F0: .word sub_0206A628 -_0206A5F4: .word ov01_02337B68 -_0206A5F8: .word 0x000037A8 + SUB_02069DC0_OFFSET -_0206A5FC: .word 0x00002001 -#ifdef JAPAN -_0206A600: .word 0x00003507 -#else -_0206A600: .word 0x000038C9 + SUB_02069DC0_OFFSET -#endif -_0206A604: .word 0x0000379F + SUB_02069DC0_OFFSET -_0206A608: .word 0x00003793 + SUB_02069DC0_OFFSET -#ifdef JAPAN -_0206A60C: .word 0x000004CC -#else -_0206A60C: .word 0x0000023B -#endif -_0206A610: .word 0x00004002 -_0206A614: .word 0x00004001 -_0206A618: .word 0x0000379E + SUB_02069DC0_OFFSET -#ifdef JAPAN -_0206A90C: .word 0x000004CD -_0206A61C: .word 0x00004003 -_0206A620: .word 0x000004CA -#else -_0206A61C: .word 0x00004003 -_0206A620: .word 0x00000239 -#endif -_0206A624: .word 0x000037A0 + SUB_02069DC0_OFFSET - arm_func_end sub_02069DC0 - - arm_func_start sub_0206A628 -sub_0206A628: ; 0x0206A628 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov03_0233CAA8 - cmp r0, #1 - bne _0206A70C - add r0, r4, #4 - mov r1, #0x34 - bl ov01_02337B3C - ldrb r1, [r4, #3] - cmp r0, r1 - movne r0, #3 - ldmneia sp!, {r4, pc} - ldrb r0, [r4] - cmp r0, #0x12 - movne r0, #2 - ldmneia sp!, {r4, pc} - add r0, r4, #0x18 - bl IsMissionTypeSpecialEpisode - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - add r0, r4, #0x18 - bl sub_0205D1F4 - cmp r0, #0 - moveq r0, #6 - ldmeqia sp!, {r4, pc} - ldrsh r0, [r4, #0x2c] - mov r1, #1 - bl CanSendItem - cmp r0, #0 - moveq r0, #6 - ldmeqia sp!, {r4, pc} - ldrb r0, [r4, #0x2e] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0206A6E4 -_0206A6B8: ; jump table - b _0206A6E4 ; case 0 - b _0206A6CC ; case 1 - b _0206A6CC ; case 2 - b _0206A6CC ; case 3 - b _0206A6CC ; case 4 -_0206A6CC: - ldrsh r0, [r4, #0x30] - mov r1, #1 - bl CanSendItem - cmp r0, #0 - moveq r0, #6 - ldmeqia sp!, {r4, pc} -_0206A6E4: - add r0, r4, #0x18 - bl AlreadyHaveMission - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - add r0, r4, #0x18 - bl sub_0205FA38 - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} -_0206A70C: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end sub_0206A628 diff --git a/asm/main_020664B8.s b/asm/main_020664B8.s new file mode 100644 index 00000000..e62a2235 --- /dev/null +++ b/asm/main_020664B8.s @@ -0,0 +1,4996 @@ + .include "asm/macros.inc" + .include "main_020664B8.inc" + + .text + + arm_func_start sub_020664B8 +sub_020664B8: ; 0x020664B8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_020676AC + ldr r2, _0206650C ; =_020B0B24 + mov r3, #0 + mov r0, #0xa8 + mov r1, #8 + strb r3, [r2] + bl MemAlloc + ldr r2, _0206650C ; =_020B0B24 + mov r1, #0xa8 + str r0, [r2, #4] + bl MemZero + ldr r1, _0206650C ; =_020B0B24 + mov r2, #0 + ldr r3, [r1, #4] + mov r0, #1 + str r4, [r3, #8] + ldr r1, [r1, #4] + str r2, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0206650C: .word _020B0B24 + arm_func_end sub_020664B8 + + arm_func_start sub_02066510 +sub_02066510: ; 0x02066510 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xc + ldr r0, _02066874 ; =_020B0B24 + ldr r1, [r0, #4] + ldr r0, [r1] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02066868 +_02066530: ; jump table + b _02066544 ; case 0 + b _02066640 ; case 1 + b _02066700 ; case 2 + b _02066708 ; case 3 + b _02066724 ; case 4 +_02066544: + mov r2, #0 + add r1, r1, #0xa4 + mov r0, r2 +_02066550: + strb r0, [r1, r2] + add r2, r2, #1 + cmp r2, #4 + blt _02066550 + ldr r0, _02066874 ; =_020B0B24 + mov r1, #0x98 + ldr r0, [r0, #4] + add r0, r0, #0xc + bl MemZero + ldr r0, _02066874 ; =_020B0B24 + ldr r2, [r0, #4] + add r1, r2, #0xa4 + str r1, [r2, #0x6c] + ldr r0, [r0, #4] + ldr r0, [r0, #8] + cmp r0, #0 + bne _020665B4 + ldr r4, _02066878 ; =JOB_MENU_ITEMS_1 + bl sub_0205E954 + cmp r0, #0 + ldreq r0, _02066874 ; =_020B0B24 + moveq r1, #3 + ldreq r0, [r0, #4] + streqb r1, [r0, #0xa4] + b _020665D8 +_020665B4: + cmp r0, #1 + bne _020665D8 + ldr r4, _0206687C ; =JOB_MENU_ITEMS_2 + bl sub_0205EAC8 + cmp r0, #0 + ldreq r0, _02066874 ; =_020B0B24 + moveq r1, #3 + ldreq r0, [r0, #4] + streqb r1, [r0, #0xa4] +_020665D8: + bl CountJobListMissions + cmp r0, #0 + ldreq r0, _02066874 ; =_020B0B24 + moveq r1, #3 + ldreq r0, [r0, #4] + ldr r3, _02066874 ; =_020B0B24 + streqb r1, [r0, #0xa5] + ldrsb r2, [r3] + ldr ip, [r3, #4] + mov r1, #0 + add r2, r4, r2, lsl #3 + ldr lr, [r2, #4] + ldr r0, _02066880 ; =JOB_WINDOW_PARAMS_1 + str lr, [ip, #0xc] + str r4, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r3, [r3, #4] + ldr r2, _02066884 ; =0x00000233 + add r3, r3, #0xc + bl sub_02046A20 + ldr r0, _02066874 ; =_020B0B24 + mov r1, #1 + ldr r0, [r0, #4] + str r1, [r0] + b _02066868 +_02066640: + bl sub_02046B04 + mov r4, r0 + mvn r1, #1 + cmp r4, r1 + moveq r4, #4 + beq _02066674 + sub r0, r1, #1 + cmp r4, r0 + moveq r4, #4 + beq _02066674 + add r0, r1, #1 + cmp r4, r0 + moveq r4, #0 +_02066674: + bl sub_02046BA0 + ldr r1, _02066874 ; =_020B0B24 + cmp r4, #1 + strb r0, [r1] + bne _020666A4 + ldr r0, [r1, #4] + mov r2, #0xa + str r2, [r0, #4] + ldr r0, [r1, #4] + mov r1, #3 + str r1, [r0] + b _02066868 +_020666A4: + cmp r4, #2 + bne _020666C8 + ldr r0, [r1, #4] + mov r2, #0xb + str r2, [r0, #4] + ldr r0, [r1, #4] + mov r1, #3 + str r1, [r0] + b _02066868 +_020666C8: + cmp r4, #3 + bne _020666EC + ldr r0, [r1, #4] + mov r2, #0xe + str r2, [r0, #4] + ldr r0, [r1, #4] + mov r1, #3 + str r1, [r0] + b _02066868 +_020666EC: + cmp r4, #4 + ldreq r0, [r1, #4] + moveq r1, #2 + streq r1, [r0] + b _02066868 +_02066700: + mov r0, #1 + b _0206686C +_02066708: + ldr r0, [r1, #4] + bl sub_020668B4 + ldr r0, _02066874 ; =_020B0B24 + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0] + b _02066868 +_02066724: + bl sub_02066A44 + movs r4, r0 + beq _02066868 + bl sub_02067664 + add r0, r4, #1 + cmp r0, #0x17 + addls pc, pc, r0, lsl #2 + b _02066868 +_02066744: ; jump table + b _02066858 ; case 0 + b _02066868 ; case 1 + b _020667A4 ; case 2 + b _02066868 ; case 3 + b _020667B8 ; case 4 + b _020667C0 ; case 5 + b _020667C8 ; case 6 + b _020667D0 ; case 7 + b _020667D8 ; case 8 + b _020667E0 ; case 9 + b _020667E8 ; case 10 + b _020667F0 ; case 11 + b _020667F8 ; case 12 + b _02066800 ; case 13 + b _02066808 ; case 14 + b _02066810 ; case 15 + b _02066818 ; case 16 + b _02066820 ; case 17 + b _02066828 ; case 18 + b _02066830 ; case 19 + b _02066838 ; case 20 + b _02066840 ; case 21 + b _02066848 ; case 22 + b _02066850 ; case 23 +_020667A4: + ldr r0, _02066874 ; =_020B0B24 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0] + b _02066868 +_020667B8: + mov r0, #2 + b _0206686C +_020667C0: + mov r0, #3 + b _0206686C +_020667C8: + mov r0, #4 + b _0206686C +_020667D0: + mov r0, #5 + b _0206686C +_020667D8: + mov r0, #6 + b _0206686C +_020667E0: + mov r0, #7 + b _0206686C +_020667E8: + mov r0, #8 + b _0206686C +_020667F0: + mov r0, #9 + b _0206686C +_020667F8: + mov r0, #0xa + b _0206686C +_02066800: + mov r0, #0xb + b _0206686C +_02066808: + mov r0, #0xc + b _0206686C +_02066810: + mov r0, #0xd + b _0206686C +_02066818: + mov r0, #0xe + b _0206686C +_02066820: + mov r0, #0xf + b _0206686C +_02066828: + mov r0, #0x10 + b _0206686C +_02066830: + mov r0, #0x11 + b _0206686C +_02066838: + mov r0, #0x12 + b _0206686C +_02066840: + mov r0, #0x13 + b _0206686C +_02066848: + mov r0, #0x14 + b _0206686C +_02066850: + mov r0, #0x15 + b _0206686C +_02066858: + ldr r0, _02066874 ; =_020B0B24 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0] +_02066868: + mov r0, #0 +_0206686C: + add sp, sp, #0xc + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02066874: .word _020B0B24 +_02066878: .word JOB_MENU_ITEMS_1 +_0206687C: .word JOB_MENU_ITEMS_2 +_02066880: .word JOB_WINDOW_PARAMS_1 +_02066884: .word 0x00000233 + arm_func_end sub_02066510 + + arm_func_start sub_02066888 +sub_02066888: ; 0x02066888 + stmdb sp!, {r3, lr} + ldr r0, _020668B0 ; =_020B0B24 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _020668B0 ; =_020B0B24 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_020668B0: .word _020B0B24 + arm_func_end sub_02066888 + + arm_func_start sub_020668B4 +sub_020668B4: ; 0x020668B4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + sub r0, r5, #0x13 + cmp r0, #2 + movls r0, #0 + ldmlsia sp!, {r3, r4, r5, pc} + ldr r0, _02066988 ; =0x00000EF8 + mov r1, #8 + bl MemAlloc + ldr r2, _0206698C ; =_020B0B2C + ldr r1, _02066988 ; =0x00000EF8 + str r0, [r2, #0x14] + bl MemZero + ldr r0, _0206698C ; =_020B0B2C + mov r2, #0 + ldr r4, [r0, #0x14] + mov r1, r2 +_020668F8: + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #0x4c] + cmp r2, #0x20 + blt _020668F8 + ldr r0, _0206698C ; =_020B0B2C + ldr r0, [r0, #0x14] + str r5, [r0, #4] + str r1, [r4, #8] + str r1, [r4, #0xef0] + bl sub_020686F4 + mov r2, #0 + str r2, [r4, #0x74] + sub r1, r2, #1 + str r1, [r4, #0x78] + cmp r0, #0 + bne _0206695C + bl sub_020692B4 + ldr r0, _0206698C ; =_020B0B2C + ldr r0, [r0, #0x14] + bl MemFree + ldr r1, _0206698C ; =_020B0B2C + mov r0, #0 + str r0, [r1, #0x14] + ldmia sp!, {r3, r4, r5, pc} +_0206695C: + sub r0, r2, #2 + strb r0, [r4, #0x7d] + bl sub_020692FC + mvn r1, #1 + ldr r0, _0206698C ; =_020B0B2C + strb r1, [r4, #0xd85] + ldr r0, [r0, #0x14] + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02066988: .word 0x00000EF8 +_0206698C: .word _020B0B2C + arm_func_end sub_020668B4 + + arm_func_start sub_02066990 +sub_02066990: ; 0x02066990 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + ldr r0, _02066A3C ; =0x00000EF8 + mov r1, #8 + mov r6, r2 + mov r5, r3 + bl MemAlloc + ldr r2, _02066A40 ; =_020B0B2C + ldr r1, _02066A3C ; =0x00000EF8 + str r0, [r2, #0x14] + bl MemZero + ldr r0, _02066A40 ; =_020B0B2C + mov r1, #0 + ldr r4, [r0, #0x14] + str r8, [r4, #4] + str r7, [r4, #0x74] + str r6, [r4, #0x6c] + str r5, [r4, #0x78] + str r1, [r4, #8] + str r1, [r4, #0xef0] + bl sub_020686F4 + cmp r0, #0 + bne _02066A10 + bl sub_020692B4 + ldr r0, _02066A40 ; =_020B0B2C + ldr r0, [r0, #0x14] + bl MemFree + ldr r1, _02066A40 ; =_020B0B2C + mov r0, #0 + str r0, [r1, #0x14] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02066A10: + mvn r0, #1 + strb r0, [r4, #0x7d] + bl sub_020692FC + mvn r1, #1 + ldr r0, _02066A40 ; =_020B0B2C + strb r1, [r4, #0xd85] + ldr r0, [r0, #0x14] + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02066A3C: .word 0x00000EF8 +_02066A40: .word _020B0B2C + arm_func_end sub_02066990 + + arm_func_start sub_02066A44 +sub_02066A44: ; 0x02066A44 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + ldr r0, _020674A0 ; =_020B0B2C + ldr r6, [r0, #0x14] + ldr r0, [r6] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02067494 +_02066A64: ; jump table + b _02066A80 ; case 0 + b _02066B08 ; case 1 + b _02066DA4 ; case 2 + b _02066DAC ; case 3 + b _020672F4 ; case 4 + b _02067374 ; case 5 + b _02067474 ; case 6 +_02066A80: + bl sub_020691B8 + ldr r0, _020674A0 ; =_020B0B2C + mov r2, #1 + ldr r1, [r0, #0x14] + str r2, [r1] + ldr r1, [r6, #0xee4] + cmp r1, #0 + bne _02066AF4 + ldr r1, [r0, #0x14] + ldr r0, [r1, #4] + sub r0, r0, #0xa + cmp r0, #3 + bhi _02066AC8 + add r0, r1, #0x2e4 + ldr r1, _020674A4 ; =_020A92A8 + ldr r2, _020674A8 ; =sub_020696E8 + add r0, r0, #0xc00 + bl sub_0204707C +_02066AC8: + ldr r0, _020674A0 ; =_020B0B2C + ldr r1, [r0, #0x14] + ldr r0, [r1, #4] + cmp r0, #0xe + bne _02067494 + add r0, r1, #0x2e4 + ldr r1, _020674A4 ; =_020A92A8 + ldr r2, _020674AC ; =sub_02069750 + add r0, r0, #0xc00 + bl sub_0204707C + b _02067494 +_02066AF4: + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047188 + b _02067494 +_02066B08: + ldrsb r0, [r6, #0x7d] + bl GetWindowIdSelectedMenuItemIdx + ldr r1, [r6, #0xef0] + mov r4, r0 + cmp r1, #0 + strneb r4, [r1] + ldrsb r0, [r6, #0x7d] + bl IsCollectionMenuActive + cmp r0, #0 + bne _02066D68 + ldrsb r0, [r6, #0x7d] + bl sub_0202C75C + movs r5, r0 + bpl _02066BAC + mov r2, #0 + mov r1, r2 + b _02066B58 +_02066B4C: + add r0, r6, r2 + strb r1, [r0, #0x4c] + add r2, r2, #1 +_02066B58: + ldr r0, [r6, #0x6c] + cmp r2, r0 + blt _02066B4C + mvn r0, #0 + str r0, [r6, #8] + bl sub_020692B4 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r0, [r0, #4] + sub r0, r0, #0xa + cmp r0, #3 + bhi _02066BA4 + bl sub_0205F5A8 + bl sub_0205F710 +_02066BA4: + mvn r0, #0 + b _02067498 +_02066BAC: + bl sub_020674E8 + cmp r0, #0 + beq _02066BE8 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r0, [r0, #4] + sub r0, r0, #0x12 + cmp r0, #1 + bhi _02066D68 + bl sub_020692B4 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #2 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02066D68 +_02066BE8: + ldr r3, [r6, #8] + cmp r3, r5 + bne _02066D64 + ldr r0, _020674A0 ; =_020B0B2C + ldr r1, [r0, #0x14] + ldr r2, [r1, #4] + cmp r2, #0xe + cmpne r2, #0xf + cmpne r2, #0x11 + moveq r0, #2 + streq r0, [r1] + beq _02066D68 + sub r1, r2, #0xa + cmp r1, #3 + bhi _02066CF4 + bl CountJobListMissions + cmp r0, #8 + bge _02066CEC + ldr r1, _020674A0 ; =_020B0B2C + mov r0, #0 + ldr r1, [r1, #0x14] + ldr r1, [r1, #4] + sub r1, r1, #0xa + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _02066CCC +_02066C50: ; jump table + b _02066C60 ; case 0 + b _02066C7C ; case 1 + b _02066C98 ; case 2 + b _02066CB4 ; case 3 +_02066C60: + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205E970 + b _02066CCC +_02066C7C: + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EAE8 + b _02066CCC +_02066C98: + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EBD8 + b _02066CCC +_02066CB4: + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC38 +_02066CCC: + bl AddMissionToJobList + bl sub_020686F4 + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047188 +_02066CEC: + bl sub_020691B8 + b _02066D68 +_02066CF4: + cmp r2, #0x10 + bne _02066D04 + bl sub_020691B8 + b _02066D68 +_02066D04: + sub r1, r2, #0x12 + cmp r1, #1 + bhi _02066D30 + add r1, r6, r3 + mov r2, #1 + strb r2, [r1, #0x4c] + ldr r0, [r0, #0x14] + mov r1, #2 + str r1, [r0] + bl sub_020692B4 + b _02066D68 +_02066D30: + cmp r2, #9 + cmpne r2, #0x14 + cmpne r2, #4 + bne _02066D58 + bl sub_020692B4 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #2 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02066D68 +_02066D58: + bl sub_020692B4 + mov r0, #1 + b _02067498 +_02066D64: + bl sub_020691B8 +_02066D68: + bl sub_020698B8 + cmp r0, #0 + beq _02066D90 + cmp r4, #0 + blt _02066D90 + ldr r0, [r6, #8] + cmp r0, r4 + beq _02066D90 + str r4, [r6, #8] + bl sub_0206937C +_02066D90: + ldr r0, [r6, #0xee4] + cmp r0, #0 + beq _02067494 + bl sub_020470D0 + b _02067494 +_02066DA4: + bl sub_02067708 + b _02067494 +_02066DAC: + bl sub_02046B04 + bl sub_02068308 + ldr r1, [r6, #0xef4] + mov r4, r0 + cmp r1, #0 + beq _02066DD0 + bl sub_02046BA0 + ldr r1, [r6, #0xef4] + strb r0, [r1] +_02066DD0: + cmp r4, #1 + bne _02066E00 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r0, [r0, #4] + cmp r0, #9 + bne _02066DF4 + bl sub_0206955C + bl sub_02046D20 +_02066DF4: + bl sub_020692B4 + mov r0, #1 + b _02067498 +_02066E00: + cmp r4, #2 + bne _02066EDC + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r0, [r0, #4] + cmp r0, #0xa + bne _02066E3C + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205E970 + bl AddMissionToJobList + b _02066EC0 +_02066E3C: + cmp r0, #0xb + bne _02066E64 + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EAE8 + bl AddMissionToJobList + b _02066EC0 +_02066E64: + cmp r0, #0xc + bne _02066E8C + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EBD8 + bl AddMissionToJobList + b _02066EC0 +_02066E8C: + cmp r0, #0xd + bne _02066EB4 + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC38 + bl AddMissionToJobList + b _02066EC0 +_02066EB4: + cmp r0, #0x14 + moveq r0, #1 + beq _02067498 +_02066EC0: + bl sub_020686F4 + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02066EDC: + cmp r4, #3 + bne _02066EF4 + bl sub_02067C8C + cmp r0, #0 + beq _02067494 + b _02067498 +_02066EF4: + cmp r4, #4 + bne _02066F44 + bl sub_02046BB4 + mov r0, #6 + bl PlaySeVolumeWrapper + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r1, #4 + strb r1, [r0] + bl sub_020686F4 + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02066F44: + cmp r4, #5 + bne _02067020 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r0, [r0, #4] + cmp r0, #0x11 + bne _02066F84 + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205F588 + bl sub_0205F5A8 + mov r0, #1 + b _02067498 +_02066F84: + cmp r0, #0x12 + moveq r0, #1 + beq _02067498 + cmp r0, #0xe + bne _02066FB4 + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #4 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02066FB4: + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205F588 + bl sub_0205F5A8 + bl CountJobListMissions + cmp r0, #0 + bne _02066FFC + bl sub_020692B4 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + mvn r0, #0 + b _02067498 +_02066FFC: + bl sub_020686F4 + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + mov r2, #0 + ldr r1, [r0, #0x14] + mov r0, #1 + str r2, [r1] + strb r0, [r6, #0xd84] + b _02067494 +_02067020: + cmp r4, #6 + bne _020670F4 + ldr r3, [r6, #0x70] + mov r1, #1 + add r0, r6, r3 + strb r1, [r0, #0x4c] + add r2, r3, #1 + ldr r1, [r6, #0x6c] + b _0206705C +_02067044: + add r0, r6, r2 + ldrb r0, [r0, #0x4c] + cmp r0, #0 + strne r2, [r6, #0x70] + bne _02067064 + add r2, r2, #1 +_0206705C: + cmp r2, r1 + blt _02067044 +_02067064: + ldr r0, [r6, #0x70] + cmp r0, r3 + bne _020670A0 + bl sub_020674E8 + cmp r0, #0 + bne _02067098 + bl sub_02046D20 + mov r1, #0 + ldr r0, _020674A0 ; =_020B0B2C + str r1, [r6, #8] + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02067098: + mov r0, #2 + b _02067498 +_020670A0: + str r0, [r6, #8] + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + ldr r1, _020674B0 ; =_020A937C + ldrsb r3, [r0, #0xd] + ldr r0, _020674B4 ; =_020B0B39 + ldr r2, _020674B8 ; =JOB_MENU_ITEMS_11 + ldr r1, [r1, r3, lsl #3] + add r3, r6, #0x248 + str r1, [r6, #0xe48] + str r0, [r6, #0xef4] + mov r0, #0 + ldr r1, _020674BC ; =0x00003878 + str r2, [sp] + str r1, [sp, #4] + ldr r2, _020674C0 ; =0x00000233 + mov r1, r0 + add r3, r3, #0xc00 + str r0, [sp, #8] + bl sub_02046A20 + b _02067494 +_020670F4: + sub r0, r4, #7 + cmp r0, #1 + bhi _02067494 + ldr r0, _020674A0 ; =_020B0B2C + ldr r1, [r0, #0x14] + ldr r0, [r1, #4] + cmp r0, #0x11 + bne _02067134 + bl sub_02046D20 + ldr r1, [r6, #8] + ldr r0, _020674A0 ; =_020B0B2C + str r1, [r6, #0xd88] + ldr r0, [r0, #0x14] + mov r1, #0 + str r1, [r0] + b _02067494 +_02067134: + cmp r0, #0x13 + bne _02067210 + ldr r3, [r6, #0x70] + mov r1, #0 + add r0, r6, r3 + strb r1, [r0, #0x4c] + mov r2, r3 + ldr r1, [r6, #0x6c] + b _02067170 +_02067158: + add r0, r6, r2 + ldrb r0, [r0, #0x4c] + cmp r0, #0 + strne r2, [r6, #0x70] + bne _02067178 + add r2, r2, #1 +_02067170: + cmp r2, r1 + blt _02067158 +_02067178: + ldr r0, [r6, #0x70] + cmp r0, r3 + bne _020671BC + bl sub_020674E8 + cmp r0, #0 + bne _020671B4 + bl sub_02046D20 + mov r0, #0 + str r0, [r6, #8] + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_020671B4: + mov r0, #2 + b _02067498 +_020671BC: + str r0, [r6, #8] + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + ldr r1, _020674B0 ; =_020A937C + ldrsb r3, [r0, #0xd] + ldr r0, _020674B4 ; =_020B0B39 + ldr r2, _020674B8 ; =JOB_MENU_ITEMS_11 + ldr r1, [r1, r3, lsl #3] + add r3, r6, #0x248 + str r1, [r6, #0xe48] + str r0, [r6, #0xef4] + mov r0, #0 + ldr r1, _020674BC ; =0x00003878 + str r2, [sp] + str r1, [sp, #4] + ldr r2, _020674C0 ; =0x00000233 + mov r1, r0 + add r3, r3, #0xc00 + str r0, [sp, #8] + bl sub_02046A20 + b _02067494 +_02067210: + cmp r0, #9 + bne _02067234 + bl sub_0206955C + bl sub_02046D20 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02067234: + cmp r0, #4 + bne _02067254 + bl sub_02046D20 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02067254: + cmp r0, #0x12 + bne _02067298 + mov r2, #0 + mov r1, r2 + b _02067274 +_02067268: + add r0, r6, r2 + strb r1, [r0, #0x4c] + add r2, r2, #1 +_02067274: + ldr r0, [r6, #0x6c] + cmp r2, r0 + blt _02067268 + bl sub_02046D20 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02067298: + cmp r0, #0x14 + bne _020672B8 + bl sub_02046D20 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_020672B8: + cmp r0, #0xe + bne _020672E8 + bl sub_02046BB4 + cmp r4, #7 + bne _020672D4 + mov r0, #0 + bl PlaySeVolumeWrapper +_020672D4: + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_020672E8: + mov r0, #0 + str r0, [r1] + b _02067494 +_020672F4: + mov r0, #0 + ldr r5, _020674C4 ; =_020A9268 + bl sub_02046D2C + str r0, [r6, #0xee8] + mov r0, #0 + bl sub_020474A0 + str r0, [r6, #0xeec] + bl sub_020469BC + bl sub_02068338 + ldr r0, _020674A0 ; =_020B0B2C + add r3, r6, #0x248 + ldr r0, [r0, #0x14] + mov r1, #0 + ldr r0, [r0, #4] + ldr r2, _020674C0 ; =0x00000233 + cmp r0, #0xe + moveq r0, #7 + streq r0, [r6, #0xe48] + moveq r0, #0 + streq r0, [r6, #0xef4] + ldreq r4, _020674C8 ; =JOB_MENU_ITEMS_4 + mov r0, r5 + str r4, [sp] + str r1, [sp, #4] + add r3, r3, #0xc00 + str r1, [sp, #8] + bl sub_02046A20 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #5 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02067374: + bl sub_02046B04 + bl sub_02068308 + ldr r1, [r6, #0xef4] + mov r4, r0 + cmp r1, #0 + beq _02067398 + bl sub_02046BA0 + ldr r1, [r6, #0xef4] + strb r0, [r1] +_02067398: + cmp r4, #5 + bne _02067430 + bl sub_020469E8 + ldr r0, [r6, #0xee8] + bl sub_02046D2C + ldr r0, [r6, #0xeec] + bl sub_020474A0 + mov r0, #0 + str r0, [r6, #0xee8] + str r0, [r6, #0xeec] + bl sub_02046BB4 + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205F588 + bl sub_0205F5A8 + bl CountJobListMissions + cmp r0, #0 + bne _0206740C + bl sub_020692B4 + ldr r0, _020674A0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + mvn r0, #0 + b _02067498 +_0206740C: + bl sub_020686F4 + bl sub_0206937C + ldr r0, _020674A0 ; =_020B0B2C + mov r2, #0 + ldr r1, [r0, #0x14] + mov r0, #1 + str r2, [r1] + strb r0, [r6, #0xd84] + b _02067494 +_02067430: + sub r0, r4, #7 + cmp r0, #1 + bhi _02067494 + bl sub_020469E8 + ldr r0, [r6, #0xee8] + bl sub_02046D2C + ldr r0, [r6, #0xeec] + bl sub_020474A0 + mov r0, #0 + str r0, [r6, #0xee8] + str r0, [r6, #0xeec] + bl sub_02046BB4 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] + b _02067494 +_02067474: + bl sub_02046C78 + cmp r0, #0 + beq _02067494 + bl sub_02046D20 + ldr r0, _020674A0 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + str r1, [r0] +_02067494: + mov r0, #0 +_02067498: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_020674A0: .word _020B0B2C +_020674A4: .word _020A92A8 +_020674A8: .word sub_020696E8 +_020674AC: .word sub_02069750 +_020674B0: .word _020A937C +_020674B4: .word _020B0B39 +_020674B8: .word JOB_MENU_ITEMS_11 +#if defined(EUROPE) +_020674BC: .word 0x0000387A +#elif defined(JAPAN) +_020674BC: .word 0x000034B6 +#else +_020674BC: .word 0x00003878 +#endif +_020674C0: .word 0x00000233 +_020674C4: .word _020A9268 +_020674C8: .word JOB_MENU_ITEMS_4 + arm_func_end sub_02066A44 + + arm_func_start sub_020674CC +sub_020674CC: ; 0x020674CC + ldr r0, _020674E4 ; =_020B0B2C + ldr r1, [r0, #0x14] + ldr r0, [r1, #8] + add r0, r1, r0, lsl #1 + ldrsh r0, [r0, #0xc] + bx lr + .align 2, 0 +_020674E4: .word _020B0B2C + arm_func_end sub_020674CC + + arm_func_start sub_020674E8 +sub_020674E8: ; 0x020674E8 + ldr r0, _02067520 ; =_020B0B2C + mov ip, #0 + ldr r2, [r0, #0x14] + mov r0, ip + ldr r3, [r2, #0x6c] + b _02067514 +_02067500: + add r1, r2, ip + ldrb r1, [r1, #0x4c] + add ip, ip, #1 + cmp r1, #0 + addne r0, r0, #1 +_02067514: + cmp ip, r3 + blt _02067500 + bx lr + .align 2, 0 +_02067520: .word _020B0B2C + arm_func_end sub_020674E8 + + arm_func_start sub_02067524 +sub_02067524: ; 0x02067524 + stmdb sp!, {r4, lr} + mov lr, #0 + mov r4, lr + ldr r2, _02067580 ; =_020B0B2C + b _02067568 +_02067538: + cmp lr, r1 + movge r0, #0 + ldmgeia sp!, {r4, pc} + add r3, ip, r4 + ldrb r3, [r3, #0x4c] + cmp r3, #0 + addne r3, ip, r4, lsl #1 + ldrnesh ip, [r3, #0xc] + movne r3, lr, lsl #1 + addne lr, lr, #1 + strneh ip, [r0, r3] + add r4, r4, #1 +_02067568: + ldr ip, [r2, #0x14] + ldr r3, [ip, #0x6c] + cmp r4, r3 + blt _02067538 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02067580: .word _020B0B2C + arm_func_end sub_02067524 + + arm_func_start sub_02067584 +sub_02067584: ; 0x02067584 + stmdb sp!, {r4, lr} + sub sp, sp, #0x40 + cmp r0, #0x13 + addls pc, pc, r0, lsl #2 + b _02067658 +_02067598: ; jump table + b _020675E8 ; case 0 + b _020675E8 ; case 1 + b _020675E8 ; case 2 + b _020675E8 ; case 3 + b _020675E8 ; case 4 + b _020675E8 ; case 5 + b _020675E8 ; case 6 + b _020675E8 ; case 7 + b _02067658 ; case 8 + b _020675E8 ; case 9 + b _020675E8 ; case 10 + b _020675E8 ; case 11 + b _020675E8 ; case 12 + b _020675E8 ; case 13 + b _02067638 ; case 14 + b _02067638 ; case 15 + b _02067638 ; case 16 + b _02067604 ; case 17 + b _020675E8 ; case 18 + b _02067650 ; case 19 +_020675E8: + add r1, sp, #0 + bl sub_02068390 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + b _0206765C +_02067604: + bl sub_0204E210 + cmp r0, #1 + bne _02067638 + bl CountJobListMissions + mov r4, r0 + bl GetAdventureLogDungeonFloor + ldrb r0, [r0] + bl DungeonRequestsDoneWrapper + subs r0, r4, r0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + b _0206765C +_02067638: + bl CountJobListMissions + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + b _0206765C +_02067650: + mov r0, #0 + b _0206765C +_02067658: + mov r0, #1 +_0206765C: + add sp, sp, #0x40 + ldmia sp!, {r4, pc} + arm_func_end sub_02067584 + + arm_func_start sub_02067664 +sub_02067664: ; 0x02067664 + stmdb sp!, {r3, lr} + ldr r0, _020676A8 ; =_020B0B2C + ldr r0, [r0, #0x14] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + bl sub_02069904 + bl sub_020692B4 + ldr r0, _020676A8 ; =_020B0B2C + ldr r0, [r0, #0x14] + bl MemFree + ldr r0, _020676A8 ; =_020B0B2C + mov r1, #0 + str r1, [r0, #0x14] + ldmia sp!, {r3, pc} + .align 2, 0 +_020676A8: .word _020B0B2C + arm_func_end sub_02067664 + + arm_func_start sub_020676AC +sub_020676AC: ; 0x020676AC + ldr r0, _02067704 ; =_020B0B2C + mov r1, #0 + strb r1, [r0, #0x10] + strb r1, [r0, #0xe] + strb r1, [r0, #9] + strb r1, [r0, #8] + strb r1, [r0, #6] + strb r1, [r0, #0xb] + strb r1, [r0, #4] + strb r1, [r0, #0xd] + strb r1, [r0, #7] + strb r1, [r0, #3] + strb r1, [r0, #2] + strb r1, [r0, #5] + strb r1, [r0, #1] + strb r1, [r0] + strb r1, [r0, #0x13] + strb r1, [r0, #0x12] + strb r1, [r0, #0x11] + strb r1, [r0, #0xa] + strb r1, [r0, #0xf] + bx lr + .align 2, 0 +_02067704: .word _020B0B2C + arm_func_end sub_020676AC + + arm_func_start sub_02067708 +sub_02067708: ; 0x02067708 +#if defined(EUROPE) +#define SUB_02067708_WORD_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02067708_WORD_OFFSET -0x3C2 +#else +#define SUB_02067708_WORD_OFFSET 0 +#endif + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x5c + ldr r1, _02067C00 ; =_020B0B2C + mov r6, #0 + add r0, sp, #0xc + mov sb, r6 + ldr r4, [r1, #0x14] + ldr r7, _02067C04 ; =_020A9298 + ldr r8, _02067C08 ; =0x00000233 + bl InitPreprocessorArgs + bl sub_02068338 + ldr r1, _02067C00 ; =_020B0B2C + ldr r0, [r1, #0x14] + ldr r2, [r0, #4] + sub r2, r2, #4 + cmp r2, #0x10 + addls pc, pc, r2, lsl #2 + b _02067BC4 +_02067750: ; jump table + b _02067AF8 ; case 0 + b _02067BC4 ; case 1 + b _02067BC4 ; case 2 + b _02067BC4 ; case 3 + b _02067BC4 ; case 4 + b _02067A80 ; case 5 + b _02067794 ; case 6 + b _020677F0 ; case 7 + b _0206784C ; case 8 + b _020678A8 ; case 9 + b _02067904 ; case 10 + b _020679E0 ; case 11 + b _02067BC4 ; case 12 + b _02067A50 ; case 13 + b _02067B20 ; case 14 + b _02067B3C ; case 15 + b _02067BA0 ; case 16 +_02067794: + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205E970 + bl AlreadyHaveMission + cmp r0, #0 + bne _020677C4 + bl CountJobListMissions + cmp r0, #8 + blt _020677CC +_020677C4: + mov r0, #3 + strb r0, [r4, #0xee0] +_020677CC: + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C0C ; =_020A9364 + ldrsb r2, [r0, #0x10] + ldr r0, _02067C10 ; =_020B0B3C + ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_020677F0: + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EAE8 + bl AlreadyHaveMission + cmp r0, #0 + bne _02067820 + bl CountJobListMissions + cmp r0, #8 + blt _02067828 +_02067820: + mov r0, #3 + strb r0, [r4, #0xee0] +_02067828: + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C0C ; =_020A9364 + ldrsb r2, [r0, #0xe] + ldr r0, _02067C18 ; =_020B0B3A + ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_0206784C: + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EBD8 + bl AlreadyHaveMission + cmp r0, #0 + bne _0206787C + bl CountJobListMissions + cmp r0, #8 + blt _02067884 +_0206787C: + mov r0, #3 + strb r0, [r4, #0xee0] +_02067884: + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C0C ; =_020A9364 + ldrsb r2, [r0, #9] + ldr r0, _02067C1C ; =_020B0B35 + ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_020678A8: + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC38 + bl AlreadyHaveMission + cmp r0, #0 + bne _020678D8 + bl CountJobListMissions + cmp r0, #8 + blt _020678E0 +_020678D8: + mov r0, #3 + strb r0, [r4, #0xee0] +_020678E0: + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C0C ; =_020A9364 + ldrsb r2, [r0, #8] + ldr r0, _02067C20 ; =_020B0B34 + ldr r5, _02067C14 ; =JOB_MENU_ITEMS_10 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_02067904: + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r5, r0 + ldrb r0, [r5, #4] + bl DungeonSwapIdToIdx + ldrb r0, [r5] + orr r8, r8, #0x400000 + orr r8, r8, #0x80000000 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0206798C +_02067940: ; jump table + b _0206798C ; case 0 + b _02067954 ; case 1 + b _02067954 ; case 2 + b _02067954 ; case 3 + b _02067954 ; case 4 +_02067954: + mov r0, r5 + bl sub_0205ECF4 + cmp r0, #0 + movne r0, #3 + strneb r0, [r4, #0xee0] + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C24 ; =_020A9394 + ldrsb r2, [r0, #6] + ldr r0, _02067C28 ; =_020B0B32 + ldr r5, _02067C2C ; =JOB_MENU_ITEMS_12 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_0206798C: + ldrb r1, [r5, #1] + cmp r1, #3 + ldreqb r0, [r5, #2] + cmpeq r0, #3 + moveq r0, #3 + streqb r0, [r4, #0xee0] + beq _020679BC + cmp r1, #6 + ldreqb r0, [r5, #2] + cmpeq r0, #4 + moveq r0, #3 + streqb r0, [r4, #0xee0] +_020679BC: + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C30 ; =_020A93B4 + ldrsb r2, [r0, #6] + ldr r0, _02067C28 ; =_020B0B32 + ldr r5, _02067C34 ; =JOB_MENU_ITEMS_13 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_020679E0: + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldrb r0, [r0] + cmp r0, #4 + beq _02067A2C + ldr r0, [r4, #8] + add r0, r4, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldrb r0, [r0] + cmp r0, #1 + movne r0, #3 + strneb r0, [r4, #0xee0] +_02067A2C: + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C38 ; =_020A92EC + ldrsb r2, [r0, #0xb] + ldr r0, _02067C3C ; =_020B0B37 + ldr r5, _02067C40 ; =JOB_MENU_ITEMS_5 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_02067A50: + ldr r5, _02067C44 ; =JOB_MENU_ITEMS_7 + ldr r6, _02067C48 ; =0x000037B0 + mov r7, sb + bl sub_020692B4 + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C4C ; =_020A931C + ldrsb r2, [r0, #4] + ldr r0, _02067C50 ; =_020B0B30 + ldr r1, [r1, r2, lsl #3] + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_02067A80: + sub r1, r8, #0x100 + str r1, [sp, #0xc] + add r1, r0, #0xd00 + mov r7, r6 + ldrsb r2, [r1, #0x85] + sub r1, r7, #2 + ldr r5, _02067C54 ; =JOB_MENU_ITEMS_3 + cmp r2, r1 + ldreq r0, [r0, #4] + ldr r6, _02067C58 ; =0x0000380C + mov sb, #0x1000 + cmpeq r0, #9 + bne _02067AE4 + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl CreatePortraitBox + ldr r2, _02067C00 ; =_020B0B2C + ldr r1, _02067C5C ; =_020A9278 + ldr r3, [r2, #0x14] + strb r0, [r3, #0xd85] + ldr r0, [r2, #0x14] + add r0, r0, #0xd00 + ldrsb r0, [r0, #0x85] + bl ShowPortraitInPortraitBox +_02067AE4: + ldr r1, [r5, #0xc] + mov r0, #0 + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] + b _02067BC4 +_02067AF8: + ldrsb r2, [r1, #0xc] + ldr r1, _02067C60 ; =_020A9304 + ldr r0, _02067C64 ; =_020B0B38 + ldr r1, [r1, r2, lsl #3] + ldr r5, _02067C68 ; =JOB_MENU_ITEMS_6 + str r1, [r4, #0xe48] + str r0, [r4, #0xef4] +#ifdef NORTH_AMERICA + rsb r6, r8, #0x3a40 +#else + ldr r6, _02067FF0 ; =0x0000380F +#endif + mov r7, sb + b _02067BC4 +_02067B20: + mov r0, #7 + mov r7, r6 + str r0, [r4, #0xe48] + str r7, [r4, #0xef4] + ldr r5, _02067C6C ; =JOB_MENU_ITEMS_9 + ldr r6, _02067C70 ; =0x000038BF + b _02067BC4 +_02067B3C: + ldr r1, [r4, #0x6c] + ldr r5, _02067C74 ; =JOB_MENU_ITEMS_11 + ldr r6, _02067C78 ; =0x00003878 + mov r2, sb + b _02067B68 +_02067B50: + add r0, r4, r2 + ldrb r0, [r0, #0x4c] + cmp r0, #0 + strne r2, [r4, #0x70] + bne _02067B70 + add r2, r2, #1 +_02067B68: + cmp r2, r1 + blt _02067B50 +_02067B70: + ldr r0, [r4, #0x70] + mov r7, #0 + str r0, [r4, #8] + bl sub_0206937C + ldr r0, _02067C00 ; =_020B0B2C + ldr r1, _02067C7C ; =_020B0B39 + ldrsb r0, [r0, #0xd] + add r0, r5, r0, lsl #3 + ldr r0, [r0, #4] + str r0, [r4, #0xe48] + str r1, [r4, #0xef4] + b _02067BC4 +_02067BA0: + ldrsb r2, [r1, #7] + ldr r1, _02067C80 ; =_020A9334 + ldr r0, _02067C84 ; =_020B0B33 + ldr r1, [r1, r2, lsl #3] + ldr r5, _02067C88 ; =JOB_MENU_ITEMS_8 + str r1, [r4, #0xe48] +#ifdef NORTH_AMERICA + add r6, r8, #0x3580 +#else + ldr r6, _02068014 ; =0x000037B5 +#endif + str r0, [r4, #0xef4] + mov r7, sb +_02067BC4: + add r3, r4, #0x248 + stmia sp, {r5, r6} + add r4, sp, #0xc + mov r0, r7 + mov r1, sb + mov r2, r8 + add r3, r3, #0xc00 + str r4, [sp, #8] + bl sub_02046A20 + ldr r0, _02067C00 ; =_020B0B2C + mov r1, #3 + ldr r0, [r0, #0x14] + str r1, [r0] + add sp, sp, #0x5c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02067C00: .word _020B0B2C +_02067C04: .word _020A9298 +_02067C08: .word 0x00000233 +_02067C0C: .word _020A9364 +_02067C10: .word _020B0B3C +_02067C14: .word JOB_MENU_ITEMS_10 +_02067C18: .word _020B0B3A +_02067C1C: .word _020B0B35 +_02067C20: .word _020B0B34 +_02067C24: .word _020A9394 +_02067C28: .word _020B0B32 +_02067C2C: .word JOB_MENU_ITEMS_12 +_02067C30: .word _020A93B4 +_02067C34: .word JOB_MENU_ITEMS_13 +_02067C38: .word _020A92EC +_02067C3C: .word _020B0B37 +_02067C40: .word JOB_MENU_ITEMS_5 +_02067C44: .word JOB_MENU_ITEMS_7 +#ifdef JAPAN +_02067C48: .word 0x00003432 +#else +_02067C48: .word 0x000037B0 + SUB_02067708_WORD_OFFSET +#endif +_02067C4C: .word _020A931C +_02067C50: .word _020B0B30 +_02067C54: .word JOB_MENU_ITEMS_3 +_02067C58: .word 0x0000380C + SUB_02067708_WORD_OFFSET +_02067C5C: .word _020A9278 +_02067C60: .word _020A9304 +_02067C64: .word _020B0B38 +_02067C68: .word JOB_MENU_ITEMS_6 +#if defined(EUROPE) +_02067FF0: .word 0x0000380F +#elif defined(JAPAN) +_02067FF0: .word 0x0000344B +#endif +_02067C6C: .word JOB_MENU_ITEMS_9 +_02067C70: .word 0x000038BF + SUB_02067708_WORD_OFFSET +_02067C74: .word JOB_MENU_ITEMS_11 +_02067C78: .word 0x00003878 + SUB_02067708_WORD_OFFSET +_02067C7C: .word _020B0B39 +_02067C80: .word _020A9334 +_02067C84: .word _020B0B33 +_02067C88: .word JOB_MENU_ITEMS_8 +#ifdef EUROPE +_02068014: .word 0x000037B5 +#elif defined(JAPAN) +_02068014: .word 0x00003435 +#endif + arm_func_end sub_02067708 + + arm_func_start sub_02067C8C +sub_02067C8C: ; 0x02067C8C +#if defined(EUROPE) +#define SUB_02067C8C_WORD_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02067C8C_WORD_OFFSET -0x3C2 +#else +#define SUB_02067C8C_WORD_OFFSET 0 +#endif + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x60 + ldr r0, _020682E0 ; =_020B0B2C + ldr r6, [r0, #0x14] + bl sub_02046BB4 + mov r0, #6 + bl PlaySeVolumeWrapper + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r4, r0 + ldrb r0, [r4, #4] + bl DungeonSwapIdToIdx + mov r5, r0 + add r0, sp, #8 + str r0, [sp] + ldrb r0, [r4, #1] + add r1, r4, #2 + add r2, sp, #4 + add r3, sp, #0xc + bl sub_0206276C + ldrb r1, [r4, #1] + cmp r1, #0xe + ldreqb r0, [r4, #2] + cmpeq r0, #1 + bne _02067E70 + bl GetRank + ldrb r1, [sp, #4] + cmp r1, r0 + bhi _02067D3C + bl GetScenarioBalance + ldr r1, [sp, #0xc] + cmp r1, r0 + bgt _02067D3C + ldr r0, [sp, #8] + cmp r0, #0 + beq _02067D7C + mov r0, #0x16 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + bne _02067D7C +_02067D3C: + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _020682E4 ; =0x0000381F + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_02067D7C: + mov r0, r5 + bl GetDungeonMode + cmp r0, #3 + bne _02067DCC + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _020682E8 ; =0x00003820 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_02067DCC: + ldrb r0, [r4, #4] + mov r4, #0 + sub r0, r0, #0x49 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02067E4C +_02067DE4: ; jump table + b _02067E30 ; case 0 + b _02067E4C ; case 1 + b _02067E28 ; case 2 + b _02067E4C ; case 3 + b _02067E18 ; case 4 + b _02067E4C ; case 5 + b _02067E20 ; case 6 + b _02067E4C ; case 7 + b _02067E38 ; case 8 + b _02067E4C ; case 9 + b _02067E48 ; case 10 + b _02067E4C ; case 11 + b _02067E40 ; case 12 +_02067E18: + mov r4, #3 + b _02067E4C +_02067E20: + mov r4, #4 + b _02067E4C +_02067E28: + mov r4, #5 + b _02067E4C +_02067E30: + mov r4, #6 + b _02067E4C +_02067E38: + mov r4, #7 + b _02067E4C +_02067E40: + mov r4, #8 + b _02067E4C +_02067E48: + mov r4, #9 +_02067E4C: + ldr r0, [r6, #8] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205F588 + bl sub_0205F5A8 + mov r0, r4 + b _020682D8 +_02067E70: + cmp r1, #3 + ldreqb r0, [r4, #2] + cmpeq r0, #3 + bne _02067FE0 + ldrb r0, [r4, #4] + bl CheckDungeonMissionUnlockConditions + cmp r0, #1 + bne _02067ED0 + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 +#ifdef NORTH_AMERICA + mov r0, #0x1c + rsb r1, r0, #0x3840 +#else + ldr r1, _02068678 ; =0x00003826 + mov r0, #0x1c +#endif + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_02067ED0: + cmp r0, #0 + beq _02067F28 + add r0, sp, #0x10 + bl InitPreprocessorArgs + ldrb r0, [r4, #4] + str r0, [sp, #0x20] + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _020682EC ; =0x00003825 + add r2, sp, #0x10 + mov r0, #0x1c + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_02067F28: + mov r0, r5 + mov r1, #3 + bl sub_0204D018 + mov r0, #5 + strb r0, [r4] + ldrb r0, [r4, #4] + sub r0, r0, #0x57 + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02067FE0 +_02067F50: ; jump table + b _02067F80 ; case 0 + b _02067F88 ; case 1 + b _02067F90 ; case 2 + b _02067F98 ; case 3 + b _02067FA0 ; case 4 + b _02067FA8 ; case 5 + b _02067FB0 ; case 6 + b _02067FB8 ; case 7 + b _02067FC0 ; case 8 + b _02067FC8 ; case 9 + b _02067FD0 ; case 10 + b _02067FD8 ; case 11 +_02067F80: + mov r0, #0xa + b _020682D8 +_02067F88: + mov r0, #0xb + b _020682D8 +_02067F90: + mov r0, #0xc + b _020682D8 +_02067F98: + mov r0, #0xd + b _020682D8 +_02067FA0: + mov r0, #0xe + b _020682D8 +_02067FA8: + mov r0, #0xf + b _020682D8 +_02067FB0: + mov r0, #0x10 + b _020682D8 +_02067FB8: + mov r0, #0x11 + b _020682D8 +_02067FC0: + mov r0, #0x12 + b _020682D8 +_02067FC8: + mov r0, #0x13 + b _020682D8 +_02067FD0: + mov r0, #0x14 + b _020682D8 +_02067FD8: + mov r0, #0x15 + b _020682D8 +_02067FE0: + ldrb r0, [r4, #1] + cmp r0, #0xb + bne _02068158 + ldrb r1, [r4, #2] + cmp r1, #1 + blo _02068158 + cmp r1, #5 + bhi _02068158 + add r1, r4, #2 + mov r2, #0xff + bl CheckAcceptedMissionByTypeAndDungeon + cmp r0, #0 + beq _02068054 + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _020682F0 ; =0x00003821 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_02068054: + bl GetRank + ldrb r1, [sp, #4] + cmp r1, r0 + bhi _02068090 + bl GetScenarioBalance + ldr r1, [sp, #0xc] + cmp r1, r0 + bgt _02068090 + ldr r0, [sp, #8] + cmp r0, #0 + beq _020680D0 + mov r0, #0x16 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + bne _020680D0 +_02068090: + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 +#ifdef EUROPE + mov r0, #0x1c + rsb r1, r0, #0x3840 +#else + ldr r1, _020682F4 ; =0x00003822 + mov r0, #0x1c +#endif + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_020680D0: + ldrb r0, [r4, #2] + cmp r0, #5 + bne _02068158 + mov r0, #0 + bl IsSpecialEpisodeBeaten + cmp r0, #0 + bne _0206812C + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _020682F8 ; =0x00003823 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_0206812C: + mov r0, r5 + bl GetDungeonMode + cmp r0, #3 + beq _02068158 + mov r0, r5 + mov r1, #3 + bl sub_0204D018 + mov r0, #5 + strb r0, [r4] + mov r0, #0x16 + b _020682D8 +_02068158: + ldrb r1, [r4, #1] + cmp r1, #6 + ldreqb r0, [r4, #2] + cmpeq r0, #4 + bne _02068260 + ldrb r0, [r4, #4] + bl CheckDungeonMissionUnlockConditions + mov r6, r0 + bl GetRank + ldrb r1, [sp, #4] + cmp r1, r0 + bhi _020681BC + bl GetScenarioBalance + ldr r1, [sp, #0xc] + cmp r1, r0 + bgt _020681BC + ldr r0, [sp, #8] + cmp r0, #0 + beq _020681B4 + mov r0, #0x16 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _020681BC +_020681B4: + cmp r6, #1 + bne _020681FC +_020681BC: + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 +#ifdef JAPAN + mov r0, #0x1c + rsb r1, r0, #0x3480 +#else + ldr r1, _020682FC ; =0x00003826 + mov r0, #0x1c +#endif + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_020681FC: + cmp r6, #0 + beq _02068244 + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _02068300 ; =0x00003827 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_02068244: + mov r2, #5 + mov r0, r5 + mov r1, #3 + strb r2, [r4] + bl sub_0204D018 + mov r0, #0xe + b _020682D8 +_02068260: + cmp r1, #0xc + beq _020682B8 + ldrb r0, [r4, #4] + bl CanDungeonBeUsedForMission + cmp r0, #0 + bne _020682B8 + bl sub_020692B4 + ldr r0, _020682E0 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, #0x2e4 + add r0, r0, #0xc00 + bl sub_02047150 + ldr r1, _02068304 ; =0x00003828 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _020682E0 ; =_020B0B2C + mov r2, #6 + ldr r1, [r0, #0x14] + mov r0, #0 + str r2, [r1] + b _020682D8 +_020682B8: + mov r0, #5 + strb r0, [r4] + bl sub_020686F4 + bl sub_0206937C + ldr r1, _020682E0 ; =_020B0B2C + mov r0, #0 + ldr r1, [r1, #0x14] + str r0, [r1] +_020682D8: + add sp, sp, #0x60 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_020682E0: .word _020B0B2C +_020682E4: .word 0x0000381F + SUB_02067C8C_WORD_OFFSET +_020682E8: .word 0x00003820 + SUB_02067C8C_WORD_OFFSET +#if defined(EUROPE) +_02068678: .word 0x00003826 +#elif defined(JAPAN) +_02068678: .word 0x00003462 +#endif +_020682EC: .word 0x00003825 + SUB_02067C8C_WORD_OFFSET +_020682F0: .word 0x00003821 + SUB_02067C8C_WORD_OFFSET +#ifndef EUROPE +_020682F4: .word 0x00003822 + SUB_02067C8C_WORD_OFFSET +#endif +_020682F8: .word 0x00003823 + SUB_02067C8C_WORD_OFFSET +#ifndef JAPAN +_020682FC: .word 0x00003826 + SUB_02067C8C_WORD_OFFSET +#endif +_02068300: .word 0x00003827 + SUB_02067C8C_WORD_OFFSET +_02068304: .word 0x00003828 + SUB_02067C8C_WORD_OFFSET + arm_func_end sub_02067C8C + + arm_func_start sub_02068308 +sub_02068308: ; 0x02068308 + mvn r2, #1 + cmp r0, r2 + moveq r0, #8 + bxeq lr + sub r1, r2, #1 + cmp r0, r1 + moveq r0, #8 + bxeq lr + add r1, r2, #1 + cmp r0, r1 + moveq r0, #0 + bx lr + arm_func_end sub_02068308 + + arm_func_start sub_02068338 +sub_02068338: ; 0x02068338 + stmdb sp!, {r3, lr} + ldr r0, _0206838C ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + add r2, r0, #0xee0 + mov r0, r1 +_02068350: + strb r0, [r2, r1] + add r1, r1, #1 + cmp r1, #4 + blt _02068350 + ldr r0, _0206838C ; =_020B0B2C + mov r1, #0x98 + ldr r0, [r0, #0x14] + add r0, r0, #0x248 + add r0, r0, #0xc00 + bl MemZero + ldr r0, _0206838C ; =_020B0B2C + ldr r1, [r0, #0x14] + add r0, r1, #0xee0 + str r0, [r1, #0xea8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0206838C: .word _020B0B2C + arm_func_end sub_02068338 + + arm_func_start sub_02068390 +sub_02068390: ; 0x02068390 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + cmp r0, #0x12 + mov r4, #0 + addls pc, pc, r0, lsl #2 + b _020686E4 +_020683AC: ; jump table + b _020683F8 ; case 0 + b _02068468 ; case 1 + b _020684A0 ; case 2 + b _02068510 ; case 3 + b _020684D8 ; case 4 + b _02068548 ; case 5 + b _02068430 ; case 6 + b _02068580 ; case 7 + b _020686E4 ; case 8 + b _020684A0 ; case 9 + b _020685B8 ; case 10 + b _020685E8 ; case 11 + b _02068618 ; case 12 + b _02068634 ; case 13 + b _02068650 ; case 14 + b _020686E4 ; case 15 + b _020686E4 ; case 16 + b _020686E4 ; case 17 + b _02068680 ; case 18 +_020683F8: + ldr r1, _020686F0 ; =_020B0A54 + mov ip, r4 + mov r0, #0xb0 +_02068404: + mul r2, ip, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #0 + movne r2, r4, lsl #1 + strneh ip, [r5, r2] + add ip, ip, #1 + addne r4, r4, #1 + cmp ip, #0x20 + blt _02068404 + b _020686E4 +_02068430: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_0206843C: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #6 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _0206843C + b _020686E4 +_02068468: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_02068474: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #1 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _02068474 + b _020686E4 +_020684A0: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_020684AC: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #2 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _020684AC + b _020686E4 +_020684D8: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_020684E4: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #4 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _020684E4 + b _020686E4 +_02068510: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_0206851C: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #3 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _0206851C + b _020686E4 +_02068548: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_02068554: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #5 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _02068554 + b _020686E4 +_02068580: + ldr r1, _020686F0 ; =_020B0A54 + mov r6, r4 + mov r0, #0xb0 +_0206858C: + mul r2, r6, r0 + ldr r3, [r1] + ldrb r2, [r3, r2] + cmp r2, #7 + moveq r2, r4, lsl #1 + streqh r6, [r5, r2] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #0x20 + blt _0206858C + b _020686E4 +_020685B8: + mov r6, r4 +_020685BC: + mov r0, r6, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205E984 + cmp r0, #0 + moveq r0, r4, lsl #1 + streqh r6, [r5, r0] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #8 + blt _020685BC + b _020686E4 +_020685E8: + mov r6, r4 +_020685EC: + mov r0, r6, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EB00 + cmp r0, #0 + moveq r0, r4, lsl #1 + streqh r6, [r5, r0] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #8 + blt _020685EC + b _020686E4 +_02068618: + mov r0, r4 + bl sub_0205EBF0 + cmp r0, #0 + moveq r0, r4 + streqh r0, [r5] + addeq r4, r4, #1 + b _020686E4 +_02068634: + mov r0, r4 + bl sub_0205EC50 + cmp r0, #0 + moveq r0, r4 + streqh r0, [r5] + addeq r4, r4, #1 + b _020686E4 +_02068650: + mov r6, r4 +_02068654: + mov r0, r6, lsl #0x18 + mov r0, r0, asr #0x18 + bl IsAcceptedMissionSlotEmpty + cmp r0, #0 + moveq r0, r4, lsl #1 + streqh r6, [r5, r0] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #8 + blt _02068654 + b _020686E4 +_02068680: + sub r0, r4, #1 + strb r0, [sp] + bl sub_0204E210 + cmp r0, #2 + bne _020686A8 + add r0, sp, #0 + bl sub_0204F1B4 + cmp r0, #0 + mvneq r0, #0 + streqb r0, [sp] +_020686A8: + ldrsb ip, [sp] + ldr r1, _020686F0 ; =_020B0A54 + mov lr, #2 + mov r0, #0xb0 +_020686B8: + cmp ip, lr + mulne r2, lr, r0 + ldrne r3, [r1] + ldrneb r2, [r3, r2] + cmpne r2, #0 + movne r2, r4, lsl #1 + strneh lr, [r5, r2] + add lr, lr, #1 + addne r4, r4, #1 + cmp lr, #0x20 + blt _020686B8 +_020686E4: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_020686F0: .word _020B0A54 + arm_func_end sub_02068390 + + arm_func_start sub_020686F4 +sub_020686F4: ; 0x020686F4 +#if defined(EUROPE) +#define SUB_020686F4_WORD_OFFSET 2 +#elif defined(JAPAN) +#define SUB_020686F4_WORD_OFFSET -0x3C2 +#else +#define SUB_020686F4_WORD_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x68 + ldr r0, _02068E14 ; =_020B0B2C + mov r4, #0 + ldr r7, [r0, #0x14] + ldr r5, [r7, #4] + cmp r5, #0x15 + addls pc, pc, r5, lsl #2 + b _02068E08 +_02068718: ; jump table + b _02068770 ; case 0 + b _02068770 ; case 1 + b _02068770 ; case 2 + b _02068770 ; case 3 + b _02068770 ; case 4 + b _02068770 ; case 5 + b _02068770 ; case 6 + b _02068770 ; case 7 + b _02068770 ; case 8 + b _02068770 ; case 9 + b _020688D0 ; case 10 + b _02068960 ; case 11 + b _020689F0 ; case 12 + b _02068A6C ; case 13 + b _02068AE8 ; case 14 + b _02068AE8 ; case 15 + b _02068AE8 ; case 16 + b _02068AE8 ; case 17 + b _02068770 ; case 18 + b _02068C48 ; case 19 + b _02068CA4 ; case 20 + b _02068D00 ; case 21 +_02068770: + add r1, r7, #0x188 + mov r0, r5 + add r4, r1, #0xc00 + bl sub_02067584 + cmp r0, #0 + movne r4, #0 + bne _02068E08 + ldr r0, _02068E14 ; =_020B0B2C + add r1, r7, #0xc + ldr r0, [r0, #0x14] + ldr r0, [r0, #4] + bl sub_02068390 + str r0, [r7, #0x6c] + mov r0, #0 + bl sub_0205B77C + bl sub_02068E7C + mov r1, #0 + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + cmp r5, #9 + bgt _02068800 + cmp r5, #0 + addge pc, pc, r5, lsl #2 + b _020688C0 +_020687D8: ; jump table + b _020688C0 ; case 0 + b _020688C0 ; case 1 + b _02068838 ; case 2 + b _0206880C ; case 3 + b _0206880C ; case 4 + b _0206882C ; case 5 + b _020688C0 ; case 6 + b _020688C0 ; case 7 + b _020688C0 ; case 8 + b _02068838 ; case 9 +_02068800: + cmp r5, #0x12 + beq _02068858 + b _020688C0 +_0206880C: + ldr r0, _02068E14 ; =_020B0B2C + ldr r1, _02068E1C ; =_020B0B2E + ldrsb r2, [r0, #2] + ldr r0, _02068E20 ; =0x00003815 + str r2, [r7, #8] + str r1, [r7, #0xef0] + strh r0, [r4, #8] + b _020688C8 +_0206882C: + ldr r0, _02068E24 ; =0x00003817 + strh r0, [r4, #8] + b _020688C8 +_02068838: + ldr r1, _02068E28 ; =0x00003816 + ldr r0, _02068E14 ; =_020B0B2C + strh r1, [r4, #8] + ldrsb r1, [r0, #5] + ldr r0, _02068E2C ; =_020B0B31 + str r1, [r7, #8] + str r0, [r7, #0xef0] + b _020688C8 +_02068858: + ldr r1, _02068E30 ; =0x00003818 + ldr r0, _02068E34 ; =sub_02069598 + strh r1, [r4, #8] + str r0, [r7, #0xe40] + mov r1, #1 + ldr r0, _02068E14 ; =_020B0B2C + strb r1, [r7, #0x7c] + ldrsb r1, [r0, #1] + ldr r0, _02068E38 ; =_020B0B2D + str r1, [r7, #8] + str r0, [r7, #0xef0] + b _020688A4 +_02068888: + bl sub_020693EC + ldrb r0, [r0] + cmp r0, #0 + bne _020688B0 + ldr r0, [r7, #8] + sub r0, r0, #1 + str r0, [r7, #8] +_020688A4: + ldr r0, [r7, #8] + cmp r0, #0 + bgt _02068888 +_020688B0: + ldr r1, [r7, #8] + ldr r0, _02068E14 ; =_020B0B2C + strb r1, [r0, #1] + b _020688C8 +_020688C0: + ldr r0, _02068E3C ; =0x00003F1E + strh r0, [r4, #8] +_020688C8: + mov r4, #1 + b _02068E08 +_020688D0: + add r0, r7, #0x188 + mov r6, r4 + add r5, r0, #0xc00 +_020688DC: + mov r0, r6, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205E984 + cmp r0, #0 + addeq r0, r7, r4, lsl #1 + streqh r6, [r0, #0xc] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #8 + blt _020688DC + str r4, [r7, #0x6c] + cmp r4, #0 + moveq r4, #0 + beq _02068E08 + mov r0, #0 + bl sub_0205E970 + ldr r1, _02068E40 ; =sub_02069074 + mov r2, #0 + bl sub_020690D8 + ldr r1, _02068E44 ; =0x00003819 + ldr r0, _02068E14 ; =_020B0B2C + strh r1, [r5, #8] + ldrsb r2, [r0, #0x12] + ldr r0, _02068E48 ; =_020B0B3E + mov r1, #0 + str r2, [r7, #8] + str r0, [r7, #0xef0] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + mov r4, #1 + b _02068E08 +_02068960: + add r0, r7, #0x188 + mov r6, r4 + add r5, r0, #0xc00 +_0206896C: + mov r0, r6, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EB00 + cmp r0, #0 + addeq r0, r7, r4, lsl #1 + streqh r6, [r0, #0xc] + add r6, r6, #1 + addeq r4, r4, #1 + cmp r6, #8 + blt _0206896C + str r4, [r7, #0x6c] + cmp r4, #0 + moveq r4, #0 + beq _02068E08 + mov r0, #0 + bl sub_0205EAE8 + ldr r1, _02068E40 ; =sub_02069074 + mov r2, #0 + bl sub_020690D8 + ldr r1, _02068E4C ; =0x0000381A + ldr r0, _02068E14 ; =_020B0B2C + strh r1, [r5, #8] + ldrsb r2, [r0, #0x11] + ldr r0, _02068E50 ; =_020B0B3D + mov r1, #0 + str r2, [r7, #8] + str r0, [r7, #0xef0] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + mov r4, #1 + b _02068E08 +_020689F0: + add r1, r7, #0x188 + mov r0, r4 + add r5, r1, #0xc00 + bl sub_0205EBF0 + cmp r0, #0 + moveq r0, r4 + streqh r0, [r7, #0xc] + addeq r4, r4, #1 + str r4, [r7, #0x6c] + cmp r4, #0 + moveq r4, #0 + beq _02068E08 + mov r0, #0 + bl sub_0205EBD8 + ldr r1, _02068E40 ; =sub_02069074 + mov r2, #0 + bl sub_020690D8 + ldr r1, _02068E54 ; =0x0000381B + ldr r0, _02068E14 ; =_020B0B2C + strh r1, [r5, #8] + ldrsb r2, [r0, #0xa] + ldr r0, _02068E58 ; =_020B0B36 + mov r1, #0 + str r2, [r7, #8] + str r0, [r7, #0xef0] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + mov r4, #1 + b _02068E08 +_02068A6C: + add r1, r7, #0x188 + mov r0, r4 + add r5, r1, #0xc00 + bl sub_0205EC50 + cmp r0, #0 + moveq r0, r4 + streqh r0, [r7, #0xc] + addeq r4, r4, #1 + str r4, [r7, #0x6c] + cmp r4, #0 + moveq r4, #0 + beq _02068E08 + mov r0, #0 + bl sub_0205EC38 + ldr r1, _02068E40 ; =sub_02069074 + mov r2, #0 + bl sub_020690D8 + ldr r1, _02068E5C ; =0x0000381C + ldr r0, _02068E14 ; =_020B0B2C + strh r1, [r5, #8] + ldrsb r2, [r0, #0xf] + ldr r0, _02068E60 ; =_020B0B3B + mov r1, #0 + str r2, [r7, #8] + str r0, [r7, #0xef0] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + mov r4, #1 + b _02068E08 +_02068AE8: + add r0, r7, #0x188 + cmp r5, #0x11 + add r8, r0, #0xc00 + bne _02068B74 + bl sub_0204E210 + cmp r0, #1 + bne _02068B74 + mov r6, r4 +_02068B08: + mov r0, r6, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r1, r6, lsl #0x18 + mov r5, r0 + mov r0, r1, asr #0x18 + bl IsAcceptedMissionSlotEmpty + cmp r0, #0 + bne _02068B64 + bl GetAdventureLogDungeonFloor + ldrb r1, [r5, #4] + ldrb r0, [r0] + cmp r1, r0 + bne _02068B58 + ldrb r0, [r5] + cmp r0, #5 + cmpne r0, #6 + cmpne r0, #7 + cmpne r0, #8 + beq _02068B64 +_02068B58: + add r0, r7, r4, lsl #1 + strh r6, [r0, #0xc] + add r4, r4, #1 +_02068B64: + add r6, r6, #1 + cmp r6, #8 + blt _02068B08 + b _02068BA0 +_02068B74: + mov r5, #0 +_02068B78: + mov r0, r5, lsl #0x18 + mov r0, r0, asr #0x18 + bl IsAcceptedMissionSlotEmpty + cmp r0, #0 + addeq r0, r7, r4, lsl #1 + streqh r5, [r0, #0xc] + add r5, r5, #1 + addeq r4, r4, #1 + cmp r5, #8 + blt _02068B78 +_02068BA0: + str r4, [r7, #0x6c] + cmp r4, #0 + moveq r4, #0 + beq _02068E08 + mov r0, #0 + bl GetAcceptedMission + mov r1, #0 + mov r2, #1 + bl sub_020690D8 + ldr r0, _02068E14 ; =_020B0B2C + ldr r1, [r0, #0x14] + ldr r1, [r1, #4] + cmp r1, #0xe + bne _02068BF4 + ldr r2, _02068E64 ; =0x0000381D + ldr r1, _02068E68 ; =_020B0B2C + strh r2, [r8, #8] + ldrsb r0, [r0] + str r0, [r7, #8] + str r1, [r7, #0xef0] + b _02068C18 +_02068BF4: +#ifdef EUROPE + sub r0, r1, #0xf + cmp r0, #2 + bhi _02068C18 + cmp r1, #0x11 + ldreq r1, _02068E64 ; =0x0000381F + ldr r0, _02068E14 ; =_020B0B2C + ldrne r1, _02068E6C ; =0x00003820 + strh r1, [r8, #8] + ldrsb r1, [r0, #0x13] + ldr r0, _02068E70 ; =_020B0B3F + str r1, [r7, #8] + str r0, [r7, #0xef0] +#else + sub r1, r1, #0xf + cmp r1, #2 + bhi _02068C18 + ldr r2, _02068E6C ; =0x0000381E + ldr r1, _02068E70 ; =_020B0B3F + strh r2, [r8, #8] + ldrsb r0, [r0, #0x13] + str r0, [r7, #8] + str r1, [r7, #0xef0] +#endif +_02068C18: + ldr r1, [r7, #0x6c] + ldr r0, [r7, #8] + mov r4, #1 + cmp r0, r1 + subge r0, r1, #1 + strge r0, [r7, #8] + mov r1, #0 + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + b _02068E08 +_02068C48: + add r0, r7, #0x188 + add r5, r0, #0xc00 + ldr r0, [r7, #0x74] + mov r2, r4 + b _02068C70 +_02068C5C: + add r1, r7, r4, lsl #1 + strh r4, [r1, #0xc] + add r1, r7, r4 + strb r2, [r1, #0x4c] + add r4, r4, #1 +_02068C70: + ldr r1, [r7, #0x6c] + cmp r4, r1 + blt _02068C5C + bl sub_02068E7C + ldr r0, _02068E28 ; =0x00003816 + ldr r1, _02068E34 ; =sub_02069598 + strh r0, [r5, #8] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + mov r4, #1 + strb r4, [r7, #0x7c] + b _02068E08 +_02068CA4: + add r0, r7, #0x188 + add r5, r0, #0xc00 + b _02068CBC +_02068CB0: + add r0, r7, r4, lsl #1 + strh r4, [r0, #0xc] + add r4, r4, #1 +_02068CBC: + ldr r0, [r7, #0x6c] + cmp r4, r0 + blt _02068CB0 + bl sub_0206901C + ldr r0, [r7, #0x74] + ldr r1, _02068E74 ; =sub_020690A4 + mov r2, #0 + bl sub_020690D8 + ldr r0, _02068E6C ; =0x0000381E + mov r1, #0 + strh r0, [r5, #8] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + strb r1, [r7, #0x7c] + mov r4, #1 + b _02068E08 +_02068D00: + add r0, r7, #0x188 + add r6, r0, #0xc00 + b _02068D18 +_02068D0C: + add r0, r7, r4, lsl #1 + strh r4, [r0, #0xc] + add r4, r4, #1 +_02068D18: + ldr r0, [r7, #0x6c] + cmp r4, r0 + blt _02068D0C + mov r8, #0 + str r8, [r7, #0x80] + add r5, sp, #0 + add r4, sp, #0x47 + add fp, sp, #0x48 + mov sb, #0x68 + b _02068DB0 +_02068D40: + add r0, r7, r8, lsl #1 + ldrsh r0, [r0, #0xc] + ldr r2, [r7, #0x74] + mov r1, r5 + add sl, r2, r0, lsl #5 + mov r0, sl + bl GenerateMissionDetailsStruct + mov r0, sl + mov r1, r4 + mov r2, fp + mov r3, #0 + bl sub_02069958 + str sl, [sp, #0x5c] + ldr r1, [r7, #0x80] + add sl, sp, #0 + mla r0, r1, sb, r7 + add lr, r0, #0x84 + mov ip, #6 +_02068D88: + ldmia sl!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02068D88 + ldmia sl, {r0, r1} + stmia lr, {r0, r1} + ldr r0, [r7, #0x80] + add r8, r8, #1 + add r0, r0, #1 + str r0, [r7, #0x80] +_02068DB0: + ldr r0, [r7, #0x6c] + cmp r8, r0 + blt _02068D40 + bl sub_0206901C + mov r1, #0 + ldr r0, _02068E6C ; =0x0000381E + str r1, [r6] + strh r0, [r6, #8] + mov r0, #0x10 + str r0, [r6, #0xc] + mov r0, #0x1a + str r0, [r6, #4] + ldr r0, _02068E18 ; =ChooseMissionTitle + str r1, [r7, #0xe40] + str r0, [r7, #0xe44] + ldr r0, _02068E14 ; =_020B0B2C + strb r1, [r7, #0x7c] + ldrsb r1, [r0, #3] + ldr r0, _02068E78 ; =_020B0B2F + mov r4, #1 + str r1, [r7, #8] + str r0, [r7, #0xef0] +_02068E08: + mov r0, r4 + add sp, sp, #0x68 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02068E14: .word _020B0B2C +_02068E18: .word ChooseMissionTitle +_02068E1C: .word _020B0B2E +_02068E20: .word 0x00003815 + SUB_020686F4_WORD_OFFSET +_02068E24: .word 0x00003817 + SUB_020686F4_WORD_OFFSET +_02068E28: .word 0x00003816 + SUB_020686F4_WORD_OFFSET +_02068E2C: .word _020B0B31 +_02068E30: .word 0x00003818 + SUB_020686F4_WORD_OFFSET +_02068E34: .word sub_02069598 +_02068E38: .word _020B0B2D +#ifdef JAPAN +_02068E3C: .word 0x000038A2 +#else +_02068E3C: .word 0x00003F1E + SUB_020686F4_WORD_OFFSET +#endif +_02068E40: .word sub_02069074 +_02068E44: .word 0x00003819 + SUB_020686F4_WORD_OFFSET +_02068E48: .word _020B0B3E +_02068E4C: .word 0x0000381A + SUB_020686F4_WORD_OFFSET +_02068E50: .word _020B0B3D +_02068E54: .word 0x0000381B + SUB_020686F4_WORD_OFFSET +_02068E58: .word _020B0B36 +_02068E5C: .word 0x0000381C + SUB_020686F4_WORD_OFFSET +_02068E60: .word _020B0B3B +_02068E64: .word 0x0000381D + SUB_020686F4_WORD_OFFSET +_02068E68: .word _020B0B2C +_02068E6C: .word 0x0000381E + SUB_020686F4_WORD_OFFSET +_02068E70: .word _020B0B3F +_02068E74: .word sub_020690A4 +_02068E78: .word _020B0B2F + arm_func_end sub_020686F4 + + arm_func_start sub_02068E7C +sub_02068E7C: ; 0x02068E7C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x68 + ldr r1, _02069018 ; =_020B0B2C + mov r8, r0 + ldr r7, [r1, #0x14] + add r4, r7, #0x188 + bl sub_0206901C + mov r5, #0 + str r5, [r7, #0xd88] + mov r0, #0x10 + str r0, [r4, #0xc0c] + str r5, [r7, #0x80] + b _02068FF4 +_02068EB0: + add r0, r7, r5, lsl #1 + ldrsh r0, [r0, #0xc] + mov r2, #0 + mov r1, #7 + mov r0, r0, lsl #0x18 + mov r3, r0, asr #0x18 + mov r0, #0xb0 + mla r6, r3, r0, r8 + add r0, r6, #4 + strb r2, [sp, #0x46] + strb r2, [sp, #0x48] + str r0, [sp, #8] + strh r2, [sp, #0x10] + strh r2, [sp, #0x12] + strh r2, [sp, #0x14] + strh r2, [sp, #0x16] + strb r1, [sp, #0x1a] + str r2, [sp, #0x5c] + str r6, [sp, #0x64] + bl GetLanguageType + ldrsb r1, [r6, #0x1c] + cmp r1, r0 + movne r0, #0 + strne r0, [sp, #0xc] + strne r0, [sp, #0x54] + strne r0, [sp, #0x58] + bne _02068F34 + add r2, r6, #0x1d + add r1, r6, #0x32 + add r0, r6, #0x56 + str r2, [sp, #0xc] + str r1, [sp, #0x54] + str r0, [sp, #0x58] +_02068F34: + ldr r0, [sp, #0x54] + mov r1, #1 + cmp r0, #0 + ldrneh r0, [r0] + cmpne r0, #0 + movne r1, #0 + cmp r1, #0 + movne r1, #0 + moveq r1, #6 + ldrb r0, [r6] + strb r1, [sp, #0x44] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02068FAC +_02068F6C: ; jump table + b _02068FAC ; case 0 + b _02068FA0 ; case 1 + b _02068FA0 ; case 2 + b _02068FAC ; case 3 + b _02068F88 ; case 4 + b _02068F94 ; case 5 + b _02068F94 ; case 6 +_02068F88: + mov r0, #3 + strb r0, [sp, #0x47] + b _02068FB4 +_02068F94: + mov r0, #4 + strb r0, [sp, #0x47] + b _02068FB4 +_02068FA0: + mov r0, #1 + strb r0, [sp, #0x47] + b _02068FB4 +_02068FAC: + mov r0, #2 + strb r0, [sp, #0x47] +_02068FB4: + ldr r1, [r7, #0x80] + mov r0, #0x68 + mla r0, r1, r0, r7 + add lr, sp, #0 + add ip, r0, #0x84 + mov r6, #6 +_02068FCC: + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r6, r6, #1 + bne _02068FCC + ldmia lr, {r0, r1} + stmia ip, {r0, r1} + ldr r0, [r7, #0x80] + add r5, r5, #1 + add r0, r0, #1 + str r0, [r7, #0x80] +_02068FF4: + ldr r0, [r7, #0x6c] + cmp r5, r0 + blt _02068EB0 + mov r0, #0x10 + str r0, [r4, #0xc0c] + mov r0, #0x1a + str r0, [r4, #0xc04] + add sp, sp, #0x68 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02069018: .word _020B0B2C + arm_func_end sub_02068E7C + + arm_func_start sub_0206901C +sub_0206901C: ; 0x0206901C + stmdb sp!, {r3, lr} + ldr r0, _02069070 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + add r2, r0, #0xe20 + mov r0, r1 +_02069034: + strb r0, [r2, r1] + add r1, r1, #1 + cmp r1, #0x20 + blt _02069034 + ldr r0, _02069070 ; =_020B0B2C + mov r1, #0x98 + ldr r0, [r0, #0x14] + add r0, r0, #0x188 + add r0, r0, #0xc00 + bl MemZero + ldr r0, _02069070 ; =_020B0B2C + ldr r1, [r0, #0x14] + add r0, r1, #0xe20 + str r0, [r1, #0xde8] + ldmia sp!, {r3, pc} + .align 2, 0 +_02069070: .word _020B0B2C + arm_func_end sub_0206901C + + arm_func_start sub_02069074 +sub_02069074: ; 0x02069074 + stmdb sp!, {r4, lr} + mov r4, r1 + bl AlreadyHaveMission + cmp r0, #0 + movne r0, #3 + strneb r0, [r4] + bl CountJobListMissions + cmp r0, #8 + ldrgeb r0, [r4] + orrge r0, r0, #1 + strgeb r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end sub_02069074 + + arm_func_start sub_020690A4 +sub_020690A4: ; 0x020690A4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl AlreadyHaveMission + cmp r0, #0 + bne _020690CC + mov r0, r5 + bl sub_0205FA38 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_020690CC: + mov r0, #3 + strb r0, [r4] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_020690A4 + + arm_func_start sub_020690D8 +sub_020690D8: ; 0x020690D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x68 + ldr r3, _020691B4 ; =_020B0B2C + mov sb, r0 + ldr r6, [r3, #0x14] + mov r8, r1 + mov r7, r2 + bl sub_0206901C + mov r5, #0 + str r5, [r6, #0x80] + add r4, r6, #0xe20 + mov fp, #0x68 + b _02069188 +_0206910C: + add r0, r6, r5, lsl #1 + ldrsh r0, [r0, #0xc] + add r1, sp, #0 + add sl, sb, r0, lsl #5 + mov r0, sl + bl GenerateMissionDetailsStruct + mov r0, sl + add r1, sp, #0x47 + add r2, sp, #0x48 + mov r3, r7 + bl sub_02069958 + cmp r8, #0 + beq _0206914C + mov r0, sl + add r1, r4, r5 + blx r8 +_0206914C: + ldr r1, [r6, #0x80] + add sl, sp, #0 + mla r0, r1, fp, r6 + add lr, r0, #0x84 + mov ip, #6 +_02069160: + ldmia sl!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02069160 + ldmia sl, {r0, r1} + stmia lr, {r0, r1} + ldr r0, [r6, #0x80] + add r5, r5, #1 + add r0, r0, #1 + str r0, [r6, #0x80] +_02069188: + ldr r0, [r6, #0x6c] + cmp r5, r0 + blt _0206910C + mov r0, #0 + str r0, [r6, #0xd88] + mov r0, #0x10 + str r0, [r6, #0xd94] + mov r0, #0x1a + str r0, [r6, #0xd8c] + add sp, sp, #0x68 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020691B4: .word _020B0B2C + arm_func_end sub_020690D8 + + arm_func_start sub_020691B8 +sub_020691B8: ; 0x020691B8 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _020692A8 ; =_020B0B2C + mvn r1, #1 + ldr ip, [r2, #0x14] + ldrsb r0, [ip, #0x7d] + cmp r0, r1 + bne _0206926C + ldr r0, [ip, #8] + mov r3, #4 + str r0, [ip, #0xd88] + ldr lr, [r2, #0x14] + ldr r0, _020692AC ; =_020A9288 + ldr r1, [lr, #0xe40] + add r2, lr, #0x188 + str r1, [sp] + ldr ip, [lr, #0x80] + ldr r1, _020692B0 ; =0x00441E33 + str ip, [sp, #4] + str r3, [sp, #8] + ldr r3, [lr, #0xe44] + add r2, r2, #0xc00 + bl CreateCollectionMenu + ldr r3, _020692A8 ; =_020B0B2C + mov r1, #0 + ldr ip, [r3, #0x14] + mov r2, #0xc + strb r0, [ip, #0x7d] + ldr r0, [r3, #0x14] + ldrsb r0, [r0, #0x7d] + bl sub_0202C6F0 + ldr r0, _020692A8 ; =_020B0B2C + mov r1, #1 + ldr r0, [r0, #0x14] + ldrsb r0, [r0, #0x7d] + bl SetCollectionMenuField0x1B2 + ldr r0, _020692A8 ; =_020B0B2C + ldr r1, [r0, #0x14] + ldrb r0, [r1, #0x7c] + cmp r0, #0 + bne _02069290 + ldrsb r0, [r1, #0x7d] + mov r1, #1 + bl sub_0202D07C + b _02069290 +_0206926C: + ldrb r1, [ip, #0xd84] + cmp r1, #0 + beq _0206928C + ldr r1, [ip, #0x80] + mov r2, #4 + mov r3, #0 + bl sub_0202C654 + b _02069290 +_0206928C: + bl sub_0202C620 +_02069290: + ldr r0, _020692A8 ; =_020B0B2C + mov r1, #0 + ldr r0, [r0, #0x14] + strb r1, [r0, #0xd84] + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_020692A8: .word _020B0B2C +_020692AC: .word _020A9288 +_020692B0: .word 0x00441E33 + arm_func_end sub_020691B8 + + arm_func_start sub_020692B4 +sub_020692B4: ; 0x020692B4 + stmdb sp!, {r3, lr} + ldr r0, _020692F8 ; =_020B0B2C + mvn r1, #1 + ldr r0, [r0, #0x14] + ldrsb r0, [r0, #0x7d] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202836C + ldr r0, _020692F8 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldrsb r0, [r0, #0x7d] + bl CloseCollectionMenu + ldr r0, _020692F8 ; =_020B0B2C + mvn r1, #1 + ldr r0, [r0, #0x14] + strb r1, [r0, #0x7d] + ldmia sp!, {r3, pc} + .align 2, 0 +_020692F8: .word _020B0B2C + arm_func_end sub_020692B4 + + arm_func_start sub_020692FC +sub_020692FC: ; 0x020692FC + stmdb sp!, {r3, lr} + ldr r0, _02069378 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r1, [r0, #4] + sub r0, r1, #0xe + cmp r0, #3 + bhi _02069328 + bl sub_02069444 + mov r1, #1 + bl CreateJobSummary + ldmia sp!, {r3, pc} +_02069328: + cmp r1, #0xa + cmpne r1, #0xb + cmpne r1, #0xc + cmpne r1, #0xd + beq _02069348 + sub r0, r1, #0x14 + cmp r0, #1 + bhi _02069358 +_02069348: + bl sub_02069444 + mov r1, #0 + bl CreateJobSummary + ldmia sp!, {r3, pc} +_02069358: + cmp r1, #0x13 + bne _0206936C + bl sub_0206941C + bl sub_02069790 + ldmia sp!, {r3, pc} +_0206936C: + bl sub_020693EC + bl sub_02069790 + ldmia sp!, {r3, pc} + .align 2, 0 +_02069378: .word _020B0B2C + arm_func_end sub_020692FC + + arm_func_start sub_0206937C +sub_0206937C: ; 0x0206937C + stmdb sp!, {r3, lr} + ldr r0, _020693E8 ; =_020B0B2C + ldr r0, [r0, #0x14] + ldr r1, [r0, #4] + cmp r1, #0xa + cmpne r1, #0xb + cmpne r1, #0xc + cmpne r1, #0xd + cmpne r1, #0xe + cmpne r1, #0xf + cmpne r1, #0x10 + cmpne r1, #0x11 + beq _020693BC + sub r0, r1, #0x14 + cmp r0, #1 + bhi _020693C8 +_020693BC: + bl sub_02069444 + bl sub_02069894 + ldmia sp!, {r3, pc} +_020693C8: + cmp r1, #0x13 + bne _020693DC + bl sub_0206941C + bl sub_02069870 + ldmia sp!, {r3, pc} +_020693DC: + bl sub_020693EC + bl sub_02069870 + ldmia sp!, {r3, pc} + .align 2, 0 +_020693E8: .word _020B0B2C + arm_func_end sub_0206937C + + arm_func_start sub_020693EC +sub_020693EC: ; 0x020693EC + ldr r1, _02069414 ; =_020B0B2C + ldr r0, _02069418 ; =_020B0A54 + ldr r3, [r1, #0x14] + ldr r2, [r0] + ldr r1, [r3, #8] + mov r0, #0xb0 + add r1, r3, r1, lsl #1 + ldrsh r1, [r1, #0xc] + smlabb r0, r1, r0, r2 + bx lr + .align 2, 0 +_02069414: .word _020B0B2C +_02069418: .word _020B0A54 + arm_func_end sub_020693EC + + arm_func_start sub_0206941C +sub_0206941C: ; 0x0206941C + ldr r1, _02069440 ; =_020B0B2C + mov r0, #0xb0 + ldr r3, [r1, #0x14] + ldr r1, [r3, #8] + ldr r2, [r3, #0x74] + add r1, r3, r1, lsl #1 + ldrsh r1, [r1, #0xc] + smlabb r0, r1, r0, r2 + bx lr + .align 2, 0 +_02069440: .word _020B0B2C + arm_func_end sub_0206941C + + arm_func_start sub_02069444 +sub_02069444: ; 0x02069444 + stmdb sp!, {r3, lr} + ldr r0, _02069558 ; =_020B0B2C + ldr r2, [r0, #0x14] + ldr r0, [r2, #4] + sub r0, r0, #0xa + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02069550 +_02069464: ; jump table + b _02069494 ; case 0 + b _020694B0 ; case 1 + b _020694CC ; case 2 + b _020694E8 ; case 3 + b _02069504 ; case 4 + b _02069504 ; case 5 + b _02069504 ; case 6 + b _02069504 ; case 7 + b _02069550 ; case 8 + b _02069550 ; case 9 + b _02069520 ; case 10 + b _02069538 ; case 11 +_02069494: + ldr r0, [r2, #8] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205E970 + ldmia sp!, {r3, pc} +_020694B0: + ldr r0, [r2, #8] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EAE8 + ldmia sp!, {r3, pc} +_020694CC: + ldr r0, [r2, #8] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EBD8 + ldmia sp!, {r3, pc} +_020694E8: + ldr r0, [r2, #8] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC38 + ldmia sp!, {r3, pc} +_02069504: + ldr r0, [r2, #8] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldmia sp!, {r3, pc} +_02069520: + ldr r0, [r2, #8] + ldr r1, [r2, #0x74] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + add r0, r1, r0, lsl #5 + ldmia sp!, {r3, pc} +_02069538: + ldr r0, [r2, #8] + ldr r1, [r2, #0x74] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0xc] + add r0, r1, r0, lsl #5 + ldmia sp!, {r3, pc} +_02069550: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02069558: .word _020B0B2C + arm_func_end sub_02069444 + + arm_func_start sub_0206955C +sub_0206955C: ; 0x0206955C + stmdb sp!, {r3, lr} + ldr r0, _02069594 ; =_020B0B2C + mvn r1, #1 + ldr r0, [r0, #0x14] + add r0, r0, #0xd00 + ldrsb r0, [r0, #0x85] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl ClosePortraitBox + ldr r0, _02069594 ; =_020B0B2C + mvn r1, #1 + ldr r0, [r0, #0x14] + strb r1, [r0, #0xd85] + ldmia sp!, {r3, pc} + .align 2, 0 +_02069594: .word _020B0B2C + arm_func_end sub_0206955C + + arm_func_start sub_02069598 +sub_02069598: ; 0x02069598 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _0206965C ; =_020B0B2C + tst r0, #0x400 + ldr r5, [r1, #0x14] + beq _02069654 + ldrsb r0, [r5, #0x7d] + ldr r6, [r5, #8] + bl GetWindowIdSelectedMenuItemIdx + ldr r1, [r5, #8] + cmp r1, r0 + bne _0206964C + add r4, r5, #0x4c + ldrb r0, [r4, r6] + cmp r0, #0 + beq _02069600 + mov r0, #6 + bl PlaySeVolumeWrapper + mov r0, #0 + strb r0, [r4, r6] + bl sub_020674E8 + cmp r0, #0 + bne _02069644 + ldrsb r0, [r5, #0x7d] + mov r1, #0 + bl sub_0202D07C + b _02069644 +_02069600: + ldr r0, [r5, #0x78] + cmp r0, #0 + blt _0206961C + bl sub_020674E8 + ldr r1, [r5, #0x78] + cmp r0, r1 + bhs _0206963C +_0206961C: + mov r0, #6 + bl PlaySeVolumeWrapper + ldrsb r0, [r5, #0x7d] + mov r1, #1 + bl sub_0202D07C + mov r0, #1 + strb r0, [r4, r6] + b _02069644 +_0206963C: + mov r0, #2 + bl PlaySeVolumeWrapper +_02069644: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_0206964C: + mov r0, #3 + bl PlaySeVolumeWrapper +_02069654: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0206965C: .word _020B0B2C + arm_func_end sub_02069598 + + arm_func_start ChooseMissionTitle +ChooseMissionTitle: ; 0x02069660 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _020696E4 ; =_020B0B2C + mov r5, r0 + ldr r0, [r3, #0x14] + add r0, r0, r1 + ldrb r0, [r0, #0x4c] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + str r0, [r2] + mov r0, #0x68 + mul r4, r1, r0 + ldr r0, _020696E4 ; =_020B0B2C + ldr r0, [r0, #0x14] + add r0, r0, r4 + ldr r0, [r0, #0xe0] + cmp r0, #0 + beq _020696C4 + bl IsMissionTypeSpecialEpisode + cmp r0, #0 + beq _020696C4 + mov r0, r5 + bl FormatSpecialEpisodeMissionHeader + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_020696C4: + ldr r1, _020696E4 ; =_020B0B2C + mov r0, r5 + ldr r1, [r1, #0x14] + add r1, r1, #0x84 + add r1, r1, r4 + bl FormatMissionHeader + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020696E4: .word _020B0B2C + arm_func_end ChooseMissionTitle + + arm_func_start sub_020696E8 +sub_020696E8: ; 0x020696E8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x154 + mov r4, r0 + add r0, sp, #0x104 + bl InitPreprocessorArgs + bl CountJobListMissions + str r0, [sp, #0x128] + mov r0, #8 + str r0, [sp, #0x12c] + add r3, sp, #0x104 + str r3, [sp] + ldr r2, _0206974C ; =0x00003813 + add r0, sp, #4 + mov r1, #0x100 + mov r3, #0 + bl PreprocessStringFromId + mov r0, r4 + mov r1, #0 + mov r2, #3 + add r3, sp, #4 + bl DrawTextInWindow + mov r0, r4 + bl UpdateWindow + add sp, sp, #0x154 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +#if defined(EUROPE) +_0206974C: .word 0x00003815 +#elif defined(JAPAN) +_0206974C: .word 0x00003451 +#else +_0206974C: .word 0x00003813 +#endif + arm_func_end sub_020696E8 + + arm_func_start sub_02069750 +sub_02069750: ; 0x02069750 + stmdb sp!, {r4, lr} + sub sp, sp, #0x100 + ldr r1, _0206978C ; =0x00003814 + mov r4, r0 + add r0, sp, #0 + bl GetStringFromFileVeneer + add r3, sp, #0 + mov r0, r4 + mov r1, #0 + mov r2, #3 + bl DrawTextInWindow + mov r0, r4 + bl UpdateWindow + add sp, sp, #0x100 + ldmia sp!, {r4, pc} + .align 2, 0 +#if defined(EUROPE) +_0206978C: .word 0x00003816 +#elif defined(JAPAN) +_0206978C: .word 0x00003452 +#else +_0206978C: .word 0x00003814 +#endif + arm_func_end sub_02069750 + + arm_func_start sub_02069790 +sub_02069790: ; 0x02069790 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x14 + mov r1, #8 + bl MemAlloc + ldr r2, _020697F4 ; =_020B0B44 + mov r1, #0x14 + str r0, [r2] + bl MemZero + ldr r0, _020697F4 ; =_020B0B44 + mov ip, #0 + ldr r2, [r0] + ldr r1, _020697F8 ; =JOB_WINDOW_PARAMS_2 + str r4, [r2] + ldr r3, [r0] + ldr r2, _020697FC ; =sub_02069AEC + strh ip, [r3, #8] + ldr r0, [r0] + add r0, r0, #0xc + bl sub_0204707C + ldr r0, _020697F4 ; =_020B0B44 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x10] + ldmia sp!, {r4, pc} + .align 2, 0 +_020697F4: .word _020B0B44 +_020697F8: .word JOB_WINDOW_PARAMS_2 +_020697FC: .word sub_02069AEC + arm_func_end sub_02069790 + + arm_func_start CreateJobSummary +CreateJobSummary: ; 0x02069800 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r0, #0x14 + mov r1, #8 + bl MemAlloc + ldr r2, _02069864 ; =_020B0B44 + mov r1, #0x14 + str r0, [r2] + bl MemZero + ldr r0, _02069864 ; =_020B0B44 + mov ip, #0 + ldr r2, [r0] + ldr r1, _02069868 ; =JOB_WINDOW_PARAMS_2 + str r5, [r2, #4] + ldr r3, [r0] + ldr r2, _0206986C ; =sub_02069CC0 + strh ip, [r3, #8] + ldr r0, [r0] + add r0, r0, #0xc + bl sub_0204707C + ldr r0, _02069864 ; =_020B0B44 + ldr r0, [r0] + strb r4, [r0, #0x10] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02069864: .word _020B0B44 +_02069868: .word JOB_WINDOW_PARAMS_2 +_0206986C: .word sub_02069CC0 + arm_func_end CreateJobSummary + + arm_func_start sub_02069870 +sub_02069870: ; 0x02069870 + ldr r1, _0206988C ; =_020B0B44 + ldr ip, _02069890 ; =sub_02047188 + ldr r2, [r1] + str r0, [r2] + ldr r0, [r1] + add r0, r0, #0xc + bx ip + .align 2, 0 +_0206988C: .word _020B0B44 +_02069890: .word sub_02047188 + arm_func_end sub_02069870 + + arm_func_start sub_02069894 +sub_02069894: ; 0x02069894 + ldr r1, _020698B0 ; =_020B0B44 + ldr ip, _020698B4 ; =sub_02047188 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + add r0, r0, #0xc + bx ip + .align 2, 0 +_020698B0: .word _020B0B44 +_020698B4: .word sub_02047188 + arm_func_end sub_02069894 + + arm_func_start sub_020698B8 +sub_020698B8: ; 0x020698B8 + stmdb sp!, {r3, lr} + ldr r0, _02069900 ; =_020B0B44 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0xc] + cmpne r0, #0 + beq _020698F8 + bl sub_020470D0 + ldr r0, _02069900 ; =_020B0B44 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl sub_02047148 + mvn r1, #0 + cmp r0, r1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_020698F8: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02069900: .word _020B0B44 + arm_func_end sub_020698B8 + + arm_func_start sub_02069904 +sub_02069904: ; 0x02069904 + stmdb sp!, {r3, lr} + ldr r0, _0206993C ; =_020B0B44 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #0xc + bl sub_02047150 + ldr r0, _0206993C ; =_020B0B44 + ldr r0, [r0] + bl MemFree + ldr r0, _0206993C ; =_020B0B44 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0206993C: .word _020B0B44 + arm_func_end sub_02069904 + + arm_func_start sub_02069940 +sub_02069940: ; 0x02069940 + ldr r1, _02069954 ; =_020B0B44 + ldr r1, [r1] + cmp r1, #0 + strneh r0, [r1, #8] + bx lr + .align 2, 0 +_02069954: .word _020B0B44 + arm_func_end sub_02069940 + + arm_func_start sub_02069958 +sub_02069958: ; 0x02069958 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + mov r5, #0 + b _02069AD0 +_02069974: + mov r0, r5, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r4, r0 + ldrb r0, [r4] + cmp r0, #0 + beq _02069ACC + ldrb r1, [sb, #1] + ldrb r0, [r4, #1] + cmp r1, r0 + ldreqb r1, [sb, #2] + ldreqb r0, [r4, #2] + cmpeq r1, r0 + ldreqb r1, [sb, #4] + ldreqb r0, [r4, #4] + cmpeq r1, r0 + ldreqb r1, [sb, #5] + ldreqb r0, [r4, #5] + cmpeq r1, r0 + ldreq r1, [sb, #8] + ldreq r0, [r4, #8] + cmpeq r1, r0 + ldreqsh r1, [sb, #0xe] + ldreqsh r0, [r4, #0xe] + cmpeq r1, r0 + ldreqsh r1, [sb, #0x10] + ldreqsh r0, [r4, #0x10] + cmpeq r1, r0 + ldreqsh r1, [sb, #0x12] + ldreqsh r0, [r4, #0x12] + cmpeq r1, r0 + ldreqsh r1, [sb, #0x14] + ldreqsh r0, [r4, #0x14] + cmpeq r1, r0 + ldreqb r0, [sb, #0x16] + ldreqb r1, [r4, #0x16] + cmpeq r0, r1 + bne _02069ACC + add r1, sb, #0x18 + add r2, r4, #0x18 + bl sub_0205C870 + cmp r0, #0 + beq _02069ACC + add r0, sb, #0x1a + add r1, r4, #0x1a + bl sub_0205C8E0 + cmp r0, #0 + beq _02069ACC + ldrb r0, [r4] + sub r0, r0, #4 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02069AA4 +_02069A48: ; jump table + b _02069A5C ; case 0 + b _02069A6C ; case 1 + b _02069A88 ; case 2 + b _02069A6C ; case 3 + b _02069A6C ; case 4 +_02069A5C: + mov r0, #1 + strb r0, [r8] + strb r0, [r7] + b _02069ABC +_02069A6C: + cmp r6, #0 + movne r0, #3 + moveq r0, #1 + strb r0, [r8] + mov r0, #2 + strb r0, [r7] + b _02069ABC +_02069A88: + cmp r6, #0 + movne r0, #0 + moveq r0, #1 + strb r0, [r8] + mov r0, #3 + strb r0, [r7] + b _02069ABC +_02069AA4: + cmp r6, #0 + movne r0, #0 + moveq r0, #1 + strb r0, [r8] + mov r0, #0 + strb r0, [r7] +_02069ABC: + cmp r6, #0 + moveq r0, #0 + streqb r0, [r7] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02069ACC: + add r5, r5, #1 +_02069AD0: + cmp r5, #8 + blt _02069974 + mov r0, #2 + strb r0, [r8] + mov r0, #0 + strb r0, [r7] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end sub_02069958 + + arm_func_start sub_02069AEC +sub_02069AEC: ; 0x02069AEC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x68 + ldr r1, _02069CBC ; =_020B0B44 + mov r2, #0 + ldr r1, [r1] + mov r5, r0 + ldr r4, [r1] + add r0, r4, #4 + strb r2, [sp, #0x46] + strh r2, [sp, #0x10] + strh r2, [sp, #0x12] + strh r2, [sp, #0x14] + strh r2, [sp, #0x16] + str r2, [sp, #0x5c] + str r4, [sp, #0x64] + str r0, [sp, #8] + ldrsh r0, [r4, #0xa2] + cmp r0, #0 + moveq r0, #7 + streqb r0, [sp, #0x1a] + beq _02069B60 + mov r0, #2 + strb r0, [sp, #0x1a] + ldrh r0, [r4, #0x9e] + strh r0, [sp, #0x28] + ldrh r0, [r4, #0xa0] + strh r0, [sp, #0x2a] + ldrh r0, [r4, #0xa2] + strh r0, [sp, #0x2c] +_02069B60: + bl GetLanguageType + ldrsb r1, [r4, #0x1c] + cmp r1, r0 + movne r0, #0 + strne r0, [sp, #0xc] + strne r0, [sp, #0x54] + strne r0, [sp, #0x58] + bne _02069B98 + add r2, r4, #0x1d + add r1, r4, #0x32 + add r0, r4, #0x56 + str r2, [sp, #0xc] + str r1, [sp, #0x54] + str r0, [sp, #0x58] +_02069B98: + ldrb r0, [r4] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02069C00 +_02069BA8: ; jump table + b _02069C00 ; case 0 + b _02069C00 ; case 1 + b _02069C00 ; case 2 + b _02069C00 ; case 3 + b _02069C00 ; case 4 + b _02069BC8 ; case 5 + b _02069BF4 ; case 6 + b _02069BC8 ; case 7 +_02069BC8: + ldr r0, _02069CBC ; =_020B0B44 + ldr r1, [r0] + ldrsh r0, [r1, #8] + cmp r0, #0 + movne r0, #6 + strneb r0, [sp, #0x1a] + ldrnesh r0, [r1, #8] + strneh r0, [sp, #0x3c] + mov r0, #0 + strb r0, [sp, #0x48] + b _02069C50 +_02069BF4: + mov r0, #0 + strb r0, [sp, #0x48] + b _02069C50 +_02069C00: + ldrb r0, [r4, #0xae] + bl sub_0205BD40 + cmp r0, #0 + beq _02069C24 + cmp r0, #1 + beq _02069C30 + cmp r0, #2 + beq _02069C3C + b _02069C48 +_02069C24: + mov r0, #6 + strb r0, [sp, #0x48] + b _02069C50 +_02069C30: + mov r0, #4 + strb r0, [sp, #0x48] + b _02069C50 +_02069C3C: + mov r0, #5 + strb r0, [sp, #0x48] + b _02069C50 +_02069C48: + mov r0, #0 + strb r0, [sp, #0x48] +_02069C50: + ldr r0, [sp, #0x54] + mov r1, #1 + cmp r0, #0 + ldrneh r0, [r0] + cmpne r0, #0 + movne r1, #0 + cmp r1, #0 + movne r1, #0 + moveq r1, #6 + ldr r0, [sp, #0x58] + strb r1, [sp, #0x44] + cmp r0, #0 + ldrneh r0, [r0] + mov r1, #1 + cmpne r0, #0 + movne r1, #0 + cmp r1, #0 + movne r2, #0 + moveq r2, #9 + add r0, sp, #0 + mov r1, r5 + strb r2, [sp, #0x45] + bl MakeMissionDetails + mov r0, r5 + bl UpdateWindow + add sp, sp, #0x68 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02069CBC: .word _020B0B44 + arm_func_end sub_02069AEC + + arm_func_start sub_02069CC0 +sub_02069CC0: ; 0x02069CC0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x68 + ldr r1, _02069D3C ; =_020B0B44 + mov r6, r0 + ldr r0, [r1] + ldr r4, [r0, #4] + ldrb r5, [r0, #0x10] + mov r0, r4 + bl IsMissionTypeSpecialEpisode + cmp r0, #0 + beq _02069CFC + mov r0, r6 + mov r1, r4 + bl MakeSpecialEpisodeMissionDetails + b _02069D2C +_02069CFC: + add r1, sp, #0 + mov r0, r4 + bl GenerateMissionDetailsStruct + add r1, sp, #0x47 + add r2, sp, #0x48 + mov r0, r4 + mov r3, r5 + bl sub_02069958 + add r0, sp, #0 + mov r1, r6 + str r4, [sp, #0x5c] + bl MakeMissionDetails +_02069D2C: + mov r0, r6 + bl UpdateWindow + add sp, sp, #0x68 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02069D3C: .word _020B0B44 + arm_func_end sub_02069CC0 + + arm_func_start sub_02069D40 +sub_02069D40: ; 0x02069D40 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0xc4 + mov r1, #8 + bl MemAlloc + ldr r2, _02069D90 ; =_020B0B48 + mov r1, #0xc4 + str r0, [r2] + bl MemZero + ldr r0, _02069D90 ; =_020B0B48 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + strh r4, [r1, #0xc0] + ldr r1, [r0] + add r0, r1, #0x37 + bic r0, r0, #0x1f + str r0, [r1, #0x14] + ldmia sp!, {r4, pc} + .align 2, 0 +_02069D90: .word _020B0B48 + arm_func_end sub_02069D40 + + arm_func_start sub_02069D94 +sub_02069D94: ; 0x02069D94 + stmdb sp!, {r3, lr} + ldr r0, _02069DBC ; =_020B0B48 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02069DBC ; =_020B0B48 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02069DBC: .word _020B0B48 + arm_func_end sub_02069D94 + + arm_func_start sub_02069DC0 +sub_02069DC0: ; 0x02069DC0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20c + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r5, [r0] + ldr r1, [r5] + cmp r1, #0x3000 + bgt _02069E30 + bge _0206A388 + ldr r0, _0206A5E4 ; =0x00001001 + cmp r1, r0 + bgt _02069E10 + cmp r1, #0x1000 + blt _02069E04 + beq _0206A0AC + cmp r1, r0 + beq _0206A104 + b _0206A5D4 +_02069E04: + cmp r1, #0 + beq _02069E84 + b _0206A5D4 +_02069E10: + cmp r1, #0x2000 + bgt _02069E20 + beq _0206A464 + b _0206A5D4 +_02069E20: + add r0, r0, #0x1000 + cmp r1, r0 + beq _0206A490 + b _0206A5D4 +_02069E30: + cmp r1, #0x4000 + bgt _02069E4C + bge _0206A4A4 + ldr r0, _0206A5E8 ; =0x00003001 + cmp r1, r0 + beq _0206A3A0 + b _0206A5D4 +_02069E4C: + ldr r0, _0206A5EC ; =0x00004004 + cmp r1, r0 + bgt _02069E78 + sub r0, r0, #3 + subs r0, r1, r0 + addpl pc, pc, r0, lsl #2 + b _0206A5D4 +_02069E68: ; jump table + b _0206A4F8 ; case 0 + b _0206A4C4 ; case 1 + b _0206A584 ; case 2 + b _0206A5B0 ; case 3 +_02069E78: + cmp r1, #0x8000 + beq _0206A5C4 + b _0206A5D4 +_02069E84: + add r4, r5, #0x58 + add r5, r5, #0x90 + bl ov03_0233CAA8 + cmp r0, #1 + bne _02069F90 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, [r0] + cmp r1, #0 + movne r0, #1 + strne r0, [r1, #0xc] + mov r0, r4 + mov r1, #0x38 + bl MemZero + mov r0, r5 + mov r1, #0x18 + bl MemZero + ldr r1, _0206A5E0 ; =_020B0B48 + mov r2, #0x18 + ldr r0, [r1] + mov r6, #0x38 + str r2, [r0, #0xa8] + ldr r0, [r1] + ldr r3, _0206A5F0 ; =sub_0206A628 + str r5, [r0, #0xac] + ldr r2, [r1] + mov r0, #0 + str r6, [r2, #0xb0] + ldr r2, [r1] + mov r8, #1 + str r4, [r2, #0xb4] + ldr r2, [r1] + mov r7, #9 + str r3, [r2, #0xb8] + ldr r2, [r1] + mov r3, #0x12 + strb r0, [r2, #0xbc] + ldr r6, [r1] + mov r2, #0x11 + strb r8, [r6, #0x10] + ldr r6, [r1] + ldr r6, [r6, #0x14] + strb r7, [r6] + ldr r1, [r1] + ldr r1, [r1, #0x14] + strb r0, [r1, #1] + strb r3, [r4] + strb r2, [r5] + bl GetLanguageType + strb r0, [r5, #2] + ldrsb r1, [r5, #2] + add r0, r5, #4 + strb r1, [r4, #2] + bl GetMainTeamNameWithCheck + ldrb r0, [r5, #4] + cmp r0, #0 + bne _02069F6C + add r0, r5, #4 + bl SetQuestionMarks +_02069F6C: + add r0, r5, #4 + mov r1, #0x14 + bl ov01_02337B3C + ldr r1, _0206A5E0 ; =_020B0B48 + strb r0, [r5, #3] + ldr r0, [r1] + mov r1, #0x1000 + str r1, [r0] + b _0206A5D4 +_02069F90: + bl ov03_0233CAA8 + cmp r0, #0 + bne _0206A5D4 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, [r0] + cmp r1, #0 + movne r0, #0 + strne r0, [r1, #0xc] + mov r0, r4 + mov r1, #0x38 + bl MemZero + mov r0, r5 + mov r1, #0x18 + bl MemZero + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r0, [r0] + ldrsh r0, [r0, #0xc0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov sl, r0 + add sb, r4, #0x18 + ldmia sl!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + ldmia sl, {r0, r1, r2, r3} + ldr ip, _0206A5E0 ; =_020B0B48 + stmia sb, {r0, r1, r2, r3} + ldr r0, [ip] + mov r8, #0x38 + str r8, [r0, #0xa8] + ldr r0, [ip] + mov r7, #0x18 + str r4, [r0, #0xac] + ldr r0, [ip] + ldr r6, _0206A5F4 ; =_02337B68 + str r7, [r0, #0xb0] + ldr r0, [ip] + mov lr, #0 + str r5, [r0, #0xb4] + ldr r0, [ip] + mov fp, #9 + str r6, [r0, #0xb8] + ldr r0, [ip] + strb lr, [r0, #0xbc] + ldr r0, [ip] + strb lr, [r0, #0x10] + ldr r0, [ip] + ldr r0, [r0, #0x14] + strb fp, [r0] + ldr r0, [ip] + ldr r0, [r0, #0x14] + strb lr, [r0, #1] + mov r0, #0x12 + strb r0, [r4] + mov r0, #0x11 + strb r0, [r5] + bl GetLanguageType + strb r0, [r5, #2] + ldrsb r1, [r5, #2] + add r0, r4, #4 + strb r1, [r4, #2] + bl GetMainTeamNameWithCheck + add r0, r4, #4 + mov r1, #0x34 + bl ov01_02337B3C + strb r0, [r4, #3] + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x1000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A0AC: + add r0, r5, #0xa8 + mov r4, #1 + str r0, [sp, #0xac] + str r4, [sp, #0xa8] + ldr r1, [r5, #0xc] + add r0, sp, #0xa8 + str r1, [sp, #0xb8] + ldrb r3, [r5, #0x10] + mov r2, #0x20 + mov r1, #0 + strb r3, [sp, #0xbc] + ldr r3, [r5, #0x14] + str r3, [sp, #0xc0] + strh r2, [sp, #0xc4] + strb r1, [sp, #0xc6] + str r4, [sp, #0xc8] + bl ov01_02337BA0 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A5E4 ; =0x00001001 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A104: + bl ov01_02337E0C + movs r4, r0 + beq _0206A5D4 + bl ov01_02337C54 + cmp r4, #0xe + addls pc, pc, r4, lsl #2 + b _0206A5D4 +_0206A120: ; jump table + b _0206A5D4 ; case 0 + b _0206A380 ; case 1 + b _0206A5D4 ; case 2 + b _0206A5D4 ; case 3 + b _0206A15C ; case 4 + b _0206A380 ; case 5 + b _0206A380 ; case 6 + b _0206A380 ; case 7 + b _0206A380 ; case 8 + b _0206A380 ; case 9 + b _0206A380 ; case 10 + b _0206A380 ; case 11 + b _0206A380 ; case 12 + b _0206A380 ; case 13 + b _0206A380 ; case 14 +_0206A15C: + bl ov03_0233CAA8 + cmp r0, #1 + bne _0206A300 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r0, [r0] + add r0, r0, #0x70 + bl IsMissionTypeSpecialEpisode + cmp r0, #0 + beq _0206A244 + mov r0, #2 + bl IsSpecialEpisodeOpen + cmp r0, #0 + beq _0206A1B0 + ldr r1, _0206A5F8 ; =0x000037A8 + mov r0, #0x1c + bl ov03_0233CDC8 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A5FC ; =0x00002001 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A1B0: + add r0, sp, #0x1bc + bl InitPreprocessorArgs + mov r0, #2 + mov r1, #1 + bl SetSpecialEpisodeOpen + add r0, sp, #0x7e + mov r1, #0x2a + bl MemZero + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r4, [r0] + bl GetLanguageType + ldrsb r1, [r4, #0x5a] + cmp r1, r0 + add r0, sp, #0x7e + bne _0206A1FC + add r1, r4, #0x5c + mov r2, #0x14 + bl StrncpySimpleNoPadSafe + b _0206A204 +_0206A1FC: + ldr r1, _0206A600 ; =0x000038C9 + bl GetStringFromFileVeneer +_0206A204: + ldr r1, _0206A604 ; =0x0000379F + add r3, sp, #0x7e + add r2, sp, #0x1bc + mov r0, #0x1c + str r3, [sp, #0x1f4] + bl ov03_0233CDD8 + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x70 + bl CreateJobSummary + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x2000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A244: + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r0, [r0] + add r0, r0, #0x70 + bl AddMissionToJobList + cmp r0, #0 + bne _0206A2EC + bl sub_0205F5A8 + bl sub_0205F710 + add r0, sp, #0x16c + bl InitPreprocessorArgs + add r0, sp, #0x54 + mov r1, #0x2a + bl MemZero + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r4, [r0] + bl GetLanguageType + ldrsb r1, [r4, #0x5a] + cmp r1, r0 + add r0, sp, #0x54 + bne _0206A2A4 + add r1, r4, #0x5c + mov r2, #0x14 + bl StrncpySimpleNoPadSafe + b _0206A2AC +_0206A2A4: + ldr r1, _0206A600 ; =0x000038C9 + bl GetStringFromFileVeneer +_0206A2AC: + ldr r1, _0206A604 ; =0x0000379F + add r3, sp, #0x54 + add r2, sp, #0x16c + mov r0, #0x1c + str r3, [sp, #0x1a4] + bl ov03_0233CDD8 + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x70 + bl CreateJobSummary + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x2000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A2EC: + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x3000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A300: + bl ov03_0233CAA8 + cmp r0, #0 + bne _0206A5D4 + add r0, sp, #0x11c + bl InitPreprocessorArgs + add r0, sp, #0x2a + mov r1, #0x2a + bl MemZero + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r4, [r0] + bl GetLanguageType + ldrsb r1, [r4, #0x92] + cmp r1, r0 + add r0, sp, #0x2a + bne _0206A34C + add r1, r4, #0x94 + mov r2, #0x14 + bl StrncpySimpleNoPadSafe + b _0206A354 +_0206A34C: + ldr r1, _0206A600 ; =0x000038C9 + bl GetStringFromFileVeneer +_0206A354: + ldr r1, _0206A608 ; =0x00003793 + add r3, sp, #0x2a + add r2, sp, #0x11c + mov r0, #0x1c + str r3, [sp, #0x154] + bl ov03_0233CDD8 + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x8000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A380: + mov r0, #1 + b _0206A5D8 +_0206A388: + bl ov03_0233CAD8 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A5E8 ; =0x00003001 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A3A0: + bl ov03_0233CB3C + cmp r0, #2 + bne _0206A450 + bl ov03_0233CB10 + add r0, sp, #0xcc + bl InitPreprocessorArgs + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r0, [r0] + add r0, r0, #0x70 + bl AddMissionToJobList + bl sub_0205F5A8 + bl sub_0205F710 + add r0, sp, #0 + mov r1, #0x2a + bl MemZero + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r4, [r0] + bl GetLanguageType + ldrsb r1, [r4, #0x5a] + cmp r1, r0 + add r0, sp, #0 + bne _0206A408 + add r1, r4, #0x5c + mov r2, #0x14 + bl StrncpySimpleNoPadSafe + b _0206A410 +_0206A408: + ldr r1, _0206A600 ; =0x000038C9 + bl GetStringFromFileVeneer +_0206A410: + ldr r1, _0206A604 ; =0x0000379F + add r3, sp, #0 + add r2, sp, #0xcc + mov r0, #0x1c + str r3, [sp, #0x104] + bl ov03_0233CDD8 + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x70 + bl CreateJobSummary + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x2000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A450: + cmp r0, #1 + bne _0206A5D4 + bl ov03_0233CB10 + mov r0, #1 + b _0206A5D8 +_0206A464: + bl ov03_0233CDE4 + mov r4, r0 + bl sub_020698B8 + cmp r4, #0x12 + bne _0206A5D4 + bl sub_02069904 + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x4000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A490: + bl ov03_0233CDE4 + cmp r0, #0x12 + bne _0206A5D4 + mov r0, #1 + b _0206A5D8 +_0206A4A4: + ldr r1, _0206A60C ; =0x0000023B + mov r0, #0 + bl ov03_0233CDC8 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A610 ; =0x00004002 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A4C4: + bl ov03_0233CDE4 + cmp r0, #0x12 + bne _0206A5D4 + mov r0, #0xe0 + mov r1, #0x88 + mov r2, #1 + bl sub_02029F88 + bl sub_02003B94 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A614 ; =0x00004001 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A4F8: + mov r0, #3 + bl NoteSaveBase + mov r4, r0 + bl sub_02003BC8 + bl sub_02029FBC + cmp r4, #0 + bne _0206A558 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r0, [r0] + add r0, r0, #0x70 + bl IsMissionTypeSpecialEpisode + cmp r0, #0 + mov r0, #0x1c + beq _0206A53C + ldr r1, _0206A618 ; =0x0000379E + bl ov03_0233CDC8 + b _0206A544 +_0206A53C: +#ifdef JAPAN + ldr r1, _0206A90C ; =0x000004CD +#else + mov r1, #0x23c +#endif + bl ov03_0233CDC8 +_0206A544: + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A61C ; =0x00004003 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A558: + cmp r4, #1 + moveq r0, #3 + beq _0206A5D8 + ldr r1, _0206A620 ; =0x00000239 + mov r0, #0x1c + bl ov03_0233CDC8 + ldr r0, _0206A5E0 ; =_020B0B48 + ldr r1, _0206A5EC ; =0x00004004 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A584: + bl ov03_0233CDE4 + cmp r0, #0x12 + bne _0206A5D4 + ldr r1, _0206A624 ; =0x000037A0 + mov r0, #0x1c + bl ov03_0233CDC8 + ldr r0, _0206A5E0 ; =_020B0B48 + mov r1, #0x8000 + ldr r0, [r0] + str r1, [r0] + b _0206A5D4 +_0206A5B0: + bl ov03_0233CDE4 + cmp r0, #0x12 + bne _0206A5D4 + mov r0, #1 + b _0206A5D8 +_0206A5C4: + bl ov03_0233CDE4 + cmp r0, #0x12 + moveq r0, #2 + beq _0206A5D8 +_0206A5D4: + mov r0, #0 +_0206A5D8: + add sp, sp, #0x20c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#if defined(EUROPE) +#define SUB_02069DC0_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02069DC0_OFFSET -0x37E +#else +#define SUB_02069DC0_OFFSET 0 +#endif +_0206A5E0: .word _020B0B48 +_0206A5E4: .word 0x00001001 +_0206A5E8: .word 0x00003001 +_0206A5EC: .word 0x00004004 +_0206A5F0: .word sub_0206A628 +_0206A5F4: .word ov01_02337B68 +_0206A5F8: .word 0x000037A8 + SUB_02069DC0_OFFSET +_0206A5FC: .word 0x00002001 +#ifdef JAPAN +_0206A600: .word 0x00003507 +#else +_0206A600: .word 0x000038C9 + SUB_02069DC0_OFFSET +#endif +_0206A604: .word 0x0000379F + SUB_02069DC0_OFFSET +_0206A608: .word 0x00003793 + SUB_02069DC0_OFFSET +#ifdef JAPAN +_0206A60C: .word 0x000004CC +#else +_0206A60C: .word 0x0000023B +#endif +_0206A610: .word 0x00004002 +_0206A614: .word 0x00004001 +_0206A618: .word 0x0000379E + SUB_02069DC0_OFFSET +#ifdef JAPAN +_0206A90C: .word 0x000004CD +_0206A61C: .word 0x00004003 +_0206A620: .word 0x000004CA +#else +_0206A61C: .word 0x00004003 +_0206A620: .word 0x00000239 +#endif +_0206A624: .word 0x000037A0 + SUB_02069DC0_OFFSET + arm_func_end sub_02069DC0 + + arm_func_start sub_0206A628 +sub_0206A628: ; 0x0206A628 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov03_0233CAA8 + cmp r0, #1 + bne _0206A70C + add r0, r4, #4 + mov r1, #0x34 + bl ov01_02337B3C + ldrb r1, [r4, #3] + cmp r0, r1 + movne r0, #3 + ldmneia sp!, {r4, pc} + ldrb r0, [r4] + cmp r0, #0x12 + movne r0, #2 + ldmneia sp!, {r4, pc} + add r0, r4, #0x18 + bl IsMissionTypeSpecialEpisode + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, pc} + add r0, r4, #0x18 + bl sub_0205D1F4 + cmp r0, #0 + moveq r0, #6 + ldmeqia sp!, {r4, pc} + ldrsh r0, [r4, #0x2c] + mov r1, #1 + bl CanSendItem + cmp r0, #0 + moveq r0, #6 + ldmeqia sp!, {r4, pc} + ldrb r0, [r4, #0x2e] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0206A6E4 +_0206A6B8: ; jump table + b _0206A6E4 ; case 0 + b _0206A6CC ; case 1 + b _0206A6CC ; case 2 + b _0206A6CC ; case 3 + b _0206A6CC ; case 4 +_0206A6CC: + ldrsh r0, [r4, #0x30] + mov r1, #1 + bl CanSendItem + cmp r0, #0 + moveq r0, #6 + ldmeqia sp!, {r4, pc} +_0206A6E4: + add r0, r4, #0x18 + bl AlreadyHaveMission + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + add r0, r4, #0x18 + bl sub_0205FA38 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} +_0206A70C: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end sub_0206A628 diff --git a/asm/main_0206A878.s b/asm/main_0206A878.s index 4efce290..1537b7f1 100644 --- a/asm/main_0206A878.s +++ b/asm/main_0206A878.s @@ -1764,709 +1764,3 @@ _0206C08C: .align 2, 0 _0206C0D4: .word 0x00000FFF arm_func_end sub_0206BFA8 - - arm_func_start sub_0206C0D8 -sub_0206C0D8: ; 0x0206C0D8 - ldr r1, _0206C0E8 ; =_020B0B6C - ldrsh r1, [r1] - strh r1, [r0] - bx lr - .align 2, 0 -_0206C0E8: .word _020B0B6C - arm_func_end sub_0206C0D8 - - arm_func_start sub_0206C0EC -sub_0206C0EC: ; 0x0206C0EC - ldr r1, _0206C0F8 ; =_020B0B6C - strh r0, [r1] - bx lr - .align 2, 0 -_0206C0F8: .word _020B0B6C - arm_func_end sub_0206C0EC - - arm_func_start sub_0206C0FC -sub_0206C0FC: ; 0x0206C0FC - ldr r1, _0206C10C ; =_020B0B70 - ldrsh r1, [r1, #2] - strh r1, [r0] - bx lr - .align 2, 0 -_0206C10C: .word _020B0B70 - arm_func_end sub_0206C0FC - - arm_func_start sub_0206C110 -sub_0206C110: ; 0x0206C110 - ldr r1, _0206C11C ; =_020B0B70 - strh r0, [r1, #2] - bx lr - .align 2, 0 -_0206C11C: .word _020B0B70 - arm_func_end sub_0206C110 - - arm_func_start sub_0206C120 -sub_0206C120: ; 0x0206C120 - ldr r1, _0206C130 ; =_020B0B70 - ldrsh r1, [r1] - strh r1, [r0] - bx lr - .align 2, 0 -_0206C130: .word _020B0B70 - arm_func_end sub_0206C120 - - arm_func_start sub_0206C134 -sub_0206C134: ; 0x0206C134 - ldr r1, _0206C140 ; =_020B0B70 - strh r0, [r1] - bx lr - .align 2, 0 -_0206C140: .word _020B0B70 - arm_func_end sub_0206C134 - - arm_func_start sub_0206C144 -sub_0206C144: ; 0x0206C144 - ldr r3, _0206C160 ; =_020B0B74 - mov r2, #8 -_0206C14C: - ldrb r1, [r3], #1 - subs r2, r2, #1 - strb r1, [r0], #1 - bne _0206C14C - bx lr - .align 2, 0 -_0206C160: .word _020B0B74 - arm_func_end sub_0206C144 - - arm_func_start sub_0206C164 -sub_0206C164: ; 0x0206C164 - ldr r3, _0206C180 ; =_020B0B74 - mov r2, #8 -_0206C16C: - ldrb r1, [r0], #1 - subs r2, r2, #1 - strb r1, [r3], #1 - bne _0206C16C - bx lr - .align 2, 0 -_0206C180: .word _020B0B74 - arm_func_end sub_0206C164 - - arm_func_start sub_0206C184 -sub_0206C184: ; 0x0206C184 - ldr ip, _0206C198 ; =sub_0207A7EC - mov r0, #0 - mov r2, r1 - sub r1, r0, #1 - bx ip - .align 2, 0 -_0206C198: .word sub_0207A7EC - arm_func_end sub_0206C184 - - arm_func_start sub_0206C19C -sub_0206C19C: ; 0x0206C19C - stmdb sp!, {r4, lr} - mov r4, r1 - mov r0, #0 - mov r2, r4 - sub r1, r0, #1 - bl sub_0207A8F4 - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end sub_0206C19C - - arm_func_start sub_0206C1BC -sub_0206C1BC: ; 0x0206C1BC - bx lr - arm_func_end sub_0206C1BC - - arm_func_start DseDriver_LoadDefaultSettings -DseDriver_LoadDefaultSettings: ; 0x0206C1C0 - stmdb sp!, {r4, lr} - ldr r1, _0206C248 ; =DRIVER_WORK - mov r2, #1 - movs r4, r0 - strb r2, [r1, #0x3d] - subeq r0, r2, #0x100 - ldmeqia sp!, {r4, pc} - mov r1, #0x40 - bl DseMem_Clear - mov r0, #0 - str r0, [r4, #4] - str r0, [r4, #8] - str r0, [r4, #0xc] - mov r1, #8 - strb r1, [r4, #0x10] - strb r0, [r4, #0x11] - strh r0, [r4, #0x14] - mov r1, #0xf - strh r1, [r4, #0x16] - mov r1, #0x14 - strb r1, [r4, #0x12] - mov r1, #4 - strh r1, [r4, #0x18] - ldr r2, _0206C24C ; =_0206C184 - strh r1, [r4, #0x1a] - ldr r1, _0206C250 ; =_0206C19C - str r2, [r4, #0x1c] - str r1, [r4, #0x20] - ldr r1, _0206C254 ; =sub_0206C1BC - str r0, [r4, #0x24] - str r1, [r4, #0x28] - str r1, [r4, #0x2c] - str r0, [r4, #0x30] - ldmia sp!, {r4, pc} - .align 2, 0 -_0206C248: .word DRIVER_WORK -_0206C24C: .word sub_0206C184 -_0206C250: .word sub_0206C19C -_0206C254: .word sub_0206C1BC - arm_func_end DseDriver_LoadDefaultSettings - - arm_func_start DseDriver_IsSettingsValid -DseDriver_IsSettingsValid: ; 0x0206C258 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r0 - bne _0206C27C - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_0206C27C: - tst r4, #3 - beq _0206C29C - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_0206C29C: - ldr r0, [r4, #8] - mov r5, #0 - cmp r0, #0 - beq _0206C2B4 - tst r0, #0xf - beq _0206C2B8 -_0206C2B4: - orr r5, r5, #4 -_0206C2B8: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0206C2CC - tst r0, #0xf - beq _0206C2D0 -_0206C2CC: - orr r5, r5, #8 -_0206C2D0: - ldrb r0, [r4, #0x11] - ldrb r1, [r4, #0x10] - cmp r0, #0 - cmpne r0, #1 - orrne r5, r5, #0x100 - cmp r1, #4 - ldrb r0, [r4, #0x12] - orrlo r5, r5, #0x200 - cmp r0, r1 - ldrsh r1, [r4, #0x14] - orrls r5, r5, #0x400 - ldrsh r0, [r4, #0x16] - cmp r1, #0 - orrne r5, r5, #0x4000 - cmp r0, #0x10 - orrge r5, r5, #0x8000 - cmp r1, r0 - orrgt r5, r5, #0xc000 - cmp r5, #0 - beq _0206C330 - mov r1, r5 - mvn r0, #0x17 - mov r2, #0 - bl Dse_SetError -_0206C330: - mov r0, r5 - str r5, [r4] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DseDriver_IsSettingsValid - - arm_func_start DseDriver_ConfigureHeap -DseDriver_ConfigureHeap: ; 0x0206C33C - stmdb sp!, {r3, lr} - cmp r0, #0 - strne r1, [r0, #8] - strne r2, [r0, #0xc] - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mvn r0, #0x17 - ldmia sp!, {r3, pc} - arm_func_end DseDriver_ConfigureHeap - - arm_func_start sub_0206C36C -sub_0206C36C: ; 0x0206C36C - stmdb sp!, {r3, lr} - cmp r0, #0 - strneb r1, [r0, #0x11] - strneb r2, [r0, #0x10] - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mvn r0, #0x17 - ldmia sp!, {r3, pc} - arm_func_end sub_0206C36C - - arm_func_start sub_0206C39C -sub_0206C39C: ; 0x0206C39C - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0206C3C0 - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mvn r0, #0x17 - ldmia sp!, {r3, pc} -_0206C3C0: - cmp r1, #0 - movlt r1, #0 - cmp r2, #0 - strh r1, [r0, #0x14] - movlt r2, #0xf - strh r2, [r0, #0x16] - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0206C39C - - arm_func_start DseDriver_Init -DseDriver_Init: ; 0x0206C3E0 - stmdb sp!, {r4, lr} - ldr r1, _0206C5F8 ; =DRIVER_WORK - mov r4, r0 - ldrsb r1, [r1] - cmp r1, #1 - bne _0206C410 - mov r1, #0 - mov r2, r1 - mvn r0, #0xbf - bl Dse_SetError - mvn r0, #0xbf - ldmia sp!, {r4, pc} -_0206C410: - bl DseDriver_IsSettingsValid - movs r1, r0 - beq _0206C430 - mvn r0, #0x1d - mov r2, #0 - bl Dse_SetError - mvn r0, #0x1d - ldmia sp!, {r4, pc} -_0206C430: - bl OS_InitTick - mov r0, #0 - mov r1, r0 - bl OS_SetTick - bl OS_InitAlarm - ldr r0, _0206C5F8 ; =DRIVER_WORK - mov r3, #0 - strh r3, [r0, #2] - str r3, [r0, #4] - str r3, [r0, #0x10] - mov r2, #0xff - mov r1, #1 - strb r2, [r0, #0x3c] - strb r1, [r0, #0x3d] - rsb r1, r1, #0x1000 - strh r1, [r0, #0x3e] - str r3, [r0, #0x2c] - ldrb r1, [r4, #0x11] - cmp r1, #0 - ldreq r2, _0206C5FC ; =0x00002710 - moveq r1, #0x64 - ldrne r2, _0206C600 ; =0x0000414B - movne r1, #0x3c - strh r2, [r0, #0x28] - str r1, [r0, #0x30] - ldr r2, _0206C604 ; =0x00BC614E - ldr r1, _0206C5F8 ; =DRIVER_WORK - ldr r0, _0206C608 ; =_022B8330 - str r2, [r1, #0x34] - ldrb r1, [r4, #0x11] - strb r1, [r0, #0xdd8] - bl sub_0206C814 - ldr r1, _0206C5F8 ; =DRIVER_WORK - mov r0, #1 - strb r0, [r1, #0x38] - mov r3, #2 - ldr r2, _0206C60C ; =_020B1290 - ldr r0, _0206C608 ; =_022B8330 - strb r3, [r1, #0x39] - str r2, [r0, #0xed4] - mov r2, #0 - str r2, [r1, #0x71c] - str r2, [r1, #0x720] - str r2, [r1, #0x724] - str r2, [r1, #0x728] - ldrb r1, [r4, #0x10] - ldr ip, _0206C610 ; =DRIVER_WORK - mov r3, r2 - strb r1, [r0, #0xd10] -_0206C4F4: - add r2, r2, #1 - strb r3, [ip, #0x674] - cmp r2, #0x80 - add ip, ip, #1 - blt _0206C4F4 - ldr ip, _0206C5F8 ; =DRIVER_WORK - mov r0, #0x64 - strb r0, [ip, #0x67b] - mov r0, #0x7f - strb r0, [ip, #0x67f] - mov r0, #0x40 - strb r0, [ip, #0x67e] - add r0, r4, #0x28 - ldr lr, _0206C614 ; =_022B734C - ldmia r0, {r0, r1, r2} - stmia lr, {r0, r1, r2} - ldrsh ip, [ip, #0x28] - ldr r1, _0206C608 ; =_022B8330 - mov r2, #1 - str r3, [r1, #0xec8] - str r2, [r1, #0xecc] - str r3, [r1, #0xebc] - ldr r0, _0206C618 ; =_022B9130 - str r3, [r1, #0xec0] - sub r2, r2, #2 - strh r2, [r0, #0xc4] - strh ip, [r0, #0xc6] - strb r3, [r1, #0xed0] - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - add r2, r4, #0x1c - bl DseMem_Init - ldrsh r0, [r4, #0x16] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl DseVoice_ResetHW - bl DseVoice_ResetAll - bl sub_02070124 - bl sub_02075600 - bl sub_020729A4 - ldr r1, _0206C61C ; =_022B7331 - mov r2, #1 - mov r0, #0x7f -_0206C5A4: - add r2, r2, #1 - strb r0, [r1, #0x40] - cmp r2, #0x10 - add r1, r1, #1 - blt _0206C5A4 - ldr r0, _0206C5F8 ; =DRIVER_WORK - mov r1, #0 - strb r1, [r0, #0x40] - bl DseDriver_StartMainThread - ldrb r0, [r4, #0x12] - bl DseSwd_SysInit - ldr r0, _0206C5F8 ; =DRIVER_WORK - mov r1, #1 - strb r1, [r0] - mov r1, #0 - strb r1, [r0, #1] - ldrh r0, [r4, #0x18] - ldrh r1, [r4, #0x1a] - bl DseSe_SysReset - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0206C5F8: .word DRIVER_WORK -_0206C5FC: .word 0x00002710 -_0206C600: .word 0x0000414B -_0206C604: .word 0x00BC614E -_0206C608: .word _022B8330 -_0206C60C: .word _020B1290 -_0206C610: .word DRIVER_WORK -_0206C614: .word _022B734C -_0206C618: .word _022B9130 -_0206C61C: .word _022B7331 - arm_func_end DseDriver_Init - - arm_func_start sub_0206C620 -sub_0206C620: ; 0x0206C620 - stmdb sp!, {r3, lr} - ldr r0, _0206C684 ; =DRIVER_WORK - ldrsb r0, [r0] - cmp r0, #0 - mvneq r0, #0xc0 - ldmeqia sp!, {r3, pc} - bl DseSwd_SysQuit - mov r0, #0 - bl sub_0206C7F4 - bl sub_020756E8 - bl sub_02070158 - bl sub_02070148 - bl sub_02070EA0 - bl DseVoice_ResetAll - bl DseMem_Quit - bl sub_0206C814 - ldr r1, _0206C684 ; =DRIVER_WORK - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - str r0, [r1, #0x2c] - str r0, [r1, #4] - str r0, [r1, #0x10] - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C684: .word DRIVER_WORK - arm_func_end sub_0206C620 - - arm_func_start sub_0206C688 -sub_0206C688: ; 0x0206C688 - stmdb sp!, {r3, lr} - ldr r0, _0206C6B8 ; =DRIVER_WORK - ldrsb r1, [r0] - cmp r1, #0 - ldrnesb r0, [r0, #1] - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mvn r0, #0xc0 - bl Dse_SetError - mvn r0, #0xc0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C6B8: .word DRIVER_WORK - arm_func_end sub_0206C688 - - arm_func_start sub_0206C6BC -sub_0206C6BC: ; 0x0206C6BC - stmdb sp!, {r3, lr} - ldr r0, _0206C750 ; =DRIVER_WORK - ldrsb r1, [r0] - cmp r1, #0 - bne _0206C6E8 - mov r1, #0 - mov r2, r1 - mvn r0, #0xc0 - bl Dse_SetError - mvn r0, #0xc0 - ldmia sp!, {r3, pc} -_0206C6E8: - ldrsb r1, [r0, #1] - cmp r1, #1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #1 - strb r1, [r0, #1] - bl sub_02070F4C - ldr r0, _0206C750 ; =DRIVER_WORK - mov r1, #0 - ldr r0, [r0, #0x664] - bl DseSequence_PauseList - ldr r0, _0206C750 ; =DRIVER_WORK - mov r1, #0 - ldr r0, [r0, #0x668] - bl DseSequence_PauseList - mov r0, #0 - bl sub_0206F6FC - mov r0, #0 - bl sub_02070188 - mov r0, #0 - bl DseVoice_ResetHW - ldr r0, _0206C750 ; =DRIVER_WORK - mov r1, #2 - strb r1, [r0, #0x38] - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C750: .word DRIVER_WORK - arm_func_end sub_0206C6BC - - arm_func_start sub_0206C754 -sub_0206C754: ; 0x0206C754 - stmdb sp!, {r4, lr} - ldr r1, _0206C7F0 ; =DRIVER_WORK - mov r4, r0 - ldrsb r0, [r1, #1] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #1 - strb r2, [r1, #0x38] - ldrh r0, [r1, #0x3e] - mov r1, r4 - tst r0, #0xf - ldr r0, _0206C7F0 ; =DRIVER_WORK - moveq r2, #0 - mov r2, r2, lsl #0x18 - ldr r0, [r0, #0x664] - mov r2, r2, asr #0x18 - bl sub_0206DC78 - ldr r0, _0206C7F0 ; =DRIVER_WORK - ldrh r0, [r0, #0x3e] - tst r0, #0xf0 - movne r1, #1 - ldr r0, _0206C7F0 ; =DRIVER_WORK - moveq r1, #0 - mov r2, r1, lsl #0x18 - ldr r0, [r0, #0x668] - mov r1, r4 - mov r2, r2, asr #0x18 - bl sub_0206DC78 - mov r0, r4 - bl sub_0206F774 - mov r0, r4 - bl sub_020701B0 - ldr r0, _0206C7F0 ; =DRIVER_WORK - mov r1, #0 - strb r1, [r0, #1] - bl DseDriver_StartTickTimer - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0206C7F0: .word DRIVER_WORK - arm_func_end sub_0206C754 - - arm_func_start sub_0206C7F4 -sub_0206C7F4: ; 0x0206C7F4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl DseBgm_StopAll - mov r0, r4 - bl DseSe_StopAll - mov r0, r4 - bl sub_0206F9A4 - ldmia sp!, {r4, pc} - arm_func_end sub_0206C7F4 - - arm_func_start sub_0206C814 -sub_0206C814: ; 0x0206C814 - ldr r1, _0206C848 ; =DRIVER_WORK - mov r2, #0 - str r2, [r1, #0x654] - str r2, [r1, #0x658] - ldr r0, _0206C84C ; =_022B8330 - str r2, [r1, #0x65c] - str r2, [r0, #0xddc] - str r2, [r1, #0x660] - str r2, [r1, #0x664] - str r2, [r1, #0x668] - ldr ip, _0206C850 ; =DseBgm_SysSetupNoteList - str r2, [r1, #0x66c] - bx ip - .align 2, 0 -_0206C848: .word DRIVER_WORK -_0206C84C: .word _022B8330 -_0206C850: .word DseBgm_SysSetupNoteList - arm_func_end sub_0206C814 - - arm_func_start Dse_SetError -Dse_SetError: ; 0x0206C854 - stmdb sp!, {r3, lr} - ldr r3, _0206C880 ; =DRIVER_WORK - stmib r3, {r0, r1, r2} - ldr ip, [r3, #0x1c] - cmp ip, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - ldr r2, _0206C884 ; =_022B7334 - mov r3, r1 - blx ip - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C880: .word DRIVER_WORK -_0206C884: .word _022B7334 - arm_func_end Dse_SetError - - arm_func_start Dse_SetError2 -Dse_SetError2: ; 0x0206C888 - stmdb sp!, {r3, lr} - ldr r3, _0206C8BC ; =DRIVER_WORK - str r0, [r3, #0x10] - str r1, [r3, #0x14] - str r2, [r3, #0x18] - ldr ip, [r3, #0x20] - cmp ip, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - ldr r2, _0206C8C0 ; =_022B7340 - mov r3, r1 - blx ip - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C8BC: .word DRIVER_WORK -_0206C8C0: .word _022B7340 - arm_func_end Dse_SetError2 - -; https://decomp.me/scratch/C4osO - arm_func_start DseUtil_ByteSwap32 -DseUtil_ByteSwap32: ; 0x0206C8C4 - mov r3, r0, lsr #0x18 - mov r2, r0, lsr #8 - mov r1, r0, lsl #8 - mov r0, r0, lsl #0x18 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - and r1, r1, #0xff0000 - orr r1, r2, r1 - and r0, r0, #0xff000000 - orr r0, r1, r0 - bx lr - arm_func_end DseUtil_ByteSwap32 - - arm_func_start DseUtil_GetRandomNumber -DseUtil_GetRandomNumber: ; 0x0206C8F4 - ldr r1, _0206C914 ; =DRIVER_WORK - ldr r0, _0206C918 ; =0x00007FFF - ldr r2, [r1, #0x34] - eor r2, r2, r2, lsl #17 - eor r2, r2, r2, asr #15 - str r2, [r1, #0x34] - and r0, r2, r0 - bx lr - .align 2, 0 -_0206C914: .word DRIVER_WORK -_0206C918: .word 0x00007FFF - arm_func_end DseUtil_GetRandomNumber - -; https://decomp.me/scratch/KrgBG - arm_func_start DseMem_Init -DseMem_Init: ; 0x0206C91C - mov ip, r1 - tst r0, #0xf - bicne r0, r0, #0xf - ldr r1, _0206C980 ; =DRIVER_WORK - addne r0, r0, #0x10 - subne ip, ip, #0x10 - add r3, r0, ip - str r0, [r1, #0x6f4] - str r3, [r1, #0x6f8] - str ip, [r1, #0x6fc] - ldr r3, _0206C984 ; =0x74647373 - mov r1, #0x82 - str r3, [r0] - strb r1, [r0, #4] - mov r3, #0 - strb r3, [r0, #5] - add r1, r0, #0x10 - str r1, [r0, #8] - str r3, [r0, #0xc] - strb r3, [r0, #6] - ldr r3, _0206C988 ; =_022B7A30 - ldmia r2, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, ip - bx lr - .align 2, 0 -_0206C980: .word DRIVER_WORK -_0206C984: .word 0x74647373 -_0206C988: .word _022B7A30 - arm_func_end DseMem_Init diff --git a/asm/main_0206C1BC.s b/asm/main_0206C1BC.s new file mode 100644 index 00000000..a1f7ea15 --- /dev/null +++ b/asm/main_0206C1BC.s @@ -0,0 +1,602 @@ + .include "asm/macros.inc" + .include "main_0206C1BC.inc" + + .text + + arm_func_start sub_0206C1BC +sub_0206C1BC: ; 0x0206C1BC + bx lr + arm_func_end sub_0206C1BC + + arm_func_start DseDriver_LoadDefaultSettings +DseDriver_LoadDefaultSettings: ; 0x0206C1C0 + stmdb sp!, {r4, lr} + ldr r1, _0206C248 ; =DRIVER_WORK + mov r2, #1 + movs r4, r0 + strb r2, [r1, #0x3d] + subeq r0, r2, #0x100 + ldmeqia sp!, {r4, pc} + mov r1, #0x40 + bl DseMem_Clear + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #8] + str r0, [r4, #0xc] + mov r1, #8 + strb r1, [r4, #0x10] + strb r0, [r4, #0x11] + strh r0, [r4, #0x14] + mov r1, #0xf + strh r1, [r4, #0x16] + mov r1, #0x14 + strb r1, [r4, #0x12] + mov r1, #4 + strh r1, [r4, #0x18] + ldr r2, _0206C24C ; =_0206C184 + strh r1, [r4, #0x1a] + ldr r1, _0206C250 ; =_0206C19C + str r2, [r4, #0x1c] + str r1, [r4, #0x20] + ldr r1, _0206C254 ; =sub_0206C1BC + str r0, [r4, #0x24] + str r1, [r4, #0x28] + str r1, [r4, #0x2c] + str r0, [r4, #0x30] + ldmia sp!, {r4, pc} + .align 2, 0 +_0206C248: .word DRIVER_WORK +_0206C24C: .word sub_0206C184 +_0206C250: .word sub_0206C19C +_0206C254: .word sub_0206C1BC + arm_func_end DseDriver_LoadDefaultSettings + + arm_func_start DseDriver_IsSettingsValid +DseDriver_IsSettingsValid: ; 0x0206C258 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r0 + bne _0206C27C + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_0206C27C: + tst r4, #3 + beq _0206C29C + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_0206C29C: + ldr r0, [r4, #8] + mov r5, #0 + cmp r0, #0 + beq _0206C2B4 + tst r0, #0xf + beq _0206C2B8 +_0206C2B4: + orr r5, r5, #4 +_0206C2B8: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0206C2CC + tst r0, #0xf + beq _0206C2D0 +_0206C2CC: + orr r5, r5, #8 +_0206C2D0: + ldrb r0, [r4, #0x11] + ldrb r1, [r4, #0x10] + cmp r0, #0 + cmpne r0, #1 + orrne r5, r5, #0x100 + cmp r1, #4 + ldrb r0, [r4, #0x12] + orrlo r5, r5, #0x200 + cmp r0, r1 + ldrsh r1, [r4, #0x14] + orrls r5, r5, #0x400 + ldrsh r0, [r4, #0x16] + cmp r1, #0 + orrne r5, r5, #0x4000 + cmp r0, #0x10 + orrge r5, r5, #0x8000 + cmp r1, r0 + orrgt r5, r5, #0xc000 + cmp r5, #0 + beq _0206C330 + mov r1, r5 + mvn r0, #0x17 + mov r2, #0 + bl Dse_SetError +_0206C330: + mov r0, r5 + str r5, [r4] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DseDriver_IsSettingsValid + + arm_func_start DseDriver_ConfigureHeap +DseDriver_ConfigureHeap: ; 0x0206C33C + stmdb sp!, {r3, lr} + cmp r0, #0 + strne r1, [r0, #8] + strne r2, [r0, #0xc] + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mvn r0, #0x17 + ldmia sp!, {r3, pc} + arm_func_end DseDriver_ConfigureHeap + + arm_func_start sub_0206C36C +sub_0206C36C: ; 0x0206C36C + stmdb sp!, {r3, lr} + cmp r0, #0 + strneb r1, [r0, #0x11] + strneb r2, [r0, #0x10] + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mvn r0, #0x17 + ldmia sp!, {r3, pc} + arm_func_end sub_0206C36C + + arm_func_start sub_0206C39C +sub_0206C39C: ; 0x0206C39C + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0206C3C0 + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mvn r0, #0x17 + ldmia sp!, {r3, pc} +_0206C3C0: + cmp r1, #0 + movlt r1, #0 + cmp r2, #0 + strh r1, [r0, #0x14] + movlt r2, #0xf + strh r2, [r0, #0x16] + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0206C39C + + arm_func_start DseDriver_Init +DseDriver_Init: ; 0x0206C3E0 + stmdb sp!, {r4, lr} + ldr r1, _0206C5F8 ; =DRIVER_WORK + mov r4, r0 + ldrsb r1, [r1] + cmp r1, #1 + bne _0206C410 + mov r1, #0 + mov r2, r1 + mvn r0, #0xbf + bl Dse_SetError + mvn r0, #0xbf + ldmia sp!, {r4, pc} +_0206C410: + bl DseDriver_IsSettingsValid + movs r1, r0 + beq _0206C430 + mvn r0, #0x1d + mov r2, #0 + bl Dse_SetError + mvn r0, #0x1d + ldmia sp!, {r4, pc} +_0206C430: + bl OS_InitTick + mov r0, #0 + mov r1, r0 + bl OS_SetTick + bl OS_InitAlarm + ldr r0, _0206C5F8 ; =DRIVER_WORK + mov r3, #0 + strh r3, [r0, #2] + str r3, [r0, #4] + str r3, [r0, #0x10] + mov r2, #0xff + mov r1, #1 + strb r2, [r0, #0x3c] + strb r1, [r0, #0x3d] + rsb r1, r1, #0x1000 + strh r1, [r0, #0x3e] + str r3, [r0, #0x2c] + ldrb r1, [r4, #0x11] + cmp r1, #0 + ldreq r2, _0206C5FC ; =0x00002710 + moveq r1, #0x64 + ldrne r2, _0206C600 ; =0x0000414B + movne r1, #0x3c + strh r2, [r0, #0x28] + str r1, [r0, #0x30] + ldr r2, _0206C604 ; =0x00BC614E + ldr r1, _0206C5F8 ; =DRIVER_WORK + ldr r0, _0206C608 ; =_022B8330 + str r2, [r1, #0x34] + ldrb r1, [r4, #0x11] + strb r1, [r0, #0xdd8] + bl sub_0206C814 + ldr r1, _0206C5F8 ; =DRIVER_WORK + mov r0, #1 + strb r0, [r1, #0x38] + mov r3, #2 + ldr r2, _0206C60C ; =_020B1290 + ldr r0, _0206C608 ; =_022B8330 + strb r3, [r1, #0x39] + str r2, [r0, #0xed4] + mov r2, #0 + str r2, [r1, #0x71c] + str r2, [r1, #0x720] + str r2, [r1, #0x724] + str r2, [r1, #0x728] + ldrb r1, [r4, #0x10] + ldr ip, _0206C610 ; =DRIVER_WORK + mov r3, r2 + strb r1, [r0, #0xd10] +_0206C4F4: + add r2, r2, #1 + strb r3, [ip, #0x674] + cmp r2, #0x80 + add ip, ip, #1 + blt _0206C4F4 + ldr ip, _0206C5F8 ; =DRIVER_WORK + mov r0, #0x64 + strb r0, [ip, #0x67b] + mov r0, #0x7f + strb r0, [ip, #0x67f] + mov r0, #0x40 + strb r0, [ip, #0x67e] + add r0, r4, #0x28 + ldr lr, _0206C614 ; =_022B734C + ldmia r0, {r0, r1, r2} + stmia lr, {r0, r1, r2} + ldrsh ip, [ip, #0x28] + ldr r1, _0206C608 ; =_022B8330 + mov r2, #1 + str r3, [r1, #0xec8] + str r2, [r1, #0xecc] + str r3, [r1, #0xebc] + ldr r0, _0206C618 ; =_022B9130 + str r3, [r1, #0xec0] + sub r2, r2, #2 + strh r2, [r0, #0xc4] + strh ip, [r0, #0xc6] + strb r3, [r1, #0xed0] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + add r2, r4, #0x1c + bl DseMem_Init + ldrsh r0, [r4, #0x16] + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl DseVoice_ResetHW + bl DseVoice_ResetAll + bl sub_02070124 + bl sub_02075600 + bl sub_020729A4 + ldr r1, _0206C61C ; =_022B7331 + mov r2, #1 + mov r0, #0x7f +_0206C5A4: + add r2, r2, #1 + strb r0, [r1, #0x40] + cmp r2, #0x10 + add r1, r1, #1 + blt _0206C5A4 + ldr r0, _0206C5F8 ; =DRIVER_WORK + mov r1, #0 + strb r1, [r0, #0x40] + bl DseDriver_StartMainThread + ldrb r0, [r4, #0x12] + bl DseSwd_SysInit + ldr r0, _0206C5F8 ; =DRIVER_WORK + mov r1, #1 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x1a] + bl DseSe_SysReset + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0206C5F8: .word DRIVER_WORK +_0206C5FC: .word 0x00002710 +_0206C600: .word 0x0000414B +_0206C604: .word 0x00BC614E +_0206C608: .word _022B8330 +_0206C60C: .word _020B1290 +_0206C610: .word DRIVER_WORK +_0206C614: .word _022B734C +_0206C618: .word _022B9130 +_0206C61C: .word _022B7331 + arm_func_end DseDriver_Init + + arm_func_start sub_0206C620 +sub_0206C620: ; 0x0206C620 + stmdb sp!, {r3, lr} + ldr r0, _0206C684 ; =DRIVER_WORK + ldrsb r0, [r0] + cmp r0, #0 + mvneq r0, #0xc0 + ldmeqia sp!, {r3, pc} + bl DseSwd_SysQuit + mov r0, #0 + bl sub_0206C7F4 + bl sub_020756E8 + bl sub_02070158 + bl sub_02070148 + bl sub_02070EA0 + bl DseVoice_ResetAll + bl DseMem_Quit + bl sub_0206C814 + ldr r1, _0206C684 ; =DRIVER_WORK + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + str r0, [r1, #0x2c] + str r0, [r1, #4] + str r0, [r1, #0x10] + strh r0, [r1, #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C684: .word DRIVER_WORK + arm_func_end sub_0206C620 + + arm_func_start sub_0206C688 +sub_0206C688: ; 0x0206C688 + stmdb sp!, {r3, lr} + ldr r0, _0206C6B8 ; =DRIVER_WORK + ldrsb r1, [r0] + cmp r1, #0 + ldrnesb r0, [r0, #1] + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mvn r0, #0xc0 + bl Dse_SetError + mvn r0, #0xc0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C6B8: .word DRIVER_WORK + arm_func_end sub_0206C688 + + arm_func_start sub_0206C6BC +sub_0206C6BC: ; 0x0206C6BC + stmdb sp!, {r3, lr} + ldr r0, _0206C750 ; =DRIVER_WORK + ldrsb r1, [r0] + cmp r1, #0 + bne _0206C6E8 + mov r1, #0 + mov r2, r1 + mvn r0, #0xc0 + bl Dse_SetError + mvn r0, #0xc0 + ldmia sp!, {r3, pc} +_0206C6E8: + ldrsb r1, [r0, #1] + cmp r1, #1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #1 + strb r1, [r0, #1] + bl sub_02070F4C + ldr r0, _0206C750 ; =DRIVER_WORK + mov r1, #0 + ldr r0, [r0, #0x664] + bl DseSequence_PauseList + ldr r0, _0206C750 ; =DRIVER_WORK + mov r1, #0 + ldr r0, [r0, #0x668] + bl DseSequence_PauseList + mov r0, #0 + bl sub_0206F6FC + mov r0, #0 + bl sub_02070188 + mov r0, #0 + bl DseVoice_ResetHW + ldr r0, _0206C750 ; =DRIVER_WORK + mov r1, #2 + strb r1, [r0, #0x38] + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C750: .word DRIVER_WORK + arm_func_end sub_0206C6BC + + arm_func_start sub_0206C754 +sub_0206C754: ; 0x0206C754 + stmdb sp!, {r4, lr} + ldr r1, _0206C7F0 ; =DRIVER_WORK + mov r4, r0 + ldrsb r0, [r1, #1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #1 + strb r2, [r1, #0x38] + ldrh r0, [r1, #0x3e] + mov r1, r4 + tst r0, #0xf + ldr r0, _0206C7F0 ; =DRIVER_WORK + moveq r2, #0 + mov r2, r2, lsl #0x18 + ldr r0, [r0, #0x664] + mov r2, r2, asr #0x18 + bl sub_0206DC78 + ldr r0, _0206C7F0 ; =DRIVER_WORK + ldrh r0, [r0, #0x3e] + tst r0, #0xf0 + movne r1, #1 + ldr r0, _0206C7F0 ; =DRIVER_WORK + moveq r1, #0 + mov r2, r1, lsl #0x18 + ldr r0, [r0, #0x668] + mov r1, r4 + mov r2, r2, asr #0x18 + bl sub_0206DC78 + mov r0, r4 + bl sub_0206F774 + mov r0, r4 + bl sub_020701B0 + ldr r0, _0206C7F0 ; =DRIVER_WORK + mov r1, #0 + strb r1, [r0, #1] + bl DseDriver_StartTickTimer + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0206C7F0: .word DRIVER_WORK + arm_func_end sub_0206C754 + + arm_func_start sub_0206C7F4 +sub_0206C7F4: ; 0x0206C7F4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl DseBgm_StopAll + mov r0, r4 + bl DseSe_StopAll + mov r0, r4 + bl sub_0206F9A4 + ldmia sp!, {r4, pc} + arm_func_end sub_0206C7F4 + + arm_func_start sub_0206C814 +sub_0206C814: ; 0x0206C814 + ldr r1, _0206C848 ; =DRIVER_WORK + mov r2, #0 + str r2, [r1, #0x654] + str r2, [r1, #0x658] + ldr r0, _0206C84C ; =_022B8330 + str r2, [r1, #0x65c] + str r2, [r0, #0xddc] + str r2, [r1, #0x660] + str r2, [r1, #0x664] + str r2, [r1, #0x668] + ldr ip, _0206C850 ; =DseBgm_SysSetupNoteList + str r2, [r1, #0x66c] + bx ip + .align 2, 0 +_0206C848: .word DRIVER_WORK +_0206C84C: .word _022B8330 +_0206C850: .word DseBgm_SysSetupNoteList + arm_func_end sub_0206C814 + + arm_func_start Dse_SetError +Dse_SetError: ; 0x0206C854 + stmdb sp!, {r3, lr} + ldr r3, _0206C880 ; =DRIVER_WORK + stmib r3, {r0, r1, r2} + ldr ip, [r3, #0x1c] + cmp ip, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + ldr r2, _0206C884 ; =_022B7334 + mov r3, r1 + blx ip + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C880: .word DRIVER_WORK +_0206C884: .word _022B7334 + arm_func_end Dse_SetError + + arm_func_start Dse_SetError2 +Dse_SetError2: ; 0x0206C888 + stmdb sp!, {r3, lr} + ldr r3, _0206C8BC ; =DRIVER_WORK + str r0, [r3, #0x10] + str r1, [r3, #0x14] + str r2, [r3, #0x18] + ldr ip, [r3, #0x20] + cmp ip, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + ldr r2, _0206C8C0 ; =_022B7340 + mov r3, r1 + blx ip + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C8BC: .word DRIVER_WORK +_0206C8C0: .word _022B7340 + arm_func_end Dse_SetError2 + +; https://decomp.me/scratch/C4osO + arm_func_start DseUtil_ByteSwap32 +DseUtil_ByteSwap32: ; 0x0206C8C4 + mov r3, r0, lsr #0x18 + mov r2, r0, lsr #8 + mov r1, r0, lsl #8 + mov r0, r0, lsl #0x18 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + and r1, r1, #0xff0000 + orr r1, r2, r1 + and r0, r0, #0xff000000 + orr r0, r1, r0 + bx lr + arm_func_end DseUtil_ByteSwap32 + + arm_func_start DseUtil_GetRandomNumber +DseUtil_GetRandomNumber: ; 0x0206C8F4 + ldr r1, _0206C914 ; =DRIVER_WORK + ldr r0, _0206C918 ; =0x00007FFF + ldr r2, [r1, #0x34] + eor r2, r2, r2, lsl #17 + eor r2, r2, r2, asr #15 + str r2, [r1, #0x34] + and r0, r2, r0 + bx lr + .align 2, 0 +_0206C914: .word DRIVER_WORK +_0206C918: .word 0x00007FFF + arm_func_end DseUtil_GetRandomNumber + +; https://decomp.me/scratch/KrgBG + arm_func_start DseMem_Init +DseMem_Init: ; 0x0206C91C + mov ip, r1 + tst r0, #0xf + bicne r0, r0, #0xf + ldr r1, _0206C980 ; =DRIVER_WORK + addne r0, r0, #0x10 + subne ip, ip, #0x10 + add r3, r0, ip + str r0, [r1, #0x6f4] + str r3, [r1, #0x6f8] + str ip, [r1, #0x6fc] + ldr r3, _0206C984 ; =0x74647373 + mov r1, #0x82 + str r3, [r0] + strb r1, [r0, #4] + mov r3, #0 + strb r3, [r0, #5] + add r1, r0, #0x10 + str r1, [r0, #8] + str r3, [r0, #0xc] + strb r3, [r0, #6] + ldr r3, _0206C988 ; =_022B7A30 + ldmia r2, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, ip + bx lr + .align 2, 0 +_0206C980: .word DRIVER_WORK +_0206C984: .word 0x74647373 +_0206C988: .word _022B7A30 + arm_func_end DseMem_Init diff --git a/asm/overlay_00.s b/asm/overlay_00.s index f48ec248..88118d8b 100644 --- a/asm/overlay_00.s +++ b/asm/overlay_00.s @@ -36980,58806 +36980,3 @@ _022DB0D4: .word Dwci_GsFree _022DB0D8: .word Dwci_GsRealloc _022DB0DC: .word Dwci_GsMemalign arm_func_end Dwc_Init - - arm_func_start Dwci_Acc_SetMaskBits -Dwci_Acc_SetMaskBits: ; 0x022DB0E0 - mvn ip, r3 - tst r1, ip - movne r0, #0 - bxne lr - mvn r3, r3, lsl r2 - ldr ip, [r0] - and r3, ip, r3 - orr r1, r3, r1, lsl r2 - str r1, [r0] - mov r0, #1 - bx lr - arm_func_end Dwci_Acc_SetMaskBits - - arm_func_start Dwci_Acc_GetUserId -Dwci_Acc_GetUserId: ; 0x022DB10C - ldr r2, [r0] - ldr r1, _022DB128 ; =0x000007FF - ldr r0, [r0, #4] - and r1, r2, r1 - orr r1, r1, #0 - orr r0, r0, #0 - bx lr - .align 2, 0 -_022DB128: .word 0x000007FF - arm_func_end Dwci_Acc_GetUserId - - arm_func_start Dwci_Acc_GetPlayerId -Dwci_Acc_GetPlayerId: ; 0x022DB12C - ldr r0, [r0, #8] - bx lr - arm_func_end Dwci_Acc_GetPlayerId - - arm_func_start Dwci_Acc_GetFriendKey -Dwci_Acc_GetFriendKey: ; 0x022DB134 - ldr r1, [r0, #8] - ldr r0, [r0, #4] - orr r1, r1, #0 - orr r0, r0, #0 - bx lr - arm_func_end Dwci_Acc_GetFriendKey - - arm_func_start Dwci_Acc_GetGsProfileId -Dwci_Acc_GetGsProfileId: ; 0x022DB148 - ldr r0, [r0, #4] - bx lr - arm_func_end Dwci_Acc_GetGsProfileId - - arm_func_start Dwci_Acc_SetUserId -Dwci_Acc_SetUserId: ; 0x022DB150 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _022DB174 ; =0x000007FF - mov r4, r1 - mov r1, r2 - mov r2, #0 - mov r5, r0 - bl Dwci_Acc_SetMaskBits - str r4, [r5, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DB174: .word 0x000007FF - arm_func_end Dwci_Acc_SetUserId - - arm_func_start Dwci_Acc_SetPlayerId -Dwci_Acc_SetPlayerId: ; 0x022DB178 - str r1, [r0, #8] - bx lr - arm_func_end Dwci_Acc_SetPlayerId - - arm_func_start Dwci_Acc_SetFriendKey -Dwci_Acc_SetFriendKey: ; 0x022DB180 - stmib r0, {r1, r2} - bx lr - arm_func_end Dwci_Acc_SetFriendKey - - arm_func_start Dwci_Acc_SetGsProfileId -Dwci_Acc_SetGsProfileId: ; 0x022DB188 - str r1, [r0, #4] - bx lr - arm_func_end Dwci_Acc_SetGsProfileId - - arm_func_start Dwci_Acc_GetFlags -Dwci_Acc_GetFlags: ; 0x022DB190 - ldr r1, [r0] - ldr r0, _022DB1A0 ; =0x001FFFFF - and r0, r0, r1, lsr #11 - bx lr - .align 2, 0 -_022DB1A0: .word 0x001FFFFF - arm_func_end Dwci_Acc_GetFlags - - arm_func_start Dwci_Acc_GetFlag_DataType -Dwci_Acc_GetFlag_DataType: ; 0x022DB1A4 - stmdb sp!, {r3, lr} - bl Dwci_Acc_GetFlags - and r0, r0, #3 - ldmia sp!, {r3, pc} - arm_func_end Dwci_Acc_GetFlag_DataType - - arm_func_start Dwc_IsBuddyFriendData -Dwc_IsBuddyFriendData: ; 0x022DB1B4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_IsBuddyFriendData - cmp r0, #0 - beq _022DB1DC - mov r0, r4 - bl Dwci_IsReverseBuddyFriendData - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} -_022DB1DC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end Dwc_IsBuddyFriendData - - arm_func_start Dwci_IsBuddyFriendData -Dwci_IsBuddyFriendData: ; 0x022DB1E4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_Acc_GetFlag_DataType - cmp r0, #3 - bne _022DB214 - mov r0, r4 - bl Dwci_Acc_GetFlags - and r0, r0, #4 - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, pc} -_022DB214: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end Dwci_IsBuddyFriendData - - arm_func_start Dwci_IsReverseBuddyFriendData -Dwci_IsReverseBuddyFriendData: ; 0x022DB21C - stmdb sp!, {r3, lr} - bl Dwci_Acc_GetFlags - and r0, r0, #8 - cmp r0, #8 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end Dwci_IsReverseBuddyFriendData - - arm_func_start Dwci_IsBuddyMsgAlreadySent -Dwci_IsBuddyMsgAlreadySent: ; 0x022DB238 - stmdb sp!, {r3, lr} - bl Dwci_Acc_GetFlags - and r0, r0, #0x20 - cmp r0, #0x20 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end Dwci_IsBuddyMsgAlreadySent - - arm_func_start Dwc_GetFriendDataType -Dwc_GetFriendDataType: ; 0x022DB254 - ldr ip, _022DB25C ; =Dwci_Acc_GetFlag_DataType - bx ip - .align 2, 0 -_022DB25C: .word Dwci_Acc_GetFlag_DataType - arm_func_end Dwc_GetFriendDataType - - arm_func_start Dwci_Acc_SetFlags -Dwci_Acc_SetFlags: ; 0x022DB260 - ldr ip, _022DB270 ; =Dwci_Acc_SetMaskBits - ldr r3, _022DB274 ; =0x001FFFFF - mov r2, #0xb - bx ip - .align 2, 0 -_022DB270: .word Dwci_Acc_SetMaskBits -_022DB274: .word 0x001FFFFF - arm_func_end Dwci_Acc_SetFlags - - arm_func_start Dwci_Acc_SetFlag_DataType -Dwci_Acc_SetFlag_DataType: ; 0x022DB278 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl Dwci_Acc_GetFlags - bic r1, r0, #3 - mov r0, r5 - orr r1, r1, r4 - bl Dwci_Acc_SetFlags - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_Acc_SetFlag_DataType - - arm_func_start Dwci_SetBuddyFriendData -Dwci_SetBuddyFriendData: ; 0x022DB29C - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_Acc_GetFlag_DataType - cmp r0, #3 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl Dwci_Acc_GetFlags - orr r1, r0, #4 - mov r0, r4 - bl Dwci_Acc_SetFlags - ldmia sp!, {r4, pc} - arm_func_end Dwci_SetBuddyFriendData - - arm_func_start Dwci_SetReverseBuddyFlag -Dwci_SetReverseBuddyFlag: ; 0x022DB2C8 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - beq _022DB2E4 - bl Dwci_Acc_GetFlags - orr r1, r0, #8 - b _022DB2EC -_022DB2E4: - bl Dwci_Acc_GetFlags - bic r1, r0, #8 -_022DB2EC: - mov r0, r4 - bl Dwci_Acc_SetFlags - ldmia sp!, {r4, pc} - arm_func_end Dwci_SetReverseBuddyFlag - - arm_func_start Dwci_SetExpIsBuddyFriendFlag -Dwci_SetExpIsBuddyFriendFlag: ; 0x022DB2F8 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - beq _022DB314 - bl Dwci_Acc_GetFlags - orr r1, r0, #0x10 - b _022DB31C -_022DB314: - bl Dwci_Acc_GetFlags - bic r1, r0, #0x10 -_022DB31C: - mov r0, r4 - bl Dwci_Acc_SetFlags - ldmia sp!, {r4, pc} - arm_func_end Dwci_SetExpIsBuddyFriendFlag - - arm_func_start Dwci_SetSentBuddyReqFlag -Dwci_SetSentBuddyReqFlag: ; 0x022DB328 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - beq _022DB344 - bl Dwci_Acc_GetFlags - orr r1, r0, #0x20 - b _022DB34C -_022DB344: - bl Dwci_Acc_GetFlags - bic r1, r0, #0x20 -_022DB34C: - mov r0, r4 - bl Dwci_Acc_SetFlags - ldmia sp!, {r4, pc} - arm_func_end Dwci_SetSentBuddyReqFlag - - arm_func_start Dwc_Acc_CreateFriendKey -Dwc_Acc_CreateFriendKey: ; 0x022DB358 - stmdb sp!, {r4, lr} - sub sp, sp, #0x170 - mov r4, r0 - str r4, [sp] - str r1, [sp, #4] - cmp r2, #0 - beq _022DB37C - cmp r2, #1 - b _022DB3A0 -_022DB37C: - add r0, sp, #0x70 - mov r1, #7 - bl MATHi_CRC8InitTable - add r0, sp, #0x70 - add r1, sp, #0 - mov r2, #8 - bl MATH_CalcCRC8 - and r0, r0, #0x7f - b _022DB3D0 -_022DB3A0: - add r0, sp, #0x18 - bl MD5_Init - add r0, sp, #0x18 - add r1, sp, #0 - mov r2, #8 - bl MD5_Update - add r0, sp, #8 - add r1, sp, #0x18 - bl MD5_Digest - ldrb r0, [sp, #8] - mov r0, r0, asr #1 - and r0, r0, #0x7f -_022DB3D0: - orr r1, r0, #0 - orr r0, r4, #0 - add sp, sp, #0x170 - ldmia sp!, {r4, pc} - arm_func_end Dwc_Acc_CreateFriendKey - - arm_func_start Dwc_CheckFriendKey -Dwc_CheckFriendKey: ; 0x022DB3E0 - ldr ip, _022DB3FC ; =Dwc_Acc_CheckFriendKey - mov r3, r0 - mov r0, r1 - mov r1, r2 - ldr r2, [r3, #0x24] - mov r3, #0 - bx ip - .align 2, 0 -_022DB3FC: .word Dwc_Acc_CheckFriendKey - arm_func_end Dwc_CheckFriendKey - - arm_func_start Dwc_Acc_CheckFriendKey -Dwc_Acc_CheckFriendKey: ; 0x022DB400 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - sub ip, r0, #1 - and ip, r5, ip - mov r4, r1 - cmp ip, #0 - ldmleia sp!, {r3, r4, r5, pc} - mov r1, r2 - mov r0, ip - mov r2, r3 - bl Dwc_Acc_CreateFriendKey - cmp r4, r1 - cmpeq r5, r0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwc_Acc_CheckFriendKey - - arm_func_start Dwc_Acc_FriendKeyToGsProfileId -Dwc_Acc_FriendKeyToGsProfileId: ; 0x022DB444 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, #0 -_022DB458: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl Dwc_Acc_CheckFriendKey - cmp r0, #0 - beq _022DB484 - mov r0, #0 - sub r0, r0, #1 - and r0, r7, r0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022DB484: - add r4, r4, #1 - cmp r4, #2 - blt _022DB458 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Dwc_Acc_FriendKeyToGsProfileId - - arm_func_start Dwc_FriendKeyToString -Dwc_FriendKeyToString: ; 0x022DB498 - stmdb sp!, {r3, lr} - str r2, [sp] - mov r3, r1 - ldr r2, _022DB4B4 ; =ov00_02318B8C - mov r1, #0xd - bl OS_SnPrintf - ldmia sp!, {r3, pc} - .align 2, 0 -_022DB4B4: .word ov00_02318B8C - arm_func_end Dwc_FriendKeyToString - - arm_func_start Dwci_Acc_U64ToString32 -Dwci_Acc_U64ToString32: ; 0x022DB4B8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr lr, _022DB520 ; =0x66666667 - add r4, r2, #4 - smull ip, r2, lr, r4 - mov ip, r4, lsr #0x1f - add r2, ip, r2, asr #1 - cmp r2, #0 - ldr r7, _022DB524 ; =ov00_02318B94 - mov r6, #0 - ble _022DB514 - add r4, r3, r2 - sub r4, r4, #1 - mov ip, #0x1f -_022DB4EC: - and r5, r0, ip - ldrsb r5, [r7, r5] - mov r0, r0, lsr #5 - mov lr, r1, lsr #5 - strb r5, [r4, -r6] - add r6, r6, #1 - orr r0, r0, r1, lsl #27 - mov r1, lr - cmp r6, r2 - blt _022DB4EC -_022DB514: - mov r0, #0 - strb r0, [r3, r2] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022DB520: .word 0x66666667 -_022DB524: .word ov00_02318B94 - arm_func_end Dwci_Acc_U64ToString32 - - arm_func_start Dwci_Acc_LoginIdToUserName -Dwci_Acc_LoginIdToUserName: ; 0x022DB528 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r4, r1 - mov r5, r2 - bl Dwci_Acc_GetUserId - add r3, sp, #0x29 - mov r2, #0x2b - bl Dwci_Acc_U64ToString32 - mov r0, r6 - bl Dwci_Acc_GetPlayerId - mov r1, #0 - mov r2, #0x20 - add r3, sp, #0x14 - bl Dwci_Acc_U64ToString32 - mov r1, r4, lsr #0x18 - and r1, r1, #0xff - str r1, [sp] - mov r1, r4, lsr #0x10 - and r1, r1, #0xff - str r1, [sp, #4] - mov r1, r4, lsr #8 - and r1, r1, #0xff - str r1, [sp, #8] - and r1, r4, #0xff - str r1, [sp, #0xc] - add r2, sp, #0x14 - str r2, [sp, #0x10] - ldr r2, _022DB5B4 ; =ov00_02318BB8 - mov r0, r5 - mov r1, #0x15 - add r3, sp, #0x29 - bl OS_SnPrintf - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DB5B4: .word ov00_02318BB8 - arm_func_end Dwci_Acc_LoginIdToUserName - - arm_func_start Dwci_Acc_CreateUserData -Dwci_Acc_CreateUserData: ; 0x022DB5B8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x400 - mov r4, r1 - mov r1, #0 - mov r2, #0x40 - mov r5, r0 - bl MI_CpuFill8 - mov r0, #0x40 - str r0, [r5] - mov r0, #0 - str r0, [r5, #0x1c] - add r0, r5, #4 - str r4, [r5, #0x24] - bl Dwci_Acc_CreateTempLoginId - add r0, r5, #0x10 - mov r1, #0 - bl Dwci_Acc_SetFlag_DataType - ldr r1, _022DB630 ; =0xEDB88320 - add r0, sp, #0 - bl MATHi_CRC32InitTable - add r0, sp, #0 - mov r1, r5 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r5, #0x3c] - ldr r0, [r5, #0x20] - orr r0, r0, #1 - str r0, [r5, #0x20] - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DB630: .word 0xEDB88320 - arm_func_end Dwci_Acc_CreateUserData - - arm_func_start Dwci_Acc_CreateTempLoginId -Dwci_Acc_CreateTempLoginId: ; 0x022DB634 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x34 - mov r6, r0 - add r0, sp, #0 - bl OS_GetLowEntropyData - mov r3, #1 - add r2, sp, #0 -_022DB650: - add r0, r2, r3, lsl #2 - ldr r1, [r2, r3, lsl #2] - ldr r0, [r0, #-4] - eor r0, r1, r0 - str r0, [r2, r3, lsl #2] - add r3, r3, #1 - cmp r3, #8 - blo _022DB650 - add r0, sp, #0x20 - ldr r5, [sp, #0x1c] - mov r4, #0 - bl Dwc_Auth_GetId - ldr r0, [sp, #0x30] - cmp r0, #0 - beq _022DB6A0 - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x24] - mov r0, r6 - bl Dwci_Acc_SetUserId - b _022DB6B0 -_022DB6A0: - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - mov r0, r6 - bl Dwci_Acc_SetUserId -_022DB6B0: - ldr r0, _022DB6EC ; =0x6C078965 - ldr r1, _022DB6F0 ; =0x5D588B65 - umull r3, r2, r5, r0 - mla r2, r5, r1, r2 - ldr r1, _022DB6F4 ; =0x00269EC3 - mla r2, r4, r0, r2 - adds r0, r3, r1 - mov r0, r6 - adc r1, r2, #0 - bl Dwci_Acc_SetPlayerId - mov r0, r6 - mov r1, #1 - bl Dwci_Acc_SetFlag_DataType - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022DB6EC: .word 0x6C078965 -_022DB6F0: .word 0x5D588B65 -_022DB6F4: .word 0x00269EC3 - arm_func_end Dwci_Acc_CreateTempLoginId - - arm_func_start Dwci_Acc_CheckConsoleUserId -Dwci_Acc_CheckConsoleUserId: ; 0x022DB6F8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, sp, #0 - bl Dwc_Auth_GetId - ldr r0, [sp, #0x10] - cmp r0, #0 - mov r0, r4 - beq _022DB740 - bl Dwci_Acc_GetUserId - ldr r2, [sp, #4] - ldr r3, [sp] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #1 - add sp, sp, #0x14 - movne r0, #0 - ldmia sp!, {r3, r4, pc} -_022DB740: - bl Dwci_Acc_GetUserId - ldr r2, [sp, #0xc] - ldr r3, [sp, #8] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwci_Acc_CheckConsoleUserId - - arm_func_start Dwci_Acc_IsValidLoginId -Dwci_Acc_IsValidLoginId: ; 0x022DB764 - stmdb sp!, {r3, lr} - bl Dwci_Acc_GetFlag_DataType - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end Dwci_Acc_IsValidLoginId - - arm_func_start Dwci_Acc_IsAuthentic -Dwci_Acc_IsAuthentic: ; 0x022DB77C - ldr ip, _022DB788 ; =Dwci_Acc_IsValidLoginId - add r0, r0, #0x10 - bx ip - .align 2, 0 -_022DB788: .word Dwci_Acc_IsValidLoginId - arm_func_end Dwci_Acc_IsAuthentic - - arm_func_start Dwc_IsValidFriendData -Dwc_IsValidFriendData: ; 0x022DB78C - stmdb sp!, {r3, lr} - bl Dwci_Acc_GetFlag_DataType - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end Dwc_IsValidFriendData - - arm_func_start Dwci_Acc_IsValidFriendData -Dwci_Acc_IsValidFriendData: ; 0x022DB7A4 - ldr ip, _022DB7AC ; =Dwc_IsValidFriendData - bx ip - .align 2, 0 -_022DB7AC: .word Dwc_IsValidFriendData - arm_func_end Dwci_Acc_IsValidFriendData - - arm_func_start Dwc_CreateUserData -Dwc_CreateUserData: ; 0x022DB7B0 - ldr ip, _022DB7B8 ; =Dwci_Acc_CreateUserData - bx ip - .align 2, 0 -_022DB7B8: .word Dwci_Acc_CreateUserData - arm_func_end Dwc_CreateUserData - - arm_func_start Dwc_CheckUserData -Dwc_CheckUserData: ; 0x022DB7BC - stmdb sp!, {r4, lr} - sub sp, sp, #0x400 - ldr r1, _022DB7FC ; =0xEDB88320 - mov r4, r0 - add r0, sp, #0 - bl MATHi_CRC32InitTable - add r0, sp, #0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - ldr r1, [r4, #0x3c] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DB7FC: .word 0xEDB88320 - arm_func_end Dwc_CheckUserData - - arm_func_start Dwc_CheckHasProfile -Dwc_CheckHasProfile: ; 0x022DB800 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x10 - bl Dwci_Acc_IsValidLoginId - cmp r0, #0 - beq _022DB828 - ldr r0, [r4, #0x1c] - cmp r0, #0 - movgt r0, #1 - ldmgtia sp!, {r4, pc} -_022DB828: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end Dwc_CheckHasProfile - - arm_func_start Dwc_CheckValidConsole -Dwc_CheckValidConsole: ; 0x022DB830 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, r4, #0x10 - bl Dwci_Acc_GetFlag_DataType - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #1 - ldmeqia sp!, {r3, r4, pc} - add r0, sp, #0 - bl Dwc_Auth_GetId - ldr r0, [sp, #0x10] - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - add r0, r4, #0x10 - bl Dwci_Acc_GetUserId - ldr r2, [sp, #4] - ldr r3, [sp] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwc_CheckValidConsole - - arm_func_start Dwci_Acc_SetLoginIdToUserData -Dwci_Acc_SetLoginIdToUserData: ; 0x022DB898 - stmdb sp!, {r4, lr} - sub sp, sp, #0x400 - mov r4, r0 - add r3, r4, #0x10 - mov ip, r2 - ldmia r1, {r0, r1, r2} - stmia r3, {r0, r1, r2} - ldr r1, _022DB8EC ; =0xEDB88320 - add r0, sp, #0 - str ip, [r4, #0x1c] - bl MATHi_CRC32InitTable - add r0, sp, #0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r4, #0x3c] - ldr r0, [r4, #0x20] - orr r0, r0, #1 - str r0, [r4, #0x20] - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DB8EC: .word 0xEDB88320 - arm_func_end Dwci_Acc_SetLoginIdToUserData - - arm_func_start Dwc_CheckDirtyFlag -Dwc_CheckDirtyFlag: ; 0x022DB8F0 - ldr ip, _022DB8F8 ; =Dwci_Acc_IsDirty - bx ip - .align 2, 0 -_022DB8F8: .word Dwci_Acc_IsDirty - arm_func_end Dwc_CheckDirtyFlag - - arm_func_start Dwci_Acc_IsDirty -Dwci_Acc_IsDirty: ; 0x022DB8FC - ldr r0, [r0, #0x20] - and r0, r0, #1 - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end Dwci_Acc_IsDirty - - arm_func_start Dwc_ClearDirtyFlag -Dwc_ClearDirtyFlag: ; 0x022DB914 - ldr ip, _022DB91C ; =Dwci_Acc_ClearDirty - bx ip - .align 2, 0 -_022DB91C: .word Dwci_Acc_ClearDirty - arm_func_end Dwc_ClearDirtyFlag - - arm_func_start Dwci_Acc_ClearDirty -Dwci_Acc_ClearDirty: ; 0x022DB920 - stmdb sp!, {r4, lr} - sub sp, sp, #0x400 - mov r4, r0 - ldr r1, [r4, #0x20] - add r0, sp, #0 - bic r2, r1, #1 - ldr r1, _022DB960 ; =0xEDB88320 - str r2, [r4, #0x20] - bl MATHi_CRC32InitTable - add r0, sp, #0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r4, #0x3c] - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DB960: .word 0xEDB88320 - arm_func_end Dwci_Acc_ClearDirty - - arm_func_start Dwc_GetFriendKey -Dwc_GetFriendKey: ; 0x022DB964 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_Acc_GetFlag_DataType - cmp r0, #2 - movne r0, #0 - movne r1, r0 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl Dwci_Acc_GetFriendKey - ldmia sp!, {r4, pc} - arm_func_end Dwc_GetFriendKey - - arm_func_start Dwc_GetGsProfileId -Dwc_GetGsProfileId: ; 0x022DB98C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl Dwci_Acc_GetFlag_DataType - cmp r0, #1 - beq _022DB9DC - cmp r0, #2 - beq _022DB9BC - cmp r0, #3 - beq _022DB9D0 - b _022DB9E4 -_022DB9BC: - mov r0, r4 - bl Dwci_Acc_GetFriendKey - ldr r2, [r5, #0x24] - bl Dwc_Acc_FriendKeyToGsProfileId - ldmia sp!, {r3, r4, r5, pc} -_022DB9D0: - mov r0, r4 - bl Dwci_Acc_GetGsProfileId - ldmia sp!, {r3, r4, r5, pc} -_022DB9DC: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DB9E4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwc_GetGsProfileId - - arm_func_start Dwc_CreateFriendKey -Dwc_CreateFriendKey: ; 0x022DB9EC - stmdb sp!, {r3, lr} - mov r3, r0 - ldr r0, [r3, #0x1c] - mov r2, #0 - mov r1, r2 - cmp r0, #0 - beq _022DBA14 - ldr r1, [r3, #0x24] - bl Dwc_Acc_CreateFriendKey - mov r2, r0 -_022DBA14: - mov r0, r2 - ldmia sp!, {r3, pc} - arm_func_end Dwc_CreateFriendKey - - arm_func_start Dwc_CreateFriendKeyToken -Dwc_CreateFriendKeyToken: ; 0x022DBA1C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r4, r2 - mov r6, r0 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl Dwci_Acc_SetFriendKey - mov r0, r6 - mov r1, #2 - bl Dwci_Acc_SetFlag_DataType - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_CreateFriendKeyToken - - arm_func_start Dwc_CreateExchangeToken -Dwc_CreateExchangeToken: ; 0x022DBA58 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r5 - bl Dwci_Acc_IsAuthentic - cmp r0, #0 - addeq r0, r5, #4 - ldmeqia r0, {r0, r1, r2} - stmeqia r4, {r0, r1, r2} - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x1c] - mov r0, r4 - bl Dwci_Acc_SetGsProfileId - mov r0, r4 - mov r1, #3 - bl Dwci_Acc_SetFlag_DataType - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwc_CreateExchangeToken - - arm_func_start Dwc_SetGsProfileId -Dwc_SetGsProfileId: ; 0x022DBAAC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r5 - mov r1, r4 - bl Dwci_Acc_SetGsProfileId - mov r0, r5 - mov r1, #3 - bl Dwci_Acc_SetFlag_DataType - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwc_SetGsProfileId - - arm_func_start Dwc_LoginIdToUserName -Dwc_LoginIdToUserName: ; 0x022DBAE0 - ldr ip, _022DBAF4 ; =Dwci_Acc_LoginIdToUserName - mov r3, r0 - mov r0, r1 - ldr r1, [r3, #0x24] - bx ip - .align 2, 0 -_022DBAF4: .word Dwci_Acc_LoginIdToUserName - arm_func_end Dwc_LoginIdToUserName - - arm_func_start Dwc_IsEqualFriendData -Dwc_IsEqualFriendData: ; 0x022DBAF8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r7, r0 - bl Dwci_Acc_GetFlag_DataType - mov r5, r0 - mov r0, r4 - bl Dwci_Acc_GetFlag_DataType - cmp r5, r0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #3 - bne _022DBB4C - mov r0, r7 - bl Dwci_Acc_GetGsProfileId - mov r5, r0 - mov r0, r4 - bl Dwci_Acc_GetGsProfileId - cmp r5, r0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022DBB4C: - cmp r5, #1 - bne _022DBBA0 - mov r0, r7 - bl Dwci_Acc_GetUserId - mov r5, r0 - mov r6, r1 - mov r0, r4 - bl Dwci_Acc_GetUserId - cmp r6, r1 - cmpeq r5, r0 - bne _022DBB98 - mov r0, r7 - bl Dwci_Acc_GetPlayerId - mov r5, r0 - mov r0, r4 - bl Dwci_Acc_GetPlayerId - cmp r5, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022DBB98: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022DBBA0: - cmp r5, #2 - bne _022DBBD4 - mov r0, r7 - bl Dwci_Acc_GetFriendKey - mov r5, r0 - mov r6, r1 - mov r0, r4 - bl Dwci_Acc_GetFriendKey - cmp r6, r1 - cmpeq r5, r0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022DBBD4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Dwc_IsEqualFriendData - - arm_func_start Dwc_ReportFriendData -Dwc_ReportFriendData: ; 0x022DBBDC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x24 - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl Dwci_Acc_GetFlag_DataType - cmp r0, #3 - mov r0, r4 - bne _022DBC0C - bl Dwc_IsBuddyFriendData - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} -_022DBC0C: - bl Dwci_Acc_GetFlag_DataType - cmp r0, #2 - mov r0, r4 - bne _022DBC3C - bl Dwci_Acc_GetFriendKey - mov r3, r0 - mov r2, r1 - add r0, sp, #0x15 - mov r1, r3 - bl Dwc_FriendKeyToString - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} -_022DBC3C: - bl Dwci_Acc_GetFlag_DataType - cmp r0, #1 - addne sp, sp, #0x24 - ldmneia sp!, {r4, r5, pc} - ldr r1, [r5, #0x24] - add r2, sp, #0 - mov r0, r4 - bl Dwci_Acc_LoginIdToUserName - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - arm_func_end Dwc_ReportFriendData - - arm_func_start Dwc_ReportUserData -Dwc_ReportUserData: ; 0x022DBC64 - stmdb sp!, {r4, lr} - mov r4, r0 - add r1, r4, #4 - bl Dwc_ReportFriendData - mov r0, r4 - add r1, r4, #0x10 - bl Dwc_ReportFriendData - ldmia sp!, {r4, pc} - arm_func_end Dwc_ReportUserData - - arm_func_start Dwc_Auth_SetCustomNas -Dwc_Auth_SetCustomNas: ; 0x022DBC84 - ldr r1, _022DBC90 ; =ov00_02318BC8 - str r0, [r1] - bx lr - .align 2, 0 -_022DBC90: .word ov00_02318BC8 - arm_func_end Dwc_Auth_SetCustomNas - - arm_func_start Dwc_Auth_GetCustomNas -Dwc_Auth_GetCustomNas: ; 0x022DBC94 - ldr r0, _022DBCA0 ; =ov00_02318BC8 - ldr r0, [r0] - bx lr - .align 2, 0 -_022DBCA0: .word ov00_02318BC8 - arm_func_end Dwc_Auth_GetCustomNas - - arm_func_start Dwc_Auth_Create -Dwc_Auth_Create: ; 0x022DBCA4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _022DBDB8 ; =ov00_02326CB4 - mov r5, r0 - ldr r0, [r2, #8] - mov r4, r1 - cmp r0, #0 - ldr r2, [r5, #0x40] - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022DBDBC ; =ov00_02318C0C - ldr r1, _022DBDC0 ; =0x000013F4 - blx r2 - ldr r1, _022DBDB8 ; =ov00_02326CB4 - cmp r0, #0 - str r0, [r1, #8] - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _022DBDC0 ; =0x000013F4 - mov r1, #0 - bl MI_CpuFill8 - ldr r3, _022DBDB8 ; =ov00_02326CB4 - mov r1, #0 - ldr r0, [r3, #8] - mov r2, #0x1c4 - add r0, r0, #0x1000 - str r4, [r0, #0x314] - str r1, [r3] - ldr r0, [r3, #8] - add r0, r0, #8 - add r0, r0, #0x1000 - bl MI_CpuFill8 - ldr r1, _022DBDB8 ; =ov00_02326CB4 - ldr r2, _022DBDC4 ; =0x00004E84 - ldr r0, [r1, #8] - mov r4, #4 - add r0, r0, #0x1000 - str r2, [r0, #8] - ldr lr, [r1, #8] - add r0, lr, #0x1cc - add ip, r0, #0x1000 -_022DBD44: - ldmia r5!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _022DBD44 - ldmia r5, {r0, r1} - stmia ip, {r0, r1} - add r0, lr, #0x1100 - mov r2, #0 - strh r2, [r0, #0xfe] - ldr r1, _022DBDB8 ; =ov00_02326CB4 - mov r0, #1 - ldr r1, [r1, #8] - add r1, r1, #0x1000 - strb r2, [r1, #0x20b] - bl Dwci_Auth_Start - ldr r2, _022DBDB8 ; =ov00_02326CB4 - ldr r1, [r2, #8] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - str r0, [r2, #4] - bl Dwci_Auth_StartThread - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DBDB8: .word ov00_02326CB4 -_022DBDBC: .word ov00_02318C0C -_022DBDC0: .word 0x000013F4 -_022DBDC4: .word 0x00004E84 - arm_func_end Dwc_Auth_Create - - arm_func_start Dwci_Auth_StartThread -Dwci_Auth_StartThread: ; 0x022DBDC8 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _022DBE70 ; =ov00_02326CB4 - ldr r0, [r0, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_InitMutex - ldr r1, _022DBE70 ; =ov00_02326CB4 - mov r2, #0 - ldr r0, [r1, #8] - add r0, r0, #0x1000 - str r2, [r0, #0x3f0] - ldr r1, [r1, #8] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - beq _022DBE24 - add r0, r1, #0x318 - add r0, r0, #0x1000 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, pc} -_022DBE24: - ldr r0, _022DBE70 ; =ov00_02326CB4 - mov r3, #0x1000 - ldr lr, [r0, #8] - ldr r1, _022DBE74 ; =Dwci_Auth_Thread - add r0, lr, #0x318 - ldr r2, _022DBE78 ; =ov00_02326CBC - str r3, [sp] - mov ip, #0x10 - add r0, r0, #0x1000 - add r3, lr, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _022DBE70 ; =ov00_02326CB4 - ldr r0, [r0, #8] - add r0, r0, #0x318 - add r0, r0, #0x1000 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DBE70: .word ov00_02326CB4 -_022DBE74: .word Dwci_Auth_Thread -_022DBE78: .word ov00_02326CBC - arm_func_end Dwci_Auth_StartThread - - arm_func_start Dwc_Auth_Abort -Dwc_Auth_Abort: ; 0x022DBE7C - stmdb sp!, {r3, lr} - ldr r0, _022DBF04 ; =ov00_02326CB4 - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r1, _022DBF04 ; =ov00_02326CB4 - mov r2, #1 - ldr r0, [r1, #8] - add r0, r0, #0x1000 - str r2, [r0, #0x3f0] - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldr r0, _022DBF04 ; =ov00_02326CB4 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - cmp r0, #0 - beq _022DBEDC - bl Dwc_Http_Abort -_022DBEDC: - ldr r0, _022DBF04 ; =ov00_02326CB4 - ldr r1, [r0, #8] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x318 - add r0, r0, #0x1000 - bl OS_JoinThread - ldmia sp!, {r3, pc} - .align 2, 0 -_022DBF04: .word ov00_02326CB4 - arm_func_end Dwc_Auth_Abort - - arm_func_start Dwc_Auth_Destroy -Dwc_Auth_Destroy: ; 0x022DBF08 - stmdb sp!, {r4, lr} - ldr r0, _022DBF58 ; =ov00_02326CB4 - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r1, r0, #0x1000 - ldr r0, [r1, #0x314] - ldr r4, [r1, #0x210] - cmp r0, #0 - beq _022DBF34 - bl Dwc_Http_Destroy -_022DBF34: - ldr r1, _022DBF58 ; =ov00_02326CB4 - ldr r0, _022DBF5C ; =ov00_02318C1C - ldr r1, [r1, #8] - mov r2, #0 - blx r4 - ldr r0, _022DBF58 ; =ov00_02326CB4 - mov r1, #0 - str r1, [r0, #8] - ldmia sp!, {r4, pc} - .align 2, 0 -_022DBF58: .word ov00_02326CB4 -_022DBF5C: .word ov00_02318C1C - arm_func_end Dwc_Auth_Destroy - - arm_func_start Dwc_Auth_Join -Dwc_Auth_Join: ; 0x022DBF60 - stmdb sp!, {r3, lr} - ldr r0, _022DBF8C ; =ov00_02326CB4 - ldr r1, [r0, #8] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x318 - add r0, r0, #0x1000 - bl OS_JoinThread - ldmia sp!, {r3, pc} - .align 2, 0 -_022DBF8C: .word ov00_02326CB4 - arm_func_end Dwc_Auth_Join - - arm_func_start Dwc_Auth_GetError -Dwc_Auth_GetError: ; 0x022DBF90 - stmdb sp!, {r4, lr} - ldr r0, _022DBFD8 ; =ov00_02326CB4 - ldr r0, [r0, #8] - cmp r0, #0 - moveq r0, #0x16 - ldmeqia sp!, {r4, pc} - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r0, _022DBFD8 ; =ov00_02326CB4 - ldr r1, [r0, #8] - add r0, r1, #0x3d8 - add r1, r1, #0x1000 - add r0, r0, #0x1000 - ldr r4, [r1, #4] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DBFD8: .word ov00_02326CB4 - arm_func_end Dwc_Auth_GetError - - arm_func_start Dwc_Auth_GetResult -Dwc_Auth_GetResult: ; 0x022DBFDC - stmdb sp!, {r4, lr} - ldr r1, _022DC058 ; =ov00_02326CB4 - mov r4, r0 - ldr r1, [r1, #8] - cmp r1, #0 - bne _022DC000 - mov r1, #0 - mov r2, #0x1c4 - bl MI_CpuFill8 -_022DC000: - ldr r0, _022DC058 ; =ov00_02326CB4 - mov r1, r4 - ldr r0, [r0, #8] - mov r2, #0x1c4 - add r0, r0, #8 - add r0, r0, #0x1000 - bl MI_CpuCopy8 - ldr r1, [r4] - ldr r0, _022DC05C ; =0x00004E20 - cmp r1, r0 - blt _022DC038 - ldr r0, _022DC060 ; =0x00007530 - cmp r1, r0 - blt _022DC040 -_022DC038: - ldr r0, _022DC064 ; =0x00005206 - str r0, [r4] -_022DC040: - ldr r1, [r4] - ldr r0, _022DC068 ; =0x00004E84 - cmp r1, r0 - rsbge r0, r1, #0 - strge r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022DC058: .word ov00_02326CB4 -_022DC05C: .word 0x00004E20 -_022DC060: .word 0x00007530 -_022DC064: .word 0x00005206 -_022DC068: .word 0x00004E84 - arm_func_end Dwc_Auth_GetResult - - arm_func_start Dwci_Auth_Start -Dwci_Auth_Start: ; 0x022DC06C - stmdb sp!, {r4, lr} - ldr r1, _022DC164 ; =ov00_02318BC8 - mov r4, r0 - ldr r0, [r1] - ldr r1, _022DC168 ; =ov00_02318C2C - bl strcmp - cmp r0, #0 - ldrne r0, _022DC164 ; =ov00_02318BC8 - movne r1, #1 - strne r1, [r0, #0x14] - ldr r0, _022DC16C ; =ov00_02326CB4 - ldr r2, _022DC164 ; =ov00_02318BC8 - ldr r0, [r0, #8] - ldr r1, _022DC170 ; =ov00_02318BC8 - add r0, r0, #0x1000 - ldr r3, [r0, #0x20c] - str r3, [r2, #0xc] - ldr r3, [r0, #0x210] - str r3, [r2, #0x10] - ldr r0, [r0, #0x314] - bl Dwc_Http_Create - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - cmp r4, #1 - bne _022DC0DC - ldr r0, _022DC174 ; =ov00_02326CC0 - bl Dwci_BM_GetWiFiInfo -_022DC0DC: - ldr r0, _022DC16C ; =ov00_02326CB4 - ldr r1, [r0, #8] - add r0, r1, #0x1000 - add r2, r1, #0x1cc - ldr r0, [r0, #0x314] - add r1, r1, #0x1200 - add r2, r2, #0x1000 - bl Dwci_Auth_Prepare_FirstPost - ldr r2, _022DC16C ; =ov00_02326CB4 - ldr r1, [r2, #8] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r1, [r0, #4] - cmp r1, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, [r0, #0x314] - bl Dwc_Http_FinishHeader - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, _022DC178 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _022DC16C ; =ov00_02326CB4 - ldr r2, [r1, #8] - sub r1, r0, #1 - add r0, r2, #0x1000 - ldr r0, [r0, #0x314] - bl Dwc_Http_StartThread - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DC164: .word ov00_02318BC8 -_022DC168: .word ov00_02318C2C -_022DC16C: .word ov00_02326CB4 -_022DC170: .word ov00_02318BC8 -_022DC174: .word ov00_02326CC0 -_022DC178: .word OSi_ThreadInfo - arm_func_end Dwci_Auth_Start - - arm_func_start Dwci_Auth_Thread -Dwci_Auth_Thread: ; 0x022DC17C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, #0 -_022DC184: - ldr r0, _022DC420 ; =ov00_02326CB4 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r1, [r0, #0x314] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _022DC1B0 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_022DC1B0: - ldr r2, _022DC420 ; =ov00_02326CB4 - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r1, [r0, #0x314] - add r1, r1, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #8 - beq _022DC24C - ldr r1, _022DC424 ; =0x00004E84 - str r1, [r0, #8] - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - add r0, r0, #0x1000 - ldr r0, [r0, #0x20] - cmp r0, #7 - bne _022DC200 - mov r0, #0x14 - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC200: - cmp r8, #2 - ble _022DC23C - cmp r0, #2 - bne _022DC21C - mov r0, #9 - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC21C: - cmp r0, #3 - bne _022DC230 - mov r0, #0xb - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC230: - mov r0, #0xd - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC23C: - mov r0, #1 - add r8, r8, #1 - str r0, [sp] - b _022DC2BC -_022DC24C: - bl Dwci_Auth_ParseHttp - cmp r0, #0x10 - beq _022DC274 - cmp r0, #0x11 - beq _022DC298 - cmp r0, #0x15 - bne _022DC2A0 - mov r0, #0x15 - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC274: - cmp r8, #2 - ble _022DC288 - mov r0, #0x10 - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC288: - mov r0, #0 - add r8, r8, #1 - str r0, [sp] - b _022DC2BC -_022DC298: - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC2A0: - cmp r8, #2 - blt _022DC2B0 - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC2B0: - mov r0, #1 - add r8, r8, #1 - str r0, [sp] -_022DC2BC: - bl OS_GetTick - mov sb, r0 - mov sl, r1 - bl OS_GetTick - subs r2, r0, sb - sbc r0, r1, sl - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _022DC428 ; =0x000082EA - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - ldr r7, _022DC42C ; =0x00001388 - cmpeq r0, r7 - bhs _022DC39C - mov fp, #0 - ldr r6, _022DC428 ; =0x000082EA - ldr r5, _022DC420 ; =ov00_02326CB4 - mov r4, fp -_022DC30C: - ldr r0, [r5, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r2, [r5, #8] - add r0, r2, #0x1000 - ldr r1, [r0, #0x3f0] - cmp r1, #1 - bne _022DC358 - ldr r2, _022DC424 ; =0x00004E84 - ldr r1, _022DC420 ; =ov00_02326CB4 - str r2, [r0, #8] - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - mov r0, #0x14 - bl Dwci_Auth_SetError - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC358: - add r0, r2, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - mov r0, r7 - bl OS_Sleep - bl OS_GetTick - subs r2, r0, sb - sbc r0, r1, sl - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - mov r2, r6 - mov r3, fp - bl _ll_udiv - cmp r1, r4 - cmpeq r0, r7 - blo _022DC30C -_022DC39C: - ldr r0, _022DC420 ; =ov00_02326CB4 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - bl Dwc_Http_Destroy - ldr r0, _022DC420 ; =ov00_02326CB4 - ldr r0, [r0, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r0, [sp] - bl Dwci_Auth_Start - ldr r2, _022DC420 ; =ov00_02326CB4 - ldr r1, [r2, #8] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r3, [r2, #8] - add r0, r3, #0x1000 - ldr r1, [r0, #4] - cmp r1, #0 - beq _022DC40C - ldr r1, _022DC424 ; =0x00004E84 - str r1, [r0, #8] - ldr r0, [r2, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DC40C: - add r0, r3, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - b _022DC184 -_022DC41C: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DC420: .word ov00_02326CB4 -_022DC424: .word 0x00004E84 -_022DC428: .word 0x000082EA -_022DC42C: .word 0x00001388 - arm_func_end Dwci_Auth_Thread - - arm_func_start Dwci_Auth_ParseHttp -Dwci_Auth_ParseHttp: ; 0x022DC430 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022DC5E8 ; =ov00_02326CB4 - mov r1, #0 - ldr r0, [r0, #8] - add r2, r0, #0x1000 - ldr r0, [r2, #0x314] - ldr r4, [r2, #0x20c] - ldr r5, [r2, #0x210] - bl Dwc_Http_ParseResult - cmp r0, #1 - beq _022DC478 - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r2, _022DC5EC ; =0x00004E84 - ldr r1, [r0, #8] - mov r0, #0xe - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC478: - bl Dwci_Auth_FillResult - cmp r0, #0 - movne r0, #0xe - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r1, _022DC5EC ; =0x00004E84 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r2, [r0, #8] - cmp r2, r1 - bge _022DC538 - sub r0, r1, #0x62 - cmp r2, r0 - bne _022DC530 - ldr r0, _022DC5F0 ; =ov00_02318C4C - ldr r1, _022DC5F4 ; =0x0000071F - blx r4 - movs r4, r0 - bne _022DC4E0 - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r2, _022DC5EC ; =0x00004E84 - ldr r1, [r0, #8] - mov r0, #2 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC4E0: - add r1, r4, #0x1f - ldr r0, _022DC5F8 ; =ov00_02326CC0 - bic r1, r1, #0x1f - bl Dwci_Auth_UpDateWiFiID - cmp r0, #1 - mov r2, #0 - beq _022DC524 - ldr r0, _022DC5FC ; =ov00_02318C5C - mov r1, r4 - blx r5 - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r2, _022DC5EC ; =0x00004E84 - ldr r1, [r0, #8] - mov r0, #0xf - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC524: - ldr r0, _022DC5FC ; =ov00_02318C5C - mov r1, r4 - blx r5 -_022DC530: - mov r0, #0x15 - ldmia sp!, {r3, r4, r5, pc} -_022DC538: - add r0, r1, #4 - cmp r2, r0 - beq _022DC554 - add r0, r1, #8 - cmp r2, r0 - beq _022DC578 - b _022DC5E0 -_022DC554: - ldr r0, _022DC5F8 ; =ov00_02326CC0 - bl Dwci_Auth_RemakeWiFiID - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r2, _022DC600 ; =0x00004E88 - ldr r1, [r0, #8] - mov r0, #0x10 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC578: - ldr r0, _022DC5F0 ; =ov00_02318C4C - mov r1, #0x700 - blx r4 - movs r4, r0 - bne _022DC5A8 - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r2, _022DC604 ; =0x00004E8C - ldr r1, [r0, #8] - mov r0, #0x11 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC5A8: - add r0, r4, #0x1f - bic r0, r0, #0x1f - bl Dwci_Auth_MakeWiFiID - ldr r0, _022DC5FC ; =ov00_02318C5C - mov r1, r4 - mov r2, #0 - blx r5 - ldr r0, _022DC5E8 ; =ov00_02326CB4 - ldr r2, _022DC604 ; =0x00004E8C - ldr r1, [r0, #8] - mov r0, #0x11 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC5E0: - mov r0, #0x12 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DC5E8: .word ov00_02326CB4 -_022DC5EC: .word 0x00004E84 -_022DC5F0: .word ov00_02318C4C -_022DC5F4: .word 0x0000071F -_022DC5F8: .word ov00_02326CC0 -_022DC5FC: .word ov00_02318C5C -_022DC600: .word 0x00004E88 -_022DC604: .word 0x00004E8C - arm_func_end Dwci_Auth_ParseHttp - - arm_func_start Dwci_Auth_FillResult -Dwci_Auth_FillResult: ; 0x022DC608 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022DC8A0 ; =ov00_02326CB4 - mov r1, #0 - ldr r0, [r0, #8] - str r1, [sp] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _022DC8A4 ; =ov00_02318C68 - bl Dwc_Http_GetResult - str r0, [sp] - cmp r0, #0 - beq _022DC63C - bl Dwc_Auth_SetNasTimeDiff -_022DC63C: - ldr r0, _022DC8A0 ; =ov00_02326CB4 - mov r2, #0 - ldr r1, [r0, #8] - ldr r0, _022DC8A8 ; =_022BCA70 - str r2, [sp] - str r2, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _022DC8AC ; =ov00_02318C70 - bl Dwc_Http_GetResult - bl atoi - ldr r1, _022DC8A8 ; =_022BCA70 - ldr r1, [r1] - cmp r1, #0x22 - bne _022DC694 - ldr r0, _022DC8A0 ; =ov00_02326CB4 - ldr r2, _022DC8B0 ; =0x00004E85 - ldr r1, [r0, #8] - mov r0, #0xc - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC694: - cmp r0, #0xc8 - beq _022DC6BC - ldr r1, _022DC8A0 ; =ov00_02326CB4 - add r0, r0, #0x1d8 - ldr r1, [r1, #8] - add r2, r0, #0x5800 - add r0, r1, #0x1000 - str r2, [r0, #8] - mov r0, #0x12 - ldmia sp!, {r3, r4, r5, pc} -_022DC6BC: - ldr r0, _022DC8A0 ; =ov00_02326CB4 - ldr r1, _022DC8B4 ; =ov00_02318C7C - ldr r2, [r0, #8] - mov r3, #4 - add r0, r2, #0x1000 - add r2, r2, #0xc - ldr r0, [r0, #0x314] - add r2, r2, #0x1000 - bl Dwc_Http_GetBase64DecodedResult - cmp r0, #0 - bgt _022DC704 - ldr r0, _022DC8A0 ; =ov00_02326CB4 - ldr r2, _022DC8B0 ; =0x00004E85 - ldr r1, [r0, #8] - mov r0, #0xe - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_022DC704: - ldr r0, _022DC8A0 ; =ov00_02326CB4 - add r1, sp, #0 - ldr r0, [r0, #8] - mov r2, #0xa - add r0, r0, #0xc - add r0, r0, #0x1000 - bl strtol - ldr r1, _022DC8A0 ; =ov00_02326CB4 - mov r4, r0 - ldr r5, [r1, #8] - add r0, r5, #0xc - add r0, r0, #0x1000 - bl strlen - add r1, r5, #0xc - add r1, r1, #0x1000 - ldr r2, [sp] - add r0, r1, r0 - cmp r2, r0 - beq _022DC764 - ldr r1, _022DC8B0 ; =0x00004E85 - add r0, r5, #0x1000 - str r1, [r0, #8] - mov r0, #0xc - ldmia sp!, {r3, r4, r5, pc} -_022DC764: - add r0, r4, #0xe20 - add r1, r0, #0x4000 - add r0, r5, #0x1000 - str r1, [r0, #8] - cmp r4, #0x64 - bge _022DC898 - ldr r5, _022DC8A0 ; =ov00_02326CB4 - mov r0, #0 - ldr r2, [r5, #8] - ldr r1, _022DC8B8 ; =ov00_02318C88 - add r2, r2, #0x1000 - strb r0, [r2, #0x52] - ldr r2, [r5, #8] - ldr r3, _022DC8BC ; =0x0000012D - add r2, r2, #0x1000 - strb r0, [r2, #0x1f] - ldr r2, [r5, #8] - add r2, r2, #0x1000 - strb r0, [r2, #0x17f] - ldr r2, [r5, #8] - add r2, r2, #0x1000 - strb r0, [r2, #0x10] - ldr r2, [r5, #8] - add r2, r2, #0x1000 - strb r0, [r2, #0x188] - ldr r2, [r5, #8] - add r0, r2, #0x1000 - add r2, r2, #0x52 - ldr r0, [r0, #0x314] - add r2, r2, #0x1000 - bl Dwc_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _022DC8C0 ; =ov00_02318C90 - add r0, r2, #0x1000 - add r2, r2, #0x1f - ldr r0, [r0, #0x314] - mov r3, #0x33 - add r2, r2, #0x1000 - bl Dwc_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _022DC8C4 ; =ov00_02318C98 - add r0, r2, #0x1000 - add r2, r2, #0x7f - ldr r0, [r0, #0x314] - mov r3, #9 - add r2, r2, #0x1100 - bl Dwc_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _022DC8C8 ; =ov00_02318CA4 - add r0, r2, #0x1000 - add r2, r2, #0x10 - ldr r0, [r0, #0x314] - mov r3, #0xf - add r2, r2, #0x1000 - bl Dwc_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _022DC8CC ; =ov00_02318CB0 - add r0, r2, #0x1000 - add r2, r2, #0x188 - ldr r0, [r0, #0x314] - mov r3, #0x41 - add r2, r2, #0x1000 - bl Dwc_Http_GetRawResult - mov r1, r5 - ldr r0, [r1, #8] - mov r2, #0 - add r0, r0, #0x1000 - cmp r4, #0x28 - strb r2, [r0, #0x1b3] - movne r0, #1 - strne r0, [r1] - moveq r0, #2 - streq r0, [r1] -_022DC898: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DC8A0: .word ov00_02326CB4 -_022DC8A4: .word ov00_02318C68 -_022DC8A8: .word _022BCA70 -_022DC8AC: .word ov00_02318C70 -_022DC8B0: .word 0x00004E85 -_022DC8B4: .word ov00_02318C7C -_022DC8B8: .word ov00_02318C88 -_022DC8BC: .word 0x0000012D -_022DC8C0: .word ov00_02318C90 -_022DC8C4: .word ov00_02318C98 -_022DC8C8: .word ov00_02318CA4 -_022DC8CC: .word ov00_02318CB0 - arm_func_end Dwci_Auth_FillResult - - arm_func_start Dwci_Auth_Prepare_FirstPost -Dwci_Auth_Prepare_FirstPost: ; 0x022DC8D0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x94 - ldr r3, _022DCA4C ; =ov00_02326CB4 - mov r4, r0 - ldr r0, [r3, #0x10] - ldr r3, [r3, #0xc] - cmp r0, #0 - mov r6, r1 - mov r5, r2 - cmpeq r3, #0 - bne _022DC92C - ldr r0, _022DCA50 ; =ov00_02318CBC - bl strlen - mov r3, r0 - ldr r1, _022DCA54 ; =ov00_02318CC8 - ldr r2, _022DCA50 ; =ov00_02318CBC - mov r0, r4 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - beq _022DC984 - add sp, sp, #0x94 - mov r0, #8 - ldmia sp!, {r3, r4, r5, r6, pc} -_022DC92C: - ldr r0, _022DCA58 ; =ov00_02318CD0 - bl strlen - mov r3, r0 - ldr r1, _022DCA54 ; =ov00_02318CC8 - ldr r2, _022DCA58 ; =ov00_02318CD0 - mov r0, r4 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r0, r6 - bl strlen - mov r3, r0 - ldr r1, _022DCA5C ; =ov00_02318CD8 - mov r0, r4 - mov r2, r6 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} -_022DC984: - ldr r1, _022DCA60 ; =ov00_02326CC0 - add r0, sp, #0 - bl Dwc_Auth_GetCalInfoFromWiFiInfo - cmp r0, #0 - addeq sp, sp, #0x94 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, _022DCA64 ; =ov00_02326CDC - add r1, sp, #0 - ldr r2, [r0] - mov r0, r4 - bl Dwc_Auth_SetCalInfoToHttp - cmp r0, #0 - addeq sp, sp, #0x94 - moveq r0, #8 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, _022DCA4C ; =ov00_02326CB4 - ldr r0, [r0, #4] - cmp r0, #1 - bne _022DCA00 - ldr r0, _022DCA68 ; =ov00_02318CE0 - bl strlen - mov r3, r0 - ldr r1, _022DCA6C ; =ov00_02318CE4 - ldr r2, _022DCA68 ; =ov00_02318CE0 - mov r0, r4 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} -_022DCA00: - mov r0, r5 - bl wcslen - cmp r0, #0 - beq _022DCA40 - mov r0, r5 - bl wcslen - mov r3, r0 - ldr r1, _022DCA70 ; =ov00_02318CEC - mov r0, r4 - mov r2, r5 - mov r3, r3, lsl #1 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} -_022DCA40: - mov r0, #0 - add sp, sp, #0x94 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022DCA4C: .word ov00_02326CB4 -_022DCA50: .word ov00_02318CBC -_022DCA54: .word ov00_02318CC8 -_022DCA58: .word ov00_02318CD0 -_022DCA5C: .word ov00_02318CD8 -_022DCA60: .word ov00_02326CC0 -_022DCA64: .word ov00_02326CDC -_022DCA68: .word ov00_02318CE0 -_022DCA6C: .word ov00_02318CE4 -_022DCA70: .word ov00_02318CEC - arm_func_end Dwci_Auth_Prepare_FirstPost - - arm_func_start Dwci_Auth_SetError -Dwci_Auth_SetError: ; 0x022DCA74 - stmdb sp!, {r4, lr} - ldr r1, _022DCAB4 ; =ov00_02326CB4 - mov r4, r0 - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r1, _022DCAB4 ; =ov00_02326CB4 - ldr r0, [r1, #8] - add r0, r0, #0x1000 - str r4, [r0, #4] - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - .align 2, 0 -_022DCAB4: .word ov00_02326CB4 - arm_func_end Dwci_Auth_SetError - - arm_func_start Dwc_Auth_GetCalInfoFromNVram -Dwc_Auth_GetCalInfoFromNVram: ; 0x022DCAB8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, sp, #0 - bl Dwci_BM_GetWiFiInfo - add r1, sp, #0 - mov r0, r4 - bl Dwc_Auth_GetCalInfoFromWiFiInfo - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwc_Auth_GetCalInfoFromNVram - - arm_func_start Dwc_Auth_GetCalInfoFromWiFiInfo -Dwc_Auth_GetCalInfoFromWiFiInfo: ; 0x022DCAE0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x8c - mov r6, r1 - mov r1, #0 - mov r2, #0x94 - mov r4, r0 - bl MI_CpuFill8 - ldmia r6, {r3, r5} - cmp r5, #0 - cmpeq r3, #0 - mov r1, #0xe - beq _022DCB24 - ldr r2, _022DCD70 ; =ov00_02318CF8 - mov r0, r4 - str r5, [sp] - bl OS_SnPrintf - b _022DCB3C -_022DCB24: - ldr r3, [r6, #8] - ldr r5, [r6, #0xc] - ldr r2, _022DCD70 ; =ov00_02318CF8 - mov r0, r4 - str r5, [sp] - bl OS_SnPrintf -_022DCB3C: - ldrh r3, [r6, #0x10] - ldr r2, _022DCD74 ; =ov00_02318D00 - add r0, r4, #0xe - mov r1, #7 - bl OS_SnPrintf - ldr r0, _022DCD78 ; =0x027FFE0C - ldrb r0, [r0] - cmp r0, #0 - bne _022DCB64 - bl WaitForever2 -_022DCB64: - ldr r0, _022DCD78 ; =0x027FFE0C - add r1, r4, #0x15 - mov r2, #4 - bl MI_CpuCopy8 - ldr r0, _022DCD7C ; =0x027FFE10 - ldrb r0, [r0] - cmp r0, #0 - bne _022DCB88 - bl WaitForever2 -_022DCB88: - ldr r0, _022DCD7C ; =0x027FFE10 - add r1, r4, #0x1a - mov r2, #2 - bl MI_CpuCopy8 - mov r1, #0x30 - add r0, sp, #0x16 - strb r1, [r4, #0x1d] - bl OS_GetMacAddress - ldr r5, _022DCD80 ; =ov00_02318D08 - add r7, sp, #0x16 - add r8, r4, #0x1f - mov r6, #0 -_022DCBB8: - ldrb r2, [r7], #1 - mov r0, r8 - mov r1, r5 - bl OS_VsPrintf - add r6, r6, #1 - cmp r6, #6 - add r8, r8, #2 - blt _022DCBB8 - add r0, sp, #0x38 - bl GetDsFirmwareUserSettings - ldrb r0, [sp, #0x38] - ldr r2, _022DCD80 ; =ov00_02318D08 - mov r1, #3 - cmp r0, #8 - movhs r0, #1 - strhsb r0, [sp, #0x38] - ldrb r3, [sp, #0x38] - add r0, r4, #0x2c - bl OS_SnPrintf - add r0, sp, #0x3c - add r1, r4, #0x7e - mov r2, #0x14 - bl MI_CpuCopy8 - ldrb r1, [sp, #0x3b] - ldr r2, _022DCD84 ; =ov00_02318D10 - add r0, r4, #0x2f - str r1, [sp] - ldrb r3, [sp, #0x3a] - mov r1, #5 - bl OS_SnPrintf - add r0, sp, #0x28 - add r1, sp, #0x1c - bl Rtc_GetDateTime - cmp r0, #0 - addne sp, sp, #0x8c - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [sp, #0x2c] - ldr r2, _022DCD88 ; =ov00_02318D1C - str r0, [sp] - ldr r1, [sp, #0x30] - add r0, r4, #0x34 - str r1, [sp, #4] - ldr r3, [sp, #0x1c] - mov r1, #0xd - str r3, [sp, #8] - ldr r3, [sp, #0x20] - str r3, [sp, #0xc] - ldr r3, [sp, #0x24] - str r3, [sp, #0x10] - ldr r3, [sp, #0x28] - bl OS_SnPrintf - bl EnableIrqFlag - mov r6, r0 - bl Wcm_GetApMacAddress - mov r7, r0 - mov r1, #6 - bl DC_InvalidateRange - cmp r7, #0 - bne _022DCCBC - mov r0, r6 - bl SetIrqFlag - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_022DCCBC: - ldr r5, _022DCD80 ; =ov00_02318D08 - add r8, r4, #0x41 - mov sb, #0 -_022DCCC8: - ldrb r2, [r7, sb] - mov r0, r8 - mov r1, r5 - bl OS_VsPrintf - add sb, sb, #1 - cmp sb, #6 - add r8, r8, #2 - blt _022DCCC8 - bl Dwc_AC_GetApType - mov r3, r0 - cmp r3, #0xff - beq _022DCD00 - cmp r3, #0x63 - bls _022DCD04 -_022DCD00: - mov r3, #0x63 -_022DCD04: - ldr r2, _022DCD8C ; =ov00_02318D38 - add r0, r4, #0x6f - mov r1, #0xe - bl OS_SnPrintf - add r0, sp, #0x14 - bl Wcm_GetApEssid - mov r5, r0 - mov r1, #0x20 - bl DC_InvalidateRange - cmp r5, #0 - bne _022DCD44 - mov r0, r6 - bl SetIrqFlag - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_022DCD44: - mov r0, r5 - add r1, r4, #0x4e - mov r2, #0x20 - bl MI_CpuCopy8 - add r0, r4, #0x72 - bl Dwc_AC_GetApSpotInfo - mov r0, r6 - bl SetIrqFlag - mov r0, #1 - add sp, sp, #0x8c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022DCD70: .word ov00_02318CF8 -_022DCD74: .word ov00_02318D00 -_022DCD78: .word 0x027FFE0C -_022DCD7C: .word 0x027FFE10 -_022DCD80: .word ov00_02318D08 -_022DCD84: .word ov00_02318D10 -_022DCD88: .word ov00_02318D1C -_022DCD8C: .word ov00_02318D38 - arm_func_end Dwc_Auth_GetCalInfoFromWiFiInfo - - arm_func_start Dwc_Auth_SetCalInfoToHttp -Dwc_Auth_SetCalInfoToHttp: ; 0x022DCD90 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x28 - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov ip, #1 - ldr r2, _022DD094 ; =ov00_02318D48 - add r0, sp, #4 - mov r1, #0x21 - mov r3, #3 - str ip, [sp] - bl OS_SnPrintf - add r0, sp, #4 - bl strlen - mov r3, r0 - ldr r1, _022DD098 ; =ov00_02318D54 - mov r0, r6 - add r2, sp, #4 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl strlen - mov r3, r0 - ldr r1, _022DD09C ; =ov00_02318D5C - mov r0, r6 - mov r2, r5 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0xe - bl strlen - mov r3, r0 - ldr r1, _022DD0A0 ; =ov00_02318D64 - mov r0, r6 - add r2, r5, #0xe - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x41 - bl strlen - mov r3, r0 - ldr r1, _022DD0A4 ; =ov00_02318D6C - mov r0, r6 - add r2, r5, #0x41 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x6f - bl strlen - mov r3, r0 - ldr r1, _022DD0A8 ; =ov00_02318D74 - mov r0, r6 - add r2, r5, #0x6f - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x15 - bl strlen - mov r3, r0 - ldr r1, _022DD0AC ; =ov00_02318D7C - mov r0, r6 - add r2, r5, #0x15 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1a - bl strlen - mov r3, r0 - ldr r1, _022DD0B0 ; =ov00_02318D84 - mov r0, r6 - add r2, r5, #0x1a - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1d - bl strlen - mov r3, r0 - ldr r1, _022DD0B4 ; =ov00_02318D8C - mov r0, r6 - add r2, r5, #0x1d - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x1f - bl strlen - mov r3, r0 - ldr r1, _022DD0B8 ; =ov00_02318D94 - mov r0, r6 - add r2, r5, #0x1f - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x2c - bl strlen - mov r3, r0 - ldr r1, _022DD0BC ; =ov00_02318D9C - mov r0, r6 - add r2, r5, #0x2c - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x2f - bl strlen - mov r3, r0 - ldr r1, _022DD0C0 ; =ov00_02318DA4 - mov r0, r6 - add r2, r5, #0x2f - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x34 - bl strlen - mov r3, r0 - ldr r1, _022DD0C4 ; =ov00_02318DAC - mov r0, r6 - add r2, r5, #0x34 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x7e - bl wcslen - mov r3, r0 - ldr r1, _022DD0C8 ; =ov00_02318DB4 - mov r0, r6 - add r2, r5, #0x7e - mov r3, r3, lsl #1 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #1 - bne _022DD034 - add r0, r5, #0x4e - bl strlen - mov r3, r0 - ldr r1, _022DD0CC ; =ov00_02318DBC - mov r0, r6 - add r2, r5, #0x4e - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} -_022DD034: - ldr r2, _022DD0D0 ; =ov00_02318DC4 - mov ip, #1 - add r0, sp, #4 - mov r1, #0x21 - mov r3, #3 - str ip, [sp] - bl OS_SnPrintf - ldr r1, _022DD0D4 ; =ov00_02318DDC - add r2, sp, #4 - mov r0, r6 - bl Dwc_Http_Add_HeaderItem - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _022DD0D8 ; =ov00_02318DE8 - mov r0, r6 - add r2, r5, #0x15 - bl Dwc_Http_Add_HeaderItem - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DD094: .word ov00_02318D48 -_022DD098: .word ov00_02318D54 -_022DD09C: .word ov00_02318D5C -_022DD0A0: .word ov00_02318D64 -_022DD0A4: .word ov00_02318D6C -_022DD0A8: .word ov00_02318D74 -_022DD0AC: .word ov00_02318D7C -_022DD0B0: .word ov00_02318D84 -_022DD0B4: .word ov00_02318D8C -_022DD0B8: .word ov00_02318D94 -_022DD0BC: .word ov00_02318D9C -_022DD0C0: .word ov00_02318DA4 -_022DD0C4: .word ov00_02318DAC -_022DD0C8: .word ov00_02318DB4 -_022DD0CC: .word ov00_02318DBC -_022DD0D0: .word ov00_02318DC4 -_022DD0D4: .word ov00_02318DDC -_022DD0D8: .word ov00_02318DE8 - arm_func_end Dwc_Auth_SetCalInfoToHttp - - arm_func_start Dwc_Http_Create -Dwc_Http_Create: ; 0x022DD0DC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r2, _022DD1E4 ; =0x00001C14 - mov r6, r0 - ldr r4, [r5, #0xc] - mov r1, #0 - bl MI_CpuFill8 - add r1, r6, #4 - add r0, r6, #0x1000 - mvn r2, #0 - str r2, [r0, #0xa30] - mov lr, r5 - str r2, [r0, #0xa34] - add ip, r1, #0x1000 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldr r0, _022DD1E8 ; =ov00_02318E28 - ldr r1, _022DD1EC ; =0x00000B68 - blx r4 - add r1, r6, #0x1000 - str r0, [r1, #0x9cc] - cmp r0, #0 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _022DD1F0 ; =ov00_02318E40 - ldr r1, _022DD1F4 ; =0x000005EA - blx r4 - add r2, r6, #0x1000 - str r0, [r2, #0x9d0] - cmp r0, #0 - moveq r0, #1 - streq r0, [r2, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - add r1, r6, #0x208 - ldr r2, [r2, #0xc] - mov r0, r6 - add r1, r1, #0x1800 - bl Dwci_Http_AllocBuffer - cmp r0, #0 - bne _022DD198 - add r1, r6, #0x1000 - mov r0, #1 - str r0, [r1, #0x20] - ldmia sp!, {r4, r5, r6, pc} -_022DD198: - ldr r1, [r5] - mov r0, r6 - bl Dwci_Http_SetHostinfo - cmp r0, #0 - bne _022DD1BC - add r1, r6, #0x1000 - mov r0, #1 - str r0, [r1, #0x20] - ldmia sp!, {r4, r5, r6, pc} -_022DD1BC: - mov r0, r6 - bl Dwci_Http_WriteBasicHeader - add r1, r6, #0x1000 - str r0, [r1, #0x20] - cmp r0, #0 - moveq r0, #0xff - streqb r0, [r1] - add r0, r6, #0x1000 - ldr r0, [r0, #0x20] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DD1E4: .word 0x00001C14 -_022DD1E8: .word ov00_02318E28 -_022DD1EC: .word 0x00000B68 -_022DD1F0: .word ov00_02318E40 -_022DD1F4: .word 0x000005EA - arm_func_end Dwc_Http_Create - - arm_func_start Dwc_Http_FinishHeader -Dwc_Http_FinishHeader: ; 0x022DD1F8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _022DD27C ; =ov00_02318E58 - ldr r2, _022DD280 ; =ov00_02318E64 - mov r4, r0 - bl Dwc_Http_Add_HeaderItem - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} - add r0, r4, #0x1000 - ldr r0, [r0, #0x9f8] - ldr r1, _022DD284 ; =ov00_02318E6C - bl strstr - add r0, r0, #4 - bl strlen - movs r3, r0 - beq _022DD270 - ldr r2, _022DD288 ; =ov00_02318E74 - add r0, sp, #0 - mov r1, #7 - bl OS_SnPrintf - ldr r1, _022DD28C ; =ov00_02318E78 - add r2, sp, #0 - mov r0, r4 - bl Dwc_Http_Add_HeaderItem - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} -_022DD270: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DD27C: .word ov00_02318E58 -_022DD280: .word ov00_02318E64 -_022DD284: .word ov00_02318E6C -_022DD288: .word ov00_02318E74 -_022DD28C: .word ov00_02318E78 - arm_func_end Dwc_Http_FinishHeader - - arm_func_start Dwc_Http_StartThread -Dwc_Http_StartThread: ; 0x022DD290 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - add r0, r5, #0x3f8 - add r2, r5, #0x1000 - mov r3, #0 - add r0, r0, #0x1800 - mov r4, r1 - str r3, [r2, #0xc10] - bl OS_InitMutex - add r0, r5, #0x218 - add r0, r0, #0x1800 - bl OS_InitMutex - add r0, r5, #0x1000 - ldr r0, [r0, #0x18] - cmp r0, #1 - ldreq r0, _022DD344 ; =ov00_02326CD4 - moveq r1, #1 - ldrne r0, _022DD344 ; =ov00_02326CD4 - movne r1, #0 - str r1, [r0] - add r0, r5, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _022DD30C - add r0, r5, #0x338 - add r0, r0, #0x1800 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, pc} -_022DD30C: - add r0, r5, #0x338 - mov r1, #0x1000 - str r1, [sp] - ldr r1, _022DD348 ; =Dwci_Http_Thread - mov r2, r5 - add r0, r0, #0x1800 - add r3, r5, #0x1000 - str r4, [sp, #4] - bl OS_CreateThread - add r0, r5, #0x338 - add r0, r0, #0x1800 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DD344: .word ov00_02326CD4 -_022DD348: .word Dwci_Http_Thread - arm_func_end Dwc_Http_StartThread - - arm_func_start Dwc_Http_Abort -Dwc_Http_Abort: ; 0x022DD34C - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldrb r0, [r0] - cmp r0, #0xff - ldmneia sp!, {r4, pc} - add r0, r4, #0x3f8 - add r0, r0, #0x1800 - bl OS_LockMutex - add r0, r4, #0x3f8 - add r1, r4, #0x1000 - mov r2, #1 - add r0, r0, #0x1800 - str r2, [r1, #0xc10] - bl OS_UnlockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread - ldmia sp!, {r4, pc} - arm_func_end Dwc_Http_Abort - - arm_func_start Dwci_Http_Yield -Dwci_Http_Yield: ; 0x022DD3A8 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldr r0, [r0, #0x130] - cmp r0, #1 - bne _022DD3DC - add r0, r4, #0x1d4 - add r0, r0, #0x1800 - bl OS_GetLowEntropyData - add r0, r4, #0x1d4 - add r0, r0, #0x1800 - mov r1, #0x20 - bl Cps_SslAddRandomSeed -_022DD3DC: - add r0, r4, #0x3f8 - add r0, r0, #0x1800 - bl OS_LockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xc10] - cmp r0, #1 - add r0, r4, #0x3f8 - add r0, r0, #0x1800 - bne _022DD40C - bl OS_UnlockMutex - mov r0, #0 - ldmia sp!, {r4, pc} -_022DD40C: - bl OS_UnlockMutex - mov r0, #0xa - bl OS_Sleep - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end Dwci_Http_Yield - - arm_func_start Dwci_Http_InitCpsSocket -Dwci_Http_InitCpsSocket: ; 0x022DD420 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x138 - add r0, r0, #0x1000 - mov r1, #0 - mov r2, #0x64 - bl MI_CpuFill8 - ldr r0, _022DD470 ; =0x00000B68 - add r1, r4, #0x1000 - str r0, [r1, #0x174] - ldr r3, [r1, #0x9cc] - add r0, r4, #0x138 - ldr r2, _022DD474 ; =0x000005EA - str r3, [r1, #0x178] - str r2, [r1, #0x180] - ldr r2, [r1, #0x9d0] - add r0, r0, #0x1000 - str r2, [r1, #0x184] - bl Cps_SocRegister - ldmia sp!, {r4, pc} - .align 2, 0 -_022DD470: .word 0x00000B68 -_022DD474: .word 0x000005EA - arm_func_end Dwci_Http_InitCpsSocket - - arm_func_start Dwci_Http_Resolve -Dwci_Http_Resolve: ; 0x022DD478 - ldr ip, _022DD488 ; =Cps_Resolve - add r0, r0, #0x1000 - ldr r0, [r0, #0x124] - bx ip - .align 2, 0 -_022DD488: .word Cps_Resolve - arm_func_end Dwci_Http_Resolve - - arm_func_start Dwci_Http_CheckHeaderReceived -Dwci_Http_CheckHeaderReceived: ; 0x022DD48C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r0 - add r0, r5, #0x1000 - ldr r6, [r0, #0xa08] - add r2, r5, #0x208 - ldr r1, _022DD568 ; =ov00_02318E6C - mov r0, r6 - add r4, r2, #0x1800 - bl strstr - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, _022DD568 ; =ov00_02318E6C - mov r0, r6 - bl strstr - add r1, r5, #0x218 - add r6, r0, #4 - add r0, r1, #0x1800 - bl OS_LockMutex - ldr r0, [r4, #4] - add r1, r5, #0x218 - sub r2, r0, r6 - add r0, r5, #0x1000 - str r2, [r0, #0xa34] - add r0, r1, #0x1800 - bl OS_UnlockMutex - ldr r0, [r4] - ldr r1, _022DD56C ; =ov00_02318E88 - bl strstr - movs r8, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022DD56C ; =ov00_02318E88 - bl strlen - mov r7, r0 - ldr r1, _022DD570 ; =ov00_02318E9C - add r0, r8, r7 - bl strstr - mov r6, r0 - add r0, r5, #0x218 - ldrsb r4, [r6] - mov r1, #0 - add r0, r0, #0x1800 - strb r1, [r6] - bl OS_LockMutex - add r0, r8, r7 - bl atoi - add r1, r5, #0x1000 - add r2, r5, #0x218 - str r0, [r1, #0xa30] - add r0, r2, #0x1800 - bl OS_UnlockMutex - strb r4, [r6] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022DD568: .word ov00_02318E6C -_022DD56C: .word ov00_02318E88 -_022DD570: .word ov00_02318E9C - arm_func_end Dwci_Http_CheckHeaderReceived - - arm_func_start Dwci_Http_Thread -Dwci_Http_Thread: ; 0x022DD574 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sl, r0 - add r0, sl, #0x1000 - ldr r8, [r0, #0x1c] - add r0, sl, #0x138 - add r1, sl, #0x19c - add r2, sl, #0x208 - add r4, r0, #0x1000 - cmp r8, #0 - mov r0, sl - add r5, r1, #0x1000 - add r7, r2, #0x1800 - mov fp, #0 - ldrle r8, _022DD87C ; =0x0000EA60 - bl Dwci_Http_InitCpsSocket - mov r0, sl - bl Dwci_Http_Resolve - movs r6, r0 - add r0, sl, #0x1000 - moveq r1, #2 - streq r1, [r0, #0x20] - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str r6, [r0, #0x12c] - bl Cps_SocUse - add r0, sl, #0x1000 - ldr r0, [r0, #0x130] - cmp r0, #1 - bne _022DD628 - mov r0, r5 - mov r1, #0 - mov r2, #0x830 - bl MI_CpuFill8 - ldr r1, _022DD880 ; =Dwci_Http_CpsCallback - add r0, sl, #0x1000 - str r1, [r5, #0x810] - ldr r1, [r0, #0x124] - ldr r0, _022DD884 ; =ov00_02318DF8 - str r1, [r5, #0x800] - mov r1, #0xc - str r5, [r4, #0xc] - bl Cps_SetRootCa - mov r0, #1 - bl Cps_SetSsl -_022DD628: - add r0, sl, #0x1100 - ldrh r1, [r0, #0x34] - mov r2, r6 - mov r0, #0 - bl Cps_SocBind - bl Cps_TcpConnect - cmp r0, #0 - add r0, sl, #0x1000 - beq _022DD664 - mov r1, #3 - str r1, [r0, #0x20] - bl Cps_SocRelease - bl Cps_SocUnRegister - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DD664: - ldr r4, [r0, #0x9f8] - mov r0, r4 - bl strlen - mov r1, r0 - mov r0, r4 - bl Cps_SocWrite - str r0, [sp, #0x10] - cmp r0, #0 - bgt _022DD698 - add r0, sl, #0x1000 - mov r1, #5 - str r1, [r0, #0x20] - b _022DD864 -_022DD698: - bl Cps_SocFlush - mov r0, sl - bl Dwci_Http_Yield - cmp r0, #0 - bne _022DD6BC - add r0, sl, #0x1000 - mov r1, #7 - str r1, [r0, #0x20] - b _022DD864 -_022DD6BC: - ldr r0, [r7] - str r0, [r7, #4] - ldr r1, [r7] - ldr r0, [r7, #0xc] - add r0, r1, r0 - str r0, [r7, #8] - bl OS_GetTick - str r0, [sp, #8] - add r0, sl, #0x234 - str r1, [sp, #4] - add r5, sl, #0x218 - add r6, r0, #0x1800 - add r4, sl, #0x1000 -_022DD6F0: - ldr r0, _022DD888 ; =ov00_023250C8 - ldr r0, [r0] - cmp r0, #0 - bne _022DD710 - add r0, sl, #0x1000 - mov r1, #5 - str r1, [r0, #0x20] - b _022DD864 -_022DD710: - bl Cps_SocGetLength - str r0, [sp, #0x10] - cmp r0, #0 - blt _022DD840 - ble _022DD7C4 - bl OS_GetTick - str r0, [sp, #8] - add r0, sp, #0x10 - str r1, [sp, #4] - bl Cps_SocRead - cmp r0, #0 - beq _022DD840 - ldmib r7, {r1, r2} - sub r2, r2, #1 - ldr sb, [sp, #0x10] - sub r2, r2, r1 - cmp sb, r2 - movge sb, r2 - mov r2, sb - bl MI_CpuCopy8 - ldr r0, [r7, #4] - cmp fp, #1 - add r1, r0, sb - str r1, [r7, #4] - mov r0, #0 - strb r0, [r1] - bne _022DD79C - add r0, r5, #0x1800 - bl OS_LockMutex - ldr r1, [r6] - add r0, r5, #0x1800 - add r1, r1, sb - str r1, [r6] - bl OS_UnlockMutex - b _022DD7A8 -_022DD79C: - mov r0, sl - bl Dwci_Http_CheckHeaderReceived - mov fp, r0 -_022DD7A8: - ldr r0, [sp, #0x10] - cmp r0, sb - bls _022DD7BC - bl Cps_SocConsume - b _022DD840 -_022DD7BC: - mov r0, sb - bl Cps_SocConsume -_022DD7C4: - ldr r1, [r4, #0xa30] - cmp r1, #0 - ldrge r0, [r4, #0xa34] - cmpge r0, r1 - bge _022DD840 - bl OS_GetTick - ldr r2, [sp, #8] - mov r3, #0 - subs r2, r0, r2 - ldr r0, [sp, #4] - sbc r0, r1, r0 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _022DD88C ; =0x000082EA - bl _ll_udiv - cmp r1, r8, asr #31 - cmpeq r0, r8 - bls _022DD820 - add r0, sl, #0x1000 - mov r1, #6 - str r1, [r0, #0x20] - b _022DD864 -_022DD820: - mov r0, sl - bl Dwci_Http_Yield - cmp r0, #0 - bne _022DD6F0 - add r0, sl, #0x1000 - mov r1, #7 - str r1, [r0, #0x20] - b _022DD864 -_022DD840: - bl Cps_TcpShutdown - bl Cps_TcpClose - bl Cps_SocRelease - bl Cps_SocUnRegister - add r0, sl, #0x1000 - mov r1, #8 - str r1, [r0, #0x20] - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DD864: - bl Cps_TcpShutdown - bl Cps_TcpClose - bl Cps_SocRelease - bl Cps_SocUnRegister - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DD87C: .word 0x0000EA60 -_022DD880: .word Dwci_Http_CpsCallback -_022DD884: .word ov00_02318DF8 -_022DD888: .word ov00_023250C8 -_022DD88C: .word 0x000082EA - arm_func_end Dwci_Http_Thread - - arm_func_start Dwc_Http_Destroy -Dwc_Http_Destroy: ; 0x022DD890 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - add r1, r5, #0x1000 - ldr r4, [r1, #0x14] - ldmeqia sp!, {r3, r4, r5, pc} - add r1, r5, #0x238 - add r1, r1, #0x1800 - mov r2, #0x20 - bl Dwc_Http_Disconnect - add r1, r5, #0x208 - mov r0, r5 - add r1, r1, #0x1800 - bl Dwci_Http_FreeBuffer - add r1, r5, #0x1f8 - mov r0, r5 - add r1, r1, #0x1800 - bl Dwci_Http_FreeBuffer - add r0, r5, #0x1000 - ldr r1, [r0, #0x9cc] - cmp r1, #0 - beq _022DD8FC - ldr r0, _022DD938 ; =ov00_02318EA0 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9cc] -_022DD8FC: - add r0, r5, #0x1000 - ldr r1, [r0, #0x9d0] - cmp r1, #0 - beq _022DD924 - ldr r0, _022DD93C ; =ov00_02318EB8 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9d0] -_022DD924: - ldr r2, _022DD940 ; =0x00001C14 - mov r0, r5 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DD938: .word ov00_02318EA0 -_022DD93C: .word ov00_02318EB8 -_022DD940: .word 0x00001C14 - arm_func_end Dwc_Http_Destroy - - arm_func_start Dwci_Http_WriteBasicHeader -Dwci_Http_WriteBasicHeader: ; 0x022DD944 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r7, r0 - add r0, r7, #0x1000 - ldr r1, [r0, #8] - add r0, r7, #0x1f8 - cmp r1, #0 - ldreq r6, _022DD9FC ; =ov00_02318ED0 - add r5, r0, #0x1800 - add r0, r7, #0x1000 - ldrne r6, _022DDA00 ; =ov00_02318F24 - ldr r0, [r0, #0x124] - bl strlen - mov r4, r0 - mov r0, r6 - bl strlen - add r1, r7, #0x1000 - mov r8, r0 - ldr r0, [r1, #0x128] - bl strlen - sub r1, r8, #4 - add r0, r1, r0 - add r2, r4, r0 - add r0, r7, #0x1f8 - add r1, r0, #0x1800 - add r2, r2, #0x400 - mov r0, r7 - bl Dwci_Http_AllocBuffer - cmp r0, #1 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r3, r7, #0x1000 - ldr r0, [r3, #0x124] - mov r2, r6 - str r0, [sp] - ldr r0, [r5, #4] - ldr r1, [r5, #0xc] - ldr r3, [r3, #0x128] - bl OS_SnPrintf - ldr r1, [r5, #4] - add r0, r1, r0 - str r0, [r5, #4] - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022DD9FC: .word ov00_02318ED0 -_022DDA00: .word ov00_02318F24 - arm_func_end Dwci_Http_WriteBasicHeader - - arm_func_start Dwc_Http_Add_HeaderItem -Dwc_Http_Add_HeaderItem: ; 0x022DDA04 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r6, r2 - add r2, r8, #0x1f8 - mov r0, r6 - mov r7, r1 - add r5, r2, #0x1800 - bl strlen - mov r4, r0 - ldr r0, _022DDAD8 ; =ov00_02318F44 - bl strlen - mov sb, r0 - mov r0, r7 - bl strlen - sub r1, sb, #4 - add r0, r1, r0 - add r4, r4, r0 - ldmib r5, {r1, r2} - add r0, r4, #1 - sub r1, r2, r1 - cmp r0, r1 - ble _022DDA7C - sub r2, r4, r1 - mov r0, r8 - mov r1, r5 - add r2, r2, #1 - bl Dwci_Http_ReallocBuffer - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022DDA7C: - ldr r0, [r5] - ldr r1, _022DDADC ; =ov00_02318E6C - bl strstr - add sb, r0, #2 - ldrsb r8, [r0, #2] - mov r0, sb - bl strlen - add r2, r0, #1 - add r0, sb, r4 - mov r1, sb - bl memmove - ldr r2, _022DDAD8 ; =ov00_02318F44 - str r6, [sp] - mov r3, r7 - mov r0, sb - add r1, r4, #1 - bl OS_SnPrintf - strb r8, [sb, r0] - ldr r1, [r5, #4] - mov r0, #0 - add r1, r1, r4 - str r1, [r5, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022DDAD8: .word ov00_02318F44 -_022DDADC: .word ov00_02318E6C - arm_func_end Dwc_Http_Add_HeaderItem - - arm_func_start Dwc_Http_Add_PostBase64Item -Dwc_Http_Add_PostBase64Item: ; 0x022DDAE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - add r0, sl, #0x1000 - ldr r4, [r0, #0x9f4] - add r0, sl, #0x1f8 - cmp r4, #0 - ldreq r7, _022DDBE4 ; =ov00_02318F50 - mov r8, r2 - add r4, sl, #0x1000 - add r6, r0, #0x1800 - ldr r0, [r4, #0x9f4] - mov fp, r3 - add r5, r0, #1 - mov r2, #0 - mov sb, r1 - ldrne r7, _022DDBE8 ; =ov00_02318F54 - mov r0, r8 - mov r1, fp - mov r3, r2 - str r5, [r4, #0x9f4] - bl Dwc_Auth_Base64Encode - mov r5, r0 - mov r0, r7 - bl strlen - mov r4, r0 - mov r0, sb - bl strlen - sub r1, r4, #2 - add r2, r1, r0 - ldmib r6, {r0, r1} - add r2, r5, r2 - sub r1, r1, r0 - cmp r2, r1 - ble _022DDB90 - sub r2, r2, r1 - mov r0, sl - mov r1, r6 - add r2, r2, #1 - bl Dwci_Http_ReallocBuffer - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldmib r6, {r0, r1} - sub r1, r1, r0 -_022DDB90: - mov r2, r7 - mov r3, sb - bl OS_SnPrintf - ldr r2, [r6, #4] - mov r1, fp - add r2, r2, r0 - str r2, [r6, #4] - ldr r0, [r6, #8] - sub r3, r0, r2 - mov r0, r8 - sub r3, r3, #1 - bl Dwc_Auth_Base64Encode - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r6, #4] - mov r0, #0 - add r1, r1, r5 - str r1, [r6, #4] - strb r0, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DDBE4: .word ov00_02318F50 -_022DDBE8: .word ov00_02318F54 - arm_func_end Dwc_Http_Add_PostBase64Item - - arm_func_start Dwc_Http_Add_Body -Dwc_Http_Add_Body: ; 0x022DDBEC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - add r1, r7, #0x1f8 - mov r0, r6 - add r5, r1, #0x1800 - bl strlen - mov r4, r0 - ldmib r5, {r0, r1} - sub r1, r1, r0 - cmp r4, r1 - ble _022DDC44 - sub r2, r4, r1 - mov r0, r7 - mov r1, r5 - add r2, r2, #1 - bl Dwci_Http_ReallocBuffer - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldmib r5, {r0, r1} - sub r1, r1, r0 -_022DDC44: - ldr r2, _022DDC70 ; =ov00_02318F5C - mov r3, r6 - bl OS_SnPrintf - cmp r0, r4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #4] - add r0, r1, r0 - str r0, [r5, #4] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022DDC70: .word ov00_02318F5C - arm_func_end Dwc_Http_Add_Body - - arm_func_start Dwci_Http_CpsCallback -Dwci_Http_CpsCallback: ; 0x022DDC74 - tst r0, #0x8000 - bicne r0, r0, #0x8000 - bx lr - arm_func_end Dwci_Http_CpsCallback - - arm_func_start Dwci_Http_AllocBuffer -Dwci_Http_AllocBuffer: ; 0x022DDC80 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r2 - add r0, r0, #0x1000 - ldr r2, [r0, #0x10] - mov r5, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022DDCD4 ; =ov00_02318F60 - mov r1, r4 - blx r2 - str r0, [r5] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - str r0, [r5, #4] - str r4, [r5, #0xc] - ldr r0, [r5] - add r0, r0, r4 - str r0, [r5, #8] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DDCD4: .word ov00_02318F60 - arm_func_end Dwci_Http_AllocBuffer - - arm_func_start Dwci_Http_FreeBuffer -Dwci_Http_FreeBuffer: ; 0x022DDCD8 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4] - add r0, r0, #0x1000 - cmp r1, #0 - ldr r3, [r0, #0x14] - beq _022DDD00 - ldr r0, _022DDD14 ; =ov00_02318F74 - mov r2, #0 - blx r3 -_022DDD00: - mov r0, r4 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DDD14: .word ov00_02318F74 - arm_func_end Dwci_Http_FreeBuffer - - arm_func_start Dwci_Http_ReallocBuffer -Dwci_Http_ReallocBuffer: ; 0x022DDD18 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - add r0, r0, #0x1000 - ldr r7, [r0, #0x14] - mov r5, r2 - mov r6, r1 - cmp r5, #0 - ldr r2, [r0, #0x10] - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r6, #0xc] - ldr r0, _022DDDB8 ; =ov00_02318F88 - add r1, r1, r5 - blx r2 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6] - ldr r2, [r6, #0xc] - mov r1, r4 - bl MI_CpuCopy8 - ldr r1, [r6] - ldr r0, _022DDDBC ; =ov00_02318F74 - mov r2, #0 - blx r7 - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldmia r6, {r0, r1} - sub r0, r4, r0 - add r0, r1, r0 - str r0, [r6, #4] - ldr r1, [r6, #0xc] - mov r0, #1 - add r1, r1, r5 - str r1, [r6, #0xc] - str r4, [r6] - ldr r1, [r6, #0xc] - add r1, r4, r1 - str r1, [r6, #8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022DDDB8: .word ov00_02318F88 -_022DDDBC: .word ov00_02318F74 - arm_func_end Dwci_Http_ReallocBuffer - - arm_func_start Dwci_Http_SetHostinfo -Dwci_Http_SetHostinfo: ; 0x022DDDC0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r0 - mov r0, r6 - mov r4, #0 - bl strlen - cmp r0, #0x100 - movhs r0, r4 - ldmhsia sp!, {r4, r5, r6, pc} - add r0, r5, #0x24 - mov r1, r6 - add r0, r0, #0x1000 - mov r2, #0x100 - bl strncpy - mov r0, r6 - bl strlen - add r1, r5, #0x24 - mov r6, r0 - add r0, r1, #0x1000 - bl strlen - cmp r6, r0 - movne r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x24 - ldr r1, _022DDF04 ; =ov00_02318F98 - add r0, r0, #0x1000 - bl strstr - cmp r0, #0 - beq _022DDE5C - add r0, r5, #0x2b - add r1, r0, #0x1000 - add r0, r5, #0x1000 - str r1, [r0, #0x124] - mov r1, r4 - str r1, [r0, #0x130] - add r0, r5, #0x1100 - mov r1, #0x50 - strh r1, [r0, #0x34] - b _022DDE98 -_022DDE5C: - add r0, r5, #0x24 - ldr r1, _022DDF08 ; =ov00_02318FA0 - add r0, r0, #0x1000 - bl strstr - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - add r2, r0, #8 - add r0, r5, #0x1000 - mov r1, #1 - str r2, [r0, #0x124] - str r1, [r0, #0x130] - rsb r1, r1, #0x1bc - add r0, r5, #0x1100 - strh r1, [r0, #0x34] -_022DDE98: - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _022DDF0C ; =ov00_02318FAC - bl strstr - cmp r0, #0 - movne r1, #0 - strneb r1, [r0] - addne r4, r0, #1 - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _022DDF10 ; =ov00_02318FB0 - bl strstr - cmp r0, #0 - mov r1, #0 - addeq r0, r5, #0x1000 - strneb r1, [r0] - addne r1, r0, #1 - addne r0, r5, #0x1000 - str r1, [r0, #0x128] - cmp r4, #0 - beq _022DDEFC - mov r0, r4 - bl atoi - add r1, r5, #0x1100 - strh r0, [r1, #0x34] -_022DDEFC: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DDF04: .word ov00_02318F98 -_022DDF08: .word ov00_02318FA0 -_022DDF0C: .word ov00_02318FAC -_022DDF10: .word ov00_02318FB0 - arm_func_end Dwci_Http_SetHostinfo - - arm_func_start Dwc_Http_AddResult -Dwc_Http_AddResult: ; 0x022DDF14 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - add r0, r0, #0x1000 - ldmib r8, {r1, r4} - cmp r4, r1 - ldr r4, [r0, #0x10] - ldr r5, [r0, #0x14] - mov r7, r2 - mov r6, r3 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl strlen - mov r1, r0 - ldr r0, _022DE058 ; =ov00_02318FB4 - add r1, r1, #1 - blx r4 - ldr r2, [r8] - ldr r1, [r8, #8] - str r0, [r2, r1, lsl #3] - ldr r1, [r8, #8] - ldr r2, [r8] - ldr r0, [r2, r1, lsl #3] - cmp r0, #0 - beq _022DDFF0 - mov r0, r6 - bl strlen - mov r1, r0 - ldr r0, _022DE05C ; =ov00_02318FD4 - add r1, r1, #1 - blx r4 - ldr r2, [r8] - ldr r1, [r8, #8] - add r1, r2, r1, lsl #3 - str r0, [r1, #4] - ldr r1, [r8, #8] - ldr r2, [r8] - add r0, r2, r1, lsl #3 - ldr r0, [r0, #4] - cmp r0, #0 - beq _022DDFF0 - ldr r0, [r2, r1, lsl #3] - mov r1, r7 - bl strcpy - ldr r2, [r8] - ldr r0, [r8, #8] - mov r1, r6 - add r0, r2, r0, lsl #3 - ldr r0, [r0, #4] - bl strcpy - ldr r1, [r8, #8] - mov r0, #1 - add r1, r1, #1 - str r1, [r8, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022DDFF0: - ldr r1, [r2, r1, lsl #3] - cmp r1, #0 - beq _022DE018 - ldr r0, _022DE060 ; =ov00_02318FF4 - mov r2, #0 - blx r5 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - str r2, [r1, r0, lsl #3] -_022DE018: - ldr r1, [r8] - ldr r0, [r8, #8] - add r0, r1, r0, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _022DE050 - ldr r0, _022DE064 ; =ov00_02319010 - mov r2, #0 - blx r5 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - add r0, r1, r0, lsl #3 - str r2, [r0, #4] -_022DE050: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022DE058: .word ov00_02318FB4 -_022DE05C: .word ov00_02318FD4 -_022DE060: .word ov00_02318FF4 -_022DE064: .word ov00_02319010 - arm_func_end Dwc_Http_AddResult - - arm_func_start Dwc_Http_ParseResult -Dwc_Http_ParseResult: ; 0x022DE068 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r4, r0 - add r0, r4, #0x238 - mov r6, r1 - add r0, r0, #0x1800 - mov r3, #0x20 - mov r1, #0 - mov r2, #0x100 - str r0, [sp, #4] - str r3, [sp, #8] - str r1, [sp, #0xc] - bl MI_CpuFill8 - add r0, r4, #0x1000 - ldr r5, [r0, #0xa08] - ldr r1, _022DE2E8 ; =ov00_02318E6C - mov r0, r5 - bl strstr - str r0, [sp] - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r0, #4 - bl strlen - ldr r1, [sp] - add r1, r1, #4 - add fp, r1, r0 - ldr r1, _022DE2EC ; =ov00_0231902C - mov r0, r5 - bl strstr - movs r7, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb sb, [r7, #4] - ldr r2, _022DE2F0 ; =ov00_02319030 - mov r5, #0 - add r1, sp, #4 - mov r0, r4 - add r3, r7, #1 - strb r5, [r7, #4] - bl Dwc_Http_AddResult - cmp r0, #1 - addne sp, sp, #0x10 - strb sb, [r7, #4] - movne r0, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r6, #1 - beq _022DE148 - ldr r1, _022DE2F4 ; =ov00_0231903C - add r0, r7, #1 - mov r2, #3 - bl strncmp - cmp r0, #0 - beq _022DE154 -_022DE148: - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DE154: - ldr r1, _022DE2F8 ; =ov00_02318E9C - add r0, r7, #5 - bl strstr - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add sb, r0, #2 - b _022DE208 -_022DE178: - ldr r1, _022DE2FC ; =ov00_02319040 - mov r0, sb - bl strstr - movs r6, r0 - beq _022DE21C - ldrsb r7, [r6] - mov r1, #0 - add sl, r6, #2 - strb r1, [r6] - ldr r1, _022DE2F8 ; =ov00_02318E9C - mov r0, sl - bl strstr - movs r5, r0 - streqb r7, [r6] - beq _022DE21C - ldrsb r8, [r5] - mov r1, #0 - mov r2, sb - strb r1, [r5] - mov r0, r4 - add r1, sp, #4 - mov r3, sl - bl Dwc_Http_AddResult - cmp r0, #1 - beq _022DE1F0 - strb r7, [r6] - add sp, sp, #0x10 - strb r8, [r5] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DE1F0: - mov r0, sl - bl strlen - strb r7, [r6] - add r0, sl, r0 - strb r8, [r5] - add sb, r0, #2 -_022DE208: - ldrsb r0, [sb] - cmp r0, #0xd - ldrnesb r0, [sb, #1] - cmpne r0, #0xa - bne _022DE178 -_022DE21C: - ldr r0, [sp] - add r7, r0, #4 - cmp r7, fp - bhs _022DE2DC -_022DE22C: - ldr r1, _022DE300 ; =ov00_02319044 - mov r0, r7 - bl strstr - movs r5, r0 - beq _022DE2DC - ldrsb sb, [r5] - mov r1, #0 - add r6, r5, #1 - strb r1, [r5] - ldr r1, _022DE304 ; =ov00_02319048 - mov r0, r6 - bl strstr - movs sl, r0 - bne _022DE274 - ldr r1, _022DE2F8 ; =ov00_02318E9C - mov r0, r6 - bl strstr - mov sl, r0 -_022DE274: - cmp sl, #0 - ldrnesb r8, [sl] - movne r0, #0 - mov r2, r7 - strneb r0, [sl] - mov r0, r4 - add r1, sp, #4 - mov r3, r6 - bl Dwc_Http_AddResult - cmp r0, #1 - beq _022DE2B8 - strb sb, [r5] - cmp sl, #0 - add sp, sp, #0x10 - strneb r8, [sl] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022DE2B8: - mov r0, r6 - bl strlen - add r0, r6, r0 - strb sb, [r5] - cmp sl, #0 - add r7, r0, #1 - strneb r8, [sl] - cmp r7, fp - blo _022DE22C -_022DE2DC: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DE2E8: .word ov00_02318E6C -_022DE2EC: .word ov00_0231902C -_022DE2F0: .word ov00_02319030 -_022DE2F4: .word ov00_0231903C -_022DE2F8: .word ov00_02318E9C -_022DE2FC: .word ov00_02319040 -_022DE300: .word ov00_02319044 -_022DE304: .word ov00_02319048 - arm_func_end Dwc_Http_ParseResult - - arm_func_start Dwc_Http_GetResult -Dwc_Http_GetResult: ; 0x022DE308 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 -_022DE318: - add r0, r6, r4, lsl #3 - add r0, r0, #0x1000 - ldr r1, [r0, #0xa38] - cmp r1, #0 - beq _022DE358 - mov r0, r5 - bl strcmp - cmp r0, #0 - bne _022DE34C - add r0, r6, r4, lsl #3 - add r0, r0, #0x1000 - ldr r0, [r0, #0xa3c] - ldmia sp!, {r4, r5, r6, pc} -_022DE34C: - add r4, r4, #1 - cmp r4, #0x20 - blt _022DE318 -_022DE358: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_Http_GetResult - - arm_func_start Dwc_Http_GetBase64DecodedResult -Dwc_Http_GetBase64DecodedResult: ; 0x022DE360 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl Dwc_Http_GetResult - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - mov r1, r0 - mov r0, r4 - mov r2, r6 - mov r3, r5 - bl Dwc_Auth_Base64Decode - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, r5 - ldmhsia sp!, {r4, r5, r6, pc} - mov r1, #0 - strb r1, [r6, r0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_Http_GetBase64DecodedResult - - arm_func_start Dwc_Http_GetRawResult -Dwc_Http_GetRawResult: ; 0x022DE3B4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl Dwc_Http_GetResult - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - cmp r0, r5 - movge r0, #0 - ldmgeia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - bl strcpy - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_Http_GetRawResult - - arm_func_start Dwc_Http_Disconnect -Dwc_Http_Disconnect: ; 0x022DE3F4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add r0, r0, #0x1000 - ldr r6, [r0, #0x14] - mov sb, r2 - mov sl, r1 - mov r8, #0 - cmp sb, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr fp, _022DE474 ; =ov00_0231904C - ldr r7, _022DE478 ; =ov00_02319068 - mov r5, r8 - mov r4, r8 -_022DE424: - ldr r1, [sl, r8, lsl #3] - cmp r1, #0 - beq _022DE440 - mov r0, fp - mov r2, #0 - blx r6 - str r5, [sl, r8, lsl #3] -_022DE440: - add r0, sl, r8, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _022DE464 - mov r0, r7 - mov r2, #0 - blx r6 - add r0, sl, r8, lsl #3 - str r4, [r0, #4] -_022DE464: - add r8, r8, #1 - cmp r8, sb - blt _022DE424 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DE474: .word ov00_0231904C -_022DE478: .word ov00_02319068 - arm_func_end Dwc_Http_Disconnect - - arm_func_start Dwc_Netcheck_Create -Dwc_Netcheck_Create: ; 0x022DE47C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022DE544 ; =ov00_02326CD8 - mov r5, r0 - ldr r0, [r1] - ldr r4, [r5] - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022DE548 ; =ov00_023190AC - ldr r1, _022DE54C ; =0x000011F4 - blx r4 - ldr r1, _022DE544 ; =ov00_02326CD8 - cmp r0, #0 - str r0, [r1] - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _022DE54C ; =0x000011F4 - mov r1, #0 - bl MI_CpuFill8 - ldr ip, _022DE544 ; =ov00_02326CD8 - ldr r1, _022DE550 ; =0xFFFE7961 - ldr r0, [ip] - add r0, r0, #0x1000 - str r1, [r0, #4] - ldr r3, [ip] - ldmia r5, {r0, r1, r2} - add r3, r3, #0x108 - add r3, r3, #0x1000 - stmia r3, {r0, r1, r2} - ldr r0, [ip, #0x14] - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022DE554 ; =ov00_023190C0 - ldr r1, _022DE558 ; =0x00001C14 - blx r4 - ldr r1, _022DE544 ; =ov00_02326CD8 - cmp r0, #0 - str r0, [r1, #0x14] - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - str r0, [r1, #4] - ldr r0, [r1] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_InitMutex - bl Dwci_Netcheck_StartThread - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DE544: .word ov00_02326CD8 -_022DE548: .word ov00_023190AC -_022DE54C: .word 0x000011F4 -_022DE550: .word 0xFFFE7961 -_022DE554: .word ov00_023190C0 -_022DE558: .word 0x00001C14 - arm_func_end Dwc_Netcheck_Create - - arm_func_start Dwc_Netcheck_Destroy -Dwc_Netcheck_Destroy: ; 0x022DE55C - stmdb sp!, {r4, lr} - ldr r0, _022DE640 ; =ov00_02326CD8 - ldr r1, [r0] - ldr r0, [r0, #0x14] - add r1, r1, #0x1000 - cmp r0, #0 - ldr r4, [r1, #0x10c] - beq _022DE5A0 - bl Dwc_Http_Destroy - ldr r1, _022DE640 ; =ov00_02326CD8 - ldr r0, _022DE644 ; =ov00_023190D0 - ldr r1, [r1, #0x14] - mov r2, #0 - blx r4 - ldr r0, _022DE640 ; =ov00_02326CD8 - mov r1, #0 - str r1, [r0, #0x14] -_022DE5A0: - bl Dwc_Auth_Destroy - ldr r0, _022DE640 ; =ov00_02326CD8 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r0, #0x1000 - ldr r1, [r0, #0x114] - cmp r1, #0 - beq _022DE5E4 - ldr r0, _022DE648 ; =ov00_023190E0 - mov r2, #0 - blx r4 - ldr r0, _022DE640 ; =ov00_02326CD8 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #0x114] -_022DE5E4: - ldr r0, _022DE640 ; =ov00_02326CD8 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _022DE61C - ldr r0, _022DE64C ; =ov00_023190FC - mov r2, #0 - blx r4 - ldr r0, _022DE640 ; =ov00_02326CD8 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #0x118] -_022DE61C: - ldr r1, _022DE640 ; =ov00_02326CD8 - ldr r0, _022DE650 ; =ov00_0231911C - ldr r1, [r1] - mov r2, #0 - blx r4 - ldr r0, _022DE640 ; =ov00_02326CD8 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_022DE640: .word ov00_02326CD8 -_022DE644: .word ov00_023190D0 -_022DE648: .word ov00_023190E0 -_022DE64C: .word ov00_023190FC -_022DE650: .word ov00_0231911C - arm_func_end Dwc_Netcheck_Destroy - - arm_func_start Dwc_Netcheck_Abort -Dwc_Netcheck_Abort: ; 0x022DE654 - stmdb sp!, {r3, lr} - ldr r0, _022DE6B8 ; =ov00_02326CD8 - ldr r1, [r0] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022DE678 - bl Dwc_Http_Abort -_022DE678: - bl Dwc_Auth_Abort - ldr r0, _022DE6B8 ; =ov00_02326CD8 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _022DE6A0 - add r0, r1, #0x11c - add r0, r0, #0x1000 - bl OS_JoinThread -_022DE6A0: - ldr r0, _022DE6B8 ; =ov00_02326CD8 - mvn r1, #6 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE6B8: .word ov00_02326CD8 - arm_func_end Dwc_Netcheck_Abort - - arm_func_start Dwc_Netcheck_GetError -Dwc_Netcheck_GetError: ; 0x022DE6BC - stmdb sp!, {r4, lr} - ldr r0, _022DE6F8 ; =ov00_02326CD8 - ldr r0, [r0] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r0, _022DE6F8 ; =ov00_02326CD8 - ldr r1, [r0] - add r0, r1, #0x1dc - add r1, r1, #0x1000 - add r0, r0, #0x1000 - ldr r4, [r1] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DE6F8: .word ov00_02326CD8 - arm_func_end Dwc_Netcheck_GetError - - arm_func_start Dwc_Netcheck_GetReturnCode -Dwc_Netcheck_GetReturnCode: ; 0x022DE6FC - ldr r0, _022DE710 ; =ov00_02326CD8 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_022DE710: .word ov00_02326CD8 - arm_func_end Dwc_Netcheck_GetReturnCode - - arm_func_start Dwci_Netcheck_StartThread -Dwci_Netcheck_StartThread: ; 0x022DE714 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _022DE794 ; =ov00_02326CD8 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _022DE74C - add r0, r1, #0x11c - add r0, r0, #0x1000 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, pc} -_022DE74C: - ldr r0, _022DE794 ; =ov00_02326CD8 - mov r3, #0x1000 - ldr r2, [r0] - ldr r1, _022DE798 ; =Dwci_Netcheck_Thread - add r0, r2, #0x11c - str r3, [sp] - mov ip, #0x10 - add r0, r0, #0x1000 - add r3, r2, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _022DE794 ; =ov00_02326CD8 - ldr r0, [r0] - add r0, r0, #0x11c - add r0, r0, #0x1000 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE794: .word ov00_02326CD8 -_022DE798: .word Dwci_Netcheck_Thread - arm_func_end Dwci_Netcheck_StartThread - - arm_func_start Dwci_Netcheck_Thread -Dwci_Netcheck_Thread: ; 0x022DE79C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x29c - ldr r5, _022DF628 ; =ov00_02326CD8 - mov sb, #0 - ldr r0, [r5] - mov fp, sb - add r0, r0, #0x1000 - ldr r7, [r0, #0x108] - ldr r8, [r0, #0x10c] - mvn r0, #2 - str r0, [sp, #0x20] - sub r0, r0, #1 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - mov sl, sb - sub r0, r0, #2 - str r0, [sp, #0x28] - ldr r0, _022DF62C ; =0x00009C40 - mov r4, sb - mov r0, r0, lsr #1 - str r0, [sp, #0x18] - ldr r0, [sp, #0x20] - add r0, r0, #1 - str r0, [sp, #0x1c] -_022DE7FC: - ldr r0, _022DF630 ; =ov00_02319084 - ldr r1, _022DF634 ; =ov00_02326CF0 - ldr r0, [r0] - str r0, [r5, #0x18] - mov r0, #1 - str r0, [r5, #0x1c] - mov r0, #0x1000 - str r0, [r5, #0x20] - str r7, [r5, #0x24] - ldr r0, [sp, #0x18] - str r8, [r5, #0x28] - str r0, [r5, #0x30] - ldr r0, [r5] - add r2, r0, #0x1000 - ldr r0, [sp, #0x1c] - str r0, [r2, #4] - ldr r0, [r5, #0x14] - bl Dwc_Http_Create - cmp r0, #0 - beq _022DE864 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DE864: - ldr r0, [r5, #0x14] - bl Dwc_Http_FinishHeader - cmp r0, #0 - beq _022DE88C - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DE88C: - ldr r0, _022DF638 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r5, #0x14] - bl Dwc_Http_StartThread - ldr r1, [r5, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _022DE8C4 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_022DE8C4: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _022DE8E4 - cmp r1, #8 - beq _022DE910 - b _022DE8F8 -_022DE8E4: - ldr r0, _022DF628 ; =ov00_02326CD8 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_022DE8F8: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #3 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DE910: - mov r1, #0 - bl Dwc_Http_ParseResult - cmp r0, #1 - beq _022DE938 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DE938: - ldr r0, [r5, #0x14] - ldr r1, _022DF63C ; =ov00_02319198 - bl Dwc_Http_GetResult - bl atoi - mov r6, r0 - ldr r0, _022DF640 ; =_022BCA70 - ldr r0, [r0] - cmp r0, #0x22 - bne _022DE968 - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DE968: - cmp r6, #0xc8 - beq _022DE980 - ldr r0, _022DF644 ; =0x0000012E - cmp r6, r0 - beq _022DE994 - b _022DEC7C -_022DE980: - ldr r0, [r5, #0x14] - add r0, r0, #0x1000 - ldr r0, [r0, #0x12c] - str r0, [r5, #8] - b _022DEC94 -_022DE994: - mov r0, #1 - str r0, [r5, #4] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _022DEBE4 - ldr r1, _022DF628 ; =ov00_02326CD8 - mvn r2, #5 - str r2, [r0, #4] - ldr r0, [r1, #0x14] - bl Dwc_Http_Destroy - ldr r0, _022DF648 ; =ov00_02318BC8 - ldr r2, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0] - mov r1, #0 - str r0, [r2, #0x18] - str r1, [r2, #0x1c] - mov r1, #0x200 - str r1, [r2, #0x20] - str r7, [r2, #0x24] - ldr r3, _022DF64C ; =0x00004E20 - str r8, [r2, #0x28] - ldr r1, _022DF650 ; =ov00_023191A4 - str r3, [r2, #0x30] - bl strcmp - cmp r0, #0 - ldrne r0, _022DF628 ; =ov00_02326CD8 - movne r1, #1 - strne r1, [r0, #0x2c] - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r1, _022DF634 ; =ov00_02326CF0 - ldr r0, [r0, #0x14] - bl Dwc_Http_Create - cmp r0, #0 - beq _022DEA3C - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEA3C: - add r0, sp, #0x44 - bl Dwc_Auth_GetCalInfoFromNVram - cmp r0, #0 - beq _022DEA68 - ldr r0, _022DF628 ; =ov00_02326CD8 - add r1, sp, #0x44 - ldr r0, [r0, #0x14] - mov r2, #1 - bl Dwc_Auth_SetCalInfoToHttp - cmp r0, #0 - bne _022DEA80 -_022DEA68: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #8 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEA80: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r1, _022DF654 ; =ov00_023191C4 - ldr r0, [r0, #0x14] - ldr r2, _022DF658 ; =ov00_023191CC - mov r3, #7 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - bne _022DEAD8 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r4, [r0, #0x118] - mov r0, r4 - bl strlen - ldr r1, _022DF628 ; =ov00_02326CD8 - mov r3, r0 - ldr r0, [r1, #0x14] - ldr r1, _022DF65C ; =ov00_023191D4 - mov r2, r4 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - beq _022DEAF0 -_022DEAD8: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #8 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEAF0: - ldr r1, _022DF628 ; =ov00_02326CD8 - ldr r0, _022DF660 ; =ov00_023190FC - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0x1000 - ldr r1, [r1, #0x118] - blx r8 - ldr r1, _022DF628 ; =ov00_02326CD8 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x1000 - str r2, [r0, #0x118] - ldr r0, [r1, #0x14] - bl Dwc_Http_FinishHeader - cmp r0, #0 - beq _022DEB48 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEB48: - ldr r0, _022DF638 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r2, _022DF628 ; =ov00_02326CD8 - sub r1, r0, #1 - ldr r0, [r2, #0x14] - bl Dwc_Http_StartThread - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r1, [r0, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _022DEB88 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_022DEB88: - ldr r2, _022DF628 ; =ov00_02326CD8 - ldr r0, [r2, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _022DEBAC - cmp r1, #8 - beq _022DEBD4 - b _022DEBBC -_022DEBAC: - ldr r0, [r2] - mvn r1, #0 - add r0, r0, #0x1000 - str r1, [r0, #4] -_022DEBBC: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #3 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEBD4: - bl Dwc_Http_Destroy - mov r0, #7 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEBE4: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0xa08] - str r1, [sp, #0x14] - cmp r1, #0 - bne _022DEC0C - bl Dwc_Http_Destroy - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEC0C: - mov r0, r1 - bl strlen - add r1, r0, #1 - ldr r0, _022DF664 ; =ov00_02319130 - blx r7 - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #0x114] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x114] - str r0, [sp, #4] - cmp r0, #0 - bne _022DEC5C - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #4 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEC5C: - ldr r0, [sp, #0x14] - bl strlen - mov r2, r0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add r2, r2, #1 - bl strncpy - b _022DEC94 -_022DEC7C: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #0xa - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEC94: - ldr r0, [r5, #0x14] - bl Dwc_Http_Destroy - add r0, sp, #0x30 - bl Dwci_BM_GetWiFiInfo - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x34] - mov r0, #0 - cmp r1, r0 - cmpeq r2, r4 - bne _022DEDCC - ldr r1, [r5] - ldr r0, _022DF668 ; =ov00_02326D0C - add r2, r1, #0x1000 - ldr r1, [sp, #0x20] - str r1, [r2, #4] - mov r2, #0 - mov r1, r0 - strh r2, [r1] - strb r2, [r1, #0x34] - ldr r1, [r5] - add r2, r1, #0x1000 - ldr r3, [r2, #0x108] - mov r1, r0 - str r3, [r1, #0x40] - ldr r2, [r2, #0x10c] - str r2, [r1, #0x44] - ldr r1, [r5, #0x14] - bl Dwc_Auth_Create - cmp r0, #0 - beq _022DED18 - mov r0, #5 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DED18: - bl Dwc_Auth_Join - bl Dwc_Auth_GetError - cmp r0, #0x15 - beq _022DEDC8 - bl Dwc_Auth_GetError - cmp r0, #9 - bne _022DED4C - ldr r0, _022DF628 ; =ov00_02326CD8 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - b _022DEDB8 -_022DED4C: - add r0, sp, #0xd8 - bl Dwc_Auth_GetResult - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0xc] - cmp r0, #1 - bne _022DEDA4 - ldr r1, [sp, #0xd8] - ldr r0, _022DF66C ; =0xFFFFA4FA - cmp r1, r0 - beq _022DED80 - bl Dwc_Auth_GetError - cmp r0, #0xb - bne _022DEDA4 -_022DED80: - ldr r0, _022DF628 ; =ov00_02326CD8 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] - bl Dwc_Auth_Destroy - mov r0, #0xb - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEDA4: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r1, [sp, #0xd8] - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_022DEDB8: - bl Dwc_Auth_Destroy - mov r0, #6 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEDC8: - bl Dwc_Auth_Destroy -_022DEDCC: - cmp r6, #0xc8 - bne _022DEDF4 - ldr r0, _022DF628 ; =ov00_02326CD8 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEDF4: - ldr r0, [r5] - ldr r1, _022DF650 ; =ov00_023191A4 - add r2, r0, #0x1000 - ldr r0, [sp, #0x24] - str r0, [r2, #4] - ldr r0, _022DF648 ; =ov00_02318BC8 - mov r2, #0 - ldr r0, [r0] - str r0, [r5, #0x18] - str r2, [r5, #0x1c] - mov r2, #0x1000 - str r2, [r5, #0x20] - str r7, [r5, #0x24] - ldr r2, _022DF62C ; =0x00009C40 - str r8, [r5, #0x28] - str r2, [r5, #0x30] - bl strcmp - cmp r0, #0 - movne r0, #1 - strne r0, [r5, #0x2c] - ldr r0, [r5, #0x14] - ldr r1, _022DF634 ; =ov00_02326CF0 - bl Dwc_Http_Create - cmp r0, #0 - beq _022DEE70 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEE70: - add r0, sp, #0x44 - bl Dwc_Auth_GetCalInfoFromNVram - cmp r0, #0 - beq _022DEE98 - ldr r0, [r5, #0x14] - add r1, sp, #0x44 - mov r2, #1 - bl Dwc_Auth_SetCalInfoToHttp - cmp r0, #0 - bne _022DEEB0 -_022DEE98: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #8 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEEB0: - ldr r0, [r5, #0x14] - ldr r1, _022DF654 ; =ov00_023191C4 - ldr r2, _022DF670 ; =ov00_023191E4 - mov r3, #5 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - bne _022DEEFC - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r6, [r0, #0x114] - mov r0, r6 - bl strlen - mov r3, r0 - ldr r0, [r5, #0x14] - ldr r1, _022DF674 ; =ov00_023191EC - mov r2, r6 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - beq _022DEF14 -_022DEEFC: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #8 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEF14: - ldr r1, [r5] - ldr r0, _022DF678 ; =ov00_023190E0 - add r1, r1, #0x1000 - ldr r1, [r1, #0x114] - mov r2, #0 - blx r8 - ldr r0, [r5] - add r1, r0, #0x1000 - mov r0, #0 - str r0, [r1, #0x114] - ldr r0, [r5, #0x14] - bl Dwc_Http_FinishHeader - cmp r0, #0 - beq _022DEF64 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEF64: - ldr r0, _022DF638 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r5, #0x14] - bl Dwc_Http_StartThread - ldr r1, [r5, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _022DEF9C - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_022DEF9C: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _022DF000 - cmp r1, #3 - beq _022DEFC4 - cmp r1, #8 - beq _022DF02C - b _022DF014 -_022DEFC4: - bl Dwc_Http_Destroy - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r1, [r0, #0xc] - cmp r1, #1 - bne _022DEFF4 - ldr r0, [r0] - mov r2, #0 - add r1, r0, #0x1000 - mov r0, #0xb - str r2, [r1, #4] - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DEFF4: - mov r0, #3 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF000: - ldr r0, _022DF628 ; =ov00_02326CD8 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_022DF014: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #3 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF02C: - mov r1, #0 - bl Dwc_Http_ParseResult - cmp r0, #1 - beq _022DF054 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF054: - ldr r0, [r5, #0x14] - ldr r1, _022DF63C ; =ov00_02319198 - bl Dwc_Http_GetResult - bl atoi - mov r6, r0 - ldr r0, _022DF640 ; =_022BCA70 - ldr r0, [r0] - cmp r0, #0x22 - bne _022DF090 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF090: - cmp r6, #0xc8 - beq _022DF0E4 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - ldr r1, _022DF628 ; =ov00_02326CD8 - ldr r0, [r1, #0xc] - cmp r0, #1 - ldreq r0, _022DF644 ; =0x0000012E - cmpeq r6, r0 - bne _022DF0D8 - ldr r0, [r1] - mov r2, #0 - add r1, r0, #0x1000 - mov r0, #0xb - str r2, [r1, #4] - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF0D8: - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF0E4: - ldr r0, [r5, #0x14] - ldr r1, _022DF67C ; =ov00_023191F4 - add r2, sp, #0x2c - mov r3, #4 - bl Dwc_Http_GetBase64DecodedResult - cmp r0, #0 - bgt _022DF118 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF118: - add r0, sp, #0x2c - bl atoi - ldr r1, _022DF640 ; =_022BCA70 - ldr r1, [r1] - cmp r1, #0x22 - bne _022DF148 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF148: - ldr r1, [r5, #0xc] - cmp r1, #1 - cmpeq r0, #0x72 - bne _022DF178 - ldr r0, _022DF628 ; =ov00_02326CD8 - mov r2, #0 - ldr r1, [r0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF178: - cmp r0, #0x64 - blt _022DF198 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #6 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF198: - mov r2, #0 - ldr r0, [r5, #0x14] - ldr r1, _022DF680 ; =ov00_02319200 - mov r3, r2 - bl Dwc_Http_GetBase64DecodedResult - str r0, [sp, #0x10] - cmp r0, #0 - bgt _022DF1D0 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF1D0: - mov r2, #0 - ldr r0, [r5, #0x14] - ldr r1, _022DF684 ; =ov00_02319204 - mov r3, r2 - bl Dwc_Http_GetBase64DecodedResult - str r0, [sp, #0xc] - cmp r0, #0 - bgt _022DF208 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF208: - mov r2, #0 - ldr r0, [r5, #0x14] - ldr r1, _022DF688 ; =ov00_0231920C - mov r3, r2 - bl Dwc_Http_GetBase64DecodedResult - ldr r1, [sp, #0x10] - mov r6, r0 - ldr r0, _022DF68C ; =ov00_0231914C - add r1, r1, #1 - blx r7 - movs sb, r0 - bne _022DF250 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #4 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF250: - ldr r1, [sp, #0xc] - ldr r0, _022DF690 ; =ov00_02319158 - add r1, r1, #1 - blx r7 - movs fp, r0 - bne _022DF280 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #4 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF280: - cmp r6, #0 - ble _022DF2B4 - ldr r0, _022DF694 ; =ov00_02319168 - add r1, r6, #1 - blx r7 - movs sl, r0 - bne _022DF2B4 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #4 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF2B4: - ldr r0, [sp, #0x10] - ldr r1, _022DF680 ; =ov00_02319200 - add r3, r0, #1 - ldr r0, [r5, #0x14] - mov r2, sb - bl Dwc_Http_GetBase64DecodedResult - cmp r0, #0 - bge _022DF2EC - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF2EC: - ldr r1, [sp, #0xc] - mov r2, fp - add r3, r1, #1 - mov r1, #0 - strb r1, [sb, r0] - ldr r0, [r5, #0x14] - ldr r1, _022DF684 ; =ov00_02319204 - bl Dwc_Http_GetBase64DecodedResult - cmp r0, #0 - bge _022DF32C - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF32C: - mov r1, #0 - strb r1, [fp, r0] - mov r0, r1 - cmp r6, #0 - str r0, [sp, #8] - ble _022DF3C8 - ldr r0, [r5, #0x14] - ldr r1, _022DF688 ; =ov00_0231920C - add r3, r6, #1 - mov r2, sl - bl Dwc_Http_GetBase64DecodedResult - cmp r0, #0 - bge _022DF378 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF378: - mov r1, #0 - strb r1, [sl, r0] - mov r0, sl - bl atoi - ldr r1, _022DF640 ; =_022BCA70 - ldr r1, [r1] - cmp r1, #0x22 - bne _022DF3B0 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #9 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF3B0: - mov r1, #0x3e8 - mul r1, r0, r1 - ldr r0, _022DF698 ; =0x0002BF20 - str r1, [sp, #8] - cmp r1, r0 - strgt r0, [sp, #8] -_022DF3C8: - ldr r0, [r5, #0x14] - bl Dwc_Http_Destroy - ldr r0, [r5] - ldr r1, _022DF634 ; =ov00_02326CF0 - add r2, r0, #0x1000 - ldr r0, [sp, #0x28] - str r0, [r2, #4] - str sb, [r5, #0x18] - mov r0, #0 - str r0, [r5, #0x1c] - mov r0, #0x1000 - str r0, [r5, #0x20] - str r7, [r5, #0x24] - ldr r0, _022DF69C ; =0x0001D4C0 - str r8, [r5, #0x28] - str r0, [r5, #0x30] - ldr r0, [r5, #0x14] - bl Dwc_Http_Create - cmp r0, #0 - beq _022DF430 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF430: - ldr r0, [r5, #0x14] - mov r1, fp - bl Dwc_Http_Add_Body - cmp r0, #0 - beq _022DF45C - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #8 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF45C: - ldr r0, [r5, #0x14] - bl Dwc_Http_FinishHeader - cmp r0, #0 - beq _022DF484 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #1 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF484: - ldr r0, _022DF638 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r5, #0x14] - bl Dwc_Http_StartThread - ldr r1, [r5, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _022DF4BC - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_022DF4BC: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _022DF4DC - cmp r1, #8 - beq _022DF508 - b _022DF4F0 -_022DF4DC: - ldr r0, _022DF628 ; =ov00_02326CD8 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_022DF4F0: - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #3 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF508: - mov r1, #1 - bl Dwc_Http_ParseResult - cmp r0, #1 - beq _022DF530 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF530: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r6, [r1, #0xa08] - cmp r6, #0 - bne _022DF554 - bl Dwc_Http_Destroy - mov r0, #2 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF554: - mov r0, r6 - bl strlen - add r1, r0, #1 - ldr r0, _022DF6A0 ; =ov00_02319178 - blx r7 - ldr r1, [r5] - add r1, r1, #0x1000 - str r0, [r1, #0x118] - ldr r0, [r5] - add r0, r0, #0x1000 - ldr r0, [r0, #0x118] - str r0, [sp] - cmp r0, #0 - bne _022DF5A4 - ldr r0, _022DF628 ; =ov00_02326CD8 - ldr r0, [r0, #0x14] - bl Dwc_Http_Destroy - mov r0, #4 - bl Dwci_Netcheck_SetError - b _022DF5D4 -_022DF5A4: - mov r0, r6 - bl strlen - mov r2, r0 - ldr r0, [sp] - mov r1, r6 - add r2, r2, #1 - bl strncpy - ldr r0, [r5, #0x14] - bl Dwc_Http_Destroy - ldr r0, [sp, #8] - bl OS_Sleep - b _022DE7FC -_022DF5D4: - cmp sb, #0 - beq _022DF5EC - ldr r0, _022DF6A4 ; =ov00_02319214 - mov r1, sb - mov r2, #0 - blx r8 -_022DF5EC: - cmp fp, #0 - beq _022DF604 - ldr r0, _022DF6A8 ; =ov00_02319220 - mov r1, fp - mov r2, #0 - blx r8 -_022DF604: - cmp sl, #0 - addeq sp, sp, #0x29c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022DF6AC ; =ov00_0231922C - mov r1, sl - mov r2, #0 - blx r8 - add sp, sp, #0x29c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DF628: .word ov00_02326CD8 -_022DF62C: .word 0x00009C40 -_022DF630: .word ov00_02319084 -_022DF634: .word ov00_02326CF0 -_022DF638: .word OSi_ThreadInfo -_022DF63C: .word ov00_02319198 -_022DF640: .word _022BCA70 -_022DF644: .word 0x0000012E -_022DF648: .word ov00_02318BC8 -_022DF64C: .word 0x00004E20 -_022DF650: .word ov00_023191A4 -_022DF654: .word ov00_023191C4 -_022DF658: .word ov00_023191CC -_022DF65C: .word ov00_023191D4 -_022DF660: .word ov00_023190FC -_022DF664: .word ov00_02319130 -_022DF668: .word ov00_02326D0C -_022DF66C: .word 0xFFFFA4FA -_022DF670: .word ov00_023191E4 -_022DF674: .word ov00_023191EC -_022DF678: .word ov00_023190E0 -_022DF67C: .word ov00_023191F4 -_022DF680: .word ov00_02319200 -_022DF684: .word ov00_02319204 -_022DF688: .word ov00_0231920C -_022DF68C: .word ov00_0231914C -_022DF690: .word ov00_02319158 -_022DF694: .word ov00_02319168 -_022DF698: .word 0x0002BF20 -_022DF69C: .word 0x0001D4C0 -_022DF6A0: .word ov00_02319178 -_022DF6A4: .word ov00_02319214 -_022DF6A8: .word ov00_02319220 -_022DF6AC: .word ov00_0231922C - arm_func_end Dwci_Netcheck_Thread - - arm_func_start Dwci_Netcheck_SetError -Dwci_Netcheck_SetError: ; 0x022DF6B0 - stmdb sp!, {r4, lr} - ldr r1, _022DF6F0 ; =ov00_02326CD8 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r1, _022DF6F0 ; =ov00_02326CD8 - ldr r0, [r1] - add r0, r0, #0x1000 - str r4, [r0] - ldr r0, [r1] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - .align 2, 0 -_022DF6F0: .word ov00_02326CD8 - arm_func_end Dwci_Netcheck_SetError - - arm_func_start Dwc_Auth_SetNasTimeDiff -Dwc_Auth_SetNasTimeDiff: ; 0x022DF6F4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x3c - mov r6, r0 - bl strlen - mov r4, r0 - ldr r0, _022DF900 ; =ov00_02319298 - bl strlen - cmp r4, r0 - ldreqsb r0, [r6, #7] - cmpeq r0, #0x20 - ldreqsb r0, [r6, #0xb] - cmpeq r0, #0x20 - ldreqsb r0, [r6, #0x10] - cmpeq r0, #0x20 - ldreqsb r0, [r6, #0x13] - cmpeq r0, #0x3a - ldreqsb r0, [r6, #0x16] - cmpeq r0, #0x3a - ldreqsb r0, [r6, #0x19] - cmpeq r0, #0x20 - bne _022DF8F4 - add r0, sp, #0x2c - add r1, sp, #0x20 - bl Rtc_GetDateTime - cmp r0, #0 - bne _022DF8F4 - add r0, sp, #0x2c - add r1, sp, #0x20 - bl Rtc_ConvertDateTimeToSecond - mov r4, r0 - mov r5, r1 - mvn r0, #0 - cmp r5, r0 - cmpeq r4, r0 - beq _022DF8F4 - add r0, sp, #0 - mov r1, r6 - bl strcpy - mov r2, #0 - ldr r1, _022DF904 ; =_022BCA70 - add r0, sp, #0xc - strb r2, [sp, #7] - strb r2, [sp, #0xb] - strb r2, [sp, #0x10] - strb r2, [sp, #0x13] - strb r2, [sp, #0x16] - strb r2, [sp, #0x19] - str r2, [r1] - bl atoi - ldr r1, _022DF904 ; =_022BCA70 - str r0, [sp, #0x2c] - ldr r1, [r1] - cmp r1, #0x22 - beq _022DF8F4 - sub r1, r0, #0x7d0 - mov r0, #0xd - ldr r7, _022DF908 ; =ov00_02319268 - str r1, [sp, #0x2c] - str r0, [sp, #0x30] - mov r8, #0 - add r6, sp, #8 -_022DF7E8: - ldr r0, [r7, r8, lsl #2] - mov r1, r6 - bl strcmp - cmp r0, #0 - addeq r0, r8, #1 - streq r0, [sp, #0x30] - beq _022DF810 - add r8, r8, #1 - cmp r8, #0xc - blt _022DF7E8 -_022DF810: - ldr r0, [sp, #0x30] - cmp r0, #0xc - bhi _022DF8F4 - ldr r1, _022DF904 ; =_022BCA70 - mov r2, #0 - add r0, sp, #5 - str r2, [r1] - bl atoi - ldr r1, _022DF904 ; =_022BCA70 - str r0, [sp, #0x34] - ldr r0, [r1] - cmp r0, #0x22 - beq _022DF8F4 - mov r2, #0 - add r0, sp, #0x11 - str r2, [r1] - bl atoi - ldr r1, _022DF904 ; =_022BCA70 - str r0, [sp, #0x20] - ldr r0, [r1] - cmp r0, #0x22 - beq _022DF8F4 - mov r2, #0 - add r0, sp, #0x14 - str r2, [r1] - bl atoi - ldr r1, _022DF904 ; =_022BCA70 - str r0, [sp, #0x24] - ldr r0, [r1] - cmp r0, #0x22 - beq _022DF8F4 - mov r2, #0 - add r0, sp, #0x17 - str r2, [r1] - bl atoi - ldr r1, _022DF904 ; =_022BCA70 - str r0, [sp, #0x28] - ldr r0, [r1] - cmp r0, #0x22 - beq _022DF8F4 - add r0, sp, #0x2c - add r1, sp, #0x20 - bl Rtc_ConvertDateTimeToSecond - mvn r2, #0 - cmp r1, r2 - cmpeq r0, r2 - beq _022DF8F4 - ldr r2, _022DF90C ; =ov00_02326D54 - subs r0, r4, r0 - str r0, [r2, #0xc] - sbc r0, r5, r1 - str r0, [r2, #0x10] - stmib r2, {r4, r5} - mov r0, #1 - str r0, [r2] - add sp, sp, #0x3c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022DF8F4: - mov r0, #0 - add sp, sp, #0x3c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022DF900: .word ov00_02319298 -_022DF904: .word _022BCA70 -_022DF908: .word ov00_02319268 -_022DF90C: .word ov00_02326D54 - arm_func_end Dwc_Auth_SetNasTimeDiff - - arm_func_start Dwc_Svl_Init -Dwc_Svl_Init: ; 0x022DF910 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _022DF998 ; =ov00_02326D68 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - beq _022DF940 - ldr r1, _022DF99C ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DF940: - ldr r0, _022DF9A0 ; =ov00_023192B8 - ldr r1, _022DF9A4 ; =0x00001C20 - blx r5 - ldr r1, _022DF998 ; =ov00_02326D68 - cmp r0, #0 - str r0, [r1] - bne _022DF970 - ldr r1, _022DF99C ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DF970: - ldr r2, _022DF9A4 ; =0x00001C20 - mov r1, #0 - bl MI_CpuFill8 - ldr r1, _022DF998 ; =ov00_02326D68 - mov r0, #1 - ldr r2, [r1] - str r5, [r2] - ldr r1, [r1] - str r4, [r1, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DF998: .word ov00_02326D68 -_022DF99C: .word 0xFFFFA1DC -_022DF9A0: .word ov00_023192B8 -_022DF9A4: .word 0x00001C20 - arm_func_end Dwc_Svl_Init - - arm_func_start Dwc_Svl_Cleanup -Dwc_Svl_Cleanup: ; 0x022DF9A8 - stmdb sp!, {r3, lr} - ldr r0, _022DF9EC ; =ov00_02326D68 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #8 - bl Dwc_Http_Destroy - ldr r1, _022DF9EC ; =ov00_02326D68 - ldr r0, _022DF9F0 ; =ov00_023192C8 - ldr r1, [r1] - mov r2, #0 - ldr r3, [r1, #4] - blx r3 - ldr r0, _022DF9EC ; =ov00_02326D68 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DF9EC: .word ov00_02326D68 -_022DF9F0: .word ov00_023192C8 - arm_func_end Dwc_Svl_Cleanup - - arm_func_start Dwc_Svl_GetTokenAsync -Dwc_Svl_GetTokenAsync: ; 0x022DF9F4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0xb0 - ldr r2, _022DFC38 ; =ov00_02326D68 - mov r5, r0 - ldr r2, [r2] - mov r0, r1 - add r2, r2, #0x1000 - str r1, [r2, #0xc1c] - mov r1, #0 - mov r2, #0x174 - bl MI_CpuFill8 - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xbac] - cmp r0, #0 - beq _022DFA4C - add r0, r1, #0x1b40 - bl OS_IsThreadTerminated - cmp r0, #0 - bne _022DFA4C - bl WaitForever2 -_022DFA4C: - ldr r0, _022DFC3C ; =ov00_02318BC8 - ldr r1, _022DFC38 ; =ov00_02326D68 - ldr r0, [r0] - mov r3, #0 - ldr r4, [r1] - mov r2, #0x1000 - str r0, [sp] - str r3, [sp, #4] - str r2, [sp, #8] - ldr r2, [r4] - ldr r1, _022DFC40 ; =ov00_023192D8 - str r2, [sp, #0xc] - ldr r2, [r4, #4] - str r2, [sp, #0x10] - bl strcmp - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x14] - moveq r0, #0 - ldr r2, _022DFC44 ; =0x00004E20 - streq r0, [sp, #0x14] - add r1, sp, #0 - add r0, r4, #8 - str r2, [sp, #0x18] - bl Dwc_Http_Create - cmp r0, #0 - beq _022DFAD0 - ldr r1, _022DFC48 ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - add sp, sp, #0xb0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DFAD0: - add r0, sp, #0x1c - bl Dwc_Auth_GetCalInfoFromNVram - cmp r0, #0 - beq _022DFB00 - ldr r0, _022DFC38 ; =ov00_02326D68 - add r1, sp, #0x1c - ldr r0, [r0] - mov r2, #0 - add r0, r0, #8 - bl Dwc_Auth_SetCalInfoToHttp - cmp r0, #0 - bne _022DFB28 -_022DFB00: - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r0, [r0] - add r0, r0, #8 - bl Dwc_Http_Destroy - ldr r1, _022DFC48 ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - add sp, sp, #0xb0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DFB28: - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r1, _022DFC4C ; =ov00_023192F8 - ldr r0, [r0] - ldr r2, _022DFC50 ; =ov00_02319300 - add r0, r0, #8 - mov r3, #6 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - bne _022DFB70 - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r1, _022DFC54 ; =ov00_02319308 - ldr r0, [r0] - mov r2, r5 - add r0, r0, #8 - mov r3, #4 - bl Dwc_Http_Add_PostBase64Item - cmp r0, #0 - beq _022DFB98 -_022DFB70: - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r0, [r0] - add r0, r0, #8 - bl Dwc_Http_Destroy - ldr r1, _022DFC48 ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - add sp, sp, #0xb0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DFB98: - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r0, [r0] - add r0, r0, #8 - bl Dwc_Http_FinishHeader - cmp r0, #0 - beq _022DFBD8 - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r0, [r0] - add r0, r0, #8 - bl Dwc_Http_Destroy - ldr r1, _022DFC48 ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - add sp, sp, #0xb0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022DFBD8: - ldr r0, _022DFC58 ; =OSi_ThreadInfo - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _022DFC38 ; =ov00_02326D68 - ldr r2, [r1] - sub r1, r0, #1 - add r0, r2, #8 - bl Dwc_Http_StartThread - ldr r0, _022DFC38 ; =ov00_02326D68 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0xbac] - cmp r0, #0 - addne sp, sp, #0xb0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - add r0, r1, #8 - bl Dwc_Http_Destroy - ldr r1, _022DFC48 ; =0xFFFFA1DC - mov r0, #9 - bl Dwci_SetError - mov r0, #0 - add sp, sp, #0xb0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022DFC38: .word ov00_02326D68 -_022DFC3C: .word ov00_02318BC8 -_022DFC40: .word ov00_023192D8 -_022DFC44: .word 0x00004E20 -_022DFC48: .word 0xFFFFA1DC -_022DFC4C: .word ov00_023192F8 -_022DFC50: .word ov00_02319300 -_022DFC54: .word ov00_02319308 -_022DFC58: .word OSi_ThreadInfo - arm_func_end Dwc_Svl_GetTokenAsync - - arm_func_start Dwc_Svl_Process -Dwc_Svl_Process: ; 0x022DFC5C - stmdb sp!, {r3, lr} - ldr r0, _022DFD28 ; =ov00_02326D68 - ldr r1, [r0] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x1000 - ldr r0, [r0, #0xbac] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x1b40 - bl OS_IsThreadTerminated - cmp r0, #1 - bne _022DFD20 - ldr r0, _022DFD28 ; =ov00_02326D68 - ldr r1, [r0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x28] - cmp r0, #7 - beq _022DFCF4 - cmp r0, #8 - bne _022DFD04 - bl Dwci_Svl_ParseHttp - cmp r0, #0 - bne _022DFCDC - ldr r0, _022DFD28 ; =ov00_02326D68 - ldr r0, [r0] - add r0, r0, #8 - bl Dwc_Http_Destroy - mov r0, #4 - ldmia sp!, {r3, pc} -_022DFCDC: - ldr r0, _022DFD28 ; =ov00_02326D68 - ldr r0, [r0] - add r0, r0, #8 - bl Dwc_Http_Destroy - mov r0, #3 - ldmia sp!, {r3, pc} -_022DFCF4: - add r0, r1, #8 - bl Dwc_Http_Destroy - mov r0, #5 - ldmia sp!, {r3, pc} -_022DFD04: - add r0, r1, #8 - bl Dwc_Http_Destroy - ldr r1, _022DFD2C ; =0xFFFFA1DB - mov r0, #0x11 - bl Dwci_SetError - mov r0, #4 - ldmia sp!, {r3, pc} -_022DFD20: - mov r0, #2 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DFD28: .word ov00_02326D68 -_022DFD2C: .word 0xFFFFA1DB - arm_func_end Dwc_Svl_Process - - arm_func_start Dwci_Svl_ParseHttp -Dwci_Svl_ParseHttp: ; 0x022DFD30 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _022DFF20 ; =ov00_02326D68 - mov r1, #0 - ldr r4, [r0] - add r0, r4, #8 - bl Dwc_Http_ParseResult - cmp r0, #0 - bne _022DFD6C - ldr r1, _022DFF24 ; =0xFFFF9DF3 - mov r0, #0x10 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFD6C: - ldr r1, _022DFF28 ; =ov00_0231930C - add r0, r4, #8 - bl Dwc_Http_GetResult - cmp r0, #0 - beq _022DFD84 - bl Dwc_Auth_SetNasTimeDiff -_022DFD84: - ldr r1, _022DFF2C ; =ov00_02319314 - add r0, r4, #8 - bl Dwc_Http_GetResult - cmp r0, #0 - bne _022DFDB0 - ldr r1, _022DFF24 ; =0xFFFF9DF3 - mov r0, #0x10 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFDB0: - bl atoi - ldr r1, _022DFF30 ; =_022BCA70 - mov r2, r0 - ldr r0, [r1] - cmp r0, #0x22 - bne _022DFDE0 - ldr r1, _022DFF24 ; =0xFFFF9DF3 - mov r0, #0x10 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFDE0: - cmp r2, #0xc8 - beq _022DFE04 - ldr r1, _022DFF34 ; =0xFFFF9E58 - mov r0, #0x10 - sub r1, r1, r2 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFE04: - ldr r1, _022DFF38 ; =ov00_02319320 - add r2, sp, #0 - add r0, r4, #8 - mov r3, #4 - bl Dwc_Http_GetBase64DecodedResult - cmp r0, #0 - bgt _022DFE38 - ldr r1, _022DFF24 ; =0xFFFF9DF3 - mov r0, #0x10 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFE38: - add r0, sp, #0 - bl atoi - ldr r1, _022DFF30 ; =_022BCA70 - mov r2, r0 - ldr r0, [r1] - cmp r0, #0x22 - bne _022DFE6C - ldr r1, _022DFF24 ; =0xFFFF9DF3 - mov r0, #0x10 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFE6C: - cmp r2, #0x64 - blt _022DFE90 - ldr r1, _022DFF3C ; =0xFFFFA240 - mov r0, #0x10 - sub r1, r1, r2 - bl Dwci_SetError - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022DFE90: - ldr r0, _022DFF20 ; =ov00_02326D68 - ldr r1, _022DFF40 ; =ov00_0231932C - ldr r2, [r0] - add r0, r4, #8 - add r2, r2, #0x1000 - ldr r2, [r2, #0xc1c] - mov r3, #0x40 - add r2, r2, #4 - bl Dwc_Http_GetBase64DecodedResult - ldr r0, _022DFF20 ; =ov00_02326D68 - ldr r1, _022DFF44 ; =ov00_02319334 - ldr r2, [r0] - add r0, r4, #8 - add r2, r2, #0x1000 - ldr r2, [r2, #0xc1c] - mov r3, #0x12c - add r2, r2, #0x45 - bl Dwc_Http_GetBase64DecodedResult - ldr r1, _022DFF48 ; =ov00_02319344 - add r2, sp, #0 - add r0, r4, #8 - mov r3, #1 - bl Dwc_Http_GetBase64DecodedResult - ldrsb r0, [sp] - cmp r0, #0x59 - ldreq r0, _022DFF20 ; =ov00_02326D68 - moveq r1, #1 - ldrne r0, _022DFF20 ; =ov00_02326D68 - movne r1, #0 - ldr r0, [r0] - add r0, r0, #0x1000 - ldr r0, [r0, #0xc1c] - str r1, [r0] - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022DFF20: .word ov00_02326D68 -_022DFF24: .word 0xFFFF9DF3 -_022DFF28: .word ov00_0231930C -_022DFF2C: .word ov00_02319314 -_022DFF30: .word _022BCA70 -_022DFF34: .word 0xFFFF9E58 -_022DFF38: .word ov00_02319320 -_022DFF3C: .word 0xFFFFA240 -_022DFF40: .word ov00_0231932C -_022DFF44: .word ov00_02319334 -_022DFF48: .word ov00_02319344 - arm_func_end Dwci_Svl_ParseHttp - - arm_func_start Dwc_Auth_Base64Encode -Dwc_Auth_Base64Encode: ; 0x022DFF4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r4, _022E00CC ; =0xAAAAAAAB - str r2, [sp] - umull r4, r5, r1, r4 - mov r6, #3 - mov r5, r5, lsr #1 - umull r4, r5, r6, r5 - mov sl, r0 - subs r5, r1, r4 - movne r5, #4 - ldr r2, _022E00CC ; =0xAAAAAAAB - ldr r0, [sp] - moveq r5, #0 - cmp r0, #0 - umull r0, r4, r1, r2 - mov r4, r4, lsr #1 - addeq sp, sp, #8 - add r0, r5, r4, lsl #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r3, r0 - addlo sp, sp, #8 - mvnlo r0, #0 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r7, sl, r1 - ldr r8, [sp] - cmp sl, r7 - beq _022E00BC - sub fp, r2, #0x80000000 - ldr r5, _022E00D0 ; =ov00_02319350 - mov r4, fp -_022DFFC8: - sub sb, r7, sl - mov r0, sb, lsl #3 - smull r1, r2, r4, r0 - add r2, r2, r0, lsr #31 - mov r1, #6 - smull r2, r3, r1, r2 - subs r2, r0, r2 - smull r1, r2, fp, r0 - movne r3, #1 - moveq r3, #0 - add r2, r2, r0, lsr #31 - cmp sb, #3 - add r6, r2, r3 - movge sb, #3 - add r0, sp, #4 - mov r1, #0 - mov r2, #3 - bl MI_CpuFill8 - mov r0, sl - add r1, sp, #4 - mov r2, sb - bl MI_CpuCopy8 - ldrb r0, [sp, #4] - ldr r1, [r5] - cmp r6, #2 - mov r0, r0, asr #2 - ldrsb r0, [r1, r0] - strb r0, [r8] - movlt r0, #0x2a - blt _022E005C - ldrb r2, [sp, #4] - ldrb r1, [sp, #5] - ldr r0, [r5] - mov r2, r2, lsl #4 - and r2, r2, #0x3f - orr r1, r2, r1, asr #4 - ldrsb r0, [r0, r1] -_022E005C: - strb r0, [r8, #1] - cmp r6, #3 - movlt r0, #0x2a - blt _022E0088 - ldrb r2, [sp, #5] - ldrb r1, [sp, #6] - ldr r0, [r5] - mov r2, r2, lsl #2 - and r2, r2, #0x3f - orr r1, r2, r1, asr #6 - ldrsb r0, [r0, r1] -_022E0088: - strb r0, [r8, #2] - cmp r6, #4 - movlt r0, #0x2a - blt _022E00A8 - ldrb r0, [sp, #6] - ldr r1, [r5] - and r0, r0, #0x3f - ldrsb r0, [r1, r0] -_022E00A8: - add sl, sl, sb - strb r0, [r8, #3] - cmp sl, r7 - add r8, r8, #4 - bne _022DFFC8 -_022E00BC: - ldr r0, [sp] - sub r0, r8, r0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E00CC: .word 0xAAAAAAAB -_022E00D0: .word ov00_02319350 - arm_func_end Dwc_Auth_Base64Encode - - arm_func_start Dwc_Auth_Base64Decode -Dwc_Auth_Base64Decode: ; 0x022E00D4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - tst r1, #3 - mvnne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r5, #0 - mov ip, r5 - cmp r1, #0 - bls _022E010C -_022E00F4: - ldrsb r4, [r0, ip] - add ip, ip, #1 - cmp r4, #0x2a - addne r5, r5, #6 - cmp ip, r1 - blo _022E00F4 -_022E010C: - mov ip, r5, asr #2 - add ip, r5, ip, lsr #29 - mov ip, ip, asr #3 - cmp r2, #0 - moveq r0, ip - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r3, ip - mvnlo r0, #0 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r2 -_022E0140: - mov r7, #0 - add r6, sp, #0 - mov r3, r7 - mov r4, #0x3f - mov lr, #0x3e -_022E0154: - ldrsb r5, [r0, r7] - cmp r5, #0x41 - blt _022E0170 - cmp r5, #0x5a - suble r5, r5, #0x41 - strleb r5, [r6] - ble _022E01B8 -_022E0170: - cmp r5, #0x61 - blt _022E0188 - cmp r5, #0x7a - suble r5, r5, #0x47 - strleb r5, [r6] - ble _022E01B8 -_022E0188: - cmp r5, #0x30 - blt _022E01A0 - cmp r5, #0x39 - addle r5, r5, #4 - strleb r5, [r6] - ble _022E01B8 -_022E01A0: - cmp r5, #0x2e - streqb lr, [r6] - beq _022E01B8 - cmp r5, #0x2d - streqb r4, [r6] - strneb r3, [r6] -_022E01B8: - add r7, r7, #1 - cmp r7, #4 - add r6, r6, #1 - blt _022E0154 - ldrsb r4, [sp, #1] - ldrsb lr, [sp] - add r3, r1, #1 - mov r4, r4, asr #4 - orr r4, r4, lr, lsl #2 - sub r3, r3, r2 - strb r4, [r1] - cmp r3, ip - add r0, r0, #4 - bge _022E0234 - ldrsb lr, [sp, #2] - ldrsb r4, [sp, #1] - add r3, r1, #2 - mov lr, lr, asr #2 - orr r4, lr, r4, lsl #4 - sub r3, r3, r2 - strb r4, [r1, #1] - cmp r3, ip - bge _022E0234 - ldrsb lr, [sp, #2] - ldrsb r3, [sp, #3] - orr r3, r3, lr, lsl #6 - strb r3, [r1, #2] - add r1, r1, #3 - sub r3, r1, r2 - cmp r3, ip - blt _022E0140 -_022E0234: - mov r0, r3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Dwc_Auth_Base64Decode - - arm_func_start Dwc_GetLastError -Dwc_GetLastError: ; 0x022E023C - cmp r0, #0 - ldrne r1, _022E0258 ; =ov00_02326D6C - ldrne r1, [r1, #4] - strne r1, [r0] - ldr r0, _022E0258 ; =ov00_02326D6C - ldr r0, [r0] - bx lr - .align 2, 0 -_022E0258: .word ov00_02326D6C - arm_func_end Dwc_GetLastError - - arm_func_start Dwc_GetLastErrorEx -Dwc_GetLastErrorEx: ; 0x022E025C - cmp r0, #0 - ldrne r2, _022E0354 ; =ov00_02326D6C - ldrne r2, [r2, #4] - strne r2, [r0] - cmp r1, #0 - beq _022E0348 - ldr r0, _022E0354 ; =ov00_02326D6C - ldr r0, [r0] - cmp r0, #0x15 - addls pc, pc, r0, lsl #2 - b _022E0340 -_022E0288: ; jump table - b _022E0340 ; case 0 - b _022E0310 ; case 1 - b _022E02E0 ; case 2 - b _022E02E0 ; case 3 - b _022E02E0 ; case 4 - b _022E02E0 ; case 5 - b _022E02EC ; case 6 - b _022E02F8 ; case 7 - b _022E02E0 ; case 8 - b _022E0310 ; case 9 - b _022E0304 ; case 10 - b _022E0304 ; case 11 - b _022E0304 ; case 12 - b _022E0304 ; case 13 - b _022E031C ; case 14 - b _022E0328 ; case 15 - b _022E0334 ; case 16 - b _022E0328 ; case 17 - b _022E0334 ; case 18 - b _022E0328 ; case 19 - b _022E0334 ; case 20 - b _022E0334 ; case 21 -_022E02E0: - mov r0, #6 - str r0, [r1] - b _022E0348 -_022E02EC: - mov r0, #3 - str r0, [r1] - b _022E0348 -_022E02F8: - mov r0, #4 - str r0, [r1] - b _022E0348 -_022E0304: - mov r0, #1 - str r0, [r1] - b _022E0348 -_022E0310: - mov r0, #7 - str r0, [r1] - b _022E0348 -_022E031C: - mov r0, #5 - str r0, [r1] - b _022E0348 -_022E0328: - mov r0, #6 - str r0, [r1] - b _022E0348 -_022E0334: - mov r0, #2 - str r0, [r1] - b _022E0348 -_022E0340: - mov r0, #0 - str r0, [r1] -_022E0348: - ldr r0, _022E0354 ; =ov00_02326D6C - ldr r0, [r0] - bx lr - .align 2, 0 -_022E0354: .word ov00_02326D6C - arm_func_end Dwc_GetLastErrorEx - - arm_func_start Dwc_ClearError -Dwc_ClearError: ; 0x022E0358 - ldr r0, _022E0374 ; =ov00_02326D6C - ldr r1, [r0] - cmp r1, #9 - movne r1, #0 - strne r1, [r0] - strne r1, [r0, #4] - bx lr - .align 2, 0 -_022E0374: .word ov00_02326D6C - arm_func_end Dwc_ClearError - - arm_func_start Dwci_IsError -Dwci_IsError: ; 0x022E0378 - ldr r0, _022E0390 ; =ov00_02326D6C - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_022E0390: .word ov00_02326D6C - arm_func_end Dwci_IsError - - arm_func_start Dwci_SetError -Dwci_SetError: ; 0x022E0394 - ldr r2, _022E03A8 ; =ov00_02326D6C - ldr r3, [r2] - cmp r3, #9 - stmneia r2, {r0, r1} - bx lr - .align 2, 0 -_022E03A8: .word ov00_02326D6C - arm_func_end Dwci_SetError - - arm_func_start Dwci_GetAllocateHeader -Dwci_GetAllocateHeader: ; 0x022E03AC - sub r0, r0, #0x20 - bx lr - arm_func_end Dwci_GetAllocateHeader - - arm_func_start Dwci_SetAllocateHeader -Dwci_SetAllocateHeader: ; 0x022E03B4 - ldr r2, _022E03C8 ; =0x4457434D - str r2, [r0] - str r1, [r0, #4] - add r0, r0, #0x20 - bx lr - .align 2, 0 -_022E03C8: .word 0x4457434D - arm_func_end Dwci_SetAllocateHeader - - arm_func_start Dwci_GetAllocateSize -Dwci_GetAllocateSize: ; 0x022E03CC - stmdb sp!, {r3, lr} - bl Dwci_GetAllocateHeader - ldr r0, [r0, #4] - ldmia sp!, {r3, pc} - arm_func_end Dwci_GetAllocateSize - - arm_func_start Dwc_SetMemFunc -Dwc_SetMemFunc: ; 0x022E03DC - ldr r2, _022E03EC ; =ov00_02326D74 - str r0, [r2, #4] - str r1, [r2] - bx lr - .align 2, 0 -_022E03EC: .word ov00_02326D74 - arm_func_end Dwc_SetMemFunc - - arm_func_start Dwc_Alloc -Dwc_Alloc: ; 0x022E03F0 - ldr ip, _022E03FC ; =Dwc_AllocEx - mov r2, #0x20 - bx ip - .align 2, 0 -_022E03FC: .word Dwc_AllocEx - arm_func_end Dwc_Alloc - - arm_func_start Dwc_AllocEx -Dwc_AllocEx: ; 0x022E0400 - stmdb sp!, {r4, lr} - ldr r3, _022E0430 ; =ov00_02326D74 - mov r4, r1 - ldr r3, [r3, #4] - add r1, r4, #0x20 - blx r3 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, r4 - bl Dwci_SetAllocateHeader - ldmia sp!, {r4, pc} - .align 2, 0 -_022E0430: .word ov00_02326D74 - arm_func_end Dwc_AllocEx - - arm_func_start Dwc_Free -Dwc_Free: ; 0x022E0434 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - ldmeqia sp!, {r4, pc} - mov r0, r1 - bl Dwci_GetAllocateHeader - mov r1, r0 - ldr r0, _022E046C ; =ov00_02326D74 - ldr r2, [r1, #4] - ldr r3, [r0] - mov r0, r4 - add r2, r2, #0x20 - blx r3 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E046C: .word ov00_02326D74 - arm_func_end Dwc_Free - - arm_func_start Dwc_Realloc -Dwc_Realloc: ; 0x022E0470 - stmdb sp!, {r3, lr} - mov ip, #0x20 - str ip, [sp] - bl Dwc_ReallocEx - ldmia sp!, {r3, pc} - arm_func_end Dwc_Realloc - - arm_func_start Dwc_ReallocEx -Dwc_ReallocEx: ; 0x022E0484 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r3 - mov r7, r1 - ldr r2, [sp, #0x18] - mov r1, r5 - mov r8, r0 - bl Dwc_AllocEx - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r7, #0 - beq _022E04E8 - mov r0, r7 - bl Dwci_GetAllocateSize - mov r6, r0 - cmp r6, r5 - movls r5, r6 - mov r0, r7 - mov r1, r4 - mov r2, r5 - bl MI_CpuCopy8 - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl Dwc_Free -_022E04E8: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end Dwc_ReallocEx - - arm_func_start Dwci_GsMalloc -Dwci_GsMalloc: ; 0x022E04F0 - ldr ip, _022E0500 ; =Dwc_Alloc - mov r1, r0 - mov r0, #5 - bx ip - .align 2, 0 -_022E0500: .word Dwc_Alloc - arm_func_end Dwci_GsMalloc - - arm_func_start Dwci_GsRealloc -Dwci_GsRealloc: ; 0x022E0504 - ldr ip, _022E051C ; =Dwc_Realloc - mov r2, r1 - mov r1, r0 - mov r3, r2 - mov r0, #5 - bx ip - .align 2, 0 -_022E051C: .word Dwc_Realloc - arm_func_end Dwci_GsRealloc - - arm_func_start Dwci_GsFree -Dwci_GsFree: ; 0x022E0520 - ldr ip, _022E0534 ; =Dwc_Free - mov r1, r0 - mov r0, #5 - mov r2, #0 - bx ip - .align 2, 0 -_022E0534: .word Dwc_Free - arm_func_end Dwci_GsFree - - arm_func_start Dwci_GsMemalign -Dwci_GsMemalign: ; 0x022E0538 - ldr ip, _022E0548 ; =Dwc_AllocEx - mov r2, r0 - mov r0, #5 - bx ip - .align 2, 0 -_022E0548: .word Dwc_AllocEx - arm_func_end Dwci_GsMemalign - - arm_func_start Dwc_InitInetEx -Dwc_InitInetEx: ; 0x022E054C - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _022E05AC ; =ov00_02326D7C - mov r4, r0 - ldr r2, [r2, #4] - mov r6, r1 - mov r5, r3 - cmp r2, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r1, #0 - mov r2, #0x64 - bl MI_CpuFill8 - strh r6, [r4, #8] - mov r0, #1 - strh r0, [r4, #0xa] - strh r0, [r4, #4] - mov r0, #0 - strh r0, [r4, #6] - strb r0, [r4, #0xc] - ldr r1, _022E05AC ; =ov00_02326D7C - str r0, [r4, #0x10] - mov r0, r5 - str r4, [r1, #4] - bl Cps_SetSslLowThreadPriority - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E05AC: .word ov00_02326D7C - arm_func_end Dwc_InitInetEx - - arm_func_start Dwc_InitInet -Dwc_InitInet: ; 0x022E05B0 - ldr ip, _022E05C4 ; =Dwc_InitInetEx - mov r1, #3 - mov r2, #1 - mov r3, #0x14 - bx ip - .align 2, 0 -_022E05C4: .word Dwc_InitInetEx - arm_func_end Dwc_InitInet - - arm_func_start Dwc_SetAuthServer -Dwc_SetAuthServer: ; 0x022E05C8 - stmdb sp!, {r3, lr} - cmp r0, #0 - beq _022E05E8 - cmp r0, #1 - beq _022E05F4 - cmp r0, #2 - beq _022E0600 - ldmia sp!, {r3, pc} -_022E05E8: - ldr r0, _022E060C ; =ov00_0231A0E0 - bl Dwc_Auth_SetCustomNas - ldmia sp!, {r3, pc} -_022E05F4: - ldr r0, _022E0610 ; =ov00_0231A108 - bl Dwc_Auth_SetCustomNas - ldmia sp!, {r3, pc} -_022E0600: - ldr r0, _022E0614 ; =ov00_0231A12C - bl Dwc_Auth_SetCustomNas - ldmia sp!, {r3, pc} - .align 2, 0 -_022E060C: .word ov00_0231A0E0 -_022E0610: .word ov00_0231A108 -_022E0614: .word ov00_0231A12C - arm_func_end Dwc_SetAuthServer - - arm_func_start Dwc_ConnectInetAsync -Dwc_ConnectInetAsync: ; 0x022E0618 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _022E06BC ; =ov00_02326D7C - ldr r0, [r0, #4] - cmp r0, #0 - beq _022E06A8 - ldrh r0, [r0, #4] - cmp r0, #1 - addne sp, sp, #0xc - ldmneia sp!, {pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - ldr r0, _022E06BC ; =ov00_02326D7C - ldr r3, _022E06C0 ; =Dwc_Alloc - ldr lr, [r0, #4] - ldr r2, _022E06C4 ; =Dwc_Free - ldrh ip, [lr, #8] - add r0, sp, #0 - mov r1, #2 - strb ip, [sp, #8] - ldrh ip, [lr, #0xa] - strb ip, [sp, #9] - str r3, [sp] - str r2, [sp, #4] - strh r1, [lr, #4] - bl Dwc_AC_Create - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {pc} - ldr r1, _022E06C8 ; =0xFFFF3BE9 - mov r0, #9 - bl Dwci_SetError - add sp, sp, #0xc - ldmia sp!, {pc} -_022E06A8: - ldr r1, _022E06C8 ; =0xFFFF3BE9 - mov r0, #9 - bl Dwci_SetError - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_022E06BC: .word ov00_02326D7C -_022E06C0: .word Dwc_Alloc -_022E06C4: .word Dwc_Free -_022E06C8: .word 0xFFFF3BE9 - arm_func_end Dwc_ConnectInetAsync - - arm_func_start Dwc_DebugConnectInetAsync -Dwc_DebugConnectInetAsync: ; 0x022E06CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl Dwc_ConnectInetAsync - ldr r0, _022E0724 ; =ov00_02326D7C - ldr r1, [r0, #4] - cmp r1, #0 - movne r0, #1 - strneb r0, [r1, #0xc] - bl Dwc_GetInetStatus - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr ip, [sp, #0x18] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str ip, [sp] - bl Dwc_AC_SetSpecifyAp - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E0724: .word ov00_02326D7C - arm_func_end Dwc_DebugConnectInetAsync - - arm_func_start Dwc_CheckInet -Dwc_CheckInet: ; 0x022E0728 - stmdb sp!, {r3, lr} - ldr r0, _022E077C ; =ov00_02326D7C - ldr r1, [r0, #4] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r1] - cmp r0, #0 - beq _022E0774 - mov r0, #3 - strh r0, [r1, #4] - bl Dwc_GetInetStatus - ldr r0, _022E077C ; =ov00_02326D7C - ldr r0, [r0, #4] - ldrb r0, [r0, #0xc] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} -_022E0774: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E077C: .word ov00_02326D7C - arm_func_end Dwc_CheckInet - - arm_func_start Dwc_ProcessInet -Dwc_ProcessInet: ; 0x022E0780 - stmdb sp!, {r3, lr} - ldr r0, _022E0898 ; =ov00_02326D7C - ldr r1, [r0, #4] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r1, #0x10] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022E0838 -_022E07A4: ; jump table - b _022E0838 ; case 0 - b _022E07BC ; case 1 - b _022E07D8 ; case 2 - b _022E0814 ; case 3 - b _022E0834 ; case 4 - b _022E0834 ; case 5 -_022E07BC: - mov r0, #0 - str r0, [r1] - bl Dwc_AC_ProcessGetWdsInfo - ldr r1, _022E0898 ; =ov00_02326D7C - ldr r1, [r1, #4] - str r0, [r1, #0x10] - ldmia sp!, {r3, pc} -_022E07D8: - bl Dwc_AC_CleanupGetWdsInfo - ldr r0, _022E0898 ; =ov00_02326D7C - mov r1, #8 - ldr r3, [r0, #4] - str r1, [sp] - ldr r2, [r3, #0x54] - add r0, r3, #0x14 - add r1, r3, #0x34 - add r3, r3, #0x58 - bl Dwc_DebugConnectInetAsync - ldr r0, _022E0898 ; =ov00_02326D7C - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x10] - ldmia sp!, {r3, pc} -_022E0814: - bl Dwc_AC_CleanupGetWdsInfo - ldr r0, _022E0898 ; =ov00_02326D7C - mvn r3, #0 - ldr r2, [r0, #4] - mov r1, #1 - str r3, [r2] - ldr r0, [r0, #4] - strb r1, [r0, #0xc] -_022E0834: - ldmia sp!, {r3, pc} -_022E0838: - ldrh r0, [r1, #4] - cmp r0, #2 - bne _022E0858 - bl InitWfc - ldr r1, _022E0898 ; =ov00_02326D7C - ldr r1, [r1, #4] - str r0, [r1] - ldmia sp!, {r3, pc} -_022E0858: - cmp r0, #4 - ldmneia sp!, {r3, pc} - ldrh r0, [r1, #6] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl Wcm_GetPhase - cmp r0, #9 - ldmeqia sp!, {r3, pc} - ldr r0, _022E0898 ; =ov00_02326D7C - mov r3, #0 - ldr r2, [r0, #4] - mov r1, #6 - strh r3, [r2, #6] - ldr r0, [r0, #4] - strh r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E0898: .word ov00_02326D7C - arm_func_end Dwc_ProcessInet - - arm_func_start Dwc_GetInetStatus -Dwc_GetInetStatus: ; 0x022E089C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _022E0A68 ; =ov00_02326D7C - ldr r1, [r0, #4] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r1, #0x10] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022E0930 -_022E08C4: ; jump table - b _022E0930 ; case 0 - b _022E08DC ; case 1 - b _022E08E4 ; case 2 - b _022E08EC ; case 3 - b _022E0920 ; case 4 - b _022E0928 ; case 5 -_022E08DC: - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E08E4: - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E08EC: - bl Dwc_ProcessInet - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r0, #5 - ldr r1, [r1] - bl Dwci_SetError - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r0, #7 - ldr r3, [r1, #4] - mov r2, #4 - strh r0, [r3, #4] - ldr r1, [r1, #4] - str r2, [r1, #0x10] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E0920: - mov r0, #7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E0928: - mov r0, #5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E0930: - ldrh r0, [r1, #4] - cmp r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwc_AC_GetStatus - mov r4, r0 - cmp r4, #5 - bne _022E0974 - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r0, #4 - ldr r2, [r1, #4] - mov r3, #1 - strh r0, [r2, #4] - ldr r2, [r1, #4] - strh r3, [r2, #6] - ldr r1, [r1, #4] - strb r3, [r1, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E0974: - cmp r4, #0 - bge _022E0A60 - mvn r0, #9 - cmp r4, r0 - blt _022E09B8 - ldr r0, _022E0A68 ; =ov00_02326D7C - ldr r1, _022E0A6C ; =0xFFFF3BE9 - ldr r2, [r0, #4] - mov r3, #1 - mov r0, #9 - strb r3, [r2, #0xc] - bl Dwci_SetError - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r0, #8 - ldr r1, [r1, #4] - strh r0, [r1, #4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E09B8: - ldr r0, _022E0A68 ; =ov00_02326D7C - ldr r5, [r0, #4] - ldrb r1, [r5, #0xc] - cmp r1, #0 - bne _022E0A34 - ldrh r7, [r5, #8] - bl Cps_GetSslLowThreadPriority - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r6, r0 - str r4, [r1] - bl Dwc_CleanupInet - mov r2, r6, lsl #0x10 - mov r3, r2, lsr #0x10 - mov r0, r5 - mov r1, r7 - mov r2, #1 - bl Dwc_InitInetEx - ldr r0, _022E0A68 ; =ov00_02326D7C - mov r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0x14 - bl Dwc_AC_StartupGetWdsInfo - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r3, #1 - ldr r2, [r1, #4] - mov r0, #2 - str r3, [r2, #0x10] - ldr r1, [r1, #4] - mov r2, #0 - str r2, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E0A34: - ldr r0, [r0] - cmp r0, r4 - movlt r4, r0 - mov r1, r4 - mov r0, #5 - bl Dwci_SetError - ldr r1, _022E0A68 ; =ov00_02326D7C - mov r0, #7 - ldr r1, [r1, #4] - strh r0, [r1, #4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E0A60: - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E0A68: .word ov00_02326D7C -_022E0A6C: .word 0xFFFF3BE9 - arm_func_end Dwc_GetInetStatus - - arm_func_start Dwc_CleanupInet -Dwc_CleanupInet: ; 0x022E0A70 - stmdb sp!, {r4, lr} - ldr r0, _022E0AF8 ; =ov00_02326D7C - ldr r1, [r0, #4] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - ldrh r0, [r1, #4] - cmp r0, #1 - bne _022E0AC4 - ldr r0, [r1, #0x10] - cmp r0, #1 - bne _022E0AB4 - bl Dwc_AC_CancelGetWdsInfo -_022E0AA0: - bl Dwc_AC_ProcessGetWdsInfo - sub r0, r0, #2 - cmp r0, #2 - bhi _022E0AA0 - bl Dwc_AC_CleanupGetWdsInfo -_022E0AB4: - ldr r0, _022E0AF8 ; =ov00_02326D7C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r4, pc} -_022E0AC4: - bl Dwc_AC_Destroy - cmp r0, #0 - bne _022E0AE8 - mov r4, #0xa -_022E0AD4: - mov r0, r4 - bl OS_Sleep - bl Dwc_AC_Destroy - cmp r0, #0 - beq _022E0AD4 -_022E0AE8: - ldr r0, _022E0AF8 ; =ov00_02326D7C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E0AF8: .word ov00_02326D7C - arm_func_end Dwc_CleanupInet - - arm_func_start Dwc_CleanupInetAsync -Dwc_CleanupInetAsync: ; 0x022E0AFC - stmdb sp!, {r3, lr} - ldr r0, _022E0BBC ; =ov00_02326D7C - ldr r1, [r0, #4] - cmp r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrh r0, [r1, #4] - cmp r0, #8 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #1 - bne _022E0B90 - ldr r0, [r1, #0x10] - cmp r0, #1 - bne _022E0B54 - bl Dwc_AC_CancelGetWdsInfo - ldr r0, _022E0BBC ; =ov00_02326D7C - mov r2, #5 - ldr r1, [r0, #4] - mov r0, #0 - str r2, [r1, #0x10] - ldmia sp!, {r3, pc} -_022E0B54: - cmp r0, #5 - bne _022E0B7C - bl Dwc_AC_ProcessGetWdsInfo - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - sub r0, r0, #2 - cmp r0, #2 - bhi _022E0B7C - bl Dwc_AC_CleanupGetWdsInfo -_022E0B7C: - ldr r0, _022E0BBC ; =ov00_02326D7C - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} -_022E0B90: - mov r0, #5 - strh r0, [r1, #4] - bl Dwc_AC_Destroy - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _022E0BBC ; =ov00_02326D7C - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E0BBC: .word ov00_02326D7C - arm_func_end Dwc_CleanupInetAsync - - arm_func_start Dwci_CheckDisconnected -Dwci_CheckDisconnected: ; 0x022E0BC0 - ldr r0, _022E0BE8 ; =ov00_02326D7C - ldr r0, [r0, #4] - cmp r0, #0 - beq _022E0BE0 - ldrh r0, [r0, #4] - cmp r0, #6 - moveq r0, #1 - bxeq lr -_022E0BE0: - mov r0, #0 - bx lr - .align 2, 0 -_022E0BE8: .word ov00_02326D7C - arm_func_end Dwci_CheckDisconnected - - arm_func_start Dwc_GetLinkLevel -Dwc_GetLinkLevel: ; 0x022E0BEC - ldr ip, _022E0BF4 ; =Wcm_GetLinkLevel - bx ip - .align 2, 0 -_022E0BF4: .word Wcm_GetLinkLevel - arm_func_end Dwc_GetLinkLevel - - arm_func_start Dwc_GetApInfo -Dwc_GetApInfo: ; 0x022E0BF8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r1, #0 - mov r2, #0x3c - mov r4, r0 - bl MI_CpuFill8 - mov r0, #0xff - str r0, [r4, #4] - bl Dwc_GetInetStatus - cmp r0, #4 - addne sp, sp, #0xc - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, pc} - bl Dwc_AC_GetApType - str r0, [r4] - cmp r0, #0xff - beq _022E0C44 - cmp r0, #0x63 - ble _022E0C58 -_022E0C44: - mov r0, #0x63 - str r0, [r4] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022E0C58: - bl EnableIrqFlag - mov r6, r0 - bl Wcm_GetApMacAddress - mov r5, r0 - mov r1, #6 - bl DC_InvalidateRange - cmp r5, #0 - bne _022E0C8C - mov r0, r6 - bl SetIrqFlag - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022E0C8C: - mov r0, r5 - add r1, r4, #0x33 - mov r2, #6 - bl MI_CpuCopy8 - ldr r0, [r4] - cmp r0, #0 - blt _022E0CF0 - cmp r0, #3 - bge _022E0CF0 - add r0, sp, #0 - bl Wcm_GetApEssid - mov r5, r0 - mov r1, #0x20 - bl DC_InvalidateRange - cmp r5, #0 - bne _022E0CE0 - mov r0, r6 - bl SetIrqFlag - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022E0CE0: - ldrh r2, [sp] - mov r0, r5 - add r1, r4, #0x12 - bl MI_CpuCopy8 -_022E0CF0: - mov r0, r6 - bl SetIrqFlag - add r0, sp, #2 - bl Dwc_AC_GetApSpotInfo - cmp r0, #0 - beq _022E0D44 - ldrb r1, [sp, #2] - mov r0, #0 - cmp r1, #0x30 - blo _022E0D20 - cmp r1, #0x39 - movls r0, #1 -_022E0D20: - cmp r0, #0 - subne r3, r1, #0x30 - moveq r3, #0xff - add r0, sp, #3 - add r1, r4, #8 - mov r2, #9 - str r3, [r4, #4] - bl MI_CpuCopy8 - b _022E0D4C -_022E0D44: - mov r0, #0xff - str r0, [r4, #4] -_022E0D4C: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Dwc_GetApInfo - - arm_func_start Dwc_UpdateConnection -Dwc_UpdateConnection: ; 0x022E0D58 - stmdb sp!, {r3, lr} - bl Dwc_ProcessInet - bl Dwci_CheckDisconnected - cmp r0, #0 - beq _022E0DA0 - bl Dwc_AC_GetApType - mov r2, r0 - cmp r2, #0xff - beq _022E0D84 - cmp r2, #0x63 - bls _022E0D88 -_022E0D84: - mov r2, #0x63 -_022E0D88: - ldr r1, _022E0DA8 ; =0xFFFF2D10 - mov r0, #8 - sub r1, r1, r2 - bl Dwci_SetError - mov r0, #1 - ldmia sp!, {r3, pc} -_022E0DA0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E0DA8: .word 0xFFFF2D10 - arm_func_end Dwc_UpdateConnection - - arm_func_start Dwc_GetIngamesnCheckResult -Dwc_GetIngamesnCheckResult: ; 0x022E0DAC - ldr r0, _022E0DB8 ; =ov00_02326CB4 - ldr r0, [r0] - bx lr - .align 2, 0 -_022E0DB8: .word ov00_02326CB4 - arm_func_end Dwc_GetIngamesnCheckResult - - arm_func_start Dwc_SvlGetTokenAsync -Dwc_SvlGetTokenAsync: ; 0x022E0DBC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r0, _022E0E24 ; =Dwc_Alloc - ldr r1, _022E0E28 ; =Dwc_Free - bl Dwc_Svl_Init - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl strlen - cmp r0, #0 - bne _022E0E00 - ldr r0, _022E0E2C ; =ov00_0231A14C - mov r1, r4 - bl Dwc_Svl_GetTokenAsync - b _022E0E0C -_022E0E00: - mov r0, r5 - mov r1, r4 - bl Dwc_Svl_GetTokenAsync -_022E0E0C: - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - bl Dwc_Svl_Cleanup - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E0E24: .word Dwc_Alloc -_022E0E28: .word Dwc_Free -_022E0E2C: .word ov00_0231A14C - arm_func_end Dwc_SvlGetTokenAsync - - arm_func_start Dwc_SvlProcess -Dwc_SvlProcess: ; 0x022E0E30 - stmdb sp!, {r4, lr} - bl Dwc_Svl_Process - mov r4, r0 - sub r0, r4, #3 - cmp r0, #2 - bhi _022E0E4C - bl Dwc_Svl_Cleanup -_022E0E4C: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end Dwc_SvlProcess - - arm_func_start Dwci_NdAlloc -Dwci_NdAlloc: ; 0x022E0E54 - ldr ip, _022E0E68 ; =Dwc_AllocEx - mov r2, r1 - mov r1, r0 - mov r0, #6 - bx ip - .align 2, 0 -_022E0E68: .word Dwc_AllocEx - arm_func_end Dwci_NdAlloc - - arm_func_start Dwci_NdFree -Dwci_NdFree: ; 0x022E0E6C - ldr ip, _022E0E80 ; =Dwc_Free - mov r1, r0 - mov r0, #6 - mov r2, #0 - bx ip - .align 2, 0 -_022E0E80: .word Dwc_Free - arm_func_end Dwci_NdFree - - arm_func_start Dwci_NdCallback -Dwci_NdCallback: ; 0x022E0E84 - stmdb sp!, {r4, r5, r6, lr} - movs r5, r1 - mov r6, r0 - mov r4, r2 - bne _022E0EAC - ldr r3, _022E0F64 ; =ov00_02326D84 - ldr r3, [r3] - ldr r3, [r3] - blx r3 - ldmia sp!, {r4, r5, r6, pc} -_022E0EAC: - cmp r5, #8 - addls pc, pc, r5, lsl #2 - b _022E0F40 -_022E0EB8: ; jump table - b _022E0F40 ; case 0 - b _022E0EDC ; case 1 - b _022E0EEC ; case 2 - b _022E0EF4 ; case 3 - b _022E0F04 ; case 4 - b _022E0F14 ; case 5 - b _022E0F44 ; case 6 - b _022E0F28 ; case 7 - b _022E0F30 ; case 8 -_022E0EDC: - ldr r1, _022E0F68 ; =0xFFFF86E7 - mov r0, #9 - bl Dwci_SetError - b _022E0F44 -_022E0EEC: - bl WaitForever2 - b _022E0F44 -_022E0EF4: - ldr r1, _022E0F6C ; =0xFFFF86D4 - mov r0, #0xf - bl Dwci_SetError - b _022E0F44 -_022E0F04: - ldr r1, _022E0F70 ; =0xFFFF86CA - mov r0, #0xe - bl Dwci_SetError - b _022E0F44 -_022E0F14: - ldr r1, _022E0F74 ; =0xFFFF86E8 - mov r0, #0xe - sub r1, r1, r4 - bl Dwci_SetError - b _022E0F44 -_022E0F28: - bl WaitForever2 - b _022E0F44 -_022E0F30: - ldr r1, _022E0F78 ; =0xFFFF86DF - mov r0, #9 - bl Dwci_SetError - b _022E0F44 -_022E0F40: - bl WaitForever2 -_022E0F44: - ldr r1, _022E0F64 ; =ov00_02326D84 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - ldr r3, [r2] - mov r2, r4 - blx r3 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E0F64: .word ov00_02326D84 -_022E0F68: .word 0xFFFF86E7 -_022E0F6C: .word 0xFFFF86D4 -_022E0F70: .word 0xFFFF86CA -_022E0F74: .word 0xFFFF86E8 -_022E0F78: .word 0xFFFF86DF - arm_func_end Dwci_NdCallback - - arm_func_start Dwci_NdCleanupCallback -Dwci_NdCleanupCallback: ; 0x022E0F7C - stmdb sp!, {r4, lr} - ldr r0, _022E0FBC ; =ov00_02326D84 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_JoinThread - ldr r0, _022E0FBC ; =ov00_02326D84 - ldr r0, [r0] - ldr r4, [r0, #4] - bl Dwci_NdFree - ldr r0, _022E0FBC ; =ov00_02326D84 - mov r1, #0 - str r1, [r0] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - blx r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E0FBC: .word ov00_02326D84 - arm_func_end Dwci_NdCleanupCallback - - arm_func_start Dwci_SvlTokenWaitThread -Dwci_SvlTokenWaitThread: ; 0x022E0FC0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x2a0 - mov r7, #0 - mov r6, #6 - mvn r5, #0 - mov r4, #0x64 -_022E0FD8: - bl Dwc_SvlProcess - cmp r0, #3 - bne _022E10F4 - ldr r0, _022E1160 ; =ov00_02326D84 - ldr r5, [r0] - add r0, r5, #0x50 - bl strlen - mov r4, r0 - ldr r0, _022E1164 ; =ov00_0231A154 - bl strlen - add r0, r4, r0 - cmp r0, #0xff - bls _022E1024 - mov r1, #8 - sub r2, r1, #9 - mov r0, #0 - bl Dwci_NdCallback - add sp, sp, #0x2a0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E1024: - ldr r2, _022E1168 ; =ov00_0231A168 - add r0, sp, #0x1a0 - add r3, r5, #0x50 - mov r1, #0x100 - bl OS_SnPrintf - ldr r0, _022E1160 ; =ov00_02326D84 - ldr r4, [r0] - add r0, r4, #0x91 - bl strlen - mov r1, r0 - add r2, sp, #0x10 - add r0, r4, #0x91 - mov r3, #0x190 - bl Dwc_Auth_Base64Encode - cmp r0, #0 - bge _022E107C - mov r1, #8 - sub r2, r1, #9 - mov r0, #0 - bl Dwci_NdCallback - add sp, sp, #0x2a0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E107C: - ldr r0, _022E1160 ; =ov00_02326D84 - ldr r4, _022E116C ; =Dwci_NdCallback - ldr r2, [r0] - ldr r0, _022E1170 ; =Dwci_NdAlloc - add r1, r2, #8 - str r1, [sp] - add r1, r2, #0x28 - str r1, [sp, #4] - ldr r1, _022E1174 ; =Dwci_NdFree - add r2, sp, #0x1a0 - add r3, sp, #0x10 - str r4, [sp, #8] - bl Dwci_NdStartup - cmp r0, #0 - mov r0, #0 - bne _022E10D0 - mov r1, #8 - sub r2, r1, #9 - bl Dwci_NdCallback - add sp, sp, #0x2a0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E10D0: - ldr r1, _022E1160 ; =ov00_02326D84 - mov r4, #1 - ldr r3, [r1] - mov r1, r0 - sub r2, r0, #1 - str r4, [r3, #0x48] - bl Dwci_NdCallback - add sp, sp, #0x2a0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E10F4: - cmp r0, #4 - bne _022E1134 - add r0, sp, #0xc - bl Dwc_GetLastError - ldr r1, [sp, #0xc] - mov r0, #0xe - bl Dwci_SetError - ldr r0, _022E1160 ; =ov00_02326D84 - mov r1, #3 - ldr r0, [r0] - sub r2, r1, #4 - ldr r3, [r0] - mov r0, #0 - blx r3 - add sp, sp, #0x2a0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E1134: - cmp r0, #5 - bne _022E114C - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl Dwci_NdCallback -_022E114C: - mov r0, r4 - bl OS_Sleep - b _022E0FD8 -_022E1158: - add sp, sp, #0x2a0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E1160: .word ov00_02326D84 -_022E1164: .word ov00_0231A154 -_022E1168: .word ov00_0231A168 -_022E116C: .word Dwci_NdCallback -_022E1170: .word Dwci_NdAlloc -_022E1174: .word Dwci_NdFree - arm_func_end Dwci_SvlTokenWaitThread - - arm_func_start Dwc_NdInitAsync -Dwc_NdInitAsync: ; 0x022E1178 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwci_IsError - cmp r0, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xa80 - mov r1, #0x20 - bl Dwci_NdAlloc - ldr r2, _022E1284 ; =ov00_02326D84 - mov r1, #0 - str r0, [r2] - str r1, [r0, #0x48] - ldr r0, [r2] - mov r2, #0xa80 - bl MI_CpuFill8 - ldr r0, _022E1284 ; =ov00_02326D84 - mov r1, r5 - ldr r3, [r0] - mov r2, #0x1f - str r6, [r3] - ldr r0, [r0] - add r0, r0, #8 - bl strncpy - ldr r0, _022E1284 ; =ov00_02326D84 - mov r1, r4 - ldr r0, [r0] - mov r2, #0x1f - add r0, r0, #0x28 - bl strncpy - ldr r1, _022E1284 ; =ov00_02326D84 - ldr r0, _022E1288 ; =ov00_0231A17C - ldr r1, [r1] - add r1, r1, #0x4c - bl Dwc_SvlGetTokenAsync - cmp r0, #0 - bne _022E123C - ldr r0, _022E1284 ; =ov00_02326D84 - ldr r0, [r0] - bl Dwci_NdFree - ldr r1, _022E1284 ; =ov00_02326D84 - mov r0, #0 - str r0, [r1] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_022E123C: - ldr r0, _022E1284 ; =ov00_02326D84 - mov r2, #0x800 - ldr r3, [r0] - ldr r1, _022E128C ; =Dwci_SvlTokenWaitThread - str r2, [sp] - mov ip, #0x10 - add r0, r3, #0x9c0 - add r3, r3, #0x9c0 - mov r2, #0 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _022E1284 ; =ov00_02326D84 - ldr r0, [r0] - add r0, r0, #0x9c0 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E1284: .word ov00_02326D84 -_022E1288: .word ov00_0231A17C -_022E128C: .word Dwci_SvlTokenWaitThread - arm_func_end Dwc_NdInitAsync - - arm_func_start Dwc_NdCleanupAsync -Dwc_NdCleanupAsync: ; 0x022E1290 - stmdb sp!, {r3, lr} - ldr r1, _022E12D4 ; =ov00_02326D84 - ldr r2, [r1] - cmp r2, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - str r0, [r2, #4] - ldr r0, [r1] - ldr r0, [r0, #0x48] - cmp r0, #0 - bne _022E12C4 - bl Dwci_NdCleanupCallback - b _022E12CC -_022E12C4: - ldr r0, _022E12D8 ; =Dwci_NdCleanupCallback - bl Dwci_NdCleanupAsync -_022E12CC: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E12D4: .word ov00_02326D84 -_022E12D8: .word Dwci_NdCleanupCallback - arm_func_end Dwc_NdCleanupAsync - - arm_func_start Dwc_NdSetAttr -Dwc_NdSetAttr: ; 0x022E12DC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwci_IsError - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl Dwci_NdSetAttr - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_NdSetAttr - - arm_func_start Dwc_NdGetFileListNumAsync -Dwc_NdGetFileListNumAsync: ; 0x022E1310 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_IsError - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl Dwci_NdGetFileListNumAsync - ldmia sp!, {r4, pc} - arm_func_end Dwc_NdGetFileListNumAsync - - arm_func_start Dwc_NdGetFileListAsync -Dwc_NdGetFileListAsync: ; 0x022E1334 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwci_IsError - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0xb0 - mul r2, r4, r0 - mov r0, r6 - mov r1, #0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl Dwci_NdGetFileListAsync - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_NdGetFileListAsync - - arm_func_start Dwc_NdGetFileAsync -Dwc_NdGetFileAsync: ; 0x022E137C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwci_IsError - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl Dwci_NdGetFileAsync - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwc_NdGetFileAsync - - arm_func_start Dwc_NdCancelAsync -Dwc_NdCancelAsync: ; 0x022E13B4 - stmdb sp!, {r3, lr} - bl Dwci_IsError - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - bl Dwci_NdCancelAsync - ldmia sp!, {r3, pc} - arm_func_end Dwc_NdCancelAsync - - arm_func_start Dwc_SetCommonKeyValueString -Dwc_SetCommonKeyValueString: ; 0x022E13D0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - stmia sp, {r0, r3} - mov r4, r2 - str r1, [sp, #8] - ldr r2, _022E1404 ; =ov00_0231A184 - mov r0, r4 - mov r1, #0x1000 - bl OS_SnPrintf - mov r0, r4 - bl strlen - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022E1404: .word ov00_0231A184 - arm_func_end Dwc_SetCommonKeyValueString - - arm_func_start Dwc_AddCommonKeyValueString -Dwc_AddCommonKeyValueString: ; 0x022E1408 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r4, r3 - mov r0, r5 - mov r1, #0 - bl strchr - mov r2, r0 - mov r0, r7 - mov r1, r6 - mov r3, r4 - bl Dwc_SetCommonKeyValueString - mov r0, r5 - bl strlen - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Dwc_AddCommonKeyValueString - - arm_func_start Dwc_GetCommonValueString -Dwc_GetCommonValueString: ; 0x022E1448 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r4, r1 - mov r7, r0 - mov r6, r3 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r2 - mov r1, r6 - bl strchr - movs r5, r0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022E1478: - mov r0, r7 - bl strlen - mov r2, r0 - mov r1, r7 - add r0, r5, #1 - bl strncmp - cmp r0, #0 - bne _022E14B0 - mov r0, r7 - bl strlen - add r0, r0, r5 - ldrsb r0, [r0, #1] - cmp r6, r0 - beq _022E14E4 -_022E14B0: - mov r1, r6 - add r0, r5, #1 - bl strchr - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r0, #1 - bl strchr - movs r5, r0 - bne _022E1478 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E14E4: - mov r1, r6 - add r0, r5, #1 - bl strchr - movs r5, r0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r5, #1 - bl strchr - cmp r0, #0 - addne r1, r5, #1 - subne r6, r0, r1 - bne _022E1524 - add r0, r5, #1 - bl strlen - mov r6, r0 -_022E1524: - mov r0, r4 - mov r2, r6 - add r1, r5, #1 - bl strncpy - mov r1, #0 - mov r0, r6 - strb r1, [r4, r6] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Dwc_GetCommonValueString - - arm_func_start Dwci_GetMathRand32 -Dwci_GetMathRand32: ; 0x022E1544 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _022E1650 ; =ov00_02326D88 - mov r4, r0 - ldr r0, [r1, #4] - ldr r2, [r1] - cmp r0, #0 - cmpeq r2, #0 - mov r0, #0 - bne _022E1608 - ldr r2, [r1, #0xc] - ldr r3, [r1, #8] - cmp r2, r0 - cmpeq r3, r0 - bne _022E1608 - ldr r2, [r1, #0x14] - ldr r1, [r1, #0x10] - cmp r2, r0 - cmpeq r1, r0 - bne _022E1608 - add r0, sp, #0 - bl OS_GetMacAddress - bl OS_GetTick - mov r2, r1, lsl #0x18 - ldr ip, [sp] - ldr r3, [sp, #4] - mov lr, ip, lsr #0x18 - orr lr, lr, r3, lsl #8 - mvn r1, #0xff000000 - and r1, lr, r1 - orr lr, r1, r0, lsl #24 - mov ip, #0 - orr r2, r2, r0, lsr #8 - and r1, ip, r3, lsr #24 - orr r2, r1, r2 - ldr r0, _022E1654 ; =ov00_02326D88 - add r1, sp, #0 - str lr, [sp] - str r2, [sp, #4] - ldmia r1, {r2, r3} - stmia r0, {r2, r3} - ldr r1, _022E1658 ; =0x6C078965 - ldr r0, _022E1650 ; =ov00_02326D88 - ldr r2, _022E165C ; =0x5D588B65 - str r1, [r0, #8] - ldr r1, _022E1660 ; =0x00269EC3 - str r2, [r0, #0xc] - str r1, [r0, #0x10] - str ip, [r0, #0x14] -_022E1608: - ldr r1, _022E1650 ; =ov00_02326D88 - ldr r2, [r1] - ldmib r1, {r0, r3} - umull lr, ip, r3, r2 - mla ip, r3, r0, ip - ldr r0, [r1, #0xc] - ldr r3, [r1, #0x10] - mla ip, r0, r2, ip - ldr r0, [r1, #0x14] - adds r2, r3, lr - adc r0, r0, ip - str r2, [r1] - str r0, [r1, #4] - cmp r4, #0 - umullne r2, r1, r0, r4 - movne r0, r1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E1650: .word ov00_02326D88 -_022E1654: .word ov00_02326D88 -_022E1658: .word 0x6C078965 -_022E165C: .word 0x5D588B65 -_022E1660: .word 0x00269EC3 - arm_func_end Dwci_GetMathRand32 - - arm_func_start Dwci_WStrLen -Dwci_WStrLen: ; 0x022E1664 - ldrh r1, [r0] - mov r2, #0 - cmp r1, #0 - beq _022E1688 -_022E1674: - add r2, r2, #1 - mov r1, r2, lsl #1 - ldrh r1, [r0, r1] - cmp r1, #0 - bne _022E1674 -_022E1688: - mov r0, r2 - bx lr - arm_func_end Dwci_WStrLen - - arm_func_start Dwc_InitFriendsMatch -Dwc_InitFriendsMatch: ; 0x022E1690 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr ip, _022E18F4 ; =ov00_02326DA0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - str r0, [ip] - bl Dwc_ClearError - ldr r0, _022E18F4 ; =ov00_02326DA0 - mov r2, #0 - ldr r1, [r0] - ldr r3, _022E18F8 ; =Dwci_GT2ConnectedCallback - str r2, [r1] - ldr r1, [r0] - ldr r2, _022E18FC ; =Dwci_GT2ReceivedCallback - str r3, [r1, #4] - ldr r1, [r0] - ldr ip, [sp, #0x24] - str r2, [r1, #8] - cmp ip, #0 - ldr r2, [r0] - ldr r3, _022E1900 ; =Dwci_GT2ClosedCallback - ldr r1, _022E1904 ; =Dwci_GT2PingCallback - str r3, [r2, #0xc] - ldr r0, [r0] - ldr r3, [sp, #0x28] - str r1, [r0, #0x10] - ldr r0, _022E18F4 ; =ov00_02326DA0 - moveq ip, #0x2000 - ldr r0, [r0] - cmp r3, #0 - str ip, [r0, #0x14] - moveq r3, #0x2000 - ldr r1, _022E18F4 ; =ov00_02326DA0 - mov r0, #0 - ldr r2, [r1] - ldr ip, _022E1908 ; =ov00_02328A18 - str r3, [r2, #0x18] - ldr r2, [r1] - ldr r3, _022E190C ; =ov00_02328B18 - str r0, [r2, #0x1c] - ldr r2, [r1] - str r6, [r2, #0x20] - ldr r2, [r1] - str r0, [r2, #0x24] - ldr r2, [r1] - str r0, [r2, #0x28] - ldr r2, [r1] - strb r0, [r2, #0x2c] - ldr r2, [r1] - strb r0, [r2, #0x2d] - ldr r2, [r1] - str r0, [r2, #0x64] - ldr r2, [r1] - str ip, [r2, #0x68] - ldr r2, [r1] - str r3, [r2, #0x6c] - ldr r2, [r1] - str r0, [r2, #0x70] - ldr r2, [r1] - str r0, [r2, #0x74] - ldr r2, [r1] - str r0, [r2, #0x78] - ldr r2, [r1] - str r0, [r2, #0x7c] - ldr r2, [r1] - str r0, [r2, #0x80] - ldr r2, [r1] - str r0, [r2, #0x84] - ldr r2, [r1] - str r0, [r2, #0x88] - ldr r2, [r1] - str r0, [r2, #0x8c] - ldr r2, [r1] - str r0, [r2, #0x90] - ldr r1, [r1] - str r0, [r1, #0x94] - bl Dwci_ClearGT2ConnectionList - ldr r0, _022E18F4 ; =ov00_02326DA0 - ldr r1, [r6, #0x24] - ldr r2, [r0] - ldr r0, _022E1910 ; =Dwci_LoginCallback - str r1, [sp] - add r1, r2, #0x2e - str r1, [sp, #4] - mov r1, r6 - mov r3, r5 - str r0, [sp, #8] - mov r5, #0 - add r0, r2, #0x98 - add r2, r2, #0x1c - str r5, [sp, #0xc] - bl Dwci_LoginInit - ldr r0, _022E18F4 ; =ov00_02326DA0 - ldr r2, [sp, #0x30] - ldr r5, [r0] - ldr r3, [sp, #0x2c] - add r0, r5, #0x318 - add r1, r5, #0x1c - str r2, [sp] - add r2, r5, #0x2e - bl Dwci_FriendInit - ldr r0, _022E18F4 ; =ov00_02326DA0 - ldr r1, _022E1908 ; =ov00_02328A18 - ldr r2, [r0] - ldr r0, _022E190C ; =ov00_02328B18 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x30] - str r1, [sp, #8] - str r0, [sp, #0xc] - add r0, r2, #0x378 - add r1, r2, #0x1c - add r3, r2, #4 - bl Dwci_MatchInit - ldr r0, _022E18F4 ; =ov00_02326DA0 - ldr r0, [r0] - add r0, r0, #0x3fc - add r0, r0, #0x400 - bl Dwci_InitTransport - mov r0, r4 - bl strlen - cmp r0, #0x100 - movhs r5, #0xff - bhs _022E1894 - mov r0, r4 - bl strlen - mov r5, r0 -_022E1894: - ldr r1, _022E1908 ; =ov00_02328A18 - mov r0, r4 - mov r2, r5 - bl MI_CpuCopy8 - ldr r0, [sp, #0x20] - ldr r1, _022E1908 ; =ov00_02328A18 - mov r2, #0 - strb r2, [r1, r5] - bl strlen - cmp r0, #0x100 - movhs r4, #0xff - bhs _022E18D0 - ldr r0, [sp, #0x20] - bl strlen - mov r4, r0 -_022E18D0: - ldr r0, [sp, #0x20] - ldr r1, _022E190C ; =ov00_02328B18 - mov r2, r4 - bl MI_CpuCopy8 - ldr r0, _022E190C ; =ov00_02328B18 - mov r1, #0 - strb r1, [r0, r4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E18F4: .word ov00_02326DA0 -_022E18F8: .word Dwci_GT2ConnectedCallback -_022E18FC: .word Dwci_GT2ReceivedCallback -_022E1900: .word Dwci_GT2ClosedCallback -_022E1904: .word Dwci_GT2PingCallback -_022E1908: .word ov00_02328A18 -_022E190C: .word ov00_02328B18 -_022E1910: .word Dwci_LoginCallback - arm_func_end Dwc_InitFriendsMatch - - arm_func_start Dwc_ShutdownFriendsMatch -Dwc_ShutdownFriendsMatch: ; 0x022E1914 - stmdb sp!, {r3, lr} - ldr r0, _022E1A80 ; =ov00_02326DA0 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x388] - cmp r0, #0 - beq _022E1948 - bl qr2_shutdown - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x388] -_022E1948: - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x390] - ldr r0, [r0] - ldr r0, [r0, #0x45c] - cmp r0, #0 - beq _022E197C - bl ServerBrowserFree - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x45c] -_022E197C: - bl Dwci_NnFreeNegotiateList - bl Dwci_BeginCloseStatsConnection - bl CloseStatsConnection - bl Dwci_EndCloseStatsConnection - ldr r0, _022E1A80 ; =ov00_02326DA0 - ldr ip, [r0] - ldr r0, [ip, #0x1c] - cmp r0, #0 - beq _022E1A38 - mov r1, #0 - mov r2, r1 - mov r3, r1 - add r0, ip, #0x1c - bl GpSetCallback - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x1c - mov r1, #3 - bl GpSetCallback - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x1c - mov r1, #1 - bl GpSetCallback - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r2, #0 - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x1c - mov r3, r2 - bl GpSetCallback - ldr r0, _022E1A80 ; =ov00_02326DA0 - ldr r0, [r0] - add r0, r0, #0x1c - bl GpProcess - ldr r0, _022E1A80 ; =ov00_02326DA0 - ldr r0, [r0] - add r0, r0, #0x1c - bl GpDestroy - mov r1, #0 - ldr r0, _022E1A80 ; =ov00_02326DA0 - ldr r0, [r0] - str r1, [r0, #0x1c] -_022E1A38: - bl Dwci_ShutdownLogin - bl Dwci_ShutdownFriend - bl Dwci_ShutdownMatch - bl Dwci_ShutdownTransport - ldr r0, _022E1A80 ; =ov00_02326DA0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - beq _022E1A70 - bl Gt2CloseSocket - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] -_022E1A70: - ldr r0, _022E1A80 ; =ov00_02326DA0 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E1A80: .word ov00_02326DA0 - arm_func_end Dwc_ShutdownFriendsMatch - - arm_func_start Dwc_ProcessFriendsMatch -Dwc_ProcessFriendsMatch: ; 0x022E1A84 - stmdb sp!, {r3, lr} - bl Dwc_UpdateConnection - cmp r0, #0 - beq _022E1A98 - bl Dwcs_ForceShutdown -_022E1A98: - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x24] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - bl Dwci_IsError - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _022E1C9C -_022E1AD4: ; jump table - b _022E1C9C ; case 0 - b _022E1AF0 ; case 1 - b _022E1C30 ; case 2 - b _022E1C38 ; case 3 - b _022E1C38 ; case 4 - b _022E1C48 ; case 5 - b _022E1C58 ; case 6 -_022E1AF0: - bl GsiAvailableCheckThink - cmp r0, #1 - beq _022E1B10 - cmp r0, #2 - beq _022E1C10 - cmp r0, #3 - beq _022E1C20 - b _022E1C9C -_022E1B10: - ldr r0, _022E1CE4 ; =ov00_02326DA0 - mov r2, #0x10 - ldr r0, [r0] - mov r3, #0xb - ldr r1, [r0, #0xa0] - add r0, r0, #0x1c - bl GpInitialize - bl Dwci_HandleGpError_Common - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E1CE4 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - ldr r2, _022E1CE8 ; =Dwci_GpErrorCallback - mov r3, r1 - add r0, r0, #0x1c - bl GpSetCallback - bl Dwci_HandleGpError_Common - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r2, _022E1CEC ; =Dwci_GpRecvBuddyMessageCallback - ldr r0, [r0] - mov r1, #3 - add r0, r0, #0x1c - mov r3, #0 - bl GpSetCallback - bl Dwci_HandleGpError_Common - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r2, _022E1CF0 ; =Dwci_GpRecvBuddyAuthCallback - ldr r0, [r0] - mov r1, #7 - add r0, r0, #0x1c - mov r3, #0 - bl GpSetCallback - bl Dwci_HandleGpError_Common - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r2, _022E1CF4 ; =Dwci_GpRecvBuddyRequestCallback - ldr r0, [r0] - mov r1, #1 - add r0, r0, #0x1c - mov r3, #0 - bl GpSetCallback - bl Dwci_HandleGpError_Common - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r2, _022E1CF8 ; =Dwci_GpRecvBuddyStatusCallback - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x1c - mov r3, #0 - bl GpSetCallback - bl Dwci_HandleGpError_Common - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #2 - bl Dwci_SetState - bl Dwci_LoginAsync - b _022E1C9C -_022E1C10: - ldr r1, _022E1CFC ; =0xFFFFB172 - mov r0, #3 - bl Dwci_StopLogin - ldmia sp!, {r3, pc} -_022E1C20: - ldr r1, _022E1D00 ; =0xFFFFB17B - mov r0, #4 - bl Dwci_StopLogin - ldmia sp!, {r3, pc} -_022E1C30: - bl Dwci_LoginProcess - b _022E1C9C -_022E1C38: - bl Dwci_FriendProcess - mov r0, #0 - bl Dwci_MatchProcess - b _022E1C9C -_022E1C48: - mov r0, #1 - bl Dwci_MatchProcess - bl Dwci_FriendProcess - b _022E1C9C -_022E1C58: - bl Dwci_TransportProcess - bl Dwci_FriendProcess - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x38d] - cmp r0, #2 - ldrneb r0, [r1, #0x38d] - cmpne r0, #3 - bne _022E1C88 - mov r0, #1 - bl Dwci_MatchProcess - b _022E1C9C -_022E1C88: - ldr r0, [r1] - cmp r0, #0 - beq _022E1C9C - mov r0, #0 - bl Dwci_MatchProcess -_022E1C9C: - ldr r0, _022E1CE4 ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x390] - cmp r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, [r1, #0x388] - cmp r0, #0 - beq _022E1CD0 - bl qr2_shutdown - ldr r0, _022E1CE4 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x388] -_022E1CD0: - ldr r0, _022E1CE4 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x390] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E1CE4: .word ov00_02326DA0 -_022E1CE8: .word Dwci_GpErrorCallback -_022E1CEC: .word Dwci_GpRecvBuddyMessageCallback -_022E1CF0: .word Dwci_GpRecvBuddyAuthCallback -_022E1CF4: .word Dwci_GpRecvBuddyRequestCallback -_022E1CF8: .word Dwci_GpRecvBuddyStatusCallback -_022E1CFC: .word 0xFFFFB172 -_022E1D00: .word 0xFFFFB17B - arm_func_end Dwc_ProcessFriendsMatch - - arm_func_start Dwc_LoginAsync -Dwc_LoginAsync: ; 0x022E1D04 - stmdb sp!, {r4, r5, r6, lr} - movs r4, r0 - mov r6, r2 - mov r5, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl Dwci_IsError - cmp r0, #0 - bne _022E1D3C - ldr r0, _022E1E04 ; =ov00_02326DA0 - ldr r2, [r0] - ldr r1, [r2, #0x24] - cmp r1, #0 - beq _022E1D44 -_022E1D3C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022E1D44: - str r6, [r2, #0x70] - ldr r1, [r0] - cmp r4, #0 - str r5, [r1, #0x74] - ldrneh r1, [r4] - cmpne r1, #0 - moveq r5, #0 - beq _022E1DB0 - ldr r1, [r0] - mov r0, #0 - add r1, r1, #0x2e - mov r2, #0x34 - bl MTi_CpuClear16 - mov r0, r4 - bl Dwci_WStrLen - cmp r0, #0x19 - movhi r5, #0x19 - bhi _022E1D98 - mov r0, r4 - bl Dwci_WStrLen - mov r5, r0 -_022E1D98: - ldr r1, _022E1E04 ; =ov00_02326DA0 - mov r0, r4 - ldr r1, [r1] - mov r2, r5, lsl #1 - add r1, r1, #0x2e - bl MTi_CpuCopy16 -_022E1DB0: - ldr r0, _022E1E04 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - add r0, r0, r5, lsl #1 - strh r1, [r0, #0x2e] - bl Dwc_GetInetStatus - cmp r0, #4 - beq _022E1DE4 - ldr r1, _022E1E08 ; =0xFFFF1596 - mov r0, #2 - bl Dwci_StopLogin - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_022E1DE4: - mov r0, #1 - bl Dwci_SetState - ldr r0, _022E1E04 ; =ov00_02326DA0 - ldr r0, [r0] - ldr r0, [r0, #0x68] - bl ResolveAvailableNintendoWifi - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E1E04: .word ov00_02326DA0 -_022E1E08: .word 0xFFFF1596 - arm_func_end Dwc_LoginAsync - - arm_func_start Dwc_UpdateServersAsync -Dwc_UpdateServersAsync: ; 0x022E1E0C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl Dwci_IsError - cmp r0, #0 - bne _022E1E48 - ldr r0, _022E1EAC ; =ov00_02326DA0 - ldr r2, [r0] - ldr r1, [r2, #0x24] - cmp r1, #3 - blt _022E1E48 - cmp r1, #4 - bne _022E1E54 -_022E1E48: - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022E1E54: - str r6, [r2, #0x78] - ldr r1, [r0] - mov r0, #4 - str r5, [r1, #0x7c] - bl Dwci_SetState - ldr r0, _022E1EAC ; =ov00_02326DA0 - ldr r1, [sp, #0x20] - ldr r3, [r0] - ldr r0, [sp, #0x24] - str r4, [sp] - str r1, [sp, #4] - ldr r4, [sp, #0x28] - str r0, [sp, #8] - ldr r2, _022E1EB0 ; =Dwci_UpdateServersCallback - add r0, r3, #0xe0 - add r1, r3, #0x1e0 - mov r3, #0 - str r4, [sp, #0xc] - bl Dwci_UpdateServersAsync - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E1EAC: .word ov00_02326DA0 -_022E1EB0: .word Dwci_UpdateServersCallback - arm_func_end Dwc_UpdateServersAsync - - arm_func_start Dwc_CloseConnectionHard -Dwc_CloseConnectionHard: ; 0x022E1EB4 - stmdb sp!, {r4, lr} - ldr r1, _022E1F18 ; =ov00_02326DA0 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - beq _022E1EF0 - bl Dwci_IsError - cmp r0, #0 - bne _022E1EF0 - ldr r0, _022E1F18 ; =ov00_02326DA0 - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #5 - cmpne r0, #6 - beq _022E1EF8 -_022E1EF0: - mvn r0, #0 - ldmia sp!, {r4, pc} -_022E1EF8: - mov r0, r4 - bl Dwci_GetGT2Connection - cmp r0, #0 - mvneq r0, #1 - ldmeqia sp!, {r4, pc} - bl Gt2CloseConnectionHard - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E1F18: .word ov00_02326DA0 - arm_func_end Dwc_CloseConnectionHard - - arm_func_start Dwc_GetMyAid -Dwc_GetMyAid: ; 0x022E1F1C - ldr r0, _022E1F34 ; =ov00_02326DA0 - ldr r0, [r0] - cmp r0, #0 - ldrneb r0, [r0, #0x2c] - moveq r0, #0 - bx lr - .align 2, 0 -_022E1F34: .word ov00_02326DA0 - arm_func_end Dwc_GetMyAid - - arm_func_start Dwc_GetAidList -Dwc_GetAidList: ; 0x022E1F38 - stmdb sp!, {r3, lr} - ldr r2, _022E1F84 ; =ov00_02326DA0 - ldr r1, [r2] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r1, r1, #0x248 - add r1, r1, #0x400 - str r1, [r0] - ldr r2, [r2] - ldrb r1, [r2, #0x38d] - cmp r1, #2 - ldrneb r1, [r2, #0x38d] - cmpne r1, #3 - bne _022E1F7C - bl Dwci_GetValidAidList - ldmia sp!, {r3, pc} -_022E1F7C: - bl Dwci_GetAllAidList - ldmia sp!, {r3, pc} - .align 2, 0 -_022E1F84: .word ov00_02326DA0 - arm_func_end Dwc_GetAidList - - arm_func_start Dwc_IsValidAid -Dwc_IsValidAid: ; 0x022E1F88 - stmdb sp!, {r3, lr} - ldr r1, _022E1FBC ; =ov00_02326DA0 - ldr r1, [r1] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r2, [r1, #0x668] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl Dwci_IsValidAid - ldmia sp!, {r3, pc} - .align 2, 0 -_022E1FBC: .word ov00_02326DA0 - arm_func_end Dwc_IsValidAid - - arm_func_start Dwc_GetState -Dwc_GetState: ; 0x022E1FC0 - ldr r0, _022E1FD8 ; =ov00_02326DA0 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x24] - moveq r0, #0 - bx lr - .align 2, 0 -_022E1FD8: .word ov00_02326DA0 - arm_func_end Dwc_GetState - - arm_func_start Dwci_GT2Startup -Dwci_GT2Startup: ; 0x022E1FDC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _022E2094 ; =ov00_02326DA0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r3, r4, pc} - mov r0, #0x4000 - bl Dwci_GetMathRand32 - add r0, r0, #0xc000 - mov r1, r0, lsl #0x10 - ldr r3, _022E2094 ; =ov00_02326DA0 - mov r0, #0 - mov r2, r0 - mov r1, r1, lsr #0x10 - ldr r4, [r3] - bl Gt2AddressToString - ldr r1, _022E2098 ; =Dwci_GT2SocketErrorCallback - ldr r2, _022E2094 ; =ov00_02326DA0 - str r1, [sp] - mov r1, r0 - ldr r0, [r2] - ldr r2, [r4, #0x14] - ldr r3, [r4, #0x18] - bl Gt2CreateSocket - mov r4, r0 - bl Dwci_HandleGT2Error - cmp r0, #0 - addne sp, sp, #4 - movne r0, r4 - ldmneia sp!, {r3, r4, pc} - ldr r0, _022E2094 ; =ov00_02326DA0 - ldr r1, _022E209C ; =Dwci_GT2ConnectAttemptCallback - ldr r0, [r0] - ldr r0, [r0] - bl Gt2Listen - ldr r0, _022E2094 ; =ov00_02326DA0 - ldr r1, _022E20A0 ; =Dwci_GT2UnrecognizedMessageCallback - ldr r0, [r0] - ldr r0, [r0] - bl Gt2SetUnrecognizedMessageCallback - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022E2094: .word ov00_02326DA0 -_022E2098: .word Dwci_GT2SocketErrorCallback -_022E209C: .word Dwci_GT2ConnectAttemptCallback -_022E20A0: .word Dwci_GT2UnrecognizedMessageCallback - arm_func_end Dwci_GT2Startup - - arm_func_start Dwci_GetGT2Connection -Dwci_GetGT2Connection: ; 0x022E20A4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _022E2100 ; =ov00_02326DA0 - mov r6, r0 - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, _022E2104 ; =ov00_02326DA8 - mov r5, #0 -_022E20C8: - ldr r0, [r4, r5, lsl #2] - cmp r0, #0 - beq _022E20EC - bl Gt2GetConnectionData - ldrb r0, [r0, #1] - cmp r6, r0 - ldreq r0, _022E2104 ; =ov00_02326DA8 - ldreq r0, [r0, r5, lsl #2] - ldmeqia sp!, {r4, r5, r6, pc} -_022E20EC: - add r5, r5, #1 - cmp r5, #0x20 - blt _022E20C8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E2100: .word ov00_02326DA0 -_022E2104: .word ov00_02326DA8 - arm_func_end Dwci_GetGT2Connection - - arm_func_start Dwci_GetConnectionAid -Dwci_GetConnectionAid: ; 0x022E2108 - stmdb sp!, {r3, lr} - bl Gt2GetConnectionData - ldrb r0, [r0, #1] - ldmia sp!, {r3, pc} - arm_func_end Dwci_GetConnectionAid - - arm_func_start Dwci_GetConnectionIndex -Dwci_GetConnectionIndex: ; 0x022E2118 - stmdb sp!, {r3, lr} - bl Gt2GetConnectionData - ldrb r0, [r0] - ldmia sp!, {r3, pc} - arm_func_end Dwci_GetConnectionIndex - - arm_func_start Dwci_GT2GetConnectionListIdx -Dwci_GT2GetConnectionListIdx: ; 0x022E2128 - ldr r2, _022E2150 ; =ov00_02326DA8 - mov r0, #0 -_022E2130: - ldr r1, [r2, r0, lsl #2] - cmp r1, #0 - bxeq lr - add r0, r0, #1 - cmp r0, #0x20 - blt _022E2130 - mvn r0, #0 - bx lr - .align 2, 0 -_022E2150: .word ov00_02326DA8 - arm_func_end Dwci_GT2GetConnectionListIdx - - arm_func_start Dwci_ClearGT2ConnectionList -Dwci_ClearGT2ConnectionList: ; 0x022E2154 - stmdb sp!, {r3, lr} - ldr r1, _022E217C ; =ov00_02326DA8 - mov r0, #0 - mov r2, #0x80 - bl MTi_CpuClear32 - ldr r1, _022E2180 ; =ov00_02326E28 - mov r0, #0 - mov r2, #0x100 - bl MTi_CpuClear32 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E217C: .word ov00_02326DA8 -_022E2180: .word ov00_02326E28 - arm_func_end Dwci_ClearGT2ConnectionList - - arm_func_start Dwci_GetGT2ConnectionByIdx -Dwci_GetGT2ConnectionByIdx: ; 0x022E2184 - ldr r1, _022E2190 ; =ov00_02326DA8 - add r0, r1, r0, lsl #2 - bx lr - .align 2, 0 -_022E2190: .word ov00_02326DA8 - arm_func_end Dwci_GetGT2ConnectionByIdx - - arm_func_start Dwci_GetGT2ConnectionByProfileID -Dwci_GetGT2ConnectionByProfileID: ; 0x022E2194 - stmdb sp!, {r3, lr} - cmp r1, #0 - mov r3, #0 - ble _022E21CC - ldr r2, _022E21F8 ; =ov00_02326DA0 - ldr ip, [r2] -_022E21AC: - add r2, ip, r3, lsl #2 - ldr r2, [r2, #0x46c] - cmp r0, r2 - beq _022E21CC - add r2, r3, #1 - and r3, r2, #0xff - cmp r3, r1 - blt _022E21AC -_022E21CC: - cmp r3, r1 - movge r0, #0 - ldmgeia sp!, {r3, pc} - ldr r0, _022E21F8 ; =ov00_02326DA0 - ldr r0, [r0] - add r0, r0, r3 - ldrb r0, [r0, #0x648] - bl Dwci_GetGT2Connection - bl Dwci_GetConnectionIndex - bl Dwci_GetGT2ConnectionByIdx - ldmia sp!, {r3, pc} - .align 2, 0 -_022E21F8: .word ov00_02326DA0 - arm_func_end Dwci_GetGT2ConnectionByProfileID - - arm_func_start Dwci_GetConnectionInfoByIdx -Dwci_GetConnectionInfoByIdx: ; 0x022E21FC - ldr r1, _022E2208 ; =ov00_02326E28 - add r0, r1, r0, lsl #3 - bx lr - .align 2, 0 -_022E2208: .word ov00_02326E28 - arm_func_end Dwci_GetConnectionInfoByIdx - - arm_func_start Dwci_IsValidAid -Dwci_IsValidAid: ; 0x022E220C - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _022E2250 ; =ov00_02326DA8 - mov r6, r0 - mov r5, #0 -_022E221C: - ldr r0, [r4, r5, lsl #2] - cmp r0, #0 - beq _022E223C - bl Gt2GetConnectionData - ldrb r0, [r0, #1] - cmp r6, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_022E223C: - add r5, r5, #1 - cmp r5, #0x20 - blt _022E221C - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E2250: .word ov00_02326DA8 - arm_func_end Dwci_IsValidAid - - arm_func_start Dwci_ResetMyAid -Dwci_ResetMyAid: ; 0x022E2254 - ldr r0, _022E2268 ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x2c] - bx lr - .align 2, 0 -_022E2268: .word ov00_02326DA0 - arm_func_end Dwci_ResetMyAid - - arm_func_start Dwcs_ForceShutdown -Dwcs_ForceShutdown: ; 0x022E226C - bx lr - arm_func_end Dwcs_ForceShutdown - - arm_func_start Dwci_SetState -Dwci_SetState: ; 0x022E2270 - ldr r1, _022E228C ; =ov00_02326DA0 - ldr r3, [r1] - ldr r2, [r3, #0x24] - str r2, [r3, #0x28] - ldr r1, [r1] - str r0, [r1, #0x24] - bx lr - .align 2, 0 -_022E228C: .word ov00_02326DA0 - arm_func_end Dwci_SetState - - arm_func_start Dwci_DeleteAid -Dwci_DeleteAid: ; 0x022E2290 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - add r0, sp, #0 - bl Dwci_GetAllAidList - mov r1, r0 - cmp r1, #0 - mov r0, #0 - ble _022E22D4 - ldr r3, [sp] -_022E22B8: - ldrb r2, [r3] - cmp r4, r2 - beq _022E22D4 - add r0, r0, #1 - cmp r0, r1 - add r3, r3, #1 - blt _022E22B8 -_022E22D4: - cmp r0, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - bl Dwci_DeleteHostByIndex - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwci_DeleteAid - - arm_func_start Dwci_HandleGpError_Common -Dwci_HandleGpError_Common: ; 0x022E22F0 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r6, #4 - addls pc, pc, r6, lsl #2 - b _022E234C -_022E230C: ; jump table - b _022E234C ; case 0 - b _022E2320 ; case 1 - b _022E232C ; case 2 - b _022E2338 ; case 3 - b _022E2344 ; case 4 -_022E2320: - mov r5, #9 - sub r4, r5, #0xa - b _022E234C -_022E232C: - mov r5, #9 - sub r4, r5, #0xb - b _022E234C -_022E2338: - mov r5, #6 - sub r4, r5, #0x10 - b _022E234C -_022E2344: - mov r5, #6 - sub r4, r5, #0x1a -_022E234C: - ldr r0, _022E23F8 ; =ov00_02326DA0 - ldr r1, [r0] - ldr r0, [r1, #0x24] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022E23DC -_022E2364: ; jump table - b _022E23DC ; case 0 - b _022E237C ; case 1 - b _022E2394 ; case 2 - b _022E23DC ; case 3 - b _022E23D0 ; case 4 - b _022E23B8 ; case 5 -_022E237C: - ldr r1, _022E23FC ; =0xFFFF11B8 - mov r0, r5 - add r4, r4, r1 - mov r1, r4 - bl Dwci_StopLogin - b _022E23E4 -_022E2394: - ldr r1, [r1, #0x9c] - ldr r0, _022E23FC ; =0xFFFF11B8 - cmp r1, #1 - add r4, r4, r0 - bge _022E23E4 - mov r0, r5 - mov r1, r4 - bl Dwci_StopLogin - b _022E23E4 -_022E23B8: - ldr r1, _022E2400 ; =0xFFFEC398 - mov r0, r5 - add r4, r4, r1 - mov r1, r4 - bl Dwci_StopMatching - b _022E23E4 -_022E23D0: - ldr r0, _022E2404 ; =0xFFFEEAA8 - add r4, r4, r0 - b _022E23E4 -_022E23DC: - ldr r0, _022E2408 ; =0xFFFE9C88 - add r4, r4, r0 -_022E23E4: - mov r0, r5 - mov r1, r4 - bl Dwci_StopFriendProcess - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E23F8: .word ov00_02326DA0 -_022E23FC: .word 0xFFFF11B8 -_022E2400: .word 0xFFFEC398 -_022E2404: .word 0xFFFEEAA8 -_022E2408: .word 0xFFFE9C88 - arm_func_end Dwci_HandleGpError_Common - - arm_func_start Dwci_HandleGT2Error -Dwci_HandleGT2Error: ; 0x022E240C - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _022E2490 -_022E2428: ; jump table - b _022E2490 ; case 0 - b _022E2448 ; case 1 - b _022E2454 ; case 2 - b _022E2464 ; case 3 - b _022E2470 ; case 4 - b _022E2454 ; case 5 - b _022E247C ; case 6 - b _022E2488 ; case 7 -_022E2448: - mov r0, #9 - sub r2, r0, #0xa - b _022E2490 -_022E2454: - mov r0, #0 - mov r2, r0 - mov r4, r0 - b _022E2490 -_022E2464: - mov r0, #6 - sub r2, r0, #0x10 - b _022E2490 -_022E2470: - mov r0, #6 - sub r2, r0, #0x24 - b _022E2490 -_022E247C: - mov r0, #6 - sub r2, r0, #0x4c - b _022E2490 -_022E2488: - mov r0, #6 - sub r2, r0, #0x56 -_022E2490: - cmp r0, #0 - beq _022E24A4 - ldr r1, _022E24AC ; =0xFFFEFA48 - add r1, r2, r1 - bl Dwci_StopLogin -_022E24A4: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E24AC: .word 0xFFFEFA48 - arm_func_end Dwci_HandleGT2Error - - arm_func_start Dwci_LoginCallback -Dwci_LoginCallback: ; 0x022E24B0 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _022E24DC - ldr r1, _022E250C ; =ov00_02326DA0 - mov r0, #3 - ldr r1, [r1] - str r4, [r1, #0x64] - bl Dwci_SetState - bl Dwci_InitGpProcessCount - b _022E24E4 -_022E24DC: - mov r0, #0 - bl Dwci_SetState -_022E24E4: - ldr r0, _022E250C ; =ov00_02326DA0 - ldr r0, [r0] - ldr r3, [r0, #0x70] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r0, #0x74] - mov r0, r5 - mov r1, r4 - blx r3 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E250C: .word ov00_02326DA0 - arm_func_end Dwci_LoginCallback - - arm_func_start Dwci_UpdateServersCallback -Dwci_UpdateServersCallback: ; 0x022E2510 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _022E2554 ; =ov00_02326DA0 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - ldr r0, [r0, #0x28] - cmp r0, #4 - beq _022E2534 - bl Dwci_SetState -_022E2534: - ldr r1, _022E2554 ; =ov00_02326DA0 - mov r0, r5 - ldr r3, [r1] - mov r1, r4 - ldr r2, [r3, #0x7c] - ldr r3, [r3, #0x78] - blx r3 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E2554: .word ov00_02326DA0 - arm_func_end Dwci_UpdateServersCallback - - arm_func_start Dwci_GpErrorCallback -Dwci_GpErrorCallback: ; 0x022E2558 - stmdb sp!, {r3, lr} - ldr r1, [r1, #4] - ldr r0, _022E2588 ; =0x00000603 - cmp r1, r0 - ldrne r0, _022E258C ; =0x00000901 - cmpne r1, r0 - addne r0, r0, #0x200 - cmpne r1, r0 - ldmeqia sp!, {r3, pc} - mov r0, #3 - bl Dwci_HandleGpError_Common - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2588: .word 0x00000603 -_022E258C: .word 0x00000901 - arm_func_end Dwci_GpErrorCallback - - arm_func_start Dwci_GpRecvBuddyMessageCallback -Dwci_GpRecvBuddyMessageCallback: ; 0x022E2590 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - add r3, sp, #0 - mov r2, #0 - mov r6, r0 - mov r5, r1 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - strb r2, [r3, #4] - strb r2, [r3, #5] - strb r2, [r3, #6] - strb r2, [r3, #7] - strb r2, [r3, #8] - strb r2, [r3, #9] - strb r2, [r3, #0xa] - strb r2, [r3, #0xb] - ldr r0, _022E26DC ; =ov00_0231A194 - ldr r4, [r5, #8] - bl strlen - mov r2, r0 - ldr r1, _022E26DC ; =ov00_0231A194 - mov r0, r4 - bl memcmp - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _022E26DC ; =ov00_0231A194 - bl strlen - add r4, r4, r0 - mov r0, r4 - mov r1, #0x76 - bl strchr - sub r7, r0, r4 - add r0, sp, #0 - mov r1, r4 - mov r2, r7 - bl strncpy - cmp r7, #0xa - addhi sp, sp, #0xc - ldmhiia sp!, {r4, r5, r6, r7, pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _022E26E0 ; =ov00_0231A19C - add r1, r7, #1 - add r4, r4, r1 - bl strlen - mov r2, r0 - ldr r1, _022E26E0 ; =ov00_0231A19C - mov r0, r4 - bl memcmp - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, _022E26E4 ; =ov00_02326DA0 - ldr r1, [r0] - ldr r0, [r1, #0x24] - cmp r0, #5 - beq _022E26B8 - cmp r0, #6 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldrb r0, [r1, #0x38d] - cmp r0, #2 - ldrneb r0, [r1, #0x38d] - cmpne r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} -_022E26B8: - ldr r0, _022E26E0 ; =ov00_0231A19C - bl strlen - mov r2, r0 - ldr r1, [r5] - mov r0, r6 - add r2, r4, r2 - bl Dwci_MatchGpRecvBuddyMsgCallback - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_022E26DC: .word ov00_0231A194 -_022E26E0: .word ov00_0231A19C -_022E26E4: .word ov00_02326DA0 - arm_func_end Dwci_GpRecvBuddyMessageCallback - - arm_func_start Dwci_GT2ReceivedCallback -Dwci_GT2ReceivedCallback: ; 0x022E26E8 - ldr ip, _022E26F0 ; =Dwci_RecvCallback - bx ip - .align 2, 0 -_022E26F0: .word Dwci_RecvCallback - arm_func_end Dwci_GT2ReceivedCallback - - arm_func_start Dwci_GT2ClosedCallback -Dwci_GT2ClosedCallback: ; 0x022E26F4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r5, #0 - mov fp, r0 - mov sb, r1 - mov sl, r5 - bl Dwci_IsShutdownMatch - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #4 - addls pc, pc, sb, lsl #2 - b _022E2758 -_022E2728: ; jump table - b _022E273C ; case 0 - b _022E273C ; case 1 - b _022E2744 ; case 2 - b _022E2744 ; case 3 - b _022E2750 ; case 4 -_022E273C: - mov r8, r5 - b _022E2758 -_022E2744: - mov r8, #6 - ldr r6, _022E2A44 ; =0xFFFFE250 - b _022E2758 -_022E2750: - ldr r6, _022E2A48 ; =0xFFFFE24F - mov r8, #9 -_022E2758: - cmp r8, #0 - bne _022E2814 - mov r0, fp - bl Gt2GetConnectionData - movs r5, r0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldrb r4, [r5, #1] - ldr r0, [r0] - mov r7, #1 - ldr r0, [r0, #0x668] - tst r0, r7, lsl r4 - mov r0, r4 - moveq r7, #0 - bl Dwci_ClearTransConnection - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x38d] - cmp r0, #2 - cmpeq sb, #0 - beq _022E27C0 - ldrb r0, [r1, #0x38d] - cmp r0, #3 - cmpeq r4, #0 - bne _022E27C4 -_022E27C0: - mov sl, #1 -_022E27C4: - mov r0, r4 - bl Dwci_DeleteAid - ldr r1, _022E2A4C ; =ov00_02326DA0 - ldrb r5, [r5] - ldr r3, _022E2A50 ; =ov00_02326DA8 - mov fp, #0 - str fp, [r3, r5, lsl #2] - ldr r2, [r1] - mov r5, r0 - ldrb r1, [r2, #0x385] - cmp r1, #0 - subne r0, r1, #1 - strneb r0, [r2, #0x385] - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x38c] - cmp r0, #0 - ldrneb r0, [r1, #0x38c] - subne r0, r0, #1 - strneb r0, [r1, #0x38c] -_022E2814: - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - ldreq r0, [r1, #0x24] - cmpeq r0, #6 - cmpeq r7, #0 - bne _022E285C - ldrb r0, [r1, #0x38d] - cmp r0, #2 - cmpeq r8, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl Dwci_GpSetServerStatus - mov r0, r5 - bl Dwci_ProcessMatchScClosing - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E285C: - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl Dwci_ProcessMatchClosing - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #0 - beq _022E2898 - ldr r1, _022E2A54 ; =0xFFFEC780 - mov r0, r8 - add r1, r6, r1 - bl Dwci_SetError - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E2898: - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _022E2908 - ldrb r0, [r1, #0x38d] - cmp r0, #2 - ldrneb r0, [r1, #0x38d] - cmpne r0, #3 - bne _022E2908 - ldr r2, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r2] - ldrb r0, [r1, #0x385] - add r6, r0, #2 - add r3, r1, r6, lsl #2 - ldr r3, [r3, #0x46c] - cmp r3, #0 - beq _022E2908 - add r3, r1, r6 - ldrb r3, [r3, #0x648] - add r0, r0, #1 - add r0, r1, r0 - strb r3, [r0, #0x648] - ldr r0, [r2] - ldrb r1, [r0, #0x385] - add r0, r1, #1 - add r1, r1, #3 - bl Dwci_DeleteHostByIndex -_022E2908: - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x38d] - cmp r0, #2 - bne _022E2950 - ldrb r0, [r1, #0x2d] - cmp r0, #0 - bne _022E2930 - bl Dwci_GpSetServerStatus - b _022E296C -_022E2930: - ldrb r0, [r1, #0x385] - cmp r0, #0 - bne _022E296C - ldr r1, _022E2A58 ; =ov00_0231A190 - mov r0, #1 - mov r2, #0 - bl Dwci_SetGpStatus - b _022E296C -_022E2950: - ldrb r0, [r1, #0x385] - cmp r0, #0 - bne _022E296C - ldr r1, _022E2A58 ; =ov00_0231A190 - mov r0, #1 - mov r2, #0 - bl Dwci_SetGpStatus -_022E296C: - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x38d] - cmp r0, #0 - ldrneb r0, [r1, #0x38d] - cmpne r0, #1 - bne _022E29A4 - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r2, [r0] - ldrb r1, [r2, #0x38c] - strb r1, [r2, #0x38e] - ldr r0, [r0] - ldr r0, [r0, #0x388] - bl qr2_send_statechanged -_022E29A4: - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r6, [r0] - ldr r0, [r6, #0x90] - cmp r0, #0 - cmpne r7, #0 - beq _022E29FC - cmp sb, #0 - moveq r7, #1 - mov r0, r5 - movne r7, #0 - bl Dwci_GetFriendListIndex - str r0, [sp] - ldr r1, [r6, #0x94] - ldr r0, _022E2A4C ; =ov00_02326DA0 - str r1, [sp, #4] - ldr r1, [r0] - mov r0, r8 - ldr r5, [r1, #0x90] - mov r1, r7 - mov r2, sl - mov r3, r4 - blx r5 -_022E29FC: - ldr r0, _022E2A4C ; =ov00_02326DA0 - ldr r1, [r0] - ldrb r0, [r1, #0x2d] - cmp r0, #0 - ldreqb r0, [r1, #0x38d] - cmpeq r0, #2 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r1, #0x385] - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl Dwci_NnFreeNegotiateList - bl Dwci_ClearQR2Key - mov r0, #3 - bl Dwci_SetState - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E2A44: .word 0xFFFFE250 -_022E2A48: .word 0xFFFFE24F -_022E2A4C: .word ov00_02326DA0 -_022E2A50: .word ov00_02326DA8 -_022E2A54: .word 0xFFFEC780 -_022E2A58: .word ov00_0231A190 - arm_func_end Dwci_GT2ClosedCallback - - arm_func_start Dwci_GT2PingCallback -Dwci_GT2PingCallback: ; 0x022E2A5C - ldr ip, _022E2A64 ; =Dwci_PingCallback - bx ip - .align 2, 0 -_022E2A64: .word Dwci_PingCallback - arm_func_end Dwci_GT2PingCallback - - arm_func_start Dwci_GT2SocketErrorCallback -Dwci_GT2SocketErrorCallback: ; 0x022E2A68 - stmdb sp!, {r3, lr} - bl Gt2GetSocketSocket - bl GoaGetLastError - ldr r2, _022E2A9C ; =ov00_02326DA0 - ldr r1, _022E2AA0 ; =0xFFFE8515 - str r0, [r2, #4] - mov r0, #9 - bl Dwci_SetError - ldr r0, _022E2A9C ; =ov00_02326DA0 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2A9C: .word ov00_02326DA0 -_022E2AA0: .word 0xFFFE8515 - arm_func_end Dwci_GT2SocketErrorCallback - - arm_func_start Dwci_LoginInit -Dwci_LoginInit: ; 0x022E2AA4 - stmdb sp!, {r4, r5, r6, lr} - ldr ip, _022E2B24 ; =ov00_02326F28 - mov r6, r1 - mov r5, r2 - mov r1, #0 - mov r2, #0x280 - mov r4, r3 - str r0, [ip, #4] - bl MI_CpuFill8 - ldr r0, _022E2B24 ; =ov00_02326F28 - mov r2, #0 - ldr r1, [r0, #4] - ldr ip, [sp, #0x10] - str r5, [r1] - ldr r1, [r0, #4] - ldr r5, [sp, #0x14] - str r2, [r1, #4] - ldr r1, [r0, #4] - ldr r3, [sp, #0x18] - str r4, [r1, #8] - ldr r1, [r0, #4] - ldr r2, [sp, #0x1c] - str ip, [r1, #0xc] - ldr r1, [r0, #4] - str r5, [r1, #0x10] - ldr r1, [r0, #4] - str r3, [r1, #0x14] - ldr r1, [r0, #4] - str r2, [r1, #0x18] - ldr r0, [r0, #4] - str r6, [r0, #0x1c] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E2B24: .word ov00_02326F28 - arm_func_end Dwci_LoginInit - - arm_func_start Dwci_LoginAsync -Dwci_LoginAsync: ; 0x022E2B28 - stmdb sp!, {r3, lr} - ldr r0, _022E2B58 ; =Dwci_RemoteAuthCallback - mov r1, #0 - bl Dwci_RemoteLogin - ldr r0, _022E2B5C ; =ov00_02326F28 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0, #4] - str r1, [r0, #0x30] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2B58: .word Dwci_RemoteAuthCallback -_022E2B5C: .word ov00_02326F28 - arm_func_end Dwci_LoginAsync - - arm_func_start Dwci_LoginProcess -Dwci_LoginProcess: ; 0x022E2B60 - stmdb sp!, {r3, lr} - ldr r0, _022E2C48 ; =ov00_02326F28 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl Dwci_IsError - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022E2C48 ; =ov00_02326F28 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_022E2B98: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _022E2BB0 ; case 1 - b _022E2BB8 ; case 2 - b _022E2BB8 ; case 3 - b _022E2BB8 ; case 4 - ldmia sp!, {r3, pc} ; case 5 -_022E2BB0: - bl Dwci_RemoteLoginProcess - ldmia sp!, {r3, pc} -_022E2BB8: - ldr r0, [r1] - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - beq _022E2BD0 - bl GpProcess -_022E2BD0: - ldr r0, _022E2C48 ; =ov00_02326F28 - ldr r0, [r0, #4] - ldr r0, [r0, #0x30] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl OS_GetTick - ldr r3, _022E2C48 ; =ov00_02326F28 - ldr r2, _022E2C4C ; =0x000082EA - ldr ip, [r3, #4] - mov r3, #0 - ldr lr, [ip, #0x34] - ldr ip, [ip, #0x38] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _022E2C50 ; =0x0000EA60 - cmp r1, #0 - cmpeq r0, r2 - ldmlsia sp!, {r3, pc} - ldr r1, _022E2C54 ; =0xFFFF1172 - mov r0, #6 - bl Dwci_StopLogin - ldr r0, _022E2C48 ; =ov00_02326F28 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x30] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2C48: .word ov00_02326F28 -_022E2C4C: .word 0x000082EA -_022E2C50: .word 0x0000EA60 -_022E2C54: .word 0xFFFF1172 - arm_func_end Dwci_LoginProcess - - arm_func_start Dwci_GetUserData -Dwci_GetUserData: ; 0x022E2C58 - ldr r0, _022E2C70 ; =ov00_02326F28 - ldr r0, [r0, #4] - cmp r0, #0 - ldrne r0, [r0, #0x1c] - moveq r0, #0 - bx lr - .align 2, 0 -_022E2C70: .word ov00_02326F28 - arm_func_end Dwci_GetUserData - - arm_func_start Dwci_StopLogin -Dwci_StopLogin: ; 0x022E2C74 - stmdb sp!, {r4, lr} - ldr r2, _022E2CC0 ; =ov00_02326F28 - mov r4, r0 - ldr r2, [r2, #4] - cmp r2, #0 - cmpne r4, #0 - ldmeqia sp!, {r4, pc} - bl Dwci_SetError - ldr r0, _022E2CC0 ; =ov00_02326F28 - ldr r0, [r0, #4] - ldr r3, [r0, #0x14] - cmp r3, #0 - beq _022E2CB8 - ldr r2, [r0, #0x18] - mov r0, r4 - mov r1, #0 - blx r3 -_022E2CB8: - bl Dwci_CloseLogin - ldmia sp!, {r4, pc} - .align 2, 0 -_022E2CC0: .word ov00_02326F28 - arm_func_end Dwci_StopLogin - - arm_func_start Dwci_ShutdownLogin -Dwci_ShutdownLogin: ; 0x022E2CC4 - stmdb sp!, {r3, lr} - ldr r0, _022E2D1C ; =ov00_02326F28 - ldr r0, [r0, #4] - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _022E2D0C - bl Dwc_Auth_Abort - bl Dwc_Auth_Destroy - ldr r1, _022E2D1C ; =ov00_02326F28 - mov r0, #0 - ldr r1, [r1, #4] - mov r2, r0 - ldr r1, [r1, #0x24] - bl Dwc_Free - ldr r0, _022E2D1C ; =ov00_02326F28 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x24] -_022E2D0C: - ldr r0, _022E2D1C ; =ov00_02326F28 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2D1C: .word ov00_02326F28 - arm_func_end Dwci_ShutdownLogin - - arm_func_start Dwci_CloseLogin -Dwci_CloseLogin: ; 0x022E2D20 - ldr r0, _022E2D44 ; =ov00_02326F28 - ldr r2, [r0, #4] - cmp r2, #0 - bxeq lr - mov r1, #0 - str r1, [r2, #4] - ldr r0, [r0, #4] - str r1, [r0, #0x30] - bx lr - .align 2, 0 -_022E2D44: .word ov00_02326F28 - arm_func_end Dwci_CloseLogin - - arm_func_start Dwci_HandleGpError_Login -Dwci_HandleGpError_Login: ; 0x022E2D48 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _022E2DA4 -_022E2D64: ; jump table - b _022E2DA4 ; case 0 - b _022E2D78 ; case 1 - b _022E2D84 ; case 2 - b _022E2D90 ; case 3 - b _022E2D9C ; case 4 -_022E2D78: - mov r0, #9 - sub r2, r0, #0xa - b _022E2DA4 -_022E2D84: - mov r0, #9 - sub r2, r0, #0xb - b _022E2DA4 -_022E2D90: - mov r0, #6 - sub r2, r0, #0x10 - b _022E2DA4 -_022E2D9C: - mov r0, #6 - sub r2, r0, #0x1a -_022E2DA4: - ldr r1, _022E2DB8 ; =0xFFFF11B8 - add r1, r2, r1 - bl Dwci_StopLogin - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E2DB8: .word 0xFFFF11B8 - arm_func_end Dwci_HandleGpError_Login - - arm_func_start Dwci_GpConnectCallback -Dwci_GpConnectCallback: ; 0x022E2DBC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r2, _022E2EE4 ; =ov00_02326F28 - mov lr, #0 - ldr r3, [r2, #4] - mov r4, r1 - str lr, [r3, #0x30] - mov r7, r0 - ldr r0, [r4] - cmp r0, #0 - bne _022E2ED8 - ldr ip, [r2, #4] - mov r6, r4 - add r5, ip, #0x260 - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - ldmia r6, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - ldr r0, [ip, #4] - cmp r0, #2 - bne _022E2EA0 - ldr r1, [ip, #0x1c] - ldr r0, [r4, #4] - ldr r1, [r1, #0x1c] - cmp r1, r0 - bne _022E2E8C - ldr r1, _022E2EE8 ; =ov00_0231A1A0 - mov r3, #5 - mov r2, lr - mov r0, #1 - str r3, [ip, #4] - bl Dwci_SetGpStatus - bl Dwci_HandleGpError_Login - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _022E2EE4 ; =ov00_02326F28 - ldr r1, [r4, #4] - ldr r3, [r0, #4] - mov r0, #0 - ldr r2, [r3, #0x18] - ldr r3, [r3, #0x14] - blx r3 - bl Dwci_GT2Startup - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #4] - bl Dwci_QR2Startup - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E2E8C: - ldr r1, _022E2EEC ; =0xFFFF15A0 - mov r0, #6 - bl Dwci_StopLogin - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E2EA0: - cmp r0, #3 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _022E2EF0 ; =Dwci_GpGetInfoCallback - mov r0, r7 - stmia sp, {r1, lr} - ldr r1, [r4, #4] - mov r2, lr - mov r3, lr - bl GpGetInfo - bl Dwci_HandleGpError_Login - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E2ED8: - bl Dwci_HandleGpError_Login - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E2EE4: .word ov00_02326F28 -_022E2EE8: .word ov00_0231A1A0 -_022E2EEC: .word 0xFFFF15A0 -_022E2EF0: .word Dwci_GpGetInfoCallback - arm_func_end Dwci_GpConnectCallback - - arm_func_start Dwci_RemoteAuthCallback -Dwci_RemoteAuthCallback: ; 0x022E2EF4 - ldr ip, _022E2F04 ; =Dwci_GpConnect - ldr r2, _022E2F08 ; =Dwci_GpConnectCallback - mov r3, #2 - bx ip - .align 2, 0 -_022E2F04: .word Dwci_GpConnect -_022E2F08: .word Dwci_GpConnectCallback - arm_func_end Dwci_RemoteAuthCallback - - arm_func_start Dwci_GpConnect -Dwci_GpConnect: ; 0x022E2F0C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr r4, _022E2FA4 ; =ov00_02326F28 - mov r6, r1 - ldr r4, [r4, #4] - mov r1, r0 - add r0, r4, #0x48 - mov r5, r2 - mov r4, r3 - bl strcpy - ldr r0, _022E2FA4 ; =ov00_02326F28 - mov r1, r6 - ldr r0, [r0, #4] - add r0, r0, #0x148 - bl strcpy - ldr r0, _022E2FA4 ; =ov00_02326F28 - ldr r6, [r0, #4] - bl OS_GetTick - str r0, [r6, #0x34] - str r1, [r6, #0x38] - mov r3, #1 - ldr r0, _022E2FA4 ; =ov00_02326F28 - str r3, [r6, #0x30] - ldr r2, [r0, #4] - mov r1, #0 - stmia sp, {r1, r5} - str r1, [sp, #8] - ldr r0, [r2] - add r1, r2, #0x48 - add r2, r2, #0x148 - bl GpConnectPreAuthenticatedA - bl Dwci_HandleGpError_Login - cmp r0, #0 - ldreq r0, _022E2FA4 ; =ov00_02326F28 - ldreq r0, [r0, #4] - streq r4, [r0, #4] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022E2FA4: .word ov00_02326F28 - arm_func_end Dwci_GpConnect - - arm_func_start Dwci_RemoteLogin -Dwci_RemoteLogin: ; 0x022E2FA8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - mov r5, r0 - mov r4, r1 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _022E3158 ; =ov00_02326F28 - str r5, [r0, #8] - str r4, [r0] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl Dwci_Acc_IsAuthentic - cmp r0, #0 - beq _022E3008 - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r1, [r0, #4] - ldr r0, [r1, #0x1c] - add r2, r1, #0x248 - ldr r1, [r0, #0x24] - add r0, r0, #0x10 - bl Dwci_Acc_LoginIdToUserName - b _022E30BC -_022E3008: - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r0, [r0, #4] - add r0, r0, #0x3c - bl Dwci_Acc_IsValidLoginId - cmp r0, #0 - bne _022E3070 - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - add r0, r0, #4 - bl Dwci_Acc_CheckConsoleUserId - cmp r0, #0 - beq _022E305C - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r1, [r0, #4] - ldr r0, [r1, #0x1c] - add r3, r1, #0x3c - add r0, r0, #4 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - b _022E30A4 -_022E305C: - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r0, [r0, #4] - add r0, r0, #0x3c - bl Dwci_Acc_CreateTempLoginId - b _022E30A4 -_022E3070: - bl OS_GetTick - ldr r2, _022E315C ; =0x6C078965 - ldr r3, _022E3160 ; =0x5D588B65 - umull ip, r4, r0, r2 - mla r4, r0, r3, r4 - ldr r3, _022E3158 ; =ov00_02326F28 - ldr r0, _022E3164 ; =0x00269EC3 - mla r4, r1, r2, r4 - adds r0, ip, r0 - ldr r3, [r3, #4] - adc r1, r4, #0 - add r0, r3, #0x3c - bl Dwci_Acc_SetPlayerId -_022E30A4: - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r2, [r0, #4] - ldr r1, [r2, #0xc] - add r0, r2, #0x3c - add r2, r2, #0x248 - bl Dwci_Acc_LoginIdToUserName -_022E30BC: - ldr r0, _022E3158 ; =ov00_02326F28 - ldr r0, [r0, #4] - ldr r0, [r0, #0x10] - bl Dwci_WStrLen - ldr r1, _022E3158 ; =ov00_02326F28 - mov r2, r0, lsl #1 - ldr r1, [r1, #4] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0 - bl MI_CpuCopy8 - ldr r1, _022E3158 ; =ov00_02326F28 - add r0, sp, #0x34 - ldr r1, [r1, #4] - add r1, r1, #0x51 - add r1, r1, #0x200 - bl strcpy - ldr r4, _022E3168 ; =Dwc_Alloc - ldr r3, _022E316C ; =Dwc_Free - ldr r1, _022E3170 ; =0x00001C14 - mov r0, #0 - mov r2, #4 - str r4, [sp, #0x40] - str r3, [sp, #0x44] - bl Dwc_AllocEx - ldr r1, _022E3158 ; =ov00_02326F28 - mov r4, r0 - ldr r0, [r1, #4] - str r4, [r0, #0x24] - bl OS_GetTick - ldr r2, _022E3158 ; =ov00_02326F28 - ldr r2, [r2, #4] - str r0, [r2, #0x28] - str r1, [r2, #0x2c] - mov r1, r4 - add r0, sp, #0 - bl Dwc_Auth_Create - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E3158: .word ov00_02326F28 -_022E315C: .word 0x6C078965 -_022E3160: .word 0x5D588B65 -_022E3164: .word 0x00269EC3 -_022E3168: .word Dwc_Alloc -_022E316C: .word Dwc_Free -_022E3170: .word 0x00001C14 - arm_func_end Dwci_RemoteLogin - - arm_func_start Dwci_RemoteLoginProcess -Dwci_RemoteLoginProcess: ; 0x022E3174 - stmdb sp!, {r3, lr} - sub sp, sp, #0x3d0 - bl Dwc_Auth_GetError - cmp r0, #0x15 - bne _022E3244 - add r0, sp, #0x20c - bl Dwc_Auth_GetResult - ldr r0, _022E3364 ; =ov00_02326F28 - add r1, sp, #0x200 - ldr r0, [r0, #4] - add r1, r1, #0x56 - add r0, r0, #0x48 - bl strcpy - ldr r0, _022E3364 ; =ov00_02326F28 - add r1, sp, #0x300 - ldr r0, [r0, #4] - add r1, r1, #0x83 - add r0, r0, #0x148 - bl strcpy - bl Dwc_Auth_Destroy - ldr r1, _022E3364 ; =ov00_02326F28 - mov r0, #0 - ldr r1, [r1, #4] - mov r2, r0 - ldr r1, [r1, #0x24] - bl Dwc_Free - ldr r0, _022E3364 ; =ov00_02326F28 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #0x24] - ldr r0, [r0, #4] - ldr r0, [r0, #0x1c] - bl Dwci_Acc_IsAuthentic - cmp r0, #0 - beq _022E3220 - ldr r0, _022E3364 ; =ov00_02326F28 - ldr r2, [r0] - ldmib r0, {r1, r3} - add r0, r1, #0x48 - add r1, r1, #0x148 - blx r3 - add sp, sp, #0x3d0 - ldmia sp!, {r3, pc} -_022E3220: - ldr r0, _022E3364 ; =ov00_02326F28 - ldr r2, _022E3368 ; =Dwci_GpConnectCallback - ldr r1, [r0, #4] - mov r3, #3 - add r0, r1, #0x48 - add r1, r1, #0x148 - bl Dwci_GpConnect - add sp, sp, #0x3d0 - ldmia sp!, {r3, pc} -_022E3244: - bl Dwc_Auth_GetError - cmp r0, #0 - addeq sp, sp, #0x3d0 - ldmeqia sp!, {r3, pc} - bl OS_GetTick - ldr r3, _022E3364 ; =ov00_02326F28 - ldr r2, _022E336C ; =0x000082EA - ldr ip, [r3, #4] - mov r3, #0 - ldr lr, [ip, #0x28] - ldr ip, [ip, #0x2c] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _022E3370 ; =0x00002710 - cmp r1, #0 - cmpeq r0, r2 - bls _022E32E0 - add r0, sp, #0x48 - bl Dwc_Auth_GetResult - bl Dwc_Auth_Destroy - ldr r1, _022E3364 ; =ov00_02326F28 - mov r0, #0 - ldr r1, [r1, #4] - mov r2, r0 - ldr r1, [r1, #0x24] - bl Dwc_Free - ldr r0, _022E3364 ; =ov00_02326F28 - mov r2, #0 - ldr r1, [r0, #4] - mov r0, #2 - str r2, [r1, #0x24] - ldr r1, [sp, #0x48] - bl Dwci_StopLogin - add sp, sp, #0x3d0 - ldmia sp!, {r3, pc} -_022E32E0: - bl Dwc_Auth_Destroy - add r0, sp, #0 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _022E3364 ; =ov00_02326F28 - ldr r0, [r0, #4] - ldr r0, [r0, #0x10] - bl Dwci_WStrLen - ldr r1, _022E3364 ; =ov00_02326F28 - mov r2, r0, lsl #1 - ldr r1, [r1, #4] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0 - bl MI_CpuCopy8 - ldr r1, _022E3364 ; =ov00_02326F28 - add r0, sp, #0x34 - ldr r1, [r1, #4] - add r1, r1, #0x51 - add r1, r1, #0x200 - bl strcpy - ldr r2, _022E3374 ; =Dwc_Alloc - ldr r0, _022E3364 ; =ov00_02326F28 - str r2, [sp, #0x40] - ldr r2, _022E3378 ; =Dwc_Free - ldr r1, [r0, #4] - str r2, [sp, #0x44] - ldr r1, [r1, #0x24] - add r0, sp, #0 - bl Dwc_Auth_Create - add sp, sp, #0x3d0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E3364: .word ov00_02326F28 -_022E3368: .word Dwci_GpConnectCallback -_022E336C: .word 0x000082EA -_022E3370: .word 0x00002710 -_022E3374: .word Dwc_Alloc -_022E3378: .word Dwc_Free - arm_func_end Dwci_RemoteLoginProcess - - arm_func_start Dwci_GpGetInfoCallback -Dwci_GpGetInfoCallback: ; 0x022E337C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - mov r4, r1 - ldr r1, [r4] - mov r5, r0 - cmp r1, #0 - addne sp, sp, #0x48 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _022E3510 ; =ov00_02326F28 - ldr r2, [r1, #4] - ldr r1, [r2, #4] - cmp r1, #3 - bne _022E3454 - ldrsb r1, [r4, #0x8e] - cmp r1, #0 - bne _022E342C - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #0x32 - add r0, r0, #4 - bl Dwci_Acc_LoginIdToUserName - ldr r1, _022E3514 ; =0x00000705 - add r2, sp, #0x32 - mov r0, r5 - bl GpGetInfoNoWait - bl Dwci_HandleGpError_Login - cmp r0, #0 - addne sp, sp, #0x48 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022E3510 ; =ov00_02326F28 - mov r3, #4 - ldr r1, [r0, #4] - ldr r0, _022E3518 ; =Dwci_GpGetInfoCallback - mov r2, #0 - str r3, [r1, #4] - stmia sp, {r0, r2} - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl GpGetInfo - bl Dwci_HandleGpError_Login - add sp, sp, #0x48 - cmp r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E342C: - bl GpDisconnect - ldr r0, _022E351C ; =Dwci_RemoteAuthCallback - mov r1, #0 - bl Dwci_RemoteLogin - ldr r0, _022E3510 ; =ov00_02326F28 - mov r1, #1 - ldr r0, [r0, #4] - add sp, sp, #0x48 - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} -_022E3454: - cmp r1, #4 - addne sp, sp, #0x48 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #0x1d - add r0, r0, #4 - bl Dwci_Acc_LoginIdToUserName - add r1, sp, #0x1d - add r0, r4, #0x8e - bl strcmp - cmp r0, #0 - bne _022E34E4 - ldr r0, _022E3510 ; =ov00_02326F28 - add r2, sp, #8 - ldr r0, [r0, #4] - ldr r1, [r0, #0xc] - add r0, r0, #0x3c - bl Dwci_Acc_LoginIdToUserName - ldr r0, _022E3510 ; =ov00_02326F28 - ldr r2, [r4, #4] - ldr r1, [r0, #4] - ldr r0, [r1, #0x1c] - add r1, r1, #0x3c - bl Dwci_Acc_SetLoginIdToUserData - ldr r1, _022E3510 ; =ov00_02326F28 - mov r3, #2 - ldr r2, [r1, #4] - mov r0, r5 - str r3, [r2, #4] - ldr r1, [r1, #4] - mov r2, #0 - add r1, r1, #0x260 - bl Dwci_GpConnectCallback - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022E34E4: - ldr r0, _022E3518 ; =Dwci_GpGetInfoCallback - mov r2, #0 - stmia sp, {r0, r2} - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl GpGetInfo - bl Dwci_HandleGpError_Login - cmp r0, #0 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E3510: .word ov00_02326F28 -_022E3514: .word 0x00000705 -_022E3518: .word Dwci_GpGetInfoCallback -_022E351C: .word Dwci_RemoteAuthCallback - arm_func_end Dwci_GpGetInfoCallback - - arm_func_start Dwci_CheckLogin -Dwci_CheckLogin: ; 0x022E3520 - ldr r0, _022E3548 ; =ov00_02326F28 - ldr r0, [r0, #4] - cmp r0, #0 - beq _022E3540 - ldr r0, [r0, #4] - cmp r0, #5 - moveq r0, #1 - bxeq lr -_022E3540: - mov r0, #0 - bx lr - .align 2, 0 -_022E3548: .word ov00_02326F28 - arm_func_end Dwci_CheckLogin - - arm_func_start Dwc_GetFriendStatus -Dwc_GetFriendStatus: ; 0x022E354C - ldr ip, _022E3560 ; =Dwc_GetFriendStatusSC - mov r3, r1 - mov r1, #0 - mov r2, r1 - bx ip - .align 2, 0 -_022E3560: .word Dwc_GetFriendStatusSC - arm_func_end Dwc_GetFriendStatus - - arm_func_start Dwc_GetFriendStatusSC -Dwc_GetFriendStatusSC: ; 0x022E3564 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x218 - mov r6, r1 - add r1, sp, #4 - mov r4, r2 - mov r5, r3 - bl Dwci_GetFriendBuddyStatus - cmp r0, #0 - beq _022E3654 - ldr r0, [sp, #8] - cmp r0, #6 - bne _022E3618 - cmp r6, #0 - beq _022E35D4 - ldr r0, _022E3678 ; =ov00_0231A1A4 - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl Dwc_GetCommonValueString - cmp r0, #0 - movle r0, #0 - strleb r0, [r6] - ble _022E35D4 - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - strb r0, [r6] -_022E35D4: - cmp r4, #0 - beq _022E3630 - ldr r0, _022E367C ; =ov00_0231A1A8 - add r1, sp, #0 - add r2, sp, #0xc - mov r3, #0x2f - bl Dwc_GetCommonValueString - cmp r0, #0 - movle r0, #0 - strleb r0, [r4] - ble _022E3630 - add r0, sp, #0 - mov r1, #0 - mov r2, #0xa - bl strtoul - strb r0, [r4] - b _022E3630 -_022E3618: - cmp r6, #0 - movne r0, #0 - strneb r0, [r6] - cmp r4, #0 - movne r0, #0 - strneb r0, [r4] -_022E3630: - cmp r5, #0 - beq _022E3644 - add r1, sp, #0x10c - mov r0, r5 - bl strcpy -_022E3644: - ldr r0, [sp, #8] - add sp, sp, #0x218 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, pc} -_022E3654: - cmp r6, #0 - movne r0, #0 - strneb r0, [r6] - cmp r4, #0 - movne r0, #0 - strneb r0, [r4] - mov r0, #0 - add sp, sp, #0x218 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E3678: .word ov00_0231A1A4 -_022E367C: .word ov00_0231A1A8 - arm_func_end Dwc_GetFriendStatusSC - - arm_func_start Dwc_DeleteBuddyFriendData -Dwc_DeleteBuddyFriendData: ; 0x022E3680 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022E3710 ; =ov00_02326F34 - mov r4, r0 - ldr r0, [r1, #0xc] - cmp r0, #0 - beq _022E36FC - bl Dwci_CheckLogin - cmp r0, #0 - beq _022E36FC - bl Dwci_GetUserData - cmp r0, #0 - beq _022E36FC - bl Dwci_GetUserData - mov r1, r4 - bl Dwc_GetGsProfileId - movs r5, r0 - mvnne r0, #0 - cmpne r5, r0 - beq _022E36FC - ldr r0, _022E3710 ; =ov00_02326F34 - mov r1, r5 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - bl GpIsBuddy - cmp r0, #0 - beq _022E36FC - ldr r0, _022E3710 ; =ov00_02326F34 - mov r1, r5 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - bl GpDeleteBuddy -_022E36FC: - mov r0, r4 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E3710: .word ov00_02326F34 - arm_func_end Dwc_DeleteBuddyFriendData - - arm_func_start Dwc_SetBuddyFriendCallback -Dwc_SetBuddyFriendCallback: ; 0x022E3714 - ldr r2, _022E373C ; =ov00_02326F34 - ldr r3, [r2, #0xc] - cmp r3, #0 - moveq r0, #0 - bxeq lr - str r0, [r3, #0x44] - ldr r2, [r2, #0xc] - mov r0, #1 - str r1, [r2, #0x48] - bx lr - .align 2, 0 -_022E373C: .word ov00_02326F34 - arm_func_end Dwc_SetBuddyFriendCallback - - arm_func_start Dwci_FriendInit -Dwci_FriendInit: ; 0x022E3740 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r6, _022E3858 ; =ov00_02326F34 - ldr r5, [sp, #0x18] - str r0, [r6, #0xc] - mov r4, #0 - str r4, [r0] - ldr r0, [r6, #0xc] - cmp r5, #0 - str r1, [r0, #4] - ldr r0, [r6, #0xc] - str r4, [r0, #8] - ldr r0, [r6, #0xc] - str r4, [r0, #0xc] - str r4, [r0, #0x10] - str r5, [r0, #0x14] - ldr r0, [r6, #0xc] - str r3, [r0, #0x18] - ldr r0, [r6, #0xc] - strb r4, [r0, #0x1c] - ldr r0, [r6, #0xc] - strb r4, [r0, #0x1d] - ldr r0, [r6, #0xc] - strb r4, [r0, #0x1e] - ldr r0, [r6, #0xc] - strb r4, [r0, #0x1f] - ldr r0, [r6, #0xc] - str r4, [r0, #0x20] - ldr r0, [r6, #0xc] - str r4, [r0, #0x24] - ldr r0, [r6, #0xc] - str r2, [r0, #0x28] - ldr r0, [r6, #0xc] - str r4, [r0, #0x2c] - ldr r0, [r6, #0xc] - str r4, [r0, #0x30] - ldr r0, [r6, #0xc] - str r4, [r0, #0x34] - ldr r0, [r6, #0xc] - str r4, [r0, #0x38] - ldr r0, [r6, #0xc] - str r4, [r0, #0x3c] - ldr r0, [r6, #0xc] - str r4, [r0, #0x40] - ldr r0, [r6, #0xc] - str r4, [r0, #0x44] - ldr r0, [r6, #0xc] - str r4, [r0, #0x48] - ldr r0, [r6, #0xc] - str r4, [r0, #0x4c] - ldr r0, [r6, #0xc] - str r4, [r0, #0x50] - ldr r0, [r6, #0xc] - str r4, [r0, #0x54] - ldr r0, [r6, #0xc] - str r4, [r0, #0x58] - ldr r0, [r6, #0xc] - str r4, [r0, #0x5c] - ldmleia sp!, {r4, r5, r6, r7, r8, pc} - mov r8, r4 - mov r7, r4 -_022E3830: - ldr r0, [r6, #0xc] - mov r1, r7 - ldr r0, [r0, #0x18] - add r0, r0, r8 - bl Dwci_SetSentBuddyReqFlag - add r4, r4, #1 - cmp r4, r5 - add r8, r8, #0xc - blt _022E3830 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E3858: .word ov00_02326F34 - arm_func_end Dwci_FriendInit - - arm_func_start Dwci_FriendProcess -Dwci_FriendProcess: ; 0x022E385C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r0, _022E3B30 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl Dwci_IsError - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022E3B30 ; =ov00_02326F34 - ldr r1, [r0, #0xc] - ldr r0, [r1, #0x18] - cmp r0, #0 - bne _022E38C0 - ldr r0, [r1, #4] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl Dwci_GpProcess - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E38C0: - bl Dwci_GetPersCallbackLevel - cmp r0, #0 - bne _022E38D8 - bl IsStatsConnected - cmp r0, #0 - beq _022E3910 -_022E38D8: - ldr r0, _022E3B30 ; =ov00_02326F34 - mov r1, #1 - str r1, [r0, #4] - mov r1, #0 - str r1, [r0] - bl PersistThink - ldr r0, _022E3B30 ; =ov00_02326F34 - mov r2, #0 - str r2, [r0, #4] - ldr r1, [r0] - cmp r1, #1 - bne _022E3910 - str r2, [r0] - bl CloseStatsConnection -_022E3910: - ldr r0, _022E3B30 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #0 - beq _022E39B4 - bl Dwci_GpProcess - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022E3B30 ; =ov00_02326F34 - ldr r3, [r0, #0xc] - ldr r0, [r3] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r3, #0x18] - cmp r0, #0 - ldrneb r2, [r3, #0x1e] - cmpne r2, #3 - beq _022E39B4 - ldr r1, [r3, #8] - cmp r1, #7 - bls _022E39B4 - cmp r2, #1 - bhi _022E3984 - ldr r1, [r3, #0x14] - bl Dwci_UpdateFriendReq -_022E3984: - ldr r0, _022E3B30 ; =ov00_02326F34 - ldr r3, [r0, #0xc] - ldrb r2, [r3, #0x1c] - ldr r1, [r3, #0x14] - cmp r2, r1 - blt _022E39B4 - mov r1, #3 - strb r1, [r3, #0x1e] - ldr r1, [r0, #0xc] - ldrb r0, [r1, #0x1f] - add r0, r0, #1 - strb r0, [r1, #0x1f] -_022E39B4: - ldr r6, _022E3B30 ; =ov00_02326F34 - ldr r1, [r6, #0xc] - ldrb r0, [r1, #0x1f] - cmp r0, #2 - addlo sp, sp, #8 - ldmloia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r1, #4] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #0 - beq _022E3B18 - ldr r0, [r1, #0x14] - mov r4, #0 - mov r5, r4 - mov r7, r4 - cmp r0, #0 - ble _022E3A28 - mov r8, r4 -_022E39FC: - ldr r0, [r1, #0x18] - add r0, r0, r8 - bl Dwc_GetFriendDataType - cmp r0, #3 - ldr r1, [r6, #0xc] - add r7, r7, #1 - ldr r0, [r1, #0x14] - addeq r5, r5, #1 - add r8, r8, #0xc - cmp r7, r0 - blt _022E39FC -_022E3A28: - cmp r5, #0 - bne _022E3A44 - mov r0, #0 - strb r0, [r1, #0x1f] - bl Dwci_EndUpdateServers - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E3A44: - mov r1, r5, lsl #2 - mov r0, #4 - bl Dwc_Alloc - ldr r8, _022E3B30 ; =ov00_02326F34 - ldr r1, [r8, #0xc] - str r0, [r1, #0x5c] - ldr r1, [r8, #0xc] - ldr r0, [r1, #0x5c] - cmp r0, #0 - bne _022E3A80 - ldr r1, _022E3B34 ; =0xFFFEEE8F - mov r0, #9 - bl Dwci_StopFriendProcess - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E3A80: - ldr r0, [r1, #0x14] - mov r7, #0 - cmp r0, #0 - ble _022E3AE4 - mov r6, r7 -_022E3A94: - ldr r0, [r1, #0x18] - add r0, r0, r6 - bl Dwc_GetFriendDataType - cmp r0, #3 - bne _022E3ACC - bl Dwci_GetUserData - ldr r1, [r8, #0xc] - ldr r1, [r1, #0x18] - add r1, r1, r6 - bl Dwc_GetGsProfileId - ldr r1, [r8, #0xc] - ldr r1, [r1, #0x5c] - str r0, [r1, r4, lsl #2] - add r4, r4, #1 -_022E3ACC: - ldr r1, [r8, #0xc] - add r7, r7, #1 - ldr r0, [r1, #0x14] - add r6, r6, #0xc - cmp r7, r0 - blt _022E3A94 -_022E3AE4: - ldr r0, _022E3B30 ; =ov00_02326F34 - ldr r1, _022E3B38 ; =Dwci_GetReverseBuddiesCallback - ldr r2, [r0, #0xc] - mov r3, #0 - stmia sp, {r1, r3} - ldr r0, [r2, #4] - ldr r1, [r2, #0x5c] - mov r2, r5 - bl GpGetReversBuddiesList - bl Dwci_HandleGpError_Friend - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_022E3B18: - ldr r0, _022E3B30 ; =ov00_02326F34 - mov r1, #0 - ldr r0, [r0, #0xc] - strb r1, [r0, #0x1f] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E3B30: .word ov00_02326F34 -_022E3B34: .word 0xFFFEEE8F -_022E3B38: .word Dwci_GetReverseBuddiesCallback - arm_func_end Dwci_FriendProcess - - arm_func_start Dwci_UpdateServersAsync -Dwci_UpdateServersAsync: ; 0x022E3B3C - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022E3BE4 ; =ov00_02326F34 - ldr r5, [sp, #0x10] - ldr r1, [r0, #0xc] - ldr r4, [sp, #0x14] - str r2, [r1, #0x2c] - ldr r1, [r0, #0xc] - ldr lr, [sp, #0x18] - str r3, [r1, #0x30] - ldr r1, [r0, #0xc] - ldr ip, [sp, #0x1c] - str r5, [r1, #0x34] - ldr r1, [r0, #0xc] - mov r3, #0 - str r4, [r1, #0x38] - ldr r1, [r0, #0xc] - mov r2, #1 - str lr, [r1, #0x3c] - ldr r1, [r0, #0xc] - str ip, [r1, #0x40] - ldr r1, [r0, #0xc] - strb r3, [r1, #0x1d] - ldr r1, [r0, #0xc] - strb r3, [r1, #0x1e] - ldr r1, [r0, #0xc] - strb r3, [r1, #0x1f] - ldr r1, [r0, #0xc] - strb r3, [r1, #0x1c] - ldr r1, [r0, #0xc] - str r2, [r1] - ldr r1, [r0, #0xc] - ldr r0, [r1, #0x18] - cmp r0, #0 - ldreqb r0, [r1, #0x1f] - addeq r0, r0, #1 - streqb r0, [r1, #0x1f] - ldr r0, _022E3BE4 ; =ov00_02326F34 - ldr r1, [r0, #0xc] - ldrb r0, [r1, #0x1f] - add r0, r0, #1 - strb r0, [r1, #0x1f] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E3BE4: .word ov00_02326F34 - arm_func_end Dwci_UpdateServersAsync - - arm_func_start Dwci_StopFriendProcess -Dwci_StopFriendProcess: ; 0x022E3BE8 - stmdb sp!, {r4, lr} - ldr r2, _022E3C6C ; =ov00_02326F34 - mov r4, r0 - ldr r2, [r2, #0xc] - cmp r2, #0 - cmpne r4, #0 - ldmeqia sp!, {r4, pc} - bl Dwci_SetError - ldr r0, _022E3C6C ; =ov00_02326F34 - ldr r1, [r0, #0xc] - ldr r0, [r1] - cmp r0, #0 - cmpne r0, #2 - beq _022E3C64 - ldr r1, [r1, #0x5c] - cmp r1, #0 - beq _022E3C48 - mov r0, #4 - mov r2, #0 - bl Dwc_Free - ldr r0, _022E3C6C ; =ov00_02326F34 - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #0x5c] -_022E3C48: - ldr r1, _022E3C6C ; =ov00_02326F34 - mov r0, r4 - ldr r3, [r1, #0xc] - ldrb r1, [r3, #0x1d] - ldr r2, [r3, #0x30] - ldr r3, [r3, #0x2c] - blx r3 -_022E3C64: - bl Dwci_CloseFriendProcess - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3C6C: .word ov00_02326F34 - arm_func_end Dwci_StopFriendProcess - - arm_func_start Dwci_GpRecvBuddyRequestCallback -Dwci_GpRecvBuddyRequestCallback: ; 0x022E3C70 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _022E3CB4 ; =ov00_02326F34 - ldr r2, [r2, #0xc] - ldr r2, [r2, #0x18] - cmp r2, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, pc} - ldr r3, _022E3CB8 ; =Dwci_GpGetInfoCallback_RecvBuddyRequest - mov r2, #0 - str r3, [sp] - str r2, [sp, #4] - ldr r1, [r1] - mov r3, r2 - bl GpGetInfo - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E3CB4: .word ov00_02326F34 -_022E3CB8: .word Dwci_GpGetInfoCallback_RecvBuddyRequest - arm_func_end Dwci_GpRecvBuddyRequestCallback - - arm_func_start Dwci_GpRecvBuddyAuthCallback -Dwci_GpRecvBuddyAuthCallback: ; 0x022E3CBC - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r3, _022E3CE8 ; =Dwci_GpGetInfoCallback_RecvAuthMessage - mov r2, #0 - str r3, [sp] - str r2, [sp, #4] - ldr r1, [r1] - mov r3, r2 - bl GpGetInfo - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E3CE8: .word Dwci_GpGetInfoCallback_RecvAuthMessage - arm_func_end Dwci_GpRecvBuddyAuthCallback - - arm_func_start Dwci_GpRecvBuddyStatusCallback -Dwci_GpRecvBuddyStatusCallback: ; 0x022E3CEC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x214 - ldr r2, _022E3D6C ; =ov00_02326F34 - mov r6, r0 - ldr r0, [r2, #0xc] - mov r5, r1 - ldr r0, [r0, #0x34] - cmp r0, #0 - addeq sp, sp, #0x214 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r5] - bl Dwci_GetFriendListIndex - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - addeq sp, sp, #0x214 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r5, #8] - add r2, sp, #0 - mov r0, r6 - bl GpGetBuddyStatus - ldr r0, _022E3D6C ; =ov00_02326F34 - ldr r1, [sp, #4] - ldr r0, [r0, #0xc] - add r2, sp, #0x108 - ldr r3, [r0, #0x38] - ldr ip, [r0, #0x34] - mov r0, r4 - and r1, r1, #0xff - blx ip - add sp, sp, #0x214 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022E3D6C: .word ov00_02326F34 - arm_func_end Dwci_GpRecvBuddyStatusCallback - - arm_func_start Dwci_GetProfileIdFromList -Dwci_GetProfileIdFromList: ; 0x022E3D70 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022E3DB4 ; =ov00_02326F34 - mov r5, r0 - ldr r0, [r1, #0xc] - ldr r4, [r0, #0x18] - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl Dwci_GetUserData - mov r1, #0xc - mla r1, r5, r1, r4 - bl Dwc_GetGsProfileId - cmp r0, #0 - mvnne r1, #0 - cmpne r0, r1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E3DB4: .word ov00_02326F34 - arm_func_end Dwci_GetProfileIdFromList - - arm_func_start Dwci_GetFriendListIndex -Dwci_GetFriendListIndex: ; 0x022E3DB8 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _022E3E18 ; =ov00_02326F34 - mov r6, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - cmpne r6, #0 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r0, #0x14] - mov r5, #0 - cmp r0, #0 - ble _022E3E10 -_022E3DE8: - mov r0, r5 - bl Dwci_GetProfileIdFromList - cmp r6, r0 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #0xc] - add r5, r5, #1 - ldr r0, [r0, #0x14] - cmp r5, r0 - blt _022E3DE8 -_022E3E10: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E3E18: .word ov00_02326F34 - arm_func_end Dwci_GetFriendListIndex - - arm_func_start Dwci_InitGpProcessCount -Dwci_InitGpProcessCount: ; 0x022E3E1C - stmdb sp!, {r3, lr} - ldr r0, _022E3E50 ; =ov00_02326F34 - ldr r1, [r0, #0xc] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - str r0, [r1, #8] - bl OS_GetTick - ldr r2, _022E3E50 ; =ov00_02326F34 - ldr r2, [r2, #0xc] - str r0, [r2, #0xc] - str r1, [r2, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E3E50: .word ov00_02326F34 - arm_func_end Dwci_InitGpProcessCount - - arm_func_start Dwci_SetGpStatus -Dwci_SetGpStatus: ; 0x022E3E54 - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _022E3F04 ; =ov00_02326F34 - mov r6, r0 - ldr r0, [r3, #0xc] - mov r5, r1 - mov r4, r2 - cmp r0, #0 - beq _022E3E80 - bl Dwci_CheckLogin - cmp r0, #0 - bne _022E3E88 -_022E3E80: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022E3E88: - mvn r0, #0 - cmp r6, r0 - bne _022E3EA8 - ldr r0, _022E3F04 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - ldr r0, [r0] - ldr r6, [r0, #0x23c] -_022E3EA8: - cmp r5, #0 - bne _022E3EC4 - ldr r0, _022E3F04 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - ldr r0, [r0] - add r5, r0, #0x3b8 -_022E3EC4: - cmp r4, #0 - bne _022E3EE4 - ldr r0, _022E3F04 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - ldr r0, [r0] - add r0, r0, #0xb8 - add r4, r0, #0x400 -_022E3EE4: - ldr r0, _022E3F04 ; =ov00_02326F34 - mov r1, r6 - ldr r0, [r0, #0xc] - mov r2, r5 - ldr r0, [r0, #4] - mov r3, r4 - bl GpSetStatusA - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E3F04: .word ov00_02326F34 - arm_func_end Dwci_SetGpStatus - - arm_func_start Dwci_GetGpStatus -Dwci_GetGpStatus: ; 0x022E3F08 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x214 - ldr r1, _022E3F8C ; =ov00_02326F34 - mov r4, r0 - ldr r3, [r1, #0xc] - ldr r2, [r3, #0x44] - cmp r2, #0 - ldrne r1, [r3] - cmpne r1, #1 - beq _022E3F38 - ldr r1, [r3, #0x48] - blx r2 -_022E3F38: - ldr r0, _022E3F8C ; =ov00_02326F34 - ldr r1, [r0, #0xc] - ldr r0, [r1, #0x34] - cmp r0, #0 - addeq sp, sp, #0x214 - ldmeqia sp!, {r3, r4, pc} - ldr r1, [r1, #0x18] - mov r0, #0xc - mla r0, r4, r0, r1 - add r1, sp, #0x108 - bl Dwc_GetFriendStatus - ldr r2, _022E3F8C ; =ov00_02326F34 - mov r1, r0 - ldr r0, [r2, #0xc] - add r2, sp, #0x108 - ldr r3, [r0, #0x38] - ldr ip, [r0, #0x34] - mov r0, r4 - blx ip - add sp, sp, #0x214 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022E3F8C: .word ov00_02326F34 - arm_func_end Dwci_GetGpStatus - - arm_func_start Dwci_ShutdownFriend -Dwci_ShutdownFriend: ; 0x022E3F90 - ldr r0, _022E3FA0 ; =ov00_02326F34 - mov r1, #0 - str r1, [r0, #0xc] - bx lr - .align 2, 0 -_022E3FA0: .word ov00_02326F34 - arm_func_end Dwci_ShutdownFriend - - arm_func_start Dwci_GpProcess -Dwci_GpProcess: ; 0x022E3FA4 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022E4028 ; =ov00_02326F34 - mov r4, #0 - ldr r5, [r0, #0xc] - bl OS_GetTick - ldr r3, [r5, #0xc] - ldr r2, [r5, #0x10] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _022E402C ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, r4 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, #0x12c - blo _022E4020 - ldr r1, [r5, #8] - ldr r0, _022E4028 ; =ov00_02326F34 - add r1, r1, #1 - str r1, [r5, #8] - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - bl GpProcess - mov r4, r0 - bl OS_GetTick - ldr r2, _022E4028 ; =ov00_02326F34 - ldr r2, [r2, #0xc] - str r0, [r2, #0xc] - str r1, [r2, #0x10] -_022E4020: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E4028: .word ov00_02326F34 -_022E402C: .word 0x000082EA - arm_func_end Dwci_GpProcess - - arm_func_start Dwci_CloseFriendProcess -Dwci_CloseFriendProcess: ; 0x022E4030 - ldr r0, _022E405C ; =ov00_02326F34 - ldr r1, [r0, #0xc] - cmp r1, #0 - bxeq lr - mov r2, #0 - str r2, [r1] - ldr r1, [r0, #0xc] - strb r2, [r1, #0x1e] - ldr r0, [r0, #0xc] - strb r2, [r0, #0x1f] - bx lr - .align 2, 0 -_022E405C: .word ov00_02326F34 - arm_func_end Dwci_CloseFriendProcess - - arm_func_start Dwci_UpdateFriendReq -Dwci_UpdateFriendReq: ; 0x022E4060 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24c - ldr r2, _022E4328 ; =ov00_02326F34 - mov sl, r0 - ldr r2, [r2, #0xc] - mov sb, r1 - ldrb r0, [r2, #0x1e] - cmp r0, #0 - bne _022E41C4 - ldr r0, [r2, #4] - add r1, sp, #0x1c - bl GpGetNumBuddies - bl Dwci_HandleGpError_Friend - ldr r0, [sp, #0x1c] - mov r1, #0 - str r1, [sp, #0x18] - cmp r0, #0 - ble _022E41B4 -_022E40A8: - ldr r0, _022E4328 ; =ov00_02326F34 - ldr r1, [sp, #0x18] - ldr r0, [r0, #0xc] - add r2, sp, #0x38 - ldr r0, [r0, #4] - bl GpGetBuddyStatus - bl Dwci_HandleGpError_Friend - cmp sb, #0 - mov r4, #0 - ble _022E4164 -_022E40D0: - mov r0, r4 - bl Dwci_GetProfileIdFromList - ldr r1, [sp, #0x38] - cmp r1, r0 - bne _022E4158 - mov r0, #0xc - mul r5, r4, r0 - add r0, sl, r5 - bl Dwci_IsBuddyFriendData - cmp r0, #0 - bne _022E4164 - ldr r1, [sp, #0x38] - add r0, sl, r5 - bl Dwc_SetGsProfileId - add r0, sl, r5 - bl Dwci_SetBuddyFriendData - ldr r0, _022E4328 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r5 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4144 - ldr r0, _022E4328 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r5 - bl Dwci_SetExpIsBuddyFriendFlag -_022E4144: - ldr r0, _022E4328 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - strb r1, [r0, #0x1d] - b _022E4164 -_022E4158: - add r4, r4, #1 - cmp r4, sb - blt _022E40D0 -_022E4164: - cmp r4, sb - bne _022E419C - ldr r0, _022E4328 ; =ov00_02326F34 - ldr r1, [sp, #0x38] - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - bl GpDeleteBuddy - bl Dwci_HandleGpError_Friend - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x18] - sub r1, r1, #1 - sub r0, r0, #1 - str r1, [sp, #0x1c] - str r0, [sp, #0x18] -_022E419C: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - add r1, r1, #1 - str r1, [sp, #0x18] - cmp r1, r0 - blt _022E40A8 -_022E41B4: - ldr r0, _022E4328 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - strb r1, [r0, #0x1e] -_022E41C4: - ldr r7, _022E4328 ; =ov00_02326F34 - ldr r0, [r7, #0xc] - ldrb r1, [r0, #0x1c] - cmp r1, sb - addge sp, sp, #0x24c - ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov fp, #0xc - mvn r5, #0 - mov r4, fp - mov r6, fp -_022E41EC: - mla r0, r1, r6, sl - bl Dwci_IsBuddyMsgAlreadySent - cmp r0, #0 - bne _022E4300 - ldr r0, [r7, #0xc] - ldrb r0, [r0, #0x1c] - bl Dwci_GetProfileIdFromList - movs r8, r0 - beq _022E4270 - ldr r1, [r7, #0xc] - mov r0, sl - ldrb r1, [r1, #0x1c] - mov r2, r8 - bl Dwci_RefreshFriendListForth - cmp r0, #0 - bne _022E4300 - ldr r0, [r7, #0xc] - mov r1, r8 - ldr r0, [r0, #4] - add r2, sp, #0x18 - bl GpGetBuddyIndex - bl Dwci_HandleGpError_Friend - ldr r0, [sp, #0x18] - cmp r0, r5 - bne _022E4300 - mov r0, r8 - bl Dwci_GpSendBuddyRequest - ldr r0, [r7, #0xc] - mov r1, #1 - ldrb r2, [r0, #0x1c] - mla r0, r2, r4, sl - bl Dwci_SetSentBuddyReqFlag - b _022E4300 -_022E4270: - bl Dwci_GetUserData - ldr r1, [r7, #0xc] - ldrb r2, [r1, #0x1c] - mla r1, r2, fp, sl - bl Dwc_GetGsProfileId - cmp r0, r5 - bne _022E4300 - bl Dwci_GetUserData - ldr r2, _022E4328 ; =ov00_02326F34 - mov r1, #0xc - ldr r3, [r2, #0xc] - add r2, sp, #0x20 - ldrb r3, [r3, #0x1c] - mla r1, r3, r1, sl - bl Dwc_LoginIdToUserName - ldr r0, _022E4328 ; =ov00_02326F34 - mov r1, #0 - ldr r4, [r0, #0xc] - add r2, sp, #0x20 - stmia sp, {r1, r2} - str r1, [sp, #8] - ldr r0, _022E432C ; =Dwci_GpProfileSearchCallback - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldrb r0, [r4, #0x1c] - mov r2, r1 - mov r3, r1 - str r0, [sp, #0x14] - ldr r0, [r4, #4] - bl GpProfileSearchA - ldr r0, _022E4328 ; =ov00_02326F34 - mov r1, #2 - ldr r0, [r0, #0xc] - add sp, sp, #0x24c - strb r1, [r0, #0x1e] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E4300: - ldr r1, [r7, #0xc] - ldrb r0, [r1, #0x1c] - add r0, r0, #1 - strb r0, [r1, #0x1c] - ldr r0, [r7, #0xc] - ldrb r1, [r0, #0x1c] - cmp r1, sb - blt _022E41EC - add sp, sp, #0x24c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E4328: .word ov00_02326F34 -_022E432C: .word Dwci_GpProfileSearchCallback - arm_func_end Dwci_UpdateFriendReq - - arm_func_start Dwci_EndUpdateServers -Dwci_EndUpdateServers: ; 0x022E4330 - stmdb sp!, {r3, lr} - ldr r1, _022E4364 ; =ov00_02326F34 - mov r0, #0 - ldr r3, [r1, #0xc] - ldrb r1, [r3, #0x1d] - ldr r2, [r3, #0x30] - ldr r3, [r3, #0x2c] - blx r3 - ldr r0, _022E4364 ; =ov00_02326F34 - mov r1, #2 - ldr r0, [r0, #0xc] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E4364: .word ov00_02326F34 - arm_func_end Dwci_EndUpdateServers - - arm_func_start Dwci_DeleteFriendFromList -Dwci_DeleteFriendFromList: ; 0x022E4368 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _022E43BC ; =ov00_02326F34 - mov r5, r1 - ldr r1, [r3, #0xc] - mov r4, r2 - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r2, #0xc - mla r0, r5, r2, r0 - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _022E43BC ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r3, [r0, #0x3c] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r0, #0x40] - mov r0, r5 - mov r1, r4 - blx r3 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E43BC: .word ov00_02326F34 - arm_func_end Dwci_DeleteFriendFromList - - arm_func_start Dwci_RefreshFriendListForth -Dwci_RefreshFriendListForth: ; 0x022E43C0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r1, #0xc - mul r4, r7, r1 - mov r8, r0 - add r0, r8, r4 - mov r6, r2 - bl Dwc_GetFriendDataType - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r7, #0 - mov r5, #0 - ble _022E4478 -_022E43F8: - mov r0, r5 - bl Dwci_GetProfileIdFromList - cmp r0, #0 - beq _022E446C - cmp r0, r6 - bne _022E446C - add r0, r8, r4 - bl Dwci_IsBuddyFriendData - cmp r0, #0 - beq _022E4448 - mov r0, #0xc - mla r0, r5, r0, r8 - bl Dwci_IsBuddyFriendData - cmp r0, #0 - bne _022E4448 - mov r0, r8 - mov r1, r5 - mov r2, r7 - bl Dwci_DeleteFriendFromList - b _022E4458 -_022E4448: - mov r0, r8 - mov r1, r7 - mov r2, r5 - bl Dwci_DeleteFriendFromList -_022E4458: - ldr r1, _022E4480 ; =ov00_02326F34 - mov r0, #1 - ldr r1, [r1, #0xc] - strb r0, [r1, #0x1d] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E446C: - add r5, r5, #1 - cmp r5, r7 - blt _022E43F8 -_022E4478: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E4480: .word ov00_02326F34 - arm_func_end Dwci_RefreshFriendListForth - - arm_func_start Dwci_RefreshFriendListAll -Dwci_RefreshFriendListAll: ; 0x022E4484 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov fp, r1 - str r0, [sp] - mvn r0, #0 - str r2, [sp, #4] - cmp fp, #0 - str r0, [sp, #0xc] - mov r6, #0 - ble _022E45C0 - ldr r0, [sp] - mov sb, r6 - str r0, [sp, #8] - mov r8, r0 -_022E44BC: - mov r0, r6 - bl Dwci_GetProfileIdFromList - movs r5, r0 - beq _022E45A0 - ldr r0, [sp, #4] - add r7, r6, #1 - cmp r5, r0 - streq r6, [sp, #0xc] - cmp r7, fp - bge _022E45A0 - ldr r0, [sp] - mov r1, #0xc - mla sl, r7, r1, r0 - ldr r4, _022E45CC ; =ov00_02326F34 -_022E44F4: - mov r0, r7 - bl Dwci_GetProfileIdFromList - cmp r5, r0 - bne _022E4590 - ldr r0, [sp, #8] - bl Dwc_GetFriendDataType - cmp r0, #2 - bne _022E4530 - mov r0, sl - bl Dwc_GetFriendDataType - cmp r0, #3 - bne _022E4530 - mov r0, r8 - mov r1, r5 - bl Dwc_SetGsProfileId -_022E4530: - mov r0, sl - bl Dwci_IsBuddyFriendData - cmp r0, #0 - beq _022E4574 - mov r0, r8 - bl Dwci_SetBuddyFriendData - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4574 - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwci_SetExpIsBuddyFriendFlag -_022E4574: - ldr r0, [sp] - mov r1, r7 - mov r2, r6 - bl Dwci_DeleteFriendFromList - ldr r1, [r4, #0xc] - mov r0, #1 - strb r0, [r1, #0x1d] -_022E4590: - add sl, sl, #0xc - add r7, r7, #1 - cmp r7, fp - blt _022E44F4 -_022E45A0: - ldr r0, [sp, #8] - add r6, r6, #1 - add r0, r0, #0xc - cmp r6, fp - str r0, [sp, #8] - add r8, r8, #0xc - add sb, sb, #0xc - blt _022E44BC -_022E45C0: - ldr r0, [sp, #0xc] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E45CC: .word ov00_02326F34 - arm_func_end Dwci_RefreshFriendListAll - - arm_func_start Dwci_GpSendBuddyRequest -Dwci_GpSendBuddyRequest: ; 0x022E45D0 - stmdb sp!, {r4, lr} - ldr r2, _022E45FC ; =ov00_02326F34 - mov r1, r0 - ldr r0, [r2, #0xc] - ldr r2, _022E4600 ; =ov00_0231A1AC - ldr r0, [r0, #4] - bl GpSendBuddyRequestA - mov r4, r0 - bl Dwci_HandleGpError_Friend - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E45FC: .word ov00_02326F34 -_022E4600: .word ov00_0231A1AC - arm_func_end Dwci_GpSendBuddyRequest - - arm_func_start Dwci_GetFriendBuddyStatus -Dwci_GetFriendBuddyStatus: ; 0x022E4604 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _022E46BC ; =ov00_02326F34 - mov r3, #0 - ldr r2, [r2, #0xc] - mov r5, r0 - mov r4, r1 - str r3, [sp] - cmp r2, #0 - beq _022E4634 - bl Dwci_CheckLogin - cmp r0, #0 - bne _022E463C -_022E4634: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E463C: - bl Dwci_GetUserData - mov r1, r5 - bl Dwc_GetGsProfileId - mov r5, r0 - cmp r5, #0 - ble _022E4678 - ldr r0, _022E46BC ; =ov00_02326F34 - add r2, sp, #0 - ldr r0, [r0, #0xc] - mov r1, r5 - ldr r0, [r0, #4] - bl GpGetBuddyIndex - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_022E4678: - cmp r5, #0 - ble _022E4690 - ldr r1, [sp] - mvn r0, #0 - cmp r1, r0 - bne _022E4698 -_022E4690: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E4698: - ldr r0, _022E46BC ; =ov00_02326F34 - mov r2, r4 - ldr r0, [r0, #0xc] - ldr r0, [r0, #4] - bl GpGetBuddyStatus - cmp r0, #0 - movne r0, #0 - moveq r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E46BC: .word ov00_02326F34 - arm_func_end Dwci_GetFriendBuddyStatus - - arm_func_start Dwci_HandleGpError_Friend -Dwci_HandleGpError_Friend: ; 0x022E46C0 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _022E471C -_022E46DC: ; jump table - b _022E471C ; case 0 - b _022E46F0 ; case 1 - b _022E46FC ; case 2 - b _022E4708 ; case 3 - b _022E4714 ; case 4 -_022E46F0: - mov r0, #9 - sub r2, r0, #0xa - b _022E471C -_022E46FC: - mov r0, #9 - sub r2, r0, #0xb - b _022E471C -_022E4708: - mov r0, #6 - sub r2, r0, #0x10 - b _022E471C -_022E4714: - mov r0, #6 - sub r2, r0, #0x1a -_022E471C: - ldr r1, _022E4730 ; =0xFFFEEAA8 - add r1, r2, r1 - bl Dwci_StopFriendProcess - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4730: .word 0xFFFEEAA8 - arm_func_end Dwci_HandleGpError_Friend - - arm_func_start Dwci_GpProfileSearchCallback -Dwci_GpProfileSearchCallback: ; 0x022E4734 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - ldr r1, [sb] - mov sl, r0 - mov r8, r2 - cmp r1, #0 - bne _022E496C - ldr r0, [sb, #4] - cmp r0, #0 - beq _022E496C - mov r0, #0xc - ldr r1, _022E49D4 ; =ov00_02326F34 - mul r6, r8, r0 - ldr r0, [r1, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwc_GetFriendDataType - cmp r0, #0 - beq _022E496C - ldr r7, _022E49D4 ; =ov00_02326F34 - ldr r0, [r7, #0xc] - ldr r0, [r0] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sb, #4] - mov r4, #0 - cmp r0, #0 - ble _022E4808 - mov r5, r4 -_022E47A8: - ldr r0, [r7, #0xc] - ldr r1, [sb, #0xc] - ldr r0, [r0, #0x18] - ldr r2, [r1, r5] - mov r1, r8 - bl Dwci_RefreshFriendListForth - cmp r0, #0 - beq _022E47F4 - ldr r0, _022E49D4 ; =ov00_02326F34 - mov r2, #1 - ldr r4, [r0, #0xc] - add r1, r2, #0x600 - ldrb r3, [r4, #0x1c] - add r3, r3, #1 - strb r3, [r4, #0x1c] - ldr r0, [r0, #0xc] - strb r2, [r0, #0x1e] - str r1, [sb, #8] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E47F4: - ldr r0, [sb, #4] - add r4, r4, #1 - cmp r4, r0 - add r5, r5, #0xac - blt _022E47A8 -_022E4808: - cmp r0, #0 - mov r7, #0 - ble _022E493C - ldr fp, _022E49D4 ; =ov00_02326F34 - mov r5, r7 - mvn r4, #0 -_022E4820: - ldr r1, [sb, #0xc] - mov r0, sl - ldr r1, [r1, r5] - add r2, sp, #0 - bl GpGetBuddyIndex - bl Dwci_HandleGpError_Friend - ldr r0, [sp] - cmp r0, r4 - bne _022E4868 - ldr r0, [sb, #0xc] - ldr r0, [r0, r5] - bl Dwci_GpSendBuddyRequest - ldr r0, [fp, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_SetSentBuddyReqFlag - b _022E4928 -_022E4868: - mov r0, #0xc - ldr r1, _022E49D4 ; =ov00_02326F34 - mul r4, r8, r0 - ldr r1, [r1, #0xc] - ldr r0, [sb, #0xc] - ldr r2, [r1, #0x18] - ldr r1, [r0] - add r0, r2, r4 - bl Dwc_SetGsProfileId - ldr r0, _022E49D4 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r4 - bl Dwci_SetBuddyFriendData - ldr r0, _022E49D4 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r4 - bl Dwci_SetReverseBuddyFlag - ldr r0, _022E49D4 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r4 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E48EC - ldr r0, _022E49D4 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_SetExpIsBuddyFriendFlag -_022E48EC: - mov r0, r8 - bl Dwci_GetGpStatus - ldr r0, _022E49D4 ; =ov00_02326F34 - mov r3, #1 - ldr r4, [r0, #0xc] - add r1, r3, #0x600 - ldrb r2, [r4, #0x1c] - add r2, r2, #1 - strb r2, [r4, #0x1c] - ldr r2, [r0, #0xc] - strb r3, [r2, #0x1e] - str r1, [sb, #8] - ldr r0, [r0, #0xc] - strb r3, [r0, #0x1d] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E4928: - ldr r0, [sb, #4] - add r7, r7, #1 - cmp r7, r0 - add r5, r5, #0xac - blt _022E4820 -_022E493C: - ldr r0, [sb, #8] - cmp r0, #0x600 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022E49D4 ; =ov00_02326F34 - mov r1, #1 - ldr r3, [r0, #0xc] - ldrb r2, [r3, #0x1c] - add r2, r2, #1 - strb r2, [r3, #0x1c] - ldr r0, [r0, #0xc] - strb r1, [r0, #0x1e] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E496C: - ldr r0, [sb] - cmp r0, #0 - beq _022E4984 - bl Dwci_HandleGpError_Friend - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E4984: - ldr r0, _022E49D4 ; =ov00_02326F34 - ldr r1, [r0, #0xc] - ldr r0, [r1] - cmp r0, #1 - beq _022E49B0 - ldr r1, [r1, #0x18] - mov r0, #0xc - mla r0, r8, r0, r1 - bl Dwc_GetFriendDataType - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E49B0: - ldr r0, _022E49D4 ; =ov00_02326F34 - mov r1, #1 - ldr r3, [r0, #0xc] - ldrb r2, [r3, #0x1c] - add r2, r2, #1 - strb r2, [r3, #0x1c] - ldr r0, [r0, #0xc] - strb r1, [r0, #0x1e] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E49D4: .word ov00_02326F34 - arm_func_end Dwci_GpProfileSearchCallback - - arm_func_start Dwci_GpGetInfoCallback_RecvBuddyRequest -Dwci_GpGetInfoCallback_RecvBuddyRequest: ; 0x022E49D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov sb, r1 - ldr r1, [sb] - mov sl, r0 - cmp r1, #0 - mov r6, #0 - addne sp, sp, #0x28 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _022E4C00 ; =ov00_02326F34 - mov r5, r6 - ldr r1, [r4, #0xc] - ldr r0, [r1, #0x14] - cmp r0, #0 - ble _022E4BD4 - mov r7, r6 - add fp, sp, #0x11 -_022E4A1C: - ldr r0, [r1, #0x18] - add r0, r0, r7 - bl Dwc_GetFriendDataType - cmp r0, #1 - bne _022E4AC4 - bl Dwci_GetUserData - ldr r1, [r4, #0xc] - mov r2, fp - ldr r1, [r1, #0x18] - add r1, r1, r7 - bl Dwc_LoginIdToUserName - mov r0, fp - add r1, sb, #0x8e - bl strcmp - cmp r0, #0 - bne _022E4BBC - ldr r1, [sb, #4] - mov r0, sl - bl GpAuthBuddyRequest - ldr r0, [r4, #0xc] - ldr r1, [sb, #4] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwc_SetGsProfileId - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwci_SetReverseBuddyFlag - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4ABC - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwci_SetExpIsBuddyFriendFlag -_022E4ABC: - mov r6, #1 - b _022E4BBC -_022E4AC4: - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwc_GetFriendDataType - cmp r0, #3 - beq _022E4AF4 - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwc_GetFriendDataType - cmp r0, #2 - bne _022E4BBC -_022E4AF4: - bl Dwci_GetUserData - ldr r1, [r0, #0x24] - add r0, sp, #0xc - mov r2, r1, lsr #0x10 - and r2, r2, #0xff - str r2, [sp] - mov r2, r1, lsr #8 - and r2, r2, #0xff - str r2, [sp, #4] - and r2, r1, #0xff - str r2, [sp, #8] - mov r1, r1, lsr #0x18 - and r3, r1, #0xff - ldr r2, _022E4C04 ; =ov00_0231A1B0 - mov r1, #5 - bl OS_SnPrintf - ldr r8, [sb, #4] - bl Dwci_GetUserData - ldr r1, [r4, #0xc] - ldr r1, [r1, #0x18] - add r1, r1, r7 - bl Dwc_GetGsProfileId - cmp r8, r0 - bne _022E4BBC - add r0, sp, #0xc - add r1, sb, #0x97 - mov r2, #4 - bl memcmp - cmp r0, #0 - bne _022E4BBC - mov r1, r8 - mov r0, sl - bl GpAuthBuddyRequest - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwci_SetReverseBuddyFlag - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4BB8 - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, r7 - bl Dwci_SetExpIsBuddyFriendFlag -_022E4BB8: - mov r6, #1 -_022E4BBC: - add r7, r7, #0xc - add r5, r5, #1 - ldr r1, [r4, #0xc] - ldr r0, [r1, #0x14] - cmp r5, r0 - blt _022E4A1C -_022E4BD4: - cmp r6, #0 - beq _022E4BEC - ldr r0, [sb, #4] - bl Dwci_GpSendBuddyRequest - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E4BEC: - ldr r1, [sb, #4] - mov r0, sl - bl GpDenyBuddyRequest - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E4C00: .word ov00_02326F34 -_022E4C04: .word ov00_0231A1B0 - arm_func_end Dwci_GpGetInfoCallback_RecvBuddyRequest - - arm_func_start Dwci_GpGetInfoCallback_RecvAuthMessage -Dwci_GpGetInfoCallback_RecvAuthMessage: ; 0x022E4C08 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r1 - ldr r0, [sl] - mov r7, #0 - cmp r0, #0 - mov r8, r7 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _022E4E58 ; =ov00_02326F34 - mov r6, r7 - ldr r0, [r4, #0xc] - ldr r1, [r0, #0x14] - cmp r1, #0 - ble _022E4DC0 - mov sb, r7 - mov fp, #1 - add r5, sp, #0 -_022E4C50: - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_GetFriendDataType - cmp r0, #1 - bne _022E4CE8 - bl Dwci_GetUserData - ldr r1, [r4, #0xc] - mov r2, r5 - ldr r1, [r1, #0x18] - add r1, r1, sb - bl Dwc_LoginIdToUserName - mov r0, r5 - add r1, sl, #0x8e - bl strcmp - cmp r0, #0 - bne _022E4DA8 - ldr r0, [r4, #0xc] - ldr r1, [sl, #4] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_SetGsProfileId - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwci_SetBuddyFriendData - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4CE0 - ldr r0, [r4, #0xc] - mov r1, fp - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwci_SetExpIsBuddyFriendFlag -_022E4CE0: - mov r7, #1 - b _022E4DA8 -_022E4CE8: - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_GetFriendDataType - cmp r0, #3 - beq _022E4D18 - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_GetFriendDataType - cmp r0, #2 - bne _022E4DA8 -_022E4D18: - bl Dwci_GetUserData - ldr r1, [r4, #0xc] - ldr r1, [r1, #0x18] - add r1, r1, sb - bl Dwc_GetGsProfileId - ldr r1, [sl, #4] - cmp r1, r0 - bne _022E4DA8 - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwci_IsBuddyFriendData - cmp r0, #1 - moveq r8, #1 - beq _022E4DA8 - ldr r0, [r4, #0xc] - ldr r1, [sl, #4] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_SetGsProfileId - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwci_SetBuddyFriendData - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4DA4 - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, sb - bl Dwci_SetExpIsBuddyFriendFlag -_022E4DA4: - mov r7, #1 -_022E4DA8: - ldr r0, [r4, #0xc] - add r6, r6, #1 - add sb, sb, #0xc - ldr r1, [r0, #0x14] - cmp r6, r1 - blt _022E4C50 -_022E4DC0: - cmp r7, #0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r0, #0x18] - ldr r2, [sl, #4] - bl Dwci_RefreshFriendListAll - mov r4, r0 - cmp r8, #0 - bne _022E4E40 - mov r0, #0xc - ldr r1, _022E4E58 ; =ov00_02326F34 - mul r5, r4, r0 - ldr r0, [r1, #0xc] - mov r1, #1 - ldr r0, [r0, #0x18] - add r0, r0, r5 - bl Dwci_SetReverseBuddyFlag - ldr r0, _022E4E58 ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r5 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4E38 - ldr r0, _022E4E58 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r5 - bl Dwci_SetExpIsBuddyFriendFlag -_022E4E38: - mov r0, r4 - bl Dwci_GetGpStatus -_022E4E40: - ldr r0, _022E4E58 ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - strb r1, [r0, #0x1d] - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E4E58: .word ov00_02326F34 - arm_func_end Dwci_GpGetInfoCallback_RecvAuthMessage - - arm_func_start Dwci_GetPersCallbackLevel -Dwci_GetPersCallbackLevel: ; 0x022E4E5C - ldr r0, _022E4E6C ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x20] - bx lr - .align 2, 0 -_022E4E6C: .word ov00_02326F34 - arm_func_end Dwci_GetPersCallbackLevel - - arm_func_start Dwci_BeginCloseStatsConnection -Dwci_BeginCloseStatsConnection: ; 0x022E4E70 - ldr r0, _022E4E80 ; =ov00_02326F34 - mov r1, #1 - str r1, [r0, #0x10] - bx lr - .align 2, 0 -_022E4E80: .word ov00_02326F34 - arm_func_end Dwci_BeginCloseStatsConnection - - arm_func_start Dwci_EndCloseStatsConnection -Dwci_EndCloseStatsConnection: ; 0x022E4E84 - ldr r0, _022E4E94 ; =ov00_02326F34 - mov r1, #0 - str r1, [r0, #0x10] - bx lr - .align 2, 0 -_022E4E94: .word ov00_02326F34 - arm_func_end Dwci_EndCloseStatsConnection - - arm_func_start Dwci_GetReverseBuddiesCallback -Dwci_GetReverseBuddiesCallback: ; 0x022E4E98 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _022E507C ; =ov00_02326F34 - mov r8, r1 - ldr r0, [r0, #0xc] - ldr r1, [r0, #0x5c] - cmp r1, #0 - beq _022E4ED0 - mov r0, #4 - mov r2, #0 - bl Dwc_Free - ldr r0, _022E507C ; =ov00_02326F34 - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #0x5c] -_022E4ED0: - ldr r0, [r8] - cmp r0, #0 - beq _022E4EE4 - bl Dwci_EndUpdateServers - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E4EE4: - ldr r0, _022E507C ; =ov00_02326F34 - mov r4, #0 - ldr r1, [r0, #0xc] - ldr r0, [r1, #0x14] - cmp r0, #0 - ble _022E5074 - mov r6, r4 -_022E4F00: - ldr r0, [r1, #0x18] - add r0, r0, r6 - bl Dwc_GetFriendDataType - cmp r0, #3 - bne _022E5058 - ldr r0, [r8, #4] - mov r5, #0 - cmp r0, #0 - ble _022E4FD8 - ldr sb, _022E507C ; =ov00_02326F34 - mov r7, r5 -_022E4F2C: - bl Dwci_GetUserData - ldr r1, [sb, #0xc] - ldr r1, [r1, #0x18] - add r1, r1, r6 - bl Dwc_GetGsProfileId - ldr r1, [r8, #8] - ldr r1, [r1, r7] - cmp r1, r0 - bne _022E4FC4 - ldr r0, _022E507C ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_IsReverseBuddyFriendData - cmp r0, #0 - bne _022E4FD8 - ldr r0, _022E507C ; =ov00_02326F34 - mov r1, #1 - ldr r2, [r0, #0xc] - strb r1, [r2, #0x1d] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_SetReverseBuddyFlag - ldr r0, _022E507C ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E4FD8 - ldr r0, _022E507C ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_SetExpIsBuddyFriendFlag - b _022E4FD8 -_022E4FC4: - ldr r0, [r8, #4] - add r5, r5, #1 - cmp r5, r0 - add r7, r7, #0x1c - blt _022E4F2C -_022E4FD8: - ldr r0, [r8, #4] - cmp r5, r0 - bne _022E5024 - ldr r0, _022E507C ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_IsReverseBuddyFriendData - cmp r0, #1 - bne _022E5024 - ldr r0, _022E507C ; =ov00_02326F34 - mov r3, #1 - ldr r2, [r0, #0xc] - mov r1, #0 - strb r3, [r2, #0x1d] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_SetReverseBuddyFlag -_022E5024: - ldr r0, _022E507C ; =ov00_02326F34 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwc_IsBuddyFriendData - cmp r0, #0 - beq _022E5058 - ldr r0, _022E507C ; =ov00_02326F34 - mov r1, #1 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x18] - add r0, r0, r6 - bl Dwci_SetExpIsBuddyFriendFlag -_022E5058: - ldr r0, _022E507C ; =ov00_02326F34 - add r4, r4, #1 - ldr r1, [r0, #0xc] - add r6, r6, #0xc - ldr r0, [r1, #0x14] - cmp r4, r0 - blt _022E4F00 -_022E5074: - bl Dwci_EndUpdateServers - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E507C: .word ov00_02326F34 - arm_func_end Dwci_GetReverseBuddiesCallback - - arm_func_start Dwci_NnFreeNegotiateList -Dwci_NnFreeNegotiateList: ; 0x022E5080 - stmdb sp!, {r3, lr} - ldr r0, _022E50A4 ; =ov00_02326F48 - ldr r1, [r0, #0x10] - cmp r1, #0 - movne r1, #1 - strne r1, [r0, #0xc] - ldmneia sp!, {r3, pc} - bl NnFreeNegotiateList - ldmia sp!, {r3, pc} - .align 2, 0 -_022E50A4: .word ov00_02326F48 - arm_func_end Dwci_NnFreeNegotiateList - - arm_func_start Dwci_MatchInit -Dwci_MatchInit: ; 0x022E50A8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl Dwci_SetMatchCnt - bl Dwci_GetMatchCnt - str r6, [r0] - bl Dwci_GetMatchCnt - str r5, [r0, #4] - bl Dwci_GetMatchCnt - str r4, [r0, #8] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x10] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c] - bl Dwci_GetMatchCnt - mov r1, #0 - strh r1, [r0, #0x1a] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0xe4] - mov r0, r1 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xf] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x19] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1af] - bl Dwci_GetMatchCnt - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb6] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1dc] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x200] - bl Dwci_GetMatchCnt - ldr r1, [sp, #0x10] - str r1, [r0, #0x2f4] - bl Dwci_GetMatchCnt - ldr r1, [sp, #0x14] - str r1, [r0, #0x2f8] - bl Dwci_GetMatchCnt - ldr r1, [sp, #0x18] - str r1, [r0, #0x2fc] - bl Dwci_GetMatchCnt - ldr r1, [sp, #0x1c] - str r1, [r0, #0x300] - bl Dwci_GetMatchCnt - add r0, r0, #0x304 - mov r1, #0 - mov r2, #0x40 - bl MI_CpuFill8 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x344] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x464] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x468] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x474] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x478] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x47c] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x480] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x174] - str r1, [r0, #0x178] - bl Dwci_ClearGameMatchKeys - ldr r1, _022E5220 ; =ov00_02326F48 - mov r0, #0 - strb r0, [r1, #0x1c] - strb r0, [r1, #0x1d] - strh r0, [r1, #0x1e] - bl Dwci_ResetMatchParam - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E5220: .word ov00_02326F48 - arm_func_end Dwci_MatchInit - - arm_func_start Dwci_QR2Startup -Dwci_QR2Startup: ; 0x022E5224 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl Dwci_GetMatchCnt - str r4, [r0, #0x200] - ldr r4, _022E539C ; =Dwci_QR2ServerKeyCallback - ldr fp, _022E53A0 ; =Dwci_QR2PlayerKeyCallback - mov sl, #0 - mov r5, #1 -_022E5260: - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2GetSocketSocket - mov r8, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2GetLocalPort - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldr r3, [r0, #0x2f8] - mov r1, r8 - stmia sp, {r3, r5} - str r5, [sp, #8] - str r4, [sp, #0xc] - ldr r3, _022E53A4 ; =Dwci_QR2TeamKeyCallback - str fp, [sp, #0x10] - str r3, [sp, #0x14] - ldr r3, _022E53A8 ; =Dwci_QR2KeyListCallback - mov r2, r7 - str r3, [sp, #0x18] - ldr r3, _022E53AC ; =Dwci_QR2CountCallback - add r0, sb, #0x10 - str r3, [sp, #0x1c] - ldr r3, _022E53B0 ; =Dwci_QR2AddErrorCallback - str r3, [sp, #0x20] - mov r3, #0 - str r3, [sp, #0x24] - ldr r3, [r6, #0x2f4] - bl qr2_init_socketa - movs r6, r0 - beq _022E533C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_shutdown - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x10] - cmp r6, #3 - bne _022E531C - cmp sl, #4 - bne _022E5330 -_022E531C: - mov r0, r6 - bl Dwci_HandleQR2Error - add sp, sp, #0x28 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E5330: - add sl, sl, #1 - cmp sl, #5 - blt _022E5260 -_022E533C: - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c] - bl Dwci_GetMatchCnt - mov r1, #0 - strh r1, [r0, #0x1a] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - ldr r1, _022E53B4 ; =Dwci_QR2PublicAddrCallback - bl qr2_register_publicaddress_callback - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - ldr r1, _022E53B8 ; =Dwci_QR2NatnegCallback - bl qr2_register_natneg_callback - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - ldr r1, _022E53BC ; =Dwci_QR2ClientMsgCallback - bl qr2_register_clientmessage_callback - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - mov r0, r6 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E539C: .word Dwci_QR2ServerKeyCallback -_022E53A0: .word Dwci_QR2PlayerKeyCallback -_022E53A4: .word Dwci_QR2TeamKeyCallback -_022E53A8: .word Dwci_QR2KeyListCallback -_022E53AC: .word Dwci_QR2CountCallback -_022E53B0: .word Dwci_QR2AddErrorCallback -_022E53B4: .word Dwci_QR2PublicAddrCallback -_022E53B8: .word Dwci_QR2NatnegCallback -_022E53BC: .word Dwci_QR2ClientMsgCallback - arm_func_end Dwci_QR2Startup - - arm_func_start Dwci_SendStateChanged -Dwci_SendStateChanged: ; 0x022E53C0 - stmdb sp!, {r4, lr} - movs r4, r0 - ldmeqia sp!, {r4, pc} - bl qr2_think - ldr r0, [r4, #0xb4] - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - cmpne r0, #1 - beq _022E53FC - cmp r0, #2 - beq _022E5450 - ldmia sp!, {r4, pc} -_022E53FC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - ldmia sp!, {r4, pc} -_022E5410: ; jump table - ldmia sp!, {r4, pc} ; case 0 - b _022E5440 ; case 1 - b _022E5440 ; case 2 - b _022E5440 ; case 3 - b _022E5440 ; case 4 - ldmia sp!, {r4, pc} ; case 5 - b _022E5440 ; case 6 - ldmia sp!, {r4, pc} ; case 7 - ldmia sp!, {r4, pc} ; case 8 - ldmia sp!, {r4, pc} ; case 9 - ldmia sp!, {r4, pc} ; case 10 - b _022E5440 ; case 11 -_022E5440: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - ldmia sp!, {r4, pc} -_022E5450: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - ldmneia sp!, {r4, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - ldmia sp!, {r4, pc} - arm_func_end Dwci_SendStateChanged - - arm_func_start Dwci_MatchProcess -Dwci_MatchProcess: ; 0x022E5470 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r4, r0 - bl Dwci_GetMatchCnt - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_IsError - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - bne _022E54EC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022E54C0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_think -_022E54C0: - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2Think - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E54EC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _022E5C18 -_022E5514: ; jump table - b _022E5C18 ; case 0 - b _022E5B20 ; case 1 - b _022E56C8 ; case 2 - b _022E56C8 ; case 3 - b _022E554C ; case 4 - b _022E56C8 ; case 5 - b _022E5C18 ; case 6 - b _022E5788 ; case 7 - b _022E5C18 ; case 8 - b _022E5C18 ; case 9 - b _022E5C18 ; case 10 - b _022E590C ; case 11 - b _022E5C18 ; case 12 - b _022E5A00 ; case 13 -_022E554C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1c8] - cmp r0, #0 - beq _022E5638 - bl OS_GetTick - mov r6, r0 - mov r7, r1 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - ldr r1, [r5, #0x1cc] - ldr r0, [r5, #0x1d0] - subs r2, r6, r1 - sbc r0, r7, r0 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - ldr r1, [r4, #0x1c8] - cmpeq r0, r1 - bls _022E5638 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E5624 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1aa] - add r1, r1, #1 - strb r1, [r0, #0x1aa] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1aa] - cmp r0, #5 - bls _022E5600 - ldr r1, _022E5EE4 ; =0xFFFEC5D2 - mov r0, #6 - bl Dwci_StopMatching - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5600: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - mov r1, #0 - bl Dwci_SendResvCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E5638 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5624: - mov r0, #0 - bl Dwci_RetryReserving - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022E5638: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1bc] - cmp r0, #0 - beq _022E5C18 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - ldr r0, _022E5EE8 ; =0x00000BB8 - mul r0, r1, r0 - add r0, r0, #0x3b8 - add r5, r0, #0x800 - bl OS_GetTick - mov r4, r0 - mov r6, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1c0] - ldr r0, [r0, #0x1c4] - subs r2, r4, r1 - sbc r0, r6, r0 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r5 - blo _022E5C18 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - mov r1, #0 - bl Dwci_SendResvCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E56C8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe8] - cmp r0, #0 - ble _022E5C18 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #3 - bne _022E5704 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - ldr r0, _022E5EE8 ; =0x00000BB8 - mul r0, r1, r0 - add r0, r0, #0x3b8 - add r5, r0, #0x800 - b _022E5718 -_022E5704: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe8] - cmp r0, #1 - moveq r5, #0x3e8 - ldrne r5, _022E5EE8 ; =0x00000BB8 -_022E5718: - bl OS_GetTick - mov r4, r0 - mov r6, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0xec] - ldr r0, [r0, #0xf0] - subs r3, r4, r1 - sbc r0, r6, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - cmp r1, #0 - cmpeq r0, r5 - bls _022E5C18 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - bl Dwci_SbUpdateAsync - bl Dwci_HandleSbError_Match - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0xe8] - b _022E5C18 -_022E5788: - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x190] - ldr r0, [r0, #0x18c] - cmp r1, #0 - cmpeq r0, #0 - beq _022E5814 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x18c] - ldr r0, [r0, #0x190] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EEC ; =0x000061A8 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5C18 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedClientProcess - cmp r0, #0 - bne _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5814: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x3cc] - cmp r0, #6 - bne _022E5C18 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EF0 ; =0x00001770 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5C18 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x3cd] - add r1, r1, #1 - strb r1, [r0, #0x3cd] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x3cd] - cmp r0, #5 - bls _022E58AC - bl Dwci_StopResendingMatchCommand - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedClientProcess - cmp r0, #0 - bne _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E58AC: - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - add r1, r4, #0x3d4 - str r1, [sp] - add r3, r5, #0x300 - ldr r1, [r0, #0x458] - mov r0, #6 - str r1, [sp, #4] - ldr r1, [r7, #0x454] - ldr r2, [r6, #0x3d0] - ldrh r3, [r3, #0xce] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E590C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x3cc] - cmp r0, #2 - bne _022E5C18 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E5974 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EF0 ; =0x00001770 - cmp r1, #0 - cmpeq r0, r2 - bhi _022E59CC -_022E5974: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E5C18 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EF4 ; =0x00004A38 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5C18 -_022E59CC: - bl Dwci_StopResendingMatchCommand - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - cmp r0, #0 - bne _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5A00: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x3cc] - cmp r0, #8 - bne _022E5C18 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x45c] - ldr r0, [r0, #0x460] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EF8 ; =0x00007530 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5C18 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x3cd] - add r1, r1, #1 - strb r1, [r0, #0x3cd] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x3cd] - cmp r0, #0 - beq _022E5AC0 - bl Dwci_StopResendingMatchCommand - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022E5AB8 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - cmp r0, #0 - bne _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5AB8: - bl Dwci_RestartFromTimeout - b _022E5C18 -_022E5AC0: - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - add r1, r4, #0x3d4 - str r1, [sp] - add r3, r5, #0x300 - ldr r1, [r0, #0x458] - mov r0, #8 - str r1, [sp, #4] - ldr r1, [r7, #0x454] - ldr r2, [r6, #0x3d0] - ldrh r3, [r3, #0xce] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5B20: - bl Dwc_GetState - cmp r0, #5 - bne _022E5C18 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1f8] - ldr r0, [r0, #0x1fc] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EF8 ; =0x00007530 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5C18 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1ad] - cmp r0, #5 - blo _022E5BA0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedClientProcess - cmp r0, #0 - bne _022E5C18 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E5BA0: - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldrh r3, [r0, #0xa4] - ldr r1, [r5, #0xf4] - ldr r2, [r4, #0x24] - mov r0, #0x40 - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1ad] - add r1, r1, #1 - strb r1, [r0, #0x1ad] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - ldr r2, _022E5EFC ; =0xFF403B3A - mvn r3, #0 - adds r0, r0, r2 - str r0, [r4, #0x1f8] - adc r0, r1, r3 - str r0, [r4, #0x1fc] -_022E5C18: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - beq _022E5C38 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #6 - bne _022E5CB0 -_022E5C38: - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x188] - ldr r0, [r0, #0x184] - cmp r1, #0 - cmpeq r0, #0 - beq _022E5CB0 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x184] - ldr r0, [r0, #0x188] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5F00 ; =0x00002710 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5CB0 - bl Dwci_GetMatchCnt - mov r1, #0 - add r3, r0, #0x194 - mov r2, r1 - mov r0, #1 - bl Dwci_NnCompletedCallback -_022E5CB0: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _022E5D70 - ldr r0, _022E5F04 ; =ov00_02326F48 - mov r1, #0 - str r1, [r0, #0x18] - str r1, [r0, #0x14] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserThink - ldr r0, _022E5F04 ; =ov00_02326F48 - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022E5D04 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserFree - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0xe4] -_022E5D04: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _022E5D70 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserState - cmp r0, #0 - beq _022E5D70 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x178] - ldr r0, [r0, #0x174] - cmp r1, #0 - cmpeq r0, #0 - beq _022E5D70 - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x178] - ldr r0, [r0, #0x174] - cmp r5, r1 - cmpeq r4, r0 - bls _022E5D70 - ldr r1, _022E5F08 ; =0xFFFEB3EE - mov r0, #6 - bl Dwci_StopMatching -_022E5D70: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl Dwci_SendStateChanged - ldr r0, _022E5F04 ; =ov00_02326F48 - mov r1, #0 - str r1, [r0, #0xc] - mov r1, #1 - str r1, [r0, #0x10] - bl NnThink - ldr r0, _022E5F04 ; =ov00_02326F48 - mov r2, #0 - str r2, [r0, #0x10] - ldr r1, [r0, #0xc] - cmp r1, #1 - bne _022E5DB4 - str r2, [r0, #0xc] - bl NnFreeNegotiateList -_022E5DB4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - cmp r0, #0 - beq _022E5DD4 - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2Think -_022E5DD4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x12 - bne _022E5E3C - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1f0] - ldr r0, [r0, #0x1f4] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022E5EE0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022E5EE8 ; =0x00000BB8 - cmp r1, #0 - cmpeq r0, r2 - bls _022E5E3C - bl Dwci_ResumeMatching - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022E5E3C: - bl Dwci_ProcessMatchSynTimeout - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_ProcessCancelMatchSynTimeout - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_ProcessOptMinComp - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1ae] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xa - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x16] - bl Dwci_GpSetServerStatus - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ae] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x47c] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x480] - ldr r1, [r4, #0x47c] - blx r1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E5EE0: .word 0x000082EA -_022E5EE4: .word 0xFFFEC5D2 -_022E5EE8: .word 0x00000BB8 -_022E5EEC: .word 0x000061A8 -_022E5EF0: .word 0x00001770 -_022E5EF4: .word 0x00004A38 -_022E5EF8: .word 0x00007530 -_022E5EFC: .word 0xFF403B3A -_022E5F00: .word 0x00002710 -_022E5F04: .word ov00_02326F48 -_022E5F08: .word 0xFFFEB3EE - arm_func_end Dwci_MatchProcess - - arm_func_start Dwci_GT2UnrecognizedMessageCallback -Dwci_GT2UnrecognizedMessageCallback: ; 0x022E5F0C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r0, [sp, #0x18] - mov r4, r3 - cmp r0, #0 - cmpne r4, #0 - mov r5, r1 - mov r6, r2 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r1, sp, #0 - mov r0, #0 - mov r2, #8 - bl MTi_CpuClear32 - mov r1, r6, asr #8 - mov r0, r6, lsl #8 - mov r2, #2 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strb r2, [sp, #1] - strh r0, [sp, #2] - str r5, [sp, #4] - ldrb r5, [r4] - cmp r5, #0xfe - ldreqb r0, [r4, #1] - cmpeq r0, #0xfd - beq _022E5F88 - cmp r5, #0x5c - bne _022E5FB4 -_022E5F88: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022E5FF0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - ldr r2, [sp, #0x18] - add r3, sp, #0 - mov r1, r4 - bl qr2_parse_querya - b _022E5FF0 -_022E5FB4: - ldr r1, _022E5FFC ; =ov00_0231BF24 - mov r0, r4 - mov r2, #6 - bl memcmp - cmp r0, #0 - bne _022E5FE0 - ldr r1, [sp, #0x18] - add r2, sp, #0 - mov r0, r4 - bl NnProcessData - b _022E5FF0 -_022E5FE0: - add sp, sp, #8 - cmp r5, #0xfe - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022E5FF0: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E5FFC: .word ov00_0231BF24 - arm_func_end Dwci_GT2UnrecognizedMessageCallback - - arm_func_start Dwci_GT2ConnectAttemptCallback -Dwci_GT2ConnectAttemptCallback: ; 0x022E6000 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl Dwci_GetMatchCnt - cmp r0, #0 - beq _022E603C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #7 - bne _022E603C - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a9] - cmp r0, #0 - beq _022E6050 -_022E603C: - ldr r1, _022E6230 ; =ov00_0231A1D0 - mov r0, r8 - mvn r2, #0 - bl Gt2Reject - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E6050: - bl Dwci_GT2GetConnectionListIdx - mov r5, r0 - mvn r2, #0 - cmp r5, r2 - bne _022E6080 - ldr r1, _022E6234 ; =ov00_0231A1DC - mov r0, r8 - bl Gt2Reject - ldr r1, _022E6238 ; =0xFFFEABC4 - mov r0, #6 - bl Dwci_StopMatching - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E6080: - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0x210] - cmp r7, r0 - bne _022E60C4 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #1 - add r0, r0, #0x200 - ldrh r0, [r0, #0x90] - cmp r6, r0 - beq _022E6150 -_022E60C4: - ldr r0, [sp, #0x24] - ldrb r1, [r0] - cmp r1, #0 - beq _022E613C - mov r1, #0 - mov r2, #0xa - bl strtoul - mov r4, r0 - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0xf4] - cmp r4, r0 - bne _022E613C - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - str r7, [r0, #0x210] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #1 - add r0, r0, #0x200 - strh r6, [r0, #0x90] - b _022E6150 -_022E613C: - ldr r1, _022E623C ; =ov00_0231A1E8 - mov r0, r8 - mvn r2, #0 - bl Gt2Reject - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E6150: - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - bl Dwci_GetMatchCnt - ldr r1, [r0, #8] - mov r0, r8 - bl Gt2Accept - cmp r0, #0 - bne _022E6188 - ldr r1, _022E6240 ; =0xFFFEC5E6 - mov r0, #6 - bl Dwci_StopMatching - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E6188: - bl Dwci_StopResendingMatchCommand - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - bne _022E61BC - ldr r1, [sp, #0x20] - ldr r0, _022E6244 ; =0x0000FFFF - mov r4, r1, asr #1 - cmp r0, r1, asr #1 - movle r4, r0 - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - strh r4, [r0, #0xb0] -_022E61BC: - mov r0, r5 - bl Dwci_GetGT2ConnectionByIdx - mov r4, r0 - mov r0, r5 - bl Dwci_GetConnectionInfoByIdx - str r8, [r4] - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - add r1, r1, #1 - strb r1, [r0, #0xd] - strb r5, [r4] - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - mov r0, r8 - mov r2, #0 - sub r1, r1, #1 - add r1, r5, r1 - ldrb r3, [r1, #0x2d0] - mov r1, r4 - strb r3, [r4, #1] - strh r2, [r4, #2] - str r2, [r4, #4] - bl Gt2SetConnectionData - mov r0, #2 - bl Dwci_PostProcessConnection - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E6230: .word ov00_0231A1D0 -_022E6234: .word ov00_0231A1DC -_022E6238: .word 0xFFFEABC4 -_022E623C: .word ov00_0231A1E8 -_022E6240: .word 0xFFFEC5E6 -_022E6244: .word 0x0000FFFF - arm_func_end Dwci_GT2ConnectAttemptCallback - - arm_func_start Dwci_GT2ConnectedCallback -Dwci_GT2ConnectedCallback: ; 0x022E6248 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - mov r6, r0 - mov r4, r1 - bl Dwci_GetMatchCnt - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #7 - beq _022E628C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, pc} -_022E628C: - cmp r4, #0 - beq _022E6408 - cmp r4, #5 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, pc} - cmp r4, #6 - bne _022E63DC - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xc] - add r1, r1, #1 - strb r1, [r0, #0xc] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xc] - cmp r0, #5 - bls _022E62F8 - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xc] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_022E62F8: - bl Dwci_GetMatchCnt - ldr r3, [r0, #0x200] - ldr r2, _022E64C0 ; =ov00_0231A1C0 - add r0, sp, #0x10 - mov r1, #0xc - bl OS_SnPrintf - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r2, [r6, #0x14] - ldrb r1, [r0, #0x14] - add r0, r7, r2, lsl #2 - add r1, r5, r1, lsl #1 - add r1, r1, #0x200 - ldrh r1, [r1, #0x90] - ldr r0, [r0, #0x210] - mov r2, #0 - bl Gt2AddressToString - mov r5, r0 - bl Dwci_GetMatchCnt - mvn r1, #0 - str r1, [sp] - ldr r3, _022E64C4 ; =0x00001388 - mov r1, #0 - str r3, [sp, #4] - ldr r0, [r0, #8] - mov r2, r5 - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r0, [r4, #4] - add r3, sp, #0x10 - ldr r0, [r0] - bl Gt2Connect - cmp r0, #1 - bne _022E63A8 - bl Dwci_HandleGT2Error_Match - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_022E63A8: - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_022E63DC: - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_022E6408: - bl Dwci_GT2GetConnectionListIdx - mov r5, r0 - mvn r1, #0 - cmp r5, r1 - bne _022E6430 - ldr r1, _022E64C8 ; =0xFFFEABC4 - mov r0, #6 - bl Dwci_StopMatching - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_022E6430: - bl Dwci_GetGT2ConnectionByIdx - mov r4, r0 - mov r0, r5 - bl Dwci_GetConnectionInfoByIdx - str r6, [r4] - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r2, [r0, #0xd] - mov r1, #0 - add r2, r2, #1 - strb r2, [r0, #0xd] - strb r5, [r4] - strh r1, [r4, #2] - str r1, [r4, #4] - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r2, [r0, #0xd] - mov r0, r6 - mov r1, r4 - add r2, r5, r2 - ldrb r2, [r2, #0x2d0] - strb r2, [r4, #1] - bl Gt2SetConnectionData - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - bne _022E64B0 - mov r0, #0 - bl Dwci_PostProcessConnection - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} -_022E64B0: - mov r0, #1 - bl Dwci_PostProcessConnection - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_022E64C0: .word ov00_0231A1C0 -_022E64C4: .word 0x00001388 -_022E64C8: .word 0xFFFEABC4 - arm_func_end Dwci_GT2ConnectedCallback - - arm_func_start Dwci_MatchGpRecvBuddyMsgCallback -Dwci_MatchGpRecvBuddyMsgCallback: ; 0x022E64CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x218 - mov sb, #0 - mov fp, r1 - mov sl, r2 - add r8, sp, #8 - mov r7, sb - mov r6, #0xa - add r5, sp, #0x18 - mvn r4, #0 -_022E64F4: - mov r0, r8 - mov r2, sb - add r1, sl, #1 - bl Dwci_GetGpBuddyAdditionalMsg - cmp r0, r4 - beq _022E652C - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl strtoul - str r0, [r5, sb, lsl #2] - add sb, sb, #1 - cmp sb, #0x80 - blt _022E64F4 -_022E652C: - add r0, sp, #0x18 - stmia sp, {r0, sb} - mov r2, #0 - ldrb r0, [sl] - mov r1, fp - mov r3, r2 - bl Dwci_ProcessRecvMatchCommand - add sp, sp, #0x218 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end Dwci_MatchGpRecvBuddyMsgCallback - - arm_func_start Dwci_StopResendingMatchCommand -Dwci_StopResendingMatchCommand: ; 0x022E6550 - stmdb sp!, {r3, lr} - bl Dwci_GetMatchCnt - mov r1, #0xff - strb r1, [r0, #0x3cc] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x3cd] - ldmia sp!, {r3, pc} - arm_func_end Dwci_StopResendingMatchCommand - - arm_func_start Dwci_StopMatching -Dwci_StopMatching: ; 0x022E6570 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - cmp r0, #0 - cmpne r4, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl Dwci_CloseAllConnectionsByTimeout - mov r0, r4 - mov r1, r5 - bl Dwci_SetError - ldr r1, _022E6628 ; =ov00_0231A1BC - mov r0, #1 - mov r2, #0 - bl Dwci_SetGpStatus - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r7, #1 - movne r7, #0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r8, #1 - movne r8, #0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - bl Dwci_GetFriendListIndex - mov r5, r0 - bl Dwci_GetMatchCnt - str r5, [sp] - ldr r1, [r0, #0x468] - mov r0, r4 - str r1, [sp, #4] - ldr r4, [r6, #0x464] - mov r2, r8 - mov r3, r7 - mov r1, #0 - blx r4 - bl Dwci_CloseMatching - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E6628: .word ov00_0231A1BC - arm_func_end Dwci_StopMatching - - arm_func_start Dwci_ClearQR2Key -Dwci_ClearQR2Key: ; 0x022E662C - stmdb sp!, {r3, lr} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - ldmeqia sp!, {r3, pc} - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x14] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x16] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - ldmia sp!, {r3, pc} - arm_func_end Dwci_ClearQR2Key - - arm_func_start Dwci_ProcessMatchSynPacket -Dwci_ProcessMatchSynPacket: ; 0x022E6668 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r2 - cmp r1, #2 - beq _022E6690 - cmp r1, #3 - beq _022E673C - cmp r1, #4 - beq _022E6804 - ldmia sp!, {r4, r5, r6, pc} -_022E6690: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022E672C - ldrb r0, [r4] - cmp r0, #1 - bne _022E66B8 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20c] -_022E66B8: - ldrb r6, [r4, #1] - bl Dwci_GetMatchCnt - ldrb r1, [r4, #2] - add r0, r0, r6 - strb r1, [r0, #0x2d0] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x200] - add r0, r4, r6, lsl #2 - str r1, [r0, #0xf4] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E6704 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E6718 -_022E6704: - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x16] -_022E6718: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ad] - mov r0, #9 - bl Dwci_SetMatchStatus -_022E672C: - mov r0, r5 - mov r1, #3 - bl Dwci_SendMatchSynPacket - ldmia sp!, {r4, r5, r6, pc} -_022E673C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x10 - bne _022E67F4 - bl Dwci_GetMatchCnt - ldr r2, [r0, #0x1d4] - mov r1, #1 - orr r1, r2, r1, lsl r5 - str r1, [r0, #0x1d4] - ldrb r1, [r4] - ldrb r0, [r4, #1] - orr r4, r1, r0, lsl #8 - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - cmp r4, r0 - ble _022E678C - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - strh r4, [r0, #0xb0] -_022E678C: - mov r0, #0 - bl Dwci_GetAidBitmask - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1d4] - cmp r4, r0 - ldmneia sp!, {r4, r5, r6, pc} - mov r5, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E67E8 - mov r4, #4 -_022E67C0: - bl Dwci_GetMatchCnt - add r0, r0, r5 - ldrb r0, [r0, #0x2d0] - mov r1, r4 - bl Dwci_SendMatchSynPacket - add r5, r5, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _022E67C0 -_022E67E8: - mov r0, #0x11 - bl Dwci_SetMatchStatus - ldmia sp!, {r4, r5, r6, pc} -_022E67F4: - mov r0, r5 - mov r1, #4 - bl Dwci_SendMatchSynPacket - ldmia sp!, {r4, r5, r6, pc} -_022E6804: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #9 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #4 - bl Dwci_PostProcessConnection - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_ProcessMatchSynPacket - - arm_func_start Dwci_ProcessMatchClosing -Dwci_ProcessMatchClosing: ; 0x022E6820 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl Dwc_GetState - cmp r0, #5 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r5, #0 - beq _022E6870 - ldr r1, _022E6994 ; =0xFFFEC780 - mov r0, r5 - add r1, r4, r1 - bl Dwci_StopMatching - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022E6870: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x2d0] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a9] - cmp r0, #1 - beq _022E68AC - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a8] - cmp r0, #1 - beq _022E68AC - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a8] - cmp r0, #2 - bne _022E68B4 -_022E68AC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022E68B4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _022E68DC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - bl NnCancel - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x19c] -_022E68DC: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022E691C - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a8] - cmp r0, #0 - bne _022E698C - bl Dwci_GetMatchCnt - mov r1, #3 - strb r1, [r0, #0x1a8] - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2CloseAllConnectionsHard - b _022E698C -_022E691C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E693C - ldr r1, _022E6998 ; =0xFFFEC5D2 - mov r0, #6 - bl Dwci_StopMatching - b _022E698C -_022E693C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r0, #0 - beq _022E6954 - bl Dwci_ResumeMatching - b _022E698C -_022E6954: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022E6984 - mov r0, #0x12 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1f0] - str r1, [r4, #0x1f4] - b _022E698C -_022E6984: - mov r0, #1 - bl Dwci_RestartFromCancel -_022E698C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E6994: .word 0xFFFEC780 -_022E6998: .word 0xFFFEC5D2 - arm_func_end Dwci_ProcessMatchClosing - - arm_func_start Dwci_ProcessMatchScClosing -Dwci_ProcessMatchScClosing: ; 0x022E699C - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a8] - cmp r0, #2 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl Dwci_CancelPreConnectedServerProcess - ldmia sp!, {r4, pc} - arm_func_end Dwci_ProcessMatchScClosing - - arm_func_start Dwci_DeleteHostByProfileID -Dwci_DeleteHostByProfileID: ; 0x022E69C0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r5, #0 - mov r4, #0 - ble _022E6A1C -_022E69E8: - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r6, r0 - bne _022E6A10 - mov r0, r4 - mov r1, r5 - bl Dwci_DeleteHostByIndex - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_022E6A10: - add r4, r4, #1 - cmp r4, r5 - blt _022E69E8 -_022E6A1C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_DeleteHostByProfileID - - arm_func_start Dwci_DeleteHostByIndex -Dwci_DeleteHostByIndex: ; 0x022E6A24 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - mov r8, r1 - bl Dwci_GetMatchCnt - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl Dwci_GetMatchCnt - add r0, r0, sb, lsl #2 - ldr fp, [r0, #0xf4] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - add r0, r0, sb - ldrb r0, [r0, #0x2d0] - mov r1, #1 - ldr r2, [r4, #0x2f0] - mvn r0, r1, lsl r0 - and r0, r2, r0 - str r0, [r4, #0x2f0] - bl Dwci_SetNumValidConnection - sub r0, r8, #1 - cmp sb, r0 - bge _022E6B64 - sub r0, r8, sb - sub r5, r0, #1 - cmp r5, #0 - mov r4, #0 - ble _022E6B64 -_022E6A98: - add r7, sb, r4 - add r6, r7, #1 - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x24] - add r0, sl, r7, lsl #2 - str r1, [r0, #0x24] - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - add r0, r0, r6, lsl #1 - ldrh r1, [r0, #0xa4] - add r0, sl, r7, lsl #1 - strh r1, [r0, #0xa4] - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - add r1, sl, r7, lsl #2 - add r0, r0, r6, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r1, #0xf4] - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - add r1, sl, r7, lsl #2 - add r0, r0, r6, lsl #2 - ldr r0, [r0, #0x210] - str r0, [r1, #0x210] - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - add r1, sl, r7, lsl #1 - add r0, r0, r6, lsl #1 - add r0, r0, #0x200 - ldrh r2, [r0, #0x90] - add r0, r1, #0x200 - strh r2, [r0, #0x90] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - add r0, sb, r0 - add r0, r4, r0 - ldrb r1, [r0, #0x2d1] - add r0, sb, r6 - add r0, r4, r0 - strb r1, [r0, #0x2d0] - add r4, r4, #1 - cmp r4, r5 - blt _022E6A98 -_022E6B64: - cmp r8, #0 - ble _022E6BD4 - sub r4, r8, #1 - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - mov r1, #0 - str r1, [r0, #0x24] - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #1 - mov r1, #0 - strh r1, [r0, #0xa4] - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - mov r1, #0 - str r1, [r0, #0xf4] - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - mov r1, #0 - str r1, [r0, #0x210] - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #1 - add r0, r0, #0x200 - mov r1, #0 - strh r1, [r0, #0x90] - bl Dwci_GetMatchCnt - add r0, r0, r4 - mov r1, #0 - strb r1, [r0, #0x2d0] -_022E6BD4: - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end Dwci_DeleteHostByIndex - - arm_func_start Dwci_SetNumValidConnection -Dwci_SetNumValidConnection: ; 0x022E6BDC - stmdb sp!, {r4, r5, r6, lr} - mvn r5, #0 - mov r6, #0 - mov r4, #1 -_022E6BEC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x2f0] - tst r0, r4, lsl r6 - add r6, r6, #1 - addne r5, r5, #1 - cmp r6, #0x20 - blt _022E6BEC - mvn r0, #0 - cmp r5, r0 - bne _022E6C24 - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xe] - ldmia sp!, {r4, r5, r6, pc} -_022E6C24: - bl Dwci_GetMatchCnt - strb r5, [r0, #0xe] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_SetNumValidConnection - - arm_func_start Dwci_GetAllAidList -Dwci_GetAllAidList: ; 0x022E6C30 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_GetMatchCnt - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl Dwci_GetMatchCnt - add r0, r0, #0x2d0 - str r0, [r4] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r0, #1 - ldmia sp!, {r4, pc} - arm_func_end Dwci_GetAllAidList - - arm_func_start Dwci_GetValidAidList -Dwci_GetValidAidList: ; 0x022E6C64 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - bl Dwci_GetMatchCnt - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022E6D04 ; =ov00_02326F68 - mov r1, #0 - mov r2, #0x20 - bl MI_CpuFill8 - mov r5, #0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xe] - cmp r0, #0 - blt _022E6CEC - ldr r6, _022E6D04 ; =ov00_02326F68 - mov r4, #1 -_022E6CA8: - bl Dwci_GetMatchCnt - mov r8, r0 - bl Dwci_GetMatchCnt - add r0, r0, r5 - ldrb r0, [r0, #0x2d0] - ldr r1, [r8, #0x2f0] - tst r1, r4, lsl r0 - beq _022E6CEC - bl Dwci_GetMatchCnt - add r0, r0, r5 - ldrb r0, [r0, #0x2d0] - add r5, r5, #1 - strb r0, [r6], #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xe] - cmp r5, r0 - ble _022E6CA8 -_022E6CEC: - ldr r0, _022E6D04 ; =ov00_02326F68 - str r0, [r7] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xe] - add r0, r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E6D04: .word ov00_02326F68 - arm_func_end Dwci_GetValidAidList - - arm_func_start Dwci_GpSetServerStatus -Dwci_GpSetServerStatus: ; 0x022E6D08 - stmdb sp!, {lr} - sub sp, sp, #0x2c - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - addne sp, sp, #0x2c - movne r0, #0 - ldmneia sp!, {pc} - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x16] - ldr r2, _022E6DC8 ; =ov00_0231A1C0 - add r0, sp, #0x20 - add r3, r1, #1 - mov r1, #0xc - bl OS_SnPrintf - ldr r0, _022E6DCC ; =ov00_0231A200 - add r1, sp, #0x20 - add r2, sp, #0 - mov r3, #0x2f - bl Dwc_SetCommonKeyValueString - bl Dwci_GetMatchCnt - ldrb r2, [r0, #0xd] - add r0, sp, #0x20 - mov r1, #0xc - add r3, r2, #1 - ldr r2, _022E6DC8 ; =ov00_0231A1C0 - bl OS_SnPrintf - ldr r0, _022E6DD0 ; =ov00_0231A204 - add r1, sp, #0x20 - add r2, sp, #0 - mov r3, #0x2f - bl Dwc_AddCommonKeyValueString - ldr r2, _022E6DC8 ; =ov00_0231A1C0 - add r0, sp, #0x20 - mov r1, #0xc - mov r3, #3 - bl OS_SnPrintf - ldr r0, _022E6DD4 ; =ov00_0231A1CC - add r1, sp, #0x20 - add r2, sp, #0 - mov r3, #0x2f - bl Dwc_AddCommonKeyValueString - mov r0, #6 - add r1, sp, #0 - mov r2, #0 - bl Dwci_SetGpStatus - add sp, sp, #0x2c - ldmia sp!, {pc} - .align 2, 0 -_022E6DC8: .word ov00_0231A1C0 -_022E6DCC: .word ov00_0231A200 -_022E6DD0: .word ov00_0231A204 -_022E6DD4: .word ov00_0231A1CC - arm_func_end Dwci_GpSetServerStatus - - arm_func_start Dwci_ShutdownMatch -Dwci_ShutdownMatch: ; 0x022E6DD8 - stmdb sp!, {r3, lr} - mov r0, #0 - bl Dwci_SetMatchCnt - ldr r0, _022E6E4C ; =ov00_02326F48 - ldr r1, [r0, #8] - cmp r1, #0 - beq _022E6E0C - mov r0, #4 - mov r2, #0 - bl Dwc_Free - ldr r0, _022E6E4C ; =ov00_02326F48 - mov r1, #0 - str r1, [r0, #8] -_022E6E0C: - bl Dwci_ClearGameMatchKeys - ldr r0, _022E6E4C ; =ov00_02326F48 - ldr r1, [r0] - cmp r1, #0 - beq _022E6E38 - mov r0, #4 - mov r2, #0 - bl Dwc_Free - ldr r0, _022E6E4C ; =ov00_02326F48 - mov r1, #0 - str r1, [r0] -_022E6E38: - ldr r0, _022E6E4C ; =ov00_02326F48 - mov r1, #0 - strb r1, [r0, #0x1c] - strb r1, [r0, #0x1d] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E6E4C: .word ov00_02326F48 - arm_func_end Dwci_ShutdownMatch - - arm_func_start Dwci_IsShutdownMatch -Dwci_IsShutdownMatch: ; 0x022E6E50 - stmdb sp!, {r3, lr} - bl Dwci_GetMatchCnt - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end Dwci_IsShutdownMatch - - arm_func_start Dwci_ResetMatchParam -Dwci_ResetMatchParam: ; 0x022E6E68 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xc] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17c] - bl Dwci_GetMatchCnt - mov r5, r0 - mov r0, #0x10000 - bl Dwci_GetMathRand32 - add r1, r5, #0x100 - strh r0, [r1, #0x7e] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x180] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x184] - str r1, [r0, #0x188] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a4] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a9] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1aa] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ab] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ac] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a7] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a8] - bl Dwci_GetMatchCnt - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb2] - bl Dwci_GetMatchCnt - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb4] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1b8] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1e0] - str r1, [r0, #0x1e4] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1f0] - str r1, [r0, #0x1f4] - bl Dwci_GetMatchCnt - add r1, r0, #0x3cc - mov r0, #0 - mov r2, #0x98 - bl MTi_CpuClear32 - cmp r4, #2 - bne _022E6FD4 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x14] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E6FB8 - mov r0, #1 - bl Dwci_SetMatchStatus - ldmia sp!, {r3, r4, r5, pc} -_022E6FB8: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0xa - bl Dwci_SetMatchStatus - ldmia sp!, {r3, r4, r5, pc} -_022E6FD4: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xd] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xe] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x14] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0xe8] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a5] - bl Dwci_GetMatchCnt - mov r1, #0 - add r0, r0, #0x100 - strh r1, [r0, #0xb0] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1bc] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c0] - str r1, [r0, #0x1c4] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1cc] - str r1, [r0, #0x1d0] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1d4] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x204] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x208] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x2f0] - bl Dwci_ResetMyAid - bl Dwci_GetMatchCnt - add r1, r0, #0x24 - mov r0, #0 - mov r2, #0x80 - bl MTi_CpuClear32 - bl Dwci_GetMatchCnt - add r1, r0, #0xa4 - mov r0, #0 - mov r2, #0x40 - bl MTi_CpuClear16 - bl Dwci_GetMatchCnt - add r1, r0, #0xf4 - mov r0, #0 - mov r2, #0x80 - bl MTi_CpuClear32 - bl Dwci_GetMatchCnt - add r1, r0, #0x194 - mov r0, #0 - mov r2, #0xc - bl MTi_CpuClear32 - bl Dwci_GetMatchCnt - add r1, r0, #0x210 - mov r0, #0 - mov r2, #0x80 - bl MTi_CpuClear32 - bl Dwci_GetMatchCnt - add r1, r0, #0x290 - mov r0, #0 - mov r2, #0x40 - bl MTi_CpuClear16 - bl Dwci_GetMatchCnt - add r0, r0, #0x2d0 - mov r1, #0 - mov r2, #0x20 - bl MI_CpuFill8 - bl Dwci_GetMatchCnt - add r1, r0, #0x348 - mov r0, #0 - mov r2, #0x84 - bl MTi_CpuClear32 - cmp r4, #1 - bne _022E7184 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E7168 - mov r0, #3 - bl Dwci_SetMatchStatus - ldmia sp!, {r3, r4, r5, pc} -_022E7168: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #4 - bl Dwci_SetMatchStatus - ldmia sp!, {r3, r4, r5, pc} -_022E7184: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x15] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x16] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x18] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20c] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a6] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ae] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ad] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1f8] - str r1, [r0, #0x1fc] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x46c] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x470] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_ResetMatchParam - - arm_func_start Dwci_CloseMatching -Dwci_CloseMatching: ; 0x022E7204 - stmdb sp!, {r3, lr} - bl Dwci_GetMatchCnt - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _022E7254 - ldr r0, _022E729C ; =ov00_02326F48 - ldr r1, [r0, #0x18] - cmp r1, #0 - movne r1, #1 - strne r1, [r0, #0x14] - bne _022E7254 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserFree - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0xe4] -_022E7254: - bl Dwci_NnFreeNegotiateList - mov r0, #0 - bl Dwci_SetMatchStatus - ldr r0, _022E729C ; =ov00_02326F48 - ldr r1, [r0, #8] - cmp r1, #0 - beq _022E7288 - mov r0, #4 - mov r2, #0 - bl Dwc_Free - ldr r0, _022E729C ; =ov00_02326F48 - mov r1, #0 - str r1, [r0, #8] -_022E7288: - bl Dwci_ClearGameMatchKeys - bl Dwci_GetMatchCnt - mov r1, #1 - strb r1, [r0, #0x18] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E729C: .word ov00_02326F48 - arm_func_end Dwci_CloseMatching - - arm_func_start Dwci_SbUpdateAsync -Dwci_SbUpdateAsync: ; 0x022E72A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1b0 - mov r7, #8 - mov r6, #0xa - mov r5, #0x32 - mov r4, #0x33 - mov r3, #0x34 - mov r2, #0x35 - mov r1, #0x36 - strb r7, [sp, #0xc] - strb r6, [sp, #0xd] - strb r5, [sp, #0xe] - strb r4, [sp, #0xf] - strb r3, [sp, #0x10] - strb r2, [sp, #0x11] - strb r1, [sp, #0x12] - mov r4, r0 - mov r8, #7 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E7308 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E7334 -_022E7308: - ldr r2, _022E7484 ; =ov00_02326F88 - add r3, sp, #0x13 - mov r1, #0 -_022E7314: - ldrb r0, [r2] - add r1, r1, #1 - add r2, r2, #0xc - cmp r0, #0 - strneb r0, [r3], #1 - addne r8, r8, #1 - cmp r1, #0x9a - blt _022E7314 -_022E7334: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022E73EC -_022E7348: ; jump table - b _022E73EC ; case 0 - b _022E73EC ; case 1 - b _022E73CC ; case 2 - b _022E7360 ; case 3 - b _022E73CC ; case 4 - b _022E73CC ; case 5 -_022E7360: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r0, #0 - bne _022E73C4 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r1, [r5, #0x200] - ldrb r2, [r4, #0x16] - ldrb r3, [r0, #0x15] - add r0, sp, #0xad - bl Dwci_GetDefaultMatchFilter - mov r1, r0 - ldr r0, _022E7488 ; =ov00_02326F48 - ldr r3, [r0, #8] - cmp r3, #0 - beq _022E73EC - add r0, sp, #0xad - add r0, r0, r1 - ldr r2, _022E748C ; =ov00_0231A234 - rsb r1, r1, #0x100 - bl OS_SnPrintf - b _022E73EC -_022E73C4: - bl Dwci_GetMatchCnt - ldr r4, [r0, #0x208] -_022E73CC: - ldr r2, _022E7490 ; =ov00_0231A240 - ldr r3, _022E7494 ; =ov00_0231A208 - add r0, sp, #0xad - mov r1, #0x100 - str r4, [sp] - bl OS_SnPrintf - bl Dwci_GetMatchCnt - str r4, [r0, #0x204] -_022E73EC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserClear - mov sl, #0 - add r7, sp, #0xad - mov r6, #6 - mov r5, #1 - mov r4, sl - add fp, sp, #0xc -_022E7410: - bl Dwci_GetMatchCnt - str r8, [sp] - str r7, [sp, #4] - str r6, [sp, #8] - ldr r0, [r0, #0xe4] - mov r1, r5 - mov r2, r4 - mov r3, fp - bl ServerBrowserLimitUpdateA - movs sb, r0 - beq _022E7450 - cmp sb, #2 - bne _022E7450 - add sl, sl, #1 - cmp sl, #5 - blt _022E7410 -_022E7450: - cmp sb, #0 - bne _022E7478 - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - ldr r2, _022E7498 ; =0x00EFB5F7 - adds r0, r0, r2 - str r0, [r4, #0x174] - adc r0, r1, #0 - str r0, [r4, #0x178] -_022E7478: - mov r0, sb - add sp, sp, #0x1b0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E7484: .word ov00_02326F88 -_022E7488: .word ov00_02326F48 -_022E748C: .word ov00_0231A234 -_022E7490: .word ov00_0231A240 -_022E7494: .word ov00_0231A208 -_022E7498: .word 0x00EFB5F7 - arm_func_end Dwci_SbUpdateAsync - - arm_func_start Dwci_GetDefaultMatchFilter -Dwci_GetDefaultMatchFilter: ; 0x022E749C - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov lr, #3 - ldr ip, _022E74F0 ; =ov00_0231A208 - str lr, [sp] - str ip, [sp, #4] - str r1, [sp, #8] - str r2, [sp, #0xc] - str r2, [sp, #0x10] - ldr r2, _022E74F4 ; =ov00_0231A210 - ldr r1, _022E74F8 ; =ov00_0231A21C - str r2, [sp, #0x14] - str r3, [sp, #0x18] - str r1, [sp, #0x1c] - ldr r2, _022E74FC ; =ov00_0231A248 - ldr r3, _022E7500 ; =ov00_0231A228 - mov r1, #0x100 - str ip, [sp, #0x20] - bl OS_SnPrintf - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_022E74F0: .word ov00_0231A208 -_022E74F4: .word ov00_0231A210 -_022E74F8: .word ov00_0231A21C -_022E74FC: .word ov00_0231A248 -_022E7500: .word ov00_0231A228 - arm_func_end Dwci_GetDefaultMatchFilter - - arm_func_start Dwci_NnStartupAsync -Dwci_NnStartupAsync: ; 0x022E7504 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r8, r1 - mov r7, r2 - bl Dwci_GetMatchCnt - cmp r4, #0 - ldrb r4, [r0, #0x14] - mov r6, #0 - bne _022E7748 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r2, [r0, #0x7e] - ldr r1, [r5, #0x200] - mov r0, r7 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x10 - orr r8, r2, r1, lsr #16 - bl SbServerHasPrivateAddress - cmp r0, #0 - beq _022E75C0 - mov r0, r7 - bl SbServerGetPublicInetAddress - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserGetMyPublicIpAddr - cmp r5, r0 - movne r5, #1 - bne _022E7648 - bl Dwci_GetMatchCnt - mov r5, r0 - mov r0, r7 - bl SbServerGetPrivateInetAddress - add r1, r5, r4, lsl #2 - str r0, [r1, #0x210] - bl Dwci_GetMatchCnt - mov r5, r0 - mov r0, r7 - bl SbServerGetPrivateQueryPort - add r1, r5, r4, lsl #1 - add r1, r1, #0x200 - strh r0, [r1, #0x90] - mov r5, r6 - b _022E7648 -_022E75C0: - bl Soc_GetHostID - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r2, lsl #0x10 - ldr r1, _022E77EC ; =0x0000A8C0 - mov r0, r0, lsr #0x10 - cmp r0, r1 - beq _022E7608 - and r1, r2, #0xff - cmp r1, #0xac - bne _022E7600 - and r0, r2, #0xff00 - cmp r0, #0x1000 - blo _022E7600 - cmp r0, #0x1f00 - bls _022E7608 -_022E7600: - cmp r1, #0xa - bne _022E7610 -_022E7608: - mov r5, #1 - b _022E7648 -_022E7610: - bl Dwci_GetMatchCnt - mov r5, r0 - mov r0, r7 - bl SbServerGetPublicInetAddress - add r1, r5, r4, lsl #2 - str r0, [r1, #0x210] - bl Dwci_GetMatchCnt - mov r5, r0 - mov r0, r7 - bl SbServerGetPublicQueryPort - add r1, r5, r4, lsl #1 - add r1, r1, #0x200 - strh r0, [r1, #0x90] - mov r5, #0 -_022E7648: - cmp r5, #0 - beq _022E7674 - bl Dwci_GetMatchCnt - mov r4, r0 - mov r0, #0x10000 - bl Dwci_GetMathRand32 - add r1, r4, #0x100 - strh r0, [r1, #0x7e] - bl Dwci_GetMatchCnt - str r8, [r0, #0x19c] - b _022E7700 -_022E7674: - bl Soc_GetHostID - str r0, [sp, #8] - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2GetLocalPort - str r0, [sp, #0xc] - bl Dwci_GetMatchCnt - mov sb, r0 - mov r0, r7 - bl SbServerGetPublicInetAddress - mov r8, r0 - mov r0, r7 - bl SbServerGetPublicQueryPort - add r1, sb, r4, lsl #2 - add r4, sp, #8 - mov r3, r0 - mov r0, #2 - str r4, [sp] - str r0, [sp, #4] - ldr r1, [r1, #0xf4] - mov r2, r8 - mov r0, #6 - bl Dwci_SendMatchCommand - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - cmp r4, #0 - strb r1, [r0, #0x3cd] - addne sp, sp, #0x10 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x19c] -_022E7700: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x194] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x195] - bl Dwci_GetMatchCnt - mov r4, r0 - mov r0, r7 - bl SbServerGetPublicQueryPort - add r1, r4, #0x100 - strh r0, [r1, #0x96] - bl Dwci_GetMatchCnt - mov r4, r0 - mov r0, r7 - bl SbServerGetPublicInetAddress - str r0, [r4, #0x198] - b _022E7788 -_022E7748: - bl Dwci_GetMatchCnt - mov r1, #1 - strb r1, [r0, #0x194] - bl Dwci_GetMatchCnt - mov r1, r6 - strb r1, [r0, #0x195] - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - mov r1, r6 - strh r1, [r0, #0x96] - bl Dwci_GetMatchCnt - mov r1, r6 - str r1, [r0, #0x198] - bl Dwci_GetMatchCnt - str r8, [r0, #0x19c] - mov r5, #1 -_022E7788: - cmp r5, #0 - beq _022E77A4 - bl Dwci_GetMatchCnt - add r0, r0, #0x194 - bl Dwci_DoNatNegotiationAsync - mov r6, r0 - b _022E77E0 -_022E77A4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2GetSocketSocket - mov r4, r0 - bl Dwci_GetMatchCnt - add r3, r0, #0x194 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl Dwci_NnCompletedCallback - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] -_022E77E0: - mov r0, r6 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E77EC: .word 0x0000A8C0 - arm_func_end Dwci_NnStartupAsync - - arm_func_start Dwci_DoNatNegotiationAsync -Dwci_DoNatNegotiationAsync: ; 0x022E77F0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - ldrb r0, [r7] - cmp r0, #0 - bne _022E7848 - bl Dwci_GetMatchCnt - mov r4, r0 - mov r1, #0 - ldr r0, [r7, #4] - mov r2, r1 - bl Gt2AddressToString - mov r1, r0 - ldrh r2, [r7, #2] - ldr r0, [r4, #0xe4] - ldr r3, [r7, #8] - bl ServerBrowserSendNatNegotiateCookieToServerA - bl Dwci_HandleSbError_Match - cmp r0, #0 - addne sp, sp, #8 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022E7848: - ldr r5, _022E78A4 ; =Dwci_NnCompletedCallback - ldr r4, _022E78A8 ; =Dwci_NnProgressCallback - mov r6, #0 -_022E7854: - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2GetSocketSocket - stmia sp, {r5, r7} - ldrb r2, [r7] - ldr r1, [r7, #8] - mov r3, r4 - bl NnBeginNegotiationWithSocket - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #3 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r6, r6, #1 - cmp r6, #5 - blt _022E7854 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E78A4: .word Dwci_NnCompletedCallback -_022E78A8: .word Dwci_NnProgressCallback - arm_func_end Dwci_DoNatNegotiationAsync - - arm_func_start Dwci_SendMatchCommand -Dwci_SendMatchCommand: ; 0x022E78AC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x220 - str r3, [sp, #0xc] - mov sl, r0 - str r1, [sp, #4] - str r2, [sp, #8] - ldr sb, [sp, #0x248] - ldr r8, [sp, #0x24c] - mov r6, #0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E7908 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _022E7900 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - beq _022E7928 -_022E7900: - cmp sl, #6 - bne _022E7928 -_022E7908: - ldr r2, [sp, #0xc] - ldr r1, [sp, #8] - mov r0, sl - mov r3, sb - str r8, [sp] - bl Dwci_SendSbMsgCommand - mov r4, r0 - b _022E79D0 -_022E7928: - cmp sb, #0 - cmpne r8, #0 - beq _022E79A8 - ldr r3, [sb] - ldr r2, _022E7A68 ; =ov00_0231A1C0 - add r0, sp, #0x20 - mov r1, #0x200 - bl OS_SnPrintf - mov r6, r0 - cmp r8, #1 - mov r7, #1 - ble _022E79A8 - add r5, sp, #0x10 - add fp, sp, #0x20 -_022E7960: - ldr r3, [sb, r7, lsl #2] - ldr r2, _022E7A6C ; =ov00_0231A2A0 - mov r0, r5 - mov r1, #0x10 - bl OS_SnPrintf - mov r4, r0 - add r0, r6, r4 - add r0, r0, #1 - cmp r0, #0x200 - bhi _022E79A8 - mov r0, r5 - add r1, fp, r6 - mov r2, r4 - bl MI_CpuCopy8 - add r7, r7, #1 - add r6, r6, r4 - cmp r7, r8 - blt _022E7960 -_022E79A8: - add r0, sp, #0x20 - mov r1, #0 - strb r1, [r0, r6] - bl Dwci_GetMatchCnt - ldr r0, [r0] - ldr r2, [sp, #4] - add r3, sp, #0x20 - mov r1, sl - bl Dwci_SendGpBuddyMsgCommand - mov r4, r0 -_022E79D0: - cmp sl, #2 - cmpne sl, #6 - beq _022E79EC - add r0, sl, #0xf8 - and r0, r0, #0xff - cmp r0, #1 - bhi _022E7A5C -_022E79EC: - bl Dwci_GetMatchCnt - strb sl, [r0, #0x3cc] - bl Dwci_GetMatchCnt - add r1, r0, #0x300 - ldr r0, [sp, #0xc] - strh r0, [r1, #0xce] - bl Dwci_GetMatchCnt - ldr r1, [sp, #8] - str r1, [r0, #0x3d0] - bl Dwci_GetMatchCnt - ldr r1, [sp, #4] - str r1, [r0, #0x454] - bl Dwci_GetMatchCnt - str r8, [r0, #0x458] - bl Dwci_GetMatchCnt - mov r5, r0 - bl OS_GetTick - str r0, [r5, #0x45c] - cmp sb, #0 - str r1, [r5, #0x460] - cmpne r8, #0 - beq _022E7A5C - bl Dwci_GetMatchCnt - mov r1, r0 - mov r0, sb - add r1, r1, #0x3d4 - mov r2, r8, lsl #2 - bl MTi_CpuCopy32 -_022E7A5C: - mov r0, r4 - add sp, sp, #0x220 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E7A68: .word ov00_0231A1C0 -_022E7A6C: .word ov00_0231A2A0 - arm_func_end Dwci_SendMatchCommand - - arm_func_start Dwci_SendSbMsgCommand -Dwci_SendSbMsgCommand: ; 0x022E7A70 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x98 - ldr r5, [sp, #0xb8] - mov r4, r0 - cmp r5, #0x20 - movhi r5, #0x20 - cmp r3, #0 - cmpne r5, #0 - mov r8, r1 - mov r7, r2 - moveq r5, #0 - beq _022E7AB0 - add r1, sp, #0x18 - mov r0, r3 - mov r2, r5, lsl #2 - bl MTi_CpuCopy32 -_022E7AB0: - ldr r2, _022E7B84 ; =ov00_0231A2A4 - mov r0, r5, lsl #2 - ldrb r1, [r2, #4] - ldrb r6, [r2] - add sb, sp, #4 - ldrb r5, [r2, #1] - ldrb r3, [r2, #2] - ldrb r2, [r2, #3] - strb r1, [sb, #4] - mov r1, #3 - strb r6, [sb] - strb r5, [sb, #1] - strb r3, [sb, #2] - strb r2, [sb, #3] - str r1, [sp, #8] - strb r4, [sp, #0xc] - strb r0, [sp, #0xd] - bl Dwci_GetMatchCnt - ldrh r0, [r0, #0x1a] - strh r0, [sp, #0xe] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1c] - str r0, [sp, #0x10] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x200] - mov r6, #0 - str r0, [sp, #0x14] - mov r4, r6 -_022E7B20: - bl Dwci_GetMatchCnt - mov r5, r0 - mov r0, r8 - mov r1, r4 - mov r2, r4 - bl Gt2AddressToString - mov r1, r0 - ldrb r0, [sp, #0xd] - mov r2, r7 - mov r3, sb - add r0, r0, #0x14 - str r0, [sp] - ldr r0, [r5, #0xe4] - bl ServerBrowserSendMessageToServerA - cmp r0, #0 - addeq sp, sp, #0x98 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, #2 - addne sp, sp, #0x98 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r6, r6, #1 - cmp r6, #5 - blt _022E7B20 - add sp, sp, #0x98 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E7B84: .word ov00_0231A2A4 - arm_func_end Dwci_SendSbMsgCommand - - arm_func_start Dwci_SendGpBuddyMsgCommand -Dwci_SendGpBuddyMsgCommand: ; 0x022E7B88 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x208 - mov sb, r0 - mov r8, r2 - mov r7, r3 - mov r0, #3 - mov r5, r1 - str r0, [sp] - ldr r4, _022E7C3C ; =ov00_0231A2BC - ldr r2, _022E7C40 ; =ov00_0231A2AC - ldr r3, _022E7C44 ; =ov00_0231A2B4 - add r0, sp, #8 - mov r1, #0x200 - str r4, [sp, #4] - bl OS_SnPrintf - mov r4, r0 - add r2, sp, #8 - add r1, sp, #9 - strb r5, [r2, r4] - mov r0, #0 - strb r0, [r1, r4] - cmp r7, #0 - add r6, r1, r4 - beq _022E7C24 - mov r0, r7 - bl strlen - mov r5, r0 - add r0, r4, #2 - add r0, r0, r5 - cmp r0, #0x200 - ldrhi r0, _022E7C48 ; =0x000001FF - addhi r1, r4, #1 - subhi r5, r0, r1 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl MI_CpuCopy8 - mov r0, #0 - strb r0, [r6, r5] -_022E7C24: - add r2, sp, #8 - mov r0, sb - mov r1, r8 - bl GpSendBuddyMessageA - add sp, sp, #0x208 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E7C3C: .word ov00_0231A2BC -_022E7C40: .word ov00_0231A2AC -_022E7C44: .word ov00_0231A2B4 -_022E7C48: .word 0x000001FF - arm_func_end Dwci_SendGpBuddyMsgCommand - - arm_func_start Dwci_GetGpBuddyAdditionalMsg -Dwci_GetGpBuddyAdditionalMsg: ; 0x022E7C4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r1 - mov r4, r0 - mov r8, r2 - mov r0, sb - mov r1, #0 - bl strchr - mov r6, r0 - cmp r8, #0 - mov r7, #0 - ble _022E7CA4 - mov r5, #0x2f -_022E7C7C: - mov r0, sb - mov r1, r5 - bl strchr - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r7, r7, #1 - cmp r7, r8 - add sb, r0, #1 - blt _022E7C7C -_022E7CA4: - mov r0, sb - mov r1, #0x2f - bl strchr - cmp r0, #0 - moveq r0, r6 - cmp sb, r0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r5, r0, sb - mov r0, sb - mov r1, r4 - mov r2, r5 - bl MI_CpuCopy8 - mov r1, #0 - mov r0, r5 - strb r1, [r4, r5] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end Dwci_GetGpBuddyAdditionalMsg - - arm_func_start Dwci_ProcessRecvMatchCommand -Dwci_ProcessRecvMatchCommand: ; 0x022E7CE8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x118 - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov sl, r3 - ldr r6, [sp, #0x138] - ldr r5, [sp, #0x13c] - mov r4, #0 - bl Dwci_GetMatchCnt - cmp r0, #0 - beq _022E7D28 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0 - bne _022E7D34 -_022E7D28: - add sp, sp, #0x118 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E7D34: - bl Dwc_GetState - cmp r0, #5 - bne _022E7D64 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022E7D64 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _022E7D64 - bl Dwci_InitClWaitTimeout -_022E7D64: - cmp sb, #0x40 - bgt _022E7E00 - bge _022E8B44 - cmp sb, #0x20 - addls pc, pc, sb, lsl #2 - b _022E8BB8 -_022E7D7C: ; jump table - b _022E8BB8 ; case 0 - b _022E7E08 ; case 1 - b _022E7FD8 ; case 2 - b _022E81AC ; case 3 - b _022E820C ; case 4 - b _022E832C ; case 5 - b _022E83A8 ; case 6 - b _022E84B8 ; case 7 - b _022E85D0 ; case 8 - b _022E8750 ; case 9 - b _022E87A4 ; case 10 - b _022E7E08 ; case 11 - b _022E884C ; case 12 - b _022E88C0 ; case 13 - b _022E88C0 ; case 14 - b _022E88C0 ; case 15 - b _022E88E4 ; case 16 - b _022E8934 ; case 17 - b _022E89D4 ; case 18 - b _022E8A30 ; case 19 - b _022E8BB8 ; case 20 - b _022E8BB8 ; case 21 - b _022E8BB8 ; case 22 - b _022E8BB8 ; case 23 - b _022E8BB8 ; case 24 - b _022E8BB8 ; case 25 - b _022E8BB8 ; case 26 - b _022E8BB8 ; case 27 - b _022E8BB8 ; case 28 - b _022E8BB8 ; case 29 - b _022E8BB8 ; case 30 - b _022E8BB8 ; case 31 - b _022E8A48 ; case 32 -_022E7E00: - cmp sb, #0x41 - b _022E8BB8 -_022E7E08: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E7E28 - ldr r0, [r6, #8] - ldr r7, [r6, #4] - mov r0, r0, lsl #0x10 - mov sl, r0, lsr #0x10 -_022E7E28: - cmp sb, #0xb - moveq r0, #1 - movne r0, #0 - str r0, [sp] - ldr r3, [r6] - mov r0, r8 - mov r1, r7 - mov r2, sl - bl Dwci_CheckResvCommand - mov r5, r0 - cmp r5, #2 - bne _022E7F4C - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1dc] - mov r0, r8 - mov r1, r7 - mov r2, sl - bl Dwci_ProcessResvOK - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022E7ED0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x46c] - cmp r0, #0 - beq _022E7ED0 - bl Dwci_GetMatchCnt - mov r6, r0 - mov r0, r8 - bl Dwci_GetFriendListIndex - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x470] - ldr r2, [r6, #0x46c] - mov r0, r4 - blx r2 -_022E7ED0: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - mov r4, #1 - str r0, [sp, #0x14] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r0, #1 - blt _022E7F18 - add r6, sp, #0x14 -_022E7EF4: - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r6, r4, lsl #2] - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r4, r0 - ble _022E7EF4 -_022E7F18: - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1c] - add r0, sp, #0x14 - str r1, [r0, r4, lsl #2] - bl Dwci_GetMatchCnt - ldrh r2, [r0, #0x1a] - add r3, r4, #1 - add r1, sp, #0x14 - mov r0, #0xb - str r2, [r1, r3, lsl #2] - add r4, r4, #2 - bl Dwci_SetMatchStatus - b _022E7F98 -_022E7F4C: - cmp r5, #3 - bne _022E7F98 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x16] - cmp r0, #0 - beq _022E7F98 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r6, #0x14] - ldrb r0, [r0, #0x16] - cmp r1, r0 - bne _022E7F98 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r0, #0x10 - streq r0, [sp, #0x14] - moveq r4, #1 -_022E7F98: - cmp r5, #0xff - beq _022E8BB8 - add r1, sp, #0x14 - str r1, [sp] - mov r0, r5 - mov r1, r8 - mov r2, r7 - mov r3, sl - str r4, [sp, #4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E7FD8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _022E8BB8 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x208] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a7] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1bc] - bl Dwci_GetMatchCnt - ldr r1, [r6] - add r1, r6, r1, lsl #2 - ldr r1, [r1, #4] - str r1, [r0, #0x24] - bl Dwci_GetMatchCnt - ldr r1, [r6] - add r1, r6, r1, lsl #2 - ldr r1, [r1, #8] - strh r1, [r0, #0xa4] - bl Dwci_GetMatchCnt - ldr r1, [r6] - add r1, r6, r1, lsl #2 - ldr r1, [r1, #4] - str r1, [r0, #0x1b8] - bl Dwci_GetMatchCnt - ldr r1, [r6] - add r0, r0, #0x100 - add r1, r6, r1, lsl #2 - ldr r1, [r1, #8] - strh r1, [r0, #0xb4] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E8100 - ldr r1, [r6] - add r0, r6, #4 - bl Dwci_AreAllBuddies - cmp r0, #0 - beq _022E80C0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022E8100 - mov r0, r8 - mov r1, r6 - bl Dwci_MakeBackupServerData - b _022E8100 -_022E80C0: - mov r0, r8 - bl Dwci_CancelReservation - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x118 - mov r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, r0 - mov r2, r8 - bl Dwci_SendResvCommandToFriend - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8100: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E8184 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022E8144 - mov r0, r8 - mov r1, r6 - bl Dwci_MakeBackupServerData - bl Dwci_ChangeToClient - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8144: - mov r0, #6 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - mov r1, #0 - bl ServerBrowserGetServer - mov r2, r0 - mov r0, #0 - mov r1, r0 - bl Dwci_NnStartupAsync - bl Dwci_HandleNnError - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8184: - mov r0, #5 - bl Dwci_SetMatchStatus - mov r0, r8 - bl Dwci_SbUpdateAsync - bl Dwci_HandleSbError_Match - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E81AC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _022E8BB8 - cmp r5, #0 - ble _022E81F8 - ldr r0, [r6] - cmp r0, #0x10 - bne _022E81F8 - mov r0, #0xd - mov r1, #0 - bl Dwci_StopMatching - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E81F8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - bl Dwci_RetryReserving - add sp, sp, #0x118 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E820C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _022E8BB8 - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1cc] - str r1, [r4, #0x1d0] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r0, #0 - beq _022E8260 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a7] - cmp r0, #0x10 - blo _022E8270 -_022E8260: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E82B4 -_022E8270: - bl Dwci_GetMatchCnt - mov r1, #1 - str r1, [r0, #0x1bc] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1c0] - str r1, [r4, #0x1c4] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _022E8BB8 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1a7] - add r1, r1, #1 - strb r1, [r0, #0x1a7] - b _022E8BB8 -_022E82B4: - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x208] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a7] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E8308 - mov r0, #3 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r1, #1 - str r1, [r0, #0xe8] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - str r1, [r4, #0xf0] - b _022E8BB8 -_022E8308: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E8BB8 - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl Dwci_SendResvCommandToFriend - b _022E8BB8 -_022E832C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _022E8BB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20] - cmp r8, r0 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022E838C - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - bne _022E838C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf8] - cmp r8, r0 - bne _022E838C - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2CloseAllConnectionsHard -_022E838C: - mov r0, r8 - bl Dwci_CancelPreConnectedServerProcess - cmp r0, #0 - bne _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E83A8: - ldr r0, [r6, #4] - ldr r5, [r6] - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022E83D4 - mov r0, #6 - bl Dwci_SetMatchStatus - b _022E8404 -_022E83D4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _022E83F4 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - bne _022E8BB8 -_022E83F4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20] - cmp r8, r0 - bne _022E8BB8 -_022E8404: - bl Dwci_GetMatchCnt - mov r1, #0xff - strb r1, [r0, #0x3cc] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r6, r0, lsl #2 - ldr r0, [r0, #0xf4] - cmp r8, r0 - beq _022E8450 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r6, r0, lsl #2 - str r8, [r0, #0xf4] -_022E8450: - mov r1, r4, asr #8 - mov r0, r4, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - str r5, [sp, #0xc] - strh r0, [sp, #0xa] - bl Dwci_GetMatchCnt - mov r1, #1 - strb r1, [r0, #0x194] - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2GetSocketSocket - mov r4, r0 - bl Dwci_GetMatchCnt - add r3, r0, #0x194 - mov r1, r4 - mov r0, #0 - add r2, sp, #8 - bl Dwci_NnCompletedCallback - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x18c] - str r1, [r0, #0x190] - b _022E8BB8 -_022E84B8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _022E8BB8 - ldr r0, [r6] - str r0, [sp, #0x10] - ldr r0, [r6, #4] - and r4, r0, #0xff - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E854C - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - bne _022E854C - ldr r0, [sp, #0x10] - bl Dwci_IsFriendByIdxList - str r0, [sp, #0x14] - add r0, sp, #0x14 - str r0, [sp] - mov r5, #1 - mov r1, r8 - mov r2, r7 - mov r3, sl - mov r0, #0x20 - str r5, [sp, #4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E854C: - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - ldr r1, [sp, #0x10] - add r0, r0, #1 - add r0, r5, r0, lsl #2 - str r1, [r0, #0xf4] - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r5, r0 - strb r4, [r0, #0x2d0] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x46c] - cmp r0, #0 - beq _022E8BB8 - bl Dwci_GetMatchCnt - mov r5, r0 - ldr r0, [sp, #0x10] - bl Dwci_GetFriendListIndex - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x470] - ldr r2, [r5, #0x46c] - mov r0, r4 - blx r2 - b _022E8BB8 -_022E85D0: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _022E8BB8 - ldr r0, [r6] - str r0, [sp, #0x10] - cmp r0, #0 - bne _022E8638 - ldr r5, [r6, #4] - ldr r4, [r6, #8] - bl Dwci_GetMatchCnt - add r0, r5, r0 - strb r4, [r0, #0x2d0] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r2, [r0, #0x200] - add r1, r4, r5, lsl #2 - mov r0, #3 - str r2, [r1, #0xf4] - bl Dwci_PostProcessConnection - b _022E8BB8 -_022E8638: - ldr r0, [r6, #8] - ldr r5, [r6, #4] - and r4, r0, #0xff - bl Dwci_GetMatchCnt - add r0, r0, r5, lsl #2 - ldr r1, [sp, #0x10] - ldr r0, [r0, #0xf4] - cmp r1, r0 - bne _022E86B8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - sub r0, r0, #1 - cmp r5, r0 - bne _022E86B8 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - add r1, sp, #0x10 - str r1, [sp] - mov r1, #1 - str r1, [sp, #4] - ldrh r3, [r0, #0xa4] - ldr r2, [r4, #0x24] - mov r1, r8 - mov r0, #9 - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E86B8: - bl Dwci_GetMatchCnt - ldr r1, [sp, #0x10] - add r0, r0, r5, lsl #2 - str r1, [r0, #0xf4] - bl Dwci_GetMatchCnt - add r0, r5, r0 - strb r4, [r0, #0x2d0] - bl Dwci_GetMatchCnt - ldr r1, [r6, #0xc] - add r0, r0, r5, lsl #2 - str r1, [r0, #0x24] - bl Dwci_GetMatchCnt - ldr r1, [r6, #0x10] - add r0, r0, r5, lsl #1 - strh r1, [r0, #0xa4] - bl Dwci_GetMatchCnt - ldr r1, [r6, #0xc] - str r1, [r0, #0x1b8] - bl Dwci_GetMatchCnt - add r1, r0, #0x100 - ldr r2, [r6, #0x10] - mov r0, #5 - strh r2, [r1, #0xb4] - bl Dwci_SetMatchStatus - ldr r0, [sp, #0x10] - bl Dwci_SbUpdateAsync - bl Dwci_HandleSbError_Match - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1bc] - b _022E8BB8 -_022E8750: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xd - bne _022E8BB8 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a4] - ldr r1, [r6] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - cmp r1, r0 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1a4] - add r1, r1, #1 - strb r1, [r0, #0x1a4] - mov r0, #0 - bl Dwci_PostProcessConnection - b _022E8BB8 -_022E87A4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - beq _022E87C4 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x12 - bne _022E8BB8 -_022E87C4: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E87E8 - ldr r1, [r6] - add r0, r6, #4 - bl Dwci_AreAllBuddies - cmp r0, #0 - beq _022E8804 -_022E87E8: - bl Dwci_GetMatchCnt - ldr r1, [r6, #4] - str r1, [r0, #0x208] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a7] - b _022E8810 -_022E8804: - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x208] -_022E8810: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022E8834 - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2CloseAllConnectionsHard - b _022E8BB8 -_022E8834: - bl Dwci_ResumeMatching - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E884C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E887C - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E8898 -_022E887C: - mov r0, r8 - bl Dwci_CancelPreConnectedClientProcess - cmp r0, #0 - bne _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8898: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E8BB8 - bl Dwci_GetMatchCnt - str r8, [r0, #0x20c] - bl Dwci_CloseAllConnectionsByTimeout - mov r0, #0 - bl Dwci_RestartFromCancel - b _022E8BB8 -_022E88C0: - ldr r2, [r6] - mov r0, r8 - mov r1, sb - bl Dwci_ProcessCancelMatchSynCommand - cmp r0, #0 - bne _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E88E4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - cmp r8, r0 - addne sp, sp, #0x118 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r5, #0 - mov r7, #0 - ble _022E8BB8 - mov r4, r7 -_022E890C: - ldr r0, [r6, r7, lsl #2] - mov r1, r4 - bl Dwci_GetAidFromProfileID - cmp r0, #0xff - beq _022E8924 - bl Dwc_CloseConnectionHard -_022E8924: - add r7, r7, #1 - cmp r7, r5 - blt _022E890C - b _022E8BB8 -_022E8934: - ldr r0, _022E8BC4 ; =ov00_02326F48 - ldr r4, [r0] - cmp r4, #0 - ldrneb r0, [r4] - cmpne r0, #0 - beq _022E8990 - bl OS_GetTick - ldr r3, [r4, #0x10] - ldr r2, [r4, #0x14] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _022E8BC8 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, [r4, #4] - cmp r1, #0 - cmpeq r0, r2 - movhs r0, #1 - strhs r0, [sp, #0x14] - bhs _022E8998 -_022E8990: - mov r0, #0 - str r0, [sp, #0x14] -_022E8998: - add r0, sp, #0x14 - str r0, [sp] - mov r4, #1 - mov r1, r8 - mov r2, r7 - mov r3, sl - mov r0, #0x12 - str r4, [sp, #4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E89D4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x13 - bne _022E8BB8 - mov r0, r8 - mov r1, #0 - bl Dwci_GetAidFromProfileID - cmp r0, #0xff - beq _022E8BB8 - ldr r1, _022E8BC4 ; =ov00_02326F48 - mov r4, #1 - ldr r3, [r1] - ldr r2, [r3, #8] - orr r2, r2, r4, lsl r0 - str r2, [r3, #8] - ldr r2, [r6] - cmp r2, #0 - beq _022E8BB8 - ldr r2, [r1] - ldr r1, [r2, #0xc] - orr r0, r1, r4, lsl r0 - str r0, [r2, #0xc] - b _022E8BB8 -_022E8A30: - mov r0, #0xc - mov r1, #0 - bl Dwci_StopMatching - add sp, sp, #0x118 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8A48: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E8BB8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - bne _022E8BB8 - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E8BB8 -_022E8A7C: - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _022E8B2C - ldr r0, [r6] - cmp r0, #0 - bne _022E8B04 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - beq _022E8ABC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xc - bne _022E8AD4 -_022E8ABC: - bl Dwci_InvalidateReservation - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x118 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8AD4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _022E8AFC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - bl NnCancel - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x19c] -_022E8AFC: - bl Dwci_RestartFromTimeout - b _022E8BB8 -_022E8B04: - bl Dwci_GetMatchCnt - mov r4, r0 - mov r0, r8 - mov r1, #0 - bl Dwci_GetAidFromProfileID - ldr r2, [r4, #0x1dc] - mov r1, #1 - orr r0, r2, r1, lsl r0 - str r0, [r4, #0x1dc] - b _022E8BB8 -_022E8B2C: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022E8A7C - b _022E8BB8 -_022E8B44: - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E8BB8 -_022E8B58: - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r8, r0 - bne _022E8BA4 - mov r4, #0 - str r4, [sp] - mov r1, r8 - mov r2, r7 - mov r3, sl - mov r0, #0x41 - str r4, [sp, #4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E8BB8 - add sp, sp, #0x118 - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E8BA4: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022E8B58 -_022E8BB8: - mov r0, #1 - add sp, sp, #0x118 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022E8BC4: .word ov00_02326F48 -_022E8BC8: .word 0x000082EA - arm_func_end Dwci_ProcessRecvMatchCommand - - arm_func_start Dwci_CheckResvCommand -Dwci_CheckResvCommand: ; 0x022E8BCC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E8C4C - cmp r0, #1 - beq _022E8C04 - cmp r0, #2 - beq _022E8E28 - b _022E8EEC -_022E8C04: - bl Dwci_GetMatchCnt - ldr r0, [r0] - mov r1, r8 - bl GpIsBuddy - cmp r0, #0 - beq _022E8C30 - mov r0, r8 - bl Dwci_GetFriendListIndex - mvn r1, #0 - cmp r0, r1 - bne _022E8C38 -_022E8C30: - mov r4, #0xff - b _022E8EEC -_022E8C38: - mov r0, r8 - bl Dwci_IsFriendByIdxList - cmp r0, #0 - moveq r4, #3 - beq _022E8EEC -_022E8C4C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r5, r0 - bne _022E8CB4 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a9] - cmp r0, #0 - bne _022E8CB4 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r4, #0x14] - ldrb r0, [r0, #0x16] - cmp r1, r0 - beq _022E8CB4 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _022E8D18 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r1, [r4, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - bne _022E8D18 -_022E8CB4: - mov r4, #3 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E8EEC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - ldr r0, [r0, #0xb4] - cmp r0, #0 - bne _022E8EEC - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _022E8EEC - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r1, [r5, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - bne _022E8EEC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - b _022E8EEC -_022E8D18: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #3 - beq _022E8D38 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #4 - bne _022E8D64 -_022E8D38: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1c] - cmp r0, #0 - bne _022E8D58 - bl Dwci_GetMatchCnt - ldrh r0, [r0, #0x1a] - cmp r0, #0 - beq _022E8D64 -_022E8D58: - cmp r7, #0 - cmpeq r6, #0 - bne _022E8D6C -_022E8D64: - mov r4, #4 - b _022E8EEC -_022E8D6C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - cmp r0, #0 - beq _022E8E20 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - cmp r8, r0 - bne _022E8DC8 - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _022E8DB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x200] - cmp r0, r8 - bge _022E8DC0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r8, r0 - beq _022E8DC0 -_022E8DB8: - mov r4, #2 - b _022E8EEC -_022E8DC0: - mov r4, #0xff - b _022E8EEC -_022E8DC8: - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _022E8DF4 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x200] - cmp r0, r8 - bge _022E8E18 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r0, #0 - bne _022E8E18 -_022E8DF4: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - bl Dwci_CancelReservation - bl Dwci_HandleMatchCommandError - cmp r0, #0 - movne r0, #0xff - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r4, #2 - b _022E8EEC -_022E8E18: - mov r4, #3 - b _022E8EEC -_022E8E20: - mov r4, #2 - b _022E8EEC -_022E8E28: - bl Dwci_GetMatchCnt - ldr r0, [r0] - mov r1, r8 - bl GpIsBuddy - cmp r0, #0 - beq _022E8E54 - mov r0, r8 - bl Dwci_GetFriendListIndex - mvn r1, #0 - cmp r0, r1 - bne _022E8E5C -_022E8E54: - mov r4, #0xff - b _022E8EEC -_022E8E5C: - cmp r5, #3 - bne _022E8E80 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r4, #0x14] - ldrb r0, [r0, #0x16] - cmp r1, r0 - bne _022E8E88 -_022E8E80: - mov r4, #3 - b _022E8EEC -_022E8E88: - ldr r0, _022E8EF4 ; =ov00_02326F48 - ldrb r1, [r0, #0x1c] - cmp r1, #1 - ldreqb r0, [r0, #0x1d] - cmpeq r0, #1 - moveq r4, #0x13 - beq _022E8EEC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xa - bne _022E8EE0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1c] - cmp r0, #0 - bne _022E8ED4 - bl Dwci_GetMatchCnt - ldrh r0, [r0, #0x1a] - cmp r0, #0 - beq _022E8EE0 -_022E8ED4: - cmp r7, #0 - cmpeq r6, #0 - bne _022E8EE8 -_022E8EE0: - mov r4, #4 - b _022E8EEC -_022E8EE8: - mov r4, #2 -_022E8EEC: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E8EF4: .word ov00_02326F48 - arm_func_end Dwci_CheckResvCommand - - arm_func_start Dwci_ProcessResvOK -Dwci_ProcessResvOK: ; 0x022E8EF8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _022E8F34 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20] - cmp r6, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E8F34: - bl Dwci_GetMatchCnt - mov r1, #1 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - str r6, [r0, #0x20] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1bc] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x204] - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r7, r0, lsl #2 - str r6, [r0, #0xf4] - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r7, r0, lsl #2 - str r5, [r0, #0x24] - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - add r0, r0, #1 - add r0, r7, r0, lsl #1 - strh r4, [r0, #0xa4] - bl Dwci_GetMatchCnt - str r5, [r0, #0x1b8] - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - strh r4, [r0, #0xb4] - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetAidFromList - ldrb r1, [r4, #0x14] - add r1, r1, #1 - add r1, r5, r1 - strb r0, [r1, #0x2d0] - str r6, [sp, #8] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - mov r7, #1 - add r0, r0, #1 - add r0, r4, r0 - ldrb r0, [r0, #0x2d0] - str r0, [sp, #0xc] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r0, #1 - blt _022E90A4 - add r6, sp, #8 - mov r5, #2 - mov r4, #7 -_022E9048: - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - mov r8, r0 - bl Dwci_GetMatchCnt - str r6, [sp] - str r5, [sp, #4] - add r0, r0, r7, lsl #1 - add r1, sb, r7, lsl #2 - add r2, r8, r7, lsl #2 - ldrh r3, [r0, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r4 - bl Dwci_SendMatchCommand - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r7, r7, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r7, r0 - ble _022E9048 -_022E90A4: - mov r0, #1 - bl Dwci_InitOptMinCompParam - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end Dwci_ProcessResvOK - - arm_func_start Dwci_MakeBackupServerData -Dwci_MakeBackupServerData: ; 0x022E90B8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r1, [r5] - mov r6, r0 - add r4, r1, #2 - cmp r4, #2 - bls _022E90F0 - bl Dwci_GetMatchCnt - mov r1, r0 - sub r2, r4, #2 - add r0, r5, #4 - add r1, r1, #0x350 - mov r2, r2, lsl #2 - bl MTi_CpuCopy32 -_022E90F0: - bl Dwci_GetMatchCnt - sub r1, r4, #1 - str r1, [r0, #0x348] - bl Dwci_GetMatchCnt - str r6, [r0, #0x34c] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_MakeBackupServerData - - arm_func_start Dwci_HandleMatchCommandError -Dwci_HandleMatchCommandError: ; 0x022E9108 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - mov r0, r4 - bne _022E912C - bl Dwci_HandleSbError_Match - ldmia sp!, {r4, pc} -_022E912C: - bl Dwci_HandleGpError_Match - ldmia sp!, {r4, pc} - arm_func_end Dwci_HandleMatchCommandError - - arm_func_start Dwci_SendResvCommand -Dwci_SendResvCommand: ; 0x022E9134 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r5, r0 - cmp r1, #0 - bne _022E9168 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1c] - cmp r0, #0 - bne _022E91A8 - bl Dwci_GetMatchCnt - ldrh r0, [r0, #0x1a] - cmp r0, #0 - bne _022E91A8 -_022E9168: - bl Dwci_GetMatchCnt - mov r1, #1 - str r1, [r0, #0x1bc] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1c0] - str r1, [r4, #0x1c4] - bl Dwci_GetMatchCnt - str r5, [r0, #0xf4] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x204] - add sp, sp, #0x14 - mov r0, r1 - ldmia sp!, {r4, r5, r6, r7, pc} -_022E91A8: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E922C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - mov r1, #0 - bl ServerBrowserGetServer - mov r6, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - ldr r1, _022E92E8 ; =ov00_0231A208 - mov r0, r6 - mov r2, #0 - bl SbServerGetIntValueA - str r0, [r4, #0xf4] - bl Dwci_GetMatchCnt - mov r4, r0 - mov r0, r6 - bl SbServerGetPublicInetAddress - str r0, [r4, #0x24] - bl Dwci_GetMatchCnt - mov r4, r0 - mov r0, r6 - bl SbServerGetPublicQueryPort - strh r0, [r4, #0xa4] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - mov r4, #1 - str r0, [r6, #0x204] - b _022E9268 -_022E922C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E9244 - bl Dwci_GetMatchCnt - str r5, [r0, #0xf4] -_022E9244: - bl Dwci_GetMatchCnt - str r5, [r0, #0x204] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1c] - str r0, [sp, #0xc] - bl Dwci_GetMatchCnt - ldrh r0, [r0, #0x1a] - mov r4, #3 - str r0, [sp, #0x10] -_022E9268: - bl Dwci_GetMatchCnt - ldr r1, _022E92EC ; =0x00001770 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - mov r6, r0 - bl OS_GetTick - str r0, [r6, #0x1cc] - str r1, [r6, #0x1d0] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1bc] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r0, #0 - movne r7, #0xb - moveq r7, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - str r0, [sp, #8] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - add r2, sp, #8 - stmia sp, {r2, r4} - mov r3, r0 - ldrh r3, [r3, #0xa4] - ldr r2, [r6, #0x24] - mov r1, r5 - mov r0, r7 - bl Dwci_SendMatchCommand - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_022E92E8: .word ov00_0231A208 -_022E92EC: .word 0x00001770 - arm_func_end Dwci_SendResvCommand - - arm_func_start Dwci_SendResvCommandToFriend -Dwci_SendResvCommandToFriend: ; 0x022E92F0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x22c - movs r4, r1 - mov r8, r0 - mov fp, r2 - beq _022E9314 - bl Dwci_GetMatchCnt - ldrb r6, [r0, #0x1a5] - b _022E9344 -_022E9314: - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x344] - ldrb r1, [r5, #0x1a5] - sub r0, r0, #1 - cmp r1, r0 - movge r6, #0 - bge _022E9344 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a5] - add r6, r0, #1 -_022E9344: - cmp r4, #0 - mov r5, #0 - moveq r7, #1 - movne r7, r5 -_022E9354: - cmp r7, #0 - cmpeq r5, #0 - beq _022E9398 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1a5] - add r1, r1, #1 - strb r1, [r0, #0x1a5] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r4, #0x1a5] - ldr r0, [r0, #0x344] - cmp r1, r0 - blt _022E9398 - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a5] -_022E9398: - cmp r5, #0 - beq _022E93E8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a5] - cmp r6, r0 - bne _022E93E8 - bl Dwci_GetMatchCnt - ldr r1, _022E95A8 ; =0x00000BB8 - str r1, [r0, #0x1c8] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1cc] - str r1, [r4, #0x1d0] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1bc] - add sp, sp, #0x22c - mov r0, r1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022E93E8: - mov r5, #1 - bl Dwci_GetUserData - mov sl, r0 - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, r0 - ldrb r2, [r1, #0x1a5] - ldr r3, [sb, #0x2fc] - mov r1, #0xc - add r2, r4, r2 - ldrb r2, [r2, #0x304] - mov r0, sl - mla r1, r2, r1, r3 - bl Dwc_GetGsProfileId - movs r4, r0 - mvnne r0, #0 - cmpne r4, r0 - beq _022E9354 - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1a5] - ldr r2, [sl, #0x2fc] - mov r0, #0xc - add r1, sb, r1 - ldrb r1, [r1, #0x304] - mla r0, r1, r0, r2 - bl Dwci_Acc_IsValidFriendData - cmp r0, #0 - beq _022E9354 - mov sb, r5 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E94B0 -_022E9488: - bl Dwci_GetMatchCnt - add r0, r0, sb, lsl #2 - ldr r0, [r0, #0xf4] - cmp r4, r0 - beq _022E94B0 - add sb, sb, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp sb, r0 - ble _022E9488 -_022E94B0: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp sb, r0 - ble _022E9354 - bl Dwci_GetMatchCnt - ldr r0, [r0] - add r2, sp, #4 - mov r1, r4 - bl GpGetBuddyIndex - mov sb, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0] - ldr r1, [sp, #4] - add r2, sp, #0x18 - bl GpGetBuddyStatus - orrs r0, sb, r0 - ldreq r0, [sp, #0x1c] - cmpeq r0, #4 - bne _022E9354 - ldr r0, _022E95AC ; =ov00_0231A1CC - add r1, sp, #0xc - add r2, sp, #0x20 - mov r3, #0x2f - bl Dwc_GetCommonValueString - mov sl, r0 - ldr r0, _022E95B0 ; =ov00_0231A1C4 - add r1, sp, #8 - add r2, sp, #0x20 - mov r3, #0x2f - bl Dwc_GetCommonValueString - mov sb, r0 - ldr r0, _022E95B4 ; =ov00_0231A1C8 - add r1, sp, #0 - add r2, sp, #0x20 - mov r3, #0x2f - bl Dwc_GetCommonValueString - cmp sl, #0 - cmpgt sb, #0 - cmpgt r0, #0 - ble _022E9354 - add r0, sp, #0xc - mov r1, #0 - mov r2, #0xa - bl strtoul - cmp r0, #3 - bne _022E9354 - add r0, sp, #8 - mov r1, #0 - mov r2, #0xa - bl strtoul - mov sb, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x16] - cmp sb, r0 - bne _022E9354 - cmp r4, fp - moveq r8, #1 - mov r0, r4 - mov r1, r8 - bl Dwci_SendResvCommand - add sp, sp, #0x22c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E95A8: .word 0x00000BB8 -_022E95AC: .word ov00_0231A1CC -_022E95B0: .word ov00_0231A1C4 -_022E95B4: .word ov00_0231A1C8 - arm_func_end Dwci_SendResvCommandToFriend - - arm_func_start Dwci_RetryReserving -Dwci_RetryReserving: ; 0x022E95B8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x208] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x204] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a7] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1cc] - str r1, [r4, #0x1d0] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E962C - mov r0, #3 - bl Dwci_SetMatchStatus - mov r0, #0 - bl Dwci_SbUpdateAsync - bl Dwci_HandleSbError_Match - cmp r0, #0 - beq _022E9684 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E962C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E9660 - mov r0, #0 - mov r1, r0 - mov r2, r5 - bl Dwci_SendResvCommandToFriend - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022E9684 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E9660: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E9684 - ldr r1, _022E968C ; =0xFFFEC5E6 - mov r0, #6 - bl Dwci_StopMatching - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E9684: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E968C: .word 0xFFFEC5E6 - arm_func_end Dwci_RetryReserving - - arm_func_start Dwci_CancelReservation -Dwci_CancelReservation: ; 0x022E9690 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldrh r3, [r0, #0xa4] - ldr r2, [r4, #0x24] - mov r1, r5 - mov r0, #5 - bl Dwci_SendMatchCommand - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x204] - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_CancelReservation - - arm_func_start Dwci_CancelPreConnectedServerProcess -Dwci_CancelPreConnectedServerProcess: ; 0x022E96E4 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _022E971C - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r1, [r4, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - moveq r4, #0 - beq _022E9720 -_022E971C: - mov r4, #1 -_022E9720: - cmp r4, #0 - beq _022E974C - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged -_022E974C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0x1f - bhs _022E977C - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - mov r1, #0 - add r0, r0, #1 - add r0, r6, r0, lsl #2 - str r1, [r0, #0xf4] -_022E977C: - bl Dwci_GetMatchCnt - mov r1, #0xff - strb r1, [r0, #0x3cc] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _022E97B0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - bl NnCancel - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x19c] -_022E97B0: - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - strb r0, [r6, #0x14] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x204] - cmp r4, #0 - bne _022E97F0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _022E98F8 - bl Dwci_RestartFromTimeout - b _022E98F8 -_022E97F0: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E982C - mov r0, #3 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r1, #2 - str r1, [r0, #0xe8] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - str r1, [r4, #0xf0] - b _022E98F8 -_022E982C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E9858 - mov r0, #4 - bl Dwci_SetMatchStatus - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl Dwci_SendResvCommandToFriend - b _022E98F8 -_022E9858: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022E98F8 - mov r0, #0xe - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1d8] - bl Dwci_GetMatchCnt - add r1, r0, #0x100 - mov r2, #0 - mov r0, r5 - strh r2, [r1, #0xb2] - bl Dwci_CloseCancelHostAsync - mov r5, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E98E0 - mov r4, #0xd -_022E98AC: - bl Dwci_GetMatchCnt - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - mov r1, r4 - bl Dwci_SendCancelMatchSynCommand - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _022E98AC -_022E98E0: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - bne _022E98F8 - mov r0, #2 - bl Dwci_RestartFromCancel -_022E98F8: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_CancelPreConnectedServerProcess - - arm_func_start Dwci_CancelPreConnectedClientProcess -Dwci_CancelPreConnectedClientProcess: ; 0x022E9900 - stmdb sp!, {r3, r4, r5, lr} - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E9940 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022E992C - bl Dwci_CloseAllConnectionsByTimeout -_022E992C: - ldr r1, _022E99BC ; =0xFFFEC5D2 - mov r0, #6 - bl Dwci_StopMatching - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E9940: - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - strb r0, [r5, #0x14] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x208] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - cmp r0, #0 - beq _022E9988 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x19c] - bl NnCancel - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x19c] -_022E9988: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022E99A0 - bl Dwci_RestartFromTimeout - b _022E99B4 -_022E99A0: - mov r0, #4 - bl Dwci_SetMatchStatus - mov r0, #0 - bl Dwci_RetryReserving - mov r4, r0 -_022E99B4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E99BC: .word 0xFFFEC5D2 - arm_func_end Dwci_CancelPreConnectedClientProcess - - arm_func_start Dwci_ChangeToClient -Dwci_ChangeToClient: ; 0x022E99C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E9A58 - mov r5, #0xa -_022E99E0: - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - mov r8, r0 - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - add r1, r6, #0x348 - str r1, [sp] - ldr ip, [r0, #0x348] - add r3, r7, r4, lsl #1 - add ip, ip, #1 - str ip, [sp, #4] - add r1, sb, r4, lsl #2 - add r2, r8, r4, lsl #2 - ldrh r3, [r3, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r5 - bl Dwci_SendMatchCommand - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022E99E0 -_022E9A58: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20] - bl Dwci_GetMatchCnt - mov r1, #1 - strb r1, [r0, #0x1a8] - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2CloseAllConnectionsHard - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a8] - mov r0, r1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end Dwci_ChangeToClient - - arm_func_start Dwci_PostProcessConnection -Dwci_PostProcessConnection: ; 0x022E9AA4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x1c - cmp r0, #4 - mov r4, #3 - mov r5, #0 - addls pc, pc, r0, lsl #2 - b _022EA12C -_022E9AC0: ; jump table - b _022E9AD4 ; case 0 - b _022E9E74 ; case 1 - b _022E9EB8 ; case 2 - b _022E9F7C ; case 3 - b _022E9F9C ; case 4 -_022E9AD4: - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - ldrb r1, [r6, #0x1a4] - sub r0, r0, #1 - cmp r1, r0 - bge _022E9B94 - mov r0, #0xd - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [sp, #8] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - str r0, [sp, #0xc] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - add r0, r4, r0 - ldrb r0, [r0, #0x2d0] - str r0, [sp, #0x10] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a4] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0x24] - str r0, [sp, #0x14] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a4] - mov r4, #5 - add r0, r0, #1 - add r0, r6, r0, lsl #1 - ldrh r0, [r0, #0xa4] - str r0, [sp, #0x18] - b _022E9DE0 -_022E9B94: - bl Dwci_GetMatchCnt - mov r1, r5 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r1, r5 - str r1, [r0, #0x20] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x10] - bl qr2_send_statechanged - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E9BD4 - mov r0, r4 - bl Dwci_SetMatchStatus - b _022E9BF8 -_022E9BD4: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E9BF0 - mov r0, #4 - bl Dwci_SetMatchStatus - b _022E9BF8 -_022E9BF0: - mov r0, #0xa - bl Dwci_SetMatchStatus -_022E9BF8: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a4] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _022E9C30 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r6, #0xd] - ldrb r0, [r0, #0x16] - cmp r1, r0 - bne _022E9CE0 -_022E9C30: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022E9C68 - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r6, r0, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r7, #0x20c] - b _022E9C88 -_022E9C68: - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20c] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x200] - str r0, [r6, #0xf4] -_022E9C88: - mov r0, #0x10 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x1d4] - mov r7, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022E9DD0 - mov r6, #2 -_022E9CB4: - bl Dwci_GetMatchCnt - add r0, r0, r7 - ldrb r0, [r0, #0x2d0] - mov r1, r6 - bl Dwci_SendMatchSynPacket - add r7, r7, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r7, r0 - ble _022E9CB4 - b _022E9DD0 -_022E9CE0: - mov r0, #0 - str r0, [sp, #8] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - str r0, [sp, #0xc] - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r6, r0 - ldrb r0, [r0, #0x2d0] - str r0, [sp, #0x10] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022E9D44 - bl Dwci_GetMatchCnt - mov r1, #2 - str r1, [r0, #0xe8] - bl Dwci_GetMatchCnt - mov r6, r0 - bl OS_GetTick - str r0, [r6, #0xec] - str r1, [r6, #0xf0] - b _022E9DD0 -_022E9D44: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E9DD0 - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl Dwci_SendResvCommandToFriend - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - bne _022E9DD0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #2 - blo _022E9DD0 - bl Dwci_GetMatchCnt - mov r8, r0 - mov r0, #0 - bl Dwci_GetAidBitmask - mov r6, r0 - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - mov r1, #1 - ldr r2, [r8, #0x1dc] - add r0, r7, r0 - ldrb r0, [r0, #0x2d0] - mvn r0, r1, lsl r0 - and r0, r6, r0 - cmp r2, r0 - beq _022E9DD0 - bl Dwci_RestartFromTimeout - b _022EA12C -_022E9DD0: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - movne r5, #1 -_022E9DE0: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x10 - beq _022EA12C - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - mov r8, r0 - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - add r1, sp, #8 - stmia sp, {r1, r4} - mov ip, r0 - ldrb r3, [sb, #0xd] - ldrb r2, [r7, #0xd] - ldrb r1, [ip, #0xd] - add r4, sl, r3, lsl #2 - add r2, r8, r2, lsl #2 - add r3, r6, r1, lsl #1 - ldrh r3, [r3, #0xa4] - ldr r1, [r4, #0xf4] - ldr r2, [r2, #0x24] - mov r0, #8 - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x3cd] - b _022EA12C -_022E9E74: - mov r0, #1 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022E9EB0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r5, #0x20c] -_022E9EB0: - mov r5, #1 - b _022EA12C -_022E9EB8: - mov r0, #1 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022E9EE0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022E9F00 -_022E9EE0: - bl Dwci_GetMatchCnt - mov r1, #1 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x200] - str r0, [r4, #0x20] -_022E9F00: - bl Dwci_InitClWaitTimeout - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - bls _022EA12C - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - mov r8, r0 - bl Dwci_GetMatchCnt - add r3, r8, #0xf4 - ldrb r2, [r0, #0xd] - mov r1, #1 - mov r0, #9 - sub r2, r2, #1 - add r2, r3, r2, lsl #2 - str r2, [sp] - str r1, [sp, #4] - ldr r1, [r7, #0xf4] - ldr r2, [r6, #0x24] - ldrh r3, [r4, #0xa4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022EA12C - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022E9F7C: - mov r0, #1 - bl Dwci_SetMatchStatus - bl Dwci_InitClWaitTimeout - bl Dwci_GetMatchCnt - mov r1, r5 - str r1, [r0, #0x20c] - mov r5, #1 - b _022EA12C -_022E9F9C: - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - ble _022EA000 -_022E9FB0: - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - cmp r0, #0 - beq _022E9FD8 - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - cmp r0, #0x20 - blo _022E9FEC -_022E9FD8: - ldr r1, _022EA160 ; =0xFFFEA2A0 - mov r0, #0x15 - bl Dwci_StopMatching - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022E9FEC: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - blt _022E9FB0 -_022EA000: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _022EA020 - ldr r1, _022EA164 ; =ov00_0231A1BC - mov r0, #2 - mov r2, #0 - bl Dwci_SetGpStatus -_022EA020: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r7, #1 - movne r7, #0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - bl Dwci_GetFriendListIndex - mov r4, r0 - bl Dwci_GetMatchCnt - str r4, [sp] - ldr r1, [r0, #0x468] - mov r0, #0 - str r1, [sp, #4] - ldr r4, [r6, #0x464] - mov r2, r7 - mov r1, r0 - mov r3, r0 - blx r4 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022EA094 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022EA09C -_022EA094: - bl Dwci_CloseMatching - b _022EA120 -_022EA09C: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - cmp r0, #0 - beq _022EA0C4 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserFree - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0xe4] -_022EA0C4: - bl Dwci_NnFreeNegotiateList - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022EA10C - bl Dwci_GpSetServerStatus - bl Dwci_HandleGpError_Match - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, _022EA168 ; =ov00_02326F48 - ldrb r1, [r0, #0x1c] - cmp r1, #1 - moveq r1, #1 - streqb r1, [r0, #0x1d] - mov r0, #0xa - bl Dwci_SetMatchStatus - b _022EA114 -_022EA10C: - mov r0, #1 - bl Dwci_SetMatchStatus -_022EA114: - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20c] -_022EA120: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a9] -_022EA12C: - cmp r5, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xe4] - bl ServerBrowserClear - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022EA160: .word 0xFFFEA2A0 -_022EA164: .word ov00_0231A1BC -_022EA168: .word ov00_02326F48 - arm_func_end Dwci_PostProcessConnection - - arm_func_start Dwci_AreAllBuddies -Dwci_AreAllBuddies: ; 0x022EA16C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - beq _022EA19C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_022EA19C: - cmp r5, #0 - mov r4, #0 - bls _022EA1EC -_022EA1A8: - ldr r0, [r6, r4, lsl #2] - bl Dwci_IsFriendByIdxList - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1a6] - cmp r0, #0 - beq _022EA1E0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_022EA1E0: - add r4, r4, #1 - cmp r4, r5 - blo _022EA1A8 -_022EA1EC: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_AreAllBuddies - - arm_func_start Dwci_FinishCancelMatching -Dwci_FinishCancelMatching: ; 0x022EA1F4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r1, _022EA2B0 ; =ov00_0231A1BC - mov r0, #1 - mov r2, #0 - bl Dwci_SetGpStatus - bl Dwci_HandleGpError_Match - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_CloseMatching - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - cmp r0, #0 - movne r6, #1 - bne _022EA248 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - moveq r6, #1 - movne r6, #0 -_022EA248: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r7, #1 - movne r7, #0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - bl Dwci_GetFriendListIndex - mov r4, r0 - bl Dwci_GetMatchCnt - str r4, [sp] - ldr r1, [r0, #0x468] - mov r2, r7 - str r1, [sp, #4] - ldr ip, [r5, #0x464] - mov r3, r6 - mov r0, #0 - mov r1, #1 - blx ip - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a9] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EA2B0: .word ov00_0231A1BC - arm_func_end Dwci_FinishCancelMatching - - arm_func_start Dwci_InvalidateReservation -Dwci_InvalidateReservation: ; 0x022EA2B4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r4, #0 - str r4, [sp, #8] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17] - cmp r0, #0 - beq _022EA37C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20] - cmp r0, #0 - beq _022EA37C - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r1, [r5, #0x20] - ldr r0, [r0, #0x200] - cmp r1, r0 - beq _022EA37C - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - add r2, sp, #8 - mov r1, #1 - str r2, [sp] - str r1, [sp, #4] - ldrb r3, [r0, #0xd] - ldrb r2, [r6, #0xd] - ldr r1, [r7, #0x20] - add r3, r3, #1 - add r2, r2, #1 - add r3, r4, r3, lsl #1 - add r2, r5, r2, lsl #2 - ldrh r3, [r3, #0xa4] - ldr r2, [r2, #0x24] - mov r0, #0xc - bl Dwci_SendMatchCommand - mov r4, r0 - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20] -_022EA37C: - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end Dwci_InvalidateReservation - - arm_func_start Dwci_RestartFromCancel -Dwci_RestartFromCancel: ; 0x022EA388 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - movs r4, r0 - bne _022EA3A4 - bl Dwci_FinishCancelMatching - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_022EA3A4: - bl Dwci_ResetMatchParam - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _022EA3C8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - bne _022EA424 -_022EA3C8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - cmp r0, #0 - moveq r6, #1 - movne r6, #0 - bl Dwci_GetMatchCnt - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - bl Dwci_GetFriendListIndex - mov r4, r0 - bl Dwci_GetMatchCnt - str r4, [sp] - ldr r1, [r0, #0x468] - mov r0, #0 - str r1, [sp, #4] - ldr ip, [r5, #0x464] - mov r2, r6 - mov r1, #1 - mov r3, r0 - blx ip - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_022EA424: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022EA458 - cmp r4, #1 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - bl Dwci_SbUpdateAsync - bl Dwci_HandleSbError_Match - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022EA458: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - cmpeq r4, #1 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - mov r1, r0 - mov r2, r0 - bl Dwci_SendResvCommandToFriend - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_RestartFromCancel - - arm_func_start Dwci_RestartFromTimeout -Dwci_RestartFromTimeout: ; 0x022EA488 - stmdb sp!, {r3, lr} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - ldmeqia sp!, {r3, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - ldmeqia sp!, {r3, pc} - bl Dwci_CloseAllConnectionsByTimeout - mov r0, #1 - bl Dwci_RestartFromCancel - ldmia sp!, {r3, pc} - arm_func_end Dwci_RestartFromTimeout - - arm_func_start Dwci_ResumeMatching -Dwci_ResumeMatching: ; 0x022EA4BC - stmdb sp!, {r4, lr} - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x20] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a8] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - cmp r0, #0 - beq _022EA56C - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022EA52C - mov r0, #3 - bl Dwci_SetMatchStatus - mov r0, #0 - bl Dwci_SbUpdateAsync - mov r4, r0 - bl Dwci_HandleSbError_Match - cmp r0, #0 - beq _022EA574 - mov r0, r4 - ldmia sp!, {r4, pc} -_022EA52C: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022EA574 - mov r0, #4 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x208] - mov r1, #0 - bl Dwci_SendResvCommand - mov r4, r0 - bl Dwci_HandleMatchCommandError - cmp r0, #0 - beq _022EA574 - mov r0, r4 - ldmia sp!, {r4, pc} -_022EA56C: - mov r0, #1 - bl Dwci_RestartFromCancel -_022EA574: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end Dwci_ResumeMatching - - arm_func_start Dwci_CloseCancelHostAsync -Dwci_CloseCancelHostAsync: ; 0x022EA57C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl Dwci_GetMatchCnt - str r5, [r0, #0x20c] - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - mov r0, r5 - add r1, r1, #1 - bl Dwci_GetGT2ConnectionByProfileID - movs r4, r0 - beq _022EA5D0 - bl Dwci_GetMatchCnt - mov r1, #2 - strb r1, [r0, #0x1a8] - ldr r0, [r4] - bl Gt2CloseConnectionHard - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a8] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022EA5D0: - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - mov r0, r5 - add r1, r1, #1 - bl Dwci_DeleteHostByProfileID - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_CloseCancelHostAsync - - arm_func_start Dwci_CloseAllConnectionsByTimeout -Dwci_CloseAllConnectionsByTimeout: ; 0x022EA5EC - stmdb sp!, {r3, lr} - bl Dwci_GetMatchCnt - mov r1, #2 - strb r1, [r0, #0x1a8] - bl Dwci_GetMatchCnt - ldr r0, [r0, #4] - ldr r0, [r0] - bl Gt2CloseAllConnectionsHard - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a8] - ldmia sp!, {r3, pc} - arm_func_end Dwci_CloseAllConnectionsByTimeout - - arm_func_start Dwci_CloseShutdownClientSC -Dwci_CloseShutdownClientSC: ; 0x022EA61C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x108 - mov r7, #0 - mov sl, r0 - arm_func_end Dwci_CloseShutdownClientSC - - arm_func_start ov00_022EA62C -ov00_022EA62C: ; 0x022EA62C - mov r8, r7 - mov sb, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EA6A4 - add r4, sp, #0x88 - add r5, sp, #8 - mov r6, sb -_022EA650: - bl Dwci_GetMatchCnt - add r0, r0, sb - ldrb r0, [r0, #0x2d0] - tst sl, r6, lsl r0 - beq _022EA67C - bl Dwci_GetMatchCnt - add r0, r0, sb, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r5, r8, lsl #2] - add r8, r8, #1 - b _022EA690 -_022EA67C: - bl Dwci_GetMatchCnt - add r0, r0, sb, lsl #2 - ldr r0, [r0, #0xf4] - str r0, [r4, r7, lsl #2] - add r7, r7, #1 -_022EA690: - add sb, sb, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp sb, r0 - ble _022EA650 -_022EA6A4: - cmp r8, #0 - mov sl, #0 - ble _022EA6FC - add sb, sp, #0x88 - mov r6, #0x10 - add r5, sp, #8 - mov r4, sl -_022EA6C0: - ldr r1, [r5, sl, lsl #2] - str sb, [sp] - mov r0, r6 - mov r2, r4 - mov r3, r4 - str r7, [sp, #4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0x108 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add sl, sl, #1 - cmp sl, r8 - blt _022EA6C0 -_022EA6FC: - bl Dwci_GetMatchCnt - mov r1, #2 - strb r1, [r0, #0x1a8] - cmp r7, #0 - mov r6, #0 - ble _022EA740 - add r5, sp, #0x88 - mov r4, r6 -_022EA71C: - ldr r0, [r5, r6, lsl #2] - mov r1, r4 - bl Dwci_GetAidFromProfileID - cmp r0, #0xff - beq _022EA734 - bl Dwc_CloseConnectionHard -_022EA734: - add r6, r6, #1 - cmp r6, r7 - blt _022EA71C -_022EA740: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1a8] - mov r0, #1 - add sp, sp, #0x108 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov00_022EA62C - - arm_func_start Dwci_SendMatchSynPacket -Dwci_SendMatchSynPacket: ; 0x022EA758 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r1 - mov r5, r0 - cmp r4, #2 - beq _022EA77C - cmp r4, #3 - beq _022EA7F4 - b _022EA818 -_022EA77C: - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r6, r0 - ldrb r0, [r0, #0x2d0] - mov r6, #1 - cmp r5, r0 - moveq r0, #1 - streqb r0, [sp] - movne r0, #0 - strneb r0, [sp] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blo _022EA818 -_022EA7BC: - bl Dwci_GetMatchCnt - add r0, r0, r6 - ldrb r0, [r0, #0x2d0] - cmp r5, r0 - streqb r6, [sp, #1] - streqb r5, [sp, #2] - beq _022EA818 - add r0, r6, #1 - and r6, r0, #0xff - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r6, r0 - bls _022EA7BC - b _022EA818 -_022EA7F4: - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - strb r0, [sp] - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - mov r0, r0, asr #8 - strb r0, [sp, #1] -_022EA818: - add r2, sp, #0 - mov r0, r4 - mov r1, r5 - mov r3, #4 - bl Dwci_SendReliable - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e0] - str r1, [r4, #0x1e4] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Dwci_SendMatchSynPacket - - arm_func_start Dwci_ProcessMatchSynTimeout -Dwci_ProcessMatchSynTimeout: ; 0x022EA848 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #9 - beq _022EA87C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x10 - beq _022EA87C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x11 - bne _022EA8C0 -_022EA87C: - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1e0] - ldr r0, [r0, #0x1e4] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022EAAB0 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r4, r0 - mov r5, r1 - b _022EA8C8 -_022EA8C0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EA8C8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #9 - beq _022EA8EC - cmp r0, #0x10 - beq _022EA958 - cmp r0, #0x11 - beq _022EAA88 - b _022EAAA8 -_022EA8EC: - ldr r0, _022EAAB4 ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _022EAAA8 - bl Dwc_GetState - cmp r0, #5 - bne _022EA934 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1ad] - cmp r0, #5 - blo _022EA934 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedClientProcess - cmp r0, #0 - bne _022EAAA8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EA934: - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1ad] - add r1, r1, #1 - strb r1, [r0, #0x1ad] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x2d0] - mov r1, #3 - bl Dwci_SendMatchSynPacket - b _022EAAA8 -_022EA958: - ldr r0, _022EAAB4 ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _022EAAA8 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1ab] - add r1, r1, #1 - strb r1, [r0, #0x1ab] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1ab] - cmp r0, #5 - bls _022EAA20 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022EA9A8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #1 - bne _022EA9B8 -_022EA9A8: - bl Dwci_CloseAllConnectionsByTimeout - mov r0, #1 - bl Dwci_RestartFromCancel - b _022EAAA8 -_022EA9B8: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1d4] - bl Dwci_CloseShutdownClientSC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022EAA04 - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ab] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e0] - str r1, [r4, #0x1e4] - b _022EAAA8 -_022EAA04: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - bl Dwci_CancelPreConnectedServerProcess - cmp r0, #0 - bne _022EAAA8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EAA20: - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EAAA8 - mov r5, #2 - mov r6, r4 -_022EAA3C: - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - ldr r1, [r7, #0x1d4] - tst r1, r6, lsl r0 - bne _022EAA70 - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - mov r1, r5 - bl Dwci_SendMatchSynPacket -_022EAA70: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022EAA3C - b _022EAAA8 -_022EAA88: - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r0, [r0, #0xb0] - cmp r5, r0, asr #31 - cmpeq r4, r0 - bls _022EAAA8 - mov r0, #4 - bl Dwci_PostProcessConnection -_022EAAA8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EAAB0: .word 0x000082EA -_022EAAB4: .word 0x00001770 - arm_func_end Dwci_ProcessMatchSynTimeout - - arm_func_start Dwci_SendCancelMatchSynCommand -Dwci_SendCancelMatchSynCommand: ; 0x022EAAB8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r5, r1 - cmp r5, #0xd - mov r6, r0 - movne r4, #0 - bne _022EAAE4 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x20c] - mov r4, #1 - str r0, [sp, #8] -_022EAAE4: - add r0, sp, #8 - str r0, [sp] - mov r2, #0 - mov r0, r5 - mov r1, r6 - mov r3, r2 - str r4, [sp, #4] - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #0xc - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, pc} - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e8] - str r1, [r4, #0x1ec] - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Dwci_SendCancelMatchSynCommand - - arm_func_start Dwci_ProcessCancelMatchSynCommand -Dwci_ProcessCancelMatchSynCommand: ; 0x022EAB38 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwc_GetState - cmp r0, #6 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - cmp r5, #0xd - beq _022EAB74 - cmp r5, #0xe - beq _022EABB0 - cmp r5, #0xf - beq _022EAD38 - b _022EAD50 -_022EAB74: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #8 - beq _022EAB94 - mov r0, #8 - bl Dwci_SetMatchStatus - mov r0, r4 - bl Dwci_CloseCancelHostAsync -_022EAB94: - mov r0, r6 - mov r1, #0xe - bl Dwci_SendCancelMatchSynCommand - cmp r0, #0 - bne _022EAD50 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022EABB0: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xe - bne _022EAD1C - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1e8] - ldr r0, [r0, #0x1ec] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022EAD58 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r2, r0, lsr #1 - mov r0, r1, lsr #1 - cmp r0, #0 - orr r2, r2, r1, lsl #31 - cmpeq r2, #0x12c - bls _022EAC7C - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1e8] - ldr r0, [r0, #0x1ec] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022EAD58 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r3, r0, lsr #1 - mov r0, #0x12c - orr r3, r3, r1, lsl #31 - rsb r0, r0, #0 - mvn r2, #0 - adds r5, r3, r0 - adc r4, r2, r1, lsr #1 - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r0, [r0, #0xb2] - cmp r4, r0, asr #31 - cmpeq r5, r0 - bls _022EAC7C - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - strh r5, [r0, #0xb2] -_022EAC7C: - mov r0, r6 - mov r1, #0 - bl Dwci_GetAidFromProfileID - mov r4, r0 - cmp r4, #0xff - beq _022EACA8 - bl Dwci_GetMatchCnt - ldr r2, [r0, #0x1d8] - mov r1, #1 - orr r1, r2, r1, lsl r4 - str r1, [r0, #0x1d8] -_022EACA8: - mov r0, #1 - bl Dwci_GetAidBitmask - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1d8] - cmp r4, r0 - bne _022EAD50 - mov r5, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EAD10 - mov r4, #0xf -_022EACDC: - bl Dwci_GetMatchCnt - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - mov r1, r4 - bl Dwci_SendCancelMatchSynCommand - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r5, r0 - ble _022EACDC -_022EAD10: - mov r0, #0xf - bl Dwci_SetMatchStatus - b _022EAD50 -_022EAD1C: - mov r0, r6 - mov r1, #0xf - bl Dwci_SendCancelMatchSynCommand - cmp r0, #0 - bne _022EAD50 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022EAD38: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #8 - bne _022EAD50 - mov r0, #2 - bl Dwci_RestartFromCancel -_022EAD50: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EAD58: .word 0x000082EA - arm_func_end Dwci_ProcessCancelMatchSynCommand - - arm_func_start Dwci_ProcessCancelMatchSynTimeout -Dwci_ProcessCancelMatchSynTimeout: ; 0x022EAD5C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #8 - beq _022EAD90 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xe - beq _022EAD90 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xf - bne _022EADD4 -_022EAD90: - bl OS_GetTick - mov r4, r0 - mov r5, r1 - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x1e8] - ldr r0, [r0, #0x1ec] - subs r3, r4, r1 - sbc r0, r5, r0 - mov r1, r0, lsl #6 - ldr r2, _022EAF54 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - mov r4, r0 - mov r5, r1 - b _022EADDC -_022EADD4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EADDC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #8 - beq _022EAE00 - cmp r0, #0xe - beq _022EAE30 - cmp r0, #0xf - beq _022EAF2C - b _022EAF4C -_022EAE00: - ldr r0, _022EAF58 ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _022EAF4C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0xf4] - mov r1, #0xe - bl Dwci_SendCancelMatchSynCommand - cmp r0, #0 - bne _022EAF4C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EAE30: - ldr r0, _022EAF58 ; =0x00001770 - cmp r5, #0 - cmpeq r4, r0 - bls _022EAF4C - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x1ac] - add r1, r1, #1 - strb r1, [r0, #0x1ac] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x1ac] - cmp r0, #5 - bls _022EAEB8 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1d8] - bl Dwci_CloseShutdownClientSC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _022EAEAC - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ac] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1e8] - str r1, [r4, #0x1ec] - b _022EAF4C -_022EAEAC: - mov r0, #2 - bl Dwci_RestartFromCancel - b _022EAF4C -_022EAEB8: - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EAF4C - mov r5, #0xd - mov r6, r4 -_022EAED4: - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - ldr r1, [r7, #0x1d8] - tst r1, r6, lsl r0 - bne _022EAF14 - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - mov r1, r5 - bl Dwci_SendCancelMatchSynCommand - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022EAF14: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022EAED4 - b _022EAF4C -_022EAF2C: - bl Dwci_GetMatchCnt - add r0, r0, #0x100 - ldrh r0, [r0, #0xb2] - cmp r5, r0, asr #31 - cmpeq r4, r0 - bls _022EAF4C - mov r0, #2 - bl Dwci_RestartFromCancel -_022EAF4C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EAF54: .word 0x000082EA -_022EAF58: .word 0x00001770 - arm_func_end Dwci_ProcessCancelMatchSynTimeout - - arm_func_start Dwci_ClearGameMatchKeys -Dwci_ClearGameMatchKeys: ; 0x022EAF5C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, #0 - ldr r7, _022EAFAC ; =ov00_02326F88 - mov r5, #4 - mov r4, r6 -_022EAF70: - ldr r1, [r7, #4] - cmp r1, #0 - beq _022EAF88 - mov r0, r5 - mov r2, r4 - bl Dwc_Free -_022EAF88: - add r6, r6, #1 - cmp r6, #0x9a - add r7, r7, #0xc - blt _022EAF70 - ldr r1, _022EAFAC ; =ov00_02326F88 - ldr r2, _022EAFB0 ; =0x00000738 - mov r0, #0 - bl MTi_CpuClear32 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EAFAC: .word ov00_02326F88 -_022EAFB0: .word 0x00000738 - arm_func_end Dwci_ClearGameMatchKeys - - arm_func_start Dwci_GetAidFromList -Dwci_GetAidFromList: ; 0x022EAFB4 - stmdb sp!, {r4, r5, r6, lr} - mov r5, #0 - mov r4, r5 -_022EAFC0: - mov r6, r4 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r0, #0 - blt _022EAFFC -_022EAFD4: - bl Dwci_GetMatchCnt - add r0, r0, r6 - ldrb r0, [r0, #0x2d0] - cmp r5, r0 - beq _022EAFFC - add r6, r6, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r6, r0 - ble _022EAFD4 -_022EAFFC: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x14] - cmp r6, r0 - bgt _022EB01C - add r0, r5, #1 - and r5, r0, #0xff - cmp r5, #0x20 - blo _022EAFC0 -_022EB01C: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_GetAidFromList - - arm_func_start Dwci_IsFriendByIdxList -Dwci_IsFriendByIdxList: ; 0x022EB024 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x2fc] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r4, #0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x344] - cmp r0, #0 - ble _022EB08C -_022EB054: - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x304] - bl Dwci_GetProfileIdFromList - cmp r0, #0 - ble _022EB078 - cmp r0, r5 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_022EB078: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x344] - cmp r4, r0 - blt _022EB054 -_022EB08C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_IsFriendByIdxList - - arm_func_start Dwci_GetAidFromProfileID -Dwci_GetAidFromProfileID: ; 0x022EB094 - stmdb sp!, {r3, r4, r5, lr} - cmp r1, #0 - moveq r4, #1 - mov r5, r0 - movne r4, #0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - bgt _022EB0F0 -_022EB0B8: - bl Dwci_GetMatchCnt - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xf4] - cmp r5, r0 - bne _022EB0DC - bl Dwci_GetMatchCnt - add r0, r0, r4 - ldrb r0, [r0, #0x2d0] - ldmia sp!, {r3, r4, r5, pc} -_022EB0DC: - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022EB0B8 -_022EB0F0: - mov r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_GetAidFromProfileID - - arm_func_start Dwci_GetAidBitmask -Dwci_GetAidBitmask: ; 0x022EB0F8 - stmdb sp!, {r4, r5, r6, lr} - cmp r0, #0 - mov r5, #0 - beq _022EB118 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x2f0] - bic r0, r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_022EB118: - mov r6, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EB154 - mov r4, r6 -_022EB130: - bl Dwci_GetMatchCnt - add r0, r0, r6 - ldrb r0, [r0, #0x2d0] - add r6, r6, #1 - orr r5, r5, r4, lsl r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r6, r0 - ble _022EB130 -_022EB154: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_GetAidBitmask - - arm_func_start Dwci_InitClWaitTimeout -Dwci_InitClWaitTimeout: ; 0x022EB15C - stmdb sp!, {r4, lr} - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x1ad] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x1f8] - str r1, [r4, #0x1fc] - ldmia sp!, {r4, pc} - arm_func_end Dwci_InitClWaitTimeout - - arm_func_start Dwci_InitOptMinCompParam -Dwci_InitOptMinCompParam: ; 0x022EB184 - stmdb sp!, {r4, lr} - ldr r1, _022EB1F0 ; =ov00_02326F48 - mov r4, r0 - ldr r3, [r1] - cmp r3, #0 - ldrneb r0, [r3] - cmpne r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0 - str r2, [r3, #8] - ldr r0, [r1] - str r2, [r0, #0xc] - ldr r0, [r1] - strb r2, [r0, #2] - bl OS_GetTick - ldr r2, _022EB1F0 ; =ov00_02326F48 - cmp r4, #0 - ldr r2, [r2] - str r0, [r2, #0x18] - str r1, [r2, #0x1c] - ldmneia sp!, {r4, pc} - bl OS_GetTick - ldr r2, _022EB1F0 ; =ov00_02326F48 - ldr r2, [r2] - str r0, [r2, #0x10] - str r1, [r2, #0x14] - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB1F0: .word ov00_02326F48 - arm_func_end Dwci_InitOptMinCompParam - - arm_func_start Dwci_ProcessOptMinComp -Dwci_ProcessOptMinComp: ; 0x022EB1F4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - ldr r0, _022EB614 ; =ov00_02326F48 - ldr r0, [r0] - cmp r0, #0 - ldrneb r0, [r0] - cmpne r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0x13 - bne _022EB450 - mov r0, #0 - bl Dwci_GetAidBitmask - ldr r1, _022EB614 ; =ov00_02326F48 - ldr r5, [r1] - ldr r1, [r5, #8] - cmp r1, r0 - bne _022EB328 - ldr r1, [r5, #0xc] - cmp r1, r0 - bne _022EB2B4 - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - strb r0, [r4, #0x16] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0xd] - mov r0, #0 - sub r1, r1, #1 - strb r1, [r4, #0x1a4] - bl Dwci_PostProcessConnection - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB2B4: - bl OS_GetTick - str r0, [r5, #0x18] - str r1, [r5, #0x1c] - mov r0, #0 - str r0, [r5, #8] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _022EB308 - mov r0, #3 - bl Dwci_SetMatchStatus - bl Dwci_GetMatchCnt - mov r1, #2 - str r1, [r0, #0xe8] - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0xec] - add sp, sp, #8 - str r1, [r4, #0xf0] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB308: - mov r0, #4 - bl Dwci_SetMatchStatus - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl Dwci_SendResvCommandToFriend - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB328: - ldrb r4, [r5, #2] - bl OS_GetTick - ldr r3, [r5, #0x18] - ldr r2, [r5, #0x1c] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _022EB618 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _022EB61C ; =0x00001770 - mul r2, r4, r2 - cmp r1, r2, asr #31 - cmpeq r0, r2 - addlo sp, sp, #8 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r4, #5 - bls _022EB394 - mov r0, #1 - bl Dwci_InitOptMinCompParam - bl Dwci_CloseAllConnectionsByTimeout - mov r0, #1 - bl Dwci_RestartFromCancel - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB394: - mov r7, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EB434 - ldr r8, _022EB614 ; =ov00_02326F48 - mov r5, #0 - mov r4, #0x11 - mov r6, r7 -_022EB3B8: - bl Dwci_GetMatchCnt - add r0, r0, r7 - ldr r1, [r8] - ldrb r0, [r0, #0x2d0] - ldr r1, [r1, #8] - tst r1, r6, lsl r0 - bne _022EB420 - bl Dwci_GetMatchCnt - mov sl, r0 - bl Dwci_GetMatchCnt - mov sb, r0 - bl Dwci_GetMatchCnt - str r5, [sp] - str r5, [sp, #4] - add r0, r0, r7, lsl #1 - add r1, sl, r7, lsl #2 - add r2, sb, r7, lsl #2 - ldrh r3, [r0, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r4 - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB420: - add r7, r7, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r7, r0 - ble _022EB3B8 -_022EB434: - ldr r0, _022EB614 ; =ov00_02326F48 - add sp, sp, #8 - ldr r1, [r0] - ldrb r0, [r1, #2] - add r0, r0, #1 - strb r0, [r1, #2] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB450: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #4 - beq _022EB474 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #3 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB474: - ldr r0, _022EB614 ; =ov00_02326F48 - ldr r4, [r0] - bl Dwci_GetMatchCnt - ldrb r1, [r4, #1] - ldrb r2, [r0, #0xd] - sub r0, r1, #1 - cmp r2, r0 - addlt sp, sp, #8 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r0, [r4, #2] - cmp r0, #0 - bne _022EB4E8 - ldr r0, _022EB614 ; =ov00_02326F48 - ldr r4, [r0] - bl OS_GetTick - ldr r3, [r4, #0x10] - ldr r2, [r4, #0x14] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _022EB618 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, [r4, #4] - cmp r1, #0 - cmpeq r0, r2 - bhs _022EB540 -_022EB4E8: - ldrb r0, [r4, #2] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, _022EB614 ; =ov00_02326F48 - ldr r4, [r0] - bl OS_GetTick - ldr r3, [r4, #0x18] - ldr r2, [r4, #0x1c] - subs r3, r0, r3 - sbc r0, r1, r2 - mov r1, r0, lsl #6 - ldr r2, _022EB618 ; =0x000082EA - orr r1, r1, r3, lsr #26 - mov r0, r3, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, [r4, #4] - cmp r1, #0 - cmpeq r0, r2, lsr #2 - addlo sp, sp, #8 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB540: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - cmp r0, #0 - beq _022EB56C - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x204] - bl Dwci_CancelReservation - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EB56C: - mov r0, #0x13 - bl Dwci_SetMatchStatus - mov r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r0, #1 - blt _022EB5F0 - mov r6, #0 - mov r5, #0x11 -_022EB590: - bl Dwci_GetMatchCnt - mov r8, r0 - bl Dwci_GetMatchCnt - mov r7, r0 - bl Dwci_GetMatchCnt - str r6, [sp] - str r6, [sp, #4] - add r0, r0, r4, lsl #1 - add r1, r8, r4, lsl #2 - add r2, r7, r4, lsl #2 - ldrh r3, [r0, #0xa4] - ldr r1, [r1, #0xf4] - ldr r2, [r2, #0x24] - mov r0, r5 - bl Dwci_SendMatchCommand - bl Dwci_HandleMatchCommandError - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r4, r4, #1 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - cmp r4, r0 - ble _022EB590 -_022EB5F0: - ldr r0, _022EB614 ; =ov00_02326F48 - ldr r4, [r0] - bl OS_GetTick - str r0, [r4, #0x18] - str r1, [r4, #0x1c] - mov r0, #1 - strb r0, [r4, #2] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022EB614: .word ov00_02326F48 -_022EB618: .word 0x000082EA -_022EB61C: .word 0x00001770 - arm_func_end Dwci_ProcessOptMinComp - - arm_func_start Dwci_HandleGpError_Match -Dwci_HandleGpError_Match: ; 0x022EB620 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _022EB67C -_022EB63C: ; jump table - b _022EB67C ; case 0 - b _022EB650 ; case 1 - b _022EB65C ; case 2 - b _022EB668 ; case 3 - b _022EB674 ; case 4 -_022EB650: - mov r0, #9 - sub r2, r0, #0xa - b _022EB67C -_022EB65C: - mov r0, #9 - sub r2, r0, #0xb - b _022EB67C -_022EB668: - mov r0, #6 - sub r2, r0, #0x10 - b _022EB67C -_022EB674: - mov r0, #6 - sub r2, r0, #0x1a -_022EB67C: - ldr r1, _022EB690 ; =0xFFFEC398 - add r1, r2, r1 - bl Dwci_StopMatching - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB690: .word 0xFFFEC398 - arm_func_end Dwci_HandleGpError_Match - - arm_func_start Dwci_HandleSbError_Match -Dwci_HandleSbError_Match: ; 0x022EB694 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #6 - addls pc, pc, r4, lsl #2 - b _022EB710 -_022EB6B0: ; jump table - b _022EB710 ; case 0 - b _022EB6CC ; case 1 - b _022EB6D8 ; case 2 - b _022EB6E4 ; case 3 - b _022EB6F0 ; case 4 - b _022EB6FC ; case 5 - b _022EB708 ; case 6 -_022EB6CC: - mov r0, #6 - sub r2, r0, #0x38 - b _022EB710 -_022EB6D8: - mov r0, #6 - sub r2, r0, #0x24 - b _022EB710 -_022EB6E4: - mov r0, #6 - sub r2, r0, #0x1a - b _022EB710 -_022EB6F0: - mov r0, #6 - sub r2, r0, #0x2e - b _022EB710 -_022EB6FC: - mov r0, #9 - sub r2, r0, #0xa - b _022EB710 -_022EB708: - mov r0, #9 - sub r2, r0, #0xb -_022EB710: - ldr r1, _022EB724 ; =0xFFFEB3F8 - add r1, r2, r1 - bl Dwci_StopMatching - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB724: .word 0xFFFEB3F8 - arm_func_end Dwci_HandleSbError_Match - - arm_func_start Dwci_HandleQR2Error -Dwci_HandleQR2Error: ; 0x022EB728 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r6, #5 - addls pc, pc, r6, lsl #2 - b _022EB794 -_022EB744: ; jump table - b _022EB794 ; case 0 - b _022EB75C ; case 1 - b _022EB768 ; case 2 - b _022EB774 ; case 3 - b _022EB780 ; case 4 - b _022EB78C ; case 5 -_022EB75C: - mov r5, #6 - sub r4, r5, #0x38 - b _022EB794 -_022EB768: - mov r5, #6 - sub r4, r5, #0x42 - b _022EB794 -_022EB774: - mov r5, #6 - sub r4, r5, #0x24 - b _022EB794 -_022EB780: - mov r5, #6 - sub r4, r5, #0x56 - b _022EB794 -_022EB78C: - mov r5, #6 - sub r4, r5, #0x1a -_022EB794: - bl Dwc_GetState - cmp r0, #2 - beq _022EB7B4 - cmp r0, #4 - beq _022EB7C4 - cmp r0, #5 - beq _022EB7D8 - b _022EB7EC -_022EB7B4: - mov r0, r5 - sub r1, r4, #0xfa00 - bl Dwci_StopLogin - b _022EB7FC -_022EB7C4: - ldr r1, _022EB804 ; =0xFFFEDEF0 - mov r0, r5 - add r1, r4, r1 - bl Dwci_StopFriendProcess - b _022EB7FC -_022EB7D8: - ldr r1, _022EB808 ; =0xFFFEB7E0 - mov r0, r5 - add r1, r4, r1 - bl Dwci_StopMatching - b _022EB7FC -_022EB7EC: - ldr r1, _022EB80C ; =0xFFFE90D0 - mov r0, r5 - add r1, r4, r1 - bl Dwci_SetError -_022EB7FC: - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EB804: .word 0xFFFEDEF0 -_022EB808: .word 0xFFFEB7E0 -_022EB80C: .word 0xFFFE90D0 - arm_func_end Dwci_HandleQR2Error - - arm_func_start Dwci_HandleNnError -Dwci_HandleNnError: ; 0x022EB810 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #1 - beq _022EB840 - cmp r4, #2 - beq _022EB84C - cmp r4, #3 - moveq r0, #6 - subeq r2, r0, #0x24 - b _022EB854 -_022EB840: - mov r0, #9 - sub r2, r0, #0xa - b _022EB854 -_022EB84C: - mov r0, #6 - sub r2, r0, #0x38 -_022EB854: - ldr r1, _022EB868 ; =0xFFFEB010 - add r1, r2, r1 - bl Dwci_StopMatching - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB868: .word 0xFFFEB010 - arm_func_end Dwci_HandleNnError - - arm_func_start Dwci_HandleNnResult -Dwci_HandleNnResult: ; 0x022EB86C - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #1 - beq _022EB898 - cmp r4, #2 - beq _022EB8A0 - cmp r4, #3 - beq _022EB8A8 - b _022EB8B0 -_022EB898: - mov r0, #1 - ldmia sp!, {r4, pc} -_022EB8A0: - mov r0, #2 - ldmia sp!, {r4, pc} -_022EB8A8: - mov r0, #3 - ldmia sp!, {r4, pc} -_022EB8B0: - movs r0, #6 - beq _022EB8C0 - ldr r1, _022EB8C8 ; =0xFFFEB007 - bl Dwci_StopMatching -_022EB8C0: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB8C8: .word 0xFFFEB007 - arm_func_end Dwci_HandleNnResult - - arm_func_start Dwci_HandleGT2Error_Match -Dwci_HandleGT2Error_Match: ; 0x022EB8CC - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _022EB950 -_022EB8E8: ; jump table - b _022EB950 ; case 0 - b _022EB908 ; case 1 - b _022EB914 ; case 2 - b _022EB924 ; case 3 - b _022EB930 ; case 4 - b _022EB914 ; case 5 - b _022EB93C ; case 6 - b _022EB948 ; case 7 -_022EB908: - mov r0, #9 - sub r2, r0, #0xa - b _022EB950 -_022EB914: - mov r0, #0 - mov r2, r0 - mov r4, r0 - b _022EB950 -_022EB924: - mov r0, #6 - sub r2, r0, #0x10 - b _022EB950 -_022EB930: - mov r0, #6 - sub r2, r0, #0x24 - b _022EB950 -_022EB93C: - mov r0, #6 - sub r2, r0, #0x4c - b _022EB950 -_022EB948: - mov r0, #6 - sub r2, r0, #0x56 -_022EB950: - cmp r0, #0 - beq _022EB964 - ldr r1, _022EB96C ; =0xFFFEAC28 - add r1, r2, r1 - bl Dwci_StopMatching -_022EB964: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB96C: .word 0xFFFEAC28 - arm_func_end Dwci_HandleGT2Error_Match - - arm_func_start Dwci_QR2ServerKeyCallback -Dwci_QR2ServerKeyCallback: ; 0x022EB970 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0x32 - bgt _022EB9A4 - bge _022EB9EC - cmp r0, #0xa - bgt _022EBA48 - cmp r0, #8 - blt _022EBA48 - beq _022EB9C4 - cmp r0, #0xa - beq _022EB9D8 - b _022EBA48 -_022EB9A4: - sub r1, r0, #0x33 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _022EBA48 -_022EB9B4: ; jump table - b _022EBA00 ; case 0 - b _022EBA14 ; case 1 - b _022EBA28 ; case 2 - b _022EBA38 ; case 3 -_022EB9C4: - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x14] - mov r0, r4 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EB9D8: - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x16] - mov r0, r4 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EB9EC: - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x200] - mov r0, r4 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EBA00: - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x15] - mov r0, r4 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EBA14: - bl Dwci_GetMatchCnt - ldr r1, [r0, #0x20] - mov r0, r4 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EBA28: - mov r0, r4 - mov r1, #3 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EBA38: - mov r0, r4 - mov r1, #1 - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} -_022EBA48: - subs r1, r0, #0x64 - ldmmiia sp!, {r4, pc} - cmp r1, #0x9a - ldmgeia sp!, {r4, pc} - mov r0, #0xc - mul r2, r1, r0 - ldr r0, _022EBAAC ; =ov00_02326F88 - ldrb r0, [r0, r2] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _022EBAB0 ; =ov00_02326F89 - ldrb r0, [r0, r2] - cmp r0, #0 - beq _022EBA94 - ldr r1, _022EBAB4 ; =ov00_02326F90 - mov r0, r4 - ldr r1, [r1, r2] - bl Qr2_Buffer_AddA - ldmia sp!, {r4, pc} -_022EBA94: - ldr r1, _022EBAB4 ; =ov00_02326F90 - mov r0, r4 - ldr r1, [r1, r2] - ldr r1, [r1] - bl qr2_buffer_add_int - ldmia sp!, {r4, pc} - .align 2, 0 -_022EBAAC: .word ov00_02326F88 -_022EBAB0: .word ov00_02326F89 -_022EBAB4: .word ov00_02326F90 - arm_func_end Dwci_QR2ServerKeyCallback - - arm_func_start Dwci_QR2PlayerKeyCallback -Dwci_QR2PlayerKeyCallback: ; 0x022EBAB8 - bx lr - arm_func_end Dwci_QR2PlayerKeyCallback - - arm_func_start Dwci_QR2TeamKeyCallback -Dwci_QR2TeamKeyCallback: ; 0x022EBABC - bx lr - arm_func_end Dwci_QR2TeamKeyCallback - - arm_func_start Dwci_QR2KeyListCallback -Dwci_QR2KeyListCallback: ; 0x022EBAC0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - cmp r0, #0 - beq _022EBADC - cmp r0, #1 - cmpne r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_022EBADC: - mov r0, r6 - mov r1, #8 - bl qr2_keybuffer_add - mov r0, r6 - mov r1, #0xa - bl qr2_keybuffer_add - mov r0, r6 - mov r1, #0x32 - bl qr2_keybuffer_add - mov r0, r6 - mov r1, #0x33 - bl qr2_keybuffer_add - mov r0, r6 - mov r1, #0x34 - bl qr2_keybuffer_add - mov r0, r6 - mov r1, #0x35 - bl qr2_keybuffer_add - mov r0, r6 - mov r1, #0x36 - bl qr2_keybuffer_add - ldr r5, _022EBB60 ; =ov00_02326F88 - mov r4, #0 -_022EBB38: - ldrb r1, [r5] - cmp r1, #0 - beq _022EBB4C - mov r0, r6 - bl qr2_keybuffer_add -_022EBB4C: - add r4, r4, #1 - cmp r4, #0x9a - add r5, r5, #0xc - blt _022EBB38 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EBB60: .word ov00_02326F88 - arm_func_end Dwci_QR2KeyListCallback - - arm_func_start Dwci_QR2CountCallback -Dwci_QR2CountCallback: ; 0x022EBB64 - mov r0, #0 - bx lr - arm_func_end Dwci_QR2CountCallback - - arm_func_start Dwci_QR2AddErrorCallback -Dwci_QR2AddErrorCallback: ; 0x022EBB6C - ldr ip, _022EBB74 ; =Dwci_HandleQR2Error - bx ip - .align 2, 0 -_022EBB74: .word Dwci_HandleQR2Error - arm_func_end Dwci_QR2AddErrorCallback - - arm_func_start Dwci_QR2PublicAddrCallback -Dwci_QR2PublicAddrCallback: ; 0x022EBB78 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl Dwci_GetMatchCnt - str r5, [r0, #0x1c] - bl Dwci_GetMatchCnt - strh r4, [r0, #0x1a] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwci_QR2PublicAddrCallback - - arm_func_start Dwci_QR2NatnegCallback -Dwci_QR2NatnegCallback: ; 0x022EBB98 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #1 - bne _022EBBBC - mov r0, #6 - bl Dwci_SetMatchStatus - b _022EBBDC -_022EBBBC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _022EBBDC - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - ldmneia sp!, {r4, pc} -_022EBBDC: - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x180] - cmp r4, r0 - bne _022EBC00 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x17c] - add r1, r1, #1 - strb r1, [r0, #0x17c] - b _022EBC14 -_022EBC00: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17c] - bl Dwci_GetMatchCnt - str r4, [r0, #0x180] -_022EBC14: - bl Dwci_GetMatchCnt - mov r2, #0 - str r2, [r0, #0x184] - str r2, [r0, #0x188] - mov r1, r4 - mov r0, #1 - bl Dwci_NnStartupAsync - bl Dwci_HandleNnError - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl Dwci_GetMatchCnt - mov r1, #0xff - strb r1, [r0, #0x3cc] - ldmia sp!, {r4, pc} - arm_func_end Dwci_QR2NatnegCallback - - arm_func_start Dwci_QR2ClientMsgCallback -Dwci_QR2ClientMsgCallback: ; 0x022EBC4C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x9c - mov sl, r0 - mov sb, r1 - mov r8, #0 - bl Dwc_GetState - cmp r0, #5 - beq _022EBCA0 - bl Dwc_GetState - cmp r0, #6 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - beq _022EBCA0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EBCA0: - cmp sb, #0x14 - addlo sp, sp, #0x9c - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r5, _022EBD54 ; =ov00_0231A2A4 - add r4, sp, #0x1c - add r7, sp, #8 - mov r6, #0x14 - mov fp, #4 -_022EBCC0: - mov r0, sl - mov r1, r7 - mov r2, r6 - bl MI_CpuCopy8 - mov r0, r7 - mov r1, r5 - mov r2, fp - bl strncmp - cmp r0, #0 - ldreq r0, [sp, #0xc] - cmpeq r0, #3 - addne sp, sp, #0x9c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sp, #0x11] - mov r1, r4 - add r0, sl, #0x14 - bl MI_CpuCopy8 - str r4, [sp] - ldrb r0, [sp, #0x11] - mov r0, r0, asr #2 - str r0, [sp, #4] - ldrb r0, [sp, #0x10] - ldrh r3, [sp, #0x12] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - bl Dwci_ProcessRecvMatchCommand - cmp r0, #0 - addeq sp, sp, #0x9c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sp, #0x11] - add r0, r0, #0x14 - add r8, r8, r0 - add r0, r8, #0x14 - cmp r0, sb - bls _022EBCC0 - add sp, sp, #0x9c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EBD54: .word ov00_0231A2A4 - arm_func_end Dwci_QR2ClientMsgCallback - - arm_func_start Dwci_NnProgressCallback -Dwci_NnProgressCallback: ; 0x022EBD58 - bx lr - arm_func_end Dwci_NnProgressCallback - - arm_func_start Dwci_NnCompletedCallback -Dwci_NnCompletedCallback: ; 0x022EBD5C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x1c - mov r5, r0 - mov r6, r2 - mov r4, r3 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #6 - beq _022EBD94 - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, pc} -_022EBD94: - cmp r4, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, pc} - cmp r5, #0 - bne _022EBF90 - mov r0, #0 - str r0, [r4, #8] - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x14] - add r1, r1, #1 - strb r1, [r0, #0x14] - bl Dwci_GetMatchCnt - ldrb r1, [r4] - ldrb r5, [r0, #0x14] - cmp r1, #0 - beq _022EBF28 - bl Dwci_GetMatchCnt - ldr r1, [r6, #4] - add r0, r0, r5, lsl #2 - str r1, [r0, #0x210] - ldrh r4, [r6, #2] - bl Dwci_GetMatchCnt - mov r2, r4, asr #8 - mov r1, r4, lsl #8 - add r0, r0, r5, lsl #1 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - add r0, r0, #0x200 - strh r1, [r0, #0x90] - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17c] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x180] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x184] - str r1, [r0, #0x188] - bl Dwci_GetMatchCnt - ldr r0, [r0, #0x1a0] - cmp r0, #0xb - bne _022EBE50 - mov r0, #0xc - bl Dwci_SetMatchStatus - b _022EBE58 -_022EBE50: - mov r0, #7 - bl Dwci_SetMatchStatus -_022EBE58: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0xc] - bl Dwci_GetMatchCnt - ldr r3, [r0, #0x200] - ldr r2, _022EC138 ; =ov00_0231A1C0 - add r0, sp, #0x10 - mov r1, #0xc - bl OS_SnPrintf - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - mov r6, r0 - bl Dwci_GetMatchCnt - add r1, r6, r5, lsl #2 - mov r2, r0 - ldr r0, [r1, #0x210] - add r1, r2, r5, lsl #1 - add r1, r1, #0x200 - ldrh r1, [r1, #0x90] - mov r2, #0 - bl Gt2AddressToString - mov r6, r0 - bl Dwci_GetMatchCnt - mvn r1, #0 - str r1, [sp] - ldr r3, _022EC13C ; =0x00001388 - mov r1, #0 - str r3, [sp, #4] - ldr r0, [r0, #8] - mov r2, r6 - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r0, [r4, #4] - add r3, sp, #0x10 - ldr r0, [r0] - bl Gt2Connect - cmp r0, #1 - bne _022EBF00 - bl Dwci_HandleGT2Error_Match - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} -_022EBF00: - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, pc} - bl Dwci_GetMatchCnt - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022EBF28: - cmp r6, #0 - beq _022EBF6C - sub r5, r5, #1 - bl Dwci_GetMatchCnt - ldr r1, [r6, #4] - add r0, r0, r5, lsl #2 - str r1, [r0, #0x210] - ldrh r4, [r6, #2] - bl Dwci_GetMatchCnt - mov r2, r4, asr #8 - mov r1, r4, lsl #8 - add r0, r0, r5, lsl #1 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - add r0, r0, #0x200 - strh r1, [r0, #0x90] -_022EBF6C: - bl Dwci_GetMatchCnt - mov r4, r0 - bl OS_GetTick - str r0, [r4, #0x18c] - mov r0, #7 - str r1, [r4, #0x190] - bl Dwci_SetMatchStatus - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} -_022EBF90: - ldr r0, [r4, #8] - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, r5 - bl Dwci_HandleNnResult - mov r6, r0 - cmp r6, #2 - cmpne r6, #1 - cmpne r6, #3 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, pc} - ldrb r0, [r4] - cmp r0, #0 - bne _022EC050 - cmp r6, #1 - cmpne r6, #3 - beq _022EBFEC - cmp r6, #2 - bne _022EC02C - ldrb r0, [r4, #1] - cmp r0, #1 - blo _022EC02C -_022EBFEC: - mov r0, #0 - str r0, [r4, #8] - bl Dwci_ProcessNnFailure - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, pc} - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedClientProcess - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022EC02C: - ldrb r1, [r4, #1] - mov r0, r4 - add r1, r1, #1 - strb r1, [r4, #1] - bl Dwci_DoNatNegotiationAsync - bl Dwci_HandleNnError - add sp, sp, #0x1c - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022EC050: - bl Dwci_GetMatchCnt - mov r5, r0 - bl OS_GetTick - str r0, [r5, #0x184] - cmp r6, #1 - str r1, [r5, #0x188] - cmpne r6, #3 - beq _022EC090 - cmp r6, #2 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17c] - cmp r0, #1 - addlo sp, sp, #0x1c - ldmloia sp!, {r3, r4, r5, r6, pc} -_022EC090: - mov r0, #0 - str r0, [r4, #8] - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _022EC0B8 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #2 - bne _022EC0D0 -_022EC0B8: - mov r0, #1 - bl Dwci_ProcessNnFailure - cmp r0, #0 - bne _022EC0E4 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} -_022EC0D0: - mov r0, #0 - bl Dwci_ProcessNnFailure - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, pc} -_022EC0E4: - bl Dwci_GetMatchCnt - mov r1, #0 - strb r1, [r0, #0x17c] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x180] - bl Dwci_GetMatchCnt - mov r1, #0 - str r1, [r0, #0x184] - str r1, [r0, #0x188] - bl Dwci_GetMatchCnt - mov r4, r0 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0xd] - add r0, r0, #1 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0xf4] - bl Dwci_CancelPreConnectedServerProcess - cmp r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022EC138: .word ov00_0231A1C0 -_022EC13C: .word 0x00001388 - arm_func_end Dwci_NnCompletedCallback - - arm_func_start Dwci_ProcessNnFailure -Dwci_ProcessNnFailure: ; 0x022EC140 - stmdb sp!, {r3, lr} - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _022EC170 - bl Dwci_GetMatchCnt - ldrb r1, [r0, #0x17d] - add r1, r1, #1 - strb r1, [r0, #0x17d] -_022EC170: - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x15] - cmp r0, #3 - beq _022EC190 - bl Dwci_GetMatchCnt - ldrb r0, [r0, #0x17d] - cmp r0, #5 - blo _022EC1A4 -_022EC190: - ldr r1, _022EC1AC ; =0xFFFEAE6C - mov r0, #6 - bl Dwci_StopMatching - mov r0, #0 - ldmia sp!, {r3, pc} -_022EC1A4: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EC1AC: .word 0xFFFEAE6C - arm_func_end Dwci_ProcessNnFailure - - arm_func_start Dwci_SetMatchCnt -Dwci_SetMatchCnt: ; 0x022EC1B0 - ldr r1, _022EC1BC ; =ov00_02326F48 - str r0, [r1, #4] - bx lr - .align 2, 0 -_022EC1BC: .word ov00_02326F48 - arm_func_end Dwci_SetMatchCnt - - arm_func_start Dwci_GetMatchCnt -Dwci_GetMatchCnt: ; 0x022EC1C0 - ldr r0, _022EC1CC ; =ov00_02326F48 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_022EC1CC: .word ov00_02326F48 - arm_func_end Dwci_GetMatchCnt - - arm_func_start Dwci_SetMatchStatus -Dwci_SetMatchStatus: ; 0x022EC1D0 - ldr r1, _022EC1E0 ; =ov00_02326F48 - ldr r1, [r1, #4] - str r0, [r1, #0x1a0] - bx lr - .align 2, 0 -_022EC1E0: .word ov00_02326F48 - arm_func_end Dwci_SetMatchStatus - - arm_func_start Dwci_InitReliableQueue -Dwci_InitReliableQueue: ; 0x022EC1E4 - ldr r0, _022EC1F8 ; =ov00_023276C0 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - bx lr - .align 2, 0 -_022EC1F8: .word ov00_023276C0 - arm_func_end Dwci_InitReliableQueue - - arm_func_start Dwci_CleanupReliableQueue -Dwci_CleanupReliableQueue: ; 0x022EC1FC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _022EC260 ; =ov00_023276C0 - ldr r8, [r4] - cmp r8, #0 - beq _022EC24C - mov r7, #4 - mov r6, r7 - mov r5, #0 -_022EC21C: - ldr r1, [r8, #0xc] - mov r0, r7 - str r1, [r4] - ldmib r8, {r1, r2} - bl Dwc_Free - mov r0, r6 - mov r1, r8 - mov r2, r5 - bl Dwc_Free - ldr r8, [r4] - cmp r8, #0 - bne _022EC21C -_022EC24C: - ldr r0, _022EC260 ; =ov00_023276C0 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EC260: .word ov00_023276C0 - arm_func_end Dwci_CleanupReliableQueue - - arm_func_start Dwci_IsReliableQueueFree -Dwci_IsReliableQueueFree: ; 0x022EC264 - ldr r0, _022EC27C ; =ov00_023276C0 - ldr r0, [r0, #4] - cmp r0, #0x6000 - movlt r0, #1 - movge r0, #0 - bx lr - .align 2, 0 -_022EC27C: .word ov00_023276C0 - arm_func_end Dwci_IsReliableQueueFree - - arm_func_start Dwci_ProcessReliableQueue -Dwci_ProcessReliableQueue: ; 0x022EC280 - ldr ip, _022EC28C ; =Dwci_ProcessReliableQueueEx - ldr r0, _022EC290 ; =Gt2Send - bx ip - .align 2, 0 -_022EC28C: .word Dwci_ProcessReliableQueueEx -_022EC290: .word Gt2Send - arm_func_end Dwci_ProcessReliableQueue - - arm_func_start Dwci_ProcessReliableQueueEx -Dwci_ProcessReliableQueueEx: ; 0x022EC294 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _022EC370 ; =ov00_023276C0 - mov sl, r0 - ldr r8, [r4] - cmp r8, #0 - beq _022EC31C - mov r5, #0 - mov r6, #1 - mov fp, #4 - mov r7, r5 -_022EC2BC: - mov sb, r7 -_022EC2C0: - mov r3, r6 - ldmia r8, {r0, r1, r2} - blx sl - cmp r0, #0 - bne _022EC300 - ldr r2, [r4, #4] - ldr r1, [r8, #8] - mov r0, fp - sub r1, r2, r1 - str r1, [r4, #4] - ldmib r8, {r1, r2} - bl Dwc_Free - str r5, [r8, #4] - str r5, [r8, #8] - str r5, [r8] - b _022EC30C -_022EC300: - add sb, sb, #1 - cmp sb, #3 - blt _022EC2C0 -_022EC30C: - cmp sb, #3 - ldrne r8, [r8, #0xc] - cmpne r8, #0 - bne _022EC2BC -_022EC31C: - ldr r4, _022EC370 ; =ov00_023276C0 - ldr r1, [r4] - cmp r1, #0 - beq _022EC360 - mov r6, #4 - mov r5, #0 -_022EC334: - ldr r0, [r1, #4] - cmp r0, #0 - bne _022EC360 - ldr r3, [r1, #0xc] - mov r0, r6 - mov r2, r5 - str r3, [r4] - bl Dwc_Free - ldr r1, [r4] - cmp r1, #0 - bne _022EC334 -_022EC360: - cmp r1, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EC370: .word ov00_023276C0 - arm_func_end Dwci_ProcessReliableQueueEx - - arm_func_start Dwci_InsertReliableQueue -Dwci_InsertReliableQueue: ; 0x022EC374 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _022EC458 ; =ov00_023276C0 - mov r5, r2 - ldr r2, [r3, #4] - ldr r4, _022EC45C ; =ov00_023276C0 - mov r7, r0 - add r0, r2, r5 - cmp r0, #0x8000 - mov r6, r1 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r3] - cmp r0, #0 - beq _022EC3BC -_022EC3AC: - add r4, r0, #0xc - ldr r0, [r0, #0xc] - cmp r0, #0 - bne _022EC3AC -_022EC3BC: - mov r0, #4 - mov r1, #0x10 - bl Dwc_Alloc - str r0, [r4] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r5 - mov r0, #4 - bl Dwc_Alloc - ldr r1, [r4] - str r0, [r1, #4] - ldr r1, [r4] - ldr r0, [r1, #4] - cmp r0, #0 - bne _022EC414 - mov r0, #4 - mov r2, #0x10 - bl Dwc_Free - mov r0, #0 - str r0, [r4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EC414: - str r7, [r1] - ldr r0, [r4] - mov r2, #0 - str r5, [r0, #8] - ldr r1, [r4] - mov r0, r6 - str r2, [r1, #0xc] - ldr r1, [r4] - mov r2, r5 - ldr r1, [r1, #4] - bl MI_CpuCopy8 - ldr r1, _022EC458 ; =ov00_023276C0 - mov r0, #1 - ldr r2, [r1, #4] - add r2, r2, r5 - str r2, [r1, #4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EC458: .word ov00_023276C0 -_022EC45C: .word ov00_023276C0 - arm_func_end Dwci_InsertReliableQueue - - arm_func_start Dwc_IsSendableReliable -Dwc_IsSendableReliable: ; 0x022EC460 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl Dwci_IsError - cmp r0, #0 - bne _022EC4A0 - cmp r5, #1 - bne _022EC490 - mov r0, r4 - bl Dwc_IsValidAid - cmp r0, #0 - beq _022EC4A0 -_022EC490: - mov r0, r4 - bl Dwci_IsValidAid - cmp r0, #0 - bne _022EC4A8 -_022EC4A0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022EC4A8: - mov r0, r4 - bl Dwcs_GetSendState - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl Dwcs_GetOutgoingBufferFreeSize - mov r4, r0 - mov r0, r5 - bl Dwcs_GetRequiredHeaderSize - cmp r4, r0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - bl Dwci_IsReliableQueueFree - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwc_IsSendableReliable - - arm_func_start Dwci_SendReliable -Dwci_SendReliable: ; 0x022EC4F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl Dwcs_GetTransConnection - mov r4, r0 - mov r0, r7 - mov r1, r8 - bl Dwc_IsSendableReliable - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #1 - strb r0, [r4, #0x1c] - str r6, [r4] - mov r0, #0 - str r0, [r4, #0xc] - add r0, sp, #0 - mov r1, r8 - mov r2, r5 - str r5, [r4, #0x14] - bl Dwcs_EncodeHeader - add r1, sp, #0 - mov r0, r7 - mov r2, #8 - mov r3, #1 - bl Dwcs_Send - ldr r0, _022EC60C ; =ov00_023276C8 - ldr r0, [r0] - add r0, r0, #0x600 - ldrh sb, [r0, #0x10] - mov r0, r7 - cmp r5, sb - movle sb, r5 - bl Dwcs_GetOutgoingBufferFreeSize - cmp sb, r0 - addgt sp, sp, #8 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - mov r1, r6 - mov r2, sb - mov r3, #1 - bl Dwcs_Send - ldr r0, [r4, #0xc] - add r1, r0, sb - str r1, [r4, #0xc] - ldr r0, [r4, #0x14] - cmp r1, r0 - bne _022EC600 - mov r2, #0 - strb r2, [r4, #0x1c] - str r2, [r4] - str r2, [r4, #0xc] - ldr r1, _022EC60C ; =ov00_023276C8 - str r2, [r4, #0x14] - ldr r1, [r1] - ldr r2, [r1, #0x600] - cmp r2, #0 - beq _022EC600 - cmp r8, #1 - bne _022EC600 - mov r1, r7 - blx r2 -_022EC600: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EC60C: .word ov00_023276C8 - arm_func_end Dwci_SendReliable - - arm_func_start Dwcs_EncodeHeader -Dwcs_EncodeHeader: ; 0x022EC610 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - ldr r1, _022EC63C ; =ov00_0231A2C0 - add r0, r6, #6 - mov r2, #2 - bl strncpy - strh r5, [r6, #4] - str r4, [r6] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EC63C: .word ov00_0231A2C0 - arm_func_end Dwcs_EncodeHeader - - arm_func_start Dwcs_DecodeHeader -Dwcs_DecodeHeader: ; 0x022EC640 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r1, sp, #0 - mov r2, #8 - bl MI_CpuCopy8 - ldr r1, _022EC678 ; =ov00_0231A2C0 - add r0, sp, #6 - mov r2, #2 - bl memcmp - cmp r0, #0 - ldreqh r0, [sp, #4] - movne r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EC678: .word ov00_0231A2C0 - arm_func_end Dwcs_DecodeHeader - - arm_func_start Dwcs_GetRequiredHeaderSize -Dwcs_GetRequiredHeaderSize: ; 0x022EC67C - cmp r0, #2 - cmpne r0, #3 - cmpne r0, #4 - bne _022EC694 - mov r0, #0xc - bx lr -_022EC694: - mov r0, #8 - bx lr - arm_func_end Dwcs_GetRequiredHeaderSize - - arm_func_start Dwci_InitTransport -Dwci_InitTransport: ; 0x022EC69C - stmdb sp!, {r3, lr} - ldr r3, _022EC6D0 ; =ov00_023276C8 - ldr r2, _022EC6D4 ; =0x00000614 - mov r1, #0 - str r0, [r3] - bl MI_CpuFill8 - ldr r0, _022EC6D0 ; =ov00_023276C8 - ldr r1, _022EC6D8 ; =0x000005B9 - ldr r0, [r0] - add r0, r0, #0x600 - strh r1, [r0, #0x10] - bl Dwci_InitReliableQueue - ldmia sp!, {r3, pc} - .align 2, 0 -_022EC6D0: .word ov00_023276C8 -_022EC6D4: .word 0x00000614 -_022EC6D8: .word 0x000005B9 - arm_func_end Dwci_InitTransport - - arm_func_start Dwci_RecvCallback -Dwci_RecvCallback: ; 0x022EC6DC - stmdb sp!, {r3, lr} - ldr ip, _022EC714 ; =ov00_023276C8 - ldr ip, [ip] - cmp ip, #0 - ldmeqia sp!, {r3, pc} - cmp r1, #0 - cmpne r2, #0 - ldmeqia sp!, {r3, pc} - cmp r3, #0 - beq _022EC70C - bl Dwcs_HandleReliableMessage - ldmia sp!, {r3, pc} -_022EC70C: - bl Dwcs_HandleUnreliableMessage - ldmia sp!, {r3, pc} - .align 2, 0 -_022EC714: .word ov00_023276C8 - arm_func_end Dwci_RecvCallback - - arm_func_start Dwci_PingCallback -Dwci_PingCallback: ; 0x022EC718 - stmdb sp!, {r4, lr} - ldr r2, _022EC754 ; =ov00_023276C8 - mov r4, r1 - ldr r1, [r2] - ldr r1, [r1, #0x60c] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - bl Dwci_GetConnectionAid - ldr r2, _022EC754 ; =ov00_023276C8 - mov r1, r0 - ldr r2, [r2] - mov r0, r4 - ldr r2, [r2, #0x60c] - blx r2 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EC754: .word ov00_023276C8 - arm_func_end Dwci_PingCallback - - arm_func_start Dwci_TransportProcess -Dwci_TransportProcess: ; 0x022EC758 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _022EC8E8 ; =ov00_023276C8 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0 - bl Dwc_GetAidList - mov r7, r0 - mov r8, #0 - cmp r7, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _022EC8E8 ; =ov00_023276C8 - mov fp, r8 -_022EC78C: - ldr r0, [sp] - ldrb sb, [r0, r8] - bl Dwci_ProcessReliableQueue - mov r0, sb - bl Dwc_IsValidAid - cmp r0, #0 - beq _022EC824 - mov r0, sb - bl Dwcs_GetTransConnection - ldr r1, [r4] - mov r6, r0 - ldr r0, [r1, #0x608] - cmp r0, #0 - ldrne r0, [r6, #0x2c] - cmpne r0, #0 - beq _022EC824 - bl OS_GetTick - mov sl, r1 - ldr r2, [r6, #0x24] - mov r5, r0 - subs r2, r5, r2 - ldr r1, [r6, #0x28] - mov r0, r2, lsl #6 - sbc r1, sl, r1 - mov r1, r1, lsl #6 - orr r1, r1, r2, lsr #26 - ldr r2, _022EC8EC ; =0x000082EA - mov r3, #0 - bl _ll_udiv - ldr r1, [r6, #0x2c] - cmp r0, r1 - bls _022EC824 - ldr r1, [r4] - mov r0, sb - ldr r1, [r1, #0x608] - blx r1 - str r5, [r6, #0x24] - str sl, [r6, #0x28] -_022EC824: - bl Dwc_GetMyAid - cmp sb, r0 - beq _022EC8D8 - mov r0, sb - bl Dwcs_GetSendState - cmp r0, #1 - bne _022EC8D8 - mov r0, sb - bl Dwcs_GetTransConnection - mov r5, r0 - ldr r0, [r4] - ldr r2, [r5, #0x14] - add r0, r0, #0x600 - ldr r1, [r5, #0xc] - ldrh r6, [r0, #0x10] - sub r0, r2, r1 - cmp r0, r6 - movle r6, r0 - mov r0, sb - bl Dwcs_GetOutgoingBufferFreeSize - cmp r0, r6 - blt _022EC8D8 - ldr r3, [r5] - ldr r1, [r5, #0xc] - mov r0, sb - add r1, r3, r1 - mov r2, r6 - mov r3, #1 - bl Dwcs_Send - ldr r0, [r5, #0xc] - add r1, r0, r6 - str r1, [r5, #0xc] - ldr r0, [r5, #0x14] - cmp r1, r0 - bne _022EC8D8 - strb fp, [r5, #0x1c] - str fp, [r5] - str fp, [r5, #0xc] - str fp, [r5, #0x14] - ldr r1, [r4] - ldr r2, [r1, #0x600] - cmp r2, #0 - beq _022EC8D8 - mov r1, sb - blx r2 -_022EC8D8: - add r8, r8, #1 - cmp r8, r7 - blt _022EC78C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EC8E8: .word ov00_023276C8 -_022EC8EC: .word 0x000082EA - arm_func_end Dwci_TransportProcess - - arm_func_start Dwci_ClearTransConnection -Dwci_ClearTransConnection: ; 0x022EC8F0 - ldr r2, _022EC978 ; =ov00_023276C8 - ldr r3, [r2] - cmp r3, #0 - bxeq lr - mov r1, #0x30 - mul r1, r0, r1 - add r3, r3, r1 - mov r0, #0 - str r0, [r3, #0xc] - ldr r3, [r2] - add r3, r3, r1 - str r0, [r3, #0x10] - ldr r3, [r2] - add r3, r3, r1 - str r0, [r3, #0x14] - ldr r3, [r2] - add r3, r3, r1 - str r0, [r3, #0x18] - ldr r3, [r2] - add r3, r3, r1 - strb r0, [r3, #0x1c] - ldr r3, [r2] - add r3, r3, r1 - str r0, [r3, #4] - ldr r3, [r2] - add r3, r3, r1 - str r0, [r3, #8] - ldr r3, [r2] - add r3, r3, r1 - strb r0, [r3, #0x1d] - ldr r2, [r2] - add r1, r2, r1 - strh r0, [r1, #0x22] - bx lr - .align 2, 0 -_022EC978: .word ov00_023276C8 - arm_func_end Dwci_ClearTransConnection - - arm_func_start Dwci_ShutdownTransport -Dwci_ShutdownTransport: ; 0x022EC97C - ldr r0, _022EC990 ; =ov00_023276C8 - mov r1, #0 - ldr ip, _022EC994 ; =Dwci_CleanupReliableQueue - str r1, [r0] - bx ip - .align 2, 0 -_022EC990: .word ov00_023276C8 -_022EC994: .word Dwci_CleanupReliableQueue - arm_func_end Dwci_ShutdownTransport - - arm_func_start Dwcs_GetTransConnection -Dwcs_GetTransConnection: ; 0x022EC998 - ldr r2, _022EC9AC ; =ov00_023276C8 - mov r1, #0x30 - ldr r2, [r2] - mla r0, r1, r0, r2 - bx lr - .align 2, 0 -_022EC9AC: .word ov00_023276C8 - arm_func_end Dwcs_GetTransConnection - - arm_func_start Dwcs_GetSendState -Dwcs_GetSendState: ; 0x022EC9B0 - ldr r2, _022EC9C8 ; =ov00_023276C8 - mov r1, #0x30 - ldr r2, [r2] - mla r1, r0, r1, r2 - ldrb r0, [r1, #0x1c] - bx lr - .align 2, 0 -_022EC9C8: .word ov00_023276C8 - arm_func_end Dwcs_GetSendState - - arm_func_start Dwcs_GetRecvState -Dwcs_GetRecvState: ; 0x022EC9CC - ldr r2, _022EC9E4 ; =ov00_023276C8 - mov r1, #0x30 - ldr r2, [r2] - mla r1, r0, r1, r2 - ldrb r0, [r1, #0x1d] - bx lr - .align 2, 0 -_022EC9E4: .word ov00_023276C8 - arm_func_end Dwcs_GetRecvState - - arm_func_start Dwcs_Send -Dwcs_Send: ; 0x022EC9E8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r3 - mov r7, r1 - mov r6, r2 - bl Dwci_GetGT2Connection - mov r4, r0 - cmp r5, #0 - beq _022ECA58 - bl Dwci_ProcessReliableQueue - cmp r0, #0 - beq _022ECA30 - mov r0, r4 - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl Gt2Send - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022ECA30: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl Dwci_InsertReliableQueue - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _022ECA6C ; =0xFFFE82A2 - mov r0, #6 - bl Dwci_SetError - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022ECA58: - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl Gt2Send - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022ECA6C: .word 0xFFFE82A2 - arm_func_end Dwcs_Send - - arm_func_start Dwcs_HandleReliableMessage -Dwcs_HandleReliableMessage: ; 0x022ECA70 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r2 - bl Dwci_GetConnectionAid - mov r4, r0 - bl Dwcs_GetRecvState - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _022ECB4C -_022ECA94: ; jump table - b _022ECAA8 ; case 0 - b _022ECAD4 ; case 1 - b _022ECAE8 ; case 2 - b _022ECAFC ; case 3 - b _022ECB10 ; case 4 -_022ECAA8: - mov r0, r6 - bl Dwcs_DecodeHeader - cmp r0, #2 - ldmloia sp!, {r4, r5, r6, pc} - cmp r0, #4 - ldmhiia sp!, {r4, r5, r6, pc} - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl Dwcs_RecvDataHeader - ldmia sp!, {r4, r5, r6, pc} -_022ECAD4: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl Dwcs_RecvDataHeader - ldmia sp!, {r4, r5, r6, pc} -_022ECAE8: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl Dwcs_RecvDataBody - ldmia sp!, {r4, r5, r6, pc} -_022ECAFC: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl Dwcs_RecvSystemDataBody - ldmia sp!, {r4, r5, r6, pc} -_022ECB10: - mov r0, #0x30 - mul ip, r4, r0 - ldr r0, _022ECB5C ; =ov00_023276C8 - mov r3, #1 - ldr r1, [r0] - mov r2, #0 - add r1, r1, ip - strb r3, [r1, #0x1d] - ldr r1, [r0] - add r1, r1, ip - str r2, [r1, #0x10] - ldr r0, [r0] - add r0, r0, ip - str r2, [r0, #0x18] - ldmia sp!, {r4, r5, r6, pc} -_022ECB4C: - ldr r1, _022ECB60 ; =0xFFFE82B6 - mov r0, #6 - bl Dwci_SetError - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022ECB5C: .word ov00_023276C8 -_022ECB60: .word 0xFFFE82B6 - arm_func_end Dwcs_HandleReliableMessage - - arm_func_start Dwcs_HandleUnreliableMessage -Dwcs_HandleUnreliableMessage: ; 0x022ECB64 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r2 - bl Dwci_GetConnectionAid - ldr r2, _022ECBE0 ; =ov00_023276C8 - mov r1, #0x30 - ldr r2, [r2] - mla r4, r0, r1, r2 - ldr r1, [r4, #4] - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r4, #8] - cmp r1, r5 - ldmltia sp!, {r4, r5, r6, pc} - ldr r3, [r2, #0x604] - cmp r3, #0 - beq _022ECBB4 - mov r1, r6 - mov r2, r5 - blx r3 -_022ECBB4: - ldr r0, _022ECBE0 ; =ov00_023276C8 - ldr r0, [r0] - ldr r0, [r0, #0x608] - cmp r0, #0 - ldrne r0, [r4, #0x2c] - cmpne r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl OS_GetTick - str r0, [r4, #0x24] - str r1, [r4, #0x28] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022ECBE0: .word ov00_023276C8 - arm_func_end Dwcs_HandleUnreliableMessage - - arm_func_start Dwcs_RecvDataHeader -Dwcs_RecvDataHeader: ; 0x022ECBE4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r4, _022ECCA8 ; =ov00_023276C8 - mov r3, #0x30 - ldr r4, [r4] - mov r7, r1 - mla r4, r0, r3, r4 - mov r6, r2 - bl Dwcs_GetRecvState - strb r0, [r4, #0x1e] - mov r0, r7 - bl Dwcs_DecodeHeader - mov r5, r0 - cmp r5, #4 - addls pc, pc, r5, lsl #2 - b _022ECC9C -_022ECC24: ; jump table - b _022ECC9C ; case 0 - b _022ECC38 ; case 1 - b _022ECC94 ; case 2 - b _022ECC94 ; case 3 - b _022ECC94 ; case 4 -_022ECC38: - cmp r6, #8 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r1, sp, #0 - mov r0, r7 - mov r2, #8 - bl MI_CpuCopy8 - ldr r1, [sp] - mov r0, #0 - str r1, [r4, #0x18] - str r0, [r4, #0x10] - ldr r0, [r4, #4] - cmp r0, #0 - beq _022ECC88 - ldr r1, [r4, #8] - ldr r0, [r4, #0x18] - cmp r1, r0 - movge r0, #2 - strgeb r0, [r4, #0x1d] - bge _022ECC9C -_022ECC88: - mov r0, #4 - strb r0, [r4, #0x1d] - b _022ECC9C -_022ECC94: - mov r0, #3 - strb r0, [r4, #0x1d] -_022ECC9C: - strh r5, [r4, #0x22] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022ECCA8: .word ov00_023276C8 - arm_func_end Dwcs_RecvDataHeader - - arm_func_start Dwcs_RecvDataBody -Dwcs_RecvDataBody: ; 0x022ECCAC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _022ECD88 ; =ov00_023276C8 - mov r7, r0 - ldr r4, [r3] - mov r3, #0x30 - mla r4, r7, r3, r4 - mov r6, r1 - mov r5, r2 - bl Dwcs_GetRecvState - cmp r0, #2 - bne _022ECD10 - ldr r3, [r4, #0x10] - ldr r0, [r4, #8] - add r1, r3, r5 - cmp r1, r0 - ble _022ECCFC - ldr r1, _022ECD8C ; =0xFFFE82AC - mov r0, #6 - bl Dwci_SetError - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022ECCFC: - ldr r1, [r4, #4] - mov r0, r6 - mov r2, r5 - add r1, r1, r3 - bl MI_CpuCopy8 -_022ECD10: - ldr r0, [r4, #0x10] - add r0, r0, r5 - str r0, [r4, #0x10] - ldr r2, [r4, #0x18] - cmp r0, r2 - bne _022ECD5C - mov r0, #1 - strb r0, [r4, #0x1d] - mov r1, #0 - str r1, [r4, #0x10] - ldr r0, _022ECD88 ; =ov00_023276C8 - str r1, [r4, #0x18] - ldr r0, [r0] - ldr r3, [r0, #0x604] - cmp r3, #0 - beq _022ECD5C - ldr r1, [r4, #4] - mov r0, r7 - blx r3 -_022ECD5C: - ldr r0, _022ECD88 ; =ov00_023276C8 - ldr r0, [r0] - ldr r0, [r0, #0x608] - cmp r0, #0 - ldrne r0, [r4, #0x2c] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl OS_GetTick - str r0, [r4, #0x24] - str r1, [r4, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022ECD88: .word ov00_023276C8 -_022ECD8C: .word 0xFFFE82AC - arm_func_end Dwcs_RecvDataBody - - arm_func_start Dwcs_RecvSystemDataBody -Dwcs_RecvSystemDataBody: ; 0x022ECD90 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl Dwcs_GetTransConnection - ldrb r1, [r0, #0x1e] - strb r1, [r0, #0x1d] - ldrh r1, [r0, #0x22] - cmp r1, #2 - cmpne r1, #3 - cmpne r1, #4 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r2, r4 - bl Dwci_ProcessMatchSynPacket - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwcs_RecvSystemDataBody - - arm_func_start Dwcs_GetOutgoingBufferFreeSize -Dwcs_GetOutgoingBufferFreeSize: ; 0x022ECDCC - stmdb sp!, {r3, lr} - bl Dwci_GetGT2Connection - bl Gt2GetOutgoingBufferFreeSpace - ldr r1, _022ECDEC ; =0xFFFFFDF9 - add r0, r0, r1 - cmp r0, #0 - movle r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022ECDEC: .word 0xFFFFFDF9 - arm_func_end Dwcs_GetOutgoingBufferFreeSize - - arm_func_start Dwc_InitGhttp -Dwc_InitGhttp: ; 0x022ECDF0 - stmdb sp!, {r3, lr} - bl GhttpStartup - ldr r1, _022ECE10 ; =ov00_023276CC - mov r0, #1 - ldr r2, [r1, #4] - add r2, r2, #1 - str r2, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022ECE10: .word ov00_023276CC - arm_func_end Dwc_InitGhttp - - arm_func_start Dwc_ShutdownGhttp -Dwc_ShutdownGhttp: ; 0x022ECE14 - stmdb sp!, {r3, lr} - ldr r0, _022ECE50 ; =ov00_023276CC - ldr r0, [r0, #4] - cmp r0, #0 - movle r0, #1 - ldmleia sp!, {r3, pc} - bl GhttpCleanup - ldr r0, _022ECE50 ; =ov00_023276CC - ldr r1, [r0, #4] - subs r1, r1, #1 - str r1, [r0, #4] - bne _022ECE48 - bl Dwci_RemoveAllDwcGhttpParamEntry -_022ECE48: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022ECE50: .word ov00_023276CC - arm_func_end Dwc_ShutdownGhttp - - arm_func_start Dwc_ProcessGhttp -Dwc_ProcessGhttp: ; 0x022ECE54 - stmdb sp!, {r3, lr} - bl Dwci_IsError - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - bl GhttpThink - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end Dwc_ProcessGhttp - - arm_func_start GhttpCompletedCallback -GhttpCompletedCallback: ; 0x022ECE74 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, [sp, #0x18] - mov r7, r1 - ldr r5, [r4, #4] - ldr r6, [r4, #0xc] - cmp r5, #0 - beq _022ECECC - cmp r7, #0 - bne _022ECEB0 - mov r1, r3 - mov r0, r2 - ldr r3, [r4] - mov r2, r7 - blx r5 - b _022ECECC -_022ECEB0: - mov r0, r7 - bl Dwci_HandleGhttpError - mov r0, #0 - ldr r3, [r4] - mov r1, r0 - mov r2, r7 - blx r5 -_022ECECC: - cmp r7, #0 - bne _022ECEDC - cmp r6, #1 - bne _022ECEF8 -_022ECEDC: - ldr r1, [r4, #0x10] - cmp r1, #0 - moveq r6, #1 - beq _022ECEF8 - mov r0, #4 - mov r2, #0 - bl Dwc_Free -_022ECEF8: - mov r0, r4 - bl Dwci_RemoveDwcGHttpParamEntry - cmp r6, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GhttpCompletedCallback - - arm_func_start GhttpProgressCallback -GhttpProgressCallback: ; 0x022ECF10 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r4, [sp, #0x18] - ldr lr, [r4, #8] - cmp lr, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - ldr ip, [sp, #0x14] - mov r0, r1 - str ip, [sp] - mov r1, r2 - mov r2, r3 - ldr ip, [r4] - ldr r3, [sp, #0x10] - str ip, [sp, #4] - blx lr - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end GhttpProgressCallback - - arm_func_start Dwci_GhttpGetEx -Dwci_GhttpGetEx: ; 0x022ECF58 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x28 - ldr sb, [sp, #0x4c] - ldr r8, [sp, #0x50] - mov r5, r0 - mov r4, r1 - mov r7, r2 - mov sl, r3 - mov r6, #0 - bl Dwci_IsError - cmp r0, #0 - addne sp, sp, #0x28 - mvnne r0, #7 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [sp, #0x48] - add r0, sp, #0x18 - str r8, [sp, #0x18] - str sb, [sp, #0x1c] - str r1, [sp, #0x20] - str r7, [sp, #0x24] - bl Dwci_AppendDwcGhttpParam - movs r7, r0 - bne _022ECFDC - mvn r0, #4 - bl Dwci_HandleGhttpError - mov r0, r6 - mov r1, r0 - mov r3, r8 - sub r2, r0, #5 - blx sb - add sp, sp, #0x28 - mvn r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022ECFDC: - cmp r4, #0 - ble _022ED02C - mov r1, r4 - mov r0, #4 - bl Dwc_Alloc - movs r6, r0 - bne _022ED028 - mvn r0, #4 - bl Dwci_HandleGhttpError - mov r0, #0 - mov r1, r0 - mov r3, r8 - sub r2, r0, #5 - blx sb - mov r0, r7 - bl Dwci_RemoveDwcGHttpParamEntry - add sp, sp, #0x28 - mvn r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022ED028: - str r6, [r7, #0x10] -_022ED02C: - cmp sl, #0 - mov r1, #0 - beq _022ED06C - ldr r0, [sl] - ldr r2, _022ED0F4 ; =GhttpProgressCallback - stmia sp, {r0, r1} - str r1, [sp, #8] - str r2, [sp, #0xc] - ldr r0, _022ED0F8 ; =GhttpCompletedCallback - mov r2, r6 - str r0, [sp, #0x10] - mov r0, r5 - mov r3, r4 - str r7, [sp, #0x14] - bl GHttpGetExA - b _022ED09C -_022ED06C: - str r1, [sp] - str r1, [sp, #4] - ldr r2, _022ED0F4 ; =GhttpProgressCallback - str r1, [sp, #8] - str r2, [sp, #0xc] - ldr r0, _022ED0F8 ; =GhttpCompletedCallback - mov r2, r6 - str r0, [sp, #0x10] - mov r0, r5 - mov r3, r4 - str r7, [sp, #0x14] - bl GHttpGetExA -_022ED09C: - mov r4, r0 - cmp r4, #0 - bge _022ED0E4 - mov r0, r4 - bl Dwci_HandleGhttpError - mov r0, #0 - mov r1, r0 - mov r2, r4 - mov r3, r8 - blx sb - ldr r1, [r7, #0x10] - cmp r1, #0 - beq _022ED0DC - mov r0, #4 - mov r2, #0 - bl Dwc_Free -_022ED0DC: - mov r0, r7 - bl Dwci_RemoveDwcGHttpParamEntry -_022ED0E4: - mov r0, r4 - str r4, [r7, #0x14] - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022ED0F4: .word GhttpProgressCallback -_022ED0F8: .word GhttpCompletedCallback - arm_func_end Dwci_GhttpGetEx - - arm_func_start Dwc_GetGhttpDataEx2 -Dwc_GetGhttpDataEx2: ; 0x022ED0FC - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr lr, [sp, #0x10] - ldr ip, [sp, #0x14] - stmia sp, {r3, lr} - mov r3, #0 - str ip, [sp, #8] - bl Dwci_GhttpGetEx - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end Dwc_GetGhttpDataEx2 - - arm_func_start Dwc_CancelGhttpRequest -Dwc_CancelGhttpRequest: ; 0x022ED124 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GHttpCancelRequest - mov r0, r4 - bl Dwci_FindDwcGhttpParamEntryByReq - movs r4, r0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0x10] - cmp r1, #0 - beq _022ED158 - mov r0, #4 - mov r2, #0 - bl Dwc_Free -_022ED158: - mov r0, r4 - bl Dwci_RemoveDwcGHttpParamEntry - ldmia sp!, {r4, pc} - arm_func_end Dwc_CancelGhttpRequest - - arm_func_start Dwci_HandleGhttpError -Dwci_HandleGhttpError: ; 0x022ED164 - stmdb sp!, {r4, lr} - movs r4, r0 - mov r0, #7 - ldr r1, _022ED2A4 ; =0xFFFE8130 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r2, r4, #7 - cmp r2, #0x1a - addls pc, pc, r2, lsl #2 - b _022ED298 -_022ED18C: ; jump table - b _022ED1F8 ; case 0 - b _022ED200 ; case 1 - b _022ED20C ; case 2 - b _022ED214 ; case 3 - b _022ED214 ; case 4 - b _022ED214 ; case 5 - b _022ED21C ; case 6 - b _022ED298 ; case 7 - b _022ED228 ; case 8 - b _022ED234 ; case 9 - b _022ED23C ; case 10 - b _022ED248 ; case 11 - b _022ED250 ; case 12 - b _022ED258 ; case 13 - b _022ED260 ; case 14 - b _022ED268 ; case 15 - b _022ED268 ; case 16 - b _022ED268 ; case 17 - b _022ED258 ; case 18 - b _022ED258 ; case 19 - b _022ED274 ; case 20 - b _022ED274 ; case 21 - b _022ED27C ; case 22 - b _022ED288 ; case 23 - b _022ED290 ; case 24 - b _022ED298 ; case 25 - b _022ED228 ; case 26 -_022ED1F8: - sub r1, r1, #0x320 - b _022ED298 -_022ED200: - ldr r2, _022ED2A8 ; =0xFFFFFCD6 - add r1, r1, r2 - b _022ED298 -_022ED20C: - sub r1, r1, #0x348 - b _022ED298 -_022ED214: - sub r1, r1, #0x334 - b _022ED298 -_022ED21C: - ldr r2, _022ED2AC ; =0xFFFFFCC2 - add r1, r1, r2 - b _022ED298 -_022ED228: - sub r1, r1, #1 - mov r0, #9 - b _022ED298 -_022ED234: - sub r1, r1, #0x348 - b _022ED298 -_022ED23C: - ldr r2, _022ED2B0 ; =0xFFFFFCAE - add r1, r1, r2 - b _022ED298 -_022ED248: - sub r1, r1, #0x1e - b _022ED298 -_022ED250: - sub r1, r1, #0x32 - b _022ED298 -_022ED258: - sub r1, r1, #0x14 - b _022ED298 -_022ED260: - sub r1, r1, #0x35c - b _022ED298 -_022ED268: - ldr r2, _022ED2B4 ; =0xFFFFFC9A - add r1, r1, r2 - b _022ED298 -_022ED274: - sub r1, r1, #0x370 - b _022ED298 -_022ED27C: - ldr r2, _022ED2B8 ; =0xFFFFFC86 - add r1, r1, r2 - b _022ED298 -_022ED288: - sub r1, r1, #0x384 - b _022ED298 -_022ED290: - ldr r2, _022ED2BC ; =0xFFFFFC72 - add r1, r1, r2 -_022ED298: - bl Dwci_SetError - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022ED2A4: .word 0xFFFE8130 -_022ED2A8: .word 0xFFFFFCD6 -_022ED2AC: .word 0xFFFFFCC2 -_022ED2B0: .word 0xFFFFFCAE -_022ED2B4: .word 0xFFFFFC9A -_022ED2B8: .word 0xFFFFFC86 -_022ED2BC: .word 0xFFFFFC72 - arm_func_end Dwci_HandleGhttpError - - arm_func_start Dwci_AppendDwcGhttpParam -Dwci_AppendDwcGhttpParam: ; 0x022ED2C0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #4 - mov r1, #0x1c - bl Dwc_Alloc - movs ip, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldmia r4, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - mov r0, #0 - str r0, [ip, #0x18] - ldr r1, _022ED318 ; =ov00_023276CC - str r0, [ip, #0x10] - ldr r0, [r1] - cmp r0, #0 - moveq r0, ip - streq ip, [r1] - strne r0, [ip, #0x18] - movne r0, ip - strne ip, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_022ED318: .word ov00_023276CC - arm_func_end Dwci_AppendDwcGhttpParam - - arm_func_start Dwci_RemoveDwcGHttpParamEntry -Dwci_RemoveDwcGHttpParamEntry: ; 0x022ED31C - stmdb sp!, {r4, lr} - ldr r1, _022ED39C ; =ov00_023276CC - ldr r1, [r1] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - cmp r1, r0 - bne _022ED354 - mov r0, #4 - mov r2, #0 - ldr r4, [r1, #0x18] - bl Dwc_Free - ldr r0, _022ED39C ; =ov00_023276CC - str r4, [r0] - ldmia sp!, {r4, pc} -_022ED354: - ldr r2, [r1, #0x18] - cmp r2, #0 - ldmeqia sp!, {r4, pc} -_022ED360: - cmp r2, r0 - movne r1, r2 - bne _022ED38C - ldr ip, [r1, #0x18] - mov r0, #4 - ldr r3, [ip, #0x18] - mov r2, #0 - str r3, [r1, #0x18] - mov r1, ip - bl Dwc_Free - ldmia sp!, {r4, pc} -_022ED38C: - ldr r2, [r2, #0x18] - cmp r2, #0 - bne _022ED360 - ldmia sp!, {r4, pc} - .align 2, 0 -_022ED39C: .word ov00_023276CC - arm_func_end Dwci_RemoveDwcGHttpParamEntry - - arm_func_start Dwci_FindDwcGhttpParamEntryByReq -Dwci_FindDwcGhttpParamEntryByReq: ; 0x022ED3A0 - ldr r1, _022ED3C8 ; =ov00_023276CC - ldr r2, [r1] - b _022ED3B0 -_022ED3AC: - ldr r2, [r2, #0x18] -_022ED3B0: - cmp r2, #0 - ldrne r1, [r2, #0x14] - cmpne r1, r0 - bne _022ED3AC - mov r0, r2 - bx lr - .align 2, 0 -_022ED3C8: .word ov00_023276CC - arm_func_end Dwci_FindDwcGhttpParamEntryByReq - - arm_func_start Dwci_RemoveAllDwcGhttpParamEntry -Dwci_RemoveAllDwcGhttpParamEntry: ; 0x022ED3CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _022ED438 ; =ov00_023276CC - ldr r8, [r0] - cmp r8, #0 - beq _022ED428 - mov r7, #4 - mov r6, #0 - mov r5, r7 - mov r4, r6 -_022ED3F0: - mov sb, r8 - ldr r1, [sb, #0x10] - ldr r8, [r8, #0x18] - cmp r1, #0 - beq _022ED410 - mov r0, r7 - mov r2, r6 - bl Dwc_Free -_022ED410: - mov r0, r5 - mov r1, sb - mov r2, r4 - bl Dwc_Free - cmp r8, #0 - bne _022ED3F0 -_022ED428: - ldr r0, _022ED438 ; =ov00_023276CC - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022ED438: .word ov00_023276CC - arm_func_end Dwci_RemoveAllDwcGhttpParamEntry - - arm_func_start Dwci_BM_GetApInfo -Dwci_BM_GetApInfo: ; 0x022ED43C - stmdb sp!, {r3, lr} - ldr r1, _022ED464 ; =ov00_023276D4 - mov r2, r0 - ldr r0, [r1, #8] - mov r1, #0x300 - bl ReadNvram_Dwc - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022ED464: .word ov00_023276D4 - arm_func_end Dwci_BM_GetApInfo - - arm_func_start Dwci_BM_GetWiFiInfo -Dwci_BM_GetWiFiInfo: ; 0x022ED468 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _022ED528 ; =ov00_023276E0 - mov r1, r4 - mov r2, #6 - bl MI_CpuCopy8 - ldr r1, _022ED52C ; =0x000007FF - ldr r3, [r4] - sub r0, r1, #0x800 - ldr r2, [r4, #4] - and r0, r3, r0 - str r0, [r4] - and r1, r2, r1 - str r1, [r4, #4] - ldr r0, _022ED530 ; =ov00_023276E5 - add r1, r4, #8 - mov r2, #6 - bl MI_CpuCopy8 - ldr r1, [r4, #8] - ldr r0, [r4, #0xc] - mov r1, r1, lsr #3 - orr r1, r1, r0, lsl #29 - str r1, [r4, #8] - mov r3, r0, lsr #3 - str r3, [r4, #0xc] - ldr r1, _022ED52C ; =0x000007FF - ldr r2, [r4, #8] - sub r0, r1, #0x800 - and r0, r2, r0 - str r0, [r4, #8] - and r1, r1, r3 - str r1, [r4, #0xc] - ldr r0, _022ED534 ; =ov00_023276EA - add r1, r4, #0x10 - mov r2, #2 - bl MI_CpuCopy8 - ldrh r1, [r4, #0x10] - ldr r3, _022ED538 ; =0x000003FF - ldr r0, _022ED53C ; =ov00_023276EC - mov r1, r1, asr #6 - strh r1, [r4, #0x10] - ldrh ip, [r4, #0x10] - add r1, r4, #0x12 - mov r2, #2 - and r3, ip, r3 - strh r3, [r4, #0x10] - bl MI_CpuCopy8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022ED528: .word ov00_023276E0 -_022ED52C: .word 0x000007FF -_022ED530: .word ov00_023276E5 -_022ED534: .word ov00_023276EA -_022ED538: .word 0x000003FF -_022ED53C: .word ov00_023276EC - arm_func_end Dwci_BM_GetWiFiInfo - - arm_func_start Dwci_BM_SetWiFiInfo -Dwci_BM_SetWiFiInfo: ; 0x022ED540 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r2, _022ED610 ; =ov00_023276D4 - mov sl, r1 - ldr sb, [r2, #8] - bl Dwci_BackuplConvWifiInfo - ldr r1, _022ED614 ; =0x0000A001 - add r0, sl, #0x200 - bl MATHi_CRC16InitTable - mov r5, #0x100 - ldr r6, _022ED618 ; =ov00_023276E0 - mov r8, #0 - mov r4, r5 - mov fp, #0xe - mov r7, r5 -_022ED578: - mov r0, sb - mov r1, r7 - mov r2, sl - bl ReadNvram_Dwc - cmp r0, #0 - bne _022ED59C - bl WaitForever2 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022ED59C: - mov r0, r6 - mov r2, fp - add r1, sl, #0xf0 - bl MI_CpuCopy8 - mov r1, sl - mov r2, #0xfe - add r0, sl, #0x200 - bl MATH_CalcCRC16 - strh r0, [sl, #0xfe] -_022ED5C0: - mov r0, sb - mov r1, r5 - mov r2, sl - bl WriteNvram_Dwc - mov r0, sl - mov r1, sb - mov r2, r4 - add r3, sl, #0x100 - bl Verify_Dwc - cmp r0, #0 - beq _022ED5C0 - add r8, r8, #1 - cmp r8, #2 - add sb, sb, #0x100 - blt _022ED578 - bl WriteDisable_Dwc - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022ED610: .word ov00_023276D4 -_022ED614: .word 0x0000A001 -_022ED618: .word ov00_023276E0 - arm_func_end Dwci_BM_SetWiFiInfo - - arm_func_start Dwci_BackuplInit -Dwci_BackuplInit: ; 0x022ED61C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x20 - mov r1, r0 - mov r2, r4 - bl ReadNvram_Dwc - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldrh r2, [r4] - ldr r1, _022ED65C ; =ov00_023276D4 - mov r0, #1 - mov r2, r2, lsl #3 - sub r2, r2, #0x400 - str r2, [r1, #8] - ldmia sp!, {r4, pc} - .align 2, 0 -_022ED65C: .word ov00_023276D4 - arm_func_end Dwci_BackuplInit - - arm_func_start Dwci_BackuplRead -Dwci_BackuplRead: ; 0x022ED660 - stmdb sp!, {r3, lr} - ldr r1, _022ED688 ; =ov00_023276D4 - mov r2, r0 - ldr r0, [r1, #8] - mov r1, #0x400 - bl ReadNvram_Dwc - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022ED688: .word ov00_023276D4 - arm_func_end Dwci_BackuplRead - - arm_func_start Dwci_BackuplWritePage -Dwci_BackuplWritePage: ; 0x022ED68C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r3, _022ED710 ; =ov00_023276D4 - mov sl, #0x100 - ldr r5, [r3, #8] - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r4, #0 - mov sb, sl -_022ED6B0: - ldr r0, [r7, r4, lsl #2] - cmp r0, #0 - beq _022ED6E8 -_022ED6BC: - mov r0, r5 - mov r1, sl - mov r2, r8 - bl WriteNvram_Dwc - mov r0, r8 - mov r1, r5 - mov r2, sb - mov r3, r6 - bl Verify_Dwc - cmp r0, #0 - beq _022ED6BC -_022ED6E8: - add r4, r4, #1 - cmp r4, #4 - add r8, r8, #0x100 - add r5, r5, #0x100 - blt _022ED6B0 - bl WriteDisable_Dwc - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022ED710: .word ov00_023276D4 - arm_func_end Dwci_BackuplWritePage - - arm_func_start Dwci_BackuplWriteAll -Dwci_BackuplWriteAll: ; 0x022ED714 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _022ED7A4 ; =ov00_023276D4 - mov r8, r0 - mov sl, #0x100 - ldr r6, [r1, #8] - mov r7, r8 - mov r5, #0 - mov sb, sl - mov r4, #0xfe -_022ED738: - mov r1, r7 - mov r2, r4 - add r0, r8, #0x500 - bl MATH_CalcCRC16 - add r1, r8, r5, lsl #8 - strh r0, [r1, #0xfe] -_022ED750: - mov r0, r6 - mov r1, sl - mov r2, r7 - bl WriteNvram_Dwc - mov r0, r7 - mov r1, r6 - mov r2, sb - add r3, r8, #0x400 - bl Verify_Dwc - cmp r0, #0 - beq _022ED750 - add r5, r5, #1 - cmp r5, #4 - add r7, r7, #0x100 - add r6, r6, #0x100 - blt _022ED738 - bl WriteDisable_Dwc - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022ED7A4: .word ov00_023276D4 - arm_func_end Dwci_BackuplWriteAll - - arm_func_start Dwci_BackuplSetWiFi -Dwci_BackuplSetWiFi: ; 0x022ED7A8 - ldr ip, _022ED7B8 ; =MI_CpuCopy8 - ldr r1, _022ED7BC ; =ov00_023276E0 - mov r2, #0xe - bx ip - .align 2, 0 -_022ED7B8: .word MI_CpuCopy8 -_022ED7BC: .word ov00_023276E0 - arm_func_end Dwci_BackuplSetWiFi - - arm_func_start Dwci_BackuplConvMaskCidr -Dwci_BackuplConvMaskCidr: ; 0x022ED7C0 - stmdb sp!, {r4, lr} - mov ip, #0 - mov r3, ip - mov r2, ip -_022ED7D0: - ldrb r4, [r0, ip] - mov lr, r2 -_022ED7D8: - mov r1, r4, asr lr - tst r1, #1 - add lr, lr, #1 - addne r3, r3, #1 - cmp lr, #8 - blt _022ED7D8 - add ip, ip, #1 - cmp ip, #4 - blt _022ED7D0 - and r0, r3, #0xff - ldmia sp!, {r4, pc} - arm_func_end Dwci_BackuplConvMaskCidr - - arm_func_start Dwci_BackuplConvMaskAddr -Dwci_BackuplConvMaskAddr: ; 0x022ED804 - mvn r2, #0 - mov r3, #0 - eor r2, r2, r2, lsr r0 - mov ip, r3 -_022ED814: - rsb r0, ip, #0x18 - mov r0, r2, lsr r0 - strb r0, [r1, r3] - add r3, r3, #1 - cmp r3, #4 - add ip, ip, #8 - blt _022ED814 - bx lr - arm_func_end Dwci_BackuplConvMaskAddr - - arm_func_start Dwc_BackuplCheckSsid -Dwc_BackuplCheckSsid: ; 0x022ED834 - mov r2, #0 -_022ED838: - ldrb r1, [r0, r2] - cmp r1, #0 - movne r0, #1 - bxne lr - add r2, r2, #1 - cmp r2, #0x20 - blt _022ED838 - mov r0, #0 - bx lr - arm_func_end Dwc_BackuplCheckSsid - - arm_func_start Dwc_BackuplCheckIp -Dwc_BackuplCheckIp: ; 0x022ED85C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl Dwc_BackuplCheckAddress - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - add r1, sp, #4 - mov r0, r5 - mov r2, #4 - bl MI_CpuCopy8 - add r1, sp, #0 - mov r0, r4 - mov r2, #4 - bl MI_CpuCopy8 - ldr r0, [sp] - ldr r1, [sp, #4] - mvn r0, r0 - tst r1, r0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Dwc_BackuplCheckIp - - arm_func_start Dwc_BackuplCheckAddress -Dwc_BackuplCheckAddress: ; 0x022ED8C0 - ldrb r0, [r0] - cmp r0, #0x7f - moveq r0, #0 - bxeq lr - cmp r0, #1 - movlo r0, #0 - bxlo lr - cmp r0, #0xdf - movls r0, #1 - movhi r0, #0 - bx lr - arm_func_end Dwc_BackuplCheckAddress - - arm_func_start NVramm_ExecuteCommand -NVramm_ExecuteCommand: ; 0x022ED8EC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3c - ldr sl, _022EDD40 ; =ov00_02327700 - mov r8, r1, lsr #0x10 - mov r4, sl, lsl #8 - mov sb, r4 - and r4, r4, #0xff00 - mov r1, r1, lsl #0x10 - orr r4, r4, #0x20000 - mov r5, r3, lsr #0x10 - mov r7, r0 - ldr ip, _022EDD44 ; =0x01020000 - mov r1, r1, lsr #0x10 - str r4, [sp, #0x30] - orr r4, r1, #0x10000 - mov r3, r3, lsl #0x10 - add r1, ip, #0x30000 - orr r1, r1, r3, lsr #16 - str r1, [sp, #0x10] - mov r1, r3, lsr #0x10 - orr r1, r1, #0x1040000 - ldr r0, _022EDD48 ; =0x02002200 - str r1, [sp, #0x24] - orr r1, r0, sl, lsr #24 - str r1, [sp, #0x28] - ldr r1, [sp, #0x30] - mov sb, sb, lsr #0x10 - orr r1, r1, #0x1000000 - str r1, [sp, #0x30] - add r1, r0, #0x300 - and r8, r8, #0xff - add r0, r0, #0x100 - orr r0, r8, r0 - orr r1, r8, r1 - str r0, [sp] - orr r0, r2, #0x20000 - str r0, [sp, #0x1c] - orr r0, r5, #0x30000 - str r0, [sp, #0x20] - orr r0, r5, #0x40000 - str r0, [sp, #0xc] - ldr r0, _022EDD4C ; =0x03002100 - mov r6, #0 - sub r0, r0, #0x100 - str r0, [sp, #0x14] - mov r0, r2, lsr #0x10 - orr r0, r0, #0x20000 - str r0, [sp, #4] - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - orr sb, sb, #0x10000 - orr r0, r0, #0x30000 - str sb, [sp, #0x2c] - str r1, [sp, #0x18] - str r0, [sp, #8] - mov r5, r6 - mov r8, #0xfa0 -_022ED9D0: - cmp r6, #0 - bne _022EDC10 - ldr r0, _022EDD50 ; =ov00_023276D4 - cmp r7, #7 - str r5, [r0, #4] - addls pc, pc, r7, lsl #2 - b _022ED9D0 -_022ED9EC: ; jump table - b _022ED9D0 ; case 0 - b _022EDA0C ; case 1 - b _022EDAB8 ; case 2 - b _022EDAD8 ; case 3 - b _022EDB74 ; case 4 - b _022EDB74 ; case 5 - b _022EDBCC ; case 6 - b _022EDBF0 ; case 7 -_022EDA0C: - ldr r1, [sp] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - mov r0, #4 - mov r1, r4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - ldr r1, [sp, #4] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - ldr r1, [sp, #8] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - ldr r1, [sp, #0xc] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - ldr r1, [sp, #0x10] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _022ED9D0 -_022EDAB8: - ldr r1, [sp, #0x14] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _022ED9D0 -_022EDAD8: - ldr r1, [sp, #0x18] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022EDB64 - mov r0, #4 - mov r1, r4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022EDB64 - ldr r1, [sp, #0x1c] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022EDB64 - ldr r1, [sp, #0x20] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022EDB64 - ldr r1, [sp, #0x24] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 -_022EDB64: - bl OS_GetTick - str r0, [sp, #0x34] - mov fp, r1 - b _022ED9D0 -_022EDB74: - ldr r1, [sp, #0x28] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - ldr r1, [sp, #0x2c] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _022ED9D0 - ldr r1, [sp, #0x30] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _022ED9D0 -_022EDBCC: - ldr r1, _022EDD4C ; =0x03002100 - mov r0, #4 - add r1, r1, #0xc00 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _022ED9D0 -_022EDBF0: - ldr r1, _022EDD4C ; =0x03002100 - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _022ED9D0 -_022EDC10: - ldr r0, _022EDD50 ; =ov00_023276D4 - ldr r0, [r0, #4] - cmp r0, #1 - bne _022ED9D0 - ldr r0, _022EDD50 ; =ov00_023276D4 - mov r6, #0 - ldrh r0, [r0] - cmp r0, #0 - bne _022EDD34 - cmp r7, #7 - addls pc, pc, r7, lsl #2 - b _022ED9D0 -_022EDC40: ; jump table - b _022ED9D0 ; case 0 - b _022EDC60 ; case 1 - b _022EDC6C ; case 2 - b _022EDC74 ; case 3 - b _022EDC7C ; case 4 - b _022EDC7C ; case 5 - b _022EDD1C ; case 6 - b _022EDD28 ; case 7 -_022EDC60: - add sp, sp, #0x3c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EDC6C: - mov r7, #4 - b _022ED9D0 -_022EDC74: - mov r7, #5 - b _022ED9D0 -_022EDC7C: - mov r0, sl - mov r1, #1 - bl DC_InvalidateRange - cmp r7, #4 - ldrb r0, [sl] - bne _022EDCAC - tst r0, #2 - movne r7, #3 - bne _022ED9D0 - add sp, sp, #0x3c - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EDCAC: - tst r0, #1 - addeq sp, sp, #0x3c - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - tst r0, #0x20 - bne _022EDD08 - bl OS_GetTick - ldr r2, [sp, #0x34] - mov ip, r6 - subs sb, r0, r2 - mov r0, #0x40 - sbc lr, r1, fp - umull r0, r1, sb, r0 - mla r1, sb, ip, r1 - mov sb, #0x40 - mla r1, lr, sb, r1 - ldr r2, _022EDD54 ; =0x000082EA - mov r3, r6 - bl _ll_udiv - mov r2, r6 - cmp r1, r2 - cmpeq r0, r8 - bls _022EDD10 -_022EDD08: - mov r7, #6 - b _022ED9D0 -_022EDD10: - mov r0, #0x4000 - blx SVC_WaitByLoop - b _022ED9D0 -_022EDD1C: - add sp, sp, #0x3c - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EDD28: - add sp, sp, #0x3c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EDD34: - mov r0, r6 - add sp, sp, #0x3c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EDD40: .word ov00_02327700 -_022EDD44: .word 0x01020000 -_022EDD48: .word 0x02002200 -_022EDD4C: .word 0x03002100 -_022EDD50: .word ov00_023276D4 -_022EDD54: .word 0x000082EA - arm_func_end NVramm_ExecuteCommand - - arm_func_start ReadNvram_Dwc -ReadNvram_Dwc: ; 0x022EDD58 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r2 - mov r6, r0 - mov r0, r4 - mov r5, r1 - bl DC_InvalidateRange - mov r8, #4 - mov r7, #1 -_022EDD78: - mov r0, r8 - mov r1, r7 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _022EDD78 - ldr r1, _022EDDE4 ; =Callback_NVram - mov r0, #4 - bl PXI_SetFifoRecvCallback - mov r0, r5, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r7, #0x40000 - mov sb, #1 -_022EDDA8: - mov r0, sb - mov r1, r6 - mov r2, r8 - mov r3, r4 - bl NVramm_ExecuteCommand - cmp r0, #1 - beq _022EDDD0 - mov r0, r7 - blx SVC_WaitByLoop - b _022EDDA8 -_022EDDD0: - mov r0, r4 - mov r1, r5 - bl DC_InvalidateRange - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EDDE4: .word Callback_NVram - arm_func_end ReadNvram_Dwc - - arm_func_start WriteNvram_Dwc -WriteNvram_Dwc: ; 0x022EDDE8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #4 - mov r4, #1 -_022EDE00: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _022EDE00 - ldr r1, _022EDE60 ; =Callback_NVram - mov r0, #4 - bl PXI_SetFifoRecvCallback - mov r0, r6 - mov r1, r7 - bl DC_StoreRange - mov r4, #0x40000 - mov r5, #2 -_022EDE34: - mov r0, r5 - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl NVramm_ExecuteCommand - cmp r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - blx SVC_WaitByLoop - b _022EDE34 -_022EDE5C: - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EDE60: .word Callback_NVram - arm_func_end WriteNvram_Dwc - - arm_func_start Verify_Dwc -Verify_Dwc: ; 0x022EDE64 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r2 - mov r4, r3 - mov r6, r0 - mov r0, r1 - mov r1, r5 - mov r2, r4 - bl ReadNvram_Dwc - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl memcmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Verify_Dwc - - arm_func_start WriteDisable_Dwc -WriteDisable_Dwc: ; 0x022EDEB0 - stmdb sp!, {r4, r5, r6, lr} - mov r5, #4 - mov r4, #1 -_022EDEBC: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _022EDEBC - ldr r1, _022EDF18 ; =Callback_NVram - mov r0, #4 - bl PXI_SetFifoRecvCallback - mov r4, #0x40000 - mov r6, #7 - mov r5, #0 -_022EDEE8: - mov r0, r6 - mov r1, r5 - mov r2, r5 - mov r3, r5 - bl NVramm_ExecuteCommand - cmp r0, #1 - beq _022EDF10 - mov r0, r4 - blx SVC_WaitByLoop - b _022EDEE8 -_022EDF10: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EDF18: .word Callback_NVram - arm_func_end WriteDisable_Dwc - - arm_func_start Callback_NVram -Callback_NVram: ; 0x022EDF1C - ldr r0, _022EDF48 ; =ov00_023276D4 - and r1, r1, #0xff - strh r1, [r0] - mov r1, #1 - str r1, [r0, #4] - cmp r2, #0 - movne r1, #0xff - strneh r1, [r0] - ldr r0, _022EDF48 ; =ov00_023276D4 - ldrh r0, [r0] - bx lr - .align 2, 0 -_022EDF48: .word ov00_023276D4 - arm_func_end Callback_NVram - - arm_func_start Dwci_BackuplConvWifiInfo -Dwci_BackuplConvWifiInfo: ; 0x022EDF4C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r3, [r4, #8] - ldr r2, [r4, #0xc] - ldr r1, _022EE000 ; =ov00_023276E0 - str r2, [sp, #4] - str r3, [sp] - mov r2, #5 - bl MI_CpuCopy8 - ldr r2, [sp] - ldr r1, [sp, #4] - mov ip, r2, lsr #5 - ldr lr, [r4, #4] - mov r3, r1, lsr #5 - orr ip, ip, r1, lsl #27 - mov r0, #7 - and r1, r0, lr, lsr #8 - and r0, r2, #0x1f - orr lr, r1, r0, lsl #3 - ldr r2, _022EE000 ; =ov00_023276E0 - ldr r1, _022EE004 ; =ov00_023276E6 - strb lr, [r2, #5] - add r0, sp, #0 - str ip, [sp] - str r3, [sp, #4] - mov r2, #4 - bl MI_CpuCopy8 - ldrh r0, [r4, #0x10] - ldr r1, [sp, #4] - ldr r3, _022EE000 ; =ov00_023276E0 - and r1, r1, #0x3f - mov r0, r0, lsl #0x1e - orr r0, r1, r0, lsr #24 - strb r0, [r3, #0xa] - ldrh r2, [r4, #0x10] - add r0, r4, #0x12 - ldr r1, _022EE008 ; =ov00_023276EC - mov r4, r2, asr #2 - mov r2, #2 - strb r4, [r3, #0xb] - bl MI_CpuCopy8 - ldr r0, _022EE000 ; =ov00_023276E0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EE000: .word ov00_023276E0 -_022EE004: .word ov00_023276E6 -_022EE008: .word ov00_023276EC - arm_func_end Dwci_BackuplConvWifiInfo - - arm_func_start Dwci_BackuplGetWifi -Dwci_BackuplGetWifi: ; 0x022EE00C - ldr r0, _022EE014 ; =ov00_023276E0 - bx lr - .align 2, 0 -_022EE014: .word ov00_023276E0 - arm_func_end Dwci_BackuplGetWifi - - arm_func_start Dwc_BM_Init -Dwc_BM_Init: ; 0x022EE018 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov r8, r0 - mov r1, #0 - mov r2, #0x700 - bl MI_CpuFill8 - mov r0, r8 - bl Dwci_BackuplInit - cmp r0, #0 - addeq sp, sp, #0x10 - ldreq r0, _022EE30C ; =0xFFFFD8EF - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _022EE310 ; =0x0000A001 - add r0, r8, #0x500 - bl MATHi_CRC16InitTable - mov r0, r8 - bl Dwci_BackuplRead - cmp r0, #0 - addeq sp, sp, #0x10 - ldreq r0, _022EE30C ; =0xFFFFD8EF - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - mov r6, r8 - mov r7, r8 - mov r5, #0 - mov sl, #1 - add sb, sp, #0 - mov r4, #0xfe -_022EE094: - mov r1, r6 - mov r2, r4 - add r0, r8, #0x500 - bl MATH_CalcCRC16 - add r1, r8, r5, lsl #8 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - bne _022EE0C4 - mov r0, r7 - bl CheckAp_Dwc - cmp r0, #0 - strne sl, [sb, r5, lsl #2] -_022EE0C4: - add r5, r5, #1 - cmp r5, #3 - add r6, r6, #0x100 - add r7, r7, #0x100 - blt _022EE094 - add r0, r8, #0x500 - add r1, r8, #0x300 - mov r2, #0xfe - bl MATH_CalcCRC16 - add r1, r8, #0x300 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - moveq r0, #1 - ldr r1, [sp] - streq r0, [sp, #0xc] - cmp r1, #0 - ldrne r0, [sp, #4] - cmpne r0, #0 - ldrne r0, [sp, #8] - cmpne r0, #0 - ldrne r0, [sp, #0xc] - cmpne r0, #0 - beq _022EE134 - add r0, r8, #0xf0 - bl Dwci_BackuplSetWiFi - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EE134: - cmp r1, #0 - ldreq r0, [sp, #4] - cmpeq r0, #0 - ldreq r0, [sp, #8] - cmpeq r0, #0 - ldreq r0, [sp, #0xc] - cmpeq r0, #0 - bne _022EE178 - mov r0, r8 - bl Init_Dwc - mov r0, r8 - bl Dwci_BackuplWriteAll - cmp r0, #0 - movne r0, #0 - add sp, sp, #0x10 - ldreq r0, _022EE314 ; =0xFFFFD8F0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EE178: - cmp r1, #0 - ldrne r0, [sp, #4] - cmpne r0, #0 - bne _022EE1C0 - ldr r0, [sp, #8] - cmp r0, #0 - ldrne r0, [sp, #0xc] - cmpne r0, #0 - bne _022EE1C0 - mov r0, r8 - bl Init_Dwc - mov r0, r8 - bl Dwci_BackuplWriteAll - cmp r0, #0 - movne r0, #0 - add sp, sp, #0x10 - ldreq r0, _022EE314 ; =0xFFFFD8F0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EE1C0: - cmp r1, #0 - ldreq r0, [sp, #4] - cmpeq r0, #0 - bne _022EE1F4 - mov r0, r8 - bl Init_Dwc - mov r0, r8 - bl Dwci_BackuplWriteAll - cmp r0, #0 - ldrne r0, _022EE318 ; =0xFFFFD8ED - add sp, sp, #0x10 - ldreq r0, _022EE314 ; =0xFFFFD8F0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022EE1F4: - cmp r1, #0 - bne _022EE224 - mov r0, r8 - mov r1, #0 - bl InitPage_Dwc - add r0, r8, #0x1f0 - add r1, r8, #0xf0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r8, #0x1ef] - strb r0, [r8, #0xef] - b _022EE254 -_022EE224: - ldr r0, [sp, #4] - cmp r0, #0 - bne _022EE254 - mov r0, r8 - mov r1, #1 - bl InitPage_Dwc - add r0, r8, #0xf0 - add r1, r8, #0x1f0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r8, #0xef] - strb r0, [r8, #0x1ef] -_022EE254: - add r0, r8, #0xf0 - bl Dwci_BackuplSetWiFi - ldr r0, [sp, #8] - cmp r0, #0 - bne _022EE274 - mov r0, r8 - mov r1, #2 - bl InitPage_Dwc -_022EE274: - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _022EE290 - add r1, r8, #0x300 - mov r0, #0 - mov r2, #0x100 - bl MTi_CpuClear16 -_022EE290: - mov r4, #0 - mov r5, r4 - mov r2, #1 - add r3, sp, #0 -_022EE2A0: - ldr r0, [r3, r5, lsl #2] - cmp r0, #0 - bne _022EE2D4 - ldrb r0, [r8, #0xef] - tst r0, r2, lsl r5 - beq _022EE2D4 - mov r1, r0 - mvn r0, r2, lsl r5 - and r0, r1, r0 - strb r0, [r8, #0xef] - and r0, r0, #0xff - mov r4, r2 - strb r0, [r8, #0x1ef] -_022EE2D4: - add r5, r5, #1 - cmp r5, #3 - blt _022EE2A0 - mov r0, r8 - bl Dwci_BackuplWriteAll - cmp r0, #0 - addeq sp, sp, #0x10 - ldreq r0, _022EE314 ; =0xFFFFD8F0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r4, #0 - ldrne r0, _022EE31C ; =0xFFFFD8EE - moveq r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022EE30C: .word 0xFFFFD8EF -_022EE310: .word 0x0000A001 -_022EE314: .word 0xFFFFD8F0 -_022EE318: .word 0xFFFFD8ED -_022EE31C: .word 0xFFFFD8EE - arm_func_end Dwc_BM_Init - - arm_func_start CheckAp_Dwc -CheckAp_Dwc: ; 0x022EE320 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldrb r0, [r4, #0xe7] - cmp r0, #0xff - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, pc} - cmp r0, #2 - addhi sp, sp, #4 - movhi r0, #0 - ldmhiia sp!, {r3, r4, pc} - add r0, r4, #0x40 - bl Dwc_BackuplCheckSsid - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r1, _022EE41C ; =ov00_02318268 - add r0, r4, #0xc0 - mov r2, #4 - bl memcmp - cmp r0, #0 - beq _022EE3D0 - add r0, r4, #0xc4 - bl Dwc_BackuplCheckAddress - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #0x20 - addhi sp, sp, #4 - movhi r0, #0 - ldmhiia sp!, {r3, r4, pc} - add r1, sp, #0 - bl Dwci_BackuplConvMaskAddr - add r1, sp, #0 - add r0, r4, #0xc0 - bl Dwc_BackuplCheckIp - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} -_022EE3D0: - ldr r1, _022EE41C ; =ov00_02318268 - add r0, r4, #0xc8 - mov r2, #4 - bl memcmp - cmp r0, #0 - beq _022EE410 - add r0, r4, #0xc8 - bl Dwc_BackuplCheckAddress - cmp r0, #0 - bne _022EE410 - add r0, r4, #0xcc - bl Dwc_BackuplCheckAddress - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} -_022EE410: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022EE41C: .word ov00_02318268 - arm_func_end CheckAp_Dwc - - arm_func_start Init_Dwc -Init_Dwc: ; 0x022EE420 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - mov r1, r7 - mov r0, #0 - mov r2, #0x400 - bl MTi_CpuClear16 - mov r2, #0 - mov r1, #0xff -_022EE444: - add r0, r7, r2, lsl #8 - add r2, r2, #1 - strb r1, [r0, #0xe7] - cmp r2, #3 - blt _022EE444 - add r0, sp, #0 - bl Dwci_Auth_GetNewWiFiInfo - add r0, sp, #0 - bl Dwci_BackuplConvWifiInfo - mov r5, r0 - mov r6, #0 - mov r4, #0xe -_022EE474: - mov r0, r5 - mov r2, r4 - add r1, r7, #0xf0 - bl MI_CpuCopy8 - add r6, r6, #1 - cmp r6, #2 - add r7, r7, #0x100 - blt _022EE474 - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end Init_Dwc - - arm_func_start InitPage_Dwc -InitPage_Dwc: ; 0x022EE4A0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - add r1, r5, r4, lsl #8 - mov r0, #0 - mov r2, #0x100 - bl MTi_CpuClear16 - add r0, r5, r4, lsl #8 - mov r1, #0xff - strb r1, [r0, #0xe7] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end InitPage_Dwc - - arm_func_start Dwci_Util_WiFiId_ScrambleUid -Dwci_Util_WiFiId_ScrambleUid: ; 0x022EE4CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - ldr r4, _022EE644 ; =0x0000FFFF - mov lr, #0 - and ip, lr, #0 - add r5, r4, #0xff0000 - and r2, r2, #1 - mov r6, ip, lsl #2 - and r3, r3, #3 - and r5, r1, r5 - orr r1, r3, r2, lsl #2 - orr r6, r6, r2, lsr #30 - mov r7, ip, lsl #3 - and r2, r0, r4 - orr r0, r1, r5, lsl #3 - orr r1, r0, r2, lsl #27 - mov r3, ip, lsl #0x1b - orr r3, r3, r2, lsr #5 - orr r7, r7, r5, lsr #29 - orr r0, ip, r6 - orr r0, r7, r0 - orr r0, r3, r0 - add r2, sp, #8 - str r1, [sp, #8] - str r0, [sp, #0xc] -_022EE530: - ldrb r0, [r2] - add lr, lr, #1 - cmp lr, #6 - eor r0, r0, #0xd6 - strb r0, [r2], #1 - blt _022EE530 - ldr r2, _022EE648 ; =ov00_02318274 - add r4, sp, #8 - mov r5, #0 -_022EE554: - ldrb r3, [r4] - add r5, r5, #1 - cmp r5, #5 - mov r0, r3, asr #4 - and r1, r0, #0xf - and r0, r3, #0xf - ldrb r1, [r2, r1] - ldrb r0, [r2, r0] - orr r0, r0, r1, lsl #4 - strb r0, [r4], #1 - blt _022EE554 - add r0, sp, #8 - add r1, sp, #0 - mov r2, #8 - bl MI_CpuCopy8 - ldr r4, _022EE64C ; =ov00_0231826C - add r3, sp, #0 - mov r5, #0 - add r0, sp, #8 -_022EE5A0: - ldrb r2, [r3], #1 - ldrb r1, [r4], #1 - add r5, r5, #1 - cmp r5, #5 - strb r2, [r0, r1] - blt _022EE5A0 - ldrb r2, [sp, #0xd] - mov r1, #0 - ldr r3, [sp, #8] - and r2, r2, #7 - strb r1, [sp, #0xf] - strb r1, [sp, #0xe] - strb r2, [sp, #0xd] - ldr r2, [sp, #0xc] - mov r4, r3, lsl #1 - mov r2, r2, lsl #1 - orr r2, r2, r3, lsr #31 - str r2, [sp, #0xc] - ldrb r2, [sp, #0xd] - str r4, [sp, #8] - ldrb r3, [sp, #8] - mov r2, r2, asr #3 - and r2, r2, #1 - orr r2, r3, r2 - strb r2, [sp, #8] -_022EE604: - ldrb r2, [r0] - add r1, r1, #1 - cmp r1, #6 - eor r2, r2, #0x67 - strb r2, [r0], #1 - blt _022EE604 - ldrb r0, [sp, #0xd] - mov r1, #0 - strb r1, [sp, #0xf] - and r0, r0, #7 - strb r1, [sp, #0xe] - strb r0, [sp, #0xd] - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EE644: .word 0x0000FFFF -_022EE648: .word ov00_02318274 -_022EE64C: .word ov00_0231826C - arm_func_end Dwci_Util_WiFiId_ScrambleUid - - arm_func_start Dwci_Auth_GetNewWiFiInfo -Dwci_Auth_GetNewWiFiInfo: ; 0x022EE650 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov sl, r0 - bl Dwci_BM_GetWiFiInfo - bl Rtc_Init - add r0, sp, #0x14 - bl Rtc_GetDate - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #8 - bl Rtc_GetTime - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x14 - add r1, sp, #8 - bl Rtc_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x24 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl OS_IsTickAvailable - cmp r0, #0 - beq _022EE6CC - ldr r0, _022EE81C ; =OS_GetTick - adds r4, r4, r0 -_022EE6CC: - add r0, sp, #0 - bl OS_GetMacAddress - ldrb r0, [sp, #1] - ldr r5, _022EE820 ; =0x5D588B65 - ldr r6, _022EE824 ; =0x00269EC3 - ldrb r1, [sp] - mla sb, r4, r5, r6 - mov r0, r0, lsl #8 - orr r1, r0, r1, lsl #16 - ldrb r2, [sp, #2] - ldr r0, _022EE828 ; =0x000009BF - ldrb r7, [sp, #4] - orr r1, r2, r1 - cmp r1, r0 - mov r2, sb, lsr #0x10 - mov r0, #0x3e8 - mul r3, r2, r0 - mov r2, r3, lsr #0x10 - movne r1, #1 - ldrb r0, [sp, #5] - ldrb r4, [sp, #3] - mov r3, r7, lsl #8 - moveq r1, #0 - orr r4, r3, r4, lsl #16 - strh r2, [sl, #0x10] - mov r3, #0 - str r3, [sl] - str r3, [sl, #4] - ldrh r2, [sl, #0x12] - and r7, r1, #0xff - orr r8, r0, r4 - str r3, [sl, #8] - cmp r2, #0 - str r3, [sl, #0xc] - bne _022EE7BC - ldr r0, [sl, #8] - cmp r3, r3 - cmpeq r0, r3 - bne _022EE810 - mov fp, r3 - mov r4, r3 -_022EE770: - mul r0, sb, r5 - adds sb, r0, r6 - bne _022EE788 -_022EE77C: - mul r0, sb, r5 - adds sb, r0, r6 - beq _022EE77C -_022EE788: - strh sb, [sl, #0x12] - ldrh r0, [sl, #0x12] - mov r1, r8 - mov r2, r7 - mov r3, #0 - bl Dwci_Util_WiFiId_ScrambleUid - str r0, [sl, #8] - str r1, [sl, #0xc] - ldr r0, [sl, #8] - cmp r1, fp - cmpeq r0, r4 - beq _022EE770 - b _022EE810 -_022EE7BC: - ldr r0, [sl, #8] - cmp r3, r3 - cmpeq r0, r3 - bne _022EE810 - mov r6, r3 - mov r5, r3 - mov r4, r3 -_022EE7D8: - ldrh r0, [sl, #0x12] - mov r1, r8 - mov r2, r7 - add r0, r0, #1 - strh r0, [sl, #0x12] - ldrh r0, [sl, #0x12] - mov r3, r6 - bl Dwci_Util_WiFiId_ScrambleUid - str r0, [sl, #8] - str r1, [sl, #0xc] - ldr r0, [sl, #8] - cmp r1, r5 - cmpeq r0, r4 - beq _022EE7D8 -_022EE810: - mov r0, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EE81C: .word OS_GetTick -_022EE820: .word 0x5D588B65 -_022EE824: .word 0x00269EC3 -_022EE828: .word 0x000009BF - arm_func_end Dwci_Auth_GetNewWiFiInfo - - arm_func_start Dwci_Auth_MakeWiFiID -Dwci_Auth_MakeWiFiID: ; 0x022EE82C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, sp, #0 - bl Dwci_Auth_GetNewWiFiInfo - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - add r0, sp, #0 - mov r1, r4 - bl Dwci_BM_SetWiFiInfo - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwci_Auth_MakeWiFiID - - arm_func_start Dwci_Auth_UpDateWiFiID -Dwci_Auth_UpDateWiFiID: ; 0x022EE870 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl Dwci_BM_GetWiFiInfo - add ip, r5, #8 - ldmia ip, {r2, r3} - stmia r5, {r2, r3} - add r1, sp, #8 - ldmia r1, {r2, r3} - mov r0, r5 - mov r1, r4 - stmia ip, {r2, r3} - bl Dwci_BM_SetWiFiInfo - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end Dwci_Auth_UpDateWiFiID - - arm_func_start Dwci_Auth_RemakeWiFiID -Dwci_Auth_RemakeWiFiID: ; 0x022EE8C0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - add r2, sp, #0 - mov r1, #0 - mov sl, r0 - strb r1, [r2] - strb r1, [r2, #1] - strb r1, [r2, #2] - strb r1, [r2, #3] - strb r1, [r2, #4] - strb r1, [r2, #5] - bl Dwci_BM_GetWiFiInfo - bl Rtc_Init - add r0, sp, #0x14 - bl Rtc_GetDate - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #8 - bl Rtc_GetTime - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x14 - add r1, sp, #8 - bl Rtc_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x24 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl OS_IsTickAvailable - cmp r0, #0 - beq _022EE95C - ldr r0, _022EEA50 ; =OS_GetTick - adds r4, r4, r0 -_022EE95C: - add r0, sp, #0 - bl OS_GetMacAddress - ldrb r0, [sp, #1] - ldr r5, _022EEA54 ; =0x5D588B65 - ldr r6, _022EEA58 ; =0x00269EC3 - ldrb r1, [sp] - mov r0, r0, lsl #8 - mla sb, r4, r5, r6 - orr r1, r0, r1, lsl #16 - ldrb r2, [sp, #2] - ldr r0, _022EEA5C ; =0x000009BF - ldrb r7, [sp, #4] - orr r1, r2, r1 - cmp r1, r0 - movne r1, #1 - mov r2, sb, lsr #0x10 - mov r0, #0x3e8 - mul r4, r2, r0 - mov r2, r4, lsr #0x10 - ldrb r0, [sp, #5] - ldrb r8, [sp, #3] - mov r4, r7, lsl #8 - moveq r1, #0 - mov r3, #0 - strh r2, [sl, #0x10] - str r3, [sl, #8] - str r3, [sl, #0xc] - orr r4, r4, r8, lsl #16 - ldr r2, [sl, #8] - cmp r3, #0 - cmpeq r2, #0 - and r7, r1, #0xff - orr r8, r0, r4 - bne _022EEA44 - mov fp, r3 - mov r4, r3 -_022EE9EC: - mla sb, r5, sb, r6 - b _022EE9F8 -_022EE9F4: - mla sb, r5, sb, r6 -_022EE9F8: - cmp sb, #0 - beq _022EE9F4 - ldrh r2, [sl, #0x12] - mov r0, sb, lsl #0x10 - mov r1, r0, lsr #0x10 - cmp r2, r0, lsr #16 - beq _022EE9F4 - strh r1, [sl, #0x12] - ldrh r0, [sl, #0x12] - mov r1, r8 - mov r2, r7 - mov r3, #0 - bl Dwci_Util_WiFiId_ScrambleUid - str r0, [sl, #8] - str r1, [sl, #0xc] - ldr r0, [sl, #8] - cmp r1, fp - cmpeq r0, r4 - beq _022EE9EC -_022EEA44: - mov r0, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EEA50: .word OS_GetTick -_022EEA54: .word 0x5D588B65 -_022EEA58: .word 0x00269EC3 -_022EEA5C: .word 0x000009BF - arm_func_end Dwci_Auth_RemakeWiFiID - - arm_func_start Dwc_Auth_GetId -Dwc_Auth_GetId: ; 0x022EEA60 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, sp, #0 - bl Dwci_BM_GetWiFiInfo - add r0, sp, #0 - ldmia r0, {r2, r3} - stmia r4, {r2, r3} - add r1, sp, #8 - add r0, r4, #8 - ldmia r1, {r2, r3} - stmia r0, {r2, r3} - ldr r0, [sp, #4] - ldr r1, [sp] - cmp r0, #0 - mov r0, #0 - cmpeq r1, #0 - movne r0, #1 - str r0, [r4, #0x10] - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwc_Auth_GetId - - arm_func_start Dwc_Auth_CheckWiFiIdNeedCreate -Dwc_Auth_CheckWiFiIdNeedCreate: ; 0x022EEAB4 - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0 - bl Dwci_BM_GetWiFiInfo - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - cmp r0, #0 - cmpeq r1, #0 - mov r0, #0 - bne _022EEAF8 - ldr r1, [sp, #4] - ldr r2, [sp] - cmp r1, r0 - cmpeq r2, r0 - addeq sp, sp, #0x14 - moveq r0, #1 - ldmeqia sp!, {pc} -_022EEAF8: - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {pc} - arm_func_end Dwc_Auth_CheckWiFiIdNeedCreate - - arm_func_start b64size -b64size: ; 0x022EEB04 - ldr r1, _022EEB38 ; =0xAAAAAAAB - mov r3, #3 - umull r1, r2, r0, r1 - mov r2, r2, lsr #1 - umull r1, r2, r3, r2 - subs r2, r0, r1 - ldr r1, _022EEB38 ; =0xAAAAAAAB - movne r3, #1 - umull r1, r2, r0, r1 - moveq r3, #0 - add r0, r3, r2, lsr #1 - mov r0, r0, lsl #2 - bx lr - .align 2, 0 -_022EEB38: .word 0xAAAAAAAB - arm_func_end b64size - - arm_func_start my_randinit -my_randinit: ; 0x022EEB3C - ldr r1, _022EEB4C ; =ov00_02327720 - orr r0, r0, r0, lsl #16 - str r0, [r1] - bx lr - .align 2, 0 -_022EEB4C: .word ov00_02327720 - arm_func_end my_randinit - - arm_func_start my_rand -my_rand: ; 0x022EEB50 - stmdb sp!, {r3, lr} - ldr r1, _022EEB88 ; =ov00_0231A2C4 - ldr r0, _022EEB8C ; =ov00_02327720 - ldr r3, [r1, #0x4c] - ldr r2, [r1, #0x48] - ldr r0, [r0] - ldr r1, [r1, #0x50] - mla r0, r2, r0, r3 - bl _u32_div_f - ldr r0, _022EEB8C ; =ov00_02327720 - mov r2, r1, asr #0x10 - str r1, [r0] - and r0, r2, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_022EEB88: .word ov00_0231A2C4 -_022EEB8C: .word ov00_02327720 - arm_func_end my_rand - - arm_func_start Dwci_RankingValidateKey -Dwci_RankingValidateKey: ; 0x022EEB90 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _022EEC80 ; =ov00_0231A2C4 - mov ip, #0 - str ip, [r4, #0x10] - ldr r4, [sp, #0x18] - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl strlen - cmp r0, #0x20 - movhs r0, #0 - ldmhsia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl strlen - cmp r0, #0x14 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - sub r0, r6, #5 - tst r0, #7 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - tst r5, #1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r2, #0 - mov r1, r2 -_022EEBFC: - mov r0, r4, lsr r1 - and r0, r0, #1 - cmp r0, #1 - add r1, r1, #1 - addeq r2, r2, #1 - cmp r1, #0x20 - blt _022EEBFC - cmp r2, #1 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022EEC84 ; =ov00_0231A2D8 - mov r1, r8 - mov r2, #0x20 - bl strncpy - ldr r3, _022EEC88 ; =ov00_0231A2F8 - mov r2, #0xa -_022EEC3C: - ldrb r1, [r7] - ldrb r0, [r7, #1] - add r7, r7, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022EEC3C - ldr r1, _022EEC80 ; =ov00_0231A2C4 - ldr r0, [sp, #0x1c] - str r6, [r1, #0x48] - str r5, [r1, #0x4c] - str r4, [r1, #0x50] - str r0, [r1, #0x54] - mov r0, #1 - str r0, [r1, #0x10] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EEC80: .word ov00_0231A2C4 -_022EEC84: .word ov00_0231A2D8 -_022EEC88: .word ov00_0231A2F8 - arm_func_end Dwci_RankingValidateKey - - arm_func_start Dwci_RankingSessionCompleteCallback_Helper -Dwci_RankingSessionCompleteCallback_Helper: ; 0x022EEC8C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x50 - ldr r4, _022EEE30 ; =ov00_02318284 - add r3, sp, #0 - mov r6, r0 - mov r5, r1 - mov r2, #8 -_022EECA8: - ldrb r1, [r4] - ldrb r0, [r4, #1] - add r4, r4, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _022EECA8 - ldrb r0, [r4] - cmp r5, #0x28 - addle sp, sp, #0x50 - strb r0, [r3] - movle r0, #0 - ldmleia sp!, {r4, r5, r6, r7, r8, pc} - sub r4, r5, #0x28 - mov r0, r4 - bl b64size - add r1, r0, #0x29 - mov r0, #7 - bl Dwc_Alloc - movs r7, r0 - addeq sp, sp, #0x50 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r8, _022EEE34 ; =ov00_0231A2F8 - mov r3, r7 - mov r2, #0xa -_022EED14: - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r8, r8, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022EED14 - mov r0, r6 - mov r2, r4 - add r1, r7, #0x14 - mov r3, #2 - bl B64Encode - mov r0, r4 - bl b64size - add r1, r7, #0x14 - ldr r3, _022EEE34 ; =ov00_0231A2F8 - add r8, r1, r0 - mov r2, #0xa -_022EED60: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [r8] - strb r0, [r8, #1] - add r8, r8, #2 - bne _022EED60 - mov r0, r4 - bl b64size - mov r2, r0 - add r0, sp, #0x11 - mov r1, r7 - add r2, r2, #0x28 - bl Math_CalcSha1 - mov r1, r7 - mov r0, #7 - mov r2, #0 - bl Dwc_Free - mov r2, #0 - add r3, sp, #0x11 - mov r7, r2 - add r1, sp, #0x25 - add r8, sp, #0 -_022EEDC0: - ldrb ip, [r3], #1 - add r2, r2, #1 - add r0, r1, r7 - mov lr, ip, asr #4 - and ip, ip, #0xf - ldrsb lr, [r8, lr] - ldrsb ip, [r8, ip] - cmp r2, #0x14 - strb lr, [r1, r7] - strb ip, [r0, #1] - add r7, r7, #2 - blt _022EEDC0 - sub r0, r5, #0x28 - mov r3, #0 - add r0, r6, r0 - mov r2, #0x28 - strb r3, [sp, #0x4d] - bl strncmp - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, _022EEE38 ; =ov00_0231A2C4 - mov r0, #1 - str r6, [r1, #0x6c] - str r4, [r1, #0x70] - add sp, sp, #0x50 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EEE30: .word ov00_02318284 -_022EEE34: .word ov00_0231A2F8 -_022EEE38: .word ov00_0231A2C4 - arm_func_end Dwci_RankingSessionCompleteCallback_Helper - - arm_func_start Dwci_RankingSessionProgressCallback -Dwci_RankingSessionProgressCallback: ; 0x022EEE3C - bx lr - arm_func_end Dwci_RankingSessionProgressCallback - - arm_func_start Dwci_RankingSessionCompleteCallback -Dwci_RankingSessionCompleteCallback: ; 0x022EEE40 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - ldr r3, _022EF0B0 ; =ov00_0231A2C4 - mvn r4, #0 - str r4, [r3, #0xc] - ldr ip, [r3, #4] - mov r5, r0 - cmp ip, #1 - mov r4, r1 - addeq sp, sp, #0x48 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r2, #0 - bne _022EF0A0 - cmp ip, #5 - beq _022EEE8C - cmp ip, #7 - beq _022EEFB8 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022EEE8C: - cmp r4, #0x20 - bne _022EEFA0 - ldr r0, [r3, #0x5c] - ldr r3, _022EF0B4 ; =ov00_02318295 - add lr, sp, #0 - add r4, r0, #0x14 - mov r2, #8 -_022EEEA8: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [lr] - strb r0, [lr, #1] - add lr, lr, #2 - subs r2, r2, #1 - bne _022EEEA8 - ldrb r0, [r3] - ldr r3, _022EF0B8 ; =ov00_0231A2F8 - add ip, sp, #0x11 - strb r0, [lr] - mov r2, #0xa -_022EEEDC: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r2, r2, #1 - bne _022EEEDC - add r0, sp, #0x25 - mov r1, r5 - mov r2, #0x20 - bl memcpy - add r1, sp, #0x11 - mov r0, r4 - mov r2, #0x34 - bl Math_CalcSha1 - mov r0, #0 - ldr r2, _022EF0B0 ; =ov00_0231A2C4 - mov r1, r0 - add lr, sp, #0 -_022EEF2C: - ldrb ip, [r4, r0] - ldr r3, [r2, #0x5c] - mov ip, ip, asr #4 - ldrsb ip, [lr, ip] - strb ip, [r3, r1] - ldrb ip, [r4, r0] - ldr r3, [r2, #0x5c] - add r0, r0, #1 - and ip, ip, #0xf - ldrsb ip, [lr, ip] - add r3, r3, r1 - cmp r0, #0x14 - strb ip, [r3, #1] - add r1, r1, #2 - blt _022EEF2C - ldr r0, _022EF0BC ; =ov00_0231A368 - bl strlen - ldr r1, _022EF0B0 ; =ov00_0231A2C4 - mov r4, #0x26 - ldr r3, [r1, #0x5c] - mov r2, #0x29 - strb r4, [r3, -r0] - ldr r1, [r1, #0x5c] - ldr r0, _022EF0C0 ; =ov00_0231A33C - bl strncpy - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - mov r1, #6 - str r1, [r0, #4] - b _022EEFA8 -_022EEFA0: - mov r0, #1 - str r0, [r3, #4] -_022EEFA8: - mov r0, r5 - bl Dwci_GsFree - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022EEFB8: - ldr r0, _022EF0C4 ; =ov00_0231A370 - bl strlen - mov r2, r0 - ldr r1, _022EF0C4 ; =ov00_0231A370 - mov r0, r5 - bl strncmp - cmp r0, #0 - bne _022EEFF4 - mov r0, r5 - bl Dwci_GsFree - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - mov r1, #1 - str r1, [r0, #4] - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022EEFF4: - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - ldr r0, [r0, #0x64] - cmp r0, #0 - beq _022EF014 - bl Dwci_GsFree - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - mov r1, #0 - str r1, [r0, #0x64] -_022EF014: - mov r0, r5 - mov r1, r4 - bl Dwci_RankingSessionCompleteCallback_Helper - cmp r0, #0 - bne _022EF044 - mov r0, r5 - bl Dwci_GsFree - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - mov r1, #1 - str r1, [r0, #4] - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022EF044: - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - ldr r2, [r0, #0x74] - cmp r2, #0 - beq _022EF084 - mov r0, r5 - mov r1, r4 - blx r2 - cmp r0, #0 - bne _022EF084 - mov r0, r5 - bl Dwci_GsFree - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - mov r1, #1 - str r1, [r0, #4] - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022EF084: - ldr r0, _022EF0B0 ; =ov00_0231A2C4 - mov r1, #8 - str r5, [r0, #0x64] - str r4, [r0, #0x68] - str r1, [r0, #4] - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} -_022EF0A0: - mov r0, #1 - str r0, [r3, #4] - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EF0B0: .word ov00_0231A2C4 -_022EF0B4: .word ov00_02318295 -_022EF0B8: .word ov00_0231A2F8 -_022EF0BC: .word ov00_0231A368 -_022EF0C0: .word ov00_0231A33C -_022EF0C4: .word ov00_0231A370 - arm_func_end Dwci_RankingSessionCompleteCallback - - arm_func_start Dwci_RankingSessionEncrypt -Dwci_RankingSessionEncrypt: ; 0x022EF0C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r4, [sp, #0x20] - mov sb, r2 - add r7, r4, sb - mov r4, r0 - mov sl, r1 - add r1, r7, #4 - mov r0, #7 - mov r8, r3 - mov r6, #0 - bl Dwc_Alloc - movs r5, r0 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp sb, #0 - mov r2, r6 - ble _022EF124 -_022EF10C: - ldrb r1, [sl, r2] - add r0, r5, r2 - add r2, r2, #1 - strb r1, [r0, #4] - cmp r2, sb - blt _022EF10C -_022EF124: - ldr r3, [sp, #0x20] - mov sl, #0 - cmp r3, #0 - ble _022EF150 - add r2, r5, sb -_022EF138: - ldrb r1, [r8, sl] - add r0, r2, sl - add sl, sl, #1 - strb r1, [r0, #4] - cmp sl, r3 - blt _022EF138 -_022EF150: - cmp r7, #0 - mov r1, #0 - ble _022EF174 -_022EF15C: - add r0, r5, r1 - ldrb r0, [r0, #4] - add r1, r1, #1 - cmp r1, r7 - add r6, r6, r0 - blt _022EF15C -_022EF174: - mov r0, r6 - bl my_randinit - cmp r7, #0 - mov r8, #0 - ble _022EF1A8 -_022EF188: - bl my_rand - add r2, r5, r8 - ldrb r1, [r2, #4] - add r8, r8, #1 - cmp r8, r7 - eor r0, r1, r0 - strb r0, [r2, #4] - blt _022EF188 -_022EF1A8: - ldr r1, _022EF20C ; =ov00_0231A2C4 - mov r0, r5 - ldr r2, [r1, #0x54] - mov r1, r4 - eor r6, r6, r2 - mov r2, r6, lsr #0x18 - strb r2, [r5] - mov r2, r6, lsr #0x10 - strb r2, [r5, #1] - mov r2, r6, lsr #8 - strb r2, [r5, #2] - add r2, r7, #4 - mov r3, #2 - strb r6, [r5, #3] - bl B64Encode - mov r1, r5 - mov r0, #7 - mov r2, #0 - bl Dwc_Free - add r0, r7, #4 - bl b64size - mov r1, #0 - strb r1, [r4, r0] - mov r0, r1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022EF20C: .word ov00_0231A2C4 - arm_func_end Dwci_RankingSessionEncrypt - - arm_func_start Dwci_RankingSessionInitialize -Dwci_RankingSessionInitialize: ; 0x022EF210 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x28 - mov r5, #0 - add r4, sp, #8 - ldr r2, _022EF370 ; =ov00_0231A2C4 - sub r3, r5, #1 - strb r5, [r4] - strb r5, [r4, #1] - strb r5, [r4, #2] - strb r5, [r4, #3] - strb r5, [r4, #4] - strb r5, [r4, #5] - strb r5, [r4, #6] - strb r5, [r4, #7] - strb r5, [r4, #8] - str r3, [r2, #0xc] - str r5, [r2, #0x58] - str r5, [r2, #0x5c] - str r5, [r2, #0x60] - str r5, [r2, #0x64] - mov r4, r1 - str r5, [r2, #0x68] - cmp r0, #0 - beq _022EF288 - cmp r0, #1 - beq _022EF294 - cmp r0, #2 - ldreq r0, _022EF374 ; =ov00_0231A3C4 - streq r0, [r2] - b _022EF29C -_022EF288: - ldr r0, _022EF378 ; =ov00_0231A378 - str r0, [r2] - b _022EF29C -_022EF294: - ldr r0, _022EF37C ; =ov00_0231A3A0 - str r0, [r2] -_022EF29C: - add r0, sp, #0x11 - mov r1, r4 - mov r2, #0x14 - bl strncpy - mov r3, #0 - add r0, sp, #8 - add r1, r4, #0x14 - mov r2, #8 - strb r3, [sp, #0x25] - bl strncpy - mov r1, #0 - mov r2, #0x10 - bl strtoul - mov r7, r0 - add r0, sp, #8 - add r1, r4, #0x1c - mov r2, #8 - bl strncpy - mov r1, #0 - mov r2, #0x10 - bl strtoul - mov r6, r0 - add r0, sp, #8 - add r1, r4, #0x24 - mov r2, #8 - bl strncpy - mov r1, #0 - mov r2, #0x10 - bl strtoul - mov r5, r0 - add r0, sp, #8 - add r1, r4, #0x2c - mov r2, #8 - bl strncpy - mov r1, #0 - mov r2, #0x10 - bl strtoul - str r5, [sp] - str r0, [sp, #4] - mov r2, r7 - mov r3, r6 - add r0, r4, #0x34 - add r1, sp, #0x11 - bl Dwci_RankingValidateKey - mov r0, #0 - bl Dwc_InitGhttp - ldr r0, _022EF370 ; =ov00_0231A2C4 - mov r2, #3 - mov r1, #1 - str r2, [r0, #4] - str r1, [r0, #8] - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EF370: .word ov00_0231A2C4 -_022EF374: .word ov00_0231A3C4 -_022EF378: .word ov00_0231A378 -_022EF37C: .word ov00_0231A3A0 - arm_func_end Dwci_RankingSessionInitialize - - arm_func_start Dwci_RankingSessionProcess -Dwci_RankingSessionProcess: ; 0x022EF380 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _022EF49C ; =ov00_0231A2C4 - ldr r1, [r0, #4] - cmp r1, #8 - addls pc, pc, r1, lsl #2 - b _022EF48C -_022EF39C: ; jump table - b _022EF48C ; case 0 - b _022EF3C0 ; case 1 - b _022EF48C ; case 2 - b _022EF48C ; case 3 - b _022EF3DC ; case 4 - b _022EF41C ; case 5 - b _022EF438 ; case 6 - b _022EF478 ; case 7 - b _022EF48C ; case 8 -_022EF3C0: - bl Dwci_IsError - cmp r0, #0 - bne _022EF48C - ldr r1, _022EF4A0 ; =0xFFFEA048 - mov r0, #6 - bl Dwci_SetError - b _022EF48C -_022EF3DC: - ldr r2, _022EF4A4 ; =Dwci_RankingSessionCompleteCallback - mov r1, #0 - str r2, [sp] - str r1, [sp, #4] - ldr r0, [r0, #0x58] - ldr r3, _022EF4A8 ; =Dwci_RankingSessionProgressCallback - mov r2, r1 - bl Dwc_GetGhttpDataEx2 - ldr r1, _022EF49C ; =ov00_0231A2C4 - cmp r0, #0 - str r0, [r1, #0xc] - movge r0, #5 - strge r0, [r1, #4] - movlt r0, #1 - strlt r0, [r1, #4] - b _022EF48C -_022EF41C: - bl Dwc_ProcessGhttp - cmp r0, #0 - bne _022EF48C - ldr r0, _022EF49C ; =ov00_0231A2C4 - mov r1, #1 - str r1, [r0, #4] - b _022EF48C -_022EF438: - ldr r2, _022EF4A4 ; =Dwci_RankingSessionCompleteCallback - mov r1, #0 - str r2, [sp] - str r1, [sp, #4] - ldr r0, [r0, #0x58] - ldr r3, _022EF4A8 ; =Dwci_RankingSessionProgressCallback - mov r2, r1 - bl Dwc_GetGhttpDataEx2 - ldr r1, _022EF49C ; =ov00_0231A2C4 - cmp r0, #0 - str r0, [r1, #0xc] - movge r0, #7 - strge r0, [r1, #4] - movlt r0, #1 - strlt r0, [r1, #4] - b _022EF48C -_022EF478: - bl Dwc_ProcessGhttp - cmp r0, #0 - ldreq r0, _022EF49C ; =ov00_0231A2C4 - moveq r1, #1 - streq r1, [r0, #4] -_022EF48C: - ldr r0, _022EF49C ; =ov00_0231A2C4 - ldr r0, [r0, #4] - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EF49C: .word ov00_0231A2C4 -_022EF4A0: .word 0xFFFEA048 -_022EF4A4: .word Dwci_RankingSessionCompleteCallback -_022EF4A8: .word Dwci_RankingSessionProgressCallback - arm_func_end Dwci_RankingSessionProcess - - arm_func_start Dwci_RankingSessionCancel -Dwci_RankingSessionCancel: ; 0x022EF4AC - stmdb sp!, {r3, lr} - ldr r0, _022EF4D4 ; =ov00_0231A2C4 - ldr r0, [r0, #0xc] - cmp r0, #0 - blt _022EF4C4 - bl Dwc_CancelGhttpRequest -_022EF4C4: - ldr r0, _022EF4D4 ; =ov00_0231A2C4 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EF4D4: .word ov00_0231A2C4 - arm_func_end Dwci_RankingSessionCancel - - arm_func_start Dwci_RankingSessionShutdown -Dwci_RankingSessionShutdown: ; 0x022EF4D8 - stmdb sp!, {r3, lr} - ldr r0, _022EF544 ; =ov00_0231A2C4 - ldr r1, [r0, #0x58] - cmp r1, #0 - beq _022EF504 - mov r0, #7 - mov r2, #0 - bl Dwc_Free - ldr r0, _022EF544 ; =ov00_0231A2C4 - mov r1, #0 - str r1, [r0, #0x58] -_022EF504: - ldr r0, _022EF544 ; =ov00_0231A2C4 - ldr r0, [r0, #0x64] - cmp r0, #0 - beq _022EF528 - bl Dwci_GsFree - ldr r0, _022EF544 ; =ov00_0231A2C4 - mov r1, #0 - str r1, [r0, #0x68] - str r1, [r0, #0x64] -_022EF528: - bl Dwc_ShutdownGhttp - ldr r0, _022EF544 ; =ov00_0231A2C4 - mov r1, #2 - str r1, [r0, #4] - mov r1, #0 - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EF544: .word ov00_0231A2C4 - arm_func_end Dwci_RankingSessionShutdown - - arm_func_start Dwci_RankingSessionGetResponse -Dwci_RankingSessionGetResponse: ; 0x022EF548 - ldr r1, _022EF55C ; =ov00_0231A2C4 - ldr r2, [r1, #0x70] - str r2, [r0] - ldr r0, [r1, #0x6c] - bx lr - .align 2, 0 -_022EF55C: .word ov00_0231A2C4 - arm_func_end Dwci_RankingSessionGetResponse - - arm_func_start Dwci_RankingSessionPutAsync -Dwci_RankingSessionPutAsync: ; 0x022EF560 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - ldr r4, _022EF784 ; =ov00_0231A2C4 - mov sl, r0 - ldr r0, [r4, #0x10] - mov sb, r1 - cmp r0, #1 - str r2, [sp, #0x10] - mov r8, r3 - addne sp, sp, #0x34 - movne r0, #3 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x58] - cmp r1, #0 - beq _022EF5B4 - mov r0, #7 - mov r2, #0 - bl Dwc_Free - mov r0, r4 - mov r1, #0 - str r1, [r0, #0x58] -_022EF5B4: - add r0, r8, #0xc - bl b64size - mov r7, r0 - ldr r0, _022EF788 ; =ov00_0231A3EC - bl strlen - mov r6, r0 - ldr r0, _022EF78C ; =ov00_0231A368 - bl strlen - mov r5, r0 - ldr r2, _022EF790 ; =ov00_0231A3F4 - add r0, sp, #0x24 - mov r1, #0x10 - mov r3, sb - bl snprintf - mov fp, r0 - ldr r0, _022EF794 ; =ov00_0231A3F8 - bl strlen - str r0, [sp, #0x14] - mov r0, sl - bl strlen - str r0, [sp, #0x18] - ldr r0, _022EF784 ; =ov00_0231A2C4 - ldr r0, [r0] - bl strlen - mov r4, r0 - ldr r0, _022EF798 ; =ov00_0231A2D8 - bl strlen - add r1, r4, r0 - ldr r0, [sp, #0x18] - add r1, r0, r1 - ldr r0, [sp, #0x14] - add r0, r0, r1 - add r0, fp, r0 - add r0, r5, r0 - add r0, r0, #0x29 - add r0, r6, r0 - add r1, r7, r0 - mov r0, #7 - bl Dwc_Alloc - ldr r1, _022EF784 ; =ov00_0231A2C4 - cmp r0, #0 - str r0, [r1, #0x58] - addeq sp, sp, #0x34 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str sl, [sp] - ldr r3, _022EF79C ; =ov00_0231A41C - str sb, [sp, #4] - str r3, [sp, #8] - ldr r2, _022EF7A0 ; =ov00_0231A448 - ldr r3, _022EF798 ; =ov00_0231A2D8 - str r2, [sp, #0xc] - ldr r2, [r1] - ldr r1, _022EF7A4 ; =ov00_0231A400 - bl sprintf - ldr r0, _022EF784 ; =ov00_0231A2C4 - ldr r4, [r0, #0x58] - mov r0, r4 - bl strlen - add r2, r4, r0 - ldr r1, _022EF784 ; =ov00_0231A2C4 - ldr r0, _022EF788 ; =ov00_0231A3EC - str r2, [r1, #0x60] - bl strlen - ldr r4, _022EF784 ; =ov00_0231A2C4 - ldr r3, [sp, #0x10] - ldr r5, [r4, #0x60] - add r1, sp, #0x1c - sub r0, r5, r0 - sub r0, r0, #0x28 - str r0, [r4, #0x5c] - str sb, [sp, #0x1c] - str r8, [sp, #0x20] - str r8, [sp] - ldr r0, [r4, #0x60] - mov r2, #8 - bl Dwci_RankingSessionEncrypt - cmp r0, #2 - bne _022EF71C - mov r1, r4 - ldr r1, [r1, #0x58] - mov r0, #7 - mov r2, #0 - bl Dwc_Free - mov r0, r4 - mov r1, #0 - str r1, [r0, #0x58] - add sp, sp, #0x34 - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EF71C: - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _022EF74C - mov r0, r4 - ldr r1, _022EF7A8 ; =ov00_0231A33C - ldr r0, [r0, #0x5c] - mov r2, #0x28 - bl memcpy - mov r0, r4 - mov r1, #6 - str r1, [r0, #4] - b _022EF76C -_022EF74C: - ldr r0, _022EF78C ; =ov00_0231A368 - bl strlen - mov r1, r4 - ldr r3, [r1, #0x5c] - mov r4, #0 - mov r2, #4 - strb r4, [r3, -r0] - str r2, [r1, #4] -_022EF76C: - ldr r2, [sp, #0x58] - ldr r1, _022EF784 ; =ov00_0231A2C4 - mov r0, #0 - str r2, [r1, #0x74] - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EF784: .word ov00_0231A2C4 -_022EF788: .word ov00_0231A3EC -_022EF78C: .word ov00_0231A368 -_022EF790: .word ov00_0231A3F4 -_022EF794: .word ov00_0231A3F8 -_022EF798: .word ov00_0231A2D8 -_022EF79C: .word ov00_0231A41C -_022EF7A0: .word ov00_0231A448 -_022EF7A4: .word ov00_0231A400 -_022EF7A8: .word ov00_0231A33C - arm_func_end Dwci_RankingSessionPutAsync - - arm_func_start Dwci_RankingSessionGetAsync -Dwci_RankingSessionGetAsync: ; 0x022EF7AC - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr lr, [sp, #0x10] - mov ip, #0 - str lr, [sp] - str ip, [sp, #4] - bl Dwci_RankingSessionPutAsync - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end Dwci_RankingSessionGetAsync - - arm_func_start Dwci_Ndi_FreeAttr -Dwci_Ndi_FreeAttr: ; 0x022EF7D0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - ldr r6, _022EF80C ; =ov00_0232774C - ldr r4, _022EF810 ; =ov00_02327744 - mov r5, r7 -_022EF7E4: - ldr r0, [r6, r7, lsl #2] - cmp r0, #0 - beq _022EF7FC - ldr r1, [r4] - blx r1 - str r5, [r6, r7, lsl #2] -_022EF7FC: - add r7, r7, #1 - cmp r7, #3 - blt _022EF7E4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EF80C: .word ov00_0232774C -_022EF810: .word ov00_02327744 - arm_func_end Dwci_Ndi_FreeAttr - - arm_func_start SetAttr_Dwc -SetAttr_Dwc: ; 0x022EF814 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - ldrsb r1, [r6] - mov r4, r0 - cmp r1, #0 - beq _022EF8D0 - mov r0, r6 - bl Dwci_Ndi_Strlen - cmp r0, #0xa - ble _022EF850 - ldr r0, _022EF8D8 ; =ov00_02327740 - mov r1, #7 - str r1, [r0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022EF850: - mov r0, r6 - bl Dwci_Ndi_Strlen - mov r5, r0 - cmp r5, #0xa - ble _022EF878 - ldr r0, _022EF8D8 ; =ov00_02327740 - mov r1, #7 - str r1, [r0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022EF878: - bl Dwci_Ndi_GetEncodeLenBase64 - ldr r1, _022EF8DC ; =ov00_02327730 - add r0, r0, #1 - ldr r2, [r1] - mov r1, #4 - blx r2 - ldr r1, _022EF8E0 ; =ov00_0232774C - cmp r0, #0 - str r0, [r1, r4, lsl #2] - bne _022EF8B4 - ldr r0, _022EF8D8 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022EF8B4: - mov r1, r6 - mov r2, r5 - bl Dwci_Ndi_EncodeBase64 - ldr r1, _022EF8E0 ; =ov00_0232774C - mov r2, #0 - ldr r1, [r1, r4, lsl #2] - strb r2, [r1, r0] -_022EF8D0: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EF8D8: .word ov00_02327740 -_022EF8DC: .word ov00_02327730 -_022EF8E0: .word ov00_0232774C - arm_func_end SetAttr_Dwc - - arm_func_start Dwci_NdSetAttr -Dwci_NdSetAttr: ; 0x022EF8E4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl Dwci_Ndi_LockGlobal - bl Dwci_Ndi_FreeAttr - mov r1, r6 - mov r0, #0 - bl SetAttr_Dwc - cmp r0, #0 - beq _022EF944 - mov r1, r5 - mov r0, #1 - bl SetAttr_Dwc - cmp r0, #0 - beq _022EF944 - mov r1, r4 - mov r0, #2 - bl SetAttr_Dwc - cmp r0, #0 - beq _022EF944 - bl Dwci_Ndi_UnlockGlobal - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_022EF944: - bl Dwci_Ndi_FreeAttr - bl Dwci_Ndi_UnlockGlobal - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Dwci_NdSetAttr - - arm_func_start GetNChar_Dwc -GetNChar_Dwc: ; 0x022EF954 - stmdb sp!, {r4, lr} - mov r4, #0 - mov lr, r4 - cmp r2, #0 - ble _022EF994 - mov r3, r4 -_022EF96C: - ldrsb ip, [r1] - cmp ip, #0 - streqb r3, [r0], #1 - beq _022EF988 - add r4, r4, #1 - add r1, r1, #1 - strb ip, [r0], #1 -_022EF988: - add lr, lr, #1 - cmp lr, r2 - blt _022EF96C -_022EF994: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end GetNChar_Dwc - - arm_func_start DecodeChar_Dwc -DecodeChar_Dwc: ; 0x022EF99C - cmp r0, #0x41 - blo _022EF9B0 - cmp r0, #0x5a - subls r0, r0, #0x41 - bxls lr -_022EF9B0: - cmp r0, #0x61 - blo _022EF9C4 - cmp r0, #0x7a - subls r0, r0, #0x47 - bxls lr -_022EF9C4: - cmp r0, #0x30 - blo _022EF9D8 - cmp r0, #0x39 - addls r0, r0, #4 - bxls lr -_022EF9D8: - cmp r0, #0x2e - moveq r0, #0x3e - bxeq lr - cmp r0, #0x2d - moveq r0, #0x3f - mvnne r0, #0 - bx lr - arm_func_end DecodeChar_Dwc - - arm_func_start Dwci_Ndi_GetDecodeLenBase64 -Dwci_Ndi_GetDecodeLenBase64: ; 0x022EF9F4 - mov r0, r0, asr #2 - add r0, r0, r0, lsl #1 - bx lr - arm_func_end Dwci_Ndi_GetDecodeLenBase64 - - arm_func_start Dwci_Ndi_GetEncodeLenBase64 -Dwci_Ndi_GetEncodeLenBase64: ; 0x022EFA00 - ldr r1, _022EFA18 ; =0x55555556 - add r2, r0, #2 - smull r0, r3, r1, r2 - add r3, r3, r2, lsr #31 - mov r0, r3, lsl #2 - bx lr - .align 2, 0 -_022EFA18: .word 0x55555556 - arm_func_end Dwci_Ndi_GetEncodeLenBase64 - - arm_func_start Dwci_Ndi_EncodeBase64 -Dwci_Ndi_EncodeBase64: ; 0x022EFA1C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r7, r2 - mov r8, r1 - mov sb, r0 - cmp r7, #3 - movgt r2, #3 - add r0, sp, #0 - mov r1, r8 - mov r6, #0 - bl GetNChar_Dwc - cmp r0, #0 - ble _022EFB00 - mov r5, #0 - ldr sl, _022EFB10 ; =ov00_023182A8 - mov r4, r5 - mov fp, #0x2a -_022EFA5C: - cmp r7, #3 - strltb r5, [sp, #2] - cmp r7, #2 - strltb r4, [sp, #1] - ldrb r1, [sp, #2] - ldrb r2, [sp] - ldrb r3, [sp, #1] - mov lr, r1, asr #6 - mov ip, r2, asr #2 - orr lr, lr, r3, lsl #2 - mov r3, r3, asr #4 - and ip, ip, #0xff - orr r2, r3, r2, lsl #4 - ldrsb ip, [sl, ip] - and r2, r2, #0x3f - ldrsb r2, [sl, r2] - strb ip, [sb] - and ip, lr, #0x3f - cmp r0, #1 - strb r2, [sb, #1] - ldrgtsb r2, [sl, ip] - and r1, r1, #0x3f - add r8, r8, r0 - movle r2, fp - cmp r0, #2 - ldrgtsb r1, [sl, r1] - strb r2, [sb, #2] - add r6, r6, #4 - movle r1, #0x2a - strb r1, [sb, #3] - add sb, sb, #4 - subs r7, r7, r0 - beq _022EFB00 - cmp r7, #3 - movgt r2, #3 - movle r2, r7 - add r0, sp, #0 - mov r1, r8 - bl GetNChar_Dwc - cmp r0, #0 - bgt _022EFA5C -_022EFB00: - mov r1, #0 - mov r0, r6 - strb r1, [sb] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EFB10: .word ov00_023182A8 - arm_func_end Dwci_Ndi_EncodeBase64 - - arm_func_start Dwci_Ndi_EecodeBase64 -Dwci_Ndi_EecodeBase64: ; 0x022EFB14 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov sb, r0 - mov r7, r2 - add r0, sp, #3 - mov r2, #4 - mov r6, #0 - mov r8, r1 - bl GetNChar_Dwc - mov r5, r0 - mov r4, r6 - b _022EFC20 -_022EFB44: - ldrb r0, [sp, #3] - mov r1, #0 - strb r1, [sp] - strb r1, [sp, #1] - strb r1, [sp, #2] - bl DecodeChar_Dwc - movs r4, r0 - bmi _022EFBCC - ldrb r0, [sp, #4] - mov r1, r4, lsl #2 - strb r1, [sp] - bl DecodeChar_Dwc - movs r4, r0 - bmi _022EFBCC - ldrsb r2, [sp] - ldrb r0, [sp, #5] - mov r1, r4, lsl #4 - orr r2, r2, r4, asr #4 - strb r2, [sp] - strb r1, [sp, #1] - bl DecodeChar_Dwc - movs r4, r0 - bmi _022EFBCC - ldrsb r2, [sp, #1] - ldrb r0, [sp, #6] - mov r1, r4, lsl #6 - orr r2, r2, r4, asr #2 - strb r1, [sp, #2] - strb r2, [sp, #1] - bl DecodeChar_Dwc - movs r4, r0 - ldrplsb r0, [sp, #2] - orrpl r0, r0, r4 - strplb r0, [sp, #2] -_022EFBCC: - sub r1, r5, #1 - cmp r1, #0 - mov r2, #0 - ble _022EFBF4 - add r3, sp, #0 -_022EFBE0: - ldrsb r0, [r3], #1 - add r2, r2, #1 - cmp r2, r1 - strb r0, [sb], #1 - blt _022EFBE0 -_022EFBF4: - sub r0, r5, #1 - sub r7, r7, #4 - cmp r7, #0 - add r8, r8, r5 - add r6, r6, r0 - ble _022EFC30 - add r0, sp, #3 - mov r1, r8 - mov r2, #4 - bl GetNChar_Dwc - mov r5, r0 -_022EFC20: - cmp r5, #0 - ble _022EFC30 - cmp r4, #0 - bge _022EFB44 -_022EFC30: - mov r0, r6 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end Dwci_Ndi_EecodeBase64 - - arm_func_start StrAlloc_Dwc -StrAlloc_Dwc: ; 0x022EFC3C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - bl Dwci_Ndi_Strlen - ldr r1, _022EFC84 ; =ov00_02327724 - mov r4, r0 - ldr r2, [r1, #0xc] - add r0, r4, #1 - mov r1, #4 - blx r2 - movs r5, r0 - beq _022EFC7C - mov r1, r6 - mov r2, r4 - bl Dwci_Ndi_Memcpy - mov r0, #0 - strb r0, [r5, r4] -_022EFC7C: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EFC84: .word ov00_02327724 - arm_func_end StrAlloc_Dwc - - arm_func_start Dwci_NdStartup -Dwci_NdStartup: ; 0x022EFC88 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr ip, _022EFE18 ; =ov00_02327724 - mov r5, r0 - mov r4, r1 - str r5, [ip, #0xc] - mov r1, #0 - ldr r0, [sp, #0x20] - str r4, [ip, #0x20] - str r0, [ip, #0x18] - str r1, [ip, #0x1c] - str r1, [ip, #0x28] - str r1, [ip, #0x2c] - str r1, [ip, #0x30] - str r1, [ip, #4] - sub r0, r1, #1 - str r0, [ip, #0x24] - str r1, [ip, #8] - ldr r0, _022EFE1C ; =ov00_02327764 - mov r7, r2 - mov r6, r3 - str r1, [ip, #0x10] - bl Dwci_Ndi_GetMacAddress - ldr r0, _022EFE20 ; =ov00_023277AC - bl Dwci_Ndi_GetUserAgent - mov r0, r7 - bl StrAlloc_Dwc - ldr r1, _022EFE18 ; =ov00_02327724 - cmp r0, #0 - str r0, [r1, #0x10] - beq _022EFDD4 - mov r0, r6 - bl StrAlloc_Dwc - ldr r1, _022EFE18 ; =ov00_02327724 - cmp r0, #0 - str r0, [r1, #8] - beq _022EFDD4 - ldr r1, [sp, #0x18] - ldr r0, _022EFE24 ; =ov00_02327758 - mov r2, #4 - bl Dwci_Ndi_EncodeBase64 - ldr r1, _022EFE24 ; =ov00_02327758 - mov r2, #0 - strb r2, [r1, r0] - ldr r1, [sp, #0x1c] - ldr r0, _022EFE28 ; =ov00_02327790 - mov r2, #0x10 - bl Dwci_Ndi_EncodeBase64 - ldr r1, _022EFE28 ; =ov00_02327790 - mov r2, #0 - strb r2, [r1, r0] - bl Dwci_Ndi_InitHttpCallback - cmp r0, #0 - beq _022EFDA0 - bl Dwci_Ndi_InitLockGlobal - cmp r0, #0 - beq _022EFDA0 - mov r0, r5 - mov r1, r4 - mov r2, #0xa - bl Nhttp_Startup - cmp r0, #0 - beq _022EFD9C - ldr r0, _022EFE2C ; =ov00_02327778 - bl Dwci_Ndi_GetApInfo - ldr r1, _022EFE18 ; =ov00_02327724 - str r0, [r1, #4] - mov r0, #1 - str r0, [r1, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EFD9C: - bl Dwci_Ndi_ExitLockGlobal -_022EFDA0: - ldr r1, _022EFE18 ; =ov00_02327724 - ldr r0, [r1, #8] - ldr r1, [r1, #0x20] - blx r1 - ldr r1, _022EFE18 ; =ov00_02327724 - ldr r0, [r1, #0x10] - ldr r1, [r1, #0x20] - blx r1 - ldr r0, _022EFE18 ; =ov00_02327724 - mov r1, #8 - str r1, [r0, #0x1c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022EFDD4: - ldr r1, _022EFE18 ; =ov00_02327724 - ldr r0, [r1, #8] - cmp r0, #0 - beq _022EFDEC - ldr r1, [r1, #0x20] - blx r1 -_022EFDEC: - ldr r1, _022EFE18 ; =ov00_02327724 - ldr r0, [r1, #0x10] - cmp r0, #0 - beq _022EFE04 - ldr r1, [r1, #0x20] - blx r1 -_022EFE04: - ldr r0, _022EFE18 ; =ov00_02327724 - mov r1, #1 - str r1, [r0, #0x1c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EFE18: .word ov00_02327724 -_022EFE1C: .word ov00_02327764 -_022EFE20: .word ov00_023277AC -_022EFE24: .word ov00_02327758 -_022EFE28: .word ov00_02327790 -_022EFE2C: .word ov00_02327778 - arm_func_end Dwci_NdStartup - - arm_func_start NhttpCleanupCallback -NhttpCleanupCallback: ; 0x022EFE30 - stmdb sp!, {r3, lr} - bl Dwci_Ndi_FreeAttr - bl Dwci_Ndi_ExitLockGlobal - bl Dwci_Ndi_ExitHttpCallback - ldr r1, _022EFE70 ; =ov00_02327724 - ldr r0, [r1, #8] - ldr r1, [r1, #0x20] - blx r1 - ldr r1, _022EFE70 ; =ov00_02327724 - ldr r0, [r1, #0x10] - ldr r1, [r1, #0x20] - blx r1 - ldr r0, _022EFE70 ; =ov00_02327724 - ldr r0, [r0] - blx r0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EFE70: .word ov00_02327724 - arm_func_end NhttpCleanupCallback - - arm_func_start Dwci_NdCleanupAsync -Dwci_NdCleanupAsync: ; 0x022EFE74 - ldr r1, _022EFE90 ; =ov00_02327724 - mov r2, #0 - str r2, [r1, #0x14] - str r0, [r1] - ldr ip, _022EFE94 ; =Nhttp_CleanupAsync - ldr r0, _022EFE98 ; =NhttpCleanupCallback - bx ip - .align 2, 0 -_022EFE90: .word ov00_02327724 -_022EFE94: .word Nhttp_CleanupAsync -_022EFE98: .word NhttpCleanupCallback - arm_func_end Dwci_NdCleanupAsync - - arm_func_start Dwci_NdCancelAsync -Dwci_NdCancelAsync: ; 0x022EFE9C - stmdb sp!, {r4, lr} - bl Dwci_Ndi_PrepareHttpCallback - cmp r0, #0 - bne _022EFEC8 - bl Dwci_Ndi_LockGlobal - ldr r0, _022EFED4 ; =ov00_02327748 - ldr r4, [r0] - bl Dwci_Ndi_UnlockGlobal - mov r0, r4 - bl Nhttp_CancelRequestAsync - ldmia sp!, {r4, pc} -_022EFEC8: - bl Dwci_Ndi_UnprepareHttpCallback - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EFED4: .word ov00_02327748 - arm_func_end Dwci_NdCancelAsync - - arm_func_start Dwci_Ndi_GetApInfo -Dwci_Ndi_GetApInfo: ; 0x022EFED8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr ip, _022EFFC8 ; =ov00_023182EC - add r3, sp, #0 - mov r4, r0 - mov r2, #6 -_022EFEF0: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _022EFEF0 - ldrb r1, [ip] - ldr r0, _022EFFCC ; =ov00_023277D0 - strb r1, [r3] - bl Dwc_GetApInfo - cmp r0, #0 - beq _022EFFBC - ldr r0, _022EFFD0 ; =ov00_023277D0 - ldr r1, [r0] - cmp r1, #0 - blt _022EFF48 - cmp r1, #0xa - addlt r0, r1, #0x30 - strltb r0, [sp, #1] - blt _022EFF60 -_022EFF48: - cmp r1, #0xa - blt _022EFF60 - cmp r1, #0x64 - bge _022EFF60 - add r0, sp, #0 - bl Dwci_Ndi_IntToStr -_022EFF60: - ldr r0, _022EFFD0 ; =ov00_023277D0 - ldr r0, [r0] - cmp r0, #4 - cmpne r0, #8 - bne _022EFFA0 - ldr r0, _022EFFD0 ; =ov00_023277D0 - ldr r0, [r0, #4] - cmp r0, #0 - blt _022EFF90 - cmp r0, #0xa - addlt r0, r0, #0x30 - strltb r0, [sp, #3] -_022EFF90: - ldr r1, _022EFFD4 ; =ov00_023277D8 - add r0, sp, #4 - mov r2, #9 - bl Dwci_Ndi_Memcpy -_022EFFA0: - add r1, sp, #0 - mov r0, r4 - mov r2, #0xd - bl Dwci_Ndi_EncodeBase64 - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, pc} -_022EFFBC: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EFFC8: .word ov00_023182EC -_022EFFCC: .word ov00_023277D0 -_022EFFD0: .word ov00_023277D0 -_022EFFD4: .word ov00_023277D8 - arm_func_end Dwci_Ndi_GetApInfo - - arm_func_start Dwci_Ndi_GetDSdesc -Dwci_Ndi_GetDSdesc: ; 0x022EFFD8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x24 - mov r5, r0 - mov r4, r1 - add r0, sp, #0x10 - mov r1, #0x14 - bl Dwci_Ndi_Memclr - add r0, sp, #0x10 - bl Dwci_BM_GetWiFiInfo - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r0, #0 - cmp r2, r0 - cmpeq r1, r0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, pc} - add r0, sp, #0 - mov r3, #0xd - bl Dwci_Ndi_IntToStrFigure - cmp r0, #0 - addlt sp, sp, #0x24 - movlt r0, #0 - ldmltia sp!, {r4, r5, pc} - add r1, sp, #0 - mov r0, r4 - mov r2, #0xd - bl Dwci_Ndi_EncodeBase64 - ldr r1, _022F0060 ; =0x027FFE0C - mov r0, r5 - mov r2, #4 - bl Dwci_Ndi_EncodeBase64 - mov r0, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022F0060: .word 0x027FFE0C - arm_func_end Dwci_Ndi_GetDSdesc - - arm_func_start Dwci_Ndi_GetUserAgent -Dwci_Ndi_GetUserAgent: ; 0x022F0064 - stmdb sp!, {r3, lr} - ldr r2, _022F0084 ; =ov00_0231A534 - mov ip, #1 - mov r1, #0x21 - mov r3, #3 - str ip, [sp] - bl OS_SnPrintf - ldmia sp!, {r3, pc} - .align 2, 0 -_022F0084: .word ov00_0231A534 - arm_func_end Dwci_Ndi_GetUserAgent - - arm_func_start Req_Callback_Dwc -Req_Callback_Dwc: ; 0x022F0088 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sb, r2 - mov sl, r1 - ldr r1, [sb, #8] - cmp r0, #0 - str r1, [sp, #8] - ldr r1, [sb, #0xc] - ldr r5, [sb, #4] - str r1, [sp, #4] - mvn r1, #0 - str r1, [sp] - beq _022F00D0 - cmp r0, #6 - beq _022F02AC - cmp r0, #8 - beq _022F02A4 - b _022F02B4 -_022F00D0: - ldr r1, _022F03A0 ; =ov00_0231A550 - add r2, sp, #0x14 - mov r0, sl - bl Nhttp_GetHeaderField - cmp r0, #3 - movne r4, #3 - bne _022F02B8 - ldr r0, [sp, #0x14] - mov r1, #3 - bl Dwci_Ndi_StrToInt - ldr r1, _022F03A4 ; =0x0000012E - cmp r0, r1 - bne _022F021C - add r1, sp, #0x10 - mov r0, sl - mov r8, #0 - bl Nhttp_GetBodyAll - movs r6, r0 - movmi r4, #3 - bmi _022F02B8 - cmp r6, #0 - mov r7, r8 - ble _022F0208 - ldr r4, _022F03A8 ; =ov00_0231A560 - mov fp, #8 -_022F0134: - ldr r3, [sp, #0x10] - mov r1, r7 - add r2, r3, r7 - b _022F014C -_022F0144: - add r2, r2, #1 - add r7, r7, #1 -_022F014C: - ldrsb r0, [r2] - cmp r0, #0x3d - beq _022F0160 - cmp r7, r6 - blt _022F0144 -_022F0160: - sub r0, r7, r1 - cmp r0, #8 - add r7, r7, #1 - bne _022F018C - add r0, r3, r1 - mov r1, r4 - mov r2, fp - bl Dwci_Ndi_Strncmp - cmp r0, #0 - moveq r8, #1 - movne r8, #0 -_022F018C: - ldr r1, [sp, #0x10] - mov r3, r7 - add r2, r1, r7 - b _022F01A4 -_022F019C: - add r2, r2, #1 - add r7, r7, #1 -_022F01A4: - ldrsb r0, [r2] - cmp r0, #0x26 - cmpne r0, #0xd - cmpne r0, #0 - beq _022F01C0 - cmp r7, r6 - blt _022F019C -_022F01C0: - cmp r8, #0 - sub r2, r7, r3 - add r7, r7, #1 - beq _022F0200 - cmp r2, #4 - bne _022F0208 - add r0, sp, #0xc - add r1, r1, r3 - bl Dwci_Ndi_EecodeBase64 - mov r1, r0 - add r0, sp, #0xc - mov r2, #0 - strb r2, [r0, r1] - bl Dwci_Ndi_StrToInt - str r0, [sp] - b _022F0208 -_022F0200: - cmp r7, r6 - blt _022F0134 -_022F0208: - ldr r0, [sp] - cmp r0, #0 - movlt r4, #3 - movge r4, #5 - b _022F02B8 -_022F021C: - cmp r0, #0 - ble _022F022C - cmp r0, #0xc8 - beq _022F0234 -_022F022C: - mov r4, #3 - b _022F02B8 -_022F0234: - cmp r5, #1 - beq _022F0250 - cmp r5, #2 - beq _022F026C - cmp r5, #3 - beq _022F0288 - b _022F02B8 -_022F0250: - mov r0, sl - mov r1, sb - bl Dwci_Ndi_Response_Count - cmp r0, #0 - movne r4, #0 - moveq r4, #3 - b _022F02B8 -_022F026C: - mov r0, sl - mov r1, sb - bl Dwci_Ndi_Response_List - cmp r0, #0 - movne r4, #0 - moveq r4, #3 - b _022F02B8 -_022F0288: - mov r0, sl - mov r1, sb - bl Dwci_Ndi_Response_Contents - cmp r0, #0 - movne r4, #0 - moveq r4, #3 - b _022F02B8 -_022F02A4: - mov r4, #6 - b _022F02B8 -_022F02AC: - mov r4, #4 - b _022F02B8 -_022F02B4: - mov r4, #3 -_022F02B8: - cmp r5, #1 - beq _022F0328 - cmp r5, #2 - beq _022F02D4 - cmp r5, #3 - beq _022F0318 - b _022F0328 -_022F02D4: - ldr r0, [sb, #0x20] - cmp r0, #0 - beq _022F02EC - ldr r1, _022F03AC ; =ov00_02327744 - ldr r1, [r1] - blx r1 -_022F02EC: - ldr r0, [sb, #0x1c] - cmp r0, #0 - beq _022F0304 - ldr r1, _022F03AC ; =ov00_02327744 - ldr r1, [r1] - blx r1 -_022F0304: - ldr r1, _022F03AC ; =ov00_02327744 - ldr r0, [sb, #0x18] - ldr r1, [r1] - blx r1 - b _022F0328 -_022F0318: - ldr r1, _022F03AC ; =ov00_02327744 - ldr r0, [sb, #0x10] - ldr r1, [r1] - blx r1 -_022F0328: - bl Dwci_Ndi_LockGlobal - ldr r0, _022F03B0 ; =ov00_02327748 - mvn r1, #0 - str r1, [r0] - bl Dwci_Ndi_UnlockGlobal - mov r0, sl - bl Nhttp_DestroyResponse - ldr r1, _022F03AC ; =ov00_02327744 - mov r0, sb - ldr r1, [r1] - blx r1 - bl Dwci_Ndi_UnprepareHttpCallback - cmp r4, #0 - ldrne r0, _022F03B4 ; =ov00_02327740 - strne r4, [r0] - ldr r0, [sp, #8] - cmp r0, #0 - beq _022F0384 - ldr r2, [sp] - ldr r3, [sp, #8] - mov r0, r5 - mov r1, r4 - blx r3 -_022F0384: - ldr r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl Dwci_Ndi_KickThread - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F03A0: .word ov00_0231A550 -_022F03A4: .word 0x0000012E -_022F03A8: .word ov00_0231A560 -_022F03AC: .word ov00_02327744 -_022F03B0: .word ov00_02327748 -_022F03B4: .word ov00_02327740 - arm_func_end Req_Callback_Dwc - - arm_func_start FreeHttp -FreeHttp: ; 0x022F03B8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl Nhttp_DestroyRequest - bl Dwci_Ndi_UnprepareHttpCallback - ldr r1, _022F03E0 ; =ov00_02327744 - mov r0, r4 - ldr r1, [r1] - blx r1 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F03E0: .word ov00_02327744 - arm_func_end FreeHttp - - arm_func_start SetupHttp -SetupHttp: ; 0x022F03E4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r0 - mov r7, r1 - ldr r0, _022F0710 ; =ov00_0232780C - ldr r1, _022F0714 ; =ov00_02327818 - mov r6, r2 - mov r5, r3 - bl Dwci_Ndi_GetDSdesc - cmp r0, #0 - bne _022F0428 - ldr r0, _022F0718 ; =ov00_02327740 - mov r1, #8 - str r1, [r0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F0428: - ldr r1, _022F071C ; =ov00_02327730 - mov r0, #0x24 - ldr r2, [r1] - mov r1, #4 - blx r2 - movs r4, r0 - bne _022F045C - ldr r0, _022F0718 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F045C: - ldr r0, _022F0720 ; =ov00_0232773C - mov r1, #0 - ldr r0, [r0] - str r0, [r4, #8] - str r1, [r4, #0xc] - bl Dwci_Ndi_PrepareHttpCallback - cmp r0, #0 - bne _022F04A4 - ldr r1, _022F0724 ; =ov00_02327744 - mov r0, r4 - ldr r1, [r1] - blx r1 - ldr r0, _022F0718 ; =ov00_02327740 - mov r1, #2 - str r1, [r0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F04A4: - ldr r1, _022F0728 ; =Req_Callback_Dwc - ldr r0, _022F072C ; =ov00_02327734 - stmia sp, {r1, r4} - ldr r0, [r0] - ldr r3, [sp, #0x20] - mov r2, r5 - mov r1, #1 - bl Nhttp_CreateRequest - movs r5, r0 - bne _022F04F8 - bl Dwci_Ndi_UnprepareHttpCallback - ldr r1, _022F0724 ; =ov00_02327744 - mov r0, r4 - ldr r1, [r1] - blx r1 - ldr r0, _022F0718 ; =ov00_02327740 - mov r1, #3 - str r1, [r0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F04F8: - ldr r1, _022F0730 ; =ov00_0231A54C - str r4, [r8] - mov r2, #1 - str r5, [r7] - bl Nhttp_SetCaChain - cmp r0, #0 - beq _022F06EC - ldr r1, _022F0734 ; =ov00_0231A56C - ldr r2, _022F0738 ; =ov00_023277AC - mov r0, r5 - bl Nhttp_AddHeaderField - cmp r0, #0 - beq _022F06EC - ldr r1, _022F073C ; =ov00_0231A578 - ldr r2, _022F0740 ; =ov00_02327758 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r1, _022F0744 ; =ov00_0231A580 - ldr r2, _022F0710 ; =ov00_0232780C - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r1, _022F0748 ; =ov00_0231A58C - ldr r2, _022F074C ; =ov00_02327790 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r0, _022F0750 ; =ov00_0232772C - ldr r1, _022F0754 ; =ov00_0231A594 - ldr r2, [r0] - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r1, _022F0758 ; =ov00_0231A59C - ldr r2, _022F0714 ; =ov00_02327818 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r1, _022F075C ; =ov00_0231A5A4 - ldr r2, _022F0760 ; =ov00_02327764 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r1, _022F0764 ; =ov00_0231A5AC - mov r0, r5 - mov r2, r6 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC - ldr r0, _022F0768 ; =ov00_0232774C - ldr r2, [r0] - cmp r2, #0 - beq _022F05FC - ldr r1, _022F076C ; =ov00_0231A5B4 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC -_022F05FC: - ldr r0, _022F0768 ; =ov00_0232774C - ldr r2, [r0, #4] - cmp r2, #0 - beq _022F0620 - ldr r1, _022F0770 ; =ov00_0231A5BC - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC -_022F0620: - ldr r0, _022F0768 ; =ov00_0232774C - ldr r2, [r0, #8] - cmp r2, #0 - beq _022F0644 - ldr r1, _022F0774 ; =ov00_0231A5C4 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC -_022F0644: - ldr r0, _022F0778 ; =ov00_02327728 - ldr r0, [r0] - cmp r0, #0 - beq _022F066C - ldr r1, _022F077C ; =ov00_0231A5CC - ldr r2, _022F0780 ; =ov00_02327778 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC -_022F066C: - ldr r0, [sp, #0x24] - cmp r0, #0 - beq _022F06E0 - bl Dwci_Ndi_Strlen - mov r6, r0 - cmp r6, #0x40 - ble _022F06AC - ldr r2, _022F0718 ; =ov00_02327740 - mov r3, #7 - mov r0, r4 - mov r1, r5 - str r3, [r2] - bl FreeHttp - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F06AC: - ldr r0, _022F0784 ; =ov00_02327830 - mov r1, #0x59 - bl Dwci_Ndi_Memclr - ldr r1, [sp, #0x24] - ldr r0, _022F0784 ; =ov00_02327830 - mov r2, r6 - bl Dwci_Ndi_EncodeBase64 - ldr r1, _022F0788 ; =ov00_0231A5D4 - ldr r2, _022F0784 ; =ov00_02327830 - mov r0, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F06EC -_022F06E0: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F06EC: - mov r0, r4 - mov r1, r5 - bl FreeHttp - ldr r0, _022F0718 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F0710: .word ov00_0232780C -_022F0714: .word ov00_02327818 -_022F0718: .word ov00_02327740 -_022F071C: .word ov00_02327730 -_022F0720: .word ov00_0232773C -_022F0724: .word ov00_02327744 -_022F0728: .word Req_Callback_Dwc -_022F072C: .word ov00_02327734 -_022F0730: .word ov00_0231A54C -_022F0734: .word ov00_0231A56C -_022F0738: .word ov00_023277AC -_022F073C: .word ov00_0231A578 -_022F0740: .word ov00_02327758 -_022F0744: .word ov00_0231A580 -_022F0748: .word ov00_0231A58C -_022F074C: .word ov00_02327790 -_022F0750: .word ov00_0232772C -_022F0754: .word ov00_0231A594 -_022F0758: .word ov00_0231A59C -_022F075C: .word ov00_0231A5A4 -_022F0760: .word ov00_02327764 -_022F0764: .word ov00_0231A5AC -_022F0768: .word ov00_0232774C -_022F076C: .word ov00_0231A5B4 -_022F0770: .word ov00_0231A5BC -_022F0774: .word ov00_0231A5C4 -_022F0778: .word ov00_02327728 -_022F077C: .word ov00_0231A5CC -_022F0780: .word ov00_02327778 -_022F0784: .word ov00_02327830 -_022F0788: .word ov00_0231A5D4 - arm_func_end SetupHttp - - arm_func_start RunHttp -RunHttp: ; 0x022F078C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - bl Dwci_Ndi_LockGlobal - mov r0, r4 - bl Nhttp_SendRequestAsync - ldr r1, _022F07E4 ; =ov00_02327748 - str r0, [r5] - str r0, [r1] - bl Dwci_Ndi_UnlockGlobal - ldr r0, [r5] - cmp r0, #0 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl FreeHttp - ldr r0, _022F07E8 ; =ov00_02327740 - mov r1, #3 - str r1, [r0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F07E4: .word ov00_02327748 -_022F07E8: .word ov00_02327740 - arm_func_end RunHttp - - arm_func_start Dwci_NdGetFileListNumAsync -Dwci_NdGetFileListNumAsync: ; 0x022F07EC - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov ip, #0x80 - mov r4, r0 - str ip, [sp] - mov ip, #0 - ldr r2, _022F0860 ; =ov00_023182FC - ldr r3, _022F0864 ; =ov00_0232788C - add r0, sp, #0xc - add r1, sp, #8 - str ip, [sp, #4] - bl SetupHttp - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [sp, #0xc] - mov r1, #1 - str r1, [r0, #4] - ldr r0, [sp, #0xc] - str r4, [r0, #0x10] - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - bl RunHttp - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F0860: .word ov00_023182FC -_022F0864: .word ov00_0232788C - arm_func_end Dwci_NdGetFileListNumAsync - - arm_func_start Dwci_NdGetFileListAsync -Dwci_NdGetFileListAsync: ; 0x022F0868 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x1c - mov r4, r2 - mov r6, r1 - ldr r1, _022F0B14 ; =ov00_02327730 - mov r7, r4, lsl #8 - cmp r7, #0x80 - ldr r2, [r1] - movlt r7, #0x80 - mov r5, r0 - mov r0, r7 - mov r1, #4 - blx r2 - movs r8, r0 - bne _022F08BC - ldr r0, _022F0B18 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - add sp, sp, #0x1c - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F08BC: - add r0, sp, #0x10 - mov r1, r6 - bl Dwci_Ndi_IntToStr - mov r6, r0 - bl Dwci_Ndi_GetEncodeLenBase64 - ldr r1, _022F0B14 ; =ov00_02327730 - add r0, r0, #1 - ldr r2, [r1] - mov r1, #4 - blx r2 - movs sb, r0 - bne _022F0914 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, r8 - ldr r1, [r1] - blx r1 - ldr r0, _022F0B18 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - add sp, sp, #0x1c - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F0914: - add r1, sp, #0x10 - mov r2, r6 - bl Dwci_Ndi_EncodeBase64 - mov r1, #0 - strb r1, [sb, r0] - add r0, sp, #0x10 - mov r1, r4 - bl Dwci_Ndi_IntToStr - mov r6, r0 - bl Dwci_Ndi_GetEncodeLenBase64 - ldr r1, _022F0B14 ; =ov00_02327730 - add r0, r0, #1 - ldr r2, [r1] - mov r1, #4 - blx r2 - movs sl, r0 - bne _022F0990 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sb - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, r8 - ldr r1, [r1] - blx r1 - ldr r0, _022F0B18 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - add sp, sp, #0x1c - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F0990: - add r1, sp, #0x10 - mov r2, r6 - bl Dwci_Ndi_EncodeBase64 - mov r6, #0 - strb r6, [sl, r0] - str r7, [sp] - ldr r2, _022F0B20 ; =ov00_02318308 - add r0, sp, #0xc - add r1, sp, #8 - mov r3, r8 - str r6, [sp, #4] - bl SetupHttp - cmp r0, #0 - bne _022F0A04 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sl - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sb - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, r8 - ldr r1, [r1] - blx r1 - add sp, sp, #0x1c - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F0A04: - ldr r0, [sp, #8] - ldr r1, _022F0B24 ; =ov00_0231A5E4 - mov r2, sb - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F0AC0 - ldr r0, [sp, #8] - ldr r1, _022F0B28 ; =ov00_0231A5EC - mov r2, sl - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F0AC0 - ldr r0, [sp, #0xc] - mov r1, #2 - str r1, [r0, #4] - ldr r0, [sp, #0xc] - str r5, [r0, #0x10] - ldr r0, [sp, #0xc] - str sb, [r0, #0x1c] - ldr r0, [sp, #0xc] - str sl, [r0, #0x20] - ldr r0, [sp, #0xc] - str r4, [r0, #0x14] - ldr r0, [sp, #0xc] - str r8, [r0, #0x18] - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - bl RunHttp - cmp r0, #0 - addne sp, sp, #0x1c - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sl - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sb - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, r8 - ldr r1, [r1] - blx r1 - add sp, sp, #0x1c - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F0AC0: - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sl - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, sb - ldr r1, [r1] - blx r1 - ldr r1, _022F0B1C ; =ov00_02327744 - mov r0, r8 - ldr r1, [r1] - blx r1 - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - bl FreeHttp - ldr r0, _022F0B18 ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - mov r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F0B14: .word ov00_02327730 -_022F0B18: .word ov00_02327740 -_022F0B1C: .word ov00_02327744 -_022F0B20: .word ov00_02318308 -_022F0B24: .word ov00_0231A5E4 -_022F0B28: .word ov00_0231A5EC - arm_func_end Dwci_NdGetFileListAsync - - arm_func_start Dwci_NdGetFileAsync -Dwci_NdGetFileAsync: ; 0x022F0B2C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov sb, r0 - ldr r4, [sb, #0xac] - mov r8, r1 - mov r7, r3 - cmp r2, r4 - bhs _022F0B64 - ldr r0, _022F0CDC ; =ov00_02327740 - mov r1, #7 - str r1, [r0] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F0B64: - bl Dwci_Ndi_Strlen - mov r4, r0 - cmp r4, #0x20 - ble _022F0B8C - ldr r0, _022F0CDC ; =ov00_02327740 - mov r1, #7 - str r1, [r0] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F0B8C: - cmp r4, #0 - movle r6, #0 - ble _022F0BA0 - bl Dwci_Ndi_GetEncodeLenBase64 - mov r6, r0 -_022F0BA0: - ldr r1, _022F0CE0 ; =ov00_02327730 - add r0, r6, #1 - ldr r2, [r1] - mov r1, #4 - blx r2 - movs r5, r0 - bne _022F0BD4 - ldr r0, _022F0CDC ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F0BD4: - ldr r1, [sb, #0xac] - ldr r2, _022F0CE4 ; =ov00_02318314 - str r1, [sp] - add r0, sp, #0xc - add r1, sp, #8 - mov r3, r8 - str r7, [sp, #4] - bl SetupHttp - cmp r0, #0 - bne _022F0C18 - ldr r1, _022F0CE8 ; =ov00_02327744 - mov r0, r5 - ldr r1, [r1] - blx r1 - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F0C18: - cmp r6, #0 - ble _022F0C50 - mov r0, r5 - mov r1, sb - mov r2, r4 - bl Dwci_Ndi_EncodeBase64 - mov r1, #0 - strb r1, [r5, r0] - ldr r0, [sp, #8] - ldr r1, _022F0CEC ; =ov00_0231A5F0 - mov r2, r5 - bl Nhttp_AddPostDataAscii - cmp r0, #0 - beq _022F0CA8 -_022F0C50: - ldr r0, [sp, #0xc] - mov r1, #3 - str r1, [r0, #4] - ldr r0, [sp, #0xc] - str r5, [r0, #0x10] - ldr r1, [sb, #0xac] - ldr r0, [sp, #0xc] - str r1, [r0, #0x14] - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - bl RunHttp - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, _022F0CE8 ; =ov00_02327744 - mov r0, r5 - ldr r1, [r1] - blx r1 - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F0CA8: - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - bl FreeHttp - ldr r1, _022F0CE8 ; =ov00_02327744 - mov r0, r5 - ldr r1, [r1] - blx r1 - ldr r0, _022F0CDC ; =ov00_02327740 - mov r1, #1 - str r1, [r0] - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F0CDC: .word ov00_02327740 -_022F0CE0: .word ov00_02327730 -_022F0CE4: .word ov00_02318314 -_022F0CE8: .word ov00_02327744 -_022F0CEC: .word ov00_0231A5F0 - arm_func_end Dwci_NdGetFileAsync - - arm_func_start Dwci_Ndi_Response_Count -Dwci_Ndi_Response_Count: ; 0x022F0CF0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r1 - add r1, sp, #0 - bl Nhttp_GetBodyAll - movs r1, r0 - bmi _022F0D38 - ldr r0, [sp] - bl Dwci_Ndi_StrToInt - ldr r1, [r4, #0x10] - add sp, sp, #4 - str r0, [r1] - ldr r0, [r4, #0x10] - ldr r0, [r0] - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - ldmia sp!, {r3, r4, pc} -_022F0D38: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwci_Ndi_Response_Count - - arm_func_start Dwci_Ndi_Response_Contents -Dwci_Ndi_Response_Contents: ; 0x022F0D44 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r1 - add r1, sp, #0 - bl Nhttp_GetBodyAll - ldr r1, [r4, #0x14] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end Dwci_Ndi_Response_Contents - - arm_func_start Dwci_Ndi_Response_List -Dwci_Ndi_Response_List: ; 0x022F0D70 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r2, [r1, #0x14] - str r1, [sp] - mov r1, #0xb0 - mul r1, r2, r1 - mov r4, r0 - ldr r0, [sp] - mov r2, #0 - ldr r0, [r0, #0x10] - str r2, [sp, #4] - bl Dwci_Ndi_Memclr - ldr r1, _022F0FF0 ; =ov00_0231A5FC - add r2, sp, #0x10 - mov r0, r4 - bl Nhttp_GetHeaderField - cmp r0, #0 - ble _022F0DD8 - ldr r1, [sp, #0x10] - ldrsb r0, [r1] - cmp r0, #0x30 - ldreqsb r0, [r1, #1] - cmpeq r0, #0 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F0DD8: - add r1, sp, #0x14 - mov r0, r4 - bl Nhttp_GetBodyAll - mov r4, r0 - cmp r4, #0 - ble _022F0FE4 - ldr r0, [sp] - mov r5, #0 - ldr r0, [r0, #0x14] - str r5, [sp, #0xc] - cmp r0, #0 - ble _022F0FE4 - str r5, [sp, #8] -_022F0E0C: - cmp r5, r4 - movge r0, #1 - strge r0, [sp, #4] - bge _022F0FE4 - ldr r0, [sp] - mov r6, #0 - ldr r1, [r0, #0x10] - ldr r0, [sp, #8] - mov r7, r5 - mov r2, r6 - str r6, [sp, #4] - cmp r5, r4 - add r8, r1, r0 - bge _022F0FBC - mov sl, r6 - mov fp, #1 -_022F0E4C: - ldr r3, [sp, #0x14] - ldrsb r0, [r3, r5] - cmp r0, #0xd - moveq r2, fp - beq _022F0FB0 - cmp r2, #0 - beq _022F0EB8 - cmp r0, #0xa - bne _022F0FAC - cmp r6, #5 - bne _022F0E9C - sub r0, r5, #1 - sub r1, r0, r7 - cmp r1, #8 - bgt _022F0FE4 - add r0, r3, r7 - bl Dwci_Ndi_StrToInt - cmp r0, #0 - blt _022F0FE4 - str r0, [r8, #0xac] -_022F0E9C: - cmp r6, #5 - movge r0, #1 - strge r0, [sp, #4] - movlt r0, #0 - add r5, r5, #1 - strlt r0, [sp, #4] - b _022F0FBC -_022F0EB8: - cmp r0, #9 - bne _022F0FAC - cmp r6, #5 - addls pc, pc, r6, lsl #2 - b _022F0FA4 -_022F0ECC: ; jump table - b _022F0EE4 ; case 0 - b _022F0F00 ; case 1 - b _022F0F30 ; case 2 - b _022F0F4C ; case 3 - b _022F0F68 ; case 4 - b _022F0F84 ; case 5 -_022F0EE4: - sub r2, r5, r7 - cmp r2, #0x20 - bhi _022F0FE4 - add r1, r3, r7 - mov r0, r8 - bl Dwci_Ndi_Memcpy - b _022F0FA4 -_022F0F00: - sub sb, r5, r7 - mov r0, sb - bl Dwci_Ndi_GetDecodeLenBase64 - cmp r0, #0x66 - bhi _022F0FE4 - ldr r0, [sp, #0x14] - mov r2, sb - add r1, r0, r7 - add r0, r8, #0x22 - bl Dwci_Ndi_EecodeBase64 - strh sl, [r8, #0x86] - b _022F0FA4 -_022F0F30: - sub r2, r5, r7 - cmp r2, #0xa - bhi _022F0FE4 - add r1, r3, r7 - add r0, r8, #0x88 - bl Dwci_Ndi_Memcpy - b _022F0FA4 -_022F0F4C: - sub r2, r5, r7 - cmp r2, #0xa - bhi _022F0FE4 - add r1, r3, r7 - add r0, r8, #0x93 - bl Dwci_Ndi_Memcpy - b _022F0FA4 -_022F0F68: - sub r2, r5, r7 - cmp r2, #0xa - bhi _022F0FE4 - add r1, r3, r7 - add r0, r8, #0x9e - bl Dwci_Ndi_Memcpy - b _022F0FA4 -_022F0F84: - sub r1, r5, r7 - cmp r1, #8 - bgt _022F0FE4 - add r0, r3, r7 - bl Dwci_Ndi_StrToInt - cmp r0, #0 - blt _022F0FE4 - str r0, [r8, #0xac] -_022F0FA4: - add r6, r6, #1 - add r7, r5, #1 -_022F0FAC: - mov r2, #0 -_022F0FB0: - add r5, r5, #1 - cmp r5, r4 - blt _022F0E4C -_022F0FBC: - ldr r0, [sp] - ldr r1, [r0, #0x14] - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, r1 - ldr r0, [sp, #8] - add r0, r0, #0xb0 - str r0, [sp, #8] - blt _022F0E0C -_022F0FE4: - ldr r0, [sp, #4] - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F0FF0: .word ov00_0231A5FC - arm_func_end Dwci_Ndi_Response_List - - arm_func_start Dwci_Ndi_InitLockGlobal -Dwci_Ndi_InitLockGlobal: ; 0x022F0FF4 - stmdb sp!, {r3, lr} - ldr r0, _022F1008 ; =ov00_02327928 - bl OS_InitMutex - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F1008: .word ov00_02327928 - arm_func_end Dwci_Ndi_InitLockGlobal - - arm_func_start Dwci_Ndi_ExitLockGlobal -Dwci_Ndi_ExitLockGlobal: ; 0x022F100C - bx lr - arm_func_end Dwci_Ndi_ExitLockGlobal - - arm_func_start Dwci_Ndi_LockGlobal -Dwci_Ndi_LockGlobal: ; 0x022F1010 - ldr ip, _022F101C ; =OS_LockMutex - ldr r0, _022F1020 ; =ov00_02327928 - bx ip - .align 2, 0 -_022F101C: .word OS_LockMutex -_022F1020: .word ov00_02327928 - arm_func_end Dwci_Ndi_LockGlobal - - arm_func_start Dwci_Ndi_UnlockGlobal -Dwci_Ndi_UnlockGlobal: ; 0x022F1024 - ldr ip, _022F1030 ; =OS_UnlockMutex - ldr r0, _022F1034 ; =ov00_02327928 - bx ip - .align 2, 0 -_022F1030: .word OS_UnlockMutex -_022F1034: .word ov00_02327928 - arm_func_end Dwci_Ndi_UnlockGlobal - - arm_func_start Dwci_Ndi_InitHttpCallback -Dwci_Ndi_InitHttpCallback: ; 0x022F1038 - stmdb sp!, {r3, lr} - ldr r0, _022F1058 ; =ov00_02327910 - bl OS_InitMutex - ldr r0, _022F105C ; =ov00_0232790C - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F1058: .word ov00_02327910 -_022F105C: .word ov00_0232790C - arm_func_end Dwci_Ndi_InitHttpCallback - - arm_func_start Dwci_Ndi_ExitHttpCallback -Dwci_Ndi_ExitHttpCallback: ; 0x022F1060 - bx lr - arm_func_end Dwci_Ndi_ExitHttpCallback - - arm_func_start Dwci_Ndi_PrepareHttpCallback -Dwci_Ndi_PrepareHttpCallback: ; 0x022F1064 - stmdb sp!, {r4, lr} - ldr r0, _022F10A4 ; =ov00_02327910 - bl OS_LockMutex - ldr r0, _022F10A8 ; =ov00_0232790C - ldr r0, [r0] - cmp r0, #0 - moveq r4, #1 - movne r4, #0 - cmp r4, #0 - ldrne r0, _022F10A8 ; =ov00_0232790C - movne r1, #1 - strne r1, [r0] - ldr r0, _022F10A4 ; =ov00_02327910 - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F10A4: .word ov00_02327910 -_022F10A8: .word ov00_0232790C - arm_func_end Dwci_Ndi_PrepareHttpCallback - - arm_func_start Dwci_Ndi_UnprepareHttpCallback -Dwci_Ndi_UnprepareHttpCallback: ; 0x022F10AC - stmdb sp!, {r3, lr} - ldr r0, _022F10D0 ; =ov00_02327910 - bl OS_LockMutex - ldr r1, _022F10D4 ; =ov00_0232790C - mov r2, #0 - ldr r0, _022F10D0 ; =ov00_02327910 - str r2, [r1] - bl OS_UnlockMutex - ldmia sp!, {r3, pc} - .align 2, 0 -_022F10D0: .word ov00_02327910 -_022F10D4: .word ov00_0232790C - arm_func_end Dwci_Ndi_UnprepareHttpCallback - - arm_func_start Dwci_Ndi_KickThread -Dwci_Ndi_KickThread: ; 0x022F10D8 - ldr ip, _022F10E8 ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - bx ip - .align 2, 0 -_022F10E8: .word OS_SendMessage - arm_func_end Dwci_Ndi_KickThread - - arm_func_start Dwci_Ndi_GetMacAddress -Dwci_Ndi_GetMacAddress: ; 0x022F10EC - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov sb, r0 - add r0, sp, #0 - bl OS_GetMacAddress - mov r6, #0 - add r7, sp, #0 - mov r8, r6 - add r5, sp, #6 - mov r4, #2 -_022F1114: - ldrb r1, [r7], #1 - mov r2, r4 - add r0, r5, r8 - bl Dwci_Ndi_HexToStrFigure - add r6, r6, #1 - cmp r6, #6 - add r8, r8, #2 - blt _022F1114 - add r1, sp, #6 - mov r0, sb - mov r2, #0xc - bl Dwci_Ndi_EncodeBase64 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end Dwci_Ndi_GetMacAddress - - arm_func_start Dwci_Ndi_Strlen -Dwci_Ndi_Strlen: ; 0x022F114C - ldr ip, _022F1154 ; =Std_GetStringLength - bx ip - .align 2, 0 -_022F1154: .word Std_GetStringLength - arm_func_end Dwci_Ndi_Strlen - - arm_func_start Dwci_Ndi_Strncmp -Dwci_Ndi_Strncmp: ; 0x022F1158 - ldr ip, _022F1160 ; =Std_CompareNString - bx ip - .align 2, 0 -_022F1160: .word Std_CompareNString - arm_func_end Dwci_Ndi_Strncmp - - arm_func_start Dwci_Ndi_Memclr -Dwci_Ndi_Memclr: ; 0x022F1164 - ldr ip, _022F1174 ; =MI_CpuFill8 - mov r2, r1 - mov r1, #0 - bx ip - .align 2, 0 -_022F1174: .word MI_CpuFill8 - arm_func_end Dwci_Ndi_Memclr - - arm_func_start Dwci_Ndi_Memcpy -Dwci_Ndi_Memcpy: ; 0x022F1178 - ldr ip, _022F118C ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx ip - .align 2, 0 -_022F118C: .word MI_CpuCopy8 - arm_func_end Dwci_Ndi_Memcpy - - arm_func_start Dwci_Ndi_StrToInt -Dwci_Ndi_StrToInt: ; 0x022F1190 - ldr ip, _022F1198 ; =Nhttpi_StrToInt - bx ip - .align 2, 0 -_022F1198: .word Nhttpi_StrToInt - arm_func_end Dwci_Ndi_StrToInt - - arm_func_start Dwci_Ndi_IntToStr -Dwci_Ndi_IntToStr: ; 0x022F119C - ldr ip, _022F11A4 ; =Nhttpi_IntToStr - bx ip - .align 2, 0 -_022F11A4: .word Nhttpi_IntToStr - arm_func_end Dwci_Ndi_IntToStr - - arm_func_start Dwci_Ndi_IntToStrFigure -Dwci_Ndi_IntToStrFigure: ; 0x022F11A8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, r2 - ldr r4, _022F1274 ; =0x01634578 - ldr r2, _022F1278 ; =0x5D8A0000 - mov sb, r1 - cmp r8, r4 - mov sl, r0 - mov fp, r3 - mov r5, #0 - cmpeq sb, r2 - subhs r0, r5, #1 - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, r5 - mov r0, r5 -_022F11E0: - ldr r1, _022F127C ; =ov00_02318324 - add r1, r1, r4, lsl #3 - ldr r6, [r1, #4] - ldr r1, _022F127C ; =ov00_02318324 - cmp r8, r6 - ldr r7, [r1, r4, lsl #3] - cmpeq sb, r7 - blo _022F1238 - mov r0, sb - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl _ll_udiv - umull r3, r2, r0, r7 - mla r2, r0, r6, r2 - add r0, r0, #0x30 - strb r0, [sl, r5] - subs sb, sb, r3 - sbc r8, r8, r2 - mov r0, #1 - add r5, r5, #1 - b _022F1258 -_022F1238: - cmp r0, #0 - bne _022F124C - rsb r1, r4, #0x11 - cmp r1, fp - bgt _022F1258 -_022F124C: - mov r1, #0x30 - strb r1, [sl, r5] - add r5, r5, #1 -_022F1258: - add r4, r4, #1 - cmp r4, #0x10 - blt _022F11E0 - adds r0, sb, #0x30 - strb r0, [sl, r5] - add r0, r5, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F1274: .word 0x01634578 -_022F1278: .word 0x5D8A0000 -_022F127C: .word ov00_02318324 - arm_func_end Dwci_Ndi_IntToStrFigure - - arm_func_start Dwci_Ndi_HexToStrFigure -Dwci_Ndi_HexToStrFigure: ; 0x022F1280 - stmdb sp!, {r3, lr} - mov lr, #0 - cmp r2, #8 - subgt r0, lr, #1 - ldmgtia sp!, {r3, pc} - cmp r2, #1 - mov ip, #1 - blt _022F12D0 -_022F12A0: - sub r3, r2, ip - mov r3, r3, lsl #2 - mov r3, r1, lsr r3 - and r3, r3, #0xf - cmp r3, #0xa - addlo r3, r3, #0x30 - addhs r3, r3, #0x57 - add ip, ip, #1 - strb r3, [r0, lr] - add lr, lr, #1 - cmp ip, r2 - ble _022F12A0 -_022F12D0: - mov r0, lr - ldmia sp!, {r3, pc} - arm_func_end Dwci_Ndi_HexToStrFigure - - arm_func_start Nhttp_Startup -Nhttp_Startup: ; 0x022F12D8 - stmdb sp!, {r4, lr} - ldr r3, _022F139C ; =ov00_02327940 - mov ip, #0 - str r0, [r3, #8] - str r1, [r3, #0xc] - str ip, [r3, #4] - str ip, [r3, #0x1c] - str ip, [r3, #0x20] - str ip, [r3, #0x10] - mov r4, r2 - str ip, [r3, #0x14] - bl Nhttpi_InitLockReqList - cmp r0, #0 - bne _022F1324 - ldr r0, _022F139C ; =ov00_02327940 - mov r1, #9 - str r1, [r0, #4] - mov r0, #0 - ldmia sp!, {r4, pc} -_022F1324: - ldr r1, _022F139C ; =ov00_02327940 - mov r0, #0x2000 - ldr r2, [r1, #8] - mov r1, #8 - blx r2 - movs r1, r0 - ldr r0, _022F139C ; =ov00_02327940 - str r1, [r0, #0x18] - bne _022F135C - mov r1, #1 - str r1, [r0, #4] - bl Nhttpi_ExitLockReqList - mov r0, #0 - ldmia sp!, {r4, pc} -_022F135C: - mov r0, r4 - bl Nhttpi_CreateCommThread - cmp r0, #0 - ldrne r1, _022F139C ; =ov00_02327940 - movne r0, #1 - strne r0, [r1] - ldmneia sp!, {r4, pc} - ldr r1, _022F139C ; =ov00_02327940 - mov r0, #9 - str r0, [r1, #4] - ldr r0, [r1, #0x18] - ldr r1, [r1, #0xc] - blx r1 - bl Nhttpi_ExitLockReqList - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F139C: .word ov00_02327940 - arm_func_end Nhttp_Startup - - arm_func_start Nhttp_CleanupAsync -Nhttp_CleanupAsync: ; 0x022F13A0 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - mov r2, r0 - mov ip, #0x800 - ldr r0, _022F13DC ; =ov00_02327964 - ldr r1, _022F13E0 ; =Nhttpi_CleanupThreadProc - ldr r3, _022F13E4 ; =ov00_02328224 - str ip, [sp] - mov ip, #0x10 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _022F13DC ; =ov00_02327964 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F13DC: .word ov00_02327964 -_022F13E0: .word Nhttpi_CleanupThreadProc -_022F13E4: .word ov00_02328224 - arm_func_end Nhttp_CleanupAsync - - arm_func_start Nhttpi_CleanupThreadProc -Nhttpi_CleanupThreadProc: ; 0x022F13E8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Nhttpi_CancelAllRequests - bl Nhttpi_DestroyCommThread - ldr r1, _022F1420 ; =ov00_02327940 - ldr r0, [r1, #0x18] - ldr r1, [r1, #0xc] - blx r1 - bl Nhttpi_ExitLockReqList - ldr r0, _022F1420 ; =ov00_02327940 - mov r1, #0 - str r1, [r0] - blx r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F1420: .word ov00_02327940 - arm_func_end Nhttpi_CleanupThreadProc - - arm_func_start AddHdrList_Nhttp -AddHdrList_Nhttp: ; 0x022F1424 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r0 - ldr sl, [sb] - mov r8, r1 - mov r7, r2 - mov r6, r3 - cmp sl, #0 - mov r4, #0 - beq _022F14A0 - ldr r1, [sl, #8] - mov r0, r8 - mov r5, sl - bl Nhttpi_CompareToken - cmp r0, #0 - beq _022F149C - ldr r5, [sl, #4] - ldr r0, [sb] - cmp r5, r0 - beq _022F14A0 -_022F1470: - ldr r1, [r5, #8] - mov r0, r8 - bl Nhttpi_CompareToken - cmp r0, #0 - moveq r4, #1 - beq _022F14A0 - ldr r5, [r5, #4] - ldr r0, [sb] - cmp r5, r0 - bne _022F1470 - b _022F14A0 -_022F149C: - mov r4, #1 -_022F14A0: - cmp r4, #0 - strne r7, [r5, #0xc] - bne _022F152C - ldr r1, _022F1534 ; =ov00_02327948 - mov r0, r6 - ldr r2, [r1] - mov r1, #4 - blx r2 - cmp r0, #0 - bne _022F14DC - ldr r0, _022F1538 ; =ov00_02327944 - mov r1, #1 - str r1, [r0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022F14DC: - str r8, [r0, #8] - str r7, [r0, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0x14] - ldr r1, [sb] - cmp r1, #0 - streq r0, [r0, #4] - streq r0, [r0] - streq r0, [sb] - beq _022F152C - ldr r1, [r1] - str r1, [r0] - ldr r1, [sb] - str r1, [r0, #4] - ldr r1, [sb] - ldr r1, [r1] - str r0, [r1, #4] - ldr r1, [sb] - str r0, [r1] -_022F152C: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F1534: .word ov00_02327948 -_022F1538: .word ov00_02327944 - arm_func_end AddHdrList_Nhttp - - arm_func_start Nhttpi_GetHdrFromList -Nhttpi_GetHdrFromList: ; 0x022F153C - ldr r3, [r0] - cmp r3, #0 - beq _022F1578 - ldr r2, [r3] - cmp r3, r2 - moveq r1, #0 - streq r1, [r0] - beq _022F1578 - ldr r1, [r3, #4] - str r1, [r2, #4] - ldr r2, [r3] - ldr r1, [r3, #4] - str r2, [r1] - ldr r1, [r3, #4] - str r1, [r0] -_022F1578: - mov r0, r3 - bx lr - arm_func_end Nhttpi_GetHdrFromList - - arm_func_start IncAscii_Nhttp -IncAscii_Nhttp: ; 0x022F1580 - add r0, r0, #1 - and r0, r0, #0xff - cmp r0, #0x7b - moveq r0, #0x30 - beq _022F15A8 - cmp r0, #0x5b - moveq r0, #0x61 - beq _022F15A8 - cmp r0, #0x3a - moveq r0, #0x41 -_022F15A8: - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bx lr - arm_func_end IncAscii_Nhttp - - arm_func_start CheckTagPost_Nhttp -CheckTagPost_Nhttp: ; 0x022F15B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r0, sb - mov r1, r8 - add r2, sl, #0x46 - mov r3, #0x12 - bl Nhttpi_MemFind - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r6, _022F1650 ; =ov00_023183B7 - mov fp, #0x13 - mov r4, #0x12 -_022F15F0: - add r7, sl, fp - ldrsb r5, [r7, #0x44] -_022F15F8: - and r0, r5, #0xff - bl IncAscii_Nhttp - mov r5, r0 - strb r5, [r7, #0x44] - ldrsb r0, [r6] - cmp r5, r0 - beq _022F1638 - mov r0, sb - mov r1, r8 - mov r3, r4 - add r2, sl, #0x46 - bl Nhttpi_MemFind - cmp r0, #0 - bge _022F15F8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F1638: - sub fp, fp, #1 - cmp fp, #2 - sub r6, r6, #1 - bge _022F15F0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F1650: .word ov00_023183B7 - arm_func_end CheckTagPost_Nhttp - - arm_func_start Nhttp_AddHeaderField -Nhttp_AddHeaderField: ; 0x022F1654 - stmdb sp!, {r3, lr} - ldr r3, [r0] - cmp r3, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r0, #0x34 - mov r3, #0x18 - bl AddHdrList_Nhttp - ldmia sp!, {r3, pc} - arm_func_end Nhttp_AddHeaderField - - arm_func_start Nhttp_AddPostDataAscii -Nhttp_AddPostDataAscii: ; 0x022F1678 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r0, [r8] - mov r7, r1 - mov r6, r2 - mov r5, #0 - cmp r0, #0 - movne r0, r5 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - bl Nhttpi_Strlen - mov r4, r0 - mov r0, r8 - mov r1, r6 - mov r2, r4 - bl CheckTagPost_Nhttp - cmp r0, #0 - beq _022F16E4 - mov r1, r7 - mov r2, r6 - add r0, r8, #0x38 - mov r3, #0x18 - bl AddHdrList_Nhttp - movs r5, r0 - ldrne r0, [r8, #0x38] - ldrne r0, [r0] - strne r4, [r0, #0x10] -_022F16E4: - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end Nhttp_AddPostDataAscii - - arm_func_start Nhttp_SetCaChain -Nhttp_SetCaChain: ; 0x022F16EC - ldr r3, [r0] - cmp r3, #0 - movne r0, #0 - streq r1, [r0, #0x1c] - streq r2, [r0, #0x18] - moveq r0, #1 - bx lr - arm_func_end Nhttp_SetCaChain - - arm_func_start Nhttpi_SetReqQueue -Nhttpi_SetReqQueue: ; 0x022F1708 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022F17B0 ; =ov00_02327948 - mov r4, r0 - ldr r2, [r1] - mov r0, #0x14 - mov r1, #4 - mvn r5, #0 - blx r2 - cmp r0, #0 - beq _022F17A8 - ldr r1, _022F17B4 ; =ov00_02327960 - ldr r2, [r1] - cmp r2, #0 - streq r0, [r0] - streq r0, [r0, #4] - streq r0, [r1] - beq _022F1770 - ldr r2, [r2] - str r2, [r0] - ldr r2, [r1] - str r2, [r0, #4] - ldr r2, [r1] - ldr r2, [r2] - str r0, [r2, #4] - ldr r1, [r1] - str r0, [r1] -_022F1770: - ldr r1, _022F17B8 ; =ov00_0232795C - mvn r2, #0 - ldr ip, [r1] - ldr r3, [r1] - add r3, r3, #1 - str r3, [r1] - str ip, [r0, #8] - str r4, [r0, #0xc] - str r2, [r0, #0x10] - ldr r2, [r1] - ldr r5, [r0, #8] - cmp r2, #0 - movlt r0, #0 - strlt r0, [r1] -_022F17A8: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F17B0: .word ov00_02327948 -_022F17B4: .word ov00_02327960 -_022F17B8: .word ov00_0232795C - arm_func_end Nhttpi_SetReqQueue - - arm_func_start Nhttpi_FindReqQueue -Nhttpi_FindReqQueue: ; 0x022F17BC - ldr r1, _022F1810 ; =ov00_02327960 - mov r2, #0 - ldr r3, [r1] - cmp r3, #0 - beq _022F1808 - ldr r1, [r3, #8] - cmp r1, r0 - moveq r2, r3 - beq _022F1808 - ldr ip, [r3, #4] - cmp ip, r3 - beq _022F1808 -_022F17EC: - ldr r1, [ip, #8] - cmp r1, r0 - moveq r2, ip - beq _022F1808 - ldr ip, [ip, #4] - cmp ip, r3 - bne _022F17EC -_022F1808: - mov r0, r2 - bx lr - .align 2, 0 -_022F1810: .word ov00_02327960 - arm_func_end Nhttpi_FindReqQueue - - arm_func_start Nhttpi_FreeReqQueue -Nhttpi_FreeReqQueue: ; 0x022F1814 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, #0 - bl Nhttpi_FindReqQueue - movs r4, r0 - beq _022F18A4 - ldr r0, _022F18AC ; =ov00_02327960 - ldr r2, [r0] - ldr r1, [r2] - cmp r2, r1 - beq _022F1864 - ldmia r4, {r1, r2} - str r2, [r1, #4] - ldr r2, [r4] - ldr r1, [r4, #4] - str r2, [r1] - ldr r1, [r0] - cmp r1, r4 - ldreq r1, [r4, #4] - streq r1, [r0] - b _022F186C -_022F1864: - mov r1, r5 - str r1, [r0] -_022F186C: - ldr r0, [r4, #0xc] - ldr r5, [r0, #0x3c] - ldr r6, [r0, #0x30] - ldr r7, [r0, #0x2c] - bl Nhttpi_DestroyRequestObject - ldr r1, _022F18B0 ; =ov00_0232794C - mov r0, r4 - ldr r1, [r1] - blx r1 - mov r1, r6 - mov r2, r7 - mov r0, #8 - blx r5 - mov r5, #1 -_022F18A4: - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F18AC: .word ov00_02327960 -_022F18B0: .word ov00_0232794C - arm_func_end Nhttpi_FreeReqQueue - - arm_func_start Nhttpi_AllFreeReqQueue -Nhttpi_AllFreeReqQueue: ; 0x022F18B4 - stmdb sp!, {r4, lr} - ldr r4, _022F18E0 ; =ov00_02327960 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} -_022F18C8: - ldr r0, [r0, #8] - bl Nhttpi_FreeReqQueue - ldr r0, [r4] - cmp r0, #0 - bne _022F18C8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F18E0: .word ov00_02327960 - arm_func_end Nhttpi_AllFreeReqQueue - - arm_func_start Nhttpi_GetReqFromReqQueue -Nhttpi_GetReqFromReqQueue: ; 0x022F18E4 - ldr ip, _022F18F0 ; =Nhttpi_GetHdrFromList - ldr r0, _022F18F4 ; =ov00_02327960 - bx ip - .align 2, 0 -_022F18F0: .word Nhttpi_GetHdrFromList -_022F18F4: .word ov00_02327960 - arm_func_end Nhttpi_GetReqFromReqQueue - - arm_func_start Nhttpi_InitLockReqList -Nhttpi_InitLockReqList: ; 0x022F18F8 - stmdb sp!, {r3, lr} - ldr r0, _022F190C ; =ov00_02328228 - bl OS_InitMutex - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F190C: .word ov00_02328228 - arm_func_end Nhttpi_InitLockReqList - - arm_func_start Nhttpi_ExitLockReqList -Nhttpi_ExitLockReqList: ; 0x022F1910 - bx lr - arm_func_end Nhttpi_ExitLockReqList - - arm_func_start Nhttpi_LockReqList -Nhttpi_LockReqList: ; 0x022F1914 - ldr ip, _022F1920 ; =OS_LockMutex - ldr r0, _022F1924 ; =ov00_02328228 - bx ip - .align 2, 0 -_022F1920: .word OS_LockMutex -_022F1924: .word ov00_02328228 - arm_func_end Nhttpi_LockReqList - - arm_func_start Nhttpi_UnlockReqList -Nhttpi_UnlockReqList: ; 0x022F1928 - ldr ip, _022F1934 ; =OS_UnlockMutex - ldr r0, _022F1938 ; =ov00_02328228 - bx ip - .align 2, 0 -_022F1934: .word OS_UnlockMutex -_022F1938: .word ov00_02328228 - arm_func_end Nhttpi_UnlockReqList - - arm_func_start Nhttpi_CreateCommThread -Nhttpi_CreateCommThread: ; 0x022F193C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl OS_IsThreadAvailable - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022F19A4 ; =ov00_02328240 - ldr r1, _022F19A8 ; =ov00_02328224 - mov r2, #1 - bl OS_InitMessageQueue - mov r0, #0x2000 - str r0, [sp] - ldr r0, _022F19AC ; =ov00_02328260 - ldr r1, _022F19B0 ; =Nhttpi_CommThreadProc - add r3, r4, #0x2000 - mov r2, #0 - str r5, [sp, #4] - bl OS_CreateThread - ldr r0, _022F19AC ; =ov00_02328260 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F19A4: .word ov00_02328240 -_022F19A8: .word ov00_02328224 -_022F19AC: .word ov00_02328260 -_022F19B0: .word Nhttpi_CommThreadProc - arm_func_end Nhttpi_CreateCommThread - - arm_func_start Nhttpi_DestroyCommThread -Nhttpi_DestroyCommThread: ; 0x022F19B4 - stmdb sp!, {r3, lr} - ldr r0, _022F19D4 ; =ov00_02327954 - mov r1, #1 - str r1, [r0] - bl Nhttpi_KickCommThread - ldr r0, _022F19D8 ; =ov00_02328260 - bl OS_JoinThread - ldmia sp!, {r3, pc} - .align 2, 0 -_022F19D4: .word ov00_02327954 -_022F19D8: .word ov00_02328260 - arm_func_end Nhttpi_DestroyCommThread - - arm_func_start Nhttpi_IdleCommThread -Nhttpi_IdleCommThread: ; 0x022F19DC - stmdb sp!, {r3, lr} - ldr r0, _022F19F4 ; =ov00_02328240 - add r1, sp, #0 - mov r2, #1 - bl OS_ReceiveMessage - ldmia sp!, {r3, pc} - .align 2, 0 -_022F19F4: .word ov00_02328240 - arm_func_end Nhttpi_IdleCommThread - - arm_func_start Nhttpi_KickCommThread -Nhttpi_KickCommThread: ; 0x022F19F8 - ldr ip, _022F1A0C ; =OS_SendMessage - mov r1, #0 - ldr r0, _022F1A10 ; =ov00_02328240 - mov r2, r1 - bx ip - .align 2, 0 -_022F1A0C: .word OS_SendMessage -_022F1A10: .word ov00_02328240 - arm_func_end Nhttpi_KickCommThread - - arm_func_start SetupGetcharFromHdrRecvBuf -SetupGetcharFromHdrRecvBuf: ; 0x022F1A14 - stmdb sp!, {r3, lr} - cmp r1, #0x400 - bge _022F1A30 - mov r0, #0 - str r0, [r2] - str r1, [r3] - ldmia sp!, {r3, pc} -_022F1A30: - sub ip, r1, #0x400 - movs ip, ip, asr #9 - sub lr, ip, #1 - ldr ip, [r0, #0x1c] - beq _022F1A54 -_022F1A44: - cmp lr, #0 - sub lr, lr, #1 - ldr ip, [ip] - bne _022F1A44 -_022F1A54: - ldr r0, _022F1A6C ; =0x000001FF - sub r1, r1, #0x400 - str ip, [r2] - and r0, r1, r0 - str r0, [r3] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F1A6C: .word 0x000001FF - arm_func_end SetupGetcharFromHdrRecvBuf - - arm_func_start GetcharFromHdrRecvBuf -GetcharFromHdrRecvBuf: ; 0x022F1A70 - ldr r3, [r1] - cmp r3, #0 - bne _022F1AB0 - ldr r3, [r2] - cmp r3, #0x400 - bge _022F1A9C - add r1, r3, #1 - str r1, [r2] - add r0, r0, r3 - ldrsb r0, [r0, #0x20] - bx lr -_022F1A9C: - mov r3, #0 - str r3, [r2] - ldr r0, [r0, #0x1c] - str r0, [r1] - b _022F1AD0 -_022F1AB0: - ldr r0, [r2] - cmp r0, #0x200 - bne _022F1AD0 - mov r0, #0 - str r0, [r2] - ldr r0, [r1] - ldr r0, [r0] - str r0, [r1] -_022F1AD0: - ldr r3, [r2] - add r0, r3, #1 - str r0, [r2] - ldr r0, [r1] - add r0, r0, r3 - ldrsb r0, [r0, #4] - bx lr - arm_func_end GetcharFromHdrRecvBuf - - arm_func_start Nhttpi_FindNextLineHdrRecvBuf -Nhttpi_FindNextLineHdrRecvBuf: ; 0x022F1AEC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r6, #0 - movs r7, r3 - mov sl, r0 - subne r0, r6, #1 - mov sb, r1 - mov r8, r2 - strne r0, [r7] - cmp sb, r8 - bge _022F1BB0 - add r2, sp, #4 - add r3, sp, #0 - mov r0, sl - mov r1, sb - bl SetupGetcharFromHdrRecvBuf - cmp sb, r8 - bge _022F1BB0 - mov fp, #1 - add r5, sp, #4 - add r4, sp, #0 -_022F1B40: - mov r0, sl - mov r1, r5 - mov r2, r4 - bl GetcharFromHdrRecvBuf - cmp r0, #0x3a - bne _022F1B6C - cmp r7, #0 - beq _022F1B6C - ldr r1, [r7] - cmp r1, #0 - strlt sb, [r7] -_022F1B6C: - cmp r6, #0 - bne _022F1B80 - cmp r0, #0xd - moveq r6, fp - b _022F1BA4 -_022F1B80: - cmp r0, #0xa - bne _022F1BA0 - sub r0, r8, #1 - cmp sb, r0 - moveq r0, #0 - add sp, sp, #8 - addne r0, sb, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F1BA0: - mov r6, #0 -_022F1BA4: - add sb, sb, #1 - cmp sb, r8 - blt _022F1B40 -_022F1BB0: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end Nhttpi_FindNextLineHdrRecvBuf - - arm_func_start Nhttpi_SkipSpaceHdrRecvBuf -Nhttpi_SkipSpaceHdrRecvBuf: ; 0x022F1BBC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r1 - mov r6, r2 - mov r8, r0 - cmp r7, r6 - bge _022F1C20 - add r2, sp, #4 - add r3, sp, #0 - bl SetupGetcharFromHdrRecvBuf - cmp r7, r6 - bge _022F1C20 - add r5, sp, #4 - add r4, sp, #0 -_022F1BF4: - mov r0, r8 - mov r1, r5 - mov r2, r4 - bl GetcharFromHdrRecvBuf - cmp r0, #0x20 - addne sp, sp, #8 - movne r0, r7 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r7, r7, #1 - cmp r7, r6 - blt _022F1BF4 -_022F1C20: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end Nhttpi_SkipSpaceHdrRecvBuf - - arm_func_start Nhttpi_CompareTokenN_HdrRecvBuf -Nhttpi_CompareTokenN_HdrRecvBuf: ; 0x022F1C2C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r1 - mov r4, r2 - mov sl, r0 - mov r8, r3 - cmp sb, r4 - ldr r7, [sp, #0x30] - bge _022F1CF0 - add r2, sp, #4 - add r3, sp, #0 - bl SetupGetcharFromHdrRecvBuf - add r1, sp, #4 - add r2, sp, #0 - mov r0, sl - bl GetcharFromHdrRecvBuf - sub r6, r4, #1 - add r5, sp, #4 - add r4, sp, #0 - mov fp, #0 - b _022F1CB4 -_022F1C80: - cmp r2, #0 - cmpne r2, #0x20 - cmpne r2, r7 - cmpne sb, r6 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, r5 - mov r2, r4 - bl GetcharFromHdrRecvBuf - add sb, sb, #1 - add r8, r8, #1 -_022F1CB4: - ldrsb r2, [r8] - mov r1, fp - cmp r2, #0x41 - blt _022F1CCC - cmp r2, #0x5a - movle r1, #1 -_022F1CCC: - cmp r1, #0 - addne r1, r2, #0x20 - moveq r1, r2 - cmp r0, #0x41 - blt _022F1CE8 - cmp r0, #0x5a - addle r0, r0, #0x20 -_022F1CE8: - cmp r0, r1 - beq _022F1C80 -_022F1CF0: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end Nhttpi_CompareTokenN_HdrRecvBuf - - arm_func_start Nhttpi_LoadFromHdrRecvBuf -Nhttpi_LoadFromHdrRecvBuf: ; 0x022F1CFC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - mov r7, r2 - mov r6, r3 - ldr r0, [r4] - add r2, r7, r6 - mov r8, r1 - cmp r2, r0 - bgt _022F1DDC - cmp r6, #0 - beq _022F1DD4 - cmp r7, #0x400 - bge _022F1D5C - rsb r5, r7, #0x400 - cmp r6, r5 - movle r5, r6 - add r1, r4, #0x20 - mov r0, r8 - mov r2, r5 - add r1, r1, r7 - bl Nhttpi_Memcpy - add r7, r7, r5 - sub r6, r6, r5 - add r8, r8, r5 -_022F1D5C: - cmp r6, #0 - beq _022F1DD4 - sub r2, r7, #0x400 - ldr r0, _022F1DE4 ; =0x000001FF - movs r1, r2, asr #9 - and r7, r2, r0 - sub r0, r1, #1 - ldr r4, [r4, #0x1c] - beq _022F1D90 -_022F1D80: - cmp r0, #0 - sub r0, r0, #1 - ldr r4, [r4] - bne _022F1D80 -_022F1D90: - cmp r6, #0 - beq _022F1DD4 - ldr sb, _022F1DE4 ; =0x000001FF -_022F1D9C: - rsb r5, r7, #0x200 - cmp r6, r5 - movle r5, r6 - add r1, r4, #4 - mov r0, r8 - mov r2, r5 - add r1, r1, r7 - bl Nhttpi_Memcpy - add r0, r7, r5 - and r7, r0, sb - subs r6, r6, r5 - add r8, r8, r5 - ldr r4, [r4] - bne _022F1D9C -_022F1DD4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F1DDC: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F1DE4: .word 0x000001FF - arm_func_end Nhttpi_LoadFromHdrRecvBuf - - arm_func_start Nhttpi_IsRecvBufFull -Nhttpi_IsRecvBufFull: ; 0x022F1DE8 - ldr r0, [r0, #0xc] - cmp r0, r1 - movls r0, #1 - movhi r0, #0 - bx lr - arm_func_end Nhttpi_IsRecvBufFull - - arm_func_start Nhttpi_RecvBuf -Nhttpi_RecvBuf: ; 0x022F1DFC - stmdb sp!, {r3, lr} - ldr ip, [r0, #0x30] - mov lr, r2 - str r3, [sp] - ldr r2, [ip, #0x18] - ldr r3, [ip, #0xc] - add r2, r2, lr - sub r3, r3, lr - bl Nhttpi_SocRecv - ldmia sp!, {r3, pc} - arm_func_end Nhttpi_RecvBuf - - arm_func_start Nhttpi_RecvBufN -Nhttpi_RecvBufN: ; 0x022F1E24 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - ldr r4, [r8, #0x30] - mov r6, r2 - mov r7, r1 - mov r0, r4 - mov r1, r6 - mov r5, r3 - bl Nhttpi_IsRecvBufFull - cmp r0, #0 - addne sp, sp, #4 - ldrne r0, _022F1E90 ; =0xFFFFFC15 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x20] - sub r3, r0, r6 - str r1, [sp] - ldr r2, [r4, #0x18] - cmp r5, r3 - movle r3, r5 - mov r0, r8 - mov r1, r7 - add r2, r2, r6 - bl Nhttpi_SocRecv - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F1E90: .word 0xFFFFFC15 - arm_func_end Nhttpi_RecvBufN - - arm_func_start Nhttp_CreateRequest -Nhttp_CreateRequest: ; 0x022F1E94 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 - movs r0, r1 - cmpne r0, #1 - str r1, [sp] - mov r5, r2 - mov r4, r3 - mov r7, #0 - cmpne r0, #2 - beq _022F1ECC - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #0xb - str r1, [r0] - b _022F2358 -_022F1ECC: - cmp r4, #0 - bne _022F1EE4 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #0xb - str r1, [r0] - b _022F2358 -_022F1EE4: - ldr r1, _022F23E0 ; =ov00_02327948 - mov r0, #0x58 - ldr r2, [r1] - mov r1, #4 - blx r2 - movs r7, r0 - bne _022F1F10 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #1 - str r1, [r0] - b _022F2358 -_022F1F10: - mov r1, #0x58 - bl Nhttpi_Memclr - ldr r1, _022F23E0 ; =ov00_02327948 - mov r0, #0x420 - ldr r2, [r1] - mov r1, #4 - blx r2 - str r0, [r7, #0x30] - cmp r0, #0 - bne _022F1F48 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #1 - str r1, [r0] - b _022F2358 -_022F1F48: - mov r1, #0x420 - bl Nhttpi_Memclr - ldr r1, [r7, #0x30] - mov r0, fp - str r5, [r1, #0x18] - ldr r1, [r7, #0x30] - str r4, [r1, #0xc] - bl Nhttpi_Strlen - mov r4, r0 - cmp r4, #7 - bgt _022F1F84 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #4 - str r1, [r0] - b _022F2358 -_022F1F84: - mov r8, #7 - mov r3, #0x50 - ldr r1, _022F23E4 ; =ov00_0231A60C - mov r0, fp - mov r2, r8 - str r3, [r7, #0x28] - bl Nhttpi_Strnicmp - cmp r0, #0 - beq _022F1FE4 - ldr r1, _022F23E8 ; =ov00_0231A614 - mov r0, fp - mov r2, #8 - bl Nhttpi_Strnicmp - cmp r0, #0 - beq _022F1FD0 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #4 - str r1, [r0] - b _022F2358 -_022F1FD0: - mov r0, #1 - str r0, [r7, #8] - rsb r0, r0, #0x1bc - str r0, [r7, #0x28] - mov r8, #8 -_022F1FE4: - sub r4, r4, r8 - cmp r4, #0 - add r6, fp, r8 - bgt _022F2004 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #4 - str r1, [r0] - b _022F2358 -_022F2004: - mov r5, #0 - mov sb, r5 - mov sl, r5 - b _022F2078 -_022F2014: - cmp sl, #2 - subeq sl, sl, #1 - beq _022F2074 - cmp sl, #1 - bne _022F2068 - sub r0, r5, #1 - mov r1, #2 - add r0, r6, r0 - bl Nhttpi_StrToHex - mov r0, r0, lsl #0x18 - movs r0, r0, asr #0x18 - sub sl, sl, #1 - bpl _022F2058 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #4 - str r1, [r0] - b _022F2358 -_022F2058: - cmp r0, #0x2f - bne _022F2074 - sub sb, sb, #1 - b _022F208C -_022F2068: - cmp r0, #0x25 - moveq sl, #2 - addeq sb, sb, #1 -_022F2074: - add r5, r5, #1 -_022F2078: - cmp r5, r4 - bge _022F208C - ldrsb r0, [r6, r5] - cmp r0, #0x2f - bne _022F2014 -_022F208C: - cmp sl, #0 - beq _022F20A4 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #4 - str r1, [r0] - b _022F2358 -_022F20A4: - ldr r0, _022F23E0 ; =ov00_02327948 - add r1, r8, r4 - sub r1, r1, sb, lsl #1 - ldr r2, [r0] - add r0, r1, #1 - mov r1, #4 - blx r2 - str r0, [r7, #0x24] - cmp r0, #0 - bne _022F20DC - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #1 - str r1, [r0] - b _022F2358 -_022F20DC: - mov r1, fp - mov r2, r8 - bl Nhttpi_Memcpy - mov sb, #0 - mov r5, sb - mov sl, sb - mov fp, sb - cmp r4, #0 - ble _022F2180 -_022F2100: - cmp sl, #2 - subeq sl, sl, #1 - beq _022F2174 - cmp sl, #1 - bne _022F214C - sub r0, sb, #1 - add r0, r6, r0 - mov r1, #2 - bl Nhttpi_StrToHex - mov r0, r0, lsl #0x18 - mov r1, r0, asr #0x18 - ldr r0, [r7, #0x24] - cmp r1, #0x2f - add r0, r8, r0 - add r0, r5, r0 - sub sl, sl, #1 - strb r1, [r0, #-1] - moveq fp, #1 - b _022F2174 -_022F214C: - ldrsb r1, [r6, sb] - cmp r1, #0x2f - moveq fp, #1 - cmp fp, #0 - cmpeq r1, #0x25 - ldrne r0, [r7, #0x24] - moveq sl, #2 - addne r0, r8, r0 - strneb r1, [r5, r0] - add r5, r5, #1 -_022F2174: - add sb, sb, #1 - cmp sb, r4 - blt _022F2100 -_022F2180: - ldr r1, [r7, #0x24] - add r0, r8, r5 - mov r2, #0 - strb r2, [r1, r0] - ldr r0, [r7, #0x24] - cmp r5, #0 - add r1, r0, r8 - ble _022F21C4 -_022F21A0: - ldrsb r0, [r1, r2] - cmp r0, #0x2f - cmpne r0, #0x3a - addeq r0, r2, r8 - streq r0, [r7, #0xc] - beq _022F21C4 - add r2, r2, #1 - cmp r2, r5 - blt _022F21A0 -_022F21C4: - cmp r2, r5 - bne _022F21DC - add r0, r2, r8 - str r0, [r7, #0xc] - str r0, [r7, #0x10] - b _022F2280 -_022F21DC: - ldrsb r0, [r1, r2] - cmp r0, #0x2f - ldreq r0, [r7, #0xc] - streq r0, [r7, #0x10] - beq _022F2280 - cmp r0, #0x3a - bne _022F2280 - cmp r2, r5 - bge _022F2220 -_022F2200: - ldrsb r0, [r1, r2] - cmp r0, #0x2f - addeq r0, r2, r8 - streq r0, [r7, #0x10] - beq _022F2220 - add r2, r2, #1 - cmp r2, r5 - blt _022F2200 -_022F2220: - cmp r2, r5 - addeq r0, r2, r8 - streq r0, [r7, #0x10] - beq _022F2280 - ldr r1, [r7, #0xc] - ldr r0, [r7, #0x24] - add r2, r1, #1 - ldr r1, [r7, #0x10] - add r0, r0, r2 - sub r1, r1, r2 - bl Nhttpi_StrToNum - cmp r0, #0 - ldrlt r0, [r7, #0x28] - blt _022F2274 - ldr r1, _022F23EC ; =0x0000FFFF - cmp r0, r1 - ble _022F2274 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #4 - str r1, [r0] - b _022F2358 -_022F2274: - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [r7, #0x28] -_022F2280: - ldr r0, [r7, #8] - cmp r0, #0 - beq _022F2328 - ldr r0, _022F23E0 ; =ov00_02327948 - ldr r3, [r7, #0xc] - ldr r2, [r0] - mov r0, #0x830 - mov r1, #4 - sub r4, r3, r8 - blx r2 - str r0, [r7, #0x20] - cmp r0, #0 - bne _022F22C4 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #1 - str r1, [r0] - b _022F2358 -_022F22C4: - mov r1, #0x830 - bl Nhttpi_Memclr - ldr r1, _022F23E0 ; =ov00_02327948 - add r0, r4, #1 - ldr r2, [r1] - mov r1, #4 - blx r2 - ldr r1, [r7, #0x20] - str r0, [r1, #0x800] - ldr r0, [r7, #0x20] - ldr r0, [r0, #0x800] - cmp r0, #0 - bne _022F2308 - ldr r0, _022F23DC ; =ov00_02327944 - mov r1, #1 - str r1, [r0] - b _022F2358 -_022F2308: - ldr r1, [r7, #0x24] - mov r2, r4 - add r1, r1, r8 - bl Nhttpi_Memcpy - ldr r0, [r7, #0x20] - mov r1, #0 - ldr r0, [r0, #0x800] - strb r1, [r0, r4] -_022F2328: - ldr r1, _022F23F0 ; =ov00_023183A4 - add r0, r7, #0x44 - mov r2, #0x14 - bl Nhttpi_Memcpy - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x28] - str r0, [r7, #0x2c] - ldr r0, [sp] - str r0, [r7, #0x40] - mov r0, r7 - str r1, [r7, #0x3c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F2358: - cmp r7, #0 - beq _022F23D4 - ldr r0, [r7, #0x20] - cmp r0, #0 - beq _022F2394 - ldr r0, [r0, #0x800] - cmp r0, #0 - beq _022F2384 - ldr r1, _022F23F4 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F2384: - ldr r1, _022F23F4 ; =ov00_0232794C - ldr r0, [r7, #0x20] - ldr r1, [r1] - blx r1 -_022F2394: - ldr r0, [r7, #0x24] - cmp r0, #0 - beq _022F23AC - ldr r1, _022F23F4 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F23AC: - ldr r0, [r7, #0x30] - cmp r0, #0 - beq _022F23C4 - ldr r1, _022F23F4 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F23C4: - ldr r1, _022F23F4 ; =ov00_0232794C - mov r0, r7 - ldr r1, [r1] - blx r1 -_022F23D4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F23DC: .word ov00_02327944 -_022F23E0: .word ov00_02327948 -_022F23E4: .word ov00_0231A60C -_022F23E8: .word ov00_0231A614 -_022F23EC: .word 0x0000FFFF -_022F23F0: .word ov00_023183A4 -_022F23F4: .word ov00_0232794C - arm_func_end Nhttp_CreateRequest - - arm_func_start Nhttp_DestroyRequest -Nhttp_DestroyRequest: ; 0x022F23F8 - stmdb sp!, {r4, lr} - ldr r1, _022F241C ; =ov00_0232794C - mov r4, r0 - ldr r0, [r4, #0x30] - ldr r1, [r1] - blx r1 - mov r0, r4 - bl Nhttpi_DestroyRequestObject - ldmia sp!, {r4, pc} - .align 2, 0 -_022F241C: .word ov00_0232794C - arm_func_end Nhttp_DestroyRequest - - arm_func_start DeleteStrList -DeleteStrList: ; 0x022F2420 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _022F2470 ; =ov00_0232794C - mov r5, #0 -_022F2434: - ldr r0, [r7] - cmp r7, r0 - beq _022F2454 - ldr r6, [r0] - ldr r1, [r4] - blx r1 - str r6, [r7] - b _022F2464 -_022F2454: - ldr r1, [r4] - mov r0, r7 - blx r1 - mov r7, r5 -_022F2464: - cmp r7, #0 - bne _022F2434 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F2470: .word ov00_0232794C - arm_func_end DeleteStrList - - arm_func_start Nhttpi_DestroyRequestObject -Nhttpi_DestroyRequestObject: ; 0x022F2474 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x34] - bl DeleteStrList - ldr r0, [r4, #0x38] - bl DeleteStrList - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _022F24C0 - ldr r0, [r0, #0x800] - cmp r0, #0 - beq _022F24B0 - ldr r1, _022F24E8 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F24B0: - ldr r1, _022F24E8 ; =ov00_0232794C - ldr r0, [r4, #0x20] - ldr r1, [r1] - blx r1 -_022F24C0: - ldr r1, _022F24E8 ; =ov00_0232794C - ldr r0, [r4, #0x24] - ldr r1, [r1] - blx r1 - ldr r1, _022F24E8 ; =ov00_0232794C - mov r0, r4 - ldr r1, [r1] - blx r1 - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F24E8: .word ov00_0232794C - arm_func_end Nhttpi_DestroyRequestObject - - arm_func_start Nhttp_SendRequestAsync -Nhttp_SendRequestAsync: ; 0x022F24EC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - cmp r0, #0 - beq _022F2514 - ldr r0, _022F2574 ; =ov00_02327944 - mov r1, #0xb - str r1, [r0] - sub r0, r1, #0xc - ldmia sp!, {r3, r4, r5, pc} -_022F2514: - ldr r0, [r5, #0x40] - cmp r0, #1 - ldreq r0, [r5, #0x38] - cmpeq r0, #0 - bne _022F253C - ldr r0, _022F2574 ; =ov00_02327944 - mov r1, #0xb - str r1, [r0] - sub r0, r1, #0xc - ldmia sp!, {r3, r4, r5, pc} -_022F253C: - bl Nhttpi_LockReqList - mov r0, r5 - bl Nhttpi_SetReqQueue - movs r4, r0 - ldrmi r0, _022F2574 ; =ov00_02327944 - movmi r1, #1 - strmi r1, [r0] - bmi _022F2568 - mov r0, #1 - str r0, [r5] - bl Nhttpi_KickCommThread -_022F2568: - bl Nhttpi_UnlockReqList - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F2574: .word ov00_02327944 - arm_func_end Nhttp_SendRequestAsync - - arm_func_start Nhttp_CancelRequestAsync -Nhttp_CancelRequestAsync: ; 0x022F2578 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, #0 - bl Nhttpi_LockReqList - ldr r0, _022F25F0 ; =ov00_02327950 - ldr r2, [r0] - cmp r2, #0 - beq _022F25D0 - ldr r1, [r2, #8] - cmp r1, r4 - ldreq r1, [r2, #0xc] - ldreq r1, [r1, #4] - cmpeq r1, #0 - bne _022F25D0 - ldr r1, [r2, #0xc] - mov r2, #1 - str r2, [r1, #4] - ldr r1, [r0] - ldr r0, [r1, #0xc] - ldr r1, [r1, #0x10] - bl Nhttpi_SocCancel - mov r5, #1 -_022F25D0: - cmp r5, #0 - bne _022F25E4 - mov r0, r4 - bl Nhttpi_FreeReqQueue - mov r5, r0 -_022F25E4: - bl Nhttpi_UnlockReqList - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F25F0: .word ov00_02327950 - arm_func_end Nhttp_CancelRequestAsync - - arm_func_start Nhttpi_CancelAllRequests -Nhttpi_CancelAllRequests: ; 0x022F25F4 - stmdb sp!, {r3, lr} - bl Nhttpi_LockReqList - ldr r0, _022F2644 ; =ov00_02327950 - ldr r2, [r0] - cmp r2, #0 - beq _022F2638 - ldr r1, [r2, #0xc] - ldr r1, [r1, #4] - cmp r1, #0 - bne _022F2638 - ldr r1, [r2, #0xc] - mov r2, #1 - str r2, [r1, #4] - ldr r1, [r0] - ldr r0, [r1, #0xc] - ldr r1, [r1, #0x10] - bl Nhttpi_SocCancel -_022F2638: - bl Nhttpi_AllFreeReqQueue - bl Nhttpi_UnlockReqList - ldmia sp!, {r3, pc} - .align 2, 0 -_022F2644: .word ov00_02327950 - arm_func_end Nhttpi_CancelAllRequests - - arm_func_start Nhttpi_ResolveHostname -Nhttpi_ResolveHostname: ; 0x022F2648 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - ldr r2, [r5, #0x24] - ldr r1, [r5, #0xc] - mov r0, #0 - ldrsb r4, [r2, r1] - strb r0, [r2, r1] - ldr r0, [r5, #8] - ldr r6, [r5, #0x24] - cmp r0, #0 - movne r7, #8 - moveq r7, #7 - add r1, sp, #0 - add r0, r6, r7 - bl Soc_InetAtoN - cmp r0, #0 - ldrne r0, [sp] - bne _022F26D0 - add r0, r6, r7 - bl Socl_Resolve - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, r0, lsr #0x18 - mov r1, r0, lsr #8 - mov r3, r0, lsl #8 - mov ip, r0, lsl #0x18 - and r2, r2, #0xff - and r0, r1, #0xff00 - and r1, r3, #0xff0000 - orr r0, r2, r0 - and r2, ip, #0xff000000 - orr r0, r1, r0 - orr r0, r2, r0 -_022F26D0: - ldr r2, [r5, #0x24] - ldr r1, [r5, #0xc] - strb r4, [r2, r1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Nhttpi_ResolveHostname - - arm_func_start Nhttp_DestroyResponse -Nhttp_DestroyResponse: ; 0x022F26E0 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - ldr r0, [r4, #0x1c] - cmp r0, #0 - beq _022F2710 - ldr r5, _022F2754 ; =ov00_0232794C -_022F26F8: - ldr r6, [r0] - ldr r1, [r5] - blx r1 - movs r0, r6 - str r6, [r4, #0x1c] - bne _022F26F8 -_022F2710: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _022F2728 - ldr r1, _022F2754 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F2728: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _022F2740 - ldr r1, _022F2754 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F2740: - ldr r1, _022F2754 ; =ov00_0232794C - mov r0, r4 - ldr r1, [r1] - blx r1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F2754: .word ov00_0232794C - arm_func_end Nhttp_DestroyResponse - - arm_func_start Nhttpi_GetHeaderValue -Nhttpi_GetHeaderValue: ; 0x022F2758 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r2 - mov sl, r1 - ldr r2, [r5] - add r3, sp, #4 - mov r1, #0xc - bl Nhttpi_FindNextLineHdrRecvBuf - mov r8, r0 - cmp r8, #0 - ble _022F2858 - mov r6, #0 - add r7, sp, #4 -_022F2790: - ldr r2, [r5] - mov r0, r5 - mov r1, r8 - mov r3, r7 - bl Nhttpi_FindNextLineHdrRecvBuf - ldr r2, [sp, #4] - mov sb, r0 - cmp r2, #0 - ble _022F284C - mov r0, r5 - mov r1, r8 - mov r3, sl - str r6, [sp] - bl Nhttpi_CompareTokenN_HdrRecvBuf - cmp r0, #0 - bne _022F284C - ldr r1, [sp, #4] - ldr r0, [r5] - add r1, r1, #1 - cmp r1, r0 - bge _022F2840 - ldr r2, [r5] - mov r0, r5 - mov r3, #0 - bl Nhttpi_FindNextLineHdrRecvBuf - cmp r0, #0 - ldrle r6, [r5] - ble _022F2814 - cmp r0, #2 - addlt sp, sp, #8 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - sub r6, r0, #2 -_022F2814: - ldr r1, [sp, #4] - mov r0, r5 - mov r2, r6 - add r1, r1, #1 - bl Nhttpi_SkipSpaceHdrRecvBuf - cmp r0, #0 - movlt r0, r6 - str r0, [r4] - add sp, sp, #8 - sub r0, r6, r0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022F2840: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022F284C: - mov r8, sb - cmp sb, #0 - bgt _022F2790 -_022F2858: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end Nhttpi_GetHeaderValue - - arm_func_start Nhttp_GetHeaderField -Nhttp_GetHeaderField: ; 0x022F2864 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #8] - mov r6, r1 - cmp r0, #0 - mov r5, r2 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x14] - cmp r0, #0 - beq _022F28A4 - ldr r1, _022F295C ; =ov00_0232794C - ldr r1, [r1] - blx r1 - mov r0, #0 - str r0, [r7, #0x14] -_022F28A4: - add r2, sp, #0 - mov r0, r7 - mov r1, r6 - bl Nhttpi_GetHeaderValue - movs r4, r0 - bmi _022F2900 - ldr r1, _022F2960 ; =ov00_02327948 - add r0, r4, #1 - ldr r2, [r1] - mov r1, #4 - blx r2 - str r0, [r7, #0x14] - mov r1, #0 - strb r1, [r0, r4] - ldr r1, [r7, #0x14] - ldr r2, [sp] - mov r0, r7 - mov r3, r4 - bl Nhttpi_LoadFromHdrRecvBuf - ldr r1, [r7, #0x14] - mov r0, r4 - str r1, [r5] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F2900: - ldr r0, _022F2964 ; =ov00_0231A620 - mov r1, r6 - bl Nhttpi_Strcmp - cmp r0, #0 - mvnne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _022F2960 ; =ov00_02327948 - mov r0, #4 - ldr r2, [r1] - mov r1, r0 - blx r2 - str r0, [r7, #0x14] - mov r1, #0 - strb r1, [r0, #3] - ldr r1, [r7, #0x14] - mov r0, r7 - mov r2, #9 - mov r3, #3 - bl Nhttpi_LoadFromHdrRecvBuf - ldr r1, [r7, #0x14] - mov r0, #3 - str r1, [r5] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F295C: .word ov00_0232794C -_022F2960: .word ov00_02327948 -_022F2964: .word ov00_0231A620 - arm_func_end Nhttp_GetHeaderField - - arm_func_start Nhttp_GetBodyAll -Nhttp_GetBodyAll: ; 0x022F2968 - ldr r2, [r0, #8] - cmp r2, #0 - ldrne r2, [r0, #4] - cmpne r2, #0 - mvneq r0, #0 - ldrne r2, [r0, #0x18] - strne r2, [r1] - ldrne r0, [r0, #4] - bx lr - arm_func_end Nhttp_GetBodyAll - - arm_func_start SslAuthCallback -SslAuthCallback: ; 0x022F298C - tst r0, #0x8000 - bicne r0, r0, #0x8000 - bx lr - arm_func_end SslAuthCallback - - arm_func_start Nhttpi_SetSslseed -Nhttpi_SetSslseed: ; 0x022F2998 - stmdb sp!, {r3, lr} - ldr r0, _022F29B4 ; =ov00_02328320 - bl OS_GetLowEntropyData - ldr r0, _022F29B4 ; =ov00_02328320 - mov r1, #0x20 - bl Cps_SslAddRandomSeed - ldmia sp!, {r3, pc} - .align 2, 0 -_022F29B4: .word ov00_02328320 - arm_func_end Nhttpi_SetSslseed - - arm_func_start Nhttpi_SocOpen -Nhttpi_SocOpen: ; 0x022F29B8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - movs r4, r0 - bmi _022F2A2C - ldr r0, [r5, #8] - cmp r0, #0 - beq _022F2A2C - bl Nhttpi_SetSslseed - ldr r1, [r5, #0x1c] - ldr r0, [r5, #0x20] - ldr r2, _022F2A34 ; =SslAuthCallback - str r1, [r0, #0x814] - ldr r3, [r5, #0x18] - ldr r1, [r5, #0x20] - mov r0, r4 - str r3, [r1, #0x818] - ldr r1, [r5, #0x20] - str r2, [r1, #0x810] - ldr r1, [r5, #0x20] - bl Socl_EnableSsl - cmp r0, #0 - bge _022F2A2C - mov r0, r4 - bl CloseVeneer - mvn r4, #0 -_022F2A2C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F2A34: .word SslAuthCallback - arm_func_end Nhttpi_SocOpen - - arm_func_start Nhttpi_SocClose -Nhttpi_SocClose: ; 0x022F2A38 - ldr ip, _022F2A44 ; =CloseVeneer - mov r0, r1 - bx ip - .align 2, 0 -_022F2A44: .word CloseVeneer - arm_func_end Nhttpi_SocClose - - arm_func_start Nhttpi_SocCloseWait -Nhttpi_SocCloseWait: ; 0x022F2A48 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r0, r6 - bl CloseVeneer - mvn r4, #0x19 - cmp r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - mov r5, #0x1f4 -_022F2A68: - mov r0, r5 - bl OS_Sleep - mov r0, r6 - bl CloseVeneer - cmp r0, r4 - beq _022F2A68 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Nhttpi_SocCloseWait - - arm_func_start Nhttpi_SocConnect -Nhttpi_SocConnect: ; 0x022F2A84 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - mov ip, r3, asr #8 - mov r4, r0 - mov r5, #8 - mov lr, #2 - mov r3, r3, lsl #8 - mov r0, r1 - and ip, ip, #0xff - and r1, r3, #0xff00 - orr r3, ip, r1 - add r1, sp, #0 - strb r5, [sp] - strb lr, [sp, #1] - strh r3, [sp, #2] - str r2, [sp, #4] - bl connect - cmp r0, #0 - bge _022F2AF0 - ldr r0, [r4, #4] - add sp, sp, #8 - cmp r0, #0 - ldrne r0, _022F2AFC ; =0xFFFFFC16 - mvneq r0, #0x3e8 - ldmia sp!, {r3, r4, r5, pc} -_022F2AF0: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F2AFC: .word 0xFFFFFC16 - arm_func_end Nhttpi_SocConnect - - arm_func_start Nhttpi_SocRecv -Nhttpi_SocRecv: ; 0x022F2B00 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - mov r2, r3 - ldr r3, [sp, #8] - bl recv - cmp r0, #0 - ldmgeia sp!, {r4, pc} - ldr r1, [r4, #4] - cmp r1, #0 - ldrne r0, _022F2B48 ; =0xFFFFFC16 - ldmneia sp!, {r4, pc} - mvn r1, #0x37 - cmp r0, r1 - moveq r0, #0 - mvnne r0, #0x3e8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F2B48: .word 0xFFFFFC16 - arm_func_end Nhttpi_SocRecv - - arm_func_start Nhttpi_SocSend -Nhttpi_SocSend: ; 0x022F2B4C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - mov r2, r3 - ldr r3, [sp, #8] - bl send - cmp r0, #0 - ldmgeia sp!, {r4, pc} - ldr r1, [r4, #4] - cmp r1, #0 - ldrne r0, _022F2B94 ; =0xFFFFFC16 - ldmneia sp!, {r4, pc} - mvn r1, #0x37 - cmp r0, r1 - moveq r0, #0 - mvnne r0, #0x3e8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F2B94: .word 0xFFFFFC16 - arm_func_end Nhttpi_SocSend - - arm_func_start Nhttpi_SocCancel -Nhttpi_SocCancel: ; 0x022F2B98 - stmdb sp!, {r3, lr} - cmp r1, #0 - ldmltia sp!, {r3, pc} - mov r0, r1 - mov r1, #2 - bl Soc_Shutdown - ldmia sp!, {r3, pc} - arm_func_end Nhttpi_SocCancel - - arm_func_start Nhttpi_Strcmp -Nhttpi_Strcmp: ; 0x022F2BB4 - ldr ip, _022F2BBC ; =Std_CompareString__020852CC - bx ip - .align 2, 0 -_022F2BBC: .word Std_CompareString__020852CC - arm_func_end Nhttpi_Strcmp - - arm_func_start Nhttpi_Strnicmp -Nhttpi_Strnicmp: ; 0x022F2BC0 - cmp r2, #0 - ble _022F2C20 -_022F2BC8: - ldrsb ip, [r0], #1 - ldrsb r3, [r1], #1 - cmp ip, #0 - cmpne r3, #0 - bne _022F2BEC - cmp ip, #0 - cmpeq r3, #0 - moveq r2, #0 - b _022F2C20 -_022F2BEC: - cmp r3, #0x41 - blt _022F2BFC - cmp r3, #0x5a - addle r3, r3, #0x20 -_022F2BFC: - cmp ip, #0x41 - blt _022F2C0C - cmp ip, #0x5a - addle ip, ip, #0x20 -_022F2C0C: - cmp ip, r3 - bne _022F2C20 - sub r2, r2, #1 - cmp r2, #0 - bgt _022F2BC8 -_022F2C20: - mov r0, r2 - bx lr - arm_func_end Nhttpi_Strnicmp - - arm_func_start Nhttpi_Strlen -Nhttpi_Strlen: ; 0x022F2C28 - ldr ip, _022F2C30 ; =Std_GetStringLength - bx ip - .align 2, 0 -_022F2C30: .word Std_GetStringLength - arm_func_end Nhttpi_Strlen - - arm_func_start Nhttpi_Memclr -Nhttpi_Memclr: ; 0x022F2C34 - ldr ip, _022F2C44 ; =MI_CpuFill8 - mov r2, r1 - mov r1, #0 - bx ip - .align 2, 0 -_022F2C44: .word MI_CpuFill8 - arm_func_end Nhttpi_Memclr - - arm_func_start Nhttpi_Memcpy -Nhttpi_Memcpy: ; 0x022F2C48 - ldr ip, _022F2C5C ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx ip - .align 2, 0 -_022F2C5C: .word MI_CpuCopy8 - arm_func_end Nhttpi_Memcpy - - arm_func_start SaveBuf -SaveBuf: ; 0x022F2C60 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r5, [sp, #0x28] - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - cmp r5, #0 - ble _022F2D08 - ldr r4, _022F2D10 ; =ov00_02328388 - mov fp, #0 -_022F2C88: - ldr r0, [sl, #4] - cmp r0, #0 - mvnne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r8] - mov r1, r7 - rsb r6, r0, #0x400 - cmp r5, r6 - movle r6, r5 - mov r2, r6 - add r0, r4, r0 - bl Nhttpi_Memcpy - ldr r0, [r8] - add r7, r7, r6 - add r0, r0, r6 - str r0, [r8] - cmp r0, #0x400 - sub r5, r5, r6 - bne _022F2D00 - mov r0, sl - mov r1, sb - mov r2, r4 - mov r3, #0x400 - str fp, [sp] - bl Nhttpi_SocSend - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r8] - sub r0, r1, r0 - str r0, [r8] -_022F2D00: - cmp r5, #0 - bgt _022F2C88 -_022F2D08: - ldr r0, [sp, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F2D10: .word ov00_02328388 - arm_func_end SaveBuf - - arm_func_start SkipLineBuf -SkipLineBuf: ; 0x022F2D14 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r8, #0 - mov sl, r0 - mov sb, r1 - mov r7, r8 - strb r8, [sp, #4] - strb r8, [sp, #5] - mov r6, r8 - mov r5, #1 - add r4, sp, #4 - b _022F2D70 -_022F2D44: - mov r0, sl - mov r1, sb - mov r3, r5 - add r2, r4, r2 - str r6, [sp] - bl Nhttpi_SocRecv - cmp r0, #0 - addle sp, sp, #8 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r8, r8, r0 - add r7, r7, #1 -_022F2D70: - and r2, r7, #1 - ldrsb r0, [r4, r2] - cmp r0, #0xd - bne _022F2D44 - sub r0, r7, #1 - and r0, r0, #1 - ldrsb r0, [r4, r0] - cmp r0, #0xa - bne _022F2D44 - mov r0, r8 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end SkipLineBuf - - arm_func_start FreeSslConnection -FreeSslConnection: ; 0x022F2DA0 - stmdb sp!, {r4, lr} - movs r4, r0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x800] - cmp r0, #0 - beq _022F2DC4 - ldr r1, _022F2DD8 ; =ov00_0232794C - ldr r1, [r1] - blx r1 -_022F2DC4: - ldr r1, _022F2DD8 ; =ov00_0232794C - mov r0, r4 - ldr r1, [r1] - blx r1 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F2DD8: .word ov00_0232794C - arm_func_end FreeSslConnection - - arm_func_start PutSocketToCloseQue -PutSocketToCloseQue: ; 0x022F2DDC - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _022F2E70 ; =ov00_02328340 - mov r6, r0 - ldmia r2, {r0, r2} - add r0, r0, #1 - and r4, r0, #7 - mov r5, r1 - cmp r4, r2 - bne _022F2E38 - ldr r1, _022F2E74 ; =ov00_02328348 - mov r0, #0 - ldr r1, [r1, r2, lsl #3] - bl Nhttpi_SocCloseWait - ldr r0, _022F2E70 ; =ov00_02328340 - ldr r1, _022F2E78 ; =ov00_0232834C - ldr r0, [r0, #4] - ldr r0, [r1, r0, lsl #3] - bl FreeSslConnection - ldr r0, _022F2E70 ; =ov00_02328340 - ldr r1, [r0, #4] - add r1, r1, #1 - and r1, r1, #7 - str r1, [r0, #4] -_022F2E38: - ldr r0, [r5] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _022F2E70 ; =ov00_02328340 - ldr r1, _022F2E74 ; =ov00_02328348 - ldr ip, [r0] - ldr r2, _022F2E78 ; =ov00_0232834C - str r6, [r1, ip, lsl #3] - ldr r3, [r5] - mov r1, #0 - str r3, [r2, ip, lsl #3] - str r1, [r5] - str r4, [r0] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F2E70: .word ov00_02328340 -_022F2E74: .word ov00_02328348 -_022F2E78: .word ov00_0232834C - arm_func_end PutSocketToCloseQue - - arm_func_start ClearCloseQue -ClearCloseQue: ; 0x022F2E7C - stmdb sp!, {r4, r5, r6, lr} - ldr r6, _022F2ED4 ; =ov00_02328340 - ldmia r6, {r0, r1} - cmp r0, r1 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, _022F2ED8 ; =ov00_02328348 - mov r5, #0 -_022F2E98: - ldr r1, [r4, r1, lsl #3] - mov r0, r5 - bl Nhttpi_SocCloseWait - ldr r0, [r6, #4] - add r0, r4, r0, lsl #3 - ldr r0, [r0, #4] - bl FreeSslConnection - ldr r0, [r6, #4] - add r0, r0, #1 - and r1, r0, #7 - str r1, [r6, #4] - ldr r0, [r6] - cmp r0, r1 - bne _022F2E98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F2ED4: .word ov00_02328340 -_022F2ED8: .word ov00_02328348 - arm_func_end ClearCloseQue - - arm_func_start Nhttpi_CommThreadProc -Nhttpi_CommThreadProc: ; 0x022F2EDC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - ldr r2, _022F3DFC ; =ov00_02328340 - mov r0, #0 - str r0, [sp, #0x3c] - str r0, [r2] - ldr r1, _022F3E00 ; =ov00_02327954 - mvn r6, #0 - str r0, [r2, #4] - ldr r1, [r1] - str r0, [sp, #0x10] - str r6, [sp, #0x18] - str r6, [sp, #0x14] - str r0, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - bne _022F41AC -_022F2F20: - bl Nhttpi_LockReqList - bl Nhttpi_GetReqFromReqQueue - cmp r0, #0 - mvneq r4, #0 - beq _022F2F44 - ldr r4, [r0, #8] - ldr r8, [r0, #0xc] - ldr r1, _022F3E04 ; =ov00_02327950 - str r0, [r1] -_022F2F44: - bl Nhttpi_UnlockReqList - cmp r4, #0 - bge _022F2F58 - bl Nhttpi_IdleCommThread - b _022F419C -_022F2F58: - ldr r0, [r8, #4] - ldr sb, [r8, #0x30] - cmp r0, #0 - bne _022F40CC - mov r0, r8 - bl Nhttpi_ResolveHostname - str r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #4 - streq r0, [sp, #4] - beq _022F40CC - mov r1, r0 - ldr r0, [sp, #0x18] - mov r2, #0 - cmp r1, r0 - ldreq r1, [r8, #0x28] - ldreq r0, [sp, #0x14] - add r5, sp, #0x38 - cmpeq r1, r0 - ldreq r1, [r8, #8] - ldreq r0, [sp, #0xc] - add r4, sp, #0x40 - cmpeq r1, r0 - ldr r0, [r8, #0x28] - moveq r2, #1 - str r0, [sp, #0x14] - ldr r0, [r8, #8] - str r0, [sp, #0xc] - ldr r0, [sp, #0x1c] - str r0, [sp, #0x18] - ldr r0, [sp, #8] - and r0, r0, r2 - str r0, [sp, #8] - mvn r0, #0 - str r0, [sp, #0x20] -_022F2FE4: - mov r0, #0 - cmp r6, #0 - str r0, [sp, #4] - blt _022F3034 - mov r0, #9 - strh r0, [sp, #0x2c] - ldr r2, _022F3E08 ; =0x0000CC8D - add r0, sp, #0x28 - mov r1, #1 - mov r3, #0 - str r6, [sp, #0x28] - bl Soc_Poll - cmp r0, #0 - movle r0, #0 - strle r0, [sp, #8] - ble _022F3034 - ldrsh r0, [sp, #0x2e] - tst r0, #0xe0 - movne r0, #0 - strne r0, [sp, #8] -_022F3034: - ldr r0, [sp, #8] - cmp r0, #0 - bne _022F30FC - cmp r6, #0 - blt _022F307C - mov r0, r8 - mov r1, r6 - bl Nhttpi_SocClose - cmp r0, #0 - movlt r0, #0xa - strlt r0, [sp, #4] - mov r0, r6 - add r1, sp, #0x3c - bl PutSocketToCloseQue - ldr r0, [sp, #4] - ldr r6, [sp, #0x20] - cmp r0, #0 - bne _022F40CC -_022F307C: - mov r0, r8 - bl Nhttpi_SocOpen - movs r6, r0 - movmi r0, #3 - strmi r0, [sp, #4] - bmi _022F40CC - ldr r0, [r8, #8] - cmp r0, #0 - beq _022F30B0 - ldr r0, [r8, #0x20] - str r0, [sp, #0x3c] - mov r0, #0 - str r0, [r8, #0x20] -_022F30B0: - bl Nhttpi_LockReqList - ldr r0, _022F3E04 ; =ov00_02327950 - ldr r0, [r0] - str r6, [r0, #0x10] - bl Nhttpi_UnlockReqList - ldr r0, [r8, #4] - cmp r0, #0 - bne _022F40CC - ldr r2, [sp, #0x1c] - ldr r3, [r8, #0x28] - mov r0, r8 - mov r1, r6 - bl Nhttpi_SocConnect - cmp r0, #0 - movge r0, #1 - strge r0, [sp, #8] - movlt r0, #0 - strlt r0, [sp, #8] - b _022F3130 -_022F30FC: - ldr r0, [r8, #8] - cmp r0, #0 - beq _022F3118 - ldr r0, [r8, #0x20] - bl FreeSslConnection - mov r0, #0 - str r0, [r8, #0x20] -_022F3118: - bl Nhttpi_SetSslseed - bl Nhttpi_LockReqList - ldr r0, _022F3E04 ; =ov00_02327950 - ldr r0, [r0] - str r6, [r0, #0x10] - bl Nhttpi_UnlockReqList -_022F3130: - ldr r0, [r8, #4] - cmp r0, #0 - bne _022F40CC - ldr r0, [sp, #8] - cmp r0, #0 - moveq r0, #5 - streq r0, [sp, #4] - beq _022F40CC - mov r0, #0 - str r0, [sp, #0x38] - str r0, [sp, #8] - ldr r0, [r8, #0x24] - bl Nhttpi_Strlen - mov r7, r0 - mov r0, #0xa - str r0, [sp, #4] - ldr r0, [r8, #0x40] - cmp r0, #0 - beq _022F3190 - cmp r0, #1 - beq _022F31BC - cmp r0, #2 - beq _022F31E8 - b _022F3210 -_022F3190: - mov r0, #4 - str r0, [sp] - ldr r3, _022F3E0C ; =ov00_0231A630 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - b _022F3210 -_022F31BC: - mov r0, #5 - str r0, [sp] - ldr r3, _022F3E10 ; =ov00_0231A638 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - b _022F3210 -_022F31E8: - mov r0, #5 - str r0, [sp] - ldr r3, _022F3E14 ; =ov00_0231A640 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F3210: - ldr sl, [r8, #0x10] - cmp r7, sl - ble _022F3250 - subs r0, r7, sl - beq _022F3278 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r8, #0x24] - add r3, r3, sl - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - b _022F3278 -_022F3250: - mov r0, #1 - str r0, [sp] - ldr r3, _022F3E18 ; =ov00_0231A648 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F3278: - mov r0, #0xb - str r0, [sp] - ldr r3, _022F3E1C ; =ov00_0231A64C - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r8, #8] - ldr r3, _022F3E20 ; =ov00_0231A658 - cmp r0, #0 - movne r0, #8 - moveq r0, #7 - str r0, [sp, #0x34] - mov r0, #6 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r7, [sp, #0x34] - ldr r0, [r8, #0xc] - subs r0, r0, r7 - beq _022F3314 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r8, #0x24] - add r3, r3, r7 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F3314: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - add r0, r8, #0x34 - bl Nhttpi_GetHdrFromList - movs r7, r0 - beq _022F3424 -_022F334C: - ldr r0, [r7, #8] - bl Nhttpi_Strlen - cmp r0, #0 - beq _022F3380 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #8] - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F3380: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E28 ; =ov00_0231A664 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r7, #0xc] - bl Nhttpi_Strlen - cmp r0, #0 - beq _022F33DC - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #0xc] - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F33DC: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r1, _022F3E2C ; =ov00_0232794C - mov r0, r7 - ldr r1, [r1] - blx r1 - add r0, r8, #0x34 - bl Nhttpi_GetHdrFromList - movs r7, r0 - bne _022F334C -_022F3424: - ldr r0, [r8, #0x40] - cmp r0, #1 - bne _022F3644 - ldr sl, [r8, #0x38] - mov r7, #0 - mov r0, r7 - str r0, [sp, #0x10] - cmp sl, #0 - mov r1, sl - beq _022F3474 -_022F344C: - ldr r0, [r1, #0x14] - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x10] - bne _022F3474 - ldr r0, [sl] - cmp r1, r0 - ldrne r1, [r1, #4] - cmpne r1, #0 - bne _022F344C -_022F3474: - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _022F3550 - cmp sl, #0 - beq _022F34D0 -_022F3488: - ldr r0, [sl, #8] - add r7, r7, #0x16 - bl Nhttpi_Strlen - add r0, r0, #0x29 - add r7, r7, r0 - ldr r0, [sl, #0x14] - ldr r1, [sl, #0x10] - cmp r0, #0 - ldr r0, [r8, #0x38] - addne r7, r7, #0x4b - ldr r0, [r0] - add r2, r7, #2 - cmp sl, r0 - ldrne sl, [sl, #4] - add r1, r2, r1 - add r7, r1, #2 - cmpne sl, #0 - bne _022F3488 -_022F34D0: - mov r0, #0x2c - str r0, [sp] - ldr r3, _022F3E30 ; =ov00_0231A668 - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r7, r7, #0x18 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - mov r0, #0x12 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r3, r8, #0x46 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - b _022F35B8 -_022F3550: - cmp sl, #0 - beq _022F3590 -_022F3558: - ldr r0, [sl, #8] - bl Nhttpi_GetUrlEncodedSize - add r0, r7, r0 - add r7, r0, #1 - ldr r0, [sl, #0xc] - bl Nhttpi_GetUrlEncodedSize - add r7, r7, r0 - ldr r0, [r8, #0x38] - ldr r0, [r0] - cmp sl, r0 - ldrne sl, [sl, #4] - addne r7, r7, #1 - cmpne sl, #0 - bne _022F3558 -_022F3590: - mov r0, #0x31 - str r0, [sp] - ldr r3, _022F3E34 ; =ov00_0231A698 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F35B8: - mov r0, #0x10 - str r0, [sp] - ldr r3, _022F3E38 ; =ov00_0231A6CC - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - mov r1, r7 - mov r0, r4 - bl Nhttpi_IntToStr - str r0, [sp, #0x34] - cmp r0, #0 - beq _022F361C - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F361C: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F3644: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r8, #0x40] - cmp r0, #1 - bne _022F39C4 - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _022F3884 - ldr r7, [r8, #0x38] - cmp r7, #0 - beq _022F3830 -_022F3690: - mov r0, #0x14 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r3, r8, #0x44 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - mov r0, #0x26 - str r0, [sp] - ldr r3, _022F3E3C ; =ov00_023183BC - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r7, #8] - bl Nhttpi_Strlen - cmp r0, #0 - beq _022F373C - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #8] - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F373C: - mov r0, #3 - str r0, [sp] - ldr r3, _022F3E40 ; =ov00_0231A6E0 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r7, #0x14] - cmp r0, #0 - beq _022F3798 - mov r0, #0x4b - str r0, [sp] - ldr r3, _022F3E44 ; =ov00_023183E4 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F3798: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r7, #0x10] - cmp r0, #0 - beq _022F37F0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #0xc] - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F37F0: - mov r0, #2 - str r0, [sp] - ldr r3, _022F3E24 ; =ov00_0231A660 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r0, [r8, #0x38] - ldr r0, [r0] - cmp r7, r0 - ldrne r7, [r7, #4] - cmpne r7, #0 - bne _022F3690 -_022F3830: - mov r0, #0x14 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r3, r8, #0x44 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - mov r0, #4 - str r0, [sp] - ldr r3, _022F3E48 ; =ov00_0231A6E4 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - b _022F39C4 -_022F3884: - ldr sl, [r8, #0x38] - cmp sl, #0 - beq _022F39C4 -_022F3890: - ldr r1, [sl, #8] - mov r7, #0 - ldrsb r0, [r1] - cmp r0, #0 - beq _022F38F4 -_022F38A4: - ldrsb r1, [r1, r7] - mov r0, r4 - bl Nhttpi_EncodeUrlChar - str r0, [sp, #0x34] - cmp r0, #0 - beq _022F38E0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F38E0: - add r7, r7, #1 - ldr r1, [sl, #8] - ldrsb r0, [r1, r7] - cmp r0, #0 - bne _022F38A4 -_022F38F4: - mov r0, #1 - str r0, [sp] - ldr r3, _022F3E4C ; =ov00_0231A6EC - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr r1, [sl, #0xc] - mov r7, #0 - ldrsb r0, [r1] - cmp r0, #0 - beq _022F3980 -_022F3930: - ldrsb r1, [r1, r7] - mov r0, r4 - bl Nhttpi_EncodeUrlChar - str r0, [sp, #0x34] - cmp r0, #0 - beq _022F396C - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F396C: - add r7, r7, #1 - ldr r1, [sl, #0xc] - ldrsb r0, [r1, r7] - cmp r0, #0 - bne _022F3930 -_022F3980: - ldr r0, [r8, #0x38] - ldr r0, [r0] - cmp sl, r0 - beq _022F39C4 - mov r0, #1 - str r0, [sp] - ldr r3, _022F3E50 ; =ov00_0231A6F0 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl SaveBuf - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 - ldr sl, [sl, #4] - cmp sl, #0 - bne _022F3890 -_022F39C4: - ldr r3, [sp, #0x38] - cmp r3, #0 - ble _022F39F4 - mov r0, #0 - str r0, [sp] - ldr r2, _022F3E54 ; =ov00_02328388 - mov r0, r8 - mov r1, r6 - bl Nhttpi_SocSend - cmp r0, #0 - blt _022F40CC - beq _022F2FE4 -_022F39F4: - mov r0, #0 - str r0, [sb] - strb r0, [sp, #0x40] - strb r0, [sp, #0x41] - mov r1, #7 - strb r0, [sp, #0x42] - strb r0, [sp, #0x43] - ldr r5, [sb, #0x1c] - str r1, [sp, #4] - str r0, [sp, #0x38] - add sl, sb, #0x20 - add r4, sp, #0x40 -_022F3A24: - ldr r1, [r8, #4] - cmp r1, #0 - bne _022F40CC - cmp r0, #0x400 - bge _022F3A6C - add r2, sl, r0 - mov r0, #0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r3, #1 - bl Nhttpi_SocRecv - ldr r3, [sp, #0x38] - add r1, sb, r3 - ldrsb r2, [r1, #0x20] - and r1, r3, #3 - strb r2, [r4, r1] - b _022F3B00 -_022F3A6C: - ldr r1, _022F3E58 ; =0x000001FF - ands r7, r0, r1 - bne _022F3ACC - cmp r5, #0 - mov r0, #0x204 - mov r1, #4 - beq _022F3AA0 - ldr r2, _022F3E5C ; =ov00_02327948 - ldr r2, [r2] - blx r2 - str r0, [r5] - mov r5, r0 - b _022F3AB4 -_022F3AA0: - ldr r2, _022F3E5C ; =ov00_02327948 - ldr r2, [r2] - blx r2 - mov r5, r0 - str r5, [sb, #0x1c] -_022F3AB4: - cmp r5, #0 - moveq r0, #1 - streq r0, [sp, #4] - beq _022F40CC - mov r0, #0 - str r0, [r5] -_022F3ACC: - mov r0, #0 - add r2, r5, #4 - str r0, [sp] - mov r0, r8 - mov r1, r6 - add r2, r2, r7 - mov r3, #1 - bl Nhttpi_SocRecv - add r1, r5, r7 - ldrsb r2, [r1, #4] - ldr r1, [sp, #0x38] - and r1, r1, #3 - strb r2, [r4, r1] -_022F3B00: - cmp r0, #0 - movle r0, #0xa - strle r0, [sp, #4] - ble _022F40CC - ldr r1, [sp, #0x38] - add r0, r1, r0 - str r0, [sp, #0x38] - sub r1, r0, #4 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xd - bne _022F3A24 - sub r1, r0, #3 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xa - bne _022F3A24 - sub r1, r0, #2 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xd - bne _022F3A24 - sub r1, r0, #1 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xa - bne _022F3A24 - str r0, [sb] - ldr r0, [sb] - cmp r0, #0 - beq _022F40CC - ldr r1, _022F3E54 ; =ov00_02328388 - mov r0, sb - mov r2, #0 - mov r3, #0xe - bl Nhttpi_LoadFromHdrRecvBuf - cmp r0, #0 - beq _022F40CC - ldr r0, _022F3E54 ; =ov00_02328388 - ldr r1, _022F3E60 ; =ov00_0231A6F4 - mov r2, #5 - bl Nhttpi_Strnicmp - cmp r0, #0 - ldreq r0, _022F3E54 ; =ov00_02328388 - ldreqsb r0, [r0, #8] - cmpeq r0, #0x20 - bne _022F40CC - ldr r0, _022F3E64 ; =ov00_02328391 - mov r1, #3 - bl Nhttpi_StrToInt - cmp r0, #0 - blt _022F40CC - ldr r2, [sb] - add r3, sp, #0x30 - mov r0, sb - mov r1, #0xc - bl Nhttpi_FindNextLineHdrRecvBuf - cmp r0, #0 - blt _022F40CC - ldr r1, _022F3E68 ; =ov00_0231A6FC - add r2, sp, #0x34 - mov r0, sb - bl Nhttpi_GetHeaderValue - movs r5, r0 - moveq r0, #0 - streq r0, [sp, #4] - beq _022F40CC - cmp r5, #0x400 - bgt _022F40CC - cmp r5, #0 - ble _022F3C54 - ldr r2, [sp, #0x34] - ldr r1, _022F3E54 ; =ov00_02328388 - mov r0, sb - mov r3, r5 - bl Nhttpi_LoadFromHdrRecvBuf - cmp r0, #0 - beq _022F40CC - ldr r0, _022F3E54 ; =ov00_02328388 - mov r1, r5 - bl Nhttpi_StrToInt - movs r5, r0 - bmi _022F40CC - str r5, [r8, #0x14] - b _022F3C5C -_022F3C54: - mvn r0, #0 - str r0, [r8, #0x14] -_022F3C5C: - ldr r1, _022F3E6C ; =ov00_0231A70C - add r2, sp, #0x34 - mov r0, sb - bl Nhttpi_GetHeaderValue - str r0, [sp, #8] - cmp r0, #0 - beq _022F40CC - bge _022F3CBC - ldr r0, _022F3E54 ; =ov00_02328388 - mov r2, #0 - ldrsb r1, [r0, #5] - ldrsb r3, [r0, #7] - add r0, sp, #0x24 - strb r1, [sp, #0x24] - mov r1, #2 - strb r3, [sp, #0x25] - strb r2, [sp, #0x26] - bl Nhttpi_StrToInt - cmp r0, #0xb - movge r0, #1 - strge r0, [sp, #8] - movlt r0, #0 - strlt r0, [sp, #8] - b _022F3CFC -_022F3CBC: - cmp r0, #0x400 - mov r0, #0 - strgt r0, [sp, #8] - bgt _022F3CFC - ldr r1, [sp, #0x34] - ldr r2, [sp, #8] - str r0, [sp] - ldr r3, _022F3E70 ; =ov00_0231A718 - mov r0, sb - add r2, r1, r2 - bl Nhttpi_CompareTokenN_HdrRecvBuf - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #8] - movne r0, #0 - strne r0, [sp, #8] -_022F3CFC: - ldr r1, _022F3E74 ; =ov00_0231A724 - add r2, sp, #0x34 - mov r0, sb - bl Nhttpi_GetHeaderValue - cmp r0, #0 - beq _022F40CC - cmp r0, #0x400 - movgt r1, #0 - bgt _022F3D58 - cmp r0, #0 - ble _022F3D54 - ldr r1, [sp, #0x34] - ldr r3, _022F3E78 ; =ov00_0231A738 - add r2, r1, r0 - mov r0, #0x3b - str r0, [sp] - mov r0, sb - bl Nhttpi_CompareTokenN_HdrRecvBuf - cmp r0, #0 - moveq r1, #1 - movne r1, #0 - b _022F3D58 -_022F3D54: - mov r1, #0 -_022F3D58: - ldr r0, [r8, #0x40] - cmp r0, #2 - beq _022F40CC - cmp r5, #0 - blt _022F3E7C - mov r4, #0 - b _022F3DA8 -_022F3D74: - str r4, [sp] - ldr r2, [sb, #4] - mov r0, r8 - mov r1, r6 - mov r3, r5 - bl Nhttpi_RecvBufN - cmp r0, #0 - blt _022F40CC - beq _022F3DC4 - ldr r1, [sb, #4] - sub r5, r5, r0 - add r0, r1, r0 - str r0, [sb, #4] -_022F3DA8: - cmp r5, #0 - ble _022F3DC4 - ldr r1, [sb, #4] - mov r0, sb - bl Nhttpi_IsRecvBufFull - cmp r0, #0 - beq _022F3D74 -_022F3DC4: - cmp r5, #0 - beq _022F3DF0 - ldr r1, [sb, #4] - mov r0, sb - bl Nhttpi_IsRecvBufFull - cmp r0, #0 - movne r0, #6 - strne r0, [sp, #4] - moveq r0, #0xa - streq r0, [sp, #4] - b _022F40CC -_022F3DF0: - mov r0, #0 - str r0, [sp, #4] - b _022F40CC - .align 2, 0 -_022F3DFC: .word ov00_02328340 -_022F3E00: .word ov00_02327954 -_022F3E04: .word ov00_02327950 -_022F3E08: .word 0x0000CC8D -_022F3E0C: .word ov00_0231A630 -_022F3E10: .word ov00_0231A638 -_022F3E14: .word ov00_0231A640 -_022F3E18: .word ov00_0231A648 -_022F3E1C: .word ov00_0231A64C -_022F3E20: .word ov00_0231A658 -_022F3E24: .word ov00_0231A660 -_022F3E28: .word ov00_0231A664 -_022F3E2C: .word ov00_0232794C -_022F3E30: .word ov00_0231A668 -_022F3E34: .word ov00_0231A698 -_022F3E38: .word ov00_0231A6CC -_022F3E3C: .word ov00_023183BC -_022F3E40: .word ov00_0231A6E0 -_022F3E44: .word ov00_023183E4 -_022F3E48: .word ov00_0231A6E4 -_022F3E4C: .word ov00_0231A6EC -_022F3E50: .word ov00_0231A6F0 -_022F3E54: .word ov00_02328388 -_022F3E58: .word 0x000001FF -_022F3E5C: .word ov00_02327948 -_022F3E60: .word ov00_0231A6F4 -_022F3E64: .word ov00_02328391 -_022F3E68: .word ov00_0231A6FC -_022F3E6C: .word ov00_0231A70C -_022F3E70: .word ov00_0231A718 -_022F3E74: .word ov00_0231A724 -_022F3E78: .word ov00_0231A738 -_022F3E7C: - mov r0, #0xa - cmp r1, #0 - str r0, [sp, #4] - beq _022F4020 - mov r7, #0 - ldr r5, _022F3E54 ; =ov00_02328388 - add r4, sp, #0x40 - mov sl, r7 -_022F3E9C: - mov r0, #0 - strb r0, [sp, #0x40] - strb r0, [sp, #0x41] - str r0, [sp, #0x38] -_022F3EAC: - str r7, [sp] - ldr r2, [sp, #0x38] - mov r0, r8 - mov r1, r6 - mov r3, #1 - add r2, r5, r2 - bl Nhttpi_SocRecv - cmp r0, #0 - blt _022F40CC - ldr r1, [sp, #0x38] - ldrsb r0, [r5, r1] - and r2, r1, #1 - strb r0, [r4, r2] - cmp r0, #0x3b - beq _022F3F04 - cmp r0, #0xa - bne _022F3F4C - sub r2, r1, #1 - and r2, r2, #1 - ldrsb r2, [r4, r2] - cmp r2, #0xd - bne _022F3F4C -_022F3F04: - cmp r0, #0xa - subeq r0, r1, #1 - streq r0, [sp, #0x34] - beq _022F3F2C - str r1, [sp, #0x34] - mov r0, r8 - mov r1, r6 - bl SkipLineBuf - cmp r0, #0 - ble _022F40CC -_022F3F2C: - ldr r1, [sp, #0x34] - cmp r1, #0 - beq _022F40CC - mov r0, r5 - bl Nhttpi_StrToHex - movs fp, r0 - bmi _022F40CC - b _022F3F60 -_022F3F4C: - ldr r0, [sp, #0x38] - add r0, r0, #1 - str r0, [sp, #0x38] - cmp r0, #0x400 - blt _022F3EAC -_022F3F60: - ldr r0, [sp, #0x38] - cmp r0, #0x400 - moveq r0, #7 - streq r0, [sp, #4] - beq _022F40CC - cmp fp, #0 - ble _022F4008 - ble _022F3E9C -_022F3F80: - str sl, [sp] - mov r0, r8 - mov r1, r6 - ldr r2, [sb, #4] - mov r3, fp - bl Nhttpi_RecvBufN - cmp r0, #0 - ble _022F40CC - ldr r1, [sb, #4] - subs fp, fp, r0 - add r0, r1, r0 - str r0, [sb, #4] - bne _022F3FFC - mov r0, #0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, #1 - bl Nhttpi_SocRecv - cmp r0, #0 - ble _022F40CC - mov r0, #0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, #1 - bl Nhttpi_SocRecv - cmp r0, #0 - ble _022F40CC -_022F3FFC: - cmp fp, #0 - bgt _022F3F80 - b _022F3E9C -_022F4008: - mov r0, r8 - mov r1, r6 - bl SkipLineBuf - mov r0, #0 - str r0, [sp, #4] - b _022F40CC -_022F4020: - ldr r1, [sb, #4] - mov r0, sb - bl Nhttpi_IsRecvBufFull - cmp r0, #0 - bne _022F40CC - mov r5, #0 - ldr r4, _022F3E54 ; =ov00_02328388 - mov sl, #1 - mov r7, r5 -_022F4044: - mov r0, r8 - mov r1, r6 - ldr r2, [sb, #4] - mov r3, r7 - bl Nhttpi_RecvBuf - cmp r0, #0 - blt _022F40CC - moveq r0, #0 - streq r0, [sp, #4] - beq _022F40CC - ldr r1, [sb, #4] - add r0, r1, r0 - str r0, [sb, #4] - mov r0, sb - ldr r1, [sb, #4] - bl Nhttpi_IsRecvBufFull - cmp r0, #0 - beq _022F40B8 - str r5, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r4 - mov r3, sl - bl Nhttpi_SocRecv - cmp r0, #0 - blt _022F40CC - movne r0, #6 - strne r0, [sp, #4] - bne _022F40CC -_022F40B8: - mov r0, sb - ldr r1, [sb, #4] - bl Nhttpi_IsRecvBufFull - cmp r0, #0 - beq _022F4044 -_022F40CC: - bl Nhttpi_LockReqList - ldr r0, _022F3E04 ; =ov00_02327950 - ldr r1, _022F3E2C ; =ov00_0232794C - ldr r0, [r0] - ldr r1, [r1] - blx r1 - ldr r0, _022F3E04 ; =ov00_02327950 - mov r1, #0 - str r1, [r0] - bl Nhttpi_UnlockReqList - ldr r0, [r8, #4] - cmp r0, #0 - movne r0, #8 - strne r0, [sp, #4] - cmp r6, #0 - blt _022F4154 - ldr r0, [sp, #8] - cmp r0, #0 - beq _022F4124 - ldr r0, [sp, #4] - cmp r0, #0 - beq _022F4154 -_022F4124: - mov r0, r8 - mov r1, r6 - bl Nhttpi_SocClose - cmp r0, #0 - movlt r0, #0xa - strlt r0, [sp, #4] - add r1, sp, #0x3c - mov r0, r6 - bl PutSocketToCloseQue - mov r0, #0 - mvn r6, #0 - str r0, [sp, #8] -_022F4154: - ldr r0, [sp, #4] - cmp r0, #0 - moveq r0, #1 - streq r0, [sb, #8] - beq _022F417C - mov r0, #0 - str r0, [sb, #8] - ldr r1, _022F41D8 ; =ov00_02327944 - ldr r0, [sp, #4] - str r0, [r1] -_022F417C: - ldr r4, [r8, #0x2c] - mov r0, r8 - ldr r5, [r8, #0x3c] - bl Nhttpi_DestroyRequestObject - ldr r0, [sp, #4] - mov r1, sb - mov r2, r4 - blx r5 -_022F419C: - ldr r0, _022F3E00 ; =ov00_02327954 - ldr r0, [r0] - cmp r0, #0 - beq _022F2F20 -_022F41AC: - cmp r6, #0 - blt _022F41CC - mov r0, r8 - mov r1, r6 - bl Nhttpi_SocClose - add r1, sp, #0x3c - mov r0, r6 - bl PutSocketToCloseQue -_022F41CC: - bl ClearCloseQue - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F41D8: .word ov00_02327944 - arm_func_end Nhttpi_CommThreadProc - - arm_func_start Nhttpi_GetUrlEncodedSize -Nhttpi_GetUrlEncodedSize: ; 0x022F41DC - ldrsb r2, [r0], #1 - mov r1, #0 - cmp r2, #0 - beq _022F423C -_022F41EC: - cmp r2, #0x30 - blt _022F41FC - cmp r2, #0x39 - ble _022F4224 -_022F41FC: - cmp r2, #0x41 - blt _022F420C - cmp r2, #0x5a - ble _022F4224 -_022F420C: - cmp r2, #0x61 - blt _022F421C - cmp r2, #0x7a - ble _022F4224 -_022F421C: - cmp r2, #0x20 - bne _022F422C -_022F4224: - add r1, r1, #1 - b _022F4230 -_022F422C: - add r1, r1, #3 -_022F4230: - ldrsb r2, [r0], #1 - cmp r2, #0 - bne _022F41EC -_022F423C: - mov r0, r1 - bx lr - arm_func_end Nhttpi_GetUrlEncodedSize - - arm_func_start Nhttpi_EncodeUrlChar -Nhttpi_EncodeUrlChar: ; 0x022F4244 - cmp r1, #0x20 - bne _022F425C - mov r1, #0x2b - strb r1, [r0] - mov r0, #1 - bx lr -_022F425C: - cmp r1, #0x30 - blt _022F426C - cmp r1, #0x39 - ble _022F428C -_022F426C: - cmp r1, #0x41 - blt _022F427C - cmp r1, #0x5a - ble _022F428C -_022F427C: - cmp r1, #0x61 - blt _022F4298 - cmp r1, #0x7a - bgt _022F4298 -_022F428C: - strb r1, [r0] - mov r0, #1 - bx lr -_022F4298: - mov r2, r1, asr #4 - and r3, r2, #0xf - mov r2, #0x25 - strb r2, [r0] - cmp r3, #0xa - addlt r2, r3, #0x30 - addge r2, r3, #0x37 - and r1, r1, #0xf - cmp r1, #0xa - addlt r1, r1, #0x30 - strb r2, [r0, #1] - addge r1, r1, #0x37 - strb r1, [r0, #2] - mov r0, #3 - bx lr - arm_func_end Nhttpi_EncodeUrlChar - - arm_func_start Nhttpi_StrToHex -Nhttpi_StrToHex: ; 0x022F42D4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - cmp r1, #8 - mvngt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - bne _022F42F8 - ldrsb r2, [r0] - cmp r2, #0x37 - mvngt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} -_022F42F8: - mov r5, #0 - mov r6, r5 - mov r7, r5 - cmp r1, #0 - ble _022F43B4 - mov lr, #1 - mov r3, lr - mov ip, lr - mov r4, r5 -_022F431C: - ldrsb r8, [r0, r5] - mov r2, r4 - cmp r8, #0x41 - blt _022F4334 - cmp r8, #0x5a - movle r2, lr -_022F4334: - cmp r2, #0 - addne r8, r8, #0x20 - mov r2, r8, lsl #0x18 - mov r2, r2, asr #0x18 - cmp r2, #0x30 - blt _022F4364 - cmp r2, #0x39 - bgt _022F4364 - add r2, r2, r6, lsl #4 - mov r7, ip - sub r6, r2, #0x30 - b _022F43A8 -_022F4364: - cmp r2, #0x61 - blt _022F4384 - cmp r2, #0x66 - bgt _022F4384 - add r2, r2, r6, lsl #4 - mov r7, r3 - sub r6, r2, #0x57 - b _022F43A8 -_022F4384: - cmp r7, #0 - beq _022F4398 - cmp r2, #0x20 - cmpne r2, #0 - beq _022F43B4 -_022F4398: - cmp r7, #0 - cmpeq r2, #0x20 - mvnne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_022F43A8: - add r5, r5, #1 - cmp r5, r1 - blt _022F431C -_022F43B4: - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end Nhttpi_StrToHex - - arm_func_start Nhttpi_StrToInt -Nhttpi_StrToInt: ; 0x022F43BC - stmdb sp!, {r3, r4, r5, lr} - cmp r1, #0xa - mvngt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} - mov lr, #0 - mov r4, lr - mov r3, lr - cmp r1, #0 - ble _022F444C - mov ip, #1 - mov r2, #0xa -_022F43E8: - cmp r3, #0 - ldrsb r5, [r0, lr] - beq _022F4400 - cmp r5, #0x20 - cmpne r5, #0 - beq _022F444C -_022F4400: - cmp r3, #0 - cmpeq r5, #0x20 - beq _022F4440 - cmp r5, #0x30 - blt _022F441C - cmp r5, #0x39 - ble _022F4424 -_022F441C: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022F4424: - mla r3, r4, r2, r5 - mov r5, r4 - sub r4, r3, #0x30 - cmp r5, r4 - mov r3, ip - mvngt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} -_022F4440: - add lr, lr, #1 - cmp lr, r1 - blt _022F43E8 -_022F444C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Nhttpi_StrToInt - - arm_func_start Nhttpi_IntToStr -Nhttpi_IntToStr: ; 0x022F4454 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - ldr r6, _022F450C ; =ov00_02318430 - add r4, sp, #0 - mov sl, r0 - mov sb, r1 - ldmia r6!, {r0, r1, r2, r3} - mov r5, r4 - stmia r4!, {r0, r1, r2, r3} - ldmia r6!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r6] - mov r7, #0 - str r0, [r4] - mov r6, r7 - mov r1, r7 - mov fp, #1 - mov r4, #0x30 -_022F449C: - ldr r8, [r5, r6, lsl #2] - cmp sb, r8 - blo _022F44D4 - mov r0, sb - mov r1, r8 - bl _u32_div_f - mul r2, r0, r8 - cmp sl, #0 - addne r0, r0, #0x30 - strneb r0, [sl, r7] - mov r1, fp - sub sb, sb, r2 - add r7, r7, #1 - b _022F44E8 -_022F44D4: - cmp r1, #0 - beq _022F44E8 - cmp sl, #0 - strneb r4, [sl, r7] - add r7, r7, #1 -_022F44E8: - add r6, r6, #1 - cmp r6, #9 - blt _022F449C - cmp sl, #0 - addne r0, sb, #0x30 - strneb r0, [sl, r7] - add r0, r7, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F450C: .word ov00_02318430 - arm_func_end Nhttpi_IntToStr - - arm_func_start Nhttpi_CompareToken -Nhttpi_CompareToken: ; 0x022F4510 - stmdb sp!, {r4, r5, r6, lr} - mov ip, #1 - mov r3, #0 - mov r2, ip - mov lr, r3 - b _022F4540 -_022F4528: - cmp r5, #0 - cmpne r5, #0x20 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, r0, #1 - add r1, r1, #1 -_022F4540: - ldrsb r6, [r1] - mov r4, lr - cmp r6, #0x41 - blt _022F4558 - cmp r6, #0x5a - movle r4, ip -_022F4558: - ldrsb r5, [r0] - cmp r4, #0 - addne r6, r6, #0x20 - mov r4, r3 - cmp r5, #0x41 - blt _022F4578 - cmp r5, #0x5a - movle r4, r2 -_022F4578: - cmp r4, #0 - addne r4, r5, #0x20 - moveq r4, r5 - cmp r4, r6 - beq _022F4528 - mvn r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Nhttpi_CompareToken - - arm_func_start Nhttpi_StrToNum -Nhttpi_StrToNum: ; 0x022F4594 - stmdb sp!, {r3, lr} - mov ip, #0 - cmp r1, #0 - mov lr, ip - sub r1, r1, #1 - beq _022F45F4 - mov r2, #0xa -_022F45B0: - ldrsb r3, [r0] - cmp r3, #0x20 - beq _022F45E4 - cmp r3, #0x30 - blt _022F45E4 - cmp r3, #0x39 - bgt _022F45E4 - mla r3, lr, r2, r3 - add ip, ip, #1 - cmp ip, #9 - sub lr, r3, #0x30 - mvngt r0, #0 - ldmgtia sp!, {r3, pc} -_022F45E4: - cmp r1, #0 - add r0, r0, #1 - sub r1, r1, #1 - bne _022F45B0 -_022F45F4: - cmp ip, #0 - mvneq lr, #0 - mov r0, lr - ldmia sp!, {r3, pc} - arm_func_end Nhttpi_StrToNum - - arm_func_start Nhttpi_MemFind -Nhttpi_MemFind: ; 0x022F4604 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - cmp r1, r3 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - sub r1, r1, r3 - add r8, r1, #1 - cmp r8, #0 - mov r4, #0 - ble _022F4680 - ldrsb r7, [r2] - mov lr, #1 -_022F4630: - ldrsb r1, [r0, r4] - cmp r7, r1 - bne _022F4674 - mov r5, lr - cmp r3, #1 - add r6, r0, r4 - ble _022F4668 -_022F464C: - ldrsb ip, [r6, r5] - ldrsb r1, [r2, r5] - cmp ip, r1 - bne _022F4668 - add r5, r5, #1 - cmp r5, r3 - blt _022F464C -_022F4668: - cmp r5, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_022F4674: - add r4, r4, #1 - cmp r4, r8 - blt _022F4630 -_022F4680: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end Nhttpi_MemFind - - arm_func_start FreeElement_Gsi -FreeElement_Gsi: ; 0x022F4688 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r2, [r4, #0x10] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - bl ArrayNth_Gsi - ldr r1, [r4, #0x10] - blx r1 - ldmia sp!, {r4, pc} - arm_func_end FreeElement_Gsi - - arm_func_start ArrayGrow_Gsi -ArrayGrow_Gsi: ; 0x022F46AC - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #4] - ldr r0, [r4, #0xc] - add r2, r1, r0 - str r2, [r4, #4] - ldr r0, [r4, #8] - mul r1, r2, r0 - ldr r0, [r4, #0x14] - bl gsirealloc - str r0, [r4, #0x14] - ldmia sp!, {r4, pc} - arm_func_end ArrayGrow_Gsi - - arm_func_start SetElement_Gsi -SetElement_Gsi: ; 0x022F46DC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r1, r2 - bl ArrayNth_Gsi - ldr r2, [r5, #8] - mov r1, r4 - bl memcpy - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SetElement_Gsi - - arm_func_start ArrayNew_Gsi -ArrayNew_Gsi: ; 0x022F4700 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0x18 - mov r5, r2 - bl gsimalloc - mov r4, r0 - cmp r6, #0 - moveq r6, #8 - mov r0, #0 - stmia r4, {r0, r6, r7} - str r6, [r4, #0xc] - str r5, [r4, #0x10] - ldr r1, [r4, #4] - cmp r1, #0 - beq _022F474C - ldr r0, [r4, #8] - mul r0, r1, r0 - bl gsimalloc -_022F474C: - str r0, [r4, #0x14] - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ArrayNew_Gsi - - arm_func_start ArrayFree_Gsi -ArrayFree_Gsi: ; 0x022F4758 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - mov r4, #0 - cmp r0, #0 - ble _022F478C -_022F4770: - mov r0, r5 - mov r1, r4 - bl FreeElement_Gsi - ldr r0, [r5] - add r4, r4, #1 - cmp r4, r0 - blt _022F4770 -_022F478C: - ldr r0, [r5, #0x14] - bl gsifree - mov r0, r5 - bl gsifree - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ArrayFree_Gsi - - arm_func_start ArrayLength_Gsi -ArrayLength_Gsi: ; 0x022F47A0 - ldr r0, [r0] - bx lr - arm_func_end ArrayLength_Gsi - - arm_func_start ArrayNth_Gsi -ArrayNth_Gsi: ; 0x022F47A8 - cmp r1, #0 - blt _022F47BC - ldr r2, [r0] - cmp r1, r2 - blt _022F47C4 -_022F47BC: - mov r0, #0 - bx lr -_022F47C4: - ldr r3, [r0, #0x14] - ldr r2, [r0, #8] - mla r0, r2, r1, r3 - bx lr - arm_func_end ArrayNth_Gsi - - arm_func_start ArrayAppend_Gsi -ArrayAppend_Gsi: ; 0x022F47D4 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r2, [r0] - bl ArrayInsertAt_Gsi - ldmia sp!, {r3, pc} - arm_func_end ArrayAppend_Gsi - - arm_func_start ArrayInsertAt_Gsi -ArrayInsertAt_Gsi: ; 0x022F47EC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldr r7, [r6] - ldr r3, [r6, #4] - mov r5, r1 - mov r4, r2 - cmp r7, r3 - bne _022F4810 - bl ArrayGrow_Gsi -_022F4810: - ldr r0, [r6] - add r0, r0, #1 - sub r8, r0, #1 - str r0, [r6] - cmp r4, r8 - bge _022F485C - mov r0, r6 - add r1, r4, #1 - bl ArrayNth_Gsi - mov r7, r0 - mov r0, r6 - mov r1, r4 - bl ArrayNth_Gsi - mov r1, r0 - ldr r3, [r6, #8] - sub r0, r8, r4 - mul r2, r3, r0 - mov r0, r7 - bl memmove -_022F485C: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl SetElement_Gsi - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ArrayInsertAt_Gsi - - arm_func_start ArrayInsertSorted_Gsi -ArrayInsertSorted_Gsi: ; 0x022F4870 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - add r3, sp, #8 - stmia sp, {r2, r3} - mov r5, r0 - mov r4, r1 - ldr r1, [r5, #0x14] - ldr r2, [r5] - ldr r3, [r5, #8] - mov r0, r4 - bl mybsearch_gsi - ldr r2, [r5, #0x14] - ldr r1, [r5, #8] - sub r0, r0, r2 - bl _s32_div_f - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl ArrayInsertAt_Gsi - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - arm_func_end ArrayInsertSorted_Gsi - - arm_func_start ArrayRemoveAt_Gsi -ArrayRemoveAt_Gsi: ; 0x022F48C4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r2, [r4] - mov r7, r1 - sub r6, r2, #1 - cmp r7, r6 - bge _022F490C - bl ArrayNth_Gsi - mov r5, r0 - mov r0, r4 - add r1, r7, #1 - bl ArrayNth_Gsi - mov r1, r0 - ldr r3, [r4, #8] - sub r0, r6, r7 - mul r2, r3, r0 - mov r0, r5 - bl memmove -_022F490C: - ldr r0, [r4] - sub r0, r0, #1 - str r0, [r4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ArrayRemoveAt_Gsi - - arm_func_start ArrayDeleteAt_Gsi -ArrayDeleteAt_Gsi: ; 0x022F491C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl FreeElement_Gsi - mov r0, r5 - mov r1, r4 - bl ArrayRemoveAt_Gsi - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ArrayDeleteAt_Gsi - - arm_func_start ArrayReplaceAt_Gsi -ArrayReplaceAt_Gsi: ; 0x022F493C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r5, r1 - mov r6, r0 - mov r1, r4 - bl FreeElement_Gsi - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl SetElement_Gsi - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ArrayReplaceAt_Gsi - - arm_func_start ArraySearch_Gsi -ArraySearch_Gsi: ; 0x022F4968 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov ip, #1 - movs r7, r0 - str ip, [sp, #8] - ldrne r8, [r7] - mov r6, r1 - cmpne r8, #0 - mov r5, r2 - mov r4, r3 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x28] - cmp r1, #0 - mov r1, r4 - beq _022F49D4 - bl ArrayNth_Gsi - add r1, sp, #8 - str r5, [sp] - str r1, [sp, #4] - mov r1, r0 - ldr r3, [r7, #8] - mov r0, r6 - sub r2, r8, r4 - bl mybsearch_gsi - b _022F49F0 -_022F49D4: - bl ArrayNth_Gsi - str r5, [sp] - mov r1, r0 - ldr r3, [r7, #8] - mov r0, r6 - sub r2, r8, r4 - bl mylsearch_gsi -_022F49F0: - cmp r0, #0 - ldrne r1, [sp, #8] - cmpne r1, #0 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, [r7, #0x14] - ldr r1, [r7, #8] - sub r0, r0, r2 - bl _s32_div_f - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ArraySearch_Gsi - - arm_func_start ArrayMap_Gsi -ArrayMap_Gsi: ; 0x022F4A20 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7] - mov r6, r1 - mov r5, r2 - subs r4, r0, #1 - ldmmiia sp!, {r3, r4, r5, r6, r7, pc} -_022F4A3C: - mov r0, r7 - mov r1, r4 - bl ArrayNth_Gsi - mov r1, r5 - blx r6 - subs r4, r4, #1 - bpl _022F4A3C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ArrayMap_Gsi - - arm_func_start ArrayMapBackwards_Gsi -ArrayMapBackwards_Gsi: ; 0x022F4A5C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r0, [r8] - mov r7, r1 - mov r6, r2 - subs r5, r0, #1 - bmi _022F4AA4 -_022F4A78: - mov r0, r8 - mov r1, r5 - bl ArrayNth_Gsi - mov r1, r6 - mov r4, r0 - blx r7 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - subs r5, r5, #1 - bpl _022F4A78 -_022F4AA4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ArrayMapBackwards_Gsi - - arm_func_start ArrayClear_Gsi -ArrayClear_Gsi: ; 0x022F4AAC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ArrayLength_Gsi - subs r4, r0, #1 - ldmmiia sp!, {r3, r4, r5, pc} -_022F4AC0: - mov r0, r5 - mov r1, r4 - bl ArrayDeleteAt_Gsi - subs r4, r4, #1 - bpl _022F4AC0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ArrayClear_Gsi - - arm_func_start mylsearch_gsi -mylsearch_gsi: ; 0x022F4AD8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r8, r2 - mov sl, r0 - mov sb, r1 - mov r7, r3 - cmp r8, #0 - ldr r6, [sp, #0x20] - mov r4, #0 - ble _022F4B28 - mov r5, r4 -_022F4B00: - mov r0, sl - add r1, sb, r5 - blx r6 - cmp r0, #0 - mlaeq r0, r7, r4, sb - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r4, r4, #1 - cmp r4, r8 - add r5, r5, r7 - blt _022F4B00 -_022F4B28: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end mylsearch_gsi - - arm_func_start mybsearch_gsi -mybsearch_gsi: ; 0x022F4B30 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r7, [sp, #0x2c] - mov r4, #0 - mov fp, r0 - mov sl, r1 - mov sb, r3 - str r4, [r7] - subs r5, r2, #1 - ldr r8, [sp, #0x28] - bmi _022F4B8C -_022F4B58: - add r0, r4, r5 - mov r6, r0, asr #1 - mla r0, r6, sb, sl - mov r1, fp - blx r8 - cmp r0, #0 - moveq r1, #1 - streq r1, [r7] - cmp r0, #0 - addlt r4, r6, #1 - subge r5, r6, #1 - cmp r4, r5 - ble _022F4B58 -_022F4B8C: - mla r0, r4, sb, sl - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end mybsearch_gsi - - arm_func_start TableNew_Gsi -TableNew_Gsi: ; 0x022F4B94 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr ip, [sp, #0x10] - str r3, [sp] - mov r3, r2 - mov r2, #4 - str ip, [sp, #4] - bl TableNew2_Gsi - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end TableNew_Gsi - - arm_func_start TableNew2_Gsi -TableNew2_Gsi: ; 0x022F4BBC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - mov sb, r1 - mov r0, #0x14 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x24] - bl gsimalloc - mov r4, r0 - mov r0, sb, lsl #2 - bl gsimalloc - str r0, [r4] - cmp sb, #0 - mov r5, #0 - ble _022F4C1C -_022F4BF8: - mov r0, sl - mov r1, r8 - mov r2, r6 - bl ArrayNew_Gsi - ldr r1, [r4] - str r0, [r1, r5, lsl #2] - add r5, r5, #1 - cmp r5, sb - blt _022F4BF8 -_022F4C1C: - str sb, [r4, #4] - ldr r0, [sp, #0x20] - str r6, [r4, #8] - str r0, [r4, #0x10] - mov r0, r4 - str r7, [r4, #0xc] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end TableNew2_Gsi - - arm_func_start TableFree_Gsi -TableFree_Gsi: ; 0x022F4C38 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #4] - mov r4, #0 - cmp r0, #0 - ble _022F4C70 -_022F4C54: - ldr r0, [r5] - ldr r0, [r0, r4, lsl #2] - bl ArrayFree_Gsi - ldr r0, [r5, #4] - add r4, r4, #1 - cmp r4, r0 - blt _022F4C54 -_022F4C70: - ldr r0, [r5] - bl gsifree - mov r0, r5 - bl gsifree - ldmia sp!, {r3, r4, r5, pc} - arm_func_end TableFree_Gsi - - arm_func_start TableCount_Gsi -TableCount_Gsi: ; 0x022F4C84 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, #0 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #4] - mov r4, r5 - cmp r0, #0 - ble _022F4CC8 -_022F4CA8: - ldr r0, [r6] - ldr r0, [r0, r4, lsl #2] - bl ArrayLength_Gsi - ldr r1, [r6, #4] - add r4, r4, #1 - cmp r4, r1 - add r5, r5, r0 - blt _022F4CA8 -_022F4CC8: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end TableCount_Gsi - - arm_func_start TableEnter_Gsi -TableEnter_Gsi: ; 0x022F4CD0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r5, r1 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - mov r0, r5 - blx r2 - mov r3, #0 - str r3, [sp] - ldr r1, [r6] - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - ldr r2, [r6, #0x10] - mov r1, r5 - bl ArraySearch_Gsi - mov r2, r0 - mvn r0, #0 - cmp r2, r0 - ldr r0, [r6] - mov r1, r5 - bne _022F4D40 - ldr r0, [r0, r4, lsl #2] - bl ArrayAppend_Gsi - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} -_022F4D40: - ldr r0, [r0, r4, lsl #2] - bl ArrayReplaceAt_Gsi - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end TableEnter_Gsi - - arm_func_start TableRemove_Gsi -TableRemove_Gsi: ; 0x022F4D50 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r5, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - mov r0, r5 - blx r2 - mov r3, #0 - str r3, [sp] - ldr r1, [r6] - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - ldr r2, [r6, #0x10] - mov r1, r5 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6] - ldr r0, [r0, r4, lsl #2] - bl ArrayDeleteAt_Gsi - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end TableRemove_Gsi - - arm_func_start TableLookup_Gsi -TableLookup_Gsi: ; 0x022F4DCC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r5, r1 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - mov r0, r5 - blx r2 - mov r3, #0 - str r3, [sp] - ldr r1, [r6] - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - ldr r2, [r6, #0x10] - mov r1, r5 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6] - ldr r0, [r0, r4, lsl #2] - bl ArrayNth_Gsi - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end TableLookup_Gsi - - arm_func_start TableMap_Gsi -TableMap_Gsi: ; 0x022F4E44 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #4] - mov r6, r1 - mov r5, r2 - mov r4, #0 - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_022F4E64: - ldr r0, [r7] - mov r1, r6 - ldr r0, [r0, r4, lsl #2] - mov r2, r5 - bl ArrayMap_Gsi - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _022F4E64 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end TableMap_Gsi - - arm_func_start TableMapSafe2_Gsi -TableMapSafe2_Gsi: ; 0x022F4E8C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #4] - mov r6, r1 - mov r5, r2 - cmp r0, #0 - mov r4, #0 - ble _022F4ED8 -_022F4EAC: - ldr r0, [r7] - mov r1, r6 - ldr r0, [r0, r4, lsl #2] - mov r2, r5 - bl ArrayMapBackwards_Gsi - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _022F4EAC -_022F4ED8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end TableMapSafe2_Gsi - - arm_func_start MD5Print_Gsi -MD5Print_Gsi: ; 0x022F4EE0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, #0 - ldr ip, _022F4F38 ; =ov00_02318454 - mov r5, r4 -_022F4EF0: - ldrb r2, [r0, r4] - add lr, r1, r5 - mov r2, r2, lsr #4 - ldrsb r2, [ip, r2] - strb r2, [r1, r5] - ldrb r2, [r0, r4] - add r4, r4, #1 - cmp r4, #0x10 - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #28 - add r2, r3, r2, ror #28 - ldrsb r2, [ip, r2] - add r5, r5, #2 - strb r2, [lr, #1] - blo _022F4EF0 - mov r0, #0 - strb r0, [r1, #0x20] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F4F38: .word ov00_02318454 - arm_func_end MD5Print_Gsi - - arm_func_start MD5Digest_Gsi -MD5Digest_Gsi: ; 0x022F4F3C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x68 - mov r6, r0 - add r0, sp, #0x10 - mov r5, r1 - mov r4, r2 - bl MD5Init_Ghi - add r0, sp, #0x10 - mov r1, r6 - mov r2, r5 - bl MD5Update_Ghi - add r0, sp, #0 - add r1, sp, #0x10 - bl MD5Final_Ghi - add r0, sp, #0 - mov r1, r4 - bl MD5Print_Gsi - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MD5Digest_Gsi - - arm_func_start SocketCastError -SocketCastError: ; 0x022F4F88 - cmp r0, #0 - ldrlt r2, _022F4F9C ; =ov00_02328788 - strlt r0, [r2, #4] - movlt r0, r1 - bx lr - .align 2, 0 -_022F4F9C: .word ov00_02328788 - arm_func_end SocketCastError - - arm_func_start SocketCreate -SocketCreate: ; 0x022F4FA0 - stmdb sp!, {r3, lr} - bl socket - mvn r1, #0 - bl SocketCastError - ldmia sp!, {r3, pc} - arm_func_end SocketCreate - - arm_func_start SocketClose -SocketClose: ; 0x022F4FB4 - stmdb sp!, {r3, lr} - bl CloseVeneer - mvn r1, #0 - bl SocketCastError - ldmia sp!, {r3, pc} - arm_func_end SocketClose - - arm_func_start shutdown_gsi -shutdown_gsi: ; 0x022F4FC8 - stmdb sp!, {r3, lr} - bl Soc_Shutdown - mvn r1, #0 - bl SocketCastError - ldmia sp!, {r3, pc} - arm_func_end shutdown_gsi - - arm_func_start SocketBind -SocketBind: ; 0x022F4FDC - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldrh r3, [r1, #2] - cmp r3, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r4, sp, #0 - mov lr, #4 -_022F5000: - ldrb ip, [r1] - ldrb r3, [r1, #1] - add r1, r1, #2 - subs lr, lr, #1 - strb ip, [r4] - strb r3, [r4, #1] - add r4, r4, #2 - bne _022F5000 - add r1, sp, #0 - strb r2, [sp] - bl bind - mvn r1, #0 - bl SocketCastError - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end SocketBind - - arm_func_start SocketConnect -SocketConnect: ; 0x022F503C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - add r4, sp, #0 - mov lr, #4 -_022F504C: - ldrb ip, [r1] - ldrb r3, [r1, #1] - add r1, r1, #2 - subs lr, lr, #1 - strb ip, [r4] - strb r3, [r4, #1] - add r4, r4, #2 - bne _022F504C - add r1, sp, #0 - strb r2, [sp] - bl connect - mvn r1, #0 - bl SocketCastError - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end SocketConnect - - arm_func_start SocketRecv -SocketRecv: ; 0x022F5088 - stmdb sp!, {r3, lr} - bl recv - mvn r1, #0 - bl SocketCastError - ldmia sp!, {r3, pc} - arm_func_end SocketRecv - - arm_func_start SocketRecvFrom -SocketRecvFrom: ; 0x022F509C - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [sp, #0x14] - ldr r5, [sp, #0x10] - ldr ip, [r4] - strb ip, [r5] - str r5, [sp] - bl recvfrom - ldrb r2, [r5] - mvn r1, #0 - str r2, [r4] - bl SocketCastError - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SocketRecvFrom - - arm_func_start SocketSend -SocketSend: ; 0x022F50CC - stmdb sp!, {r3, lr} - bl send - mvn r1, #0 - bl SocketCastError - ldmia sp!, {r3, pc} - arm_func_end SocketSend - - arm_func_start SocketSendTo -SocketSendTo: ; 0x022F50E0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr r5, [sp, #0x20] - add r6, sp, #4 - mov r4, #4 -_022F50F4: - ldrb lr, [r5] - ldrb ip, [r5, #1] - add r5, r5, #2 - subs r4, r4, #1 - strb lr, [r6] - strb ip, [r6, #1] - add r6, r6, #2 - bne _022F50F4 - ldr lr, [sp, #0x24] - add ip, sp, #4 - strb lr, [sp, #4] - str ip, [sp] - bl sendto - mvn r1, #0 - bl SocketCastError - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end SocketSendTo - - arm_func_start setsockopt_gsi -setsockopt_gsi: ; 0x022F5138 - ldr ip, _022F5148 ; =SocketCastError - mov r0, #0 - sub r1, r0, #1 - bx ip - .align 2, 0 -_022F5148: .word SocketCastError - arm_func_end setsockopt_gsi - - arm_func_start getsockname_gsi -getsockname_gsi: ; 0x022F514C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r2 - ldr r2, [r4] - mov r5, r1 - strb r2, [r5] - bl Soc_GetSockName - ldrb r2, [r5] - mvn r1, #0 - str r2, [r4] - bl SocketCastError - ldmia sp!, {r3, r4, r5, pc} - arm_func_end getsockname_gsi - - arm_func_start inet_addr_gsi -inet_addr_gsi: ; 0x022F5178 - stmdb sp!, {r3, lr} - add r1, sp, #0 - bl Soc_InetAtoN - cmp r0, #0 - mvneq r0, #0 - ldrne r0, [sp] - ldmia sp!, {r3, pc} - arm_func_end inet_addr_gsi - - arm_func_start GoaGetLastError -GoaGetLastError: ; 0x022F5194 - ldr r0, _022F51A0 ; =ov00_02328788 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_022F51A0: .word ov00_02328788 - arm_func_end GoaGetLastError - - arm_func_start GsiSocketSelect -GsiSocketSelect: ; 0x022F51A4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - movs r6, r1 - mov r1, #0 - strh r1, [sp, #4] - str r0, [sp] - ldrnesh r0, [sp, #4] - mov r5, r2 - mov r2, #0 - orrne r0, r0, #1 - strneh r0, [sp, #4] - cmp r5, #0 - ldrnesh r0, [sp, #4] - mov r4, r3 - mov r3, r2 - orrne r0, r0, #8 - strneh r0, [sp, #4] - add r0, sp, #0 - mov r1, #1 - strh r2, [sp, #6] - bl Soc_Poll - cmp r0, #0 - addlt sp, sp, #8 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - cmp r6, #0 - beq _022F5234 - cmp r0, #0 - ble _022F522C - ldrsh r1, [sp, #6] - tst r1, #0x41 - movne r1, #1 - strne r1, [r6] - bne _022F5234 -_022F522C: - mov r1, #0 - str r1, [r6] -_022F5234: - cmp r5, #0 - beq _022F5260 - cmp r0, #0 - ble _022F5258 - ldrsh r1, [sp, #6] - tst r1, #8 - movne r1, #1 - strne r1, [r5] - bne _022F5260 -_022F5258: - mov r1, #0 - str r1, [r5] -_022F5260: - cmp r4, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, #0 - ble _022F528C - ldrsh r1, [sp, #6] - tst r1, #0x20 - movne r1, #1 - addne sp, sp, #8 - strne r1, [r4] - ldmneia sp!, {r4, r5, r6, pc} -_022F528C: - mov r1, #0 - str r1, [r4] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GsiSocketSelect - - arm_func_start SocketSetBlocking -SocketSetBlocking: ; 0x022F529C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #3 - mov r2, #0 - mov r5, r0 - bl fcntl - cmp r4, #0 - bicne r2, r0, #4 - orreq r2, r0, #4 - mov r0, r5 - mov r1, #4 - bl fcntl - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SocketSetBlocking - - arm_func_start SetReceiveBufferSize -SetReceiveBufferSize: ; 0x022F52DC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - ldr r1, _022F5318 ; =0x0000FFFF - mov ip, #4 - ldr r2, _022F531C ; =0x00001002 - add r3, sp, #0xc - str ip, [sp] - bl setsockopt_gsi - mvn r1, #0 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022F5318: .word 0x0000FFFF -_022F531C: .word 0x00001002 - arm_func_end SetReceiveBufferSize - - arm_func_start CanReceiveOnSocket -CanReceiveOnSocket: ; 0x022F5320 - stmdb sp!, {r3, lr} - mov r2, #0 - add r1, sp, #0 - mov r3, r2 - str r2, [sp] - bl GsiSocketSelect - cmp r0, #1 - ldreq r0, [sp] - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end CanReceiveOnSocket - - arm_func_start CanSendOnSocket -CanSendOnSocket: ; 0x022F5348 - stmdb sp!, {r3, lr} - mov r1, #0 - add r2, sp, #0 - mov r3, r1 - str r1, [sp] - bl GsiSocketSelect - cmp r0, #1 - ldreq r0, [sp] - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end CanSendOnSocket - - arm_func_start getlocalhost_gsi -getlocalhost_gsi: ; 0x022F5370 - stmdb sp!, {r3, lr} - ldr r2, _022F53E4 ; =ov00_0231A7B0 - ldr r0, _022F53E8 ; =ov00_02328788 - ldr r1, _022F53EC ; =ov00_02328788 - str r2, [r0, #0x18] - str r1, [r0, #0x1c] - mov r1, #2 - strh r1, [r0, #0x20] - mov r2, #0 - ldr r1, _022F53F0 ; =ov00_023287C4 - strh r2, [r0, #0x22] - str r1, [r0, #0x24] - str r2, [r0, #0x28] - bl Socl_GetHostID - ldr r1, _022F53F4 ; =ov00_023287B0 - bl Soc_U32to4U8 - ldr r1, _022F53E8 ; =ov00_02328788 - ldr r0, [r1, #0x28] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r2, _022F53F4 ; =ov00_023287B0 - mov r0, #4 - str r2, [r1, #0x3c] - strh r0, [r1, #0x22] - mov r2, #0 - ldr r0, _022F53F8 ; =ov00_023287A0 - str r2, [r1, #0x40] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F53E4: .word ov00_0231A7B0 -_022F53E8: .word ov00_02328788 -_022F53EC: .word ov00_02328788 -_022F53F0: .word ov00_023287C4 -_022F53F4: .word ov00_023287B0 -_022F53F8: .word ov00_023287A0 - arm_func_end getlocalhost_gsi - - arm_func_start IsPrivateIP -IsPrivateIP: ; 0x022F53FC - ldr r3, [r0] - mov r1, r3, lsr #0x18 - mov r0, r3, lsr #8 - mov r2, r3, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r3, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r1, r1, r0 - mov r0, r1, lsr #0x18 - and r2, r0, #0xff - mov r0, r1, lsr #0x10 - and r0, r0, #0xff - cmp r2, #0xa - moveq r0, #1 - bxeq lr - cmp r2, #0xac - bne _022F5464 - cmp r0, #0x10 - blt _022F5464 - cmp r0, #0x1f - movle r0, #1 - bxle lr -_022F5464: - cmp r2, #0xc0 - cmpeq r0, #0xa8 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end IsPrivateIP - - arm_func_start time_gsi -time_gsi: ; 0x022F5478 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_GetTick - mov r1, r1, lsl #6 - orr r1, r1, r0, lsr #26 - ldr r2, _022F54A8 ; =0x01FF6210 - mov r0, r0, lsl #6 - mov r3, #0 - bl _ll_udiv - cmp r4, #0 - strne r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022F54A8: .word 0x01FF6210 - arm_func_end time_gsi - - arm_func_start GsiStartResolvingHostname -GsiStartResolvingHostname: ; 0x022F54AC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl Soc_GetHostByName - movs r4, r0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #8 - bl gsimalloc - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #0xc] - ldr r1, [r1] - ldr r1, [r1] - str r1, [r0, #4] - str r0, [r5] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GsiStartResolvingHostname - - arm_func_start GsiCancelResolvingHostname -GsiCancelResolvingHostname: ; 0x022F54F4 - ldr ip, _022F54FC ; =gsifree - bx ip - .align 2, 0 -_022F54FC: .word gsifree - arm_func_end GsiCancelResolvingHostname - - arm_func_start GsiGetResolvedIP -GsiGetResolvedIP: ; 0x022F5500 - stmdb sp!, {r4, lr} - ldr r4, [r0, #4] - bl gsifree - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end GsiGetResolvedIP - - arm_func_start goastrdup -goastrdup: ; 0x022F5514 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl strlen - add r0, r0, #1 - bl gsimalloc - movs r4, r0 - beq _022F5540 - mov r1, r5 - bl strcpy -_022F5540: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end goastrdup - - arm_func_start strlwr -strlwr: ; 0x022F5548 - ldrsb r3, [r0] - mov r2, r0 - cmp r3, #0 - beq _022F5580 - ldr r1, _022F5588 ; =_020AECB0 -_022F555C: - cmp r3, #0 - blt _022F5570 - cmp r3, #0x80 - bge _022F5570 - ldrb r3, [r1, r3] -_022F5570: - strb r3, [r0] - ldrsb r3, [r0, #1]! - cmp r3, #0 - bne _022F555C -_022F5580: - mov r0, r2 - bx lr - .align 2, 0 -_022F5588: .word _020AECB0 - arm_func_end strlwr - - arm_func_start SocketStartUp_Ghi -SocketStartUp_Ghi: ; 0x022F558C - bx lr - arm_func_end SocketStartUp_Ghi - - arm_func_start SocketShutDown_Gsi -SocketShutDown_Gsi: ; 0x022F5590 - bx lr - arm_func_end SocketShutDown_Gsi - - arm_func_start current_time_gsi -current_time_gsi: ; 0x022F5594 - stmdb sp!, {r3, lr} - bl OS_GetTick - mov r1, r1, lsl #6 - orr r1, r1, r0, lsr #26 - ldr r2, _022F55B8 ; =0x000082EA - mov r0, r0, lsl #6 - mov r3, #0 - bl _ll_udiv - ldmia sp!, {r3, pc} - .align 2, 0 -_022F55B8: .word 0x000082EA - arm_func_end current_time_gsi - - arm_func_start current_time_hires_gsi -current_time_hires_gsi: ; 0x022F55BC - stmdb sp!, {r3, lr} - bl OS_GetTick - mov r2, #0xfa00 - umull ip, r3, r0, r2 - mla r3, r1, r2, r3 - ldr r2, _022F55E8 ; =0x000082EA - mov r0, ip - mov r1, r3 - mov r3, #0 - bl _ll_udiv - ldmia sp!, {r3, pc} - .align 2, 0 -_022F55E8: .word 0x000082EA - arm_func_end current_time_hires_gsi - - arm_func_start msleep_gsi -msleep_gsi: ; 0x022F55EC - ldr ip, _022F55F4 ; =OS_Sleep - bx ip - .align 2, 0 -_022F55F4: .word OS_Sleep - arm_func_end msleep_gsi - - arm_func_start DoRand -DoRand: ; 0x022F55F8 - ldr r2, _022F5640 ; =0x000041A7 - mov r1, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mul r3, r0, r2 - mov r1, r1, lsr #0x10 - mul r2, r1, r2 - mov r0, r3, lsl #0x11 - add r0, r2, r0, lsr #1 - mvn r1, #0x80000000 - cmp r0, r1 - bichi r0, r0, #0x80000000 - addhi r0, r0, #1 - add r0, r0, r3, lsr #15 - mvn r1, #0x80000000 - cmp r0, r1 - bichi r0, r0, #0x80000000 - addhi r0, r0, #1 - bx lr - .align 2, 0 -_022F5640: .word 0x000041A7 - arm_func_end DoRand - - arm_func_start longrand_gsi -longrand_gsi: ; 0x022F5644 - stmdb sp!, {r3, lr} - ldr r0, _022F5660 ; =ov00_0231A740 - ldr r0, [r0] - bl DoRand - ldr r1, _022F5660 ; =ov00_0231A740 - str r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F5660: .word ov00_0231A740 - arm_func_end longrand_gsi - - arm_func_start Util_RandSeed -Util_RandSeed: ; 0x022F5664 - cmp r0, #0 - bicne r1, r0, #0x80000000 - ldr r0, _022F567C ; =ov00_0231A740 - moveq r1, #1 - str r1, [r0] - bx lr - .align 2, 0 -_022F567C: .word ov00_0231A740 - arm_func_end Util_RandSeed - - arm_func_start RandRangeOverlay0 -RandRangeOverlay0: ; 0x022F5680 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - subs r4, r1, r5 - ldmeqia sp!, {r3, r4, r5, pc} - bl longrand_gsi - mov r1, r4 - bl _u32_div_f - add r0, r1, r5 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end RandRangeOverlay0 - - arm_func_start QuartToTrip -QuartToTrip: ; 0x022F56A4 - cmp r2, #2 - blt _022F56C0 - ldrsb r3, [r0, #1] - ldrsb ip, [r0] - mov r3, r3, asr #4 - orr r3, r3, ip, lsl #2 - strb r3, [r1] -_022F56C0: - cmp r2, #3 - blt _022F56E0 - ldrsb ip, [r0, #1] - ldrsb r3, [r0, #2] - mov ip, ip, lsl #0x1c - mov r3, r3, asr #2 - orr r3, r3, ip, lsr #24 - strb r3, [r1, #1] -_022F56E0: - cmp r2, #4 - bxlt lr - ldrsb r2, [r0, #2] - ldrsb r0, [r0, #3] - mov r2, r2, lsl #0x1e - orr r0, r0, r2, lsr #24 - strb r0, [r1, #2] - bx lr - arm_func_end QuartToTrip - - arm_func_start TripToQuart -TripToQuart: ; 0x022F5700 - stmdb sp!, {r3, lr} - cmp r2, #0 - mov ip, #0 - ble _022F5728 - add lr, sp, #0 -_022F5714: - ldrsb r3, [r0, ip] - add ip, ip, #1 - cmp ip, r2 - strb r3, [lr], #1 - blt _022F5714 -_022F5728: - cmp ip, #3 - bge _022F574C - add r0, sp, #0 - add r2, r0, ip - mov r0, #0 -_022F573C: - add ip, ip, #1 - cmp ip, #3 - strb r0, [r2], #1 - blt _022F573C -_022F574C: - ldrb r0, [sp] - mov r0, r0, asr #2 - strb r0, [r1] - ldrb r2, [sp] - ldrb r0, [sp, #1] - mov r2, r2, lsl #0x1e - mov r0, r0, asr #4 - orr r0, r0, r2, lsr #26 - strb r0, [r1, #1] - ldrb r2, [sp, #1] - ldrb r0, [sp, #2] - mov r2, r2, lsl #0x1c - mov r0, r0, asr #6 - orr r0, r0, r2, lsr #26 - strb r0, [r1, #2] - ldrb r0, [sp, #2] - and r0, r0, #0x3f - strb r0, [r1, #3] - ldmia sp!, {r3, pc} - arm_func_end TripToQuart - - arm_func_start B64Decode -B64Decode: ; 0x022F5798 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, [sp, #0x28] - mov r7, #0 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov fp, r3 - mov r6, r7 - cmp r4, #1 - beq _022F57CC - cmp r4, #2 - beq _022F57D4 - b _022F57DC -_022F57CC: - ldr r5, _022F5980 ; =ov00_02318468 - b _022F57E0 -_022F57D4: - ldr r5, _022F5984 ; =ov00_0231846C - b _022F57E0 -_022F57DC: - ldr r5, _022F5988 ; =ov00_02318470 -_022F57E0: - cmp r8, #0 - bgt _022F5800 - cmp fp, #0 - movne r0, #0 - strne r0, [fp] - mov r0, #0 - strb r0, [sb] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F5800: - add r4, sp, #0 - b _022F5914 -_022F5808: - cmp r0, #0x30 - blt _022F5830 - cmp r0, #0x39 - bgt _022F5830 - mov r2, r7, lsr #0x1f - rsb r1, r2, r7, lsl #30 - add r1, r2, r1, ror #30 - add r0, r0, #4 - strb r0, [r4, r1] - b _022F58F4 -_022F5830: - cmp r0, #0x61 - blt _022F5858 - cmp r0, #0x7a - bgt _022F5858 - mov r2, r7, lsr #0x1f - rsb r1, r2, r7, lsl #30 - add r1, r2, r1, ror #30 - sub r0, r0, #0x47 - strb r0, [r4, r1] - b _022F58F4 -_022F5858: - cmp r0, #0x41 - blt _022F5880 - cmp r0, #0x5a - bgt _022F5880 - mov r2, r7, lsr #0x1f - rsb r1, r2, r7, lsl #30 - add r1, r2, r1, ror #30 - sub r0, r0, #0x41 - strb r0, [r4, r1] - b _022F58F4 -_022F5880: - ldrsb r1, [r5] - cmp r1, r0 - bne _022F58A4 - mov r1, r7, lsr #0x1f - rsb r0, r1, r7, lsl #30 - add r1, r1, r0, ror #30 - mov r0, #0x3e - strb r0, [r4, r1] - b _022F58F4 -_022F58A4: - ldrsb r1, [r5, #1] - cmp r1, r0 - bne _022F58C8 - mov r1, r7, lsr #0x1f - rsb r0, r1, r7, lsl #30 - add r1, r1, r0, ror #30 - mov r0, #0x3f - strb r0, [r4, r1] - b _022F58F4 -_022F58C8: - ldrsb r1, [sl, r7] - ldrsb r0, [r5, #2] - cmp r0, r1 - cmpne r1, #0 - beq _022F592C - cmp fp, #0 - movne r0, #0 - strne r0, [fp] - mov r0, #0 - strb r0, [sb] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F58F4: - cmp r1, #3 - bne _022F5910 - mov r0, r4 - mov r2, #4 - add r1, sb, r6 - bl QuartToTrip - add r6, r6, #3 -_022F5910: - add r7, r7, #1 -_022F5914: - cmp r7, r8 - bge _022F592C - ldrsb r0, [sl, r7] - ldrsb r1, [r5, #2] - cmp r1, r0 - bne _022F5808 -_022F592C: - cmp r7, #0 - beq _022F5974 - mov r1, r7, lsr #0x1f - rsb r0, r1, r7, lsl #30 - adds r4, r1, r0, ror #30 - beq _022F5974 - ldrsb r1, [r5, #2] - add r0, sp, #0 - add r0, r0, r4 - rsb r2, r4, #4 - bl memset - add r0, sp, #0 - mov r2, r4 - add r1, sb, r6 - bl QuartToTrip - cmp r4, #3 - addeq r6, r6, #2 - addne r6, r6, #1 -_022F5974: - cmp fp, #0 - strne r6, [fp] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F5980: .word ov00_02318468 -_022F5984: .word ov00_0231846C -_022F5988: .word ov00_02318470 - arm_func_end B64Decode - - arm_func_start B64Encode -B64Encode: ; 0x022F598C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r7, r1 - mov r6, r2 - mov sl, r0 - mov r5, r7 - mov sb, r6 - cmp r3, #1 - beq _022F59B8 - cmp r3, #2 - beq _022F59C0 - b _022F59C8 -_022F59B8: - ldr r4, _022F5AB4 ; =ov00_02318468 - b _022F59CC -_022F59C0: - ldr r4, _022F5AB8 ; =ov00_0231846C - b _022F59CC -_022F59C8: - ldr r4, _022F5ABC ; =ov00_02318470 -_022F59CC: - cmp r6, #0 - ble _022F5A04 - mov r8, #3 -_022F59D8: - cmp sb, #3 - movlt r2, sb - movge r2, r8 - mov r0, sl - mov r1, r7 - bl TripToQuart - sub sb, sb, #3 - cmp sb, #0 - add r7, r7, #4 - add sl, sl, #3 - bgt _022F59D8 -_022F5A04: - ldr r1, _022F5AC0 ; =0x55555556 - mov r2, #3 - smull r0, r3, r1, r6 - add r3, r3, r6, lsr #31 - smull r0, r1, r2, r3 - sub r3, r6, r0 - mov r1, r7 - cmp r3, #1 - subeq r1, r7, #2 - beq _022F5A34 - cmp r3, #2 - subeq r1, r7, #1 -_022F5A34: - mov r0, #0 - strb r0, [r7] - cmp r7, r5 - ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022F5A44: - sub r7, r7, #1 - cmp r7, r1 - ldrhssb r0, [r4, #2] - strhsb r0, [r7] - bhs _022F5AA8 - ldrsb r0, [r7] - cmp r0, #0x19 - addle r0, r0, #0x41 - strleb r0, [r7] - ble _022F5AA8 - cmp r0, #0x33 - addle r0, r0, #0x47 - strleb r0, [r7] - ble _022F5AA8 - cmp r0, #0x3d - suble r0, r0, #4 - strleb r0, [r7] - ble _022F5AA8 - cmp r0, #0x3e - ldreqsb r0, [r4] - streqb r0, [r7] - beq _022F5AA8 - cmp r0, #0x3f - ldreqsb r0, [r4, #1] - streqb r0, [r7] -_022F5AA8: - cmp r7, r5 - bhi _022F5A44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F5AB4: .word ov00_02318468 -_022F5AB8: .word ov00_0231846C -_022F5ABC: .word ov00_02318470 -_022F5AC0: .word 0x55555556 - arm_func_end B64Encode - - arm_func_start GsDebugAssert -GsDebugAssert: ; 0x022F5AC4 - bx lr - arm_func_end GsDebugAssert - - arm_func_start GsiMemoryCallbacksSet -GsiMemoryCallbacksSet: ; 0x022F5AC8 - ldr ip, _022F5AE0 ; =ov00_02328788 - str r0, [ip, #8] - str r1, [ip, #0xc] - str r2, [ip, #0x10] - str r3, [ip, #0x14] - bx lr - .align 2, 0 -_022F5AE0: .word ov00_02328788 - arm_func_end GsiMemoryCallbacksSet - - arm_func_start gsimalloc -gsimalloc: ; 0x022F5AE4 - stmdb sp!, {r3, lr} - ldr r1, _022F5AF8 ; =ov00_02328788 - ldr r1, [r1, #8] - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F5AF8: .word ov00_02328788 - arm_func_end gsimalloc - - arm_func_start gsirealloc -gsirealloc: ; 0x022F5AFC - stmdb sp!, {r3, lr} - ldr r2, _022F5B10 ; =ov00_02328788 - ldr r2, [r2, #0x10] - blx r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F5B10: .word ov00_02328788 - arm_func_end gsirealloc - - arm_func_start gsifree -gsifree: ; 0x022F5B14 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _022F5B30 ; =ov00_02328788 - ldr r1, [r1, #0xc] - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F5B30: .word ov00_02328788 - arm_func_end gsifree - - arm_func_start get_sockaddrin__022F6348 -get_sockaddrin__022F6348: ; 0x022F5B34 - stmdb sp!, {r3, r4, r5, lr} - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r3, r1, asr #8 - mov r1, r1, lsl #8 - mov r4, r2 - mov ip, #2 - and r2, r3, #0xff - and r1, r1, #0xff00 - strb ip, [r4, #1] - orr r1, r2, r1 - mov r5, r0 - strh r1, [r4, #2] - bl inet_addr_gsi - mvn r1, #0 - str r0, [r4, #4] - cmp r0, r1 - bne _022F5BA0 - mov r0, r5 - bl Soc_GetHostByName - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r0, #0xc] - ldr r0, [r0] - ldr r0, [r0] - str r0, [r4, #4] -_022F5BA0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end get_sockaddrin__022F6348 - - arm_func_start SendPacket_Gsi -SendPacket_Gsi: ; 0x022F5BA8 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _022F5BEC ; =ov00_02328888 - mov r0, #8 - str r1, [sp] - ldr r1, _022F5BF0 ; =ov00_02328884 - str r0, [sp, #4] - ldr r0, [r1] - ldr r2, [r1, #0x4c] - ldr r1, _022F5BF4 ; =ov00_02328890 - mov r3, #0 - bl SocketSendTo - bl current_time_gsi - ldr r1, _022F5BF0 ; =ov00_02328884 - str r0, [r1, #0x50] - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F5BEC: .word ov00_02328888 -_022F5BF0: .word ov00_02328884 -_022F5BF4: .word ov00_02328890 - arm_func_end SendPacket_Gsi - - arm_func_start ResolveAvailableNintendoWifi -ResolveAvailableNintendoWifi: ; 0x022F5BF8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x40 - mov r4, r0 - ldr r0, _022F5CD4 ; =ov00_02328804 - mov r1, r4 - bl strcpy - ldr r0, _022F5CD8 ; =ov00_02328884 - mvn r1, #0 - str r1, [r0] - bl SocketStartUp_Ghi - ldr r0, _022F5CDC ; =ov00_02328844 - ldrsb r5, [r0] - cmp r5, #0 - bne _022F5C40 - ldr r1, _022F5CE0 ; =ov00_0231A7BC - add r0, sp, #0 - mov r2, r4 - bl OS_VsPrintf -_022F5C40: - cmp r5, #0 - ldrne r0, _022F5CDC ; =ov00_02328844 - ldr r1, _022F5CE4 ; =0x00006CFC - ldr r2, _022F5CE8 ; =ov00_02328888 - addeq r0, sp, #0 - bl get_sockaddrin__022F6348 - cmp r0, #0 - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #2 - mov r1, r0 - mov r2, #0 - bl SocketCreate - ldr r2, _022F5CD8 ; =ov00_02328884 - mvn r1, #0 - cmp r0, r1 - str r0, [r2] - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, #9 - mov r0, r4 - strb r1, [r2, #0xc] - bl strlen - mov r5, r0 - ldr r0, _022F5CEC ; =ov00_02328895 - mov r1, r4 - add r2, r5, #1 - bl memcpy - ldr r0, _022F5CD8 ; =ov00_02328884 - add r1, r5, #6 - str r1, [r0, #0x4c] - bl SendPacket_Gsi - ldr r0, _022F5CD8 ; =ov00_02328884 - mov r1, #0 - str r1, [r0, #0x54] - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F5CD4: .word ov00_02328804 -_022F5CD8: .word ov00_02328884 -_022F5CDC: .word ov00_02328844 -_022F5CE0: .word ov00_0231A7BC -_022F5CE4: .word 0x00006CFC -_022F5CE8: .word ov00_02328888 -_022F5CEC: .word ov00_02328895 - arm_func_end ResolveAvailableNintendoWifi - - arm_func_start HandlePacket -HandlePacket: ; 0x022F5CF0 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - cmp r1, #7 - mov r6, r2 - mov r4, r3 - movlt r0, #1 - ldmltia sp!, {r4, r5, r6, pc} - ldr r1, _022F5D9C ; =ov00_0232888C - add r0, r6, #4 - mov r2, #4 - bl memcmp - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, _022F5DA0 ; =ov00_02328884 - ldrh r1, [r6, #2] - ldrh r0, [r0, #6] - cmp r1, r0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _022F5DA4 ; =ov00_0231A7E0 - mov r0, r5 - mov r2, #3 - bl memcmp - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldrsb r2, [r5, #3] - ldrsb r1, [r5, #4] - ldrsb r0, [r5, #5] - mov r3, r2, lsl #0x18 - mov r2, r1, lsl #0x10 - mov r1, r0, lsl #8 - and r3, r3, #0xff000000 - and r2, r2, #0xff0000 - ldrb r0, [r5, #6] - orr r2, r3, r2 - and r1, r1, #0xff00 - orr r1, r2, r1 - orr r0, r1, r0 - str r0, [r4] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F5D9C: .word ov00_0232888C -_022F5DA0: .word ov00_02328884 -_022F5DA4: .word ov00_0231A7E0 - arm_func_end HandlePacket - - arm_func_start GsiAvailableCheckThink -GsiAvailableCheckThink: ; 0x022F5DA8 - stmdb sp!, {r3, lr} - sub sp, sp, #0x58 - ldr r0, _022F5EE8 ; =ov00_02328884 - mov r2, #8 - ldr r0, [r0] - sub r1, r2, #9 - str r2, [sp, #0xc] - cmp r0, r1 - bne _022F5DE0 - ldr r1, _022F5EEC ; =ov00_02328800 - mov r0, #1 - str r0, [r1] - add sp, sp, #0x58 - ldmia sp!, {r3, pc} -_022F5DE0: - bl CanReceiveOnSocket - cmp r0, #0 - beq _022F5E88 - add r0, sp, #0x10 - str r0, [sp] - add r1, sp, #0xc - str r1, [sp, #4] - ldr r0, _022F5EE8 ; =ov00_02328884 - add r1, sp, #0x18 - ldr r0, [r0] - mov r2, #0x40 - mov r3, #0 - bl SocketRecvFrom - mov r1, r0 - add r0, sp, #0x18 - add r2, sp, #0x10 - add r3, sp, #8 - bl HandlePacket - cmp r0, #0 - bne _022F5E88 - ldr r0, _022F5EE8 ; =ov00_02328884 - ldr r0, [r0] - bl SocketClose - ldr r0, [sp, #8] - tst r0, #1 - beq _022F5E58 - ldr r0, _022F5EEC ; =ov00_02328800 - mov r1, #2 - str r1, [r0] - b _022F5E78 -_022F5E58: - tst r0, #2 - ldreq r0, _022F5EEC ; =ov00_02328800 - moveq r1, #1 - streq r1, [r0] - beq _022F5E78 - ldr r0, _022F5EEC ; =ov00_02328800 - mov r1, #3 - str r1, [r0] -_022F5E78: - ldr r0, _022F5EEC ; =ov00_02328800 - add sp, sp, #0x58 - ldr r0, [r0] - ldmia sp!, {r3, pc} -_022F5E88: - bl current_time_gsi - ldr r1, _022F5EE8 ; =ov00_02328884 - ldr r2, [r1, #0x50] - add r2, r2, #0x7d0 - cmp r0, r2 - bls _022F5EDC - ldr r0, [r1, #0x54] - cmp r0, #1 - bne _022F5EC8 - ldr r0, [r1] - bl SocketClose - ldr r1, _022F5EEC ; =ov00_02328800 - mov r0, #1 - str r0, [r1] - add sp, sp, #0x58 - ldmia sp!, {r3, pc} -_022F5EC8: - bl SendPacket_Gsi - ldr r0, _022F5EE8 ; =ov00_02328884 - ldr r1, [r0, #0x54] - add r1, r1, #1 - str r1, [r0, #0x54] -_022F5EDC: - mov r0, #0 - add sp, sp, #0x58 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F5EE8: .word ov00_02328884 -_022F5EEC: .word ov00_02328800 - arm_func_end GsiAvailableCheckThink - - arm_func_start GsiCryptRsaGeneratePad -GsiCryptRsaGeneratePad: ; 0x022F5EF0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r8, r0 - bl current_time_gsi - bl Util_RandSeed - mov r6, #0 - cmp r7, #0 - ldmlsia sp!, {r4, r5, r6, r7, r8, pc} - mov r5, r6 - mov r4, #0xff -_022F5F18: - mov r0, r5 - mov r1, r4 - bl RandRangeOverlay0 - add r0, r0, #1 - strb r0, [r8, r6] - add r6, r6, #1 - cmp r6, r7 - blo _022F5F18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end GsiCryptRsaGeneratePad - - arm_func_start GsCryptRsaEncryptBuffer -GsCryptRsaEncryptBuffer: ; 0x022F5F3C - ldr ip, _022F5F44 ; =GsCryptRsaPkcs1EncryptBuffer - bx ip - .align 2, 0 -_022F5F44: .word GsCryptRsaPkcs1EncryptBuffer - arm_func_end GsCryptRsaEncryptBuffer - - arm_func_start GsCryptRsaPkcs1EncryptBuffer -GsCryptRsaPkcs1EncryptBuffer: ; 0x022F5F48 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x184 - mov r7, r2 - mov sb, r0 - cmp r7, #0x75 - add r4, sp, #0x104 - mov r8, r1 - mov r6, r3 - addhi sp, sp, #0x184 - mvnhi r0, #0 - ldmhiia sp!, {r4, r5, r6, r7, r8, sb, pc} - rsb r5, r7, #0x7d - mov r3, #0 - mov r2, #2 - mov r1, r5 - add r0, r4, #2 - strb r3, [r4] - strb r2, [r4, #1] - bl GsiCryptRsaGeneratePad - add r3, r4, #2 - rsb r0, r7, #0x7e - add r4, r4, r5 - mov r5, #0 - mov r1, r8 - mov r2, r7 - add r0, r3, r0 - strb r5, [r4, #2] - bl memcpy - add r0, sp, #0 - add r1, sp, #0x104 - mov r2, #0x80 - bl GsLargeIntSetFromMemoryStream - cmp r0, #0 - beq _022F6000 - add r0, sp, #0 - mov r2, sb - mov r3, r0 - add r1, sb, #0x104 - bl GsLargeIntPowerMod - cmp r0, #0 - beq _022F6000 - add r0, sp, #0 - mov r1, r6 - bl GsLargeIntWriteToMemoryStream - cmp r0, #0 - bne _022F600C -_022F6000: - add sp, sp, #0x184 - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_022F600C: - mov r0, r5 - add sp, sp, #0x184 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end GsCryptRsaPkcs1EncryptBuffer - - arm_func_start GsiLargeIntTimerEnter -GsiLargeIntTimerEnter: ; 0x022F6018 - stmdb sp!, {r4, lr} - ldr r1, _022F605C ; =ov00_023288E8 - mov r4, r0 - ldr r0, [r1, r4, lsl #4] - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022F6060 ; =ov00_023288E4 - ldr r0, [r1, r4, lsl #4] - add r0, r0, #1 - str r0, [r1, r4, lsl #4] - bl current_time_hires_gsi - ldr r2, _022F6064 ; =ov00_023288DC - ldr r1, _022F605C ; =ov00_023288E8 - str r0, [r2, r4, lsl #4] - mov r0, #1 - str r0, [r1, r4, lsl #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022F605C: .word ov00_023288E8 -_022F6060: .word ov00_023288E4 -_022F6064: .word ov00_023288DC - arm_func_end GsiLargeIntTimerEnter - - arm_func_start GsiLargeIntTimerExit -GsiLargeIntTimerExit: ; 0x022F6068 - stmdb sp!, {r4, lr} - ldr r1, _022F60B0 ; =ov00_023288E8 - mov r4, r0 - ldr r0, [r1, r4, lsl #4] - cmp r0, #1 - ldmneia sp!, {r4, pc} - bl current_time_hires_gsi - ldr r1, _022F60B4 ; =ov00_023288DC - ldr r3, _022F60B8 ; =ov00_023288E0 - ldr r1, [r1, r4, lsl #4] - ldr r2, [r3, r4, lsl #4] - sub r0, r0, r1 - add r1, r2, r0 - ldr r0, _022F60B0 ; =ov00_023288E8 - str r1, [r3, r4, lsl #4] - mov r1, #0 - str r1, [r0, r4, lsl #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022F60B0: .word ov00_023288E8 -_022F60B4: .word ov00_023288DC -_022F60B8: .word ov00_023288E0 - arm_func_end GsiLargeIntTimerExit - - arm_func_start GsiLargeIntCompare -GsiLargeIntCompare: ; 0x022F60BC - b _022F60C4 -_022F60C0: - sub r1, r1, #1 - arm_func_end GsiLargeIntCompare -_022F60C4: - add ip, r0, r1, lsl #2 - ldr ip, [ip, #-4] - cmp ip, #0 - bne _022F60E4 - cmp r1, #0 - bne _022F60C0 - b _022F60E4 -_022F60E0: - sub r3, r3, #1 -_022F60E4: - add ip, r2, r3, lsl #2 - ldr ip, [ip, #-4] - cmp ip, #0 - bne _022F60FC - cmp r3, #0 - bne _022F60E0 -_022F60FC: - cmp r1, r3 - mvnlo r0, #0 - bxlo lr - movhi r0, #1 - bxhi lr - cmp r1, #0 - beq _022F6144 -_022F6118: - add ip, r2, r1, lsl #2 - add r3, r0, r1, lsl #2 - ldr ip, [ip, #-4] - ldr r3, [r3, #-4] - cmp r3, ip - mvnlo r0, #0 - bxlo lr - movhi r0, #1 - bxhi lr - subs r1, r1, #1 - bne _022F6118 -_022F6144: - mov r0, #0 - bx lr - - arm_func_start GsiLargeIntStripLeadingZeroes -GsiLargeIntStripLeadingZeroes: ; 0x022F614C - b _022F615C -_022F6150: - ldr r1, [r0] - sub r1, r1, #1 - str r1, [r0] - arm_func_end GsiLargeIntStripLeadingZeroes -_022F615C: - ldr r1, [r0] - cmp r1, #0 - beq _022F6174 - ldr r1, [r0, r1, lsl #2] - cmp r1, #0 - beq _022F6150 -_022F6174: - mov r0, #1 - bx lr - - arm_func_start GsiLargeIntAdd -GsiLargeIntAdd: ; 0x022F617C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, #0 - mov sl, r0 - mov r0, #3 - mov fp, r1 - mov sb, r2 - mov r8, r3 - mov r5, r6 - mov r4, r6 - ldr r7, [sp, #0x28] - bl GsiLargeIntTimerEnter - ldr r0, [sp, #0x30] - cmp r0, fp - cmphs r0, r8 - movlo r0, #0 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp fp, r8 - movlo r0, fp - movlo r1, sb - movhs r0, r8 - movhs r8, fp - movhs r1, sl - cmp r0, #0 - bls _022F620C - mov r2, #0 -_022F61E0: - ldr fp, [sl, r6, lsl #2] - ldr r3, [sb, r6, lsl #2] - adds fp, fp, r3 - adc r3, r2, #0 - adds r5, r5, fp - str r5, [r7, r6, lsl #2] - adc r5, r4, r3 - add r6, r6, #1 - cmp r6, r0 - mov r4, #0 - blo _022F61E0 -_022F620C: - mov r2, #0 - mov r0, r2 - b _022F6230 -_022F6218: - ldr r3, [r1, r6, lsl #2] - adds r3, r5, r3 - str r3, [r7, r6, lsl #2] - adc r5, r4, #0 - add r6, r6, #1 - mov r4, #0 -_022F6230: - cmp r4, r2 - cmpeq r5, r0 - beq _022F6244 - cmp r6, r8 - blo _022F6218 -_022F6244: - mov r0, #0 - cmp r4, r0 - cmpeq r5, r0 - beq _022F6270 - ldr r2, [sp, #0x30] - cmp r2, r6 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - str r5, [r7, r6, lsl #2] - mov r5, r0 - mov r4, r0 - add r6, r6, #1 -_022F6270: - cmp r6, r8 - bhs _022F6298 - add r1, r1, r6, lsl #2 - add r0, r7, r6, lsl #2 - cmp r0, r1 - beq _022F6294 - sub r2, r8, r6 - mov r2, r2, lsl #2 - bl memcpy -_022F6294: - mov r6, r8 -_022F6298: - ldr r1, [sp, #0x2c] - mov r0, #3 - str r6, [r1] - bl GsiLargeIntTimerExit - mov r0, #0 - cmp r4, r0 - cmpeq r5, r0 - moveq r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GsiLargeIntAdd - - arm_func_start GsiLargeIntSub -GsiLargeIntSub: ; 0x022F62BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r1 - mov r8, r3 - cmp fp, r8 - strlo fp, [sp] - mov r5, #0 - mov sl, r0 - strhs r8, [sp] - mov r0, #4 - mov sb, r2 - mov r4, r5 - ldr r7, [sp, #0x28] - mov r6, #0 - bl GsiLargeIntTimerEnter - ldr r0, [sp] - cmp r0, #0 - bls _022F6338 - mov r1, r6 -_022F6304: - ldr r2, [sb, r6, lsl #2] - ldr r0, [sl, r6, lsl #2] - subs r2, r2, r0 - rsc r0, r1, #0 - subs r3, r2, r5 - sbc r2, r0, r4 - str r3, [r7, r6, lsl #2] - ldr r0, [sp] - add r6, r6, #1 - cmp r6, r0 - mov r5, r2, lsr #0x1f - mov r4, #0 - blo _022F6304 -_022F6338: - cmp r6, r8 - bhs _022F6364 -_022F6340: - ldr r0, [sb, r6, lsl #2] - subs r1, r0, r5 - rsc r0, r4, #0 - str r1, [r7, r6, lsl #2] - add r6, r6, #1 - cmp r6, r8 - mov r5, r0, lsr #0x1f - mov r4, #0 - blo _022F6340 -_022F6364: - cmp r4, #0 - cmpeq r5, #0 - beq _022F6380 - mov r0, #4 - bl GsiLargeIntTimerExit - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F6380: - cmp r6, fp - bhs _022F63B0 -_022F6388: - ldr r0, [sl, r6, lsl #2] - cmp r0, #0 - beq _022F63A4 - mov r0, #4 - bl GsiLargeIntTimerExit - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F63A4: - add r6, r6, #1 - cmp r6, fp - blo _022F6388 -_022F63B0: - ldr r1, [sp, #0x2c] - mov r0, #4 - str r8, [r1] - bl GsiLargeIntTimerExit - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GsiLargeIntSub - - arm_func_start GsiLargeIntMult -GsiLargeIntMult: ; 0x022F63C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x114 - str r0, [sp] - ldr r0, [sp, #0x13c] - ldr r4, [sp, #0x140] - str r0, [sp, #0x13c] - mov r0, #0 - str r1, [sp, #4] - str r2, [sp, #8] - str r3, [sp, #0xc] - add r6, sp, #0x10 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r5, #8 -_022F6404: - stmia r6!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _022F6404 - ldr r1, [sp, #0x13c] - str r0, [r6] - mov r0, #0 - str r0, [r1] - bl GsiLargeIntTimerEnter - ldr r0, [sp, #0xc] - mov fp, #0 - cmp r0, #0 - bls _022F6534 -_022F6438: - ldr r0, [sp, #8] - ldr r0, [r0, fp, lsl #2] - cmp r0, #0 - beq _022F6524 - ldr r0, [sp, #4] - mov r7, #0 - cmp r0, #0 - bls _022F6524 - add r6, sp, #0x10 - mov r3, r7 - mov r2, r7 - mov r1, r7 - mov r0, r7 - mov ip, r7 -_022F6470: - ldr r5, [sp] - ldr r8, [sp, #8] - ldr r5, [r5, r7, lsl #2] - ldr r8, [r8, fp, lsl #2] - add sl, fp, r7 - umull sb, r8, r5, r8 - cmp sl, r4 - blo _022F64A4 - mov r0, #0 - bl GsiLargeIntTimerExit - add sp, sp, #0x114 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F64A4: - cmp r8, #0 - cmpeq sb, ip - beq _022F6508 -_022F64B0: - add r5, r6, sl, lsl #2 - ldr lr, [r5, #4] - add sl, sl, #1 - adds sb, sb, lr - str sb, [r5, #4] - adc sb, r8, #0 - cmp sl, r4 - mov r8, #0 - bhi _022F64E8 - cmp sl, r4 - bne _022F64FC - cmp r8, r3 - cmpeq sb, r2 - beq _022F64FC -_022F64E8: - mov r0, #0 - bl GsiLargeIntTimerExit - add sp, sp, #0x114 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F64FC: - cmp r8, r1 - cmpeq sb, r0 - bne _022F64B0 -_022F6508: - ldr r5, [sp, #0x10] - add r7, r7, #1 - cmp sl, r5 - ldr r5, [sp, #4] - strhi sl, [sp, #0x10] - cmp r7, r5 - blo _022F6470 -_022F6524: - ldr r0, [sp, #0xc] - add fp, fp, #1 - cmp fp, r0 - blo _022F6438 -_022F6534: - add r1, sp, #0x10 - b _022F6548 -_022F653C: - ldr r0, [sp, #0x10] - sub r0, r0, #1 - str r0, [sp, #0x10] -_022F6548: - ldr r4, [sp, #0x10] - cmp r4, #0 - beq _022F6560 - ldr r0, [r1, r4, lsl #2] - cmp r0, #0 - beq _022F653C -_022F6560: - ldr r3, [sp, #0x13c] - ldr r0, [sp, #0x138] - add r1, sp, #0x14 - mov r2, r4, lsl #2 - str r4, [r3] - bl memcpy - mov r0, #0 - bl GsiLargeIntTimerExit - mov r0, #1 - add sp, sp, #0x114 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GsiLargeIntMult - - arm_func_start GsLargeIntDiv -GsLargeIntDiv: ; 0x022F658C - stmdb sp!, {r3, lr} - str r3, [sp] - mov ip, r1 - mov r3, r2 - ldr r1, [r0], #4 - mov r2, ip - bl GsiLargeIntDiv - ldmia sp!, {r3, pc} - arm_func_end GsLargeIntDiv - - arm_func_start GsiLargeIntDiv -GsiLargeIntDiv: ; 0x022F65AC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x314 - mov r4, r0 - mov r0, #5 - mov r6, r1 - mov r5, r3 - add r8, r2, #4 - ldr fp, [sp, #0x338] - ldr sb, [r2] - mov r7, #0x1f - mov sl, #0 - bl GsiLargeIntTimerEnter - mov r0, sl - add ip, sp, #0x10 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov lr, #0x10 -_022F65F4: - stmia ip!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs lr, lr, #1 - bne _022F65F4 - cmp r6, #0x40 - bls _022F6624 - cmp r5, #0 - addne sp, sp, #0x314 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - b _022F6624 -_022F6620: - sub r6, r6, #1 -_022F6624: - cmp r6, #0 - beq _022F6644 - add r0, r4, r6, lsl #2 - ldr r0, [r0, #-4] - cmp r0, #0 - beq _022F6620 - b _022F6644 -_022F6640: - sub sb, sb, #1 -_022F6644: - cmp sb, #0 - beq _022F665C - add r0, r8, sb, lsl #2 - ldr r0, [r0, #-4] - cmp r0, #0 - beq _022F6640 -_022F665C: - mov r0, r6, lsl #2 - str r0, [sp, #8] - ldr r2, [sp, #8] - add r0, sp, #0x10 - mov r1, r4 - bl memcpy - mov r0, #0 - add ip, sp, #0x210 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r4, #8 -_022F668C: - stmia ip!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _022F668C - cmp r6, #0 - str r0, [ip] - cmpne sb, #0 - bne _022F66E8 - cmp r5, #0 - movne r0, #0 - strne r0, [r5, #4] - strne r0, [r5] - cmp fp, #0 - movne r0, #0 - strne r0, [fp, #4] - strne r0, [fp] - mov r0, #5 - bl GsiLargeIntTimerExit - cmp sb, #0 - moveq r0, #0 - add sp, sp, #0x314 - movne r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F66E8: - add r0, sp, #0x10 - mov r1, r6 - mov r2, r8 - mov r3, sb - bl GsiLargeIntCompare - mvn r1, #0 - cmp r0, r1 - bne _022F6740 - cmp r5, #0 - movne r0, #0 - strne r0, [r5] - strne r0, [r5, #4] - ldr r2, [sp, #8] - add r1, sp, #0x10 - add r0, fp, #4 - str r6, [fp] - bl memcpy - mov r0, #5 - bl GsiLargeIntTimerExit - add sp, sp, #0x314 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F6740: - sub r2, sb, #1 - ldr r1, [r8, r2, lsl #2] - mov r0, #1 - b _022F6754 -_022F6750: - sub r7, r7, #1 -_022F6754: - tst r1, r0, lsl r7 - bne _022F6764 - cmp r7, #0 - bge _022F6750 -_022F6764: - mvn r0, #0 - cmp r7, r0 - bne _022F6784 - mov r0, #5 - bl GsiLargeIntTimerExit - add sp, sp, #0x314 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F6784: - mov r4, sb - add r7, r7, r2, lsl #5 - sub r6, r6, sb -_022F6790: - add r0, sp, #0x10 - mov r1, r4 - mov r2, r8 - mov r3, sb - add r0, r0, r6, lsl #2 - bl GsiLargeIntCompare - mvn r1, #0 - cmp r0, r1 - bne _022F67C8 - cmp r6, #0 - subgt r6, r6, #1 - addgt r4, r4, #1 - movle sl, #1 - b _022F68CC -_022F67C8: - cmp r0, #0 - mov r1, #0 - add r0, sp, #0x10 - bne _022F6818 - mov r2, r4, lsl #2 - add r0, r0, r6, lsl #2 - bl memset - add r0, sp, #0x210 - add r2, r0, r6, lsl #2 - ldr r0, [r2, #4] - add r1, r6, r4 - add r0, r0, #1 - str r0, [r2, #4] - ldr r0, [sp, #0x210] - cmp r0, r1 - strlo r1, [sp, #0x210] - subs r6, r6, r4 - mov r4, #1 - movmi sl, r4 - b _022F68CC -_022F6818: - str r1, [sp, #0xc] - add ip, sp, #0xc - mov r1, r4 - mov r2, r8 - mov r3, sb - add r0, r0, r6, lsl #2 - stmia sp, {r7, ip} - bl GsiLargeIntSubDivide - cmp r0, #0 - bne _022F6854 - mov r0, #5 - bl GsiLargeIntTimerExit - add sp, sp, #0x314 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F6854: - add r0, sp, #0x210 - add r2, r0, r6, lsl #2 - ldr r3, [sp, #0xc] - ldr r0, [r2, #4] - add r1, r6, r4 - add r0, r3, r0 - str r0, [r2, #4] - ldr r0, [sp, #0x210] - cmp r0, r1 - add r0, sp, #0x10 - strlo r1, [sp, #0x210] - add r1, r0, r6, lsl #2 - b _022F688C -_022F6888: - sub r4, r4, #1 -_022F688C: - add r0, r1, r4, lsl #2 - ldr r0, [r0, #-4] - cmp r0, #0 - bne _022F68A4 - cmp r4, #1 - bgt _022F6888 -_022F68A4: - add r0, sp, #0x10 - add r1, r0, r4, lsl #2 - b _022F68B4 -_022F68B0: - sub r6, r6, #1 -_022F68B4: - add r0, r1, r6, lsl #2 - ldr r0, [r0, #-4] - cmp r0, #0 - bne _022F68CC - cmp r6, #1 - bgt _022F68B0 -_022F68CC: - cmp sl, #0 - beq _022F6790 - cmp r6, #0 - movlt r0, #0 - strlt r0, [fp, #4] - strlt r0, [fp] - blt _022F6900 - add r1, sp, #0x10 - add r0, fp, #4 - add r1, r1, r6, lsl #2 - mov r2, r4, lsl #2 - bl memcpy - str r4, [fp] -_022F6900: - cmp r5, #0 - beq _022F6924 - ldr r2, [sp, #0x210] - add r1, sp, #0x214 - add r0, r5, #4 - mov r2, r2, lsl #2 - bl memcpy - ldr r0, [sp, #0x210] - str r0, [r5] -_022F6924: - mov r0, #5 - bl GsiLargeIntTimerExit - mov r0, #1 - add sp, sp, #0x314 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GsiLargeIntDiv - - arm_func_start GsiLargeIntSubDivide -GsiLargeIntSubDivide: ; 0x022F6938 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x214 - mov r6, r0 - mov r0, #6 - mov r5, r2 - mov r4, r3 - bl GsiLargeIntTimerEnter - ldr r2, [sp, #0x23c] - cmp r2, r4 - subls r0, r2, #1 - ldrls sb, [r6, r0, lsl #2] - movls ip, #0 - bls _022F6994 - sub r1, r2, #2 - sub r0, r4, #1 - sub r2, r2, #1 - ldr r2, [r6, r2, lsl #2] - ldr r1, [r6, r1, lsl #2] - ldr r0, [r5, r0, lsl #2] - orr ip, r2, #0 - and r0, r1, r0 - orr sb, r0, #0 -_022F6994: - sub r0, r4, #1 - ldr r2, [r5, r0, lsl #2] - mov r0, sb - mov r1, ip - mov r3, #0 - bl _ll_udiv - mov sb, r0 - mov r0, #0 - mov ip, r1 - add r8, sp, #0xc - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #8 -_022F69CC: - stmia r8!, {r0, r1, r2, r3} - stmia r8!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F69CC - str r0, [r8] - str sb, [sp, #0x10] - str ip, [sp, #0x14] - cmp ip, #0 - beq _022F6A00 - mvn r1, #0 - mov r0, #0 - str r1, [sp, #0x10] - str r0, [sp, #0x14] -_022F6A00: - mov r0, #1 - str r0, [sp, #0xc] - add r1, sp, #0x114 - str r1, [sp] - add r0, sp, #0x110 - str r0, [sp, #4] - mov r0, #0x40 - str r0, [sp, #8] - ldr r3, [sp, #0xc] - add r2, sp, #0x10 - mov r0, r5 - mov r1, r4 - bl GsiLargeIntMult - cmp r0, #0 - bne _022F6A58 - mov r0, #6 - bl GsiLargeIntTimerExit - add sp, sp, #0x214 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_022F6A58: - ldr r1, [sp, #0x110] - ldr r3, [sp, #0x23c] - add r0, sp, #0x114 - mov r2, r6 - bl GsiLargeIntCompare - cmp r0, #1 - bne _022F6AF0 - add sl, sp, #0x114 - add sb, sp, #0x110 - mov r8, #0x40 - add r7, sp, #0x10 -_022F6A84: - ldr r1, [sp, #0x10] - mov r0, r5 - mov r1, r1, lsr #1 - str r1, [sp, #0x10] - str sl, [sp] - str sb, [sp, #4] - str r8, [sp, #8] - ldr r3, [sp, #0xc] - mov r1, r4 - mov r2, r7 - bl GsiLargeIntMult - cmp r0, #0 - bne _022F6AD4 - mov r0, #6 - bl GsiLargeIntTimerExit - add sp, sp, #0x214 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_022F6AD4: - ldr r1, [sp, #0x110] - ldr r3, [sp, #0x23c] - mov r0, sl - mov r2, r6 - bl GsiLargeIntCompare - cmp r0, #1 - beq _022F6A84 -_022F6AF0: - add r0, sp, #0x23c - str r6, [sp] - str r0, [sp, #4] - ldr r1, [sp, #0x110] - ldr r3, [sp, #0x23c] - add r0, sp, #0x114 - mov r2, r6 - bl GsiLargeIntSub - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x24c] - mov r0, #6 - str r2, [r1] - bl GsiLargeIntTimerExit - mov r0, #1 - add sp, sp, #0x214 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr - arm_func_end GsiLargeIntSubDivide - - arm_func_start GsLargeIntSquareMod -GsLargeIntSquareMod: ; 0x022F6B38 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - sub sp, sp, #0x400 - mov r7, r0 - ldr r4, [r7] - mov r6, #0 - mov r0, #7 - str r1, [sp, #0xc] - str r2, [sp, #0x10] - mov r5, r6 - mov fp, r6 - str r6, [sp, #0x14] - bl GsiLargeIntTimerEnter - mov r0, r6 - add sb, sp, #0x218 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r8, #0x10 -_022F6B84: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r8, r8, #1 - bne _022F6B84 - mov r0, #0 - add sb, sp, #0x18 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r8, #0x10 -_022F6BAC: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r8, r8, #1 - bne _022F6BAC - cmp r4, #1 - mov sb, #1 - ble _022F6C44 - mov r0, #0 -_022F6BCC: - mov sl, #0 - cmp sb, #0 - ble _022F6C18 - add r1, sp, #0x18 - add ip, r1, sb, lsl #2 - add r3, r7, sb, lsl #2 -_022F6BE4: - ldr r8, [ip, sl, lsl #2] - ldr r2, [r3, #4] - add r1, r7, sl, lsl #2 - ldr r1, [r1, #4] - mov lr, #0 - umlal r8, lr, r2, r1 - adds r1, r6, r8 - str r1, [ip, sl, lsl #2] - adc r6, r5, lr - mov r5, #0 - add sl, sl, #1 - cmp sl, sb - blt _022F6BE4 -_022F6C18: - cmp r5, #0 - cmpeq r6, r0 - beq _022F6C38 - add r2, sb, sl - add r1, sp, #0x18 - str r6, [r1, r2, lsl #2] - mov r6, r5 - mov r5, #0 -_022F6C38: - add sb, sb, #1 - cmp sb, r4 - blt _022F6BCC -_022F6C44: - mov r1, r4, lsl #1 - cmp r1, #0 - mov r8, #0 - ble _022F6C8C - mov r2, r8 - mov r3, #1 - add r5, sp, #0x18 -_022F6C60: - ldr r6, [r5, r8, lsl #2] - and r0, r6, #0x80000000 - cmp r0, #0x80000000 - moveq sb, r3 - add r0, fp, r6, lsl #1 - movne sb, r2 - str r0, [r5, r8, lsl #2] - add r8, r8, #1 - mov fp, sb - cmp r8, r1 - blt _022F6C60 -_022F6C8C: - cmp r4, #0 - mov r8, #0 - ble _022F6CC8 - mov r6, r8 - add r2, sp, #0x218 -_022F6CA0: - add r0, r7, r8, lsl #2 - ldr r5, [r0, #4] - add r8, r8, #1 - umull r0, r3, r5, r5 - str r0, [r2, r6, lsl #2] - add r0, r2, r6, lsl #2 - str r3, [r0, #4] - cmp r8, r4 - add r6, r6, #2 - blt _022F6CA0 -_022F6CC8: - add r2, sp, #0x218 - str r1, [sp, #0x14] - add r0, sp, #0x14 - str r2, [sp] - str r0, [sp, #4] - mov r4, #0x80 - add r0, sp, #0x18 - mov r3, r1 - str r4, [sp, #8] - bl GsiLargeIntAdd - ldr r0, [sp, #0x10] - ldr r2, [sp, #0xc] - str r0, [sp] - ldr r1, [sp, #0x14] - add r0, sp, #0x218 - mov r3, #0 - bl GsiLargeIntDiv - mov r4, r0 - mov r0, #7 - bl GsiLargeIntTimerExit - mov r0, r4 - add sp, sp, #0x18 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GsLargeIntSquareMod - - arm_func_start GsLargeIntPowerMod -GsLargeIntPowerMod: ; 0x022F6D28 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x28 - sub sp, sp, #0x800 - mov r6, r0 - mov r0, #8 - mov r5, r1 - mov r4, r2 - mov r8, r3 - bl GsiLargeIntTimerEnter - mov r0, #0 - add sb, sp, #0x700 - add sb, sb, #0x24 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #8 -_022F6D68: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F6D68 - str r0, [sb] - mov r0, #0 - add sb, sp, #0x620 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #8 -_022F6D94: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F6D94 - str r0, [sb] - mov r0, #0 - add sb, sp, #0x500 - add sb, sb, #0x1c - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #8 -_022F6DC4: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F6DC4 - str r0, [sb] - mov r0, #0 - add sb, sp, #0x400 - add sb, sb, #0x18 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #8 -_022F6DF4: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F6DF4 - str r0, [sb] - mov r0, #0 - add sb, sp, #0x314 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #8 -_022F6E20: - stmia sb!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F6E20 - str r0, [sb] - add r0, sp, #0x210 - mov r1, r6 - mov r2, #0x104 - bl memcpy - add r0, sp, #0x10c - mov r1, r5 - mov r2, #0x104 - bl memcpy - add r0, sp, #8 - mov r1, r4 - mov r2, #0x104 - bl memcpy - add r0, sp, #0x210 - bl GsiLargeIntStripLeadingZeroes - add r0, sp, #0x10c - bl GsiLargeIntStripLeadingZeroes - add r0, sp, #8 - bl GsiLargeIntStripLeadingZeroes - ldr r3, [sp, #8] - cmp r3, #0 - bne _022F6EA8 - mov r1, #0 - mov r0, #8 - str r1, [r8] - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F6EA8: - cmp r3, #1 - ldreq r0, [sp, #0xc] - cmpeq r0, #1 - bne _022F6EDC - mov r1, #0 - str r1, [r8] - mov r0, #8 - str r1, [r8, #4] - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F6EDC: - ldr r0, [sp, #0x10c] - cmp r0, #0 - bne _022F6F0C - mov r1, #1 - str r1, [r8] - mov r0, #8 - str r1, [r8, #4] - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F6F0C: - ldr r0, [sp, #0xc] - tst r0, #1 - bne _022F6F3C - mov r1, #0 - str r1, [r8] - mov r0, #8 - str r1, [r8, #4] - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F6F3C: - ldr r1, [sp, #0x210] - add r0, sp, #0x214 - add r2, sp, #0xc - bl GsiLargeIntCompare - mvn r1, #0 - cmp r0, r1 - beq _022F6F6C - add r0, sp, #0x210 - add r1, sp, #8 - mov r3, r0 - mov r2, #0 - bl GsLargeIntDiv -_022F6F6C: - ldr r0, [sp, #0x210] - cmp r0, #0 - bne _022F6F9C - mov r1, #0 - str r1, [r8] - mov r0, #8 - str r1, [r8, #4] - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F6F9C: - ldr r1, [sp, #0x10c] - add r0, sp, #0x110 - sub r5, r1, #1 - ldr r0, [r0, r5, lsl #2] - mov r4, #0x20 - tst r0, #0x80000000 - bne _022F6FD8 - add r0, sp, #0x10c - add r0, r0, r5, lsl #2 - ldr r0, [r0, #4] - mov r2, #1 -_022F6FC8: - sub r4, r4, #1 - sub r1, r4, #1 - tst r0, r2, lsl r1 - beq _022F6FC8 -_022F6FD8: - mov r0, #0 - add r6, sp, #0x700 - add r4, r4, r5, lsl #5 - add r6, r6, #0x24 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r5, #8 -_022F6FF8: - stmia r6!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _022F6FF8 - ldr r1, [sp, #8] - str r0, [r6] - add r3, r1, #1 - cmp r3, #0x40 - str r3, [sp, #0x724] - addhi sp, sp, #0x28 - addhi sp, sp, #0x800 - movhi r0, #0 - ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r2, sp, #0x700 - add r2, r2, #0x28 - add r0, sp, #8 - add r1, sp, #4 - sub r3, r3, #1 - mov r5, #1 - str r5, [r2, r3, lsl #2] - bl GsiLargeIntInverseMod - add r0, sp, #0x700 - add r0, r0, #0x24 - add r1, sp, #8 - add r3, sp, #0x620 - mov r2, #0 - bl GsLargeIntDiv - cmp r0, #0 - bne _022F7084 - mov r0, #8 - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F7084: - add r2, sp, #0x500 - add r0, sp, #0x620 - add r1, sp, #8 - add r2, r2, #0x1c - bl GsLargeIntSquareMod - cmp r0, #0 - bne _022F70B8 - mov r0, #8 - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F70B8: - add r1, sp, #0x314 - str r1, [sp] - add r1, sp, #0x500 - ldr r3, [sp, #4] - add r0, sp, #0x210 - add r1, r1, #0x1c - add r2, sp, #8 - bl GsiLargeIntMultM - cmp r0, #0 - bne _022F70F8 - mov r0, #8 - bl GsiLargeIntTimerExit - add sp, sp, #0x28 - add sp, sp, #0x800 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F70F8: - add r1, sp, #0x620 - mov r0, r8 - mov r2, #0x104 - bl memcpy - subs r7, r4, #1 - bmi _022F7170 - add sb, sp, #0x314 - add r6, sp, #8 - add r4, sp, #0x10c -_022F711C: - str r8, [sp] - ldr r3, [sp, #4] - mov r0, r8 - mov r1, r8 - mov r2, r6 - bl GsiLargeIntMultM - mov r0, r7, lsr #5 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #4] - and r1, r7, #0x1f - and r0, r0, r5, lsl r1 - cmp r0, r5, lsl r1 - bne _022F7168 - str r8, [sp] - ldr r3, [sp, #4] - mov r0, r8 - mov r1, sb - mov r2, r6 - bl GsiLargeIntMultM -_022F7168: - subs r7, r7, #1 - bpl _022F711C -_022F7170: - mov r0, #1 - str r0, [sp, #0x418] - str r0, [sp, #0x41c] - str r8, [sp] - add r1, sp, #0x400 - ldr r3, [sp, #4] - add r1, r1, #0x18 - add r2, sp, #8 - mov r0, r8 - bl GsiLargeIntMultM - mov r0, #8 - bl GsiLargeIntTimerExit - mov r0, #1 - add sp, sp, #0x28 - add sp, sp, #0x800 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GsLargeIntPowerMod - - arm_func_start GsiLargeIntMultM -GsiLargeIntMultM: ; 0x022F71B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x218 - mov r6, r0 - mov r0, #0 - mov r5, r1 - ldr r1, [sp, #0x240] - mov r4, r2 - str r3, [sp, #0xc] - str r0, [sp, #0x14] - str r1, [sp, #0x240] - ldr r1, [r4] - add r8, sp, #0x18 - str r1, [sp, #0x10] - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r7, #0x10 -_022F71F4: - stmia r8!, {r0, r1, r2, r3} - stmia r8!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _022F71F4 - add r1, sp, #0x18 - add r0, sp, #0x14 - str r1, [sp] - str r0, [sp, #4] - mov r0, #0x80 - str r0, [sp, #8] - ldr r1, [r6] - ldr r3, [r5] - add r0, r6, #4 - add r2, r5, #4 - bl GsiLargeIntMult - cmp r0, #0 - addeq sp, sp, #0x218 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r6, [r4] - ldr r0, [sp, #0x14] - add r2, sp, #0x18 - sub r3, r6, #1 - add r1, r4, #4 - cmp r0, r6, lsl #1 - add fp, r2, r3, lsl #2 - add r5, r1, r3, lsl #2 - bhs _022F7284 - rsb r1, r0, r6, lsl #1 - add r0, r2, r0, lsl #2 - mov r2, r1, lsl #2 - mov r1, #0 - bl memset - ldr r0, [r4] - mov r0, r0, lsl #1 - str r0, [sp, #0x14] -_022F7284: - add lr, sp, #0x18 - cmp lr, fp - bhi _022F735C -_022F7290: - ldr r1, [lr] - ldr r0, [sp, #0xc] - add r6, r4, #4 - umull sb, r1, r0, r1 - mov sl, #0 - cmp r6, r5 - mov r7, lr - mov r8, sl - cmpls r6, r5 - bhi _022F72EC - mov r0, sl -_022F72BC: - ldr r1, [r6], #4 - ldr ip, [r7] - umull r3, r2, sb, r1 - adds r3, ip, r3 - mla r2, sb, r0, r2 - mla r2, r8, r1, r2 - adc r1, r2, #0 - adds sl, sl, r3 - str sl, [r7], #4 - adc sl, r1, #0 - cmp r6, r5 - bls _022F72BC -_022F72EC: - ldr r0, [sp, #0x14] - mov r3, #0 - add r1, sp, #0x18 - sub r0, r0, #1 - add r2, r1, r0, lsl #2 - mov r8, r3 - mov r1, r3 - mov r0, r3 - b _022F7320 -_022F7310: - ldr r6, [r7] - adds sl, r6, sl - str sl, [r7], #4 - adc sl, r3, #0 -_022F7320: - cmp r8, r1 - cmpeq sl, r0 - beq _022F7334 - cmp r7, r2 - bls _022F7310 -_022F7334: - cmp r8, #0 - cmpeq sl, #0 - beq _022F7350 - ldr r0, [sp, #0x14] - str sl, [r7] - add r0, r0, #1 - str r0, [sp, #0x14] -_022F7350: - add lr, lr, #4 - cmp lr, fp - bls _022F7290 -_022F735C: - ldr r0, [sp, #0x10] - add r1, sp, #0x18 - add r5, r1, r0, lsl #2 - ldr r2, [sp, #0x14] - ldr r1, [sp, #0x10] - ldr r3, [r4] - sub r1, r2, r1 - mov r0, r5 - add r2, r4, #4 - bl GsiLargeIntCompare - mvn r1, #0 - cmp r0, r1 - beq _022F740C - ldr r0, [sp, #0x240] - ldr r3, [sp, #0x10] - add r0, r0, #4 - str r0, [sp] - ldr r0, [sp, #0x240] - mov r2, r5 - str r0, [sp, #4] - ldr r6, [sp, #0x14] - ldr r1, [r4] - add r0, r4, #4 - sub r3, r6, r3 - bl GsiLargeIntSub - cmp r0, #0 - bne _022F746C - mov r0, #0 - add r5, sp, #0x18 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r4, #0x10 -_022F73E0: - stmia r5!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _022F73E0 - ldr r0, [sp, #0x240] - mov r1, #0 - mov r2, #0x104 - bl memset - add sp, sp, #0x218 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F740C: - ldr r0, [sp, #0x240] - mov r1, #0 - mov r2, #0x104 - bl memset - ldr r1, [r4] - ldr r0, [sp, #0x240] - add r3, sp, #0x18 - str r1, [r0], #4 - ldr r2, [sp, #0x14] - ldr r1, [sp, #0x10] - sub r2, r2, r1 - add r1, r3, r1, lsl #2 - mov r2, r2, lsl #2 - bl memcpy - mov r0, #0 - add r5, sp, #0x18 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r4, #0x10 -_022F745C: - stmia r5!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _022F745C -_022F746C: - mov r0, #1 - add sp, sp, #0x218 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GsiLargeIntMultM - - arm_func_start GsiLargeIntInverseMod -GsiLargeIntInverseMod: ; 0x022F7478 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r3, #2 - mov r2, #0 - ldr r5, [r0, #4] - mov r0, r2 - mov lr, r3 - mov ip, #1 - mov r4, r2 - mvn r6, #0 -_022F749C: - umull sl, sb, r5, ip - mla sb, r5, r0, sb - mov r7, r2, lsl #1 - adds r8, r6, r3, lsl #1 - and r8, sl, r8 - orr r7, r7, r3, lsr #31 - adc r7, r7, r6 - mla sb, r4, ip, sb - and r7, sb, r7 - cmp r2, r7 - cmpeq r3, r8 - bhs _022F74D4 - adds ip, ip, r3 - adc r0, r0, r2 -_022F74D4: - mov r2, r2, lsl #1 - add lr, lr, #1 - orr r2, r2, r3, lsr #31 - cmp lr, #0x20 - mov r3, r3, lsl #1 - bls _022F749C - subs r0, r3, ip - str r0, [r1] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end GsiLargeIntInverseMod - - arm_func_start GsLargeIntReverseBytes -GsLargeIntReverseBytes: ; 0x022F74FC - ldr r1, [r0] - add r2, r0, #4 - add r0, r2, r1, lsl #2 - cmp r1, #0 - sub r3, r0, #1 - moveq r0, #1 - bxeq lr - cmp r2, r3 - bhs _022F7538 -_022F7520: - ldrsb r0, [r3] - ldrsb r1, [r2] - strb r0, [r2], #1 - strb r1, [r3], #-1 - cmp r2, r3 - blo _022F7520 -_022F7538: - mov r0, #1 - bx lr - arm_func_end GsLargeIntReverseBytes - - arm_func_start GsLargeIntSetFromMemoryStream -GsLargeIntSetFromMemoryStream: ; 0x022F7540 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r2 - and r3, r5, #3 - mov r4, r0 - rsb r0, r3, #4 - mov ip, #0 - add r3, r4, #4 - and r0, r0, #3 - add r0, r3, r0 - str ip, [r4, #4] - bl memcpy - add r0, r5, #3 - mov r1, r0, lsr #2 - mov r0, r4 - str r1, [r4] - bl GsLargeIntReverseBytes - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GsLargeIntSetFromMemoryStream - - arm_func_start GsLargeIntWriteToMemoryStream -GsLargeIntWriteToMemoryStream: ; 0x022F7584 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x104 - mov r2, r0 - mov r4, r1 - mov r1, r2 - add r0, sp, #0 - mov r2, #0x104 - bl memcpy - add r0, sp, #0 - bl GsLargeIntReverseBytes - ldr r2, [sp] - add r1, sp, #4 - mov r0, r4 - mov r2, r2, lsl #2 - bl memcpy - mov r0, #1 - add sp, sp, #0x104 - ldmia sp!, {r3, r4, pc} - arm_func_end GsLargeIntWriteToMemoryStream - - arm_func_start swap_byte_gsi -swap_byte_gsi: ; 0x022F75CC - ldrb r3, [r0] - ldrb r2, [r1] - strb r2, [r0] - strb r3, [r1] - bx lr - arm_func_end swap_byte_gsi - - arm_func_start RC4Init_Gsi -RC4Init_Gsi: ; 0x022F75E0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - movs r8, r1 - mov r7, r2 - mov sb, r0 - mov r5, r4 - cmpne r7, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - strb r4, [sb] - mov r1, r4 - strb r4, [sb, #1] -_022F760C: - add r0, sb, r1 - strb r1, [r0, #2] - add r1, r1, #1 - cmp r1, #0x100 - blt _022F760C - mov r6, #0 - add sl, sb, #2 -_022F7628: - add r0, sb, r6 - ldrb r2, [r0, #2] - ldrb r1, [r8, r5] - add r0, sl, r6 - add r2, r4, r2 - add r1, r2, r1 - and r4, r1, #0xff - add r1, sl, r4 - bl swap_byte_gsi - mov r1, r7 - add r0, r5, #1 - bl _s32_div_f - add r6, r6, #1 - cmp r6, #0x100 - and r5, r1, #0xff - blt _022F7628 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end RC4Init_Gsi - - arm_func_start RC4Encrypt_Gsi -RC4Encrypt_Gsi: ; 0x022F766C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r3 - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r5, #0 - cmp r6, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r4, sb, #2 -_022F7690: - ldrb r0, [sb] - add r1, r0, #1 - and r0, r1, #0xff - strb r1, [sb] - add r0, sb, r0 - ldrb r1, [sb, #1] - ldrb r0, [r0, #2] - add r0, r1, r0 - strb r0, [sb, #1] - ldrb r2, [sb] - and r0, r0, #0xff - add r1, r4, r0 - add r0, r4, r2 - bl swap_byte_gsi - ldrb r2, [sb] - ldrb r1, [sb, #1] - ldrb r0, [r8, r5] - add r2, sb, r2 - add r1, sb, r1 - ldrb r2, [r2, #2] - ldrb r1, [r1, #2] - add r1, r2, r1 - and r1, r1, #0xff - add r1, sb, r1 - ldrb r1, [r1, #2] - eor r0, r0, r1 - strb r0, [r7, r5] - add r5, r5, #1 - cmp r5, r6 - blt _022F7690 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end RC4Encrypt_Gsi - - arm_func_start Sha1Reset_Gsi -Sha1Reset_Gsi: ; 0x022F770C - cmp r0, #0 - moveq r0, #1 - bxeq lr - mov r3, #0 - str r3, [r0, #0x14] - str r3, [r0, #0x18] - ldr r1, _022F7760 ; =0x67452301 - strh r3, [r0, #0x1c] - ldr r2, _022F7764 ; =0xEFCDAB89 - str r1, [r0] - ldr r1, _022F7768 ; =0x98BADCFE - str r2, [r0, #4] - ldr r2, _022F776C ; =0x10325476 - str r1, [r0, #8] - ldr r1, _022F7770 ; =0xC3D2E1F0 - str r2, [r0, #0xc] - str r1, [r0, #0x10] - str r3, [r0, #0x60] - str r3, [r0, #0x64] - mov r0, r3 - bx lr - .align 2, 0 -_022F7760: .word 0x67452301 -_022F7764: .word 0xEFCDAB89 -_022F7768: .word 0x98BADCFE -_022F776C: .word 0x10325476 -_022F7770: .word 0xC3D2E1F0 - arm_func_end Sha1Reset_Gsi - - arm_func_start Sha1Result_Gsi -Sha1Result_Gsi: ; 0x022F7774 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - cmpne r4, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x64] - cmp r1, #0 - movne r0, r1 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x60] - cmp r1, #0 - bne _022F77D8 - bl Sha1PadMessage - mov r2, #0 - mov r1, r2 -_022F77B4: - add r0, r5, r2 - add r2, r2, #1 - strb r1, [r0, #0x1e] - cmp r2, #0x40 - blt _022F77B4 - str r1, [r5, #0x14] - str r1, [r5, #0x18] - mov r0, #1 - str r0, [r5, #0x60] -_022F77D8: - mov r2, #0 -_022F77DC: - bic r1, r2, #3 - and r0, r2, #3 - rsb r0, r0, #3 - ldr r1, [r5, r1] - mov r0, r0, lsl #3 - mov r0, r1, lsr r0 - strb r0, [r4, r2] - add r2, r2, #1 - cmp r2, #0x14 - blt _022F77DC - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Sha1Result_Gsi - - arm_func_start Sha1Input_Ghi -Sha1Input_Ghi: ; 0x022F780C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r4, r2 - mov r6, r0 - mov r5, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - cmpne r5, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0x60] - cmp r0, #0 - movne r0, #3 - strne r0, [r6, #0x64] - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0x64] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r7, #1 - b _022F78B0 -_022F785C: - ldrsh r0, [r6, #0x1c] - mov r2, r0 - add r0, r0, #1 - strh r0, [r6, #0x1c] - ldrb r1, [r5] - add r0, r6, r2 - strb r1, [r0, #0x1e] - ldr r0, [r6, #0x14] - adds r0, r0, #8 - str r0, [r6, #0x14] - bne _022F7898 - ldr r0, [r6, #0x18] - adds r0, r0, #1 - str r0, [r6, #0x18] - streq r7, [r6, #0x64] -_022F7898: - ldrsh r0, [r6, #0x1c] - cmp r0, #0x40 - bne _022F78AC - mov r0, r6 - bl Sha1ProcessMessageBlock -_022F78AC: - add r5, r5, #1 -_022F78B0: - cmp r4, #0 - sub r4, r4, #1 - beq _022F78C8 - ldr r0, [r6, #0x64] - cmp r0, #0 - beq _022F785C -_022F78C8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Sha1Input_Ghi - - arm_func_start Sha1ProcessMessageBlock -Sha1ProcessMessageBlock: ; 0x022F78D0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x150 - ldr r1, _022F7B20 ; =ov00_02318474 - add r5, sp, #0 - mov lr, r0 - ldmia r1, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - mov r4, #0 - mov r5, r4 - add r2, sp, #0x10 -_022F78F8: - add r3, lr, r5 - ldrb r0, [r3, #0x1e] - add r5, r5, #4 - mov r1, r0, lsl #0x18 - str r1, [r2, r4, lsl #2] - ldrb r0, [r3, #0x1f] - orr r1, r1, r0, lsl #16 - str r1, [r2, r4, lsl #2] - ldrb r0, [r3, #0x20] - orr r1, r1, r0, lsl #8 - str r1, [r2, r4, lsl #2] - ldrb r0, [r3, #0x21] - orr r0, r1, r0 - str r0, [r2, r4, lsl #2] - add r4, r4, #1 - cmp r4, #0x10 - blt _022F78F8 - mov r5, #0x10 - add r4, sp, #0x10 -_022F7944: - add r3, r4, r5, lsl #2 - ldr r1, [r3, #-0xc] - ldr r0, [r3, #-0x20] - ldr r2, [r3, #-0x38] - eor r0, r1, r0 - ldr r1, [r3, #-0x40] - eor r0, r2, r0 - eor r1, r1, r0 - mov r0, r1, lsr #0x1f - orr r0, r0, r1, lsl #1 - str r0, [r4, r5, lsl #2] - add r5, r5, #1 - cmp r5, #0x50 - blt _022F7944 - ldmia lr, {r0, r1, r2, r3, ip} - ldr r8, [sp] - mov sb, #0 - add r7, sp, #0x10 -_022F798C: - mvn r6, r1 - mov r5, r0, lsr #0x1b - and r4, r1, r2 - and sl, r6, r3 - ldr r6, [r7, sb, lsl #2] - add sb, sb, #1 - orr r4, r4, sl - orr r5, r5, r0, lsl #5 - add r4, r5, r4 - add r4, ip, r4 - mov ip, r3 - add r5, r6, r4 - mov r4, r1, lsr #2 - mov r3, r2 - orr r2, r4, r1, lsl #30 - cmp sb, #0x14 - mov r1, r0 - add r0, r8, r5 - blt _022F798C - ldr r6, [sp, #4] - mov r7, #0x14 - add r5, sp, #0x10 -_022F79E4: - mov sb, r0, lsr #0x1b - eor r8, r1, r2 - ldr r4, [r5, r7, lsl #2] - orr sb, sb, r0, lsl #5 - eor r8, r3, r8 - add r8, sb, r8 - add r8, ip, r8 - add r7, r7, #1 - mov ip, r3 - add r8, r4, r8 - mov r4, r1, lsr #2 - mov r3, r2 - orr r2, r4, r1, lsl #30 - cmp r7, #0x28 - mov r1, r0 - add r0, r6, r8 - blt _022F79E4 - ldr r8, [sp, #8] - mov sb, #0x28 - add r7, sp, #0x10 -_022F7A34: - orr r6, r2, r3 - mov r5, r0, lsr #0x1b - and r4, r2, r3 - and sl, r1, r6 - ldr r6, [r7, sb, lsl #2] - add sb, sb, #1 - orr r4, r4, sl - orr r5, r5, r0, lsl #5 - add r4, r5, r4 - add r4, ip, r4 - mov ip, r3 - add r5, r6, r4 - mov r4, r1, lsr #2 - mov r3, r2 - orr r2, r4, r1, lsl #30 - cmp sb, #0x3c - mov r1, r0 - add r0, r8, r5 - blt _022F7A34 - ldr r6, [sp, #0xc] - mov r7, #0x3c - add r5, sp, #0x10 -_022F7A8C: - mov sb, r0, lsr #0x1b - eor r8, r1, r2 - ldr r4, [r5, r7, lsl #2] - orr sb, sb, r0, lsl #5 - eor r8, r3, r8 - add r8, sb, r8 - add r8, ip, r8 - add r4, r4, r8 - add r7, r7, #1 - mov ip, r3 - add r8, r6, r4 - mov r4, r1, lsr #2 - mov r3, r2 - orr r2, r4, r1, lsl #30 - cmp r7, #0x50 - mov r1, r0 - mov r0, r8 - blt _022F7A8C - ldr r4, [lr] - mov r0, #0 - add r4, r4, r8 - str r4, [lr] - ldr r4, [lr, #4] - add r1, r4, r1 - str r1, [lr, #4] - ldr r1, [lr, #8] - add r1, r1, r2 - str r1, [lr, #8] - ldr r1, [lr, #0xc] - add r1, r1, r3 - str r1, [lr, #0xc] - ldr r1, [lr, #0x10] - add r1, r1, ip - str r1, [lr, #0x10] - strh r0, [lr, #0x1c] - add sp, sp, #0x150 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F7B20: .word ov00_02318474 - arm_func_end Sha1ProcessMessageBlock - - arm_func_start Sha1PadMessage -Sha1PadMessage: ; 0x022F7B24 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r1, [r4, #0x1c] - add r0, r1, #1 - cmp r1, #0x37 - strh r0, [r4, #0x1c] - ble _022F7BB8 - add r0, r4, r1 - mov r1, #0x80 - strb r1, [r0, #0x1e] - ldrsh r0, [r4, #0x1c] - cmp r0, #0x40 - bge _022F7B7C - mov r1, #0 -_022F7B5C: - ldrsh r2, [r4, #0x1c] - add r0, r4, r0 - add r2, r2, #1 - strh r2, [r4, #0x1c] - strb r1, [r0, #0x1e] - ldrsh r0, [r4, #0x1c] - cmp r0, #0x40 - blt _022F7B5C -_022F7B7C: - mov r0, r4 - bl Sha1ProcessMessageBlock - ldrsh r0, [r4, #0x1c] - cmp r0, #0x38 - bge _022F7BF4 - mov r1, #0 -_022F7B94: - ldrsh r2, [r4, #0x1c] - add r0, r4, r0 - add r2, r2, #1 - strh r2, [r4, #0x1c] - strb r1, [r0, #0x1e] - ldrsh r0, [r4, #0x1c] - cmp r0, #0x38 - blt _022F7B94 - b _022F7BF4 -_022F7BB8: - add r0, r4, r1 - mov r1, #0x80 - strb r1, [r0, #0x1e] - ldrsh r0, [r4, #0x1c] - cmp r0, #0x38 - bge _022F7BF4 - mov r1, #0 -_022F7BD4: - ldrsh r2, [r4, #0x1c] - add r0, r4, r0 - add r2, r2, #1 - strh r2, [r4, #0x1c] - strb r1, [r0, #0x1e] - ldrsh r0, [r4, #0x1c] - cmp r0, #0x38 - blt _022F7BD4 -_022F7BF4: - ldr r1, [r4, #0x18] - mov r0, r4 - mov r1, r1, lsr #0x18 - strb r1, [r4, #0x56] - ldr r1, [r4, #0x18] - mov r1, r1, lsr #0x10 - strb r1, [r4, #0x57] - ldr r1, [r4, #0x18] - mov r1, r1, lsr #8 - strb r1, [r4, #0x58] - ldr r1, [r4, #0x18] - strb r1, [r4, #0x59] - ldr r1, [r4, #0x14] - mov r1, r1, lsr #0x18 - strb r1, [r4, #0x5a] - ldr r1, [r4, #0x14] - mov r1, r1, lsr #0x10 - strb r1, [r4, #0x5b] - ldr r1, [r4, #0x14] - mov r1, r1, lsr #8 - strb r1, [r4, #0x5c] - ldr r1, [r4, #0x14] - strb r1, [r4, #0x5d] - bl Sha1ProcessMessageBlock - ldmia sp!, {r4, pc} - arm_func_end Sha1PadMessage - - arm_func_start GsUdpEngineGetEngine -GsUdpEngineGetEngine: ; 0x022F7C58 - ldr r0, _022F7C60 ; =ov00_0232896C - bx lr - .align 2, 0 -_022F7C60: .word ov00_0232896C - arm_func_end GsUdpEngineGetEngine - - arm_func_start GsUdpMsgHandlerFree -GsUdpMsgHandlerFree: ; 0x022F7C64 - ldr ip, _022F7C70 ; =ArrayFree_Gsi - ldr r0, [r0, #0x20] - bx ip - .align 2, 0 -_022F7C70: .word ArrayFree_Gsi - arm_func_end GsUdpMsgHandlerFree - - arm_func_start GsUdpMsgHandlerCompare -GsUdpMsgHandlerCompare: ; 0x022F7C74 - ldr ip, _022F7C80 ; =memcmp - mov r2, #0x10 - bx ip - .align 2, 0 -_022F7C80: .word memcmp - arm_func_end GsUdpMsgHandlerCompare - - arm_func_start GsUdpMsgHandlerCompare2 -GsUdpMsgHandlerCompare2: ; 0x022F7C84 - ldr ip, _022F7C98 ; =memcmp - add r0, r0, #0x10 - add r1, r1, #0x10 - mov r2, #0x10 - bx ip - .align 2, 0 -_022F7C98: .word memcmp - arm_func_end GsUdpMsgHandlerCompare2 - - arm_func_start GsUdpRemotePeerCompare -GsUdpRemotePeerCompare: ; 0x022F7C9C - ldr r3, [r0] - ldr r2, [r1] - cmp r3, r2 - movne r0, #1 - bxne lr - ldrh r2, [r0, #4] - ldrh r0, [r1, #4] - cmp r2, r0 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end GsUdpRemotePeerCompare - - arm_func_start GsUdpRemotePeerCompare2 -GsUdpRemotePeerCompare2: ; 0x022F7CC8 - ldr r2, [r0, #8] - ldr r0, [r1, #8] - cmp r2, r0 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end GsUdpRemotePeerCompare2 - - arm_func_start GsUdpSocketError -GsUdpSocketError: ; 0x022F7CE0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - bl GsUdpEngineGetEngine - mov r7, r0 - ldr r2, [r7, #0x24] - cmp r2, #0 - beq _022F7D04 - ldr r1, [r7, #0x2c] - mov r0, #3 - blx r2 -_022F7D04: - ldr r0, [r7, #8] - bl ArrayLength_Gsi - mov r6, r0 - mov r5, #0 - cmp r6, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - mov r4, #3 -_022F7D20: - ldr r0, [r7, #8] - mov r1, r5 - bl ArrayNth_Gsi - ldr r2, [r0, #0x34] - cmp r2, #0 - beq _022F7D44 - ldr r1, [r0, #0x38] - mov r0, r4 - blx r2 -_022F7D44: - add r5, r5, #1 - cmp r5, r6 - blt _022F7D20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GsUdpSocketError - - arm_func_start GsUdpClosedRoutingCB -GsUdpClosedRoutingCB: ; 0x022F7D54 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov r8, r1 - mov sb, r0 - bl GsUdpEngineGetEngine - sub r1, r8, #2 - cmp r1, #1 - mov r5, r0 - movls r8, #2 - bls _022F7D84 - cmp r8, #4 - moveq r8, #3 -_022F7D84: - ldr r0, [r5, #8] - bl ArrayLength_Gsi - mov r7, r0 - cmp r7, #0 - mov r6, #0 - ble _022F7DF0 -_022F7D9C: - ldr r0, [r5, #8] - mov r1, r6 - bl ArrayNth_Gsi - mov r4, r0 - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _022F7DE4 - mov r0, sb - bl Gt2GetRemoteIP - mov sl, r0 - mov r0, sb - bl Gt2GetRemotePort - mov r1, r0 - mov r0, sl - mov r2, r8 - ldr r3, [r4, #0x38] - ldr r4, [r4, #0x24] - blx r4 -_022F7DE4: - add r6, r6, #1 - cmp r6, r7 - blt _022F7D9C -_022F7DF0: - ldr r0, [r5, #0x14] - cmp r0, #0 - beq _022F7E28 - mov r0, sb - bl Gt2GetRemoteIP - mov r4, r0 - mov r0, sb - bl Gt2GetRemotePort - mov r1, r0 - ldr r3, [r5, #0x2c] - mov r0, r4 - mov r2, r8 - ldr r4, [r5, #0x14] - blx r4 -_022F7E28: - str sb, [sp, #0xc] - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #4] - ldr r2, _022F7E68 ; =GsUdpRemotePeerCompare2 - add r1, sp, #4 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r5, #4] - bl ArrayDeleteAt_Gsi - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F7E68: .word GsUdpRemotePeerCompare2 - arm_func_end GsUdpClosedRoutingCB - - arm_func_start GsUdpConnectedRoutingCB -GsUdpConnectedRoutingCB: ; 0x022F7E6C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - mov r4, r1 - mov r5, r0 - bl GsUdpEngineGetEngine - mov r7, r0 - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _022F7EE0 -_022F7E90: ; jump table - b _022F7ED4 ; case 0 - b _022F7EE0 ; case 1 - b _022F7EBC ; case 2 - b _022F7EE0 ; case 3 - b _022F7EE0 ; case 4 - b _022F7EE0 ; case 5 - b _022F7EC8 ; case 6 - b _022F7EB0 ; case 7 -_022F7EB0: - mov r0, #7 - str r0, [sp, #4] - b _022F7EE8 -_022F7EBC: - mov r0, #2 - str r0, [sp, #4] - b _022F7EE8 -_022F7EC8: - mov r0, #6 - str r0, [sp, #4] - b _022F7EE8 -_022F7ED4: - mov r0, #0 - str r0, [sp, #4] - b _022F7EE8 -_022F7EE0: - mov r0, #0xd - str r0, [sp, #4] -_022F7EE8: - cmp r4, #2 - bne _022F7F38 - mov r0, r5 - bl Gt2GetRemoteIP - str r0, [sp, #0x14] - mov r0, r5 - bl Gt2GetRemotePort - strh r0, [sp, #0x18] - mov r3, #0 - str r3, [sp] - ldr r0, [r7, #4] - ldr r2, _022F8080 ; =GsUdpRemotePeerCompare - add r1, sp, #0x14 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _022F7F38 - ldr r0, [r7, #4] - bl ArrayDeleteAt_Gsi -_022F7F38: - ldr r0, [r7, #8] - bl ArrayLength_Gsi - mov sb, r0 - cmp sb, #0 - mov r8, #0 - ble _022F8010 - mvn r6, #0 -_022F7F54: - ldr r0, [r7, #8] - mov r1, r8 - bl ArrayNth_Gsi - mov sl, r0 - mov r0, r5 - bl Gt2GetRemoteIP - str r0, [sp, #8] - mov r0, r5 - bl Gt2GetRemotePort - strh r0, [sp, #0xc] - mov r0, #0 - str r0, [sp] - ldr r0, [sl, #0x20] - ldr r2, _022F8080 ; =GsUdpRemotePeerCompare - add r1, sp, #8 - mov r3, #0 - bl ArraySearch_Gsi - mov fp, r0 - cmp fp, r6 - beq _022F8004 - ldr r0, [sl, #0x2c] - cmp r0, #0 - beq _022F7FF0 - cmp r4, #2 - moveq r6, #1 - mov r0, r5 - movne r6, #0 - bl Gt2GetRemoteIP - mov r4, r0 - mov r0, r5 - bl Gt2GetRemotePort - ldr r1, [sl, #0x38] - ldr r2, [sp, #4] - str r1, [sp] - mov r1, r0 - mov r0, r4 - ldr r4, [sl, #0x2c] - mov r3, r6 - blx r4 -_022F7FF0: - ldr r0, [sl, #0x20] - mov r1, fp - bl ArrayDeleteAt_Gsi - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F8004: - add r8, r8, #1 - cmp r8, sb - blt _022F7F54 -_022F8010: - ldr r0, [r7, #0x30] - cmp r0, #0 - addle sp, sp, #0x20 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r7, #0x10] - cmp r0, #0 - beq _022F806C - cmp r4, #2 - moveq r8, #1 - mov r0, r5 - movne r8, #0 - bl Gt2GetRemoteIP - mov r6, r0 - mov r0, r5 - bl Gt2GetRemotePort - ldr r2, [r7, #0x2c] - mov r1, r0 - str r2, [sp] - ldr r4, [r7, #0x10] - ldr r2, [sp, #4] - mov r0, r6 - mov r3, r8 - blx r4 -_022F806C: - ldr r0, [r7, #0x30] - sub r0, r0, #1 - str r0, [r7, #0x30] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F8080: .word GsUdpRemotePeerCompare - arm_func_end GsUdpConnectedRoutingCB - - arm_func_start GsUdpPingRoutingCB -GsUdpPingRoutingCB: ; 0x022F8084 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r5, r0 - mov r4, r1 - bl GsUdpEngineGetEngine - mov r8, r0 - ldr r0, [r8, #8] - bl ArrayLength_Gsi - mov sb, r0 - cmp sb, #0 - mov r6, #0 - ble _022F8108 -_022F80B0: - ldr r0, [r8, #8] - mov r1, r6 - bl ArrayNth_Gsi - mov r7, r0 - ldr r0, [r7, #0x30] - cmp r0, #0 - beq _022F80FC - mov r0, r5 - bl Gt2GetRemoteIP - mov r6, r0 - mov r0, r5 - bl Gt2GetRemotePort - mov r1, r0 - ldr r3, [r7, #0x38] - ldr r5, [r7, #0x30] - mov r0, r6 - mov r2, r4 - blx r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F80FC: - add r6, r6, #1 - cmp r6, sb - blt _022F80B0 -_022F8108: - ldr r0, [r8, #0x18] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r5 - bl Gt2GetRemoteIP - mov r6, r0 - mov r0, r5 - bl Gt2GetRemotePort - mov r1, r0 - ldr r3, [r8, #0x2c] - ldr r5, [r8, #0x18] - mov r0, r6 - mov r2, r4 - blx r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GsUdpPingRoutingCB - - arm_func_start GsUdpReceivedRoutingCB -GsUdpReceivedRoutingCB: ; 0x022F8144 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x44 - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r4, r3 - bl GsUdpEngineGetEngine - mov sl, r0 - cmp r5, #0x10 - blt _022F8218 - add r8, sp, #0x18 - mov r3, r6 - mov r2, #8 -_022F8178: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [r8] - strb r0, [r8, #1] - add r8, r8, #2 - bne _022F8178 - mov r3, #0 - str r3, [sp] - ldr r0, [sl, #8] - ldr r2, _022F8268 ; =GsUdpMsgHandlerCompare2 - add r1, sp, #8 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _022F8218 - ldr r0, [sl, #8] - bl ArrayNth_Gsi - mov sb, r0 - ldr r0, [sb, #0x28] - cmp r0, #0 - beq _022F8218 - mov r0, r7 - bl Gt2GetRemoteIP - mov r8, r0 - mov r0, r7 - bl Gt2GetRemotePort - str r4, [sp] - ldr r2, [sb, #0x38] - mov r1, r0 - str r2, [sp, #4] - ldr r4, [sb, #0x28] - mov r0, r8 - add r2, r6, #0x10 - sub r3, r5, #0x10 - blx r4 - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F8218: - ldr r0, [sl, #0x1c] - cmp r0, #0 - addeq sp, sp, #0x44 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r7 - bl Gt2GetRemoteIP - mov r8, r0 - mov r0, r7 - bl Gt2GetRemotePort - str r4, [sp] - ldr r2, [sl, #0x2c] - mov r1, r0 - str r2, [sp, #4] - ldr r4, [sl, #0x1c] - mov r0, r8 - mov r2, r6 - mov r3, r5 - blx r4 - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F8268: .word GsUdpMsgHandlerCompare2 - arm_func_end GsUdpReceivedRoutingCB - - arm_func_start GsUdpUnrecognizedMsgCB -GsUdpUnrecognizedMsgCB: ; 0x022F826C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl GsUdpEngineGetEngine - ldr lr, [r0, #0x28] - cmp lr, #0 - beq _022F82C0 - ldr ip, [r0, #0x2c] - ldr r3, [sp, #0x18] - mov r0, r6 - mov r1, r5 - mov r2, r4 - str ip, [sp] - blx lr - cmp r0, #0 - movne r0, #1 - add sp, sp, #4 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_022F82C0: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end GsUdpUnrecognizedMsgCB - - arm_func_start GsUdpConnAttemptCB -GsUdpConnAttemptCB: ; 0x022F82CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x60 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GsUdpEngineGetEngine - ldr r1, [sp, #0x80] - mov r4, r0 - cmp r1, #0x10 - blt _022F8390 - ldr r3, [sp, #0x7c] - add ip, sp, #0x24 - mov r2, #8 -_022F8300: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - bne _022F8300 - str r6, [sp, #0x18] - strh r5, [sp, #0x1c] - str r7, [sp, #0x20] - ldr r0, [r4, #4] - add r1, sp, #0x18 - bl ArrayAppend_Gsi - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #8] - ldr r2, _022F83F8 ; =GsUdpMsgHandlerCompare - add r1, sp, #0x24 - bl ArraySearch_Gsi - mvn r1, #0 - cmp r0, r1 - beq _022F8390 - ldr r5, _022F83FC ; =GsUdpClosedRoutingCB - ldr r4, _022F8400 ; =GsUdpConnectedRoutingCB - ldr r3, _022F8404 ; =GsUdpPingRoutingCB - ldr r2, _022F8408 ; =GsUdpReceivedRoutingCB - ldr r0, [sp, #0x20] - add r1, sp, #8 - str r5, [sp, #0x10] - str r4, [sp, #8] - str r3, [sp, #0x14] - str r2, [sp, #0xc] - bl Gt2Accept - add sp, sp, #0x60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F8390: - ldr ip, [r4, #0x20] - cmp ip, #0 - beq _022F83C8 - ldr r0, [sp, #0x80] - ldr r2, [sp, #0x78] - str r0, [sp] - ldr r4, [r4, #0x2c] - ldr r3, [sp, #0x7c] - mov r0, r6 - mov r1, r5 - str r4, [sp, #4] - blx ip - add sp, sp, #0x60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F83C8: - mov r1, #0 - mov r0, r7 - mov r2, r1 - bl Gt2Reject - ldr r0, [r4, #4] - bl ArrayLength_Gsi - mov r1, r0 - ldr r0, [r4, #4] - sub r1, r1, #1 - bl ArrayRemoveAt_Gsi - add sp, sp, #0x60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F83F8: .word GsUdpMsgHandlerCompare -_022F83FC: .word GsUdpClosedRoutingCB -_022F8400: .word GsUdpConnectedRoutingCB -_022F8404: .word GsUdpPingRoutingCB -_022F8408: .word GsUdpReceivedRoutingCB - arm_func_end GsUdpConnAttemptCB - - arm_func_start GsUdpEngineIsInitialized -GsUdpEngineIsInitialized: ; 0x022F840C - stmdb sp!, {r3, lr} - bl GsUdpEngineGetEngine - ldr r0, [r0, #0xc] - ldmia sp!, {r3, pc} - arm_func_end GsUdpEngineIsInitialized - - arm_func_start GsUdpEngineInitialize -GsUdpEngineInitialize: ; 0x022F841C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - mov r6, r1 - mov r7, r0 - mov r5, r2 - mov r8, r3 - bl GsUdpEngineGetEngine - mov r4, r0 - cmp r6, #0 - ldreq r6, _022F8560 ; =0x000005DC - cmp r5, #0 - ldr r0, [sp, #0x48] - str r8, [r4, #0x24] - str r0, [r4, #0x28] - ldr r1, [sp, #0x38] - ldr r0, [sp, #0x3c] - str r1, [r4, #0x10] - str r0, [r4, #0x14] - ldr r1, [sp, #0x40] - ldr r0, [sp, #0x44] - str r1, [r4, #0x18] - str r0, [r4, #0x1c] - ldr r3, [sp, #0x4c] - ldreq r5, _022F8564 ; =0x000005B4 - add r2, sp, #4 - mov r1, r7 - mov r0, #0 - str r3, [r4, #0x20] - bl Gt2AddressToString - ldr r7, _022F8568 ; =GsUdpSocketError - add r1, sp, #4 - mov r0, r4 - mov r2, r5 - mov r3, r6 - str r7, [sp] - bl Gt2CreateSocket - cmp r0, #0 - addne sp, sp, #0x1c - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, #0xc - mov r1, #1 - mov r2, #0 - bl ArrayNew_Gsi - cmp r0, #0 - str r0, [r4, #4] - addeq sp, sp, #0x1c - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, _022F856C ; =GsUdpMsgHandlerFree - mov r0, #0x3c - mov r1, #1 - bl ArrayNew_Gsi - cmp r0, #0 - str r0, [r4, #8] - addeq sp, sp, #0x1c - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [r4] - ldr r1, _022F8570 ; =GsUdpUnrecognizedMsgCB - bl Gt2SetUnrecognizedMessageCallback - ldr r0, [r4] - ldr r1, _022F8574 ; =GsUdpConnAttemptCB - bl Gt2Listen - ldr r0, [r4] - bl Gt2GetLocalIP - str r0, [r4, #0x34] - ldr r0, [r4] - bl Gt2GetLocalPort - strh r0, [r4, #0x38] - mov r2, #0 - ldr r1, [sp, #0x50] - str r2, [r4, #0x30] - mov r0, #1 - str r0, [r4, #0xc] - cmp r1, #0 - strne r1, [r4, #0x2c] - streq r2, [r4, #0x2c] - mov r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F8560: .word 0x000005DC -_022F8564: .word 0x000005B4 -_022F8568: .word GsUdpSocketError -_022F856C: .word GsUdpMsgHandlerFree -_022F8570: .word GsUdpUnrecognizedMsgCB -_022F8574: .word GsUdpConnAttemptCB - arm_func_end GsUdpEngineInitialize - - arm_func_start GsUdpEngineGetPeerState -GsUdpEngineGetPeerState: ; 0x022F8578 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _022F85B4 - mov r0, #3 - str r0, [r5] - add sp, sp, #0x10 - mov r0, #0xb - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F85B4: - str r7, [sp, #4] - strh r6, [sp, #8] - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #4] - ldr r2, _022F8618 ; =GsUdpRemotePeerCompare - add r1, sp, #4 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - bne _022F85F8 - mov r0, #3 - str r0, [r5] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F85F8: - ldr r0, [r4, #4] - bl ArrayNth_Gsi - ldr r0, [r0, #8] - bl Gt2GetConnectionState - str r0, [r5] - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F8618: .word GsUdpRemotePeerCompare - arm_func_end GsUdpEngineGetPeerState - - arm_func_start GsUdpEngineStartTalkingToPeer -GsUdpEngineStartTalkingToPeer: ; 0x022F861C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x84 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - addeq sp, sp, #0x84 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - cmp r8, #0 - cmpne r7, #0 - addeq sp, sp, #0x84 - moveq r0, #0xa - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - str r8, [sp, #0x60] - strh r7, [sp, #0x64] - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #4] - ldr r2, _022F8830 ; =GsUdpRemotePeerCompare - add r1, sp, #0x60 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _022F8728 - ldr r0, [r4, #4] - bl ArrayNth_Gsi - mov r5, r0 - ldr r0, [r5, #8] - bl Gt2GetConnectionState - cmp r0, #1 - addeq sp, sp, #0x84 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - cmp r0, #0 - bne _022F8824 - add r3, sp, #0x24 - mov r2, #8 -_022F86C8: - ldrb r1, [r6] - ldrb r0, [r6, #1] - add r6, r6, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022F86C8 - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #8] - ldr r2, _022F8834 ; =GsUdpMsgHandlerCompare - add r1, sp, #0x24 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _022F8824 - ldr r0, [r4, #8] - bl ArrayNth_Gsi - ldr r0, [r0, #0x20] - mov r1, r5 - bl ArrayAppend_Gsi - b _022F8824 -_022F8728: - add r2, sp, #0x6c - mov r0, r8 - mov r1, r7 - bl Gt2AddressToString - ldr r3, _022F8838 ; =GsUdpClosedRoutingCB - ldr r2, _022F883C ; =GsUdpConnectedRoutingCB - ldr r1, _022F8840 ; =GsUdpPingRoutingCB - ldr r0, _022F8844 ; =GsUdpReceivedRoutingCB - str r3, [sp, #0x1c] - str r2, [sp, #0x14] - str r1, [sp, #0x20] - str r0, [sp, #0x18] - mov r0, #0x10 - str r0, [sp] - add r0, sp, #0x14 - str r5, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, [r4] - add r1, sp, #0x68 - add r2, sp, #0x6c - mov r3, r6 - bl Gt2Connect - ldr r0, [r4, #4] - add r1, sp, #0x60 - bl ArrayAppend_Gsi - add r3, sp, #0x24 - mov r2, #8 -_022F879C: - ldrb r1, [r6] - ldrb r0, [r6, #1] - add r6, r6, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022F879C - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #8] - ldr r2, _022F8834 ; =GsUdpMsgHandlerCompare - add r1, sp, #0x24 - bl ArraySearch_Gsi - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - ldreq r0, [r4, #0x30] - addeq r0, r0, #1 - streq r0, [r4, #0x30] - beq _022F8824 - ldr r0, [r4, #4] - bl ArrayLength_Gsi - mov r1, r0 - ldr r0, [r4, #4] - sub r1, r1, #1 - bl ArrayNth_Gsi - str r0, [sp, #0x10] - ldr r0, [r4, #8] - mov r1, r5 - bl ArrayNth_Gsi - ldr r0, [r0, #0x20] - add r1, sp, #0x10 - bl ArrayAppend_Gsi -_022F8824: - mov r0, #0 - add sp, sp, #0x84 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F8830: .word GsUdpRemotePeerCompare -_022F8834: .word GsUdpMsgHandlerCompare -_022F8838: .word GsUdpClosedRoutingCB -_022F883C: .word GsUdpConnectedRoutingCB -_022F8840: .word GsUdpPingRoutingCB -_022F8844: .word GsUdpReceivedRoutingCB - arm_func_end GsUdpEngineStartTalkingToPeer - - arm_func_start GsUdpEngineSendMessage -GsUdpEngineSendMessage: ; 0x022F8848 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x28 - mov sb, r0 - mov r5, r1 - mov r8, r2 - mov r7, r3 - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - addeq sp, sp, #0x28 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrsb r0, [r8] - mov r3, #0 - ldr r2, _022F8984 ; =GsUdpRemotePeerCompare - cmp r0, #0 - ldrne r0, [sp, #0x48] - str sb, [sp, #0x1c] - strh r5, [sp, #0x20] - addne r6, r0, #0x10 - str r3, [sp] - ldr r0, [r4, #4] - add r1, sp, #0x1c - ldreq r6, [sp, #0x48] - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - bne _022F88DC - add r2, sp, #4 - mov r0, sb - mov r1, r5 - bl Gt2AddressToString - add sp, sp, #0x28 - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F88DC: - ldr r0, [r4, #4] - bl ArrayNth_Gsi - mov r4, r0 - ldr r0, [r4, #8] - bl Gt2GetOutgoingBufferSize - cmp r6, r0 - ble _022F890C - ldr r0, [sp, #0x4c] - cmp r0, #0 - addne sp, sp, #0x28 - movne r0, #0xc - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F890C: - mov r0, r6 - bl gsimalloc - mov r5, r0 - mov r3, r5 - mov r2, #8 -_022F8920: - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r8, r8, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022F8920 - ldr r2, [sp, #0x48] - mov r1, r7 - add r0, r5, #0x10 - bl memcpy - ldr r0, [r4, #8] - ldr r3, [sp, #0x4c] - mov r1, r5 - mov r2, r6 - bl Gt2Send - mov r4, r0 - mov r0, r5 - bl gsifree - cmp r4, #0 - movne r0, #8 - moveq r0, #0 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F8984: .word GsUdpRemotePeerCompare - arm_func_end GsUdpEngineSendMessage - - arm_func_start GsUdpEngineThink -GsUdpEngineThink: ; 0x022F8988 - stmdb sp!, {r3, lr} - bl GsUdpEngineGetEngine - ldr r1, [r0, #0xc] - cmp r1, #0 - moveq r0, #3 - ldmeqia sp!, {r3, pc} - ldr r0, [r0] - bl Gt2Think - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end GsUdpEngineThink - - arm_func_start GsUdpEngineShutdown -GsUdpEngineShutdown: ; 0x022F89B0 - stmdb sp!, {r4, lr} - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r4, pc} - ldr r0, [r4] - bl Gt2CloseSocket - ldr r0, [r4, #8] - bl ArrayFree_Gsi - ldr r0, [r4, #4] - bl ArrayFree_Gsi - mov r0, #0 - str r0, [r4, #0xc] - ldmia sp!, {r4, pc} - arm_func_end GsUdpEngineShutdown - - arm_func_start GsUdpEngineGetLocalPort -GsUdpEngineGetLocalPort: ; 0x022F89F0 - stmdb sp!, {r3, lr} - bl GsUdpEngineGetEngine - ldr r1, [r0, #0xc] - cmp r1, #0 - ldrneh r0, [r0, #0x38] - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end GsUdpEngineGetLocalPort - - arm_func_start GsUdpEngineAddMsgHandler -GsUdpEngineAddMsgHandler: ; 0x022F8A0C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x3c - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - addeq sp, sp, #0x3c - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrsb r0, [r8] - cmp r0, #0 - addeq sp, sp, #0x3c - moveq r0, #0xa - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrsb r0, [r7] - cmp r0, #0 - addeq sp, sp, #0x3c - moveq r0, #0xa - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, [sp, #0x58] - ldr r1, [sp, #0x5c] - ldr r0, [sp, #0x60] - str r2, [sp, #0x24] - add r3, sp, #0 - str r5, [sp, #0x2c] - str r1, [sp, #0x30] - str r0, [sp, #0x28] - str r6, [sp, #0x34] - mov r2, #8 -_022F8A90: - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r8, r8, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022F8A90 - add r3, sp, #0x10 - mov r2, #8 -_022F8AB8: - ldrb r1, [r7] - ldrb r0, [r7, #1] - add r7, r7, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022F8AB8 - mov r0, #4 - mov r1, #1 - mov r2, #0 - bl ArrayNew_Gsi - str r0, [sp, #0x20] - cmp r0, #0 - addeq sp, sp, #0x3c - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [sp, #0x64] - add r1, sp, #0 - str r0, [sp, #0x38] - ldr r0, [r4, #8] - bl ArrayAppend_Gsi - mov r0, #0 - add sp, sp, #0x3c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end GsUdpEngineAddMsgHandler - - arm_func_start GsUdpEngineRemoveMsgHandler -GsUdpEngineRemoveMsgHandler: ; 0x022F8B1C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x40 - mov r5, r0 - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - addeq sp, sp, #0x40 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - addeq sp, sp, #0x40 - moveq r0, #0xa - ldmeqia sp!, {r3, r4, r5, pc} - add r3, sp, #0x14 - mov r2, #8 -_022F8B64: - ldrb r1, [r5] - ldrb r0, [r5, #1] - add r5, r5, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _022F8B64 - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #8] - ldr r2, _022F8BC0 ; =GsUdpMsgHandlerCompare2 - add r1, sp, #4 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _022F8BB4 - ldr r0, [r4, #8] - bl ArrayDeleteAt_Gsi -_022F8BB4: - mov r0, #0 - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F8BC0: .word GsUdpMsgHandlerCompare2 - arm_func_end GsUdpEngineRemoveMsgHandler - - arm_func_start GsUdpEngineNoMoreMsgHandlers -GsUdpEngineNoMoreMsgHandlers: ; 0x022F8BC4 - stmdb sp!, {r3, lr} - bl GsUdpEngineGetEngine - ldr r1, [r0, #0xc] - cmp r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #8] - bl ArrayLength_Gsi - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end GsUdpEngineNoMoreMsgHandlers - - arm_func_start GsUdpEngineNoApp -GsUdpEngineNoApp: ; 0x022F8BF4 - stmdb sp!, {r3, lr} - bl GsUdpEngineGetEngine - ldr r1, [r0, #0xc] - cmp r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldr r1, [r0, #0x14] - cmp r1, #0 - ldreq r1, [r0, #0x20] - cmpeq r1, #0 - ldreq r1, [r0, #0x10] - cmpeq r1, #0 - ldreq r1, [r0, #0x24] - cmpeq r1, #0 - ldreq r1, [r0, #0x18] - cmpeq r1, #0 - ldreq r1, [r0, #0x1c] - cmpeq r1, #0 - ldreq r0, [r0, #0x28] - cmpeq r0, #0 - movne r0, #0 - moveq r0, #1 - ldmia sp!, {r3, pc} - arm_func_end GsUdpEngineNoApp - - arm_func_start GsUdpEngineGetPeerOutBufferFreeSpace -GsUdpEngineGetPeerOutBufferFreeSpace: ; 0x022F8C50 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r0 - mov r5, r1 - bl GsUdpEngineGetEngine - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - str r6, [sp, #4] - strh r5, [sp, #8] - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #4] - ldr r2, _022F8CCC ; =GsUdpRemotePeerCompare - add r1, sp, #4 - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #4] - bl ArrayNth_Gsi - ldr r0, [r0, #8] - bl Gt2GetOutgoingBufferFreeSpace - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F8CCC: .word GsUdpRemotePeerCompare - arm_func_end GsUdpEngineGetPeerOutBufferFreeSpace - - arm_func_start GsXmlWriterGetData -GsXmlWriterGetData: ; 0x022F8CD0 - ldr r0, [r0] - bx lr - arm_func_end GsXmlWriterGetData - - arm_func_start GsXmlWriterGetDataLength -GsXmlWriterGetDataLength: ; 0x022F8CD8 - ldr r0, [r0, #4] - bx lr - arm_func_end GsXmlWriterGetDataLength - - arm_func_start GhiResizeBuffer -GhiResizeBuffer: ; 0x022F8CE0 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r1, #0 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, pc} - ldmib r5, {r0, r2} - add r4, r2, r1 - mov r1, r4 - bl gsirealloc - cmp r0, #0 - moveq r0, #0 - stmneib r5, {r0, r4} - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiResizeBuffer - - arm_func_start GhiInitBuffer -GhiInitBuffer: ; 0x022F8D20 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r2, #0 - movle r0, #0 - ldmleia sp!, {r4, pc} - cmp r3, #0 - movle r0, #0 - ldmleia sp!, {r4, pc} - str r0, [r4] - mov ip, #0 - str ip, [r4, #4] - str ip, [r4, #8] - str ip, [r4, #0xc] - str ip, [r4, #0x10] - str r3, [r4, #0x14] - str ip, [r4, #0x18] - str ip, [r4, #0x1c] - mov r0, r4 - mov r1, r2 - str ip, [r4, #0x20] - bl GhiResizeBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #4] - mov r1, #0 - strb r1, [r0] - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end GhiInitBuffer - - arm_func_start GhiInitFixedBuffer -GhiInitFixedBuffer: ; 0x022F8DAC - cmp r0, #0 - moveq r0, #0 - bxeq lr - cmp r1, #0 - moveq r0, #0 - bxeq lr - cmp r2, #0 - moveq r0, #0 - bxeq lr - cmp r3, #0 - movle r0, #0 - bxle lr - stmia r1, {r0, r2, r3} - mov r2, #0 - str r2, [r1, #0xc] - str r2, [r1, #0x10] - str r2, [r1, #0x14] - mov r0, #1 - str r0, [r1, #0x18] - str r0, [r1, #0x1c] - str r2, [r1, #0x20] - ldr r1, [r1, #4] - strb r2, [r1] - bx lr - arm_func_end GhiInitFixedBuffer - - arm_func_start GhiInitReadOnlyBuffer -GhiInitReadOnlyBuffer: ; 0x022F8E0C - cmp r0, #0 - moveq r0, #0 - bxeq lr - cmp r1, #0 - moveq r0, #0 - bxeq lr - cmp r2, #0 - moveq r0, #0 - bxeq lr - cmp r3, #0 - movle r0, #0 - bxle lr - stmia r1, {r0, r2, r3} - mov r0, #0 - str r0, [r1, #0x10] - str r0, [r1, #0x14] - mov r0, #1 - str r0, [r1, #0x18] - str r0, [r1, #0x1c] - str r0, [r1, #0x20] - str r3, [r1, #0xc] - bx lr - arm_func_end GhiInitReadOnlyBuffer - - arm_func_start GhiFreeBuffer -GhiFreeBuffer: ; 0x022F8E64 - stmdb sp!, {r4, lr} - movs r4, r0 - ldrne r0, [r4, #4] - cmpne r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0x1c] - cmp r1, #0 - bne _022F8E88 - bl gsifree -_022F8E88: - mov r0, r4 - mov r1, #0 - mov r2, #0x24 - bl memset - ldmia sp!, {r4, pc} - arm_func_end GhiFreeBuffer - - arm_func_start GhiAppendDataToBuffer -GhiAppendDataToBuffer: ; 0x022F8E9C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x20] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - bne _022F8EF0 - mov r0, r6 - bl strlen - mov r5, r0 -_022F8EF0: - ldr r1, [r7, #0xc] - ldr r0, [r7, #8] - add r4, r1, r5 - cmp r4, r0 - blt _022F8F6C -_022F8F04: - ldr r0, [r7, #0x18] - cmp r0, #0 - beq _022F8F30 - ldr r0, [r7] - mov r1, #1 - str r1, [r0, #0x120] - ldr r0, [r7] - mov r1, #2 - str r1, [r0, #0x3c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F8F30: - ldr r1, [r7, #0x14] - mov r0, r7 - bl GhiResizeBuffer - cmp r0, #0 - bne _022F8F60 - ldr r0, [r7] - mov r2, #1 - str r2, [r0, #0x120] - ldr r1, [r7] - mov r0, #0 - str r2, [r1, #0x3c] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F8F60: - ldr r0, [r7, #8] - cmp r4, r0 - bge _022F8F04 -_022F8F6C: - ldr r3, [r7, #4] - ldr r0, [r7, #0xc] - mov r1, r6 - mov r2, r5 - add r0, r3, r0 - bl memcpy - str r4, [r7, #0xc] - ldr r0, [r7, #4] - mov r1, #0 - strb r1, [r0, r4] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GhiAppendDataToBuffer - - arm_func_start GhiEncryptDataToBuffer -GhiEncryptDataToBuffer: ; 0x022F8F9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0xc - mov r6, #0 - movs sl, r0 - str r6, [sp, #8] - mov sb, r1 - mov r8, r2 - addeq sp, sp, #0xc - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - cmp sb, #0 - addeq sp, sp, #0xc - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - cmp r8, #0 - addlt sp, sp, #0xc - movlt r0, r6 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [sl, #0x20] - cmp r0, #0 - addne sp, sp, #0xc - movne r0, r6 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [sl] - ldr r0, [r1, #0x194] - cmp r0, #0 - ldrne r0, [r1, #0x19c] - cmpne r0, #0 - bne _022F9028 - mov r0, sl - mov r1, sb - mov r2, r8 - bl GhiAppendDataToBuffer - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F9028: - cmp r8, #0 - bne _022F903C - mov r0, sb - bl strlen - mov r8, r0 -_022F903C: - cmp r8, #0 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [sl, #8] - ldr r0, [sl, #0xc] - ldr r5, _022F910C ; =0x00003F01 - sub r0, r1, r0 - str r0, [sp, #8] - add r4, sp, #8 -_022F9064: - ldr r1, [sl, #0xc] - ldmia sl, {r0, r2} - add r1, r2, r1 - stmia sp, {r1, r4} - cmp r8, r5 - movlt r7, r8 - ldr ip, [r0, #0x1a8] - mov r3, r8 - add r1, r0, #0x190 - add r2, sb, r6 - movge r7, r5 - blx ip - cmp r0, #2 - bne _022F90CC - ldr r1, [sl, #0x14] - mov r0, sl - bl GhiResizeBuffer - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [sl, #8] - ldr r0, [sl, #0xc] - sub r0, r1, r0 - str r0, [sp, #8] - b _022F90F8 -_022F90CC: - cmp r0, #1 - bne _022F90EC - ldr r1, [sl, #8] - ldr r0, [sp, #8] - add r6, r6, r7 - sub r0, r1, r0 - str r0, [sl, #0xc] - b _022F90F8 -_022F90EC: - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_022F90F8: - cmp r6, r8 - blt _022F9064 - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F910C: .word 0x00003F01 - arm_func_end GhiEncryptDataToBuffer - - arm_func_start GhiAppendHeaderToBuffer -GhiAppendHeaderToBuffer: ; 0x022F9110 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r2 - mov r2, #0 - mov r5, r0 - bl GhiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _022F9188 ; =ov00_0231A7E4 - mov r0, r5 - mov r2, #2 - bl GhiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl GhiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _022F918C ; =ov00_0231A7E8 - mov r0, r5 - mov r2, #2 - bl GhiAppendDataToBuffer - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F9188: .word ov00_0231A7E4 -_022F918C: .word ov00_0231A7E8 - arm_func_end GhiAppendHeaderToBuffer - - arm_func_start GhiAppendCharToBuffer -GhiAppendCharToBuffer: ; 0x022F9190 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x20] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0xc] - ldr r1, [r5, #8] - add r2, r2, #1 - cmp r2, r1 - blt _022F9220 - ldr r1, [r5, #0x18] - cmp r1, #0 - beq _022F91F4 - ldr r0, [r5] - mov r1, #1 - str r1, [r0, #0x120] - ldr r0, [r5] - mov r1, #2 - str r1, [r0, #0x3c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022F91F4: - ldr r1, [r5, #0x14] - bl GhiResizeBuffer - cmp r0, #0 - bne _022F9220 - ldr r0, [r5] - mov r2, #1 - str r2, [r0, #0x120] - ldr r1, [r5] - mov r0, #0 - str r2, [r1, #0x3c] - ldmia sp!, {r3, r4, r5, pc} -_022F9220: - ldr r1, [r5, #4] - ldr r0, [r5, #0xc] - mov r2, #0 - strb r4, [r1, r0] - ldr r1, [r5, #0xc] - mov r0, #1 - add r3, r1, #1 - str r3, [r5, #0xc] - ldr r1, [r5, #4] - strb r2, [r1, r3] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiAppendCharToBuffer - - arm_func_start GhiAppendIntToBuffer -GhiAppendIntToBuffer: ; 0x022F924C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r2, r1 - mov r4, r0 - ldr r1, _022F9280 ; =ov00_0231A7EC - add r0, sp, #0 - bl OS_VsPrintf - add r1, sp, #0 - mov r0, r4 - mov r2, #0 - bl GhiAppendDataToBuffer - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F9280: .word ov00_0231A7EC - arm_func_end GhiAppendIntToBuffer - - arm_func_start GhiResetBuffer -GhiResetBuffer: ; 0x022F9284 - mov r2, #0 - str r2, [r0, #0xc] - str r2, [r0, #0x10] - ldr r1, [r0, #0x20] - cmp r1, #0 - ldreq r0, [r0, #4] - streqb r2, [r0] - bx lr - arm_func_end GhiResetBuffer - - arm_func_start GhiSendBufferedData -GhiSendBufferedData: ; 0x022F92A4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, #0 - add r5, sp, #4 - add r4, sp, #0 - mvn r8, #0 -_022F92C0: - ldr r0, [r7, #0x4c] - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl GsiSocketSelect - cmp r0, r8 - beq _022F92F0 - cmp r0, #1 - bne _022F9328 - ldr r1, [sp] - cmp r1, #0 - beq _022F9328 -_022F92F0: - mov r1, #1 - mov r2, #5 - str r1, [r7, #0x120] - sub r1, r2, #6 - cmp r0, r1 - str r2, [r7, #0x3c] - movne r0, #0 - bne _022F9318 - ldr r0, [r7, #0x4c] - bl GoaGetLastError -_022F9318: - add sp, sp, #8 - str r0, [r7, #0x50] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F9328: - cmp r0, #1 - blt _022F933C - ldr r0, [sp, #4] - cmp r0, #0 - bne _022F9348 -_022F933C: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F9348: - ldr r3, [r7, #0x64] - ldr r1, [r7, #0x58] - ldr r2, [r7, #0x60] - mov r0, r7 - add r1, r1, r3 - sub r2, r2, r3 - bl GhiDoSend - cmp r0, r8 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, [r7, #0x64] - add r1, r1, r0 - str r1, [r7, #0x64] - ldr r0, [r7, #0x60] - cmp r1, r0 - blt _022F92C0 - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end GhiSendBufferedData - - arm_func_start GhiReadDataFromBufferFixed -GhiReadDataFromBufferFixed: ; 0x022F9398 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r2 - mov r5, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xc] - cmp r0, r4 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - ldr ip, [r5, #4] - ldr r3, [r5, #0x10] - mov r0, r1 - add r1, ip, r3 - bl memcpy - ldr r1, [r5, #0x10] - mov r0, #1 - add r1, r1, r4 - str r1, [r5, #0x10] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiReadDataFromBufferFixed - - arm_func_start GhiCallCompletedCallback -GhiCallCompletedCallback: ; 0x022F93E4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr ip, [r5, #0x44] - cmp ip, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xc] - cmp r0, #0 - ldreq r4, [r5, #0xe8] - ldr r0, [r5, #0x48] - movne r4, #0 - str r0, [sp] - ldr r0, [r5, #4] - ldr r1, [r5, #0x3c] - ldr r3, [r5, #0x124] - mov r2, r4 - blx ip - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0 - moveq r0, #1 - streq r0, [r5, #0x100] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiCallCompletedCallback - - arm_func_start GhiCallProgressCallback -GhiCallProgressCallback: ; 0x022F943C - stmdb sp!, {lr} - sub sp, sp, #0xc - mov lr, r0 - ldr ip, [lr, #0x40] - mov r3, r2 - cmp ip, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {pc} - ldr r0, [lr, #0x124] - mov r2, r1 - str r0, [sp] - ldr r0, [lr, #0x128] - str r0, [sp, #4] - ldr r0, [lr, #0x48] - str r0, [sp, #8] - ldr r0, [lr, #4] - ldr r1, [lr, #0x10] - blx ip - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end GhiCallProgressCallback - - arm_func_start GhiCallPostCallback -GhiCallPostCallback: ; 0x022F948C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r0, [r4, #0x174] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x164] - bl ArrayLength_Gsi - str r0, [sp] - ldr r0, [r4, #0x48] - str r0, [sp, #4] - ldr r0, [r4, #4] - ldr r1, [r4, #0x16c] - ldr r2, [r4, #0x170] - ldr r3, [r4, #0x168] - ldr ip, [r4, #0x174] - blx ip - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end GhiCallPostCallback - - arm_func_start GhiCreateLock -GhiCreateLock: ; 0x022F94DC - bx lr - arm_func_end GhiCreateLock - - arm_func_start GhiFreeLock -GhiFreeLock: ; 0x022F94E0 - bx lr - arm_func_end GhiFreeLock - - arm_func_start GhiLock -GhiLock: ; 0x022F94E4 - bx lr - arm_func_end GhiLock - - arm_func_start GhiUnlock -GhiUnlock: ; 0x022F94E8 - bx lr - arm_func_end GhiUnlock - - arm_func_start GhiDecryptReceivedData -GhiDecryptReceivedData: ; 0x022F94EC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r1, #0 - mov r6, r0 - str r1, [sp, #0xc] - str r1, [sp, #8] - add r5, sp, #8 - add r4, sp, #0xc -_022F950C: - ldr ip, [r6, #0xd0] - ldr r0, [r6, #0xcc] - ldr r2, [r6, #0xc4] - sub r0, r0, ip - str r0, [sp, #0xc] - ldr r3, [r6, #0xa8] - ldr r0, [r6, #0xa4] - ldr r1, [r6, #0xa0] - sub r0, r0, r3 - str r0, [sp, #8] - add r0, r1, r3 - stmia sp, {r0, r5} - ldr lr, [r6, #0x1ac] - mov r0, r6 - mov r3, r4 - add r1, r6, #0x190 - add r2, r2, ip - blx lr - mov r7, r0 - cmp r7, #2 - bne _022F9580 - ldr r1, [r6, #0xb0] - add r0, r6, #0x9c - bl GhiResizeBuffer - cmp r0, #0 - bne _022F9590 - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F9580: - cmp r7, #3 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022F9590: - cmp r7, #2 - ldreq r0, [sp, #8] - cmpeq r0, #0 - beq _022F950C - ldr r1, [sp, #0xc] - ldr r0, [r6, #0xcc] - cmp r1, r0 - addgt sp, sp, #0x10 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0xd0] - add r0, r0, r1 - str r0, [r6, #0xd0] - ldr r1, [r6, #0xa8] - ldr r0, [sp, #8] - add r0, r1, r0 - str r0, [r6, #0xa8] - ldr r0, [sp, #8] - cmp r0, #0 - bgt _022F950C - ldr r1, [r6, #0xd0] - cmp r1, #0xff - ble _022F9620 - ldr r0, [r6, #0xcc] - subs r4, r0, r1 - bne _022F9604 - add r0, r6, #0xc0 - bl GhiResetBuffer - b _022F9620 -_022F9604: - ldr r0, [r6, #0xc4] - mov r2, r4 - add r1, r0, r1 - bl memmove - mov r0, #0 - str r0, [r6, #0xd0] - str r4, [r6, #0xcc] -_022F9620: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GhiDecryptReceivedData - - arm_func_start GhiDoReceive -GhiDoReceive: ; 0x022F962C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r5, r2 - ldr r2, [r5] - ldr r0, [r7, #0x158] - mov r6, r1 - cmp r0, #0 - sub r4, r2, #1 - beq _022F9680 - bl current_time_gsi - ldr r1, _022F9730 ; =ov00_0231A7F0 - ldr r3, [r7, #0x15c] - ldr r2, [r1] - add r2, r3, r2 - cmp r0, r2 - movlo r0, #1 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - str r0, [r7, #0x15c] - ldr r0, [r1, #4] - cmp r4, r0 - movge r4, r0 -_022F9680: - ldr r0, [r7, #0x4c] - mov r1, r6 - mov r2, r4 - mov r3, #0 - bl SocketRecv - mvn r1, #0 - cmp r0, r1 - bne _022F9704 - ldr r0, [r7, #0x4c] - bl GoaGetLastError - mvn r2, #0x37 - cmp r0, r2 - bne _022F96C4 - mov r0, #1 - str r0, [r7, #0x154] - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F96C4: - add r1, r2, #0x32 - cmp r0, r1 - addne r1, r2, #0x1e - cmpne r0, r1 - subne r1, r2, #0x14 - cmpne r0, r1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, #1 - str r2, [r7, #0x120] - mov r1, #5 - str r1, [r7, #0x3c] - str r0, [r7, #0x50] - str r2, [r7, #0x154] - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F9704: - cmp r0, #0 - bne _022F971C - mov r0, #1 - str r0, [r7, #0x154] - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F971C: - mov r1, #0 - strb r1, [r6, r0] - str r0, [r5] - mov r0, r1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F9730: .word ov00_0231A7F0 - arm_func_end GhiDoReceive - - arm_func_start GhiDoSend -GhiDoSend: ; 0x022F9734 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - cmpne r2, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x4c] - mov r3, #0 - bl SocketSend - mvn r1, #0 - cmp r0, r1 - bne _022F97A8 - ldr r0, [r4, #0x4c] - bl GoaGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, #1 - str r1, [r4, #0x120] - mov r1, #5 - str r1, [r4, #0x3c] - str r0, [r4, #0x50] - sub r0, r1, #6 - ldmia sp!, {r4, pc} -_022F97A8: - ldr r1, [r4, #0x10] - cmp r1, #6 - ldreq r1, [r4, #0x17c] - cmpeq r1, #0 - ldreq r1, [r4, #0x16c] - addeq r1, r1, r0 - streq r1, [r4, #0x16c] - ldmia sp!, {r4, pc} - arm_func_end GhiDoSend - - arm_func_start GhiTrySendThenBuffer -GhiTrySendThenBuffer: ; 0x022F97C8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0x194] - mov r5, r1 - mov r4, r2 - cmp r0, #0 - mov r3, #0 - beq _022F9840 - ldr r0, [r6, #0x19c] - cmp r0, #1 - bne _022F9840 - add r0, r6, #0x54 - bl GhiEncryptDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl GhiSendBufferedData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r6, #0x64] - ldr r0, [r6, #0x60] - cmp r1, r0 - movlt r0, #2 - ldmltia sp!, {r4, r5, r6, pc} - add r0, r6, #0x54 - bl GhiResetBuffer - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_022F9840: - ldr r1, [r6, #0x64] - ldr r0, [r6, #0x60] - cmp r1, r0 - blt _022F9880 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GhiDoSend - mov r3, r0 - mvn r0, #0 - cmp r3, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r3, r4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_022F9880: - add r0, r6, #0x54 - add r1, r5, r3 - sub r2, r4, r3 - bl GhiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - movne r0, #2 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GhiTrySendThenBuffer - - arm_func_start GhiFindFreeSlot -GhiFindFreeSlot: ; 0x022F98A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _022F9988 ; =ov00_023289B0 - mov r0, #0 - ldr r3, [r1] - cmp r3, #0 - arm_func_end GhiFindFreeSlot - - arm_func_start ov00_022F98B4 -ov00_022F98B4: ; 0x022F98B4 - ble _022F98D8 - ldr r2, [r1, #0xc] -_022F98BC: - ldr r1, [r2, r0, lsl #2] - ldr r1, [r1] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r0, #1 - cmp r0, r3 - blt _022F98BC -_022F98D8: - ldr r0, _022F9988 ; =ov00_023289B0 - ldr r6, [r0] - ldr r0, [r0, #0xc] - add r5, r6, #4 - mov r1, r5, lsl #2 - bl gsirealloc - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r8, _022F9988 ; =ov00_023289B0 - mov r7, r6 - str r0, [r8, #0xc] - cmp r6, r5 - bge _022F9978 - mov sb, #0 - mov r4, #0x1b4 -_022F9918: - mov r0, r4 - bl gsimalloc - ldr r1, [r8, #0xc] - str r0, [r1, r7, lsl #2] - ldr r0, [r8, #0xc] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bne _022F9968 - sub r7, r7, #1 - cmp r7, r6 - blt _022F9960 - ldr r4, _022F9988 ; =ov00_023289B0 -_022F9948: - ldr r0, [r4, #0xc] - ldr r0, [r0, r7, lsl #2] - bl gsifree - sub r7, r7, #1 - cmp r7, r6 - bge _022F9948 -_022F9960: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F9968: - add r7, r7, #1 - str sb, [r0] - cmp r7, r5 - blt _022F9918 -_022F9978: - ldr r1, _022F9988 ; =ov00_023289B0 - mov r0, r6 - str r5, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F9988: .word ov00_023289B0 - arm_func_end ov00_022F98B4 - - arm_func_start GhiNewConnection -GhiNewConnection: ; 0x022F998C - stmdb sp!, {r3, r4, r5, lr} - bl GhiLock - bl GhiFindFreeSlot - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - bne _022F99B4 - bl GhiUnlock - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022F99B4: - ldr r0, _022F9B3C ; =ov00_023289B0 - mov r1, #0 - ldr r0, [r0, #0xc] - mov r2, #0x1b4 - ldr r4, [r0, r5, lsl #2] - mov r0, r4 - bl memset - mov r0, #1 - str r0, [r4] - ldr r0, _022F9B3C ; =ov00_023289B0 - str r5, [r4, #4] - ldr r2, [r0, #8] - mov ip, #0 - add r1, r2, #1 - str r1, [r0, #8] - str r2, [r4, #8] - str ip, [r4, #0xc] - str ip, [r4, #0x10] - str ip, [r4, #0x14] - str ip, [r4, #0x18] - str ip, [r4, #0x1c] - strh ip, [r4, #0x20] - str ip, [r4, #0x24] - str ip, [r4, #0x2c] - str ip, [r4, #0x30] - str ip, [r4, #0x34] - str ip, [r4, #0x38] - str ip, [r4, #0x3c] - str ip, [r4, #0x40] - str ip, [r4, #0x44] - str ip, [r4, #0x48] - sub r0, ip, #1 - str r0, [r4, #0x4c] - str ip, [r4, #0x50] - str ip, [r4, #0x108] - str ip, [r4, #0x10c] - str ip, [r4, #0x110] - str ip, [r4, #0x114] - str ip, [r4, #0x118] - str ip, [r4, #0x11c] - str ip, [r4, #0x120] - str ip, [r4, #0x124] - str r0, [r4, #0x128] - str ip, [r4, #0x12c] - str ip, [r4, #0x130] - str ip, [r4, #0x134] - str ip, [r4, #0x150] - str ip, [r4, #0x158] - str ip, [r4, #0x15c] - str ip, [r4, #0x160] - mov r0, #0x1f4 - str r0, [r4, #0x184] - add r0, r4, #0x100 - mov r1, #0x50 - strh r1, [r0, #0x8c] - str ip, [r4, #0x188] - str ip, [r4, #0x190] - mov r0, r4 - add r1, r4, #0x54 - mov r2, #0x800 - mov r3, #0x1000 - str ip, [r4, #0x1b0] - bl GhiInitBuffer - cmp r0, #0 - beq _022F9ACC - mov r0, r4 - add r1, r4, #0x78 - mov r2, #0x800 - mov r3, #0x400 - bl GhiInitBuffer -_022F9ACC: - cmp r0, #0 - beq _022F9AE8 - mov r2, #0x800 - mov r0, r4 - mov r3, r2 - add r1, r4, #0x9c - bl GhiInitBuffer -_022F9AE8: - cmp r0, #0 - beq _022F9B04 - mov r0, r4 - add r1, r4, #0xc0 - mov r2, #0x800 - mov r3, #0x400 - bl GhiInitBuffer -_022F9B04: - cmp r0, #0 - bne _022F9B20 - mov r0, r4 - bl GhiFreeConnection - bl GhiUnlock - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022F9B20: - ldr r0, _022F9B3C ; =ov00_023289B0 - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - bl GhiUnlock - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F9B3C: .word ov00_023289B0 - arm_func_end GhiNewConnection - - arm_func_start GhiFreeConnection -GhiFreeConnection: ; 0x022F9B40 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #4] - cmp r1, #0 - movlt r0, #0 - ldmltia sp!, {r4, pc} - ldr r0, _022F9C8C ; =ov00_023289B0 - ldr r0, [r0] - cmp r1, r0 - movge r0, #0 - ldmgeia sp!, {r4, pc} - bl GhiLock - ldr r0, [r4, #0x14] - bl gsifree - ldr r0, [r4, #0x18] - bl gsifree - ldr r0, [r4, #0x24] - bl gsifree - ldr r0, [r4, #0x2c] - bl gsifree - ldr r0, [r4, #0x12c] - bl gsifree - ldr r0, [r4, #0x188] - bl gsifree - ldr r0, [r4, #0x4c] - mvn r1, #0 - cmp r0, r1 - beq _022F9BD8 - mov r1, #2 - bl shutdown_gsi - ldr r0, [r4, #0x4c] - bl SocketClose -_022F9BD8: - add r0, r4, #0x54 - bl GhiFreeBuffer - add r0, r4, #0x78 - bl GhiFreeBuffer - add r0, r4, #0x9c - bl GhiFreeBuffer - add r0, r4, #0xc0 - bl GhiFreeBuffer - add r0, r4, #0xe4 - bl GhiFreeBuffer - ldr r0, [r4, #0x164] - cmp r0, #0 - beq _022F9C14 - mov r0, r4 - bl GhiPostCleanupState -_022F9C14: - ldr r0, [r4, #0x160] - cmp r0, #0 - beq _022F9C3C - bl GhiIsPostAutoFree - cmp r0, #0 - beq _022F9C3C - ldr r0, [r4, #0x160] - bl GhiFreePost - mov r0, #0 - str r0, [r4, #0x160] -_022F9C3C: - ldr r0, [r4, #0x198] - cmp r0, #0 - beq _022F9C68 - ldr r2, [r4, #0x1a4] - cmp r2, #0 - beq _022F9C60 - mov r0, r4 - add r1, r4, #0x190 - blx r2 -_022F9C60: - mov r0, #0 - str r0, [r4, #0x198] -_022F9C68: - mov r1, #0 - ldr r0, _022F9C8C ; =ov00_023289B0 - str r1, [r4] - ldr r1, [r0, #4] - sub r1, r1, #1 - str r1, [r0, #4] - bl GhiUnlock - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F9C8C: .word ov00_023289B0 - arm_func_end GhiFreeConnection - - arm_func_start GhiRequestToConnection -GhiRequestToConnection: ; 0x022F9C90 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GhiLock - cmp r4, #0 - blt _022F9CB4 - ldr r0, _022F9CE0 ; =ov00_023289B0 - ldr r1, [r0] - cmp r4, r1 - blt _022F9CC0 -_022F9CB4: - bl GhiUnlock - mov r0, #0 - ldmia sp!, {r4, pc} -_022F9CC0: - ldr r0, [r0, #0xc] - ldr r4, [r0, r4, lsl #2] - ldr r0, [r4] - cmp r0, #0 - moveq r4, #0 - bl GhiUnlock - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F9CE0: .word ov00_023289B0 - arm_func_end GhiRequestToConnection - - arm_func_start GhiEnumConnections -GhiEnumConnections: ; 0x022F9CE4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _022F9D44 ; =ov00_023289B0 - mov r4, r0 - ldr r0, [r1, #4] - cmp r0, #0 - ldmleia sp!, {r4, r5, r6, pc} - bl GhiLock - ldr r5, _022F9D44 ; =ov00_023289B0 - mov r6, #0 - ldr r0, [r5] - cmp r0, #0 - ble _022F9D3C -_022F9D14: - ldr r0, [r5, #0xc] - ldr r0, [r0, r6, lsl #2] - ldr r1, [r0] - cmp r1, #0 - beq _022F9D2C - blx r4 -_022F9D2C: - ldr r0, [r5] - add r6, r6, #1 - cmp r6, r0 - blt _022F9D14 -_022F9D3C: - bl GhiUnlock - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F9D44: .word ov00_023289B0 - arm_func_end GhiEnumConnections - - arm_func_start GhiRedirectConnection -GhiRedirectConnection: ; 0x022F9D48 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, [r4, #0x1b0] - cmp r0, #0 - beq _022F9D78 - bl GsiCancelResolvingHostname - ldr r0, [r4, #0x1b0] - bl gsifree - mov r0, #0 - str r0, [r4, #0x1b0] -_022F9D78: - ldr r0, [r4, #0x14] - bl gsifree - ldr r1, [r4, #0x12c] - mov r0, #0 - str r1, [r4, #0x14] - str r0, [r4, #0x12c] - ldr r0, [r4, #0x18] - bl gsifree - mov r0, #0 - str r0, [r4, #0x18] - str r0, [r4, #0x1c] - strh r0, [r4, #0x20] - ldr r0, [r4, #0x24] - bl gsifree - mov r0, #0 - str r0, [r4, #0x24] - ldr r0, [r4, #0x4c] - mov r1, #2 - bl shutdown_gsi - ldr r0, [r4, #0x4c] - bl SocketClose - mvn r1, #0 - add r0, r4, #0x54 - str r1, [r4, #0x4c] - bl GhiResetBuffer - add r0, r4, #0x78 - bl GhiResetBuffer - add r0, r4, #0x9c - bl GhiResetBuffer - add r0, r4, #0xc0 - bl GhiResetBuffer - mov r0, #0 - str r0, [r4, #0x10c] - str r0, [r4, #0x110] - str r0, [r4, #0x114] - str r0, [r4, #0x118] - str r0, [r4, #0x11c] - str r0, [r4, #0x154] - ldr r0, [r4, #0x198] - cmp r0, #0 - beq _022F9E5C - ldr r2, [r4, #0x1a4] - cmp r2, #0 - beq _022F9E34 - mov r0, r4 - add r1, r4, #0x190 - blx r2 -_022F9E34: - mov r0, #0 - str r0, [r4, #0x198] - ldr r1, [r4, #0x14] - ldr r0, _022F9E6C ; =ov00_0231A7F8 - mov r2, #8 - bl strncmp - cmp r0, #0 - movne r0, #0 - strne r0, [r4, #0x194] - strne r0, [r4, #0x190] -_022F9E5C: - ldr r0, [r4, #0x130] - add r0, r0, #1 - str r0, [r4, #0x130] - ldmia sp!, {r4, pc} - .align 2, 0 -_022F9E6C: .word ov00_0231A7F8 - arm_func_end GhiRedirectConnection - - arm_func_start GhiCleanupConnections -GhiCleanupConnections: ; 0x022F9E70 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022F9EE0 ; =ov00_023289B0 - ldr r0, [r0, #0xc] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022F9EE4 ; =GhiFreeConnection - bl GhiEnumConnections - ldr r4, _022F9EE0 ; =ov00_023289B0 - mov r5, #0 - ldr r0, [r4] - cmp r0, #0 - ble _022F9EBC -_022F9EA0: - ldr r0, [r4, #0xc] - ldr r0, [r0, r5, lsl #2] - bl gsifree - ldr r0, [r4] - add r5, r5, #1 - cmp r5, r0 - blt _022F9EA0 -_022F9EBC: - ldr r0, _022F9EE0 ; =ov00_023289B0 - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, _022F9EE0 ; =ov00_023289B0 - mov r1, #0 - str r1, [r0, #0xc] - str r1, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F9EE0: .word ov00_023289B0 -_022F9EE4: .word GhiFreeConnection - arm_func_end GhiCleanupConnections - - arm_func_start GhttpSetRequestEncryptionEngine -GhttpSetRequestEncryptionEngine: ; 0x022F9EE8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl GhiRequestToConnection - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #0x194] - cmp r1, r5 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x190] - cmp r0, #0 - cmpne r1, r5 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r5, #0 - bne _022F9F48 - ldr r0, [r4, #0x14] - ldr r1, _022F9F9C ; =ov00_0231A804 - mov r2, #8 - bl strncmp - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_022F9F48: - str r5, [r4, #0x194] - cmp r5, #0 - bne _022F9F64 - mov r0, #0 - str r0, [r4, #0x190] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022F9F64: - mov r2, #0 - ldr r1, _022F9FA0 ; =GhttpEncryptorSslInitFunc - str r2, [r4, #0x190] - ldr r0, _022F9FA4 ; =GhttpEncryptorSslCleanupFunc - str r1, [r4, #0x1a0] - ldr r1, _022F9FA8 ; =GhttpEncryptorSslEncryptFunc - str r0, [r4, #0x1a4] - ldr r0, _022F9FAC ; =GhttpEncryptorSslDecryptFunc - str r1, [r4, #0x1a8] - str r0, [r4, #0x1ac] - str r2, [r4, #0x198] - str r2, [r4, #0x19c] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F9F9C: .word ov00_0231A804 -_022F9FA0: .word GhttpEncryptorSslInitFunc -_022F9FA4: .word GhttpEncryptorSslCleanupFunc -_022F9FA8: .word GhttpEncryptorSslEncryptFunc -_022F9FAC: .word GhttpEncryptorSslDecryptFunc - arm_func_end GhttpSetRequestEncryptionEngine - - arm_func_start GhiEncryptorWriteNboLength -GhiEncryptorWriteNboLength: ; 0x022F9FB0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov ip, r1, lsr #0x18 - mov r4, r1, lsl #0x18 - mov r3, r1, lsr #8 - mov lr, r1, lsl #8 - and r1, r3, #0xff00 - and ip, ip, #0xff - and r3, lr, #0xff0000 - orr r1, ip, r1 - orr r1, r3, r1 - and r4, r4, #0xff000000 - orr r1, r4, r1 - str r1, [sp] - cmp r2, #4 - add r3, sp, #0 - addhi sp, sp, #4 - ldmhiia sp!, {r3, r4, pc} - rsb r1, r2, #4 - add r1, r3, r1 - bl memcpy - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end GhiEncryptorWriteNboLength - - arm_func_start GhiEncryptorReadNboLength -GhiEncryptorReadNboLength: ; 0x022FA00C - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r2, #4 - movhi r0, #0 - ldmhiia sp!, {r4, pc} - rsb r1, r2, #4 - add r1, r4, r1 - bl GhiReadDataFromBufferFixed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr ip, [r4] - mov r0, #1 - mov r2, ip, lsr #0x18 - mov r1, ip, lsr #8 - mov r3, ip, lsl #8 - mov ip, ip, lsl #0x18 - and r2, r2, #0xff - and r1, r1, #0xff00 - and r3, r3, #0xff0000 - orr r1, r2, r1 - and r2, ip, #0xff000000 - orr r1, r3, r1 - orr r1, r2, r1 - str r1, [r4] - ldmia sp!, {r4, pc} - arm_func_end GhiEncryptorReadNboLength - - arm_func_start GhiEncryptorParseAsn1Sequence -GhiEncryptorParseAsn1Sequence: ; 0x022FA074 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r1 - mov r3, #0 - add r1, sp, #0 - mov r2, #1 - mov r5, r0 - strb r3, [sp] - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsb r0, [sp] - cmp r0, #0x30 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - add r1, sp, #0 - mov r0, r5 - mov r2, #1 - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsb r2, [sp] - and r0, r2, #0x80 - cmp r0, #0x80 - bne _022FA144 - eor r0, r2, #0x80 - strb r0, [sp] - ldrsb r2, [sp] - mov r3, #0 - add r1, sp, #4 - mov r0, r5 - str r3, [sp, #4] - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x10] - ldr r2, [sp, #4] - sub r0, r1, r0 - cmp r2, r0 - movgt r0, #0 - add sp, sp, #8 - strle r2, [r4] - movle r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FA144: - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x10] - sub r0, r1, r0 - cmp r2, r0 - movgt r0, #0 - strle r2, [r4] - movle r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiEncryptorParseAsn1Sequence - - arm_func_start GhttpEncryptorGenerateEncryptionKeys -GhttpEncryptorGenerateEncryptionKeys: ; 0x022FA168 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x114 - mov r4, r0 - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA698 ; =ov00_0231A810 - add r0, sp, #0xac - mov r2, #1 - bl Sha1Input_Ghi - add r1, r4, #0x2a4 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2a4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, r4, #0x2d4 - add r0, r0, #0x400 - add r1, sp, #0x54 - bl MD5Final_Ghi - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA69C ; =ov00_0231A814 - add r0, sp, #0xac - mov r2, #2 - bl Sha1Input_Ghi - add r1, r4, #0x2a4 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2a4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, r4, #0x2e4 - add r0, r0, #0x400 - add r1, sp, #0x54 - bl MD5Final_Ghi - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA6A0 ; =ov00_0231A818 - add r0, sp, #0xac - mov r2, #3 - bl Sha1Input_Ghi - add r1, r4, #0x2a4 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2a4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, r4, #0x2f4 - add r0, r0, #0x400 - add r1, sp, #0x54 - bl MD5Final_Ghi - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA698 ; =ov00_0231A810 - add r0, sp, #0xac - mov r2, #1 - bl Sha1Input_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, sp, #0 - add r1, sp, #0x54 - bl MD5Final_Ghi - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA69C ; =ov00_0231A814 - add r0, sp, #0xac - mov r2, #2 - bl Sha1Input_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, sp, #0x10 - add r1, sp, #0x54 - bl MD5Final_Ghi - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA6A0 ; =ov00_0231A818 - add r0, sp, #0xac - mov r2, #3 - bl Sha1Input_Ghi - add r0, r4, #0x2d4 - add r1, r0, #0x400 - add r0, sp, #0xac - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, sp, #0x20 - add r1, sp, #0x54 - bl MD5Final_Ghi - add r0, sp, #0xac - bl Sha1Reset_Gsi - ldr r1, _022FA6A4 ; =ov00_0231A81C - add r0, sp, #0xac - mov r2, #4 - bl Sha1Input_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r1, r4, #0x264 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r1, r4, #0x284 - add r0, sp, #0xac - add r1, r1, #0x400 - mov r2, #0x20 - bl Sha1Input_Ghi - add r0, sp, #0xac - add r1, sp, #0x40 - bl Sha1Result_Gsi - add r0, sp, #0x54 - bl MD5Init_Ghi - add r1, r4, #0x2d4 - add r0, sp, #0x54 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x54 - add r1, sp, #0x40 - mov r2, #0x14 - bl MD5Update_Ghi - add r0, sp, #0x30 - add r1, sp, #0x54 - bl MD5Final_Ghi - add ip, r4, #0x320 - add r3, sp, #0 - mov r2, #8 -_022FA5B4: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - bne _022FA5B4 - add r3, sp, #0x10 - add ip, r4, #0x334 - mov r2, #8 -_022FA5E0: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - bne _022FA5E0 - add r3, sp, #0x20 - add ip, r4, #0x348 - mov r2, #8 -_022FA60C: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - bne _022FA60C - add r3, sp, #0x30 - add ip, r4, #0x358 - mov r2, #8 -_022FA638: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - bne _022FA638 - mov r0, #0x10 - str r0, [r4, #0x388] - str r0, [r4, #0x38c] - str r0, [r4, #0x390] - str r0, [r4, #0x394] - ldr r2, [r4, #0x390] - add r0, r4, #0x3a0 - add r1, r4, #0x348 - bl RC4Init_Gsi - add r0, r4, #0xa2 - ldr r2, [r4, #0x394] - add r0, r0, #0x400 - add r1, r4, #0x358 - bl RC4Init_Gsi - add sp, sp, #0x114 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022FA698: .word ov00_0231A810 -_022FA69C: .word ov00_0231A814 -_022FA6A0: .word ov00_0231A818 -_022FA6A4: .word ov00_0231A81C - arm_func_end GhttpEncryptorGenerateEncryptionKeys - - arm_func_start GhttpEncryptorSslInitFunc -GhttpEncryptorSslInitFunc: ; 0x022FA6A8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x34 - mov r6, r0 - ldr r2, [r6, #0x5c] - ldr r0, [r6, #0x60] - mov r5, r1 - sub r0, r2, r0 - cmp r0, #0x32 - addlo sp, sp, #0x34 - movlo r0, #2 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, _022FA8A8 ; =0x00000704 - bl gsimalloc - cmp r0, #0 - str r0, [r5] - addeq sp, sp, #0x34 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r2, _022FA8A8 ; =0x00000704 - mov r1, #0 - bl memset - ldr r4, [r5] - mov r1, #1 - add r0, r4, #0x1a4 - str r1, [r5, #8] - mov r1, #0 - add r0, r0, #0x400 - str r1, [r5, #0xc] - bl MD5Init_Ghi - add r0, r4, #0x1fc - add r0, r0, #0x400 - bl Sha1Reset_Gsi - mov r0, #0x16 - mov r1, #3 - mov r2, #0 - strb r0, [sp] - strb r1, [sp, #1] - strb r2, [sp, #2] - add r0, sp, #3 - mov r1, #0x2d - mov r2, #2 - bl GhiEncryptorWriteNboLength - mov r0, #1 - strb r0, [sp, #5] - mov r0, #0 - mov r2, #3 - strb r0, [sp, #0xa] - add r0, sp, #6 - mov r1, #0x29 - strb r2, [sp, #9] - bl GhiEncryptorWriteNboLength - add r0, sp, #0xb - mov r1, #0 - mov r2, #4 - bl GhiEncryptorWriteNboLength - bl current_time_gsi - bl Util_RandSeed - mov r8, #0 - add sb, sp, #0 - mov r7, r8 - mov r5, #0xff -_022FA79C: - mov r0, r7 - mov r1, r5 - bl RandRangeOverlay0 - add r8, r8, #1 - strb r0, [sb, #0xf] - cmp r8, #0x1c - add sb, sb, #1 - blt _022FA79C - add ip, sp, #0xb - ldrb r2, [ip] - ldrb r1, [ip, #1] - add r0, r4, #0x288 - add r5, r0, #0x400 - strb r2, [r4, #0x684] - strb r1, [r4, #0x685] - ldrb r1, [ip, #2] - ldrb r0, [ip, #3] - add r3, sp, #0xf - mov r2, #0xe - strb r1, [r4, #0x686] - strb r0, [r4, #0x687] -_022FA7F0: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [r5] - strb r0, [r5, #1] - add r5, r5, #2 - bne _022FA7F0 - ldr r0, _022FA8AC ; =ov00_02318490 - mov ip, #0 - ldr r0, [r0] - add r1, sp, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov lr, r0, asr #8 - mov r2, r0, lsl #8 - add r0, r4, #0x1a4 - mov r3, #0x200 - mov r5, #1 - and lr, lr, #0xff - and r2, r2, #0xff00 - orr lr, lr, r2 - add r0, r0, #0x400 - add r1, r1, #5 - mov r2, #0x2d - strb ip, [sp, #0x2b] - strh r3, [sp, #0x2c] - strh lr, [sp, #0x2e] - strb r5, [sp, #0x30] - strb ip, [sp, #0x31] - bl MD5Update_Ghi - add r1, sp, #0 - add r0, r4, #0x1fc - add r0, r0, #0x400 - add r1, r1, #5 - mov r2, #0x2d - bl Sha1Input_Ghi - add r1, sp, #0 - add r0, r6, #0x54 - mov r2, #0x32 - bl GhiAppendDataToBuffer - cmp r0, #0 - moveq r0, #2 - movne r0, r5 - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FA8A8: .word 0x00000704 -_022FA8AC: .word ov00_02318490 - arm_func_end GhttpEncryptorSslInitFunc - - arm_func_start GhttpEncryptorSslCleanupFunc -GhttpEncryptorSslCleanupFunc: ; 0x022FA8B0 - stmdb sp!, {r4, lr} - movs r4, r1 - beq _022FA8E0 - ldr r0, [r4] - cmp r0, #0 - beq _022FA8D4 - bl gsifree - mov r0, #0 - str r0, [r4] -_022FA8D4: - mov r0, #0 - str r0, [r4, #8] - str r0, [r4, #0xc] -_022FA8E0: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end GhttpEncryptorSslCleanupFunc - - arm_func_start GhttpEncryptorSslEncryptFunc -GhttpEncryptorSslEncryptFunc: ; 0x022FA8E8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x6c - mov sb, r2 - mov r8, r3 - cmp r1, #0 - ldr r7, [sp, #0x88] - ldr r6, [sp, #0x8c] - beq _022FAAE0 - ldr r4, [r1] - cmp r4, #0 - ldrne r0, [r1, #0xc] - cmpne r0, #0 - bne _022FA950 - ldr r0, [r6] - cmp r8, r0 - addgt sp, sp, #0x6c - movgt r0, #2 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - mov r1, sb - mov r2, r8 - bl memcpy - ldr r0, [r6] - add r0, r0, r8 - str r0, [r6] - b _022FAAE0 -_022FA950: - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp] - ldr r1, [r6] - add r0, r8, #5 - cmp r1, r0 - addlt sp, sp, #0x6c - mov r1, #0 - movlt r0, #2 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, #0x17 - strb r0, [r7] - mov r0, #3 - strb r0, [r7, #1] - add r0, sp, #0x14 - strb r1, [r7, #2] - add r5, r1, #5 - bl MD5Init_Ghi - ldr r2, [r4, #0x388] - add r0, sp, #0x14 - add r1, r4, #0x320 - bl MD5Update_Ghi - ldr r1, _022FAAEC ; =ov00_0231A824 - add r0, sp, #0x14 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x14 - add r1, r4, #0x310 - mov r2, #8 - bl MD5Update_Ghi - ldr r1, _022FAAF0 ; =ov00_0231A858 - add r0, sp, #0x14 - mov r2, #1 - bl MD5Update_Ghi - add r0, sp, #0x14 - add r1, sp, #0 - mov r2, #2 - bl MD5Update_Ghi - add r0, sp, #0x14 - mov r1, sb - mov r2, r8 - bl MD5Update_Ghi - add r0, sp, #2 - add r1, sp, #0x14 - bl MD5Final_Ghi - add r0, sp, #0x14 - bl MD5Init_Ghi - ldr r2, [r4, #0x388] - add r0, sp, #0x14 - add r1, r4, #0x320 - bl MD5Update_Ghi - ldr r1, _022FAAF4 ; =ov00_0231A85C - add r0, sp, #0x14 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, sp, #0x14 - add r1, sp, #2 - mov r2, #0x10 - bl MD5Update_Ghi - add r0, sp, #2 - add r1, sp, #0x14 - bl MD5Final_Ghi - mov r1, sb - add r0, r4, #0x3a0 - add r2, r7, r5 - mov r3, r8 - bl RC4Encrypt_Gsi - add r5, r5, r8 - add r0, r4, #0x3a0 - add r1, sp, #2 - add r2, r7, r5 - mov r3, #0x10 - bl RC4Encrypt_Gsi - add r1, r5, #0x10 - add r0, r7, #3 - sub r1, r1, #5 - mov r2, #2 - bl GhiEncryptorWriteNboLength - add r0, r5, #0x10 - ldr r1, [r6] - mov r5, #7 - sub r0, r1, r0 - str r0, [r6] - mov r0, #0 - mov r2, r0 -_022FAAB8: - add r3, r4, r5 - ldrb r1, [r3, #0x310] - cmp r1, #0xff - subeq r5, r5, #1 - streqb r2, [r3, #0x310] - addne r1, r1, #1 - movne r5, r0 - strneb r1, [r3, #0x310] - cmp r5, #0 - bge _022FAAB8 -_022FAAE0: - mov r0, #1 - add sp, sp, #0x6c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FAAEC: .word ov00_0231A824 -_022FAAF0: .word ov00_0231A858 -_022FAAF4: .word ov00_0231A85C - arm_func_end GhttpEncryptorSslEncryptFunc - - arm_func_start GhttpEncryptorSslDecryptFunc -GhttpEncryptorSslDecryptFunc: ; 0x022FAAF8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - movs fp, r1 - mov sb, r0 - ldr r0, [sp, #0x50] - ldrne r1, [fp] - mov r5, #0 - mov r8, r2 - mov r7, r3 - mov r6, r5 - str r0, [sp, #0x50] - ldr sl, [sp, #0x54] - cmpne r1, #0 - bne _022FAB5C - ldr r2, [r7] - ldr r0, [sp, #0x50] - mov r1, r8 - bl memcpy - ldr r1, [r7] - mov r0, #0 - str r1, [sl] - str r0, [r7] - add sp, sp, #0x28 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FAB5C: - addeq sp, sp, #0x28 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r7] - cmp r0, #0 - ble _022FAD04 - add r4, r1, #0xa2 -_022FAB78: - mov r0, #0 - strh r0, [sp] - ldr r0, [r7] - sub r0, r0, r5 - cmp r0, #5 - blo _022FAD04 - add r1, r8, r5 - ldrb r3, [r1, #3] - ldrb r2, [r1, #4] - add r0, sp, #0 - strb r2, [r0, #1] - strb r3, [r0] - ldrh r3, [sp] - mov r0, r3, asr #8 - and r2, r0, #0xff - mov r0, r3, lsl #8 - and r0, r0, #0xff00 - orr r0, r2, r0 - strh r0, [sp] - ldrh r3, [sp] - ldr r0, [r7] - add r2, r5, r3 - add r2, r2, #5 - cmp r0, r2 - blt _022FAD04 - ldr r0, [sb, #0x19c] - cmp r0, #0 - beq _022FAC14 - ldr r2, [sl] - sub r2, r2, r6 - cmp r2, r3 - bge _022FAC14 - str r5, [r7] - cmp r6, #0 - movgt r0, #1 - add sp, sp, #0x28 - str r6, [sl] - movle r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FAC14: - ldrb r1, [r1] - sub r1, r1, #0x14 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _022FACE4 -_022FAC28: ; jump table - b _022FACCC ; case 0 - b _022FACDC ; case 1 - b _022FAC38 ; case 2 - b _022FAC88 ; case 3 -_022FAC38: - cmp r0, #0 - add r5, r5, #5 - beq _022FAC54 - add r1, r8, r5 - add r0, r4, #0x400 - mov r2, r1 - bl RC4Encrypt_Gsi -_022FAC54: - ldrh r3, [sp] - mov r0, sb - add r1, sp, #4 - add r2, r8, r5 - bl GhiInitReadOnlyBuffer - mov r0, sb - mov r1, fp - add r2, sp, #4 - bl GhttpEncryptorProcessSslHandshake - cmp r0, #1 - beq _022FACF0 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FAC88: - cmp r0, #0 - add r5, r5, #5 - beq _022FACA4 - add r1, r8, r5 - add r0, r4, #0x400 - mov r2, r1 - bl RC4Encrypt_Gsi -_022FACA4: - ldrh r2, [sp] - ldr r0, [sp, #0x50] - add r1, r8, r5 - add r0, r0, r6 - sub r2, r2, #0x10 - bl memcpy - ldrh r0, [sp] - sub r0, r0, #0x10 - add r6, r6, r0 - b _022FACF0 -_022FACCC: - mov r0, #1 - str r0, [sb, #0x19c] - add r5, r5, #5 - b _022FACF0 -_022FACDC: - add r5, r5, #5 - b _022FACF0 -_022FACE4: - add sp, sp, #0x28 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FACF0: - ldrh r1, [sp] - ldr r0, [r7] - add r5, r5, r1 - cmp r5, r0 - blt _022FAB78 -_022FAD04: - str r5, [r7] - str r6, [sl] - ldr r0, [r7] - cmp r0, #0 - movlt r0, #3 - movge r0, #1 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GhttpEncryptorSslDecryptFunc - - arm_func_start GhiCertificateChainIsValid -GhiCertificateChainIsValid: ; 0x022FAD24 - mov r0, #1 - bx lr - arm_func_end GhiCertificateChainIsValid - - arm_func_start GhttpEncryptorProcessSslHandshake -GhttpEncryptorProcessSslHandshake: ; 0x022FAD2C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - mov r4, r2 - ldr r2, [r4, #0x10] - ldr r3, [r4, #0xc] - mov r5, r0 - mov r0, r2 - str r2, [sp] - cmp r0, r3 - ldr r7, [r1] - bge _022FBCF8 -_022FAD58: - mov r3, #0 - add r1, sp, #5 - mov r0, r4 - mov r2, #1 - strb r3, [sp, #5] - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r0, [sp, #5] - cmp r0, #2 - bne _022FAF0C - mov r0, #0 - str r0, [sp, #0x28] - str r0, [sp, #0x24] - strb r0, [sp, #4] - ldr r0, [r7] - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x28 - mov r0, r4 - mov r2, #3 - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x10] - ldr r2, [sp, #0x28] - sub r1, r1, r0 - cmp r2, r1 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, r7, #0x264 - add r3, r0, #2 - mov r0, r4 - add r1, r1, #0x400 - mov r2, #0x20 - str r3, [r4, #0x10] - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #4 - mov r0, r4 - mov r2, #1 - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r2, [sp, #4] - mov r0, r4 - add r1, r7, #4 - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r3, [sp, #4] - add r1, sp, #0x24 - mov r0, r4 - mov r2, #2 - str r3, [r7] - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r6, [sp, #0x24] - add r3, r7, #0x100 - add r1, sp, #4 - mov r0, r4 - mov r2, #1 - strh r6, [r3, #4] - bl GhiReadDataFromBufferFixed - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r0, [sp, #4] - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - ldr r0, [sp] - ldr r3, [r4, #4] - sub r6, r1, r0 - ldr r1, [sp] - add r0, r7, #0x1a4 - mov r2, r6 - add r0, r0, #0x400 - add r1, r3, r1 - bl MD5Update_Ghi - add r0, r7, #0x1fc - ldr r3, [r4, #4] - ldr r1, [sp] - mov r2, r6 - add r0, r0, #0x400 - add r1, r3, r1 - bl Sha1Input_Ghi - b _022FBCE4 -_022FAF0C: - cmp r0, #0xb - bne _022FB6A0 - mov r8, #0 - add r1, sp, #0x20 - mov r0, r4 - mov r2, #3 - str r8, [sp, #0x20] - str r8, [sp, #0x1c] - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x1c - mov r0, r4 - mov r2, #3 - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [sp, #0x1c] - ldr r1, [sp, #0x20] - add r0, r2, #3 - cmp r1, r0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - ldr r0, [r4, #0xc] - add sb, r1, r2 - sub r0, r0, r1 - cmp r2, r0 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r1, sb - bge _022FB630 - add r6, sp, #0x14 -_022FAFA8: - mov r0, #0 - str r0, [sp, #0x18] - mov r0, r4 - add r1, sp, #0x18 - mov r2, #3 - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr fp, [r4, #0x10] - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x18] - sub r0, r0, fp - cmp r1, r0 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022FBD10 ; =0x0000FFFF - cmp r1, r0 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r8, r8, #1 - cmp r8, #1 - bne _022FB61C - mov r0, #0 - str r0, [sp, #0x14] - mov r0, r4 - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r4 - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - ldr r0, [r4, #0xc] - sub r0, r0, r1 - cmp r0, #5 - addlt sp, sp, #0x50 - movlt r0, #3 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #0xa0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #3 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #2 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #1 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - add r1, r0, #1 - add r0, r1, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #2 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x10] - mov r0, r2 - add r1, r0, #1 - str r1, [r4, #0x10] - ldr r0, [r4, #4] - ldrb sl, [r0, r2] - add r0, r1, sl - cmp r0, sb - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r4 - add r1, r1, sl - str r1, [r4, #0x10] - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x10] - ldr r1, [sp, #0x14] - mov r0, r4 - add r1, r2, r1 - str r1, [r4, #0x10] - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x10] - ldr r1, [sp, #0x14] - mov r0, r4 - add r1, r2, r1 - str r1, [r4, #0x10] - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x10] - ldr r1, [sp, #0x14] - mov r0, r4 - add r1, r2, r1 - str r1, [r4, #0x10] - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x10] - ldr r1, [sp, #0x14] - mov r0, r4 - add r1, r2, r1 - str r1, [r4, #0x10] - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r4 - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x14] - cmp r0, #0xd - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #6 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r2, [r4, #4] - ldrb r0, [r2, r1] - cmp r0, #9 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - ldr r1, _022FBD14 ; =ov00_02318484 - add r0, r2, r0 - mov r2, #9 - bl memcmp - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - add r1, r0, #9 - add r0, r1, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #5 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - sub r0, sb, r1 - cmp r0, #2 - addlt sp, sp, #0x50 - movlt r0, #3 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #3 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #0x81 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - sub r0, sb, r0 - cmp sl, r0 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - add r1, r0, #1 - add r0, r1, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrb r0, [r0, r1] - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r4 - mov r1, r6 - bl GhiEncryptorParseAsn1Sequence - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x10] - mov r0, r2 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r1, [r4, #4] - ldrsb r0, [r1, r2] - cmp r0, #2 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - ldrsb r1, [r1, r0] - and r1, r1, #0x80 - cmp r1, #0x80 - mov r1, r0 - add r1, r1, #1 - bne _022FB488 - str r1, [r4, #0x10] - ldr r1, [r4, #4] - ldrsb r0, [r1, r0] - and r0, r0, #0x7f - cmp r0, #4 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0 - sub r0, r0, #1 - mov sl, #0 - ble _022FB494 -_022FB45C: - ldr r2, [r4, #0x10] - cmp r0, #0 - mov r1, r2 - add r1, r1, #1 - str r1, [r4, #0x10] - ldr r1, [r4, #4] - sub r0, r0, #1 - ldrb r1, [r1, r2] - orr sl, r1, sl, lsl #8 - bgt _022FB45C - b _022FB494 -_022FB488: - str r1, [r4, #0x10] - ldr r1, [r4, #4] - ldrb sl, [r1, r0] -_022FB494: - ldr r1, [r4, #0x10] - add r0, r1, sl - cmp r0, sb - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r1 - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - ldrsb r0, [r0, r1] - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r2, sl, #1 - cmp r2, #0x800 - addhi sp, sp, #0x50 - movhi r0, #3 - ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r2, lsr #2 - str r0, [r7, #0x108] - ldr r3, [r4, #4] - ldr r1, [r4, #0x10] - add r0, r7, #0x108 - add r1, r3, r1 - bl GsLargeIntSetFromMemoryStream - ldr r1, [r4, #0x10] - sub r0, sl, #1 - add r2, r1, r0 - add r0, r2, #1 - str r0, [r4, #0x10] - ldr r1, [r4, #4] - ldrsb r0, [r1, r2] - cmp r0, #2 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - ldrsb r1, [r1, r0] - and r1, r1, #0x80 - cmp r1, #0x80 - mov r1, r0 - add r1, r1, #1 - bne _022FB5A4 - str r1, [r4, #0x10] - ldr r1, [r4, #4] - ldrsb r0, [r1, r0] - and r0, r0, #0x7f - cmp r0, #4 - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0 - sub r0, r0, #1 - mov sl, #0 - ble _022FB5B0 -_022FB578: - ldr r2, [r4, #0x10] - cmp r0, #0 - mov r1, r2 - add r1, r1, #1 - str r1, [r4, #0x10] - ldr r1, [r4, #4] - sub r0, r0, #1 - ldrb r1, [r1, r2] - orr sl, r1, sl, lsl #8 - bgt _022FB578 - b _022FB5B0 -_022FB5A4: - str r1, [r4, #0x10] - ldr r1, [r4, #4] - ldrb sl, [r1, r0] -_022FB5B0: - ldr r0, [r4, #0x10] - add r0, r0, sl - cmp r0, sb - addgt sp, sp, #0x50 - movgt r0, #3 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0x800 - addhi sp, sp, #0x50 - movhi r0, #3 - ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r0, sl, #1 - mov r0, r0, lsr #2 - add r0, r0, #1 - str r0, [r7, #0x20c] - add r0, r7, #0x20c - ldr r3, [r4, #4] - ldr r1, [r4, #0x10] - mov r2, sl - add r1, r3, r1 - bl GsLargeIntSetFromMemoryStream - ldr r0, [r4, #0x10] - add r0, r0, sl - str r0, [r4, #0x10] -_022FB61C: - ldr r0, [sp, #0x18] - add r1, fp, r0 - str r1, [r4, #0x10] - cmp r1, sb - blt _022FAFA8 -_022FB630: - cmp r1, sb - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r7 - bl GhiCertificateChainIsValid - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x10] - ldr r0, [sp] - ldr r3, [r4, #4] - sub r6, r1, r0 - ldr r1, [sp] - add r0, r7, #0x1a4 - mov r2, r6 - add r0, r0, #0x400 - add r1, r3, r1 - bl MD5Update_Ghi - add r0, r7, #0x1fc - ldr r3, [r4, #4] - ldr r1, [sp] - mov r2, r6 - add r0, r0, #0x400 - add r1, r3, r1 - bl Sha1Input_Ghi - b _022FBCE4 -_022FB6A0: - cmp r0, #0xe - bne _022FBCC8 - mov r3, #0 - add r1, sp, #8 - mov r0, r4 - mov r2, #3 - str r3, [sp, #8] - bl GhiEncryptorReadNboLength - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #8] - cmp r0, #0 - addne sp, sp, #0x50 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #4] - ldr r1, [sp] - ldr r3, [r4, #0x10] - add r1, r2, r1 - ldr r2, [sp] - add r0, r7, #0x1a4 - add r0, r0, #0x400 - sub r2, r3, r2 - bl MD5Update_Ghi - add r0, r7, #0x1fc - ldr r2, [r4, #4] - ldr r1, [sp] - ldr r3, [r4, #0x10] - add r1, r2, r1 - ldr r2, [sp] - add r0, r0, #0x400 - sub r2, r3, r2 - bl Sha1Input_Ghi - ldr r0, [r7, #0x108] - mov r0, r0, lsl #2 - add r2, r0, #9 - str r2, [sp, #8] - ldr r1, [r5, #0x5c] - ldr r0, [r5, #0x60] - sub r0, r1, r0 - cmp r0, r2 - bge _022FB784 -_022FB750: - ldr r1, [r5, #0x68] - add r0, r5, #0x54 - bl GhiResizeBuffer - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r5, #0x5c] - ldr r1, [r5, #0x60] - ldr r0, [sp, #8] - sub r1, r2, r1 - cmp r1, r0 - blt _022FB750 -_022FB784: - mov r0, #3 - strb r0, [r7, #0x6a4] - mov r0, #0 - strb r0, [r7, #0x6a5] - mov sb, #2 - mov r8, r0 - mov r6, #0x100 -_022FB7A0: - bl current_time_gsi - bl Util_RandSeed - mov r0, r8 - mov r1, r6 - bl RandRangeOverlay0 - add r1, r7, sb - add sb, sb, #1 - strb r0, [r1, #0x6a4] - cmp sb, #0x30 - blt _022FB7A0 - ldr r1, [r5, #0x60] - ldr r2, [r5, #0x58] - add r0, r1, #9 - str r0, [r5, #0x60] - mov r0, #0x16 - strb r0, [r2, r1] - add r6, r2, r1 - mov r0, #3 - strb r0, [r6, #1] - mov r0, #0 - strb r0, [r6, #2] - ldr r1, [r7, #0x108] - add r0, r6, #3 - mov r1, r1, lsl #2 - add r1, r1, #4 - mov r2, #2 - bl GhiEncryptorWriteNboLength - mov r0, #0x10 - strb r0, [r6, #5] - ldr r1, [r7, #0x108] - add r0, r6, #6 - mov r1, r1, lsl #2 - mov r2, #3 - bl GhiEncryptorWriteNboLength - add r0, r7, #0x2a4 - add r1, r0, #0x400 - ldr r8, [r5, #0x58] - ldr r3, [r5, #0x60] - add r0, r7, #0x108 - mov r2, #0x30 - add r3, r8, r3 - bl GsCryptRsaEncryptBuffer - add r0, r7, #0x1a4 - ldr r2, [r5, #0x60] - ldr r1, [r7, #0x108] - add r0, r0, #0x400 - add r1, r2, r1, lsl #2 - str r1, [r5, #0x60] - ldr r2, [r7, #0x108] - add r1, r6, #5 - mov r2, r2, lsl #2 - add r2, r2, #4 - bl MD5Update_Ghi - ldr r2, [r7, #0x108] - add r0, r7, #0x1fc - mov r2, r2, lsl #2 - add r1, r6, #5 - add r0, r0, #0x400 - add r2, r2, #4 - bl Sha1Input_Ghi - ldr r2, [r5, #0x58] - ldr r1, [r5, #0x60] - mov r0, #0x14 - strb r0, [r2, r1] - add r1, r2, r1 - mov r0, #3 - strb r0, [r1, #1] - mov r0, #0 - strb r0, [r1, #2] - strb r0, [r1, #3] - mov r2, #1 - strb r2, [r1, #4] - ldr r0, [r5, #0x60] - add r1, r0, #5 - add r0, r1, #1 - str r0, [r5, #0x60] - ldr r0, [r5, #0x58] - strb r2, [r0, r1] - mov r0, r7 - bl GhttpEncryptorGenerateEncryptionKeys - ldr r2, [r5, #0x58] - ldr r1, [r5, #0x60] - mov r0, #0x16 - strb r0, [r2, r1] - add r6, r2, r1 - mov r2, #3 - strb r2, [r6, #1] - mov r0, #0 - strb r0, [r6, #2] - strb r0, [r6, #3] - mov r0, #0x38 - strb r0, [r6, #4] - ldr r0, [r5, #0x60] - mov r3, #0x14 - add r8, r0, #5 - add r0, r8, #1 - str r0, [r5, #0x60] - ldr r0, [r5, #0x58] - mov r1, #0x24 - strb r3, [r0, r8] - ldr r3, [r5, #0x58] - ldr r0, [r5, #0x60] - add r0, r3, r0 - bl GhiEncryptorWriteNboLength - ldr r1, [r5, #0x60] - add r0, r7, #0x1a4 - add r3, r1, #3 - ldr r1, _022FBD18 ; =ov00_0231A890 - add r0, r0, #0x400 - mov r2, #4 - str r3, [r5, #0x60] - bl MD5Update_Ghi - add r0, r7, #0x1a4 - add r1, r7, #0x2d4 - add r0, r0, #0x400 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - ldr r1, _022FBD1C ; =ov00_0231A824 - add r0, r0, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r1, r7, #0x1a4 - add r0, sp, #0x40 - add r1, r1, #0x400 - bl MD5Final_Ghi - add r0, r7, #0x1fc - ldr r1, _022FBD18 ; =ov00_0231A890 - add r0, r0, #0x400 - mov r2, #4 - bl Sha1Input_Ghi - add r0, r7, #0x1fc - add r1, r7, #0x2d4 - add r0, r0, #0x400 - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r0, r7, #0x1fc - ldr r1, _022FBD1C ; =ov00_0231A824 - add r0, r0, #0x400 - mov r2, #0x28 - bl Sha1Input_Ghi - add r0, r7, #0x1fc - add r0, r0, #0x400 - add r1, sp, #0x2c - bl Sha1Result_Gsi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - bl MD5Init_Ghi - add r0, r7, #0x1a4 - add r1, r7, #0x2d4 - add r0, r0, #0x400 - add r1, r1, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - ldr r1, _022FBD20 ; =ov00_0231A85C - add r0, r0, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, sp, #0x40 - mov r2, #0x10 - bl MD5Update_Ghi - add r1, r7, #0x1a4 - add r0, sp, #0x40 - add r1, r1, #0x400 - bl MD5Final_Ghi - add r0, r7, #0x1fc - add r0, r0, #0x400 - bl Sha1Reset_Gsi - add r0, r7, #0x1fc - add r1, r7, #0x2d4 - add r0, r0, #0x400 - add r1, r1, #0x400 - mov r2, #0x30 - bl Sha1Input_Ghi - add r0, r7, #0x1fc - ldr r1, _022FBD20 ; =ov00_0231A85C - add r0, r0, #0x400 - mov r2, #0x28 - bl Sha1Input_Ghi - add r0, r7, #0x1fc - add r0, r0, #0x400 - add r1, sp, #0x2c - mov r2, #0x14 - bl Sha1Input_Ghi - add r0, r7, #0x1fc - add r0, r0, #0x400 - add r1, sp, #0x2c - bl Sha1Result_Gsi - ldr r1, [r5, #0x58] - ldr r0, [r5, #0x60] - add r3, sp, #0x40 - add r8, r1, r0 - mov r2, #8 -_022FBAB8: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [r8] - strb r0, [r8, #1] - add r8, r8, #2 - bne _022FBAB8 - ldr r0, [r5, #0x60] - add r3, sp, #0x2c - add r1, r0, #0x10 - str r1, [r5, #0x60] - ldr r0, [r5, #0x58] - mov r2, #0xa - arm_func_end GhttpEncryptorProcessSslHandshake - - arm_func_start ov00_022FBAF0 -ov00_022FBAF0: ; 0x022FBAF0 - add r8, r0, r1 -_022FBAF4: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [r8] - strb r0, [r8, #1] - add r8, r8, #2 - bne _022FBAF4 - ldr r1, [r5, #0x60] - add r0, r7, #0x1a4 - add r1, r1, #0x14 - add r0, r0, #0x400 - str r1, [r5, #0x60] - bl MD5Init_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, r7, #0x320 - mov r2, #0x10 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - ldr r1, _022FBD1C ; =ov00_0231A824 - add r0, r0, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, r7, #0x310 - mov r2, #8 - bl MD5Update_Ghi - mov r0, #0x16 - strb r0, [sp, #0xc] - mov r0, #0 - strb r0, [sp, #0xd] - strb r0, [sp, #0x10] - strb r0, [sp, #0x11] - mov r0, #0x28 - strb r0, [sp, #0xe] - mov r0, #0x14 - strb r0, [sp, #0xf] - mov r0, #0x24 - strb r0, [sp, #0x12] - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, sp, #0xc - mov r2, #7 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, sp, #0x40 - mov r2, #0x10 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, sp, #0x2c - mov r2, #0x14 - bl MD5Update_Ghi - add r1, r7, #0x1a4 - add r0, sp, #0x40 - add r1, r1, #0x400 - bl MD5Final_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - bl MD5Init_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, r7, #0x320 - mov r2, #0x10 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - ldr r1, _022FBD20 ; =ov00_0231A85C - add r0, r0, #0x400 - mov r2, #0x30 - bl MD5Update_Ghi - add r0, r7, #0x1a4 - add r0, r0, #0x400 - add r1, sp, #0x40 - mov r2, #0x10 - bl MD5Update_Ghi - add r1, r7, #0x1a4 - add r0, sp, #0x40 - add r1, r1, #0x400 - bl MD5Final_Ghi - ldr r1, [r5, #0x58] - ldr r0, [r5, #0x60] - add r3, sp, #0x40 - add r8, r1, r0 - mov r2, #8 -_022FBC50: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - strb r1, [r8] - strb r0, [r8, #1] - add r8, r8, #2 - bne _022FBC50 - ldr r0, [r5, #0x60] - mov r3, #0 - add r0, r0, #0x10 - str r0, [r5, #0x60] - strb r3, [r7, #0x310] - strb r3, [r7, #0x311] - strb r3, [r7, #0x312] - strb r3, [r7, #0x313] - strb r3, [r7, #0x314] - strb r3, [r7, #0x315] - strb r3, [r7, #0x316] - add r0, r7, #0x314 - mov r1, #1 - mov r2, #4 - strb r3, [r7, #0x317] - bl GhiEncryptorWriteNboLength - add r1, r6, #5 - add r0, r7, #0x3a0 - mov r2, r1 - mov r3, #0x38 - bl RC4Encrypt_Gsi - b _022FBCE4 -_022FBCC8: - cmp r0, #0x14 - ldreq r0, [r4, #0xc] - streq r0, [r4, #0x10] - beq _022FBCE4 - add sp, sp, #0x50 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FBCE4: - ldr r0, [r4, #0x10] - ldr r3, [r4, #0xc] - str r0, [sp] - cmp r0, r3 - blt _022FAD58 -_022FBCF8: - ldr r0, [sp] - cmp r0, r3 - moveq r0, #1 - movne r0, #3 - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FBD10: .word 0x0000FFFF -_022FBD14: .word ov00_02318484 -_022FBD18: .word ov00_0231A890 -_022FBD1C: .word ov00_0231A824 -_022FBD20: .word ov00_0231A85C - arm_func_end ov00_022FBAF0 - - arm_func_start GhiHandleStatus -GhiHandleStatus: ; 0x022FBD24 - stmdb sp!, {r3, lr} - ldr lr, [r0, #0x114] - ldr r3, _022FBDDC ; =0x51EB851F - mov r1, lr, lsr #0x1f - smull r2, ip, r3, lr - add ip, r1, ip, asr #5 - cmp ip, #5 - addls pc, pc, ip, lsl #2 - ldmia sp!, {r3, pc} -_022FBD48: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _022FBD60 ; case 1 - b _022FBD60 ; case 2 - b _022FBD60 ; case 3 - b _022FBD64 ; case 4 - b _022FBDD0 ; case 5 -_022FBD60: - ldmia sp!, {r3, pc} -_022FBD64: - sub r1, lr, #0x91 - sub r1, r1, #0x100 - cmp r1, #9 - addls pc, pc, r1, lsl #2 - b _022FBDC4 -_022FBD78: ; jump table - b _022FBDA0 ; case 0 - b _022FBDC4 ; case 1 - b _022FBDAC ; case 2 - b _022FBDB8 ; case 3 - b _022FBDC4 ; case 4 - b _022FBDC4 ; case 5 - b _022FBDC4 ; case 6 - b _022FBDC4 ; case 7 - b _022FBDC4 ; case 8 - b _022FBDB8 ; case 9 -_022FBDA0: - mov r1, #9 - str r1, [r0, #0x3c] - ldmia sp!, {r3, pc} -_022FBDAC: - mov r1, #0xa - str r1, [r0, #0x3c] - ldmia sp!, {r3, pc} -_022FBDB8: - mov r1, #0xb - str r1, [r0, #0x3c] - ldmia sp!, {r3, pc} -_022FBDC4: - mov r1, #8 - str r1, [r0, #0x3c] - ldmia sp!, {r3, pc} -_022FBDD0: - mov r1, #0xc - str r1, [r0, #0x3c] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBDDC: .word 0x51EB851F - arm_func_end GhiHandleStatus - - arm_func_start GhiProcessConnection -GhiProcessConnection: ; 0x022FBDE0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r1, [r4, #0x150] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - str r1, [r4, #0x150] - ldr r1, [r4, #0x10] - cmp r1, #0 - bne _022FBE10 - bl GhiDoSocketInit -_022FBE10: - ldr r0, [r4, #0x10] - cmp r0, #1 - bne _022FBE24 - mov r0, r4 - bl GhiDoHostLookup -_022FBE24: - ldr r0, [r4, #0x10] - cmp r0, #2 - bne _022FBE38 - mov r0, r4 - bl GhiDoLookupPending -_022FBE38: - ldr r0, [r4, #0x10] - cmp r0, #3 - bne _022FBE4C - mov r0, r4 - bl GhiDoConnecting -_022FBE4C: - ldr r0, [r4, #0x10] - cmp r0, #4 - bne _022FBE60 - mov r0, r4 - bl GhiDoSecuringSession -_022FBE60: - ldr r0, [r4, #0x10] - cmp r0, #5 - bne _022FBE74 - mov r0, r4 - bl GhiDoSendingRequest -_022FBE74: - ldr r0, [r4, #0x10] - cmp r0, #6 - bne _022FBE88 - mov r0, r4 - bl GhiDoPosting -_022FBE88: - ldr r0, [r4, #0x10] - cmp r0, #7 - bne _022FBE9C - mov r0, r4 - bl GhiDoWaiting -_022FBE9C: - ldr r0, [r4, #0x10] - cmp r0, #8 - bne _022FBEB0 - mov r0, r4 - bl GhiDoReceivingStatus -_022FBEB0: - ldr r0, [r4, #0x10] - cmp r0, #9 - bne _022FBEC4 - mov r0, r4 - bl GhiDoReceivingHeaders -_022FBEC4: - ldr r0, [r4, #0x10] - cmp r0, #0xa - bne _022FBED8 - mov r0, r4 - bl GhiDoReceivingFile -_022FBED8: - ldr r0, [r4, #0x12c] - cmp r0, #0 - beq _022FBEEC - mov r0, r4 - bl GhiRedirectConnection -_022FBEEC: - ldr r0, [r4, #0x3c] - ldr r5, [r4, #0x120] - cmp r0, #0x12 - cmpeq r5, #0 - bne _022FBF14 - ldr r0, [r4, #0x4c] - bl CanReceiveOnSocket - cmp r0, #0 - moveq r0, #1 - streq r0, [r4, #0x120] -_022FBF14: - ldr r0, [r4, #0x120] - cmp r0, #0 - moveq r0, #0 - streq r0, [r4, #0x150] - beq _022FBF40 - mov r0, r4 - bl GhiHandleStatus - mov r0, r4 - bl GhiCallCompletedCallback - mov r0, r4 - bl GhiFreeConnection -_022FBF40: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiProcessConnection - - arm_func_start GhttpStartup -GhttpStartup: ; 0x022FBF48 - stmdb sp!, {r3, lr} - bl GhiLock - ldr r0, _022FBF90 ; =ov00_023289C0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - cmp r1, #1 - bne _022FBF88 - bl GhiCreateLock - ldr r0, _022FBF94 ; =ov00_0231A7F0 - mov r2, #0xfa - ldr r1, _022FBF98 ; =ov00_0231A7F4 - mov r3, #0x7d - str r2, [r0] - str r3, [r1] - ldmia sp!, {r3, pc} -_022FBF88: - bl GhiUnlock - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBF90: .word ov00_023289C0 -_022FBF94: .word ov00_0231A7F0 -_022FBF98: .word ov00_0231A7F4 - arm_func_end GhttpStartup - - arm_func_start GhttpCleanup -GhttpCleanup: ; 0x022FBF9C - stmdb sp!, {r3, lr} - bl GhiLock - ldr r0, _022FBFF0 ; =ov00_023289C0 - ldr r1, [r0] - subs r1, r1, #1 - str r1, [r0] - bne _022FBFE8 - bl GhiCleanupConnections - ldr r0, _022FBFF4 ; =ov00_023289AC - ldr r0, [r0] - cmp r0, #0 - beq _022FBFDC - bl gsifree - ldr r0, _022FBFF4 ; =ov00_023289AC - mov r1, #0 - str r1, [r0] -_022FBFDC: - bl GhiUnlock - bl GhiFreeLock - ldmia sp!, {r3, pc} -_022FBFE8: - bl GhiUnlock - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBFF0: .word ov00_023289C0 -_022FBFF4: .word ov00_023289AC - arm_func_end GhttpCleanup - - arm_func_start GHttpGetExA -GHttpGetExA: ; 0x022FBFF8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r8, r0 - ldrnesb r0, [r8] - mov r7, r1 - mov r6, r2 - cmpne r0, #0 - mov r5, r3 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r5, #0 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - cmp r6, #0 - beq _022FC03C - cmp r5, #0 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_022FC03C: - ldr r0, _022FC1C0 ; =ov00_023289C0 - ldr r0, [r0] - cmp r0, #0 - bne _022FC050 - bl GhttpStartup -_022FC050: - bl GhiNewConnection - movs r4, r0 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, #0 - mov r0, r8 - str r1, [r4, #0xc] - bl goastrdup - str r0, [r4, #0x14] - cmp r0, #0 - bne _022FC08C - mov r0, r4 - bl GhiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FC08C: - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - beq _022FC0C0 - mov r0, r7 - bl goastrdup - str r0, [r4, #0x2c] - cmp r0, #0 - bne _022FC0C0 - mov r0, r4 - bl GhiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FC0C0: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x20] - str r1, [r4, #0x160] - str r0, [r4, #0x34] - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x28] - str r1, [r4, #0x40] - str r0, [r4, #0x44] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x1c] - str r1, [r4, #0x48] - str r0, [r4, #0x158] - cmp r6, #0 - movne r0, #1 - moveq r0, #0 - str r0, [r4, #0x108] - cmp r0, #0 - beq _022FC120 - mov r0, r4 - mov r2, r6 - mov r3, r5 - add r1, r4, #0xe4 - bl GhiInitFixedBuffer - b _022FC134 -_022FC120: - mov r2, #0x800 - mov r0, r4 - mov r3, r2 - add r1, r4, #0xe4 - bl GhiInitBuffer -_022FC134: - cmp r0, #0 - bne _022FC14C - mov r0, r4 - bl GhiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FC14C: - ldr r0, [sp, #0x18] - cmp r0, #0 - beq _022FC178 - mov r0, r4 - bl GhiPostInitState - cmp r0, #0 - bne _022FC178 - mov r0, r4 - bl GhiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FC178: - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _022FC1B8 - mov r0, r4 - bl GhiProcessConnection - cmp r0, #0 - bne _022FC1B0 - mov r5, #0xa -_022FC198: - mov r0, r5 - bl msleep_gsi - mov r0, r4 - bl GhiProcessConnection - cmp r0, #0 - beq _022FC198 -_022FC1B0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FC1B8: - ldr r0, [r4, #4] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FC1C0: .word ov00_023289C0 - arm_func_end GHttpGetExA - - arm_func_start GhttpThink -GhttpThink: ; 0x022FC1C4 - ldr ip, _022FC1D0 ; =GhiEnumConnections - ldr r0, _022FC1D4 ; =GhiProcessConnection - bx ip - .align 2, 0 -_022FC1D0: .word GhiEnumConnections -_022FC1D4: .word GhiProcessConnection - arm_func_end GhttpThink - - arm_func_start GHttpCancelRequest -GHttpCancelRequest: ; 0x022FC1D8 - stmdb sp!, {r3, lr} - bl GhiRequestToConnection - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GhiFreeConnection - ldmia sp!, {r3, pc} - arm_func_end GHttpCancelRequest - - arm_func_start GhiIsPostAutoFree -GhiIsPostAutoFree: ; 0x022FC1F0 - ldr r0, [r0, #0x18] - bx lr - arm_func_end GhiIsPostAutoFree - - arm_func_start GhiFreePost -GhiFreePost: ; 0x022FC1F8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - bl ArrayFree_Gsi - mov r0, r4 - bl gsifree - ldmia sp!, {r4, pc} - arm_func_end GhiFreePost - - arm_func_start GhiPostGetContentType -GhiPostGetContentType: ; 0x022FC214 - ldr r1, [r0, #0x160] - cmp r1, #0 - ldreq r0, _022FC258 ; =ov00_0231A8DC - bxeq lr - ldr r0, [r1, #0x14] - cmp r0, #0 - ldrne r0, _022FC25C ; =ov00_0231A8E0 - bxne lr - ldr r0, [r1, #0xc] - cmp r0, #0 - ldrne r0, _022FC260 ; =ov00_0231A8F4 - bxne lr - ldr r0, [r1, #0x10] - cmp r0, #0 - ldrne r0, _022FC264 ; =ov00_0231A938 - ldreq r0, _022FC268 ; =ov00_0231A944 - bx lr - .align 2, 0 -_022FC258: .word ov00_0231A8DC -_022FC25C: .word ov00_0231A8E0 -_022FC260: .word ov00_0231A8F4 -_022FC264: .word ov00_0231A938 -_022FC268: .word ov00_0231A944 - arm_func_end GhiPostGetContentType - - arm_func_start GhiPostGetNoFilesContentLength -GhiPostGetNoFilesContentLength: ; 0x022FC26C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r5, [r0, #0x160] - mov r8, #0 - ldr r0, [r5] - bl ArrayLength_Gsi - movs r7, r0 - moveq r0, r8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r7, #0 - mov r6, r8 - ble _022FC2F8 -_022FC298: - ldr r0, [r5] - mov r1, r6 - bl ArrayNth_Gsi - mov r4, r0 - ldr r0, [r4] - cmp r0, #0 - bne _022FC2D8 - ldr r0, [r4, #4] - bl strlen - ldr r1, [r4, #0xc] - add r2, r8, r0 - ldr r0, [r4, #0x14] - add r1, r2, r1 - add r0, r1, r0, lsl #1 - add r8, r0, #1 - b _022FC2EC -_022FC2D8: - cmp r0, #3 - bne _022FC2EC - ldr r0, [r4, #8] - bl GsXmlWriterGetDataLength - add r8, r8, r0 -_022FC2EC: - add r6, r6, #1 - cmp r6, r7 - blt _022FC298 -_022FC2F8: - sub r0, r7, #1 - add r0, r8, r0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end GhiPostGetNoFilesContentLength - - arm_func_start GhiPostGetHasFilesContentLength -GhiPostGetHasFilesContentLength: ; 0x022FC304 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r1, _022FC60C ; =ov00_023289C4 - str r0, [sp] - ldr r2, [r1, #0x10] - ldr r5, [r0, #0x160] - cmp r2, #0 - mov r8, #0 - bne _022FC37C - ldr r0, [r5, #0x14] - cmp r0, #0 - beq _022FC34C - mov r0, #0xc - str r0, [r1, #0x10] - str r0, [r1, #0xc] - str r0, [r1, #8] - stmia r1, {r0, r8} - b _022FC37C -_022FC34C: - ldr r0, _022FC610 ; =ov00_0231A968 - bl strlen - ldr r1, _022FC60C ; =ov00_023289C4 - add r2, r0, #0x2f - str r0, [r1, #0x10] - str r2, [r1, #0xc] - add r2, r0, #0x4c - str r2, [r1, #8] - mov r2, r8 - str r2, [r1] - add r0, r0, #4 - str r0, [r1, #4] -_022FC37C: - ldr r0, [r5] - bl ArrayLength_Gsi - str r0, [sp, #8] - cmp r0, #0 - mov r7, #0 - ble _022FC5F8 - ldr r4, _022FC60C ; =ov00_023289C4 -_022FC398: - ldr r0, [r5] - mov r1, r7 - bl ArrayNth_Gsi - mov r6, r0 - ldr r0, [r6] - cmp r0, #0 - bne _022FC3D4 - ldr r1, [r4, #0xc] - ldr r0, [r6, #4] - add r8, r8, r1 - bl strlen - ldr r1, [r6, #0xc] - add r0, r8, r0 - add r8, r0, r1 - b _022FC5E8 -_022FC3D4: - cmp r0, #1 - bne _022FC490 - ldr r1, [r4, #8] - ldr r0, [r6, #4] - add r8, r8, r1 - bl strlen - add r8, r8, r0 - ldr r0, [r6, #0x10] - bl strlen - add r8, r8, r0 - ldr r0, [sp] - mov r1, r7 - ldr r0, [r0, #0x164] - bl ArrayNth_Gsi - ldr sb, [r0, #0xc] - ldr sl, [r5, #0x14] - add r8, r8, sb - cmp sl, #0 - bne _022FC42C - ldr r0, [r6, #0xc] - bl strlen - add r8, r8, r0 -_022FC42C: - cmp sl, #0 - beq _022FC5E8 - ldr r0, [r6, #4] - bl strlen - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - ldr r0, [r6, #0x10] - bl strlen - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - mov r1, sb, lsr #0x1f - addne r8, r8, r0 - rsb r0, r1, sb, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - b _022FC5E8 -_022FC490: - cmp r0, #2 - bne _022FC544 - ldr r0, [r6, #4] - ldr r1, [r4, #8] - str r0, [sp, #4] - add r8, r8, r1 - bl strlen - ldr sl, [r6, #0x14] - add r8, r8, r0 - mov r0, sl - bl strlen - ldr sb, [r5, #0x14] - ldr fp, [r6, #0xc] - add r0, r8, r0 - add r8, r0, fp - cmp sb, #0 - bne _022FC4E0 - ldr r0, [r6, #0x10] - bl strlen - add r8, r8, r0 -_022FC4E0: - cmp sb, #0 - beq _022FC5E8 - ldr r0, [sp, #4] - bl strlen - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - mov r0, sl - bl strlen - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - mov r1, fp, lsr #0x1f - addne r8, r8, r0 - rsb r0, r1, fp, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - b _022FC5E8 -_022FC544: - cmp r0, #3 - bne _022FC5DC - ldr r1, [r4] - ldr r0, [r6, #8] - add r8, r8, r1 - bl GsXmlWriterGetDataLength - add r8, r8, r0 - ldr r0, [r6, #8] - bl GsXmlWriterGetDataLength - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - ldr r0, _022FC614 ; =ov00_0231A990 - bl strlen - add r8, r8, r0 - ldr r0, _022FC614 ; =ov00_0231A990 - bl strlen - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - ldr r0, _022FC618 ; =ov00_0231A998 - bl strlen - add r8, r8, r0 - ldr r0, _022FC618 ; =ov00_0231A998 - bl strlen - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r0, r0, #4 - cmp r0, #4 - addne r8, r8, r0 - b _022FC5E8 -_022FC5DC: - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FC5E8: - ldr r0, [sp, #8] - add r7, r7, #1 - cmp r7, r0 - blt _022FC398 -_022FC5F8: - ldr r0, _022FC60C ; =ov00_023289C4 - ldr r0, [r0, #4] - add r0, r8, r0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC60C: .word ov00_023289C4 -_022FC610: .word ov00_0231A968 -_022FC614: .word ov00_0231A990 -_022FC618: .word ov00_0231A998 - arm_func_end GhiPostGetHasFilesContentLength - - arm_func_start GhiPostGetContentLength -GhiPostGetContentLength: ; 0x022FC61C - stmdb sp!, {r3, lr} - ldr r1, [r0, #0x160] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, [r1, #0xc] - cmp r1, #0 - beq _022FC644 - bl GhiPostGetHasFilesContentLength - ldmia sp!, {r3, pc} -_022FC644: - bl GhiPostGetNoFilesContentLength - ldmia sp!, {r3, pc} - arm_func_end GhiPostGetContentLength - - arm_func_start GhiPostStateInit -GhiPostStateInit: ; 0x022FC64C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4] - mvn r0, #0 - ldr r1, [r1] - str r0, [r4, #4] - cmp r1, #0 - beq _022FC6D4 - cmp r1, #1 - bne _022FC6C4 - ldr r0, [r4, #8] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - mov r2, #2 - bl fseek - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #8] - bl ftell - mvn r1, #0 - str r0, [r4, #0xc] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #8] - bl rewind - b _022FC6D4 -_022FC6C4: - cmp r1, #2 - cmpne r1, #3 - movne r0, #0 - ldmneia sp!, {r4, pc} -_022FC6D4: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end GhiPostStateInit - - arm_func_start GhiPostStateCleanup -GhiPostStateCleanup: ; 0x022FC6DC - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - cmp r0, #1 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #8] - cmp r0, #0 - beq _022FC70C - bl fclose -_022FC70C: - mov r0, #0 - str r0, [r4, #8] - ldmia sp!, {r4, pc} - arm_func_end GhiPostStateCleanup - - arm_func_start GhiPostInitState -GhiPostInitState: ; 0x022FC718 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, [r4, #0x160] - cmp r0, #0 - addeq sp, sp, #0x10 - mov r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r0, [r4, #0x168] - str r0, [r4, #0x16c] - str r0, [r4, #0x170] - str r0, [r4, #0x180] - ldr r0, [r4, #0x160] - ldr r0, [r0, #4] - str r0, [r4, #0x174] - ldr r0, [r4, #0x160] - ldr r0, [r0, #8] - str r0, [r4, #0x178] - ldr r0, [r4, #0x160] - ldr r0, [r0] - bl ArrayLength_Gsi - mov r8, r0 - mov r1, r8 - mov r0, #0x10 - mov r2, #0 - bl ArrayNew_Gsi - cmp r0, #0 - str r0, [r4, #0x164] - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r8, #0 - mov r7, #0 - ble _022FC82C - add r6, sp, #0 - mov r5, r7 -_022FC7A8: - ldr r0, [r4, #0x160] - mov r1, r7 - ldr r0, [r0] - bl ArrayNth_Gsi - str r5, [r6] - str r0, [sp] - mov r0, r6 - str r5, [r6, #4] - str r5, [r6, #8] - str r5, [r6, #0xc] - bl GhiPostStateInit - cmp r0, #0 - bne _022FC814 - subs r7, r7, #1 - bmi _022FC7FC -_022FC7E4: - ldr r0, [r4, #0x164] - mov r1, r7 - bl ArrayNth_Gsi - bl GhiPostStateCleanup - subs r7, r7, #1 - bpl _022FC7E4 -_022FC7FC: - ldr r0, [r4, #0x164] - bl ArrayFree_Gsi - mov r0, #0 - add sp, sp, #0x10 - str r0, [r4, #0x164] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FC814: - ldr r0, [r4, #0x164] - mov r1, r6 - bl ArrayAppend_Gsi - add r7, r7, #1 - cmp r7, r8 - blt _022FC7A8 -_022FC82C: - mov r0, r4 - bl GhiPostGetContentLength - str r0, [r4, #0x170] - ldr r0, [r4, #0x160] - ldr r0, [r0, #0x10] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - str r0, [r4, #0x17c] - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end GhiPostInitState - - arm_func_start GhiPostCleanupState -GhiPostCleanupState: ; 0x022FC85C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0x164] - cmp r0, #0 - beq _022FC8B0 - bl ArrayLength_Gsi - mov r5, r0 - cmp r5, #0 - mov r4, #0 - ble _022FC8A0 -_022FC884: - ldr r0, [r6, #0x164] - mov r1, r4 - bl ArrayNth_Gsi - bl GhiPostStateCleanup - add r4, r4, #1 - cmp r4, r5 - blt _022FC884 -_022FC8A0: - ldr r0, [r6, #0x164] - bl ArrayFree_Gsi - mov r0, #0 - str r0, [r6, #0x164] -_022FC8B0: - ldr r0, [r6, #0x160] - cmp r0, #0 - ldrne r1, [r0, #0x18] - cmpne r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl GhiFreePost - mov r0, #0 - str r0, [r6, #0x160] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GhiPostCleanupState - - arm_func_start GhiPostStringStateDoPosting -GhiPostStringStateDoPosting: ; 0x022FC8D4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r3, [r0] - mov sl, r1 - ldr r2, [r3, #0xc] - cmp r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0x160] - ldr r0, [r1, #0xc] - cmp r0, #0 - ldreq r0, [r1, #0x10] - cmpeq r0, #0 - bne _022FC9F0 - ldr r0, [r3, #0x10] - cmp r0, #0 - beq _022FC9F0 - ldr r0, _022FCA54 ; =ov00_023184A0 - ldr r8, [r3, #8] - ldrb r2, [r0] - ldrb r1, [r0, #1] - mov r6, #0 - strb r2, [sp] - strb r1, [sp, #1] - ldrb r1, [r0, #2] - ldrb r0, [r0, #3] - strb r1, [sp, #2] - strb r0, [sp, #3] - ldr r0, [sl, #0x194] - ldrsb r7, [r8] - cmp r0, #0 - addeq sb, sl, #0x54 - addne sb, sl, #0x78 - cmp r7, #0 - beq _022FCA0C - ldr r4, _022FCA58 ; =ov00_0231A9C4 - ldr r5, _022FCA5C ; =ov00_0231A898 - mov fp, #0x2b -_022FC968: - mov r0, r5 - mov r1, r7 - bl strchr - cmp r0, #0 - beq _022FC98C - mov r0, sb - mov r1, r7 - bl GhiAppendCharToBuffer - b _022FC9DC -_022FC98C: - cmp r7, #0x20 - bne _022FC9A4 - mov r0, sb - mov r1, fp - bl GhiAppendCharToBuffer - b _022FC9DC -_022FC9A4: - mov r0, r7, asr #3 - mov r2, r7, lsr #0x1f - add r0, r7, r0, lsr #28 - rsb r1, r2, r7, lsl #28 - mov r3, r0, asr #4 - add r0, r2, r1, ror #28 - ldrsb r7, [r4, r3] - ldrsb r3, [r4, r0] - mov r0, sb - add r1, sp, #0 - mov r2, #3 - strb r7, [sp, #1] - strb r3, [sp, #2] - bl GhiAppendDataToBuffer -_022FC9DC: - add r6, r6, #1 - ldrsb r7, [r8, r6] - cmp r7, #0 - bne _022FC968 - b _022FCA0C -_022FC9F0: - ldr r1, [r3, #8] - mov r0, sl - bl GhiTrySendThenBuffer - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FCA0C: - ldr r0, [sl, #0x194] - cmp r0, #0 - bne _022FCA4C - mov r0, sl - bl GhiSendBufferedData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0x64] - ldr r0, [sl, #0x60] - cmp r1, r0 - bne _022FCA44 - add r0, sl, #0x54 - bl GhiResetBuffer -_022FCA44: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FCA4C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FCA54: .word ov00_023184A0 -_022FCA58: .word ov00_0231A9C4 -_022FCA5C: .word ov00_0231A898 - arm_func_end GhiPostStringStateDoPosting - - arm_func_start GhiPostXmlStateDoPosting -GhiPostXmlStateDoPosting: ; 0x022FCA60 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, [r0] - add r0, sp, #0 - ldr r4, [r2, #8] - mov r5, #0 - mov r6, r1 - strb r5, [r0] - strb r5, [r0, #1] - strb r5, [r0, #2] - ldr r0, [r6, #0x160] - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022FCAB4 - mov r0, r4 - bl GsXmlWriterGetDataLength - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - rsb r5, r0, #4 - cmp r5, #4 - moveq r5, #0 -_022FCAB4: - ldr r0, [r6, #0x194] - cmp r0, #0 - mov r0, r4 - bne _022FCB10 - bl GsXmlWriterGetData - mov r7, r0 - mov r0, r4 - bl GsXmlWriterGetDataLength - mov r2, r0 - mov r0, r6 - mov r1, r7 - bl GhiTrySendThenBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r1, sp, #0 - mov r0, r6 - mov r2, r5 - bl GhiTrySendThenBuffer - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FCB10: - bl GsXmlWriterGetData - mov r7, r0 - mov r0, r4 - bl GsXmlWriterGetDataLength - mov r2, r0 - mov r1, r7 - add r0, r6, #0x78 - bl GhiAppendDataToBuffer - cmp r0, #0 - beq _022FCB68 - add r1, sp, #0 - mov r2, r5 - add r0, r6, #0x78 - bl GhiAppendDataToBuffer - cmp r0, #0 - beq _022FCB68 - ldr r1, [r6, #0x7c] - ldr r2, [r6, #0x84] - add r0, r6, #0x54 - bl GhiEncryptDataToBuffer - cmp r0, #0 - bne _022FCB70 -_022FCB68: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FCB70: - add r0, r6, #0x78 - bl GhiResetBuffer - mov r0, r6 - bl GhiSendBufferedData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r6, #0x64] - ldr r0, [r6, #0x60] - cmp r1, r0 - bne _022FCBA4 - add r0, r6, #0x54 - bl GhiResetBuffer -_022FCBA4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GhiPostXmlStateDoPosting - - arm_func_start GhiPostFileDiskStateDoPosting -GhiPostFileDiskStateDoPosting: ; 0x022FCBAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - sub sp, sp, #0x1000 - mov r8, r0 - mov r7, r1 - add r6, sp, #3 - mov r5, #1 - mov r4, #0x1000 -_022FCBCC: - ldr r3, [r8, #8] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl fread - mov r2, r0 - cmp r2, #0 - bgt _022FCC0C - mov r0, #1 - add sp, sp, #4 - str r0, [r7, #0x120] - mov r0, #0xe - str r0, [r7, #0x3c] - add sp, sp, #0x1000 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022FCC0C: - ldr r0, [r8, #4] - add r1, r0, r2 - str r1, [r8, #4] - ldr r0, [r8, #0xc] - cmp r1, r0 - ble _022FCC44 - mov r0, #1 - add sp, sp, #4 - str r0, [r7, #0x120] - mov r0, #0xe - str r0, [r7, #0x3c] - add sp, sp, #0x1000 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022FCC44: - mov r0, r7 - mov r1, r6 - bl GhiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x1000 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, [r8, #4] - ldr r1, [r8, #0xc] - cmp r2, r1 - bne _022FCCE8 - ldr r0, [r7, #0x160] - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022FCCD8 - add r1, sp, #0 - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - strb r0, [r1, #2] - ldr r0, [r8, #0xc] - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #30 - add r0, r2, r0, ror #30 - rsb r2, r0, #4 - cmp r2, #4 - beq _022FCCD8 - cmp r2, #0 - ble _022FCCD8 - mov r0, r7 - bl GhiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x1000 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022FCCD8: - add sp, sp, #4 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022FCCE8: - cmp r0, #1 - beq _022FCBCC - mov r0, #2 - add sp, sp, #4 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end GhiPostFileDiskStateDoPosting - - arm_func_start GhiPostFileMemoryStateDoPosting -GhiPostFileMemoryStateDoPosting: ; 0x022FCD00 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r5, r0 - ldr r2, [r5] - mov r4, r1 - ldr r7, [r2, #0xc] - cmp r7, #0 - addeq sp, sp, #8 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0x194] - cmp r0, #0 - bne _022FCE00 - mvn r6, #0 -_022FCD38: - ldr r3, [r5, #4] - ldr r1, [r2, #8] - mov r0, r4 - add r1, r1, r3 - sub r2, r7, r3 - bl GhiDoSend - cmp r0, r6 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #4] - add r1, r1, r0 - str r1, [r5, #4] - ldr r2, [r5] - ldr r7, [r2, #0xc] - cmp r7, r1 - bne _022FCDEC - ldr r0, [r4, #0x160] - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022FCDE0 - add r1, sp, #3 - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - strb r0, [r1, #2] - ldr r0, [r5] - ldr r0, [r0, #0xc] - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #30 - add r0, r2, r0, ror #30 - rsb r2, r0, #4 - cmp r2, #4 - beq _022FCDE0 - cmp r2, #0 - ble _022FCDE0 - mov r0, r4 - bl GhiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022FCDE0: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FCDEC: - cmp r0, #0 - bne _022FCD38 - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FCE00: - ldr r6, _022FCED8 ; =0x00003F01 -_022FCE04: - ldr r3, [r5, #4] - ldr r1, [r2, #8] - sub r7, r7, r3 - cmp r7, r6 - movge r7, r6 - mov r0, r4 - mov r2, r7 - add r1, r1, r3 - bl GhiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #4] - add r1, r1, r7 - str r1, [r5, #4] - ldr r2, [r5] - ldr r7, [r2, #0xc] - cmp r7, r1 - bne _022FCEC4 - ldr r0, [r4, #0x160] - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022FCEB8 - add r1, sp, #0 - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - strb r0, [r1, #2] - ldr r0, [r5] - ldr r0, [r0, #0xc] - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #30 - add r0, r2, r0, ror #30 - rsb r2, r0, #4 - cmp r2, #4 - beq _022FCEB8 - cmp r2, #0 - ble _022FCEB8 - mov r0, r4 - bl GhiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022FCEB8: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FCEC4: - cmp r0, #1 - beq _022FCE04 - mov r0, #2 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FCED8: .word 0x00003F01 - arm_func_end GhiPostFileMemoryStateDoPosting - - arm_func_start GhiPostStateDoPosting -GhiPostStateDoPosting: ; 0x022FCEDC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x820 - mov r8, r0 - mov r6, #0 - ldr r4, [r8, #4] - sub r0, r6, #1 - mov r7, r1 - cmp r4, r0 - bne _022FD518 - str r6, [r8, #4] - ldr sb, [r7, #0x160] - ldr r0, [sb, #0xc] - cmp r0, #0 - ldreq r0, [sb, #0x10] - cmpeq r0, #0 - bne _022FCF48 - ldr r1, [r8] - cmp r2, #0 - add r0, sp, #0x20 - ldr r2, [r1, #4] - beq _022FCF3C - ldr r1, _022FD580 ; =ov00_0231A9D8 - bl OS_VsPrintf - b _022FD450 -_022FCF3C: - ldr r1, _022FD584 ; =ov00_0231A9DC - bl OS_VsPrintf - b _022FD450 -_022FCF48: - ldr sl, [r8] - ldr r1, [sl] - cmp r1, #0 - bne _022FCF78 - cmp r2, #0 - ldrne r2, _022FD588 ; =ov00_0231A9E4 - ldr r3, [sl, #4] - ldreq r2, _022FD58C ; =ov00_0231AA0C - ldr r1, _022FD590 ; =ov00_0231AA38 - add r0, sp, #0x20 - bl OS_VsPrintf - b _022FD450 -_022FCF78: - cmp r1, #3 - bne _022FD1FC - ldr r0, [sb, #0x14] - cmp r0, #0 - beq _022FD1F0 - mov r0, #8 - cmp r2, #0 - strb r0, [sp, #0x14] - andne r0, r0, #0xff - orrne r0, r0, #4 - strneb r0, [sp, #0x14] - cmp r3, #0 - ldrneb r0, [sp, #0x14] - mov r2, #0x20 - mov r1, #0 - orrne r0, r0, #2 - strneb r0, [sp, #0x14] - ldr r0, _022FD594 ; =ov00_0231A990 - mov r6, #0 - strb r2, [sp, #0x15] - strh r1, [sp, #0x16] - bl strlen - mov r4, r0 - ldr r0, _022FD594 ; =ov00_0231A990 - bl strlen - mov r1, r0, lsl #0x10 - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsl #0x10 - mov r1, r2, asr #8 - mov r0, r0, lsr #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r1, r1, r0 - ldr r0, _022FD598 ; =ov00_0231A998 - strh r1, [sp, #0x18] - bl strlen - mov r4, r0 - ldr r0, _022FD598 ; =ov00_0231A998 - bl strlen - mov r1, r4, lsl #0x10 - mov r2, r1, asr #0x10 - mov r1, r0, lsl #0x10 - mov r0, r2, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsl #0x10 - mov r1, r2, asr #8 - mov r0, r0, lsr #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0x1a] - ldr r0, [r8] - ldr r0, [r0, #8] - bl GsXmlWriterGetDataLength - ldr r1, [r8] - mov sb, r0 - ldr r0, [r1, #8] - bl GsXmlWriterGetDataLength - ldr r1, [r8] - mov r5, r0 - ldr r0, [r1, #8] - bl GsXmlWriterGetDataLength - ldr r1, [r8] - mov r4, r0 - ldr r0, [r1, #8] - bl GsXmlWriterGetDataLength - mov r2, r5, lsl #8 - and r3, r2, #0xff0000 - mov r2, r4, lsr #0x18 - mov r0, r0, lsr #8 - mov r1, sb, lsl #0x18 - and r2, r2, #0xff - and r0, r0, #0xff00 - orr r0, r2, r0 - orr r0, r3, r0 - and r1, r1, #0xff000000 - orr r0, r1, r0 - add r4, sp, #0x20 - add r3, sp, #0x14 - str r0, [sp, #0x1c] - mov r2, #6 -_022FD0D0: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [r4] - strb r0, [r4, #1] - add r4, r4, #2 - subs r2, r2, #1 - bne _022FD0D0 - add r0, sp, #0x20 - add r6, r6, #0xc - ldr r3, _022FD594 ; =ov00_0231A990 - add r4, r0, r6 - mov r2, #4 -_022FD104: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [r4] - strb r0, [r4, #1] - add r4, r4, #2 - subs r2, r2, #1 - bne _022FD104 - ldr r0, _022FD594 ; =ov00_0231A990 - bl strlen - add r6, r6, r0 - ldr r0, _022FD594 ; =ov00_0231A990 - bl strlen - and r0, r0, #3 - rsb r0, r0, #4 - cmp r0, #4 - beq _022FD170 - cmp r0, #0 - sub r2, r0, #1 - ble _022FD170 - mov r1, #0 - add r0, sp, #0x20 -_022FD15C: - strb r1, [r0, r6] - cmp r2, #0 - add r6, r6, #1 - sub r2, r2, #1 - bgt _022FD15C -_022FD170: - add r0, sp, #0x20 - ldr r3, _022FD598 ; =ov00_0231A998 - add r4, r0, r6 - mov r2, #0x15 -_022FD180: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [r4] - strb r0, [r4, #1] - add r4, r4, #2 - subs r2, r2, #1 - bne _022FD180 - ldr r0, _022FD598 ; =ov00_0231A998 - bl strlen - add r6, r6, r0 - ldr r0, _022FD598 ; =ov00_0231A998 - bl strlen - and r0, r0, #3 - rsb r0, r0, #4 - cmp r0, #4 - beq _022FD450 - cmp r0, #0 - sub r2, r0, #1 - ble _022FD450 - mov r1, #0 - add r0, sp, #0x20 -_022FD1D8: - strb r1, [r0, r6] - cmp r2, #0 - add r6, r6, #1 - sub r2, r2, #1 - bgt _022FD1D8 - b _022FD450 -_022FD1F0: - mov r0, #0 - strb r0, [sp, #0x20] - b _022FD450 -_022FD1FC: - sub r0, r1, #1 - cmp r0, #1 - bhi _022FD450 - cmp r1, #1 - ldrne r5, [sl, #0xc] - ldrne r1, [sl, #0x10] - ldrne r4, [sl, #0x14] - bne _022FD228 - ldr r5, [r8, #0xc] - ldr r1, [sl, #0xc] - ldr r4, [sl, #0x10] -_022FD228: - ldr r0, [sb, #0x14] - cmp r0, #0 - beq _022FD430 - mov r0, #8 - strb r0, [sp, #8] - cmp r2, #0 - andne r0, r0, #0xff - orrne r0, r0, #4 - strneb r0, [sp, #8] - cmp r3, #0 - ldrneb r0, [sp, #8] - mov r1, #0x10 - strb r1, [sp, #9] - orrne r0, r0, #2 - strneb r0, [sp, #8] - mov r0, #0 - strh r0, [sp, #0xa] - ldr r0, [r8] - mov r6, #0 - ldr sl, [r0, #4] - mov r0, sl - bl strlen - mov sb, r0 - mov r0, sl - bl strlen - mov r1, r0, lsl #0x10 - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsl #0x10 - mov r1, r2, asr #8 - mov r0, r0, lsr #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r1, r1, r0 - mov r0, r4 - strh r1, [sp, #0xc] - bl strlen - mov sb, r0 - mov r0, r4 - bl strlen - mov r1, sb, lsl #0x10 - mov r2, r1, asr #0x10 - mov r1, r0, lsl #0x10 - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r1, r1, asr #0x10 - mov ip, r5, lsr #0x18 - mov r3, r2, asr #8 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #8 - mov r1, r5, lsl #0x18 - mov sb, r5, lsr #8 - mov r0, r5, lsl #8 - and r5, sb, #0xff00 - and ip, ip, #0xff - and sb, r0, #0xff0000 - orr r0, ip, r5 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - strh r2, [sp, #0xe] - and r1, r1, #0xff000000 - orr r0, sb, r0 - orr r0, r1, r0 - add r5, sp, #0x20 - add r3, sp, #8 - str r0, [sp, #0x10] - mov r2, #6 -_022FD344: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [r5] - strb r0, [r5, #1] - add r5, r5, #2 - subs r2, r2, #1 - bne _022FD344 - ldr r0, [r8] - add r2, sp, #0x20 - add r6, r6, #0xc - ldr r1, [r0, #4] - add r0, r2, r6 - bl strcpy - ldr r0, [r8] - ldr r5, [r0, #4] - mov r0, r5 - bl strlen - add r6, r6, r0 - mov r0, r5 - bl strlen - and r0, r0, #3 - rsb r0, r0, #4 - cmp r0, #4 - beq _022FD3D0 - cmp r0, #0 - sub r2, r0, #1 - ble _022FD3D0 - mov r1, #0 - add r0, sp, #0x20 -_022FD3BC: - strb r1, [r0, r6] - cmp r2, #0 - add r6, r6, #1 - sub r2, r2, #1 - bgt _022FD3BC -_022FD3D0: - add r0, sp, #0x20 - mov r1, r4 - add r0, r0, r6 - bl strcpy - mov r0, r4 - bl strlen - add r6, r6, r0 - mov r0, r4 - bl strlen - and r0, r0, #3 - rsb r0, r0, #4 - cmp r0, #4 - beq _022FD450 - cmp r0, #0 - sub r2, r0, #1 - ble _022FD450 - mov r1, #0 - add r0, sp, #0x20 -_022FD418: - strb r1, [r0, r6] - cmp r2, #0 - add r6, r6, #1 - sub r2, r2, #1 - bgt _022FD418 - b _022FD450 -_022FD430: - stmia sp, {r1, r4} - cmp r2, #0 - ldrne r2, _022FD588 ; =ov00_0231A9E4 - ldr r3, [sl, #4] - ldreq r2, _022FD58C ; =ov00_0231AA0C - ldr r1, _022FD59C ; =ov00_0231AA68 - add r0, sp, #0x20 - bl OS_VsPrintf -_022FD450: - ldr r0, [r7, #0x194] - cmp r0, #0 - bne _022FD4AC - cmp r6, #0 - bne _022FD470 - add r0, sp, #0x20 - bl strlen - mov r6, r0 -_022FD470: - add r1, sp, #0x20 - mov r0, r7 - mov r2, r6 - bl GhiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #0x820 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r0, #2 - addeq sp, sp, #0x820 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r0, r7, #0x54 - bl GhiResetBuffer - b _022FD518 -_022FD4AC: - cmp r6, #0 - bne _022FD4C0 - add r0, sp, #0x20 - bl strlen - mov r6, r0 -_022FD4C0: - add r1, sp, #0x20 - mov r2, r6 - add r0, r7, #0x54 - bl GhiEncryptDataToBuffer - cmp r0, #0 - addeq sp, sp, #0x820 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r7 - bl GhiSendBufferedData - cmp r0, #0 - addeq sp, sp, #0x820 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [r7, #0x64] - ldr r0, [r7, #0x60] - cmp r1, r0 - addlt sp, sp, #0x820 - movlt r0, #2 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r0, r7, #0x54 - bl GhiResetBuffer -_022FD518: - ldr r0, [r8] - ldr r0, [r0] - cmp r0, #0 - bne _022FD53C - mov r0, r8 - mov r1, r7 - bl GhiPostStringStateDoPosting - add sp, sp, #0x820 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022FD53C: - cmp r0, #3 - bne _022FD558 - mov r0, r8 - mov r1, r7 - bl GhiPostXmlStateDoPosting - add sp, sp, #0x820 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022FD558: - cmp r0, #1 - mov r0, r8 - mov r1, r7 - bne _022FD574 - bl GhiPostFileDiskStateDoPosting - add sp, sp, #0x820 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022FD574: - bl GhiPostFileMemoryStateDoPosting - add sp, sp, #0x820 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FD580: .word ov00_0231A9D8 -_022FD584: .word ov00_0231A9DC -_022FD588: .word ov00_0231A9E4 -_022FD58C: .word ov00_0231AA0C -_022FD590: .word ov00_0231AA38 -_022FD594: .word ov00_0231A990 -_022FD598: .word ov00_0231A998 -_022FD59C: .word ov00_0231AA68 - arm_func_end GhiPostStateDoPosting - - arm_func_start GhiPostDoPosting -GhiPostDoPosting: ; 0x022FD5A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r0, [sl, #0x164] - bl ArrayLength_Gsi - ldr r2, [sl, #0x64] - ldr r1, [sl, #0x60] - mov r8, r0 - cmp r2, r1 - bge _022FD614 - mov r0, sl - bl GhiSendBufferedData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0x64] - ldr r0, [sl, #0x60] - cmp r1, r0 - movlt r0, #2 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sl, #0x54 - bl GhiResetBuffer - ldr r0, [sl, #0x17c] - cmp r0, #0 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x168] - cmp r0, r8 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FD614: - ldr r0, [sl, #0x17c] - cmp r0, #0 - beq _022FD684 - ldr r1, [sl, #0x160] - ldr r0, [r1, #0xc] - cmp r0, #0 - ldreq r0, [r1, #0x10] - cmpeq r0, #0 - beq _022FD67C - ldr r0, _022FD79C ; =ov00_0231AABC - bl strlen - mov r2, r0 - ldr r1, _022FD79C ; =ov00_0231AABC - mov r0, sl - bl GhiTrySendThenBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #2 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x17c] - cmp r0, #1 - bne _022FD684 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FD67C: - mov r0, #0 - str r0, [sl, #0x17c] -_022FD684: - ldr r1, [sl, #0x168] - cmp r1, r8 - bge _022FD70C - mov r5, #0 - mov r6, #1 - mov fp, r5 - mov r4, r6 -_022FD6A0: - ldr r0, [sl, #0x164] - bl ArrayNth_Gsi - mov r7, r0 - ldr r0, [sl, #0x164] - ldr sb, [sl, #0x168] - bl ArrayLength_Gsi - sub r0, r0, #1 - cmp sb, r0 - moveq r3, r6 - movne r3, r5 - cmp sb, #0 - moveq r2, r4 - movne r2, fp - mov r0, r7 - mov r1, sl - bl GhiPostStateDoPosting - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #2 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x168] - add r1, r0, #1 - str r1, [sl, #0x168] - cmp r1, r8 - blt _022FD6A0 -_022FD70C: - ldr r0, [sl, #0x194] - cmp r0, #0 - beq _022FD744 - ldr r2, [sl, #0x84] - cmp r2, #0 - ble _022FD744 - ldr r1, [sl, #0x7c] - add r0, sl, #0x54 - bl GhiEncryptDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sl, #0x78 - bl GhiResetBuffer -_022FD744: - ldr r1, [sl, #0x160] - ldr r0, [r1, #0xc] - cmp r0, #0 - beq _022FD784 - ldr r0, [r1, #0x14] - cmp r0, #0 - bne _022FD784 - ldr r0, _022FD7A0 ; =ov00_0231AAC0 - bl strlen - mov r2, r0 - ldr r1, _022FD7A0 ; =ov00_0231AAC0 - mov r0, sl - bl GhiTrySendThenBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FD784: - ldr r1, [sl, #0x64] - ldr r0, [sl, #0x60] - cmp r1, r0 - movlt r0, #2 - movge r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FD79C: .word ov00_0231AABC -_022FD7A0: .word ov00_0231AAC0 - arm_func_end GhiPostDoPosting - - arm_func_start GhiParseUrl -GhiParseUrl: ; 0x022FD7A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, [r5, #0x14] - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _022FD910 ; =ov00_0231AAEC - mov r0, r4 - mov r2, #7 - bl strncmp - cmp r0, #0 - bne _022FD7EC - mov r0, #0 - str r0, [r5, #0x28] - add r4, r4, #7 - b _022FD81C -_022FD7EC: - ldr r1, _022FD914 ; =ov00_0231AAF4 - mov r0, r4 - mov r2, #8 - bl strncmp - cmp r0, #0 - bne _022FD814 - mov r0, #1 - str r0, [r5, #0x28] - add r4, r4, #8 - b _022FD81C -_022FD814: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FD81C: - ldr r1, _022FD918 ; =ov00_0231AB00 - mov r0, r4 - bl strcspn - mov r6, r0 - ldrsb r7, [r4, r6] - mov r1, #0 - mov r0, r4 - strb r1, [r4, r6] - bl goastrdup - str r0, [r5, #0x18] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - strb r7, [r4, r6] - ldrsb r0, [r4, r6]! - cmp r0, #0x3a - bne _022FD898 - add r4, r4, #1 - mov r0, r4 - bl atoi - strh r0, [r5, #0x20] - ldrh r0, [r5, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022FD880: - ldrsb r0, [r4, #1]! - cmp r0, #0 - beq _022FD8B0 - cmp r0, #0x2f - bne _022FD880 - b _022FD8B0 -_022FD898: - ldr r0, [r5, #0x28] - cmp r0, #1 - ldreq r0, _022FD91C ; =0x000001BB - streqh r0, [r5, #0x20] - movne r0, #0x50 - strneh r0, [r5, #0x20] -_022FD8B0: - ldrsb r0, [r4] - cmp r0, #0 - ldreq r4, _022FD920 ; =ov00_0231AB04 - mov r0, r4 - bl goastrdup - mov r1, #0x20 - mov r7, r0 - str r0, [r5, #0x24] - bl strchr - cmp r0, #0 - beq _022FD900 - mov r6, #0x2b - mov r4, #0x20 -_022FD8E4: - strb r6, [r0] - ldr r7, [r5, #0x24] - mov r1, r4 - mov r0, r7 - bl strchr - cmp r0, #0 - bne _022FD8E4 -_022FD900: - cmp r7, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FD910: .word ov00_0231AAEC -_022FD914: .word ov00_0231AAF4 -_022FD918: .word ov00_0231AB00 -_022FD91C: .word 0x000001BB -_022FD920: .word ov00_0231AB04 - arm_func_end GhiParseUrl - - arm_func_start GhiDoSocketInit -GhiDoSocketInit: ; 0x022FD924 - stmdb sp!, {r4, lr} - mov r1, #0 - mov r4, r0 - mov r2, r1 - bl GhiCallProgressCallback - bl SocketStartUp_Ghi - mov r0, r4 - bl GhiParseUrl - cmp r0, #0 - bne _022FD960 - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #3 - str r0, [r4, #0x3c] - ldmia sp!, {r4, pc} -_022FD960: - ldr r1, [r4, #0x28] - cmp r1, #1 - ldreq r0, [r4, #0x194] - cmpeq r0, #0 - bne _022FD984 - ldr r0, [r4, #4] - mov r1, #1 - bl GhttpSetRequestEncryptionEngine - b _022FD9A0 -_022FD984: - cmp r1, #1 - ldrne r0, [r4, #0x194] - cmpne r0, #0 - beq _022FD9A0 - ldr r0, [r4, #4] - mov r1, #0 - bl GhttpSetRequestEncryptionEngine -_022FD9A0: - mov r1, #0 - mov r3, #1 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - ldmia sp!, {r4, pc} - arm_func_end GhiDoSocketInit - - arm_func_start GhiDoHostLookup -GhiDoHostLookup: ; 0x022FD9BC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r1, [r4, #0x1b0] - cmp r1, #0 - beq _022FD9E8 - mov r1, #0 - mov r3, #2 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - ldmia sp!, {r3, r4, r5, pc} -_022FD9E8: - ldr r5, [r4, #0x188] - cmp r5, #0 - bne _022FDA04 - ldr r0, _022FDA94 ; =ov00_023289AC - ldr r5, [r0] - cmp r5, #0 - ldreq r5, [r4, #0x18] -_022FDA04: - mov r0, r5 - bl inet_addr_gsi - mvn r1, #0 - str r0, [r4, #0x1c] - cmp r0, r1 - bne _022FDA50 - mov r0, r5 - add r1, r4, #0x1b0 - bl GsiStartResolvingHostname - mvn r1, #0 - cmp r0, r1 - bne _022FDA50 - mov r0, #0 - str r0, [r4, #0x1b0] - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #4 - str r0, [r4, #0x3c] - ldmia sp!, {r3, r4, r5, pc} -_022FDA50: - ldr r1, [r4, #0x1c] - mvn r0, #0 - cmp r1, r0 - mov r1, #0 - bne _022FDA7C - mov r3, #2 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - ldmia sp!, {r3, r4, r5, pc} -_022FDA7C: - mov r3, #3 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FDA94: .word ov00_023289AC - arm_func_end GhiDoHostLookup - - arm_func_start GhiDoLookupPending -GhiDoLookupPending: ; 0x022FDA98 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x1b0] - bl GsiGetResolvedIP - mvn r1, #0 - str r0, [r4, #0x1c] - cmp r0, r1 - bne _022FDAD4 - mov r0, #0 - str r0, [r4, #0x1b0] - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #4 - str r0, [r4, #0x3c] - ldmia sp!, {r4, pc} -_022FDAD4: - cmp r0, #0 - mov r1, #0 - bne _022FDAF8 - mov r3, #2 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - ldmia sp!, {r4, pc} -_022FDAF8: - mov r0, r4 - mov r2, r1 - str r1, [r4, #0x1b0] - mov r3, #3 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - ldmia sp!, {r4, pc} - arm_func_end GhiDoLookupPending - - arm_func_start GhiDoConnecting -GhiDoConnecting: ; 0x022FDB14 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r1, [r4, #0x4c] - mvn r0, #0 - cmp r1, r0 - bne _022FDCC0 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl SocketCreate - mvn r1, #0 - str r0, [r4, #0x4c] - cmp r0, r1 - bne _022FDB74 - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #5 - str r0, [r4, #0x3c] - ldr r0, [r4, #0x4c] - bl GoaGetLastError - add sp, sp, #0x10 - str r0, [r4, #0x50] - ldmia sp!, {r4, pc} -_022FDB74: - mov r1, #0 - bl SocketSetBlocking - cmp r0, #0 - bne _022FDBA8 - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #5 - str r0, [r4, #0x3c] - ldr r0, [r4, #0x4c] - bl GoaGetLastError - add sp, sp, #0x10 - str r0, [r4, #0x50] - ldmia sp!, {r4, pc} -_022FDBA8: - ldr r0, [r4, #0x158] - cmp r0, #0 - beq _022FDBC4 - ldr r1, _022FDD70 ; =ov00_0231A7F4 - ldr r0, [r4, #0x4c] - ldr r1, [r1] - bl SetReceiveBufferSize -_022FDBC4: - add r2, sp, #8 - mov r1, #0 - str r1, [r2] - mov r0, #2 - str r1, [r2, #4] - strb r0, [sp, #9] - ldr r0, [r4, #0x188] - cmp r0, #0 - beq _022FDC0C - add r0, r4, #0x100 - ldrh r0, [r0, #0x8c] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0xa] - b _022FDC5C -_022FDC0C: - ldr r0, _022FDD74 ; =ov00_023289AC - ldr r0, [r0] - cmp r0, #0 - beq _022FDC40 - ldr r0, _022FDD78 ; =ov00_023289A8 - ldrh r0, [r0] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0xa] - b _022FDC5C -_022FDC40: - ldrh r0, [r4, #0x20] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0xa] -_022FDC5C: - ldr r0, [r4, #0x1c] - add r1, sp, #8 - str r0, [sp, #0xc] - ldr r0, [r4, #0x4c] - mov r2, #8 - bl SocketConnect - mvn r1, #0 - cmp r0, r1 - bne _022FDCC0 - ldr r0, [r4, #0x4c] - bl GoaGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _022FDCC0 - mov r1, #1 - str r1, [r4, #0x120] - mov r1, #6 - str r1, [r4, #0x3c] - add sp, sp, #0x10 - str r0, [r4, #0x50] - ldmia sp!, {r4, pc} -_022FDCC0: - ldr r0, [r4, #0x4c] - add r2, sp, #4 - add r3, sp, #0 - mov r1, #0 - bl GsiSocketSelect - mvn r1, #0 - cmp r0, r1 - beq _022FDCF4 - cmp r0, #1 - bne _022FDD28 - ldr r1, [sp] - cmp r1, #0 - beq _022FDD28 -_022FDCF4: - mov r1, #1 - mov r2, #6 - str r1, [r4, #0x120] - sub r1, r2, #7 - cmp r0, r1 - str r2, [r4, #0x3c] - movne r0, #0 - bne _022FDD1C - ldr r0, [r4, #0x4c] - bl GoaGetLastError -_022FDD1C: - add sp, sp, #0x10 - str r0, [r4, #0x50] - ldmia sp!, {r4, pc} -_022FDD28: - cmp r0, #1 - addne sp, sp, #0x10 - ldmneia sp!, {r4, pc} - ldr r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x194] - mov r1, #0 - cmp r0, #0 - moveq r0, #5 - movne r0, #4 - str r0, [r4, #0x10] - mov r0, r4 - mov r2, r1 - bl GhiCallProgressCallback - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022FDD70: .word ov00_0231A7F4 -_022FDD74: .word ov00_023289AC -_022FDD78: .word ov00_023289A8 - arm_func_end GhiDoConnecting - - arm_func_start GhiDoSecuringSession -GhiDoSecuringSession: ; 0x022FDD7C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - sub sp, sp, #0x400 - mov r4, r0 - ldr r1, [r4, #0x198] - cmp r1, #0 - bne _022FDDC8 - ldr r2, [r4, #0x1a0] - add r1, r4, #0x190 - blx r2 - cmp r0, #3 - bne _022FDDC8 - mov r0, #1 - add sp, sp, #8 - str r0, [r4, #0x120] - mov r0, #0x11 - add sp, sp, #0x400 - str r0, [r4, #0x3c] - ldmia sp!, {r4, pc} -_022FDDC8: - ldr r1, [r4, #0x64] - ldr r0, [r4, #0x60] - cmp r1, r0 - bge _022FDE10 - mov r0, r4 - bl GhiSendBufferedData - cmp r0, #0 - addeq sp, sp, #8 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0x64] - ldr r0, [r4, #0x60] - cmp r1, r0 - addlt sp, sp, #8 - addlt sp, sp, #0x400 - ldmltia sp!, {r4, pc} - add r0, r4, #0x54 - bl GhiResetBuffer -_022FDE10: - ldr r3, _022FDEE4 ; =0x00000401 - add r1, sp, #4 - add r2, sp, #0 - mov r0, r4 - str r3, [sp] - bl GhiDoReceive - sub r1, r0, #2 - cmp r1, #1 - bhi _022FDE50 - mov r0, #1 - add sp, sp, #8 - str r0, [r4, #0x120] - mov r0, #0x11 - add sp, sp, #0x400 - str r0, [r4, #0x3c] - ldmia sp!, {r4, pc} -_022FDE50: - cmp r0, #0 - addne sp, sp, #8 - addne sp, sp, #0x400 - ldmneia sp!, {r4, pc} - ldr r2, [sp] - add r1, sp, #4 - add r0, r4, #0xc0 - bl GhiAppendDataToBuffer - cmp r0, #0 - addeq sp, sp, #8 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl GhiDecryptReceivedData - cmp r0, #0 - bne _022FDEAC - mov r0, #1 - add sp, sp, #8 - str r0, [r4, #0x120] - mov r0, #0x11 - add sp, sp, #0x400 - str r0, [r4, #0x3c] - ldmia sp!, {r4, pc} -_022FDEAC: - ldr r0, [r4, #0x19c] - cmp r0, #0 - addeq sp, sp, #8 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, pc} - mov r1, #0 - mov r3, #5 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - add sp, sp, #8 - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_022FDEE4: .word 0x00000401 - arm_func_end GhiDoSecuringSession - - arm_func_start GhiDoSendingRequest -GhiDoSendingRequest: ; 0x022FDEE8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - ldr r0, [r5, #0x60] - cmp r0, #0 - bne _022FE110 - ldr r0, [r5, #0x194] - cmp r0, #0 - addeq r4, r5, #0x54 - ldr r0, [r5, #0x160] - addne r4, r5, #0x78 - cmp r0, #0 - beq _022FDF2C - ldr r0, [r5, #0x180] - cmp r0, #0 - ldreq r1, _022FE180 ; =ov00_0231AB08 - beq _022FDF3C -_022FDF2C: - ldr r0, [r5, #0xc] - cmp r0, #3 - ldreq r1, _022FE184 ; =ov00_0231AB10 - ldrne r1, _022FE188 ; =ov00_0231AB18 -_022FDF3C: - mov r0, r4 - mov r2, #0 - bl GhiAppendDataToBuffer - ldr r0, [r5, #0x188] - mov r2, #0 - cmp r0, #0 - ldreq r0, _022FE18C ; =ov00_023289AC - ldreq r0, [r0] - cmpeq r0, #0 - beq _022FDF74 - ldr r1, [r5, #0x14] - mov r0, r4 - bl GhiAppendDataToBuffer - b _022FDF80 -_022FDF74: - ldr r1, [r5, #0x24] - mov r0, r4 - bl GhiAppendDataToBuffer -_022FDF80: - ldr r1, _022FE190 ; =ov00_0231AB20 - mov r0, r4 - mov r2, #0 - bl GhiAppendDataToBuffer - ldrh r0, [r5, #0x20] - cmp r0, #0x50 - bne _022FDFB0 - ldr r2, [r5, #0x18] - ldr r1, _022FE194 ; =ov00_0231AB2C - mov r0, r4 - bl GhiAppendHeaderToBuffer - b _022FDFF8 -_022FDFB0: - ldr r1, _022FE198 ; =ov00_0231AB34 - mov r0, r4 - mov r2, #0 - bl GhiAppendDataToBuffer - ldr r1, [r5, #0x18] - mov r0, r4 - mov r2, #0 - bl GhiAppendDataToBuffer - mov r0, r4 - mov r1, #0x3a - bl GhiAppendCharToBuffer - ldrh r1, [r5, #0x20] - mov r0, r4 - bl GhiAppendIntToBuffer - mov r0, r4 - ldr r1, _022FE19C ; =ov00_0231AB3C - mov r2, #2 - bl GhiAppendDataToBuffer -_022FDFF8: - ldr r0, [r5, #0x2c] - cmp r0, #0 - beq _022FE014 - ldr r1, _022FE1A0 ; =ov00_0231AB40 - bl strstr - cmp r0, #0 - bne _022FE024 -_022FE014: - ldr r1, _022FE1A0 ; =ov00_0231AB40 - ldr r2, _022FE1A4 ; =ov00_0231AB4C - mov r0, r4 - bl GhiAppendHeaderToBuffer -_022FE024: - ldr r0, [r5, #0x38] - cmp r0, #0 - beq _022FE044 - ldr r1, _022FE1A8 ; =ov00_0231AB5C - ldr r2, _022FE1AC ; =ov00_0231AB68 - mov r0, r4 - bl GhiAppendHeaderToBuffer - b _022FE054 -_022FE044: - ldr r1, _022FE1A8 ; =ov00_0231AB5C - ldr r2, _022FE1B0 ; =ov00_0231AB74 - mov r0, r4 - bl GhiAppendHeaderToBuffer -_022FE054: - ldr r0, [r5, #0x160] - cmp r0, #0 - beq _022FE0A4 - ldr r0, [r5, #0x180] - cmp r0, #0 - bne _022FE0A4 - ldr r2, [r5, #0x170] - ldr r1, _022FE1B4 ; =ov00_0231AB7C - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _022FE1B8 ; =ov00_0231AB80 - add r2, sp, #0 - mov r0, r4 - bl GhiAppendHeaderToBuffer - mov r0, r5 - bl GhiPostGetContentType - mov r2, r0 - ldr r1, _022FE1BC ; =ov00_0231AB90 - mov r0, r4 - bl GhiAppendHeaderToBuffer -_022FE0A4: - ldr r1, [r5, #0x2c] - cmp r1, #0 - beq _022FE0BC - mov r0, r4 - mov r2, #0 - bl GhiAppendDataToBuffer -_022FE0BC: - ldr r1, _022FE19C ; =ov00_0231AB3C - mov r0, r4 - mov r2, #2 - bl GhiAppendDataToBuffer - ldr r0, [r5, #0x194] - cmp r0, #0 - beq _022FE110 - ldr r1, [r4, #4] - ldr r2, [r4, #0xc] - add r0, r5, #0x54 - bl GhiEncryptDataToBuffer - cmp r0, #0 - bne _022FE108 - mov r0, #1 - str r0, [r5, #0x120] - mov r0, #0x11 - add sp, sp, #0x10 - str r0, [r5, #0x3c] - ldmia sp!, {r3, r4, r5, pc} -_022FE108: - mov r0, r4 - bl GhiResetBuffer -_022FE110: - mov r0, r5 - bl GhiSendBufferedData - cmp r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x64] - ldr r0, [r5, #0x60] - cmp r1, r0 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, pc} - add r0, r5, #0x54 - bl GhiResetBuffer - ldr r0, [r5, #0x160] - cmp r0, #0 - beq _022FE160 - ldr r0, [r5, #0x180] - cmp r0, #0 - moveq r0, #6 - streq r0, [r5, #0x10] - beq _022FE168 -_022FE160: - mov r0, #7 - str r0, [r5, #0x10] -_022FE168: - mov r1, #0 - mov r0, r5 - mov r2, r1 - bl GhiCallProgressCallback - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FE180: .word ov00_0231AB08 -_022FE184: .word ov00_0231AB10 -_022FE188: .word ov00_0231AB18 -_022FE18C: .word ov00_023289AC -_022FE190: .word ov00_0231AB20 -_022FE194: .word ov00_0231AB2C -_022FE198: .word ov00_0231AB34 -_022FE19C: .word ov00_0231AB3C -_022FE1A0: .word ov00_0231AB40 -_022FE1A4: .word ov00_0231AB4C -_022FE1A8: .word ov00_0231AB5C -_022FE1AC: .word ov00_0231AB68 -_022FE1B0: .word ov00_0231AB74 -_022FE1B4: .word ov00_0231AB7C -_022FE1B8: .word ov00_0231AB80 -_022FE1BC: .word ov00_0231AB90 - arm_func_end GhiDoSendingRequest - - arm_func_start GhiDoPosting -GhiDoPosting: ; 0x022FE1C0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r6, [r4, #0x16c] - bl GhiPostDoPosting - movs r5, r0 - bne _022FE23C - mov r1, #0 - mov r0, r4 - str r1, [sp] - bl GhiPostCleanupState - mov r2, #0 - ldr r0, [r4, #0x4c] - add r1, sp, #0 - mov r3, r2 - bl GsiSocketSelect - cmp r0, #1 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r1, #0 - mov r3, #8 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} -_022FE23C: - cmp r5, #3 - moveq r0, #0 - addeq sp, sp, #4 - streq r0, [r4, #0x17c] - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r4, #0x16c] - cmp r6, r0 - beq _022FE264 - mov r0, r4 - bl GhiCallPostCallback -_022FE264: - cmp r5, #1 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r0, r4 - bl GhiPostCleanupState - mov r3, #1 - mov r1, #0 - str r3, [r4, #0x180] - mov r3, #7 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end GhiDoPosting - - arm_func_start GhiDoWaiting -GhiDoWaiting: ; 0x022FE2A0 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r0, [r4, #0x4c] - add r1, sp, #4 - add r3, sp, #0 - mov r2, #0 - bl GsiSocketSelect - mvn r1, #0 - cmp r0, r1 - beq _022FE2E0 - cmp r0, #1 - bne _022FE314 - ldr r1, [sp] - cmp r1, #0 - beq _022FE314 -_022FE2E0: - mov r1, #1 - mov r2, #5 - str r1, [r4, #0x120] - sub r1, r2, #6 - cmp r0, r1 - str r2, [r4, #0x3c] - movne r0, #0 - bne _022FE308 - ldr r0, [r4, #0x4c] - bl GoaGetLastError -_022FE308: - add sp, sp, #8 - str r0, [r4, #0x50] - ldmia sp!, {r4, pc} -_022FE314: - cmp r0, #1 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - mov r1, #0 - mov r3, #8 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end GhiDoWaiting - - arm_func_start GhiParseStatus -GhiParseStatus: ; 0x022FE350 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - add r2, sp, #0xc - str r2, [sp] - add r1, sp, #8 - str r1, [sp, #4] - mov r4, r0 - ldr r0, [r4, #0xa0] - ldr r1, _022FE444 ; =ov00_0231ABA0 - add r2, sp, #0x14 - add r3, sp, #0x10 - bl Std_TsScanf - cmp r0, #3 - bne _022FE3A4 - ldr r6, [sp, #0x14] - cmp r6, #1 - ldrge r0, [sp, #0xc] - cmpge r0, #0x64 - blt _022FE3A4 - cmp r0, #0x258 - blt _022FE3C0 -_022FE3A4: - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #7 - str r0, [r4, #0x3c] - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022FE3C0: - mov r3, #0 - ldr lr, [sp, #8] - mov ip, #1 - ldr r1, _022FE448 ; =_020AEDB0 - mov r2, r3 - b _022FE3E0 -_022FE3D8: - add lr, lr, #1 - str lr, [sp, #8] -_022FE3E0: - ldr r0, [r4, #0xa0] - ldrsb r0, [r0, lr] - cmp r0, #0 - beq _022FE41C - mov r5, ip - blt _022FE400 - cmp r0, #0x80 - movlt r5, r3 -_022FE400: - cmp r5, #0 - movne r0, r2 - moveq r0, r0, lsl #1 - ldreqh r0, [r1, r0] - andeq r0, r0, #0x100 - cmp r0, #0 - bne _022FE3D8 -_022FE41C: - str r6, [r4, #0x10c] - ldr r1, [sp, #0x10] - mov r0, #1 - str r1, [r4, #0x110] - ldr r1, [sp, #0xc] - str r1, [r4, #0x114] - ldr r1, [sp, #8] - str r1, [r4, #0x118] - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FE444: .word ov00_0231ABA0 -_022FE448: .word _020AEDB0 - arm_func_end GhiParseStatus - - arm_func_start GhiDoReceivingStatus -GhiDoReceivingStatus: ; 0x022FE44C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #4 - sub sp, sp, #0x400 - mov r3, #0x400 - add r1, sp, #4 - add r2, sp, #0 - mov r4, r0 - str r3, [sp] - bl GhiDoReceive - mov r5, r0 - cmp r5, #3 - cmpne r5, #1 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} - cmp r5, #0 - bne _022FE504 - ldr r0, [r4, #0x194] - add r1, sp, #4 - cmp r0, #0 - beq _022FE4E8 - ldr r2, [sp] - add r0, r4, #0xc0 - bl GhiAppendDataToBuffer - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} - mov r0, r4 - bl GhiDecryptReceivedData - cmp r0, #0 - bne _022FE504 - mov r0, #1 - add sp, sp, #4 - str r0, [r4, #0x120] - mov r0, #0x11 - add sp, sp, #0x400 - str r0, [r4, #0x3c] - ldmia sp!, {r4, r5, pc} -_022FE4E8: - ldr r2, [sp] - add r0, r4, #0x9c - bl GhiAppendDataToBuffer - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} -_022FE504: - ldr r0, [r4, #0xa0] - ldr r1, _022FE5F0 ; =ov00_0231AB3C - bl strstr - cmp r0, #0 - beq _022FE5B8 - mov r1, #0 - strb r1, [r0] - ldr r1, [r4, #0xa0] - sub r5, r0, r1 - mov r0, r4 - bl GhiParseStatus - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} - add r0, r5, #2 - str r0, [r4, #0x11c] - ldr r0, [r4, #0x114] - cmp r0, #0x64 - bne _022FE594 - ldr r0, [r4, #0x17c] - cmp r0, #0 - beq _022FE594 - mov r1, #0 - add r0, r4, #0x9c - str r1, [r4, #0x17c] - bl GhiResetBuffer - mov r1, #0 - mov r3, #6 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, pc} -_022FE594: - mov r1, #0 - mov r3, #9 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl GhiCallProgressCallback - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, pc} -_022FE5B8: - cmp r5, #2 - addne sp, sp, #4 - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, pc} - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #7 - str r0, [r4, #0x3c] - ldr r0, [r4, #0x4c] - bl GoaGetLastError - str r0, [r4, #0x50] - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022FE5F0: .word ov00_0231AB3C - arm_func_end GhiDoReceivingStatus - - arm_func_start GhiDeliverIncomingFileData -GhiDeliverIncomingFileData: ; 0x022FE5F4 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x124] - mov ip, #0 - add r3, r0, r2 - str r3, [r4, #0x124] - ldr r0, [r4, #0x128] - mov lr, ip - cmp r3, r0 - beq _022FE628 - ldr r0, [r4, #0x154] - cmp r0, #0 - beq _022FE630 -_022FE628: - mov r0, #1 - str r0, [r4, #0x120] -_022FE630: - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _022FE65C - add r0, r4, #0xe4 - bl GhiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr ip, [r4, #0xe8] - ldr lr, [r4, #0xf0] - b _022FE69C -_022FE65C: - cmp r0, #1 - bne _022FE690 - cmp r2, #0 - beq _022FE684 - mov r0, #1 - str r0, [r4, #0x120] - mov r0, #0xd - str r0, [r4, #0x3c] - mov r0, #0 - ldmia sp!, {r4, pc} -_022FE684: - mov ip, r1 - mov lr, r2 - b _022FE69C -_022FE690: - cmp r0, #2 - moveq ip, r1 - moveq lr, r2 -_022FE69C: - mov r0, r4 - mov r1, ip - mov r2, lr - bl GhiCallProgressCallback - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end GhiDeliverIncomingFileData - - arm_func_start GhiParseChunkSize -GhiParseChunkSize: ; 0x022FE6B4 - stmdb sp!, {r3, lr} - ldr r1, _022FE6D8 ; =ov00_0231ABB0 - add r2, sp, #0 - add r0, r0, #0x138 - bl Std_TsScanf - cmp r0, #1 - mvnne r0, #0 - ldreq r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FE6D8: .word ov00_0231ABB0 - arm_func_end GhiParseChunkSize - - arm_func_start GhiAppendToChunkHeaderBuffer -GhiAppendToChunkHeaderBuffer: ; 0x022FE6DC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - cmp r2, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r5, #0x144] - cmp r3, #0xa - ldmgeia sp!, {r3, r4, r5, pc} - rsb r4, r3, #0xa - cmp r4, r2 - movge r4, r2 - add r0, r5, #0x138 - mov r2, r4 - add r0, r0, r3 - bl memcpy - ldr r0, [r5, #0x144] - mov r1, #0 - add r0, r0, r4 - str r0, [r5, #0x144] - add r0, r5, r0 - strb r1, [r0, #0x138] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GhiAppendToChunkHeaderBuffer - - arm_func_start GhiProcessIncomingFileData -GhiProcessIncomingFileData: ; 0x022FE730 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r0 - ldr r3, [r6, #0x134] - mov r5, r1 - mov r4, r2 - cmp r3, #0 - beq _022FE8B0 - cmp r4, #0 - ble _022FE8A8 - mov r8, #0 - mov fp, #1 - mov sb, #3 - mvn r7, #0 -_022FE764: - ldr r0, [r6, #0x14c] - cmp r0, #0 - bne _022FE7F8 - mov r0, r5 - mov r1, #0xa - bl strchr - movs sl, r0 - beq _022FE7E0 - mov r0, r6 - mov r1, r5 - sub r2, sl, r5 - bl GhiAppendToChunkHeaderBuffer - add r1, sl, #1 - sub r2, r1, r5 - mov r0, r6 - sub r4, r4, r2 - mov r5, r1 - bl GhiParseChunkSize - str r0, [r6, #0x148] - cmp r0, r7 - bne _022FE7D0 - mov r0, #1 - str r0, [r6, #0x120] - mov r0, #7 - str r0, [r6, #0x3c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FE7D0: - cmp r0, #0 - streq sb, [r6, #0x14c] - strne fp, [r6, #0x14c] - b _022FE8A0 -_022FE7E0: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GhiAppendToChunkHeaderBuffer - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FE7F8: - cmp r0, #1 - bne _022FE848 - ldr sl, [r6, #0x148] - mov r0, r6 - cmp sl, r4 - movge sl, r4 - mov r1, r5 - mov r2, sl - bl GhiDeliverIncomingFileData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r6, #0x148] - add r5, r5, sl - subs r0, r0, sl - str r0, [r6, #0x148] - moveq r0, #2 - sub r4, r4, sl - streq r0, [r6, #0x14c] - b _022FE8A0 -_022FE848: - cmp r0, #2 - bne _022FE88C - mov r0, r5 - mov r1, #0xa - bl strchr - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - strb r8, [r6, #0x138] - str r8, [r6, #0x144] - add r0, r0, #1 - sub r1, r0, r5 - str r8, [r6, #0x148] - mov r5, r0 - str r8, [r6, #0x14c] - sub r4, r4, r1 - b _022FE8A0 -_022FE88C: - cmp r0, #3 - moveq r0, #1 - streq r0, [r6, #0x120] - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FE8A0: - cmp r4, #0 - bgt _022FE764 -_022FE8A8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FE8B0: - bl GhiDeliverIncomingFileData - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GhiProcessIncomingFileData - - arm_func_start GhiDoReceivingHeaders -GhiDoReceivingHeaders: ; 0x022FE8B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r0 - mov r0, #0x1000 - mov r7, #1 - bl gsimalloc - str r0, [sp, #4] - cmp r0, #0 - bne _022FE8F0 - mov r0, r7 - str r0, [sl, #0x120] - add sp, sp, #0x18 - str r0, [sl, #0x3c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FE8F0: - ldr r1, [sp, #4] - mov r3, #0x1000 - add r2, sp, #8 - mov r0, sl - str r3, [sp, #8] - bl GhiDoReceive - mov r6, r0 - cmp r6, #3 - cmpne r6, #1 - beq _022FEDA0 - cmp r6, #0 - bne _022FE980 - ldr r0, [sl, #0x194] - cmp r0, #0 - beq _022FE968 - ldr r2, [sp, #8] - ldr r1, [sp, #4] - add r0, sl, #0xc0 - bl GhiAppendDataToBuffer - cmp r0, #0 - beq _022FEDA0 - mov r0, sl - bl GhiDecryptReceivedData - cmp r0, #0 - bne _022FE980 - mov r0, r7 - str r0, [sl, #0x120] - mov r0, #0x11 - str r0, [sl, #0x3c] - b _022FEDA0 -_022FE968: - ldr r2, [sp, #8] - ldr r1, [sp, #4] - add r0, sl, #0x9c - bl GhiAppendDataToBuffer - cmp r0, #0 - beq _022FEDA0 -_022FE980: - ldr r1, [sl, #0x114] - ldr r2, _022FEDB0 ; =0x51EB851F - mov r0, r1, lsr #0x1f - smull r1, r3, r2, r1 - add r3, r0, r3, asr #5 - cmp r3, #1 - ldr r5, [sl, #0xa0] - ldr r4, [sl, #0x11c] - bne _022FE9E0 - ldr r1, _022FEDB4 ; =ov00_0231AB3C - add r0, r5, r4 - mov r2, #2 - bl strncmp - cmp r0, #0 - beq _022FE9D4 - ldr r1, _022FEDB8 ; =ov00_0231ABB4 - add r0, r5, r4 - mov r2, #2 - bl strncmp - cmp r0, #0 - bne _022FE9E0 -_022FE9D4: - add r0, r5, r4 - mov r7, #0 - b _022FE9EC -_022FE9E0: - ldr r1, _022FEDBC ; =ov00_0231ABB8 - add r0, r5, r4 - bl strstr -_022FE9EC: - cmp r0, #0 - bne _022FEA00 - ldr r1, _022FEDB8 ; =ov00_0231ABB4 - add r0, r5, r4 - bl strstr -_022FEA00: - cmp r0, #0 - beq _022FED7C - cmp r7, #1 - addeq r0, r0, #2 - mov r1, #0 - strb r1, [r0] - ldr r1, [sl, #0xa0] - add r6, r0, #2 - sub r0, r0, r1 - ldr r7, [sl, #0xa8] - add r0, r0, #1 - str r0, [sl, #0xa8] - str r0, [sl, #0xac] - ldr r2, [sl, #0x114] - sub r1, r6, r1 - ldr r3, _022FEDB0 ; =0x51EB851F - mov r0, r2, lsr #0x1f - smull r2, r8, r3, r2 - add r8, r0, r8, asr #5 - cmp r8, #1 - sub r7, r7, r1 - bne _022FEAC4 - cmp r7, #0 - beq _022FEA78 - ldr r0, [sl, #0xa0] - mov r1, r6 - add r2, r7, #1 - bl memmove - str r7, [sl, #0xa8] - b _022FEA80 -_022FEA78: - add r0, sl, #0x9c - bl GhiResetBuffer -_022FEA80: - ldr r0, [sl, #0x17c] - cmp r0, #0 - beq _022FEAA8 - mov r1, #0 - mov r0, sl - mov r2, r1 - str r1, [sl, #0x17c] - mov r3, #6 - str r3, [sl, #0x10] - bl GhiCallProgressCallback -_022FEAA8: - mov r1, #0 - mov r3, #8 - mov r0, sl - mov r2, r1 - str r3, [sl, #0x10] - bl GhiCallProgressCallback - b _022FEDA0 -_022FEAC4: - cmp r8, #3 - bne _022FEC14 - ldr r0, [sl, #0x130] - cmp r0, #0xa - ble _022FEAEC - mov r0, #1 - str r0, [sl, #0x120] - mov r0, #0xb - str r0, [sl, #0x3c] - b _022FEDA0 -_022FEAEC: - ldr r1, _022FEDC0 ; =ov00_0231ABC0 - add r0, r5, r4 - bl strstr - cmp r0, #0 - beq _022FEC14 - add r4, r0, #9 - ldr r1, _022FEDC4 ; =_020AEDB0 - mov r2, #0 - b _022FEB14 -_022FEB10: - add r4, r4, #1 -_022FEB14: - ldrsb r0, [r4] - cmp r0, #0 - blt _022FEB28 - cmp r0, #0x80 - blt _022FEB30 -_022FEB28: - mov r0, r2 - b _022FEB3C -_022FEB30: - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - and r0, r0, #0x100 -_022FEB3C: - cmp r0, #0 - bne _022FEB10 - mov r3, r4 - ldr r1, _022FEDC4 ; =_020AEDB0 - mov r2, #0 - b _022FEB58 -_022FEB54: - add r3, r3, #1 -_022FEB58: - ldrsb r0, [r3] - cmp r0, #0 - beq _022FEB8C - blt _022FEB70 - cmp r0, #0x80 - blt _022FEB78 -_022FEB70: - mov r0, r2 - b _022FEB84 -_022FEB78: - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - and r0, r0, #0x100 -_022FEB84: - cmp r0, #0 - beq _022FEB54 -_022FEB8C: - mov r0, #0 - strb r0, [r3] - ldrsb r0, [r4] - cmp r0, #0x2f - bne _022FEBF0 - ldr r0, [sl, #0x18] - bl strlen - mov r5, r0 - mov r0, r4 - bl strlen - add r1, r5, #0xe - add r0, r1, r0 - bl gsimalloc - str r0, [sl, #0x12c] - cmp r0, #0 - moveq r0, #1 - streq r0, [sl, #0x120] - streq r0, [sl, #0x3c] - str r4, [sp] - ldrh r3, [sl, #0x20] - ldr r0, [sl, #0x12c] - ldr r2, [sl, #0x18] - ldr r1, _022FEDC8 ; =ov00_0231ABCC - bl OS_VsPrintf - b _022FEDA0 -_022FEBF0: - mov r0, r4 - bl goastrdup - str r0, [sl, #0x12c] - cmp r0, #0 - bne _022FEDA0 - mov r0, #1 - str r0, [sl, #0x120] - str r0, [sl, #0x3c] - b _022FEDA0 -_022FEC14: - ldr r1, _022FEDCC ; =ov00_0231ABDC - add r0, r5, r4 - bl strstr - movs fp, r0 - beq _022FECEC - ldr r8, _022FEDD0 ; =ov00_023184AC - add r1, sp, #0xc - mov r3, #5 -_022FEC34: - ldrb r2, [r8] - ldrb r0, [r8, #1] - add r8, r8, #2 - strb r2, [r1] - strb r0, [r1, #1] - add r1, r1, #2 - subs r3, r3, #1 - bne _022FEC34 - ldrb r2, [r8] - add r8, fp, #0x10 - add r0, sp, #0xc - mov sb, r8 - strb r2, [r1] - bl strlen - b _022FEC74 -_022FEC70: - add sb, sb, #1 -_022FEC74: - cmp sb, #0 - ldrnesb r1, [sb] - cmpne r1, #0 - cmpne r1, #0xa - cmpne r1, #0xd - cmpne r1, #0x20 - bne _022FEC70 - sub r2, sb, r8 - cmp r2, r0 - ble _022FECB0 - mov r0, #1 - str r0, [sl, #0x120] - mov r0, #0x10 - str r0, [sl, #0x3c] - b _022FEDA0 -_022FECB0: - cmp r0, r2 - bne _022FECE0 - add r1, sp, #0xc - mov r0, r8 - bl strncmp - cmp r0, #0 - blt _022FECE0 - mov r0, #1 - str r0, [sl, #0x120] - mov r0, #0x10 - str r0, [sl, #0x3c] - b _022FEDA0 -_022FECE0: - mov r0, r8 - bl atoi - str r0, [sl, #0x128] -_022FECEC: - ldr r1, _022FEDD4 ; =ov00_0231ABEC - add r0, r5, r4 - bl strstr - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - str r0, [sl, #0x134] - cmp r0, #0 - beq _022FED24 - mov r0, #0 - strb r0, [sl, #0x138] - str r0, [sl, #0x144] - str r0, [sl, #0x148] - str r0, [sl, #0x14c] -_022FED24: - ldr r0, [sl, #0xc] - sub r0, r0, #3 - cmp r0, #1 - movls r0, #1 - strls r0, [sl, #0x120] - bls _022FEDA0 - mov r0, #0xa - str r0, [sl, #0x10] - cmp fp, #0 - beq _022FED60 - ldr r0, [sl, #0x128] - cmp r0, #0 - moveq r0, #1 - streq r0, [sl, #0x120] - beq _022FEDA0 -_022FED60: - cmp r7, #0 - ble _022FEDA0 - mov r0, sl - mov r1, r6 - mov r2, r7 - bl GhiProcessIncomingFileData - b _022FEDA0 -_022FED7C: - cmp r6, #2 - bne _022FEDA0 - mov r0, #1 - str r0, [sl, #0x120] - mov r0, #7 - str r0, [sl, #0x3c] - ldr r0, [sl, #0x4c] - bl GoaGetLastError - str r0, [sl, #0x50] -_022FEDA0: - ldr r0, [sp, #4] - bl gsifree - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FEDB0: .word 0x51EB851F -_022FEDB4: .word ov00_0231AB3C -_022FEDB8: .word ov00_0231ABB4 -_022FEDBC: .word ov00_0231ABB8 -_022FEDC0: .word ov00_0231ABC0 -_022FEDC4: .word _020AEDB0 -_022FEDC8: .word ov00_0231ABCC -_022FEDCC: .word ov00_0231ABDC -_022FEDD0: .word ov00_023184AC -_022FEDD4: .word ov00_0231ABEC - arm_func_end GhiDoReceivingHeaders - - arm_func_start GhiDoReceivingFile -GhiDoReceivingFile: ; 0x022FEDD8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - bl current_time_gsi - mov r7, r0 - mov r0, #0x2000 - mov r8, #0 - bl gsimalloc - movs r6, r0 - bne _022FEE0C - mov r0, #1 - str r0, [sb, #0x120] - str r0, [sb, #0x3c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FEE0C: - mov r5, #0x2000 - add r4, sp, #0 - b _022FEF04 -_022FEE18: - mov r0, sb - mov r1, r6 - mov r2, r4 - str r5, [sp] - bl GhiDoReceive - cmp r0, #3 - cmpne r0, #1 - beq _022FEF1C - cmp r0, #2 - bne _022FEE68 - mov r0, #1 - str r0, [sb, #0x120] - ldr r1, [sb, #0x128] - cmp r1, #0 - ble _022FEF1C - ldr r0, [sb, #0x124] - cmp r0, r1 - movlt r0, #0xf - strlt r0, [sb, #0x3c] - b _022FEF1C -_022FEE68: - ldr r0, [sb, #0x194] - cmp r0, #0 - beq _022FEEE4 - ldr r2, [sp] - mov r1, r6 - add r0, sb, #0xc0 - bl GhiAppendDataToBuffer - cmp r0, #0 - beq _022FEF1C - ldr r1, [sb, #0xac] - mov r0, sb - str r1, [sb, #0xa8] - bl GhiDecryptReceivedData - cmp r0, #0 - bne _022FEEB8 - mov r0, #1 - str r0, [sb, #0x120] - mov r0, #0x11 - str r0, [sb, #0x3c] - b _022FEF1C -_022FEEB8: - ldr r3, [sb, #0xac] - ldr r0, [sb, #0xa8] - subs r2, r0, r3 - beq _022FEEFC - ldr r1, [sb, #0xa0] - mov r0, sb - add r1, r1, r3 - bl GhiProcessIncomingFileData - cmp r0, #0 - beq _022FEF1C - b _022FEEFC -_022FEEE4: - ldr r2, [sp] - mov r0, sb - mov r1, r6 - bl GhiProcessIncomingFileData - cmp r0, #0 - beq _022FEF1C -_022FEEFC: - bl current_time_gsi - sub r8, r0, r7 -_022FEF04: - ldr r0, [sb, #0x120] - cmp r0, #0 - bne _022FEF1C - ldr r0, [sb, #0x184] - cmp r8, r0 - blo _022FEE18 -_022FEF1C: - mov r0, r6 - bl gsifree - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GhiDoReceivingFile - - arm_func_start GpInitialize -GpInitialize: ; 0x022FEF28 - stmdb sp!, {r3, lr} - ldr ip, _022FEF54 ; =ov00_02328800 - ldr ip, [ip] - cmp ip, #1 - movne r0, #2 - ldmneia sp!, {r3, pc} - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - bl GpiInitialize - ldmia sp!, {r3, pc} - .align 2, 0 -_022FEF54: .word ov00_02328800 - arm_func_end GpInitialize - - arm_func_start GpDestroy -GpDestroy: ; 0x022FEF58 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - ldmeqia sp!, {r3, pc} - bl GpiDestroy - ldmia sp!, {r3, pc} - arm_func_end GpDestroy - - arm_func_start GpProcess -GpProcess: ; 0x022FEF74 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r1, [r1, #0x108] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - bl GpiProcess - ldmia sp!, {r3, pc} - arm_func_end GpProcess - - arm_func_start GpSetCallback -GpSetCallback: ; 0x022FEFA8 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrne ip, [r0] - cmpne ip, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - cmp r1, #0 - blt _022FEFD0 - cmp r1, #9 - blt _022FEFE0 -_022FEFD0: - ldr r1, _022FEFF4 ; =ov00_0231AC08 - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_022FEFE0: - add r0, ip, r1, lsl #3 - str r2, [r0, #0x1a8] - str r3, [r0, #0x1ac] - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FEFF4: .word ov00_0231AC08 - arm_func_end GpSetCallback - - arm_func_start GpConnectPreAuthenticatedA -GpConnectPreAuthenticatedA: ; 0x022FEFF8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x44 - movs lr, r0 - ldrne ip, [lr] - cmpne ip, #0 - addeq sp, sp, #0x44 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - cmp r1, #0 - ldrnesb r4, [r1] - cmpne r4, #0 - addeq sp, sp, #0x44 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - cmp r2, #0 - ldrnesb r4, [r2] - cmpne r4, #0 - addeq sp, sp, #0x44 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - ldr r4, [sp, #0x54] - cmp r4, #0 - bne _022FF068 - ldr r1, _022FF0F4 ; =ov00_0231AC18 - bl GpiSetErrorString - add sp, sp, #0x44 - mov r0, #2 - ldmia sp!, {r3, r4, pc} -_022FF068: - ldr ip, [ip, #0x108] - cmp ip, #0 - beq _022FF0B0 - add r3, sp, #0x24 - mov r0, #0 - mov r2, r3 - mov r1, r0 - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2, {r0, r1} - ldr r2, [sp, #0x58] - mov r0, lr - mov r1, r3 - blx r4 - add sp, sp, #0x44 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022FF0B0: - ldr lr, _022FF0F8 ; =ov00_0231AC28 - mov ip, #0 - str lr, [sp] - stmib sp, {r1, r2, ip} - str r3, [sp, #0x10] - str ip, [sp, #0x14] - ldr r1, [sp, #0x50] - ldr ip, [sp, #0x58] - str r1, [sp, #0x18] - str r4, [sp, #0x1c] - mov r1, lr - mov r2, lr - mov r3, lr - str ip, [sp, #0x20] - bl GpiConnect - add sp, sp, #0x44 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022FF0F4: .word ov00_0231AC18 -_022FF0F8: .word ov00_0231AC28 - arm_func_end GpConnectPreAuthenticatedA - - arm_func_start GpDisconnect -GpDisconnect: ; 0x022FF0FC - stmdb sp!, {r4, lr} - movs r4, r0 - ldrne r1, [r4] - cmpne r1, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r1, #0x108] - cmp r1, #0 - ldmneia sp!, {r4, pc} - mov r1, #1 - bl GpiDisconnect - mov r0, r4 - bl GpiReset - ldmia sp!, {r4, pc} - arm_func_end GpDisconnect - - arm_func_start GpProfileSearchA -GpProfileSearchA: ; 0x022FF130 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x2c - cmp r0, #0 - ldrne r4, [r0] - cmpne r4, #0 - addeq sp, sp, #0x2c - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - ldr ip, [sp, #0x48] - cmp ip, #0 - bne _022FF170 - ldr r1, _022FF1F0 ; =ov00_0231AC18 - bl GpiSetErrorString - add sp, sp, #0x2c - mov r0, #2 - ldmia sp!, {r3, r4, pc} -_022FF170: - ldr r4, [r4, #0x108] - cmp r4, #0 - beq _022FF1B0 - add r1, sp, #0x1c - mov r4, #0 - ldr r2, [sp, #0x4c] - ldr r3, _022FF1F4 ; =0x00000601 - str r4, [r1, #8] - str r4, [r1] - str r4, [r1, #4] - str r4, [r1, #0xc] - str r3, [sp, #0x24] - blx ip - add sp, sp, #0x2c - mov r0, r4 - ldmia sp!, {r3, r4, pc} -_022FF1B0: - ldr r4, [sp, #0x38] - ldr lr, [sp, #0x3c] - str r4, [sp] - ldr r4, [sp, #0x40] - str lr, [sp, #4] - str r4, [sp, #8] - mov r4, #0 - ldr lr, [sp, #0x44] - str r4, [sp, #0xc] - str lr, [sp, #0x10] - ldr lr, [sp, #0x4c] - str ip, [sp, #0x14] - str lr, [sp, #0x18] - bl GpiProfileSearch - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022FF1F0: .word ov00_0231AC18 -_022FF1F4: .word 0x00000601 - arm_func_end GpProfileSearchA - - arm_func_start GpGetInfo -GpGetInfo: ; 0x022FF1F8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x20c - movs r5, r0 - ldrne r4, [r5] - cmpne r4, #0 - cmpne r1, #0 - addeq sp, sp, #0x20c - moveq r0, #2 - ldmeqia sp!, {r4, r5, pc} - ldr lr, [sp, #0x218] - cmp lr, #0 - bne _022FF23C - ldr r1, _022FF2CC ; =ov00_0231AC18 - bl GpiSetErrorString - add sp, sp, #0x20c - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_022FF23C: - ldr ip, [r4, #0x108] - cmp ip, #0 - beq _022FF294 - mov r0, #0 - add lr, sp, #8 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov ip, #0x10 -_022FF260: - stmia lr!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _022FF260 - ldr r2, [sp, #0x21c] - str r0, [lr] - ldr r3, [sp, #0x218] - add r1, sp, #8 - mov r0, r5 - blx r3 - add sp, sp, #0x20c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_022FF294: - ldr ip, [r4, #0x1f4] - cmp ip, #4 - bne _022FF2B4 - ldr r1, _022FF2D0 ; =ov00_0231AC2C - bl GpiSetErrorString - add sp, sp, #0x20c - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_022FF2B4: - ldr ip, [sp, #0x21c] - str lr, [sp] - str ip, [sp, #4] - bl GpiGetInfo - add sp, sp, #0x20c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022FF2CC: .word ov00_0231AC18 -_022FF2D0: .word ov00_0231AC2C - arm_func_end GpGetInfo - - arm_func_start GpGetInfoNoWait -GpGetInfoNoWait: ; 0x022FF2D4 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrne ip, [r0] - cmpne ip, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r3, [ip, #0x108] - cmp r3, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r3, [ip, #0x1f4] - cmp r3, #4 - bne _022FF318 - ldr r1, _022FF320 ; =ov00_0231AC2C - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_022FF318: - bl GpiSetInfos - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF320: .word ov00_0231AC2C - arm_func_end GpGetInfoNoWait - - arm_func_start GpSendBuddyRequestA -GpSendBuddyRequestA: ; 0x022FF324 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - sub sp, sp, #0x400 - movs r6, r0 - ldrne r4, [r6] - mov r5, r1 - cmpne r4, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r4, #0x108] - cmp r1, #0 - addne sp, sp, #4 - addne sp, sp, #0x400 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r4, #0x1f4] - cmp r1, #4 - bne _022FF38C - ldr r1, _022FF478 ; =ov00_0231AC2C - bl GpiSetErrorString - add sp, sp, #4 - add sp, sp, #0x400 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_022FF38C: - cmp r2, #0 - bne _022FF3AC - ldr r1, _022FF47C ; =ov00_0231AC5C - bl GpiSetErrorString - add sp, sp, #4 - add sp, sp, #0x400 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_022FF3AC: - mov r1, r2 - ldr r2, _022FF480 ; =0x00000401 - add r0, sp, #0 - bl strzcpy_gsi - ldrsb r0, [sp] - cmp r0, #0 - beq _022FF3E8 - add r2, sp, #0 - mov r1, #0x2f -_022FF3D0: - ldrsb r0, [r2] - cmp r0, #0x5c - streqb r1, [r2] - ldrsb r0, [r2, #1]! - cmp r0, #0 - bne _022FF3D0 -_022FF3E8: - ldr r2, _022FF484 ; =ov00_0231AC6C - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _022FF488 ; =ov00_0231AC78 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _022FF48C ; =ov00_0231AC84 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r2, r5 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _022FF490 ; =ov00_0231AC94 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - add r2, sp, #0 - bl GpiAppendStringToBuffer - ldr r2, _022FF494 ; =ov00_0231ACA0 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022FF478: .word ov00_0231AC2C -_022FF47C: .word ov00_0231AC5C -_022FF480: .word 0x00000401 -_022FF484: .word ov00_0231AC6C -_022FF488: .word ov00_0231AC78 -_022FF48C: .word ov00_0231AC84 -_022FF490: .word ov00_0231AC94 -_022FF494: .word ov00_0231ACA0 - arm_func_end GpSendBuddyRequestA - - arm_func_start GpAuthBuddyRequest -GpAuthBuddyRequest: ; 0x022FF498 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrne r3, [r0] - cmpne r3, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r2, [r3, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r2, [r3, #0x1f4] - cmp r2, #4 - bne _022FF4DC - ldr r1, _022FF4E4 ; =ov00_0231AC2C - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_022FF4DC: - bl GpiAuthBuddyRequest - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF4E4: .word ov00_0231AC2C - arm_func_end GpAuthBuddyRequest - - arm_func_start GpDenyBuddyRequest -GpDenyBuddyRequest: ; 0x022FF4E8 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r0 - ldrne r5, [r4] - cmpne r5, #0 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0x1f4] - cmp r2, #4 - bne _022FF52C - ldr r1, _022FF5A4 ; =ov00_0231AC2C - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_022FF52C: - add r2, sp, #0 - bl GpiGetProfile - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [sp] - ldr r0, [r1, #0x18] - sub r0, r0, #1 - str r0, [r1, #0x18] - ldr r0, [r5, #0x100] - cmp r0, #0 - bne _022FF59C - ldr r1, [sp] - ldr r0, [r1, #0x18] - cmp r0, #0 - bgt _022FF59C - ldr r0, [r1, #0x14] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, [sp] - bl GpiCanFreeProfile - cmp r0, #0 - beq _022FF59C - ldr r1, [sp] - mov r0, r4 - bl GpiRemoveProfile -_022FF59C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FF5A4: .word ov00_0231AC2C - arm_func_end GpDenyBuddyRequest - - arm_func_start GpGetNumBuddies -GpGetNumBuddies: ; 0x022FF5A8 - cmp r0, #0 - ldrne r2, [r0] - cmpne r2, #0 - moveq r0, #2 - bxeq lr - ldr r0, [r2, #0x108] - cmp r0, #0 - mov r0, #0 - strne r0, [r1] - ldreq r2, [r2, #0x5d0] - streq r2, [r1] - bx lr - arm_func_end GpGetNumBuddies - - arm_func_start GpGetBuddyStatus -GpGetBuddyStatus: ; 0x022FF5D8 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - ldrne r3, [r6] - mov r5, r2 - cmpne r3, #0 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r2, [r3, #0x108] - cmp r2, #0 - beq _022FF618 - mov r0, r5 - mov r1, #0 - mov r2, #0x214 - bl memset - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022FF618: - cmp r5, #0 - bne _022FF630 - ldr r1, _022FF760 ; =ov00_0231ACA8 - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_022FF630: - cmp r1, #0 - ldr r2, [r3, #0x5d0] - blt _022FF644 - cmp r1, r2 - blt _022FF658 -_022FF644: - ldr r1, _022FF764 ; =ov00_0231ACB8 - mov r0, r6 - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_022FF658: - bl GpiFindBuddy - movs r4, r0 - bne _022FF678 - ldr r1, _022FF764 ; =ov00_0231ACB8 - mov r0, r6 - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_022FF678: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _022FF6D8 - ldr r0, [r0, #4] - cmp r0, #0 - bne _022FF6D8 - ldr r1, [r4] - mov r0, #0 - str r1, [r5] - ldr r1, [r4, #0xc] - ldr r1, [r1, #4] - str r1, [r5, #4] - strb r0, [r5, #8] - strb r0, [r5, #0x108] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x1c] - str r0, [r5, #0x208] - ldr r0, [r4, #0xc] - ldrh r0, [r0, #0x20] - str r0, [r5, #0x20c] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x30] - str r0, [r5, #0x210] - b _022FF758 -_022FF6D8: - ldr r0, [r4] - str r0, [r5] - ldr r0, [r4, #8] - ldr r0, [r0, #4] - str r0, [r5, #4] - ldr r0, [r4, #8] - ldr r1, [r0, #8] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r5, #8] - beq _022FF710 - add r0, r5, #8 - mov r2, #0x100 - bl strzcpy_gsi -_022FF710: - ldr r0, [r4, #8] - ldr r1, [r0, #0xc] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r5, #0x108] - beq _022FF734 - add r0, r5, #0x108 - mov r2, #0x100 - bl strzcpy_gsi -_022FF734: - ldr r0, [r4, #8] - ldr r0, [r0, #0x10] - str r0, [r5, #0x208] - ldr r0, [r4, #8] - ldrh r0, [r0, #0x14] - str r0, [r5, #0x20c] - ldr r0, [r4, #8] - ldr r0, [r0, #0x18] - str r0, [r5, #0x210] -_022FF758: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FF760: .word ov00_0231ACA8 -_022FF764: .word ov00_0231ACB8 - arm_func_end GpGetBuddyStatus - - arm_func_start GpGetBuddyIndex -GpGetBuddyIndex: ; 0x022FF768 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r4, r2 - ldrne r2, [r6] - mov r5, r1 - cmpne r2, #0 - addeq sp, sp, #4 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r2, [r2, #0x108] - cmp r2, #0 - movne r0, #0 - addne sp, sp, #4 - strne r0, [r4] - ldmneia sp!, {r3, r4, r5, r6, pc} - add r2, sp, #0 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #8] - cmpne r0, #0 - ldrne r0, [r0] - strne r0, [r4] - bne _022FF7FC - add r2, sp, #0 - mov r0, r6 - mov r1, r5 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #0xc] - cmpne r0, #0 - ldrne r0, [r0] - strne r0, [r4] - mvneq r0, #0 - streq r0, [r4] -_022FF7FC: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end GpGetBuddyIndex - - arm_func_start GpIsBuddy -GpIsBuddy: ; 0x022FF808 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - ldrne r2, [r5] - mov r4, r1 - cmpne r2, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r2, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - add r2, sp, #0 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #8] - cmpne r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #0xc] - cmpne r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpIsBuddy - - arm_func_start GpDeleteBuddy -GpDeleteBuddy: ; 0x022FF880 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrne r3, [r0] - cmpne r3, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r2, [r3, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r2, [r3, #0x1f4] - cmp r2, #4 - bne _022FF8C4 - ldr r1, _022FF8D8 ; =ov00_0231AC2C - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_022FF8C4: - mov r2, #1 - bl GpiDeleteBuddy - cmp r0, #0 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF8D8: .word ov00_0231AC2C - arm_func_end GpDeleteBuddy - - arm_func_start GpSetStatusA -GpSetStatusA: ; 0x022FF8DC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x200 - movs r7, r0 - ldrne r4, [r7] - mov r6, r1 - cmpne r4, #0 - mov r5, r3 - addeq sp, sp, #0x200 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #0x108] - cmp r1, #0 - addne sp, sp, #0x200 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #0x1f4] - cmp r1, #4 - bne _022FF938 - ldr r1, _022FFAF0 ; =ov00_0231AC2C - bl GpiSetErrorString - add sp, sp, #0x200 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF938: - cmp r2, #0 - bne _022FF954 - ldr r1, _022FFAF4 ; =ov00_0231ACC8 - bl GpiSetErrorString - add sp, sp, #0x200 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF954: - cmp r5, #0 - bne _022FF970 - ldr r1, _022FFAF8 ; =ov00_0231ACE0 - bl GpiSetErrorString - add sp, sp, #0x200 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF970: - mov r1, r2 - add r0, sp, #0x100 - mov r2, #0x100 - bl strzcpy_gsi - add r0, sp, #0x100 - ldrsb r0, [r0] - cmp r0, #0 - beq _022FF9B0 - add r2, sp, #0x100 - mov r1, #0x2f -_022FF998: - ldrsb r0, [r2] - cmp r0, #0x5c - streqb r1, [r2] - ldrsb r0, [r2, #1]! - cmp r0, #0 - bne _022FF998 -_022FF9B0: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldrsb r0, [sp] - cmp r0, #0 - beq _022FF9EC - add r2, sp, #0 - mov r1, #0x2f -_022FF9D4: - ldrsb r0, [r2] - cmp r0, #0x5c - streqb r1, [r2] - ldrsb r0, [r2, #1]! - cmp r0, #0 - bne _022FF9D4 -_022FF9EC: - ldr r0, [r4, #0x23c] - cmp r6, r0 - bne _022FFA2C - add r0, sp, #0x100 - add r1, r4, #0x3b8 - bl strcmp - cmp r0, #0 - bne _022FFA2C - add r1, r4, #0xb8 - add r0, sp, #0 - add r1, r1, #0x400 - bl strcmp - cmp r0, #0 - addeq sp, sp, #0x200 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022FFA2C: - add r1, sp, #0x100 - add r0, r4, #0x3b8 - mov r2, #0x100 - str r6, [r4, #0x23c] - bl strzcpy_gsi - add r0, r4, #0xb8 - add r1, sp, #0 - add r0, r0, #0x400 - mov r2, #0x100 - bl strzcpy_gsi - ldr r2, _022FFAFC ; =ov00_0231ACF8 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r7 - mov r2, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _022FFB00 ; =ov00_0231AC78 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _022FFB04 ; =ov00_0231AD04 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r4, #0x210 - add r2, sp, #0x100 - bl GpiAppendStringToBuffer - ldr r2, _022FFB08 ; =ov00_0231AD14 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r4, #0x210 - add r2, sp, #0 - bl GpiAppendStringToBuffer - ldr r2, _022FFB0C ; =ov00_0231ACA0 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FFAF0: .word ov00_0231AC2C -_022FFAF4: .word ov00_0231ACC8 -_022FFAF8: .word ov00_0231ACE0 -_022FFAFC: .word ov00_0231ACF8 -_022FFB00: .word ov00_0231AC78 -_022FFB04: .word ov00_0231AD04 -_022FFB08: .word ov00_0231AD14 -_022FFB0C: .word ov00_0231ACA0 - arm_func_end GpSetStatusA - - arm_func_start GpSendBuddyMessageA -GpSendBuddyMessageA: ; 0x022FFB10 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - cmp r0, #0 - ldrne ip, [r0] - mov r3, r2 - cmpne ip, #0 - addeq sp, sp, #8 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r2, [ip, #0x108] - cmp r2, #0 - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r2, [ip, #0x1f4] - cmp r2, #4 - bne _022FFB68 - ldr r1, _022FFBA0 ; =ov00_0231AC2C - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, pc} -_022FFB68: - cmp r3, #0 - bne _022FFB84 - ldr r1, _022FFBA4 ; =ov00_0231AD20 - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, pc} -_022FFB84: - mov ip, #0 - str ip, [sp] - mov r2, #1 - str ip, [sp, #4] - bl GpiSendBuddyMessage - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FFBA0: .word ov00_0231AC2C -_022FFBA4: .word ov00_0231AD20 - arm_func_end GpSendBuddyMessageA - - arm_func_start GpGetReversBuddiesList -GpGetReversBuddiesList: ; 0x022FFBA8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - cmp r0, #0 - ldrne r4, [r0] - cmpne r4, #0 - addeq sp, sp, #0x14 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - ldr lr, [sp, #0x20] - cmp lr, #0 - bne _022FFBE8 - ldr r1, _022FFC54 ; =ov00_0231AC18 - bl GpiSetErrorString - add sp, sp, #0x14 - mov r0, #2 - ldmia sp!, {r3, r4, pc} -_022FFBE8: - ldr ip, [r4, #0x1f4] - cmp ip, #4 - bne _022FFC08 - ldr r1, _022FFC58 ; =ov00_0231AC2C - bl GpiSetErrorString - add sp, sp, #0x14 - mov r0, #2 - ldmia sp!, {r3, r4, pc} -_022FFC08: - ldr ip, [r4, #0x108] - cmp ip, #0 - beq _022FFC3C - ldr r2, [sp, #0x24] - add r1, sp, #8 - mov r3, #0 - str r3, [r1] - str r3, [r1, #4] - str r3, [r1, #8] - blx lr - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_022FFC3C: - ldr ip, [sp, #0x24] - str lr, [sp] - str ip, [sp, #4] - bl GpiOthersBuddyList - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022FFC54: .word ov00_0231AC18 -_022FFC58: .word ov00_0231AC2C - arm_func_end GpGetReversBuddiesList - - arm_func_start GpiInitialize -GpiInitialize: ; 0x022FFC5C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r4, #0 - str r4, [r7] - ldr r0, _022FFD84 ; =0x00000634 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl gsimalloc - str r0, [sp] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _022FFD84 ; =0x00000634 - mov r1, #0 - bl memset - ldr r0, [sp] - mov r3, #0 - strb r3, [r0] - ldr r0, [sp] - mov r2, #1 - str r3, [r0, #0x5b8] - ldr r1, [sp] - add r0, sp, #0 - str r2, [r1, #0x100] - ldr r1, [sp] - str r3, [r1, #0x104] - ldr r1, [sp] - str r3, [r1, #0x108] - ldr r1, [sp] - str r3, [r1, #0x10c] - ldr r1, [sp] - str r6, [r1, #0x608] - ldr r1, [sp] - str r5, [r1, #0x60c] - ldr r1, [sp] - str r4, [r1, #0x1a4] - bl GpiInitProfiles - cmp r0, #0 - bne _022FFD14 - ldr r0, [sp] - bl gsifree - mov r0, #0 - str r0, [sp] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFD14: - ldr r0, [sp] - mov r2, #0 - str r2, [r0, #0x5c0] - mov r1, r2 -_022FFD24: - ldr r0, [sp] - add r0, r0, r2, lsl #3 - str r1, [r0, #0x1a8] - ldr r0, [sp] - add r0, r0, r2, lsl #3 - add r2, r2, #1 - str r1, [r0, #0x1ac] - cmp r2, #9 - blt _022FFD24 - add r0, sp, #0 - bl GpiReset - movs r4, r0 - beq _022FFD68 - add r0, sp, #0 - bl GpiDestroy - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFD68: - bl SocketStartUp_Ghi - bl current_time_gsi - bl srand - ldr r1, [sp] - mov r0, #0 - str r1, [r7] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FFD84: .word 0x00000634 - arm_func_end GpiInitialize - - arm_func_start GpiDestroy -GpiDestroy: ; 0x022FFD88 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r1, #1 - ldr r4, [r5] - bl GpiDisconnect - bl GsUdpEngineIsInitialized - cmp r0, #0 - beq _022FFDCC - add r0, r4, #0x220 - bl GsUdpEngineRemoveMsgHandler - bl GsUdpEngineNoMoreMsgHandlers - cmp r0, #0 - beq _022FFDCC - bl GsUdpEngineNoApp - cmp r0, #0 - beq _022FFDCC - bl GsUdpEngineShutdown -_022FFDCC: - mov r0, r5 - bl GpiStatusInfoKeysDestroy - ldr r0, [r4, #0x5c8] - bl TableFree_Gsi - mov r0, r4 - bl gsifree - mov r0, #0 - str r0, [r5] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpiDestroy - - arm_func_start GpiResetProfile -GpiResetProfile: ; 0x022FFDF0 - mov r0, #0 - str r0, [r1, #8] - str r0, [r1, #0xc] - str r0, [r1, #0x14] - str r0, [r1, #0x18] - str r0, [r1, #0x1c] - mov r0, #1 - bx lr - arm_func_end GpiResetProfile - - arm_func_start GpiReset -GpiReset: ; 0x022FFE10 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r0, [r4] - mov r2, #0 - str r0, [sp] - strb r2, [r0, #0x110] - ldr r0, [sp] - sub r1, r2, #1 - strb r2, [r0, #0x12f] - ldr r0, [sp] - strb r2, [r0, #0x144] - ldr r0, [sp] - str r1, [r0, #0x1f0] - ldr r0, [sp] - str r2, [r0, #0x1f4] - ldr r0, [sp] - str r2, [r0, #0x200] - ldr r0, [sp] - str r2, [r0, #0x204] - ldr r0, [sp] - str r2, [r0, #0x1fc] - ldr r0, [sp] - ldr r0, [r0, #0x1f8] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x1f8] - ldr r0, [sp] - str r1, [r0, #0x1f8] - ldr r0, [sp] - str r1, [r0, #0x20c] - ldr r0, [sp] - ldr r0, [r0, #0x208] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x208] - ldr r0, [sp] - str r1, [r0, #0x208] - ldr r0, [sp] - str r1, [r0, #0x218] - ldr r0, [sp] - str r1, [r0, #0x21c] - ldr r0, [sp] - str r1, [r0, #0x214] - ldr r0, [sp] - ldr r0, [r0, #0x210] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x210] - ldr r0, [sp] - str r1, [r0, #0x210] - ldr r0, [sp] - str r1, [r0, #0x5e8] - ldr r0, [sp] - str r1, [r0, #0x5ec] - ldr r0, [sp] - str r1, [r0, #0x5e4] - ldr r0, [sp] - ldr r0, [r0, #0x5e0] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x5e0] - ldr r0, [sp] - str r1, [r0, #0x5e0] - ldr r0, [sp] - str r1, [r0, #0x5f8] - ldr r0, [sp] - str r1, [r0, #0x5fc] - ldr r0, [sp] - str r1, [r0, #0x5f4] - ldr r0, [sp] - ldr r0, [r0, #0x5f0] - bl gsifree - ldr r0, [sp] - mov r2, #0 - str r2, [r0, #0x5f0] - ldr r1, [sp] - mov r0, r4 - str r2, [r1, #0x5f0] - bl GpiStatusInfoKeysDestroy - add r0, sp, #0 - bl GpiStatusInfoKeysInit - movs r5, r0 - beq _022FFF7C - add r0, sp, #0 - bl GpiDestroy - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_022FFF7C: - ldr r0, [sp] - mov r1, #2 - str r1, [r0, #0x234] - ldr r0, [sp] - ldr r1, [r0, #0x5c4] - cmp r1, #0 - beq _022FFFB0 -_022FFF98: - mov r0, r4 - bl GpiRemoveOperation - ldr r0, [sp] - ldr r1, [r0, #0x5c4] - cmp r1, #0 - bne _022FFF98 -_022FFFB0: - mov r2, #0 - str r2, [r0, #0x5c4] - ldr r3, [sp] - ldr r1, _02300028 ; =GpiResetProfile - mov r0, r4 - str r2, [r3, #0x5d0] - bl GpiProfileMap - mov r0, #0 - ldr r1, [sp] - sub r2, r0, #1 - str r0, [r1, #0x19c] - ldr r1, [sp] - str r0, [r1, #0x1a0] - ldr r1, [sp] - str r0, [r1, #0x198] - ldr r1, [sp] - str r0, [r1, #0x238] - ldr r1, [sp] - str r0, [r1, #0x5bc] - ldr r1, [sp] - str r0, [r1, #0x5d4] - ldr r1, [sp] - str r2, [r1, #0x23c] - ldr r1, [sp] - strb r0, [r1, #0x3b8] - ldr r1, [sp] - strb r0, [r1, #0x4b8] - ldr r1, [sp] - str r0, [r1, #0x630] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02300028: .word GpiResetProfile - arm_func_end GpiReset - - arm_func_start GpiProcessConnectionManager -GpiProcessConnectionManager: ; 0x0230002C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r1, #0 - mov r4, r0 - str r1, [sp, #8] - ldr r8, [r4] - bl current_time_gsi - mov sb, r0 -_0230004C: - mov r0, r4 - add r1, r8, #0x210 - bl GpiAddLocalInfo - ldr r0, [r8, #0x218] - mov r1, #1 - cmp r0, #0 - strgt sb, [r8, #0x630] - ldr r0, _02300384 ; =ov00_0231AD34 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r8, #0x1f0] - add r3, sp, #8 - mov r0, r4 - add r2, r8, #0x210 - bl GpiSendFromBuffer - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #8 - ldr r0, _02300384 ; =ov00_0231AD34 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r8, #0x1f0] - add r3, sp, #0xc - mov r0, r4 - add r2, r8, #0x1f8 - bl GpiRecvToBuffer - cmp r0, #0 - beq _023000F8 - cmp r0, #3 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, _02300388 ; =ov00_0231AD38 - mov r0, r4 - mov r1, #5 - bl GpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023000F8: - ldr r0, [r8, #0x1f8] - ldr r1, _0230038C ; =ov00_0231AD64 - bl strstr - movs sl, r0 - beq ov00_023002F0 - ldr fp, _02300390 ; =ov00_0231AD7C - ldr r5, _02300394 ; =ov00_0231AD94 - mov r6, #0x800 - mov r7, #0 -_0230011C: - str sb, [r8, #0x630] - strb r7, [sl] - ldr r0, [r8, #0x1f8] - sub r1, sl, r0 - str r1, [sp, #0xc] - ldr r0, [r8, #0x20c] - cmp r1, r0 - ble _02300180 - ldr r0, [r8, #0x20c] - cmp r1, #0x800 - movlt r1, r6 - add r0, r0, r1 - str r0, [r8, #0x20c] - add r1, r0, #1 - ldr r0, [r8, #0x208] - bl gsirealloc - cmp r0, #0 - bne _0230017C - ldr r1, _02300398 ; =ov00_0231AD6C - mov r0, r4 - bl GpiSetErrorString - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230017C: - str r0, [r8, #0x208] -_02300180: - ldr r2, [sp, #0xc] - ldr r0, [r8, #0x208] - ldr r1, [r8, #0x1f8] - add r2, r2, #1 - bl memcpy - ldr r0, [r8, #0x1f8] - add r1, sl, #7 - ldr r2, [r8, #0x200] - sub r0, r1, r0 - sub r0, r2, r0 - str r0, [r8, #0x200] - add r2, r0, #1 - ldr r0, [r8, #0x1f8] - bl memmove - ldr sl, [r8, #0x208] - mov r1, fp - mov r0, sl - bl strstr - cmp r0, #0 - beq _02300210 - add r0, r0, #4 - bl atoi - mov r2, r0 - mov r0, r4 - add r1, sp, #0x10 - bl GpiFindOperationByID - cmp r0, #0 - beq _023002DC - mov r0, r4 - ldr r1, [sp, #0x10] - ldr r2, [r8, #0x208] - bl GpiProcessOperation - cmp r0, #0 - beq _023002DC - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300210: - mov r1, sl - mov r0, r4 - mov r2, #1 - bl GpiCheckForError - cmp r0, #0 - addne sp, sp, #0x14 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr sl, [r8, #0x208] - ldr r1, _0230039C ; =ov00_0231AD84 - mov r0, sl - mov r2, #4 - bl strncmp - cmp r0, #0 - bne _02300268 - mov r1, sl - mov r0, r4 - bl GpiProcessRecvBuddyMessage - cmp r0, #0 - beq _023002DC - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300268: - ldr r1, _023003A0 ; =ov00_0231AD8C - mov r0, sl - mov r2, #4 - bl strncmp - cmp r0, #0 - beq _023002DC - mov r0, sl - mov r1, r5 - mov r2, #4 - bl strncmp - cmp r0, #0 - mov r0, sl - bne _023002B0 - mov r1, r5 - add r2, r8, #0x610 - mov r3, #0x19 - bl GpiValueForKey - b _023002DC -_023002B0: - ldr r1, _023003A4 ; =ov00_0231AD9C - mov r2, #5 - bl strncmp - cmp r0, #0 - bne _023002DC - mov r1, sl - mov r0, r4 - bl GpiProcessRecvBuddyStatusInfo - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023002DC: - ldr r0, [r8, #0x1f8] - ldr r1, _0230038C ; =ov00_0231AD64 - bl strstr - movs sl, r0 - bne _0230011C - arm_func_end GpiProcessConnectionManager - - arm_func_start ov00_023002F0 -ov00_023002F0: ; 023002F0 - ldr r0, [sp, #8] - cmp r0, #0 - ldrne r0, [r8, #0x1f4] - cmpne r0, #5 - beq _02300330 - ldr r2, _023003A8 ; =ov00_0231ADA4 - mov r0, r4 - mov r1, #7 - bl GpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300330: - mov r0, r4 - bl GpiOperationsAreBlocking - movs r5, r0 - beq _02300348 - mov r0, #0xa - bl msleep_gsi -_02300348: - cmp r5, #0 - bne _0230004C - ldr r1, [r8, #0x630] - ldr r0, _023003AC ; =0x0001D4C0 - sub r1, sb, r1 - cmp r1, r0 - bls _02300378 - ldr r2, _023003B0 ; =ov00_0231ADCC - mov r0, r4 - add r1, r8, #0x210 - bl GpiAppendStringToBuffer - str sb, [r8, #0x630] -_02300378: - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02300384: .word ov00_0231AD34 -_02300388: .word ov00_0231AD38 -_0230038C: .word ov00_0231AD64 -_02300390: .word ov00_0231AD7C -_02300394: .word ov00_0231AD94 -_02300398: .word ov00_0231AD6C -_0230039C: .word ov00_0231AD84 -_023003A0: .word ov00_0231AD8C -_023003A4: .word ov00_0231AD9C -_023003A8: .word ov00_0231ADA4 -_023003AC: .word 0x0001D4C0 -_023003B0: .word ov00_0231ADCC - arm_func_end ov00_023002F0 - - arm_func_start GpiProcess -GpiProcess: ; 0x023003B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r6, [sl] - mov sb, r1 - ldr r0, [r6, #0x1f4] - mov r7, #0 - cmp r0, #1 - bne _0230044C - mov r4, r7 - mov r5, #1 - mov fp, #0xa -_023003E0: - mov r0, sl - bl GpiCheckConnect - movs r7, r0 - bne _02300408 - cmp sb, #0 - beq _02300408 - ldr r0, [r6, #0x1f4] - cmp r0, #1 - moveq r8, r5 - beq _0230040C -_02300408: - mov r8, r4 -_0230040C: - cmp r8, #0 - beq _0230041C - mov r0, fp - bl msleep_gsi -_0230041C: - cmp r8, #0 - bne _023003E0 - cmp r7, #0 - beq _0230044C - add r1, sp, #0 - mov r0, sl - mov r2, #1 - bl GpiFindOperationByID - cmp r0, #0 - ldrne r0, [sp] - movne r1, #4 - strne r1, [r0, #0x1c] -_0230044C: - ldr r0, [r6, #0x1f4] - cmp r0, #3 - cmpne r0, #2 - cmpne r0, #5 - bne _02300488 - cmp r7, #0 - bne _02300474 - mov r0, sl - bl GpiProcessConnectionManager - mov r7, r0 -_02300474: - cmp r7, #0 - bne _02300488 - mov r0, sl - bl GpiProcessPeers - mov r7, r0 -_02300488: - cmp r7, #0 - bne _0230049C - mov r0, sl - bl GpiProcessSearches - mov r7, r0 -_0230049C: - ldr r1, [r6, #0x5c4] - str r1, [sp] - cmp r1, #0 - beq _023004E8 -_023004AC: - ldr r0, [r1, #0x1c] - cmp r0, #0 - ldreq r0, [r1, #0x20] - streq r0, [sp] - beq _023004DC - mov r0, sl - bl GpiFailedOpCallback - ldr r1, [sp] - mov r0, sl - ldr r2, [r1, #0x20] - str r2, [sp] - bl GpiRemoveOperation -_023004DC: - ldr r1, [sp] - cmp r1, #0 - bne _023004AC -_023004E8: - mov r0, sl - mov r1, sb - bl GpiProcessCallbacks - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r6, #0x5bc] - cmp r0, #0 - beq _0230051C - mov r0, sl - mov r1, #0 - bl GpiDisconnect - mov r0, sl - bl GpiReset -_0230051C: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GpiProcess - - arm_func_start GpiSendAuthBuddyRequest -GpiSendAuthBuddyRequest: ; 0x02300524 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6] - ldr r2, _023005B8 ; =ov00_0231ADD8 - mov r5, r1 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _023005BC ; =ov00_0231ADE4 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _023005C0 ; =ov00_0231ADF0 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, [r5] - bl GpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _023005C4 ; =ov00_0231AE00 - bl GpiAppendStringToBuffer - ldr r2, [r5, #0x14] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _023005C8 ; =ov00_0231AE08 - bl GpiAppendStringToBuffer - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023005B8: .word ov00_0231ADD8 -_023005BC: .word ov00_0231ADE4 -_023005C0: .word ov00_0231ADF0 -_023005C4: .word ov00_0231AE00 -_023005C8: .word ov00_0231AE08 - arm_func_end GpiSendAuthBuddyRequest - - arm_func_start GpiProcessRecvBuddyMessage -GpiProcessRecvBuddyMessage: ; 0x023005CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x150 - sub sp, sp, #0x1000 - mov r7, r1 - mov r6, r0 - ldr r1, _023011B8 ; =ov00_0231AE10 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - ldr r4, [r6] - bl GpiValueForKey - cmp r0, #0 - bne _02300630 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300630: - add r0, sp, #0x150 - bl atoi - mov r8, r0 - ldr r1, _023011C0 ; =ov00_0231AE48 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - bne _02300688 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300688: - add r0, sp, #0x150 - bl atoi - mov sb, r0 - ldr r1, _023011C4 ; =ov00_0231AE4C - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - beq _023006BC - add r0, sp, #0x150 - bl atoi - b _023006C4 -_023006BC: - mov r0, #0 - bl time_gsi -_023006C4: - mov r5, r0 - cmp r8, #0x64 - bgt _023006FC - bge _02300BFC - cmp r8, #6 - addls pc, pc, r8, lsl #2 - b _023011A8 -_023006E0: ; jump table - b _023011A8 ; case 0 - b _02300718 ; case 1 - b _02300938 ; case 2 - b _023011A8 ; case 3 - b _02300AFC ; case 4 - b _02300828 ; case 5 - b _02300B7C ; case 6 -_023006FC: - cmp r8, #0x65 - bgt _0230070C - beq _02300FAC - b _023011A8 -_0230070C: - cmp r8, #0x66 - beq _0230113C - b _023011A8 -_02300718: - ldr r1, [r4, #0x1c0] - ldr r0, [r4, #0x1c4] - str r1, [sp, #0x38] - str r0, [sp, #0x3c] - cmp r1, #0 - beq _023011A8 - mov r0, #0xc - bl gsimalloc - movs r4, r0 - bne _0230075C - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230075C: - ldr r1, _023011CC ; =ov00_0231AE64 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - bne _023007A8 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023007A8: - add r0, sp, #0x150 - bl strlen - add r0, r0, #1 - bl gsimalloc - str r0, [r4, #8] - cmp r0, #0 - bne _023007E0 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023007E0: - add r1, sp, #0x150 - bl strcpy - str sb, [r4] - str r5, [r4, #4] - mov r2, #0 - str r2, [sp] - mov r2, #2 - add r1, sp, #0x38 - str r2, [sp, #4] - mov r0, r6 - mov r3, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300828: - ldr r1, [r4, #0x1c8] - ldr r0, [r4, #0x1cc] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _023011A8 - mov r0, #0xc - bl gsimalloc - movs r4, r0 - bne _0230086C - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230086C: - ldr r1, _023011CC ; =ov00_0231AE64 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - bne _023008B8 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023008B8: - add r0, sp, #0x150 - bl strlen - add r0, r0, #1 - bl gsimalloc - str r0, [r4, #8] - cmp r0, #0 - bne _023008F0 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023008F0: - add r1, sp, #0x150 - bl strcpy - str sb, [r4] - str r5, [r4, #4] - mov r2, #0 - str r2, [sp] - mov r2, #0xb - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r6 - mov r3, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300938: - mov r0, r6 - mov r1, sb - bl GpiProfileListAdd - movs r8, r0 - bne _02300968 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300968: - ldr r1, _023011CC ; =ov00_0231AE64 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - bne _023009B4 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023009B4: - ldr r1, _023011D0 ; =ov00_0231AE6C - add r0, sp, #0x150 - bl strstr - movs r7, r0 - bne _023009F8 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023009F8: - mov r1, #0 - add r0, r7, #8 - strb r1, [r7] - bl strlen - cmp r0, #0x20 - beq _02300A40 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300A40: - ldr r0, [r8, #0x14] - bl gsifree - mov r0, #0 - str r0, [r8, #0x14] - add r0, r7, #8 - bl goastrdup - str r0, [r8, #0x14] - ldr r0, [r8, #0x18] - add r0, r0, #1 - str r0, [r8, #0x18] - ldr r1, [r4, #0x1b0] - ldr r0, [r4, #0x1b4] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - cmp r1, #0 - beq _023011A8 - ldr r0, _023011D4 ; =0x0000040C - bl gsimalloc - movs r4, r0 - bne _02300AAC - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300AAC: - ldr r2, _023011D8 ; =0x00000401 - add r1, sp, #0x150 - add r0, r4, #8 - bl strzcpy_gsi - str sb, [r4] - str r5, [r4, #4] - mov r2, #0 - str r2, [sp] - mov r2, #6 - add r1, sp, #0x10 - str r2, [sp, #4] - mov r0, r6 - mov r3, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300AFC: - ldr r1, [r4, #0x1e0] - ldr r0, [r4, #0x1e4] - str r1, [sp, #0x18] - str r0, [sp, #0x1c] - cmp r1, #0 - beq _023011A8 - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _02300B40 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300B40: - str sb, [r3] - str r5, [r3, #4] - mov r2, #0 - str r2, [sp] - mov r2, #0xa - add r1, sp, #0x18 - str r2, [sp, #4] - mov r0, r6 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300B7C: - ldr r1, [r4, #0x1e8] - ldr r0, [r4, #0x1ec] - str r1, [sp, #0x20] - str r0, [sp, #0x24] - cmp r1, #0 - beq _023011A8 - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _02300BC0 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300BC0: - str sb, [r3] - str r5, [r3, #4] - mov r2, #0 - str r2, [sp] - mov r2, #0xc - add r1, sp, #0x20 - str r2, [sp, #4] - mov r0, r6 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300BFC: - mov r0, r6 - mov r1, sb - bl GpiProfileListAdd - movs r8, r0 - bne _02300C2C - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300C2C: - ldr r0, [r8, #8] - cmp r0, #0 - bne _02300CCC - mov r0, #0x1c - bl gsimalloc - str r0, [r8, #8] - cmp r0, #0 - bne _02300C68 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300C68: - mov r2, #7 - mov r1, #0 -_02300C70: - strb r1, [r0] - strb r1, [r0, #1] - strb r1, [r0, #2] - strb r1, [r0, #3] - add r0, r0, #4 - subs r2, r2, #1 - bne _02300C70 - ldr r0, [r8, #0xc] - cmp r0, #0 - beq _02300CB8 - ldr r1, [r0] - ldr r0, [r8, #8] - str r1, [r0] - ldr r0, [r8, #0xc] - bl GpiRemoveBuddyStatusInfo - mov r0, #0 - str r0, [r8, #0xc] - b _02300CCC -_02300CB8: - ldr r1, [r4, #0x5d0] - add r0, r1, #1 - str r0, [r4, #0x5d0] - ldr r0, [r8, #8] - str r1, [r0] -_02300CCC: - ldr r1, _023011CC ; =ov00_0231AE64 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - ldr sl, [r8, #8] - bl GpiValueForKey - cmp r0, #0 - bne _02300D1C - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300D1C: - ldr r1, _023011DC ; =ov00_0231AE78 - add r0, sp, #0x150 - add r2, sp, #0x40 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - bne _02300D68 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300D68: - add r0, sp, #0x40 - bl atoi - str r0, [sl, #4] - ldr r0, [sl, #8] - bl gsifree - mov r0, #0 - str r0, [sl, #8] - ldr r1, _023011E0 ; =ov00_0231AE7C - add r0, sp, #0x150 - add r2, sp, #0x50 - mov r3, #0x100 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x50] - add r0, sp, #0x50 - bl goastrdup - str r0, [sl, #8] - cmp r0, #0 - bne _02300DD4 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300DD4: - ldr r0, [sl, #0xc] - bl gsifree - mov r7, #0 - ldr r1, _023011E4 ; =ov00_0231AE84 - add r0, sp, #0x150 - add r2, sp, #0x50 - mov r3, #0x100 - str r7, [sl, #0xc] - bl GpiValueForKey - cmp r0, #0 - moveq r0, r7 - streqb r0, [sp, #0x50] - add r0, sp, #0x50 - bl goastrdup - str r0, [sl, #0xc] - cmp r0, #0 - bne _02300E34 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300E34: - ldr r1, _023011E8 ; =ov00_0231AE8C - add r0, sp, #0x150 - add r2, sp, #0x40 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - beq _02300EAC - add r0, sp, #0x40 - bl atoi - mov r8, r0 - add r0, sp, #0x40 - bl atoi - mov fp, r0 - add r0, sp, #0x40 - bl atoi - mov r7, r0 - add r0, sp, #0x40 - bl atoi - mov r1, r7, lsr #0x18 - mov r0, r0, lsr #8 - mov r2, fp, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r8, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r0, r1, r0 -_02300EAC: - ldr r1, _023011EC ; =ov00_0231AE94 - str r0, [sl, #0x10] - add r0, sp, #0x150 - add r2, sp, #0x40 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - beq _02300EF4 - add r0, sp, #0x40 - bl atoi - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 -_02300EF4: - ldr r1, _023011F0 ; =ov00_0231AE98 - strh r0, [sl, #0x14] - add r0, sp, #0x150 - add r2, sp, #0x40 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - beq _02300F20 - add r0, sp, #0x40 - bl atoi -_02300F20: - str r0, [sl, #0x18] - ldr r1, [r4, #0x1b8] - ldr r0, [r4, #0x1bc] - str r1, [sp, #0x28] - str r0, [sp, #0x2c] - cmp r1, #0 - beq _023011A8 - mov r0, #0xc - bl gsimalloc - movs r3, r0 - bne _02300F68 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300F68: - str sb, [r3] - ldr r0, [sl] - mov r2, #0 - str r0, [r3, #8] - str r5, [r3, #4] - str r2, [sp] - mov r2, #5 - add r1, sp, #0x28 - str r2, [sp, #4] - mov r0, r6 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300FAC: - ldr r1, _023011CC ; =ov00_0231AE64 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - bne _02300FF8 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02300FF8: - ldr r1, _023011EC ; =ov00_0231AE94 - add r0, sp, #0x150 - bl strstr - cmp r0, #0 - bne _0230103C - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230103C: - ldrsb r1, [r0, #3] - cmp r1, #0 - bne _02301078 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301078: - add r0, r0, #3 - bl atoi - mov r5, r0 - ldr r1, _023011F4 ; =ov00_0231AEA0 - add r0, sp, #0x150 - bl strstr - movs r1, r0 - moveq r0, #0 - streqb r0, [sp, #0x50] - beq _023010B0 - add r0, sp, #0x50 - add r1, r1, #3 - mov r2, #0x100 - bl strzcpy_gsi -_023010B0: - ldr r1, [r4, #0x1d0] - ldr r0, [r4, #0x1d4] - str r1, [sp, #0x30] - str r0, [sp, #0x34] - cmp r1, #0 - beq _023011A8 - mov r0, #0x108 - bl gsimalloc - movs r4, r0 - bne _023010F4 - ldr r1, _023011C8 ; =ov00_0231AE54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023010F4: - str sb, [r4] - add r1, sp, #0x50 - add r0, r4, #8 - str r5, [r4, #4] - bl strcpy - mov r2, #0 - str r2, [sp] - add r1, sp, #0x30 - str r2, [sp, #4] - mov r0, r6 - mov r3, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _023011A8 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230113C: - ldr r1, _023011CC ; =ov00_0231AE64 - add r2, sp, #0x150 - mov r0, r7 - mov r3, #0x1000 - bl GpiValueForKey - cmp r0, #0 - bne _02301188 - ldr r2, _023011BC ; =ov00_0231AE18 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x150 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301188: - mov r4, #0 - str r4, [sp] - ldr r3, _023011F8 ; =ov00_0231AEA4 - mov r0, r6 - mov r1, sb - mov r2, #0x67 - str r4, [sp, #4] - bl GpiSendBuddyMessage -_023011A8: - mov r0, #0 - add sp, sp, #0x150 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023011B8: .word ov00_0231AE10 -_023011BC: .word ov00_0231AE18 -_023011C0: .word ov00_0231AE48 -_023011C4: .word ov00_0231AE4C -_023011C8: .word ov00_0231AE54 -_023011CC: .word ov00_0231AE64 -_023011D0: .word ov00_0231AE6C -_023011D4: .word 0x0000040C -_023011D8: .word 0x00000401 -_023011DC: .word ov00_0231AE78 -_023011E0: .word ov00_0231AE7C -_023011E4: .word ov00_0231AE84 -_023011E8: .word ov00_0231AE8C -_023011EC: .word ov00_0231AE94 -_023011F0: .word ov00_0231AE98 -_023011F4: .word ov00_0231AEA0 -_023011F8: .word ov00_0231AEA4 - arm_func_end GpiProcessRecvBuddyMessage - - arm_func_start GpiProcessRecvBuddyStatusInfo -GpiProcessRecvBuddyStatusInfo: ; 0x023011FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - sub sp, sp, #0x400 - mov r7, r0 - mov r0, #0 - mov r6, r1 - ldr r4, [r7] - bl time_gsi - mov fp, r0 - ldr r1, _02301A08 ; =ov00_0231AEA8 - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _0230126C - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230126C: - add r0, sp, #0x14 - bl atoi - str r0, [sp, #8] - ldr r1, [sp, #8] - mov r0, r7 - bl GpiProfileListAdd - movs r8, r0 - bne _023012A8 - ldr r1, _02301A10 ; =ov00_0231AE54 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023012A8: - ldr r5, [r8, #0xc] - cmp r5, #0 - bne _02301374 - mov r0, #0x3c - bl gsimalloc - str r0, [r8, #0xc] - cmp r0, #0 - bne _023012E4 - ldr r1, _02301A10 ; =ov00_0231AE54 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023012E4: - mov r1, #0 - mov r2, #0x3c - bl memset - ldr r0, [r8, #8] - cmp r0, #0 - beq _0230131C - ldr r1, [r0] - ldr r0, [r8, #0xc] - str r1, [r0] - ldr r0, [r8, #8] - bl GpiRemoveBuddyStatus - mov r0, #0 - str r0, [r8, #8] - b _02301330 -_0230131C: - ldr r1, [r4, #0x5d0] - add r0, r1, #1 - str r0, [r4, #0x5d0] - ldr r0, [r8, #0xc] - str r1, [r0] -_02301330: - ldr r2, _02301A14 ; =GpiStatusInfoKeyFree - mov r0, #8 - mov r1, #1 - bl ArrayNew_Gsi - ldr r1, [r8, #0xc] - str r0, [r1, #0x38] - ldr r5, [r8, #0xc] - ldr r0, [r5, #0x38] - cmp r0, #0 - bne _02301374 - ldr r1, _02301A10 ; =ov00_0231AE54 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301374: - ldr r1, _02301A18 ; =ov00_0231AEB4 - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _023013C0 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023013C0: - add r0, sp, #0x14 - bl atoi - str r0, [r5, #4] - ldr r1, _02301A1C ; =ov00_0231AEBC - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301418 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301418: - add r0, sp, #0x14 - bl atoi - mov sl, r0 - add r0, sp, #0x14 - bl atoi - mov sb, r0 - add r0, sp, #0x14 - bl atoi - mov r8, r0 - add r0, sp, #0x14 - bl atoi - mov r1, sl, lsl #0x18 - mov r3, r8, lsr #0x18 - mov r0, r0, lsr #8 - and r2, r1, #0xff000000 - mov r1, sb, lsl #8 - and r3, r3, #0xff - and r0, r0, #0xff00 - orr r0, r3, r0 - and r1, r1, #0xff0000 - orr r0, r1, r0 - orr r0, r2, r0 - str r0, [r5, #0x1c] - ldr r1, _02301A20 ; =ov00_0231AEC4 - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _023014C0 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023014C0: - add r0, sp, #0x14 - bl atoi - strh r0, [r5, #0x20] - ldr r1, _02301A24 ; =ov00_0231AECC - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301518 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301518: - add r0, sp, #0x14 - bl atoi - mov sl, r0 - add r0, sp, #0x14 - bl atoi - mov sb, r0 - add r0, sp, #0x14 - bl atoi - mov r8, r0 - add r0, sp, #0x14 - bl atoi - mov r1, sl, lsl #0x18 - mov r3, r8, lsr #0x18 - mov r0, r0, lsr #8 - and r2, r1, #0xff000000 - mov r1, sb, lsl #8 - and r3, r3, #0xff - and r0, r0, #0xff00 - orr r0, r3, r0 - and r1, r1, #0xff0000 - orr r0, r1, r0 - orr r0, r2, r0 - str r0, [r5, #0x24] - ldr r1, _02301A28 ; =ov00_0231AED8 - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _023015C0 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023015C0: - add r0, sp, #0x14 - bl atoi - mov sl, r0 - add r0, sp, #0x14 - bl atoi - mov sb, r0 - add r0, sp, #0x14 - bl atoi - mov r8, r0 - add r0, sp, #0x14 - bl atoi - mov r1, sl, lsl #0x18 - mov r3, r8, lsr #0x18 - mov r0, r0, lsr #8 - and r2, r1, #0xff000000 - mov r1, sb, lsl #8 - and r3, r3, #0xff - and r0, r0, #0xff00 - orr r0, r3, r0 - and r1, r1, #0xff0000 - orr r0, r1, r0 - orr r0, r2, r0 - str r0, [r5, #0x28] - ldr r1, _02301A2C ; =ov00_0231AEE4 - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301668 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301668: - add r0, sp, #0x14 - bl atoi - strh r0, [r5, #0x2c] - ldr r1, _02301A30 ; =ov00_0231AEEC - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _023016C0 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023016C0: - add r0, sp, #0x14 - bl atoi - strh r0, [r5, #0x2e] - ldr r1, _02301A34 ; =ov00_0231AEF4 - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301718 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301718: - add r0, sp, #0x14 - bl atoi - str r0, [r5, #0x18] - ldr r0, [r5, #8] - bl gsifree - mov r0, #0 - str r0, [r5, #8] - ldr r1, _02301A38 ; =ov00_0231AF00 - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301780 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301780: - add r0, sp, #0x14 - bl goastrdup - str r0, [r5, #8] - ldr r0, [r5, #0xc] - bl gsifree - mov r0, #0 - str r0, [r5, #0xc] - ldr r1, _02301A3C ; =ov00_0231AF0C - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _023017E8 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023017E8: - add r0, sp, #0x14 - bl goastrdup - str r0, [r5, #0xc] - ldr r0, [r5, #0x10] - bl gsifree - mov r0, #0 - str r0, [r5, #0x10] - ldr r1, _02301A40 ; =ov00_0231AF18 - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301850 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301850: - add r0, sp, #0x14 - bl goastrdup - str r0, [r5, #0x10] - ldr r0, [r5, #0x14] - bl gsifree - mov r0, #0 - str r0, [r5, #0x14] - ldr r1, _02301A44 ; =ov00_0231AF24 - mov r0, r6 - add r2, sp, #0x14 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _023018B8 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023018B8: - add r0, sp, #0x14 - bl goastrdup - str r0, [r5, #0x14] - ldr r1, _02301A48 ; =ov00_0231AF30 - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301910 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301910: - add r0, sp, #0x14 - bl atoi - str r0, [r5, #0x34] - ldr r1, _02301A4C ; =ov00_0231AF3C - add r2, sp, #0x14 - mov r0, r6 - mov r3, #0x400 - bl GpiValueForKey - cmp r0, #0 - bne _02301968 - ldr r2, _02301A0C ; =ov00_0231AE18 - mov r0, r7 - mov r1, #1 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301968: - add r0, sp, #0x14 - bl atoi - str r0, [r5, #0x30] - ldr r1, [r4, #0x1b8] - ldr r0, [r4, #0x1bc] - str r1, [sp, #0xc] - str r0, [sp, #0x10] - cmp r1, #0 - beq _023019F8 - mov r0, #0xc - bl gsimalloc - movs r3, r0 - bne _023019B8 - ldr r1, _02301A10 ; =ov00_0231AE54 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023019B8: - str fp, [r3, #4] - ldr r0, [r5] - mov r2, #0 - str r0, [r3, #8] - ldr r0, [sp, #8] - add r1, sp, #0xc - str r0, [r3] - str r2, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x14 - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023019F8: - mov r0, #0 - add sp, sp, #0x14 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02301A08: .word ov00_0231AEA8 -_02301A0C: .word ov00_0231AE18 -_02301A10: .word ov00_0231AE54 -_02301A14: .word GpiStatusInfoKeyFree -_02301A18: .word ov00_0231AEB4 -_02301A1C: .word ov00_0231AEBC -_02301A20: .word ov00_0231AEC4 -_02301A24: .word ov00_0231AECC -_02301A28: .word ov00_0231AED8 -_02301A2C: .word ov00_0231AEE4 -_02301A30: .word ov00_0231AEEC -_02301A34: .word ov00_0231AEF4 -_02301A38: .word ov00_0231AF00 -_02301A3C: .word ov00_0231AF0C -_02301A40: .word ov00_0231AF18 -_02301A44: .word ov00_0231AF24 -_02301A48: .word ov00_0231AF30 -_02301A4C: .word ov00_0231AF3C - arm_func_end GpiProcessRecvBuddyStatusInfo - - arm_func_start GpiSendServerBuddyMessage -GpiSendServerBuddyMessage: ; 0x02301A50 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xdb0 - mov r7, r0 - mov r5, r2 - mov r6, r1 - ldr r2, _02301B14 ; =0x00000DAD - add r0, sp, #0 - mov r1, r3 - ldr r4, [r7] - bl strzcpy_gsi - ldr r2, _02301B18 ; =ov00_0231AE10 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r7 - mov r2, r5 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02301B1C ; =ov00_0231ADE4 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02301B20 ; =ov00_0231AF4C - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r2, r6 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02301B24 ; =ov00_0231AE64 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r4, #0x210 - add r2, sp, #0 - bl GpiAppendStringToBuffer - ldr r2, _02301B28 ; =ov00_0231AE08 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0xdb0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02301B14: .word 0x00000DAD -_02301B18: .word ov00_0231AE10 -_02301B1C: .word ov00_0231ADE4 -_02301B20: .word ov00_0231AF4C -_02301B24: .word ov00_0231AE64 -_02301B28: .word ov00_0231AE08 - arm_func_end GpiSendServerBuddyMessage - - arm_func_start GpiSendBuddyMessage -GpiSendBuddyMessage: ; 0x02301B2C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GpiGetPeerByProfile - movs r4, r0 - bne _02301C0C - add r2, sp, #0 - mov r0, r8 - mov r1, r7 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #0xc] - cmpne r0, #0 - ldrneh r0, [r0, #0x20] - cmpne r0, #0 - bne _02301BAC - ldr r0, [sp, #0x20] - cmp r0, #0xb00 - addeq sp, sp, #4 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl GpiSendServerBuddyMessage - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02301BAC: - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl GpiAddPeer - movs r4, r0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [sp] - mov r1, r4 - ldr r0, [r0, #0x1c] - cmp r0, #0 - mov r0, r8 - bne _02301BF8 - bl GpiPeerGetSig - cmp r0, #0 - beq _02301C7C - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02301BF8: - bl GpiPeerStartConnect - cmp r0, #0 - beq _02301C7C - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02301C0C: - ldr r0, [r4] - cmp r0, #0x6a - bne _02301C7C - add r2, sp, #0 - mov r0, r8 - mov r1, r7 - bl GpiGetProfile - cmp r0, #0 - beq _02301C7C - ldr r0, [sp] - ldr r1, [r0, #0xc] - cmp r1, #0 - movne r0, #0 - strneh r0, [r1, #0x20] - ldr r0, [sp, #0x20] - cmp r0, #0xb00 - addeq sp, sp, #4 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - cmp r6, #0x64 - bge _02301C7C - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl GpiSendServerBuddyMessage - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02301C7C: - ldr r1, [sp, #0x24] - cmp r1, #0 - beq _02301C90 - mov r0, r4 - bl GpiPeerAddOp -_02301C90: - mov r0, r8 - mov r1, r4 - mov r2, r6 - mov r3, r5 - bl GpiPeerAddMessage - cmp r0, #0 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end GpiSendBuddyMessage - - arm_func_start GpiBuddyHandleKeyRequest -GpiBuddyHandleKeyRequest: ; 0x02301CB4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r1 - add r1, sp, #8 - mov r5, r0 - bl GpiSaveKeysToBuffer - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r0, [sp, #8] - mov r2, #0x69 - cmp r0, #0 - ldreq r0, _02301D4C ; =ov00_0231AF50 - streq r0, [sp, #8] - mov r0, #0xb00 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r1, [r4, #0x10] - ldr r3, [sp, #8] - mov r0, r5 - bl GpiSendBuddyMessage - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r4, [sp, #8] - ldr r1, _02301D4C ; =ov00_0231AF50 - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _02301D40 - mov r0, r4 - bl gsifree - mov r0, #0 - str r0, [sp, #8] -_02301D40: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02301D4C: .word ov00_0231AF50 - arm_func_end GpiBuddyHandleKeyRequest - - arm_func_start GpiBuddyHandleKeyReply -GpiBuddyHandleKeyReply: ; 0x02301D50 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3c - sub sp, sp, #0x800 - str r1, [sp, #8] - str r2, [sp, #0xc] - ldr r1, [r1, #0x10] - add r2, sp, #0x38 - mov sl, r0 - bl GpiGetProfile - cmp r0, #0 - bne _02301D98 - ldr r1, _02302190 ; =ov00_0231AF54 - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0x3c - add sp, sp, #0x800 - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301D98: - ldr r1, _02302194 ; =ov00_0231AF50 - ldr r0, [sp, #0xc] - bl strcmp - cmp r0, #0 - bne _02301E58 - ldr r0, [sp, #8] - ldr r4, [r0, #0x44] - cmp r4, #0 - beq _02301DD0 -_02301DBC: - ldr r0, [r4, #0x10] - cmp r0, #0x68 - ldrne r4, [r4, #0xc] - cmpne r4, #0 - bne _02301DBC -_02301DD0: - cmp r4, #0 - addeq sp, sp, #0x3c - addeq sp, sp, #0x800 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - cmp r0, #0x68 - bne _02302180 - ldr r0, [r4, #8] - cmp r0, #0 - beq _02302180 - mov r0, #0x10 - bl gsimalloc - ldmib r4, {r5, r6} - mov r3, r0 - mov r2, #0 - str r2, [r3, #4] - str r2, [r3, #0xc] - ldr r0, [sp, #8] - str r2, [r3, #8] - ldr r0, [r0, #0x10] - add r1, sp, #0x30 - str r0, [r3] - str r2, [sp] - mov r0, sl - str r6, [sp, #0x30] - str r5, [sp, #0x34] - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl GpiAddCallback - ldr r0, [sp, #8] - mov r1, r4 - bl GpiPeerRemoveOp - b _02302180 -_02301E58: - mov r5, #0 - add r4, sp, #0x400 - add r3, sp, #0x600 - ldr r1, [sp, #0xc] - add r4, r4, #0x3c - add r2, sp, #0x28 - add r3, r3, #0x3c - mov r0, sl - str r5, [sp, #0x2c] - str r5, [sp, #0x28] - str r5, [sp, #0x24] - str r4, [sp] - bl GpiReadKeyAndValue - add r0, sp, #0x600 - ldr r1, _02302198 ; =ov00_0231AF68 - add r0, r0, #0x3c - bl strcmp - cmp r0, #0 - beq _02301ED4 - ldr r2, _0230219C ; =ov00_0231AF70 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, r5 - bl GpiCallErrorCallback - add sp, sp, #0x3c - add sp, sp, #0x800 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301ED4: - mov r0, r4 - bl atoi - movs r8, r0 - bne _02301F90 - ldr r0, [sp, #8] - ldr r4, [r0, #0x44] - cmp r4, #0 - beq _02301F08 -_02301EF4: - ldr r0, [r4, #0x10] - cmp r0, #0x68 - ldrne r4, [r4, #0xc] - cmpne r4, #0 - bne _02301EF4 -_02301F08: - cmp r4, #0 - addeq sp, sp, #0x3c - addeq sp, sp, #0x800 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - cmp r0, #0x68 - bne _02302180 - ldr r0, [r4, #8] - cmp r0, #0 - beq _02302180 - mov r0, #0x10 - bl gsimalloc - ldmib r4, {r5, r6} - mov r3, r0 - mov r2, #0 - str r2, [r3, #4] - str r2, [r3, #0xc] - ldr r0, [sp, #8] - str r2, [r3, #8] - ldr r0, [r0, #0x10] - add r1, sp, #0x1c - str r0, [r3] - str r2, [sp] - mov r0, sl - str r6, [sp, #0x1c] - str r5, [sp, #0x20] - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl GpiAddCallback - ldr r0, [sp, #8] - mov r1, r4 - bl GpiPeerRemoveOp - b _02302180 -_02301F90: - mov r4, r8, lsl #2 - mov r0, r4 - bl gsimalloc - str r0, [sp, #0x10] - mov r0, r4 - bl gsimalloc - mov fp, r0 - cmp r8, #0 - mov sb, r5 - ble _023020D4 - add r7, sp, #0x400 - add r6, sp, #0x600 - add r5, sp, #0x23c - add r4, sp, #0x3c - add r7, r7, #0x3c - add r6, r6, #0x3c -_02301FD0: - ldr r1, [sp, #0xc] - mov r0, sl - add r2, sp, #0x28 - mov r3, r6 - str r7, [sp] - bl GpiReadKeyAndValue - mov r0, r6 - bl strlen - mov r1, #2 - str r1, [sp] - mov r2, r0 - mov r0, r6 - mov r1, r5 - add r3, sp, #0x2c - bl B64Decode - ldr r2, [sp, #0x2c] - mov r1, #0 - mov r0, r7 - strb r1, [r5, r2] - bl strlen - mov r1, #2 - str r1, [sp] - mov r2, r0 - mov r0, r7 - mov r1, r4 - add r3, sp, #0x2c - bl B64Decode - ldr r2, [sp, #0x2c] - mov r1, #0 - mov r0, r5 - strb r1, [r4, r2] - bl goastrdup - ldr r1, [sp, #0x10] - str r0, [r1, sb, lsl #2] - mov r0, r4 - bl goastrdup - str r0, [fp, sb, lsl #2] - ldr r1, [sp, #0x38] - mov r0, sl - ldr r1, [r1, #0xc] - mov r2, r5 - ldr r1, [r1, #0x38] - add r3, sp, #0x24 - bl GpiStatusInfoCheckKey - cmp r0, #0 - ldreq r0, [sp, #0x24] - cmpeq r0, #0 - mov r0, sl - bne _023020B0 - ldr r1, [sp, #0x38] - mov r2, r5 - ldr r1, [r1, #0xc] - mov r3, r4 - ldr r1, [r1, #0x38] - bl GpiStatusInfoAddKey - b _023020C8 -_023020B0: - ldr r1, [sp, #0x38] - mov r2, r5 - ldr r1, [r1, #0xc] - mov r3, r4 - ldr r1, [r1, #0x38] - bl GpiStatusInfoSetKey -_023020C8: - add sb, sb, #1 - cmp sb, r8 - blt _02301FD0 -_023020D4: - ldr r0, [sp, #8] - ldr r4, [r0, #0x44] - cmp r4, #0 - beq _023020F8 -_023020E4: - ldr r0, [r4, #0x10] - cmp r0, #0x68 - ldrne r4, [r4, #0xc] - cmpne r4, #0 - bne _023020E4 -_023020F8: - cmp r4, #0 - addeq sp, sp, #0x3c - addeq sp, sp, #0x800 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - cmp r0, #0x68 - bne _02302180 - ldr r0, [r4, #8] - cmp r0, #0 - beq _02302180 - mov r0, #0x10 - bl gsimalloc - ldmib r4, {r5, r6} - mov r3, r0 - ldr r0, [sp, #0x10] - str r8, [r3, #0xc] - stmib r3, {r0, fp} - ldr r0, [sp, #8] - mov r2, #0 - ldr r0, [r0, #0x10] - add r1, sp, #0x14 - str r0, [r3] - str r2, [sp] - mov r2, #0xe - mov r0, sl - str r6, [sp, #0x14] - str r5, [sp, #0x18] - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl GpiAddCallback - ldr r0, [sp, #8] - mov r1, r4 - bl GpiPeerRemoveOp -_02302180: - mov r0, #0 - add sp, sp, #0x3c - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02302190: .word ov00_0231AF54 -_02302194: .word ov00_0231AF50 -_02302198: .word ov00_0231AF68 -_0230219C: .word ov00_0231AF70 - arm_func_end GpiBuddyHandleKeyReply - - arm_func_start GpiAuthBuddyRequest -GpiAuthBuddyRequest: ; 0x023021A0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - add r2, sp, #0 - ldr r5, [r4] - bl GpiGetProfile - cmp r0, #0 - bne _023021D0 - ldr r1, _02302268 ; =ov00_0231AF54 - mov r0, r4 - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_023021D0: - ldr r1, [sp] - ldr r0, [r1, #0x14] - cmp r0, #0 - bne _023021F4 - ldr r1, _02302268 ; =ov00_0231AF54 - mov r0, r4 - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_023021F4: - mov r0, r4 - bl GpiSendAuthBuddyRequest - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp] - ldr r0, [r1, #0x18] - sub r0, r0, #1 - str r0, [r1, #0x18] - ldr r0, [r5, #0x100] - cmp r0, #0 - bne _02302260 - ldr r1, [sp] - ldr r0, [r1, #0x18] - cmp r0, #0 - bgt _02302260 - ldr r0, [r1, #0x14] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, [sp] - bl GpiCanFreeProfile - cmp r0, #0 - beq _02302260 - ldr r1, [sp] - mov r0, r4 - bl GpiRemoveProfile -_02302260: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02302268: .word ov00_0231AF54 - arm_func_end GpiAuthBuddyRequest - - arm_func_start GpiFixBuddyIndices -GpiFixBuddyIndices: ; 0x0230226C - ldr r3, [r1, #8] - cmp r3, #0 - beq _0230228C - ldr r0, [r3] - cmp r0, r2 - subgt r0, r0, #1 - strgt r0, [r3] - bgt _023022A8 -_0230228C: - ldr r1, [r1, #0xc] - cmp r1, #0 - beq _023022A8 - ldr r0, [r1] - cmp r0, r2 - subgt r0, r0, #1 - strgt r0, [r1] -_023022A8: - mov r0, #1 - bx lr - arm_func_end GpiFixBuddyIndices - - arm_func_start GpiDeleteBuddy -GpiDeleteBuddy: ; 0x023022B0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r2 - mov r6, r0 - add r2, sp, #0 - ldr r4, [r6] - bl GpiGetProfile - cmp r0, #0 - bne _023022EC - ldr r1, _02302504 ; =ov00_0231AF54 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #4 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_023022EC: - cmp r5, #1 - bne _02302358 - ldr r2, _02302508 ; =ov00_0231AF94 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _0230250C ; =ov00_0231ADE4 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02302510 ; =ov00_0231AFA0 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, [sp] - ldr r2, [r2] - bl GpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02302514 ; =ov00_0231AE08 - bl GpiAppendStringToBuffer -_02302358: - ldr r0, [sp] - ldr r1, [r0, #8] - cmp r1, #0 - beq _023023F4 - ldr r0, [r1, #8] - ldr r5, [r1] - bl gsifree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #8] - str r1, [r0, #8] - ldr r0, [sp] - ldr r0, [r0, #8] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #8] - str r1, [r0, #0xc] - ldr r0, [sp] - ldr r0, [r0, #8] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [sp] - bl GpiCanFreeProfile - cmp r0, #0 - beq _023023D8 - ldr r1, [sp] - mov r0, r6 - bl GpiRemoveProfile -_023023D8: - ldr r0, [r4, #0x5d0] - ldr r1, _02302518 ; =GpiFixBuddyIndices - sub r3, r0, #1 - mov r0, r6 - mov r2, r5 - str r3, [r4, #0x5d0] - bl GpiProfileMap -_023023F4: - ldr r0, [sp] - ldr r1, [r0, #0xc] - cmp r1, #0 - beq _023024F8 - ldr r0, [r1, #8] - ldr r5, [r1] - bl gsifree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #8] - ldr r0, [sp] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #0xc] - ldr r0, [sp] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x10] - bl gsifree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #0x10] - ldr r0, [sp] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x14] - bl gsifree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #0x14] - ldr r0, [sp] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [sp] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x38] - cmp r0, #0 - beq _023024C0 - bl ArrayFree_Gsi - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #0xc] - str r1, [r0, #0x38] -_023024C0: - ldr r0, [sp] - bl GpiCanFreeProfile - cmp r0, #0 - beq _023024DC - ldr r1, [sp] - mov r0, r6 - bl GpiRemoveProfile -_023024DC: - ldr r0, [r4, #0x5d0] - ldr r1, _02302518 ; =GpiFixBuddyIndices - sub r3, r0, #1 - mov r0, r6 - mov r2, r5 - str r3, [r4, #0x5d0] - bl GpiProfileMap -_023024F8: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02302504: .word ov00_0231AF54 -_02302508: .word ov00_0231AF94 -_0230250C: .word ov00_0231ADE4 -_02302510: .word ov00_0231AFA0 -_02302514: .word ov00_0231AE08 -_02302518: .word GpiFixBuddyIndices - arm_func_end GpiDeleteBuddy - - arm_func_start GpiAppendCharToBuffer -GpiAppendCharToBuffer: ; 0x0230251C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, r1 - ldr r5, [r4, #8] - ldr r6, [r4, #4] - mov r8, r0 - mov r7, r2 - cmp r6, r5 - ldr r0, [r4] - bne _02302568 - add r6, r6, #0x800 - add r1, r6, #1 - bl gsirealloc - cmp r0, #0 - bne _02302568 - ldr r1, _02302590 ; =ov00_0231AFB0 - mov r0, r8 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02302568: - strb r7, [r0, r5] - add r1, r5, #1 - mov r2, #0 - strb r2, [r0, r1] - ldr r1, [r4, #8] - add r1, r1, #1 - str r1, [r4, #8] - stmia r4, {r0, r6} - mov r0, r2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02302590: .word ov00_0231AFB0 - arm_func_end GpiAppendCharToBuffer - - arm_func_start GpiAppendStringToBufferLen -GpiAppendStringToBufferLen: ; 0x02302594 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs r8, r2 - mov sl, r0 - mov sb, r1 - mov r7, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r4, [sb, #8] - ldr r5, [sb, #4] - ldr r6, [sb] - sub r0, r5, r4 - cmp r0, r7 - bge _02302600 - cmp r7, #0x800 - movlt r0, #0x800 - movge r0, r7 - add r5, r5, r0 - mov r0, r6 - add r1, r5, #1 - bl gsirealloc - movs r6, r0 - bne _02302600 - ldr r1, _02302634 ; =ov00_0231AFB0 - mov r0, sl - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02302600: - mov r1, r8 - mov r2, r7 - add r0, r6, r4 - bl memcpy - add r1, r4, r7 - mov r0, #0 - strb r0, [r6, r1] - ldr r1, [sb, #8] - add r1, r1, r7 - str r1, [sb, #8] - str r5, [sb, #4] - str r6, [sb] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02302634: .word ov00_0231AFB0 - arm_func_end GpiAppendStringToBufferLen - - arm_func_start GpiAppendStringToBuffer -GpiAppendStringToBuffer: ; 0x02302638 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov r0, r4 - bl strlen - mov r3, r0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GpiAppendStringToBufferLen - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiAppendStringToBuffer - - arm_func_start GpiAppendIntToBuffer -GpiAppendIntToBuffer: ; 0x02302668 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r1 - mov r5, r0 - ldr r1, _0230269C ; =ov00_0231AFC0 - add r0, sp, #0 - bl OS_VsPrintf - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - bl GpiAppendStringToBuffer - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230269C: .word ov00_0231AFC0 - arm_func_end GpiAppendIntToBuffer - - arm_func_start GpiSendData -GpiSendData: ; 0x023026A0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - mov r7, r0 - mov r1, r2 - mov r2, r3 - mov r0, r8 - mov r3, #0 - ldr r6, [sp, #0x18] - ldr r5, [sp, #0x1c] - ldr r4, [sp, #0x20] - bl SocketSend - mvn r1, #0 - cmp r0, r1 - bne _0230274C - mov r0, r8 - bl GoaGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _0230273C - ldrsb r0, [r4] - cmp r0, #0x50 - ldreqsb r0, [r4, #1] - cmpeq r0, #0x52 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _02302778 ; =ov00_0231AFC4 - mov r0, r7 - mov r1, #5 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #0 - bl GpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0230273C: - mov r0, #0 - str r0, [r5] - str r0, [r6] - b _02302770 -_0230274C: - cmp r0, #0 - strne r0, [r5] - movne r0, #0 - strne r0, [r6] - bne _02302770 - mov r0, #0 - str r0, [r5] - mov r0, #1 - str r0, [r6] -_02302770: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02302778: .word ov00_0231AFC4 - arm_func_end GpiSendData - - arm_func_start GpiSendOrBufferChar -GpiSendOrBufferChar: ; 0x0230277C - mov r0, #0 - bx lr - arm_func_end GpiSendOrBufferChar - - arm_func_start GpiSendOrBufferStringLenToPeer -GpiSendOrBufferStringLenToPeer: ; 0x02302784 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov sb, r0 - ldr r4, [sb] - movs r6, r3 - mov r5, #0 - mov r8, r1 - mov r7, r2 - addeq sp, sp, #8 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, [r8, #0x34] - ldr r0, [r8, #0x38] - subs r0, r1, r0 - bne _02302850 - ldr r0, [r8, #0x3c] - bl ArrayLength_Gsi - cmp r0, #0 - bne _02302850 - ldrh r1, [r8, #0xc] - ldr r0, [r8, #8] - bl GsUdpEngineGetPeerOutBufferFreeSpace - sub r0, r0, #0x17 - cmp r6, r0 - bgt _02302814 - str r6, [sp] - mov r0, #1 - str r0, [sp, #4] - ldrh r1, [r8, #0xc] - ldr r0, [r8, #8] - mov r3, r7 - add r2, r4, #0x220 - bl GsUdpEngineSendMessage - mov r5, r6 - mov r6, #0 - b _02302850 -_02302814: - ldrh r1, [r8, #0xc] - ldr r0, [r8, #8] - bl GsUdpEngineGetPeerOutBufferFreeSpace - cmp r0, #0x17 - bls _02302850 - sub r5, r0, #0x17 - str r5, [sp] - mov r0, #1 - str r0, [sp, #4] - ldrh r1, [r8, #0xc] - ldr r0, [r8, #8] - mov r3, r7 - add r2, r4, #0x220 - bl GsUdpEngineSendMessage - sub r6, r6, r5 -_02302850: - cmp r6, #0 - beq _02302878 - mov r0, sb - mov r3, r6 - add r1, r8, #0x2c - add r2, r7, r5 - bl GpiAppendStringToBufferLen - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02302878: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GpiSendOrBufferStringLenToPeer - - arm_func_start GpiSendOrBufferString -GpiSendOrBufferString: ; 0x02302884 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov r0, r4 - bl strlen - mov r3, r0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GpiSendOrBufferStringLenToPeer - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiSendOrBufferString - - arm_func_start GpiRecvToBuffer -GpiRecvToBuffer: ; 0x023028B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - str r0, [sp] - mvn r0, #0 - str r0, [sp, #8] - sub r0, r0, #0x4b - str r0, [sp, #0x14] - ldr r0, [sp, #8] - mov fp, r2 - sub r0, r0, #0x19 - str r0, [sp, #0x10] - ldr r0, [sp, #8] - mov r8, #0 - sub r0, r0, #5 - ldr r5, [fp, #8] - ldmia fp, {r4, r6} - mov sl, r1 - str r3, [sp, #4] - mov sb, r8 - str r0, [sp, #0xc] -_02302904: - add r0, r5, #0x800 - cmp r0, r6 - ble _02302944 - mov r6, r0 - add r1, r0, #1 - mov r0, r4 - bl gsirealloc - movs r4, r0 - bne _02302940 - ldr r1, _023029FC ; =ov00_0231AFB0 - ldr r0, [sp] - bl GpiSetErrorString - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02302940: - stmia fp, {r4, r6} -_02302944: - mov r0, sl - add r1, r4, r5 - sub r2, r6, r5 - mov r3, #0 - bl SocketRecv - mov r7, r0 - ldr r0, [sp, #8] - cmp r7, r0 - bne _023029A4 - mov r0, sl - bl GoaGetLastError - ldr r1, [sp, #0xc] - cmp r0, r1 - ldrne r1, [sp, #0x10] - cmpne r0, r1 - ldrne r1, [sp, #0x14] - cmpne r0, r1 - beq _023029B4 - ldr r1, _02302A00 ; =ov00_0231AFEC - ldr r0, [sp] - bl GpiSetErrorString - add sp, sp, #0x18 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023029A4: - cmp r7, #0 - moveq sb, #1 - addne r5, r5, r7 - addne r8, r8, r7 -_023029B4: - mov r0, #0 - cmp r7, #0 - strb r0, [r4, r5] - blt _023029D4 - cmp sb, #0 - bne _023029D4 - cmp r8, #0x20000 - blt _02302904 -_023029D4: - str r4, [fp] - str r5, [fp, #8] - ldr r0, [sp, #4] - str r6, [fp, #4] - str r8, [r0] - ldr r1, [sp, #0x40] - mov r0, #0 - str sb, [r1] - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023029FC: .word ov00_0231AFB0 -_02302A00: .word ov00_0231AFEC - arm_func_end GpiRecvToBuffer - - arm_func_start GpiSendFromBuffer -GpiSendFromBuffer: ; 0x02302A04 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov sl, r0 - mov r0, r2 - ldr fp, [r2, #8] - ldr r7, [r2, #0xc] - ldr r8, [sp, #0x44] - ldr r6, [r0] - str r2, [sp, #0xc] - mov sb, r1 - str r3, [sp, #0x10] - subs r5, fp, r7 - mov r4, #0 - addeq sp, sp, #0x1c - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02302A44: - add r0, sp, #0x18 - str r0, [sp] - add r1, r7, r4 - add r0, sp, #0x14 - str r0, [sp, #4] - add r2, r6, r1 - mov r0, sl - mov r1, sb - mov r3, r5 - str r8, [sp, #8] - bl GpiSendData - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x14] - cmp r0, #0 - subne r5, r5, r0 - addne r4, r4, r0 - cmp r0, #0 - cmpne r5, #0 - bne _02302A44 - ldr r0, [sp, #0x40] - cmp r0, #0 - beq _02302AC4 - cmp r4, #0 - ble _02302AC8 - mov r0, r6 - add r1, r6, r4 - add r2, r5, #1 - bl memmove - sub fp, fp, r4 - b _02302AC8 -_02302AC4: - add r7, r7, r4 -_02302AC8: - ldr r0, [sp, #0xc] - str fp, [r0, #8] - str r7, [r0, #0xc] - ldr r0, [sp, #0x10] - cmp r0, #0 - ldrne r1, [sp, #0x18] - strne r1, [r0] - mov r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GpiSendFromBuffer - - arm_func_start GpiSendBufferToPeer -GpiSendBufferToPeer: ; 0x02302AF0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - str r3, [sp, #8] - ldr r3, [r3, #8] - mov sl, r1 - str r3, [sp, #0xc] - ldr r3, [sp, #8] - ldr r1, [sp, #0xc] - ldr r6, [r3, #0xc] - ldr fp, [r0] - subs r4, r1, r6 - ldr r1, [sp, #0x38] - mov r0, r3 - str r1, [sp, #0x38] - ldr r5, [r0] - mov r7, #0 - mov sb, r2 - addeq sp, sp, #0x14 - moveq r0, r7 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GsUdpEngineGetPeerOutBufferFreeSpace - sub r0, r0, #0x17 - cmp r4, r0 - bgt _02302B84 - mov r0, sl - mov r1, sb - str r4, [sp] - mov r7, #1 - add r2, fp, #0x220 - add r3, r5, r6 - str r7, [sp, #4] - bl GsUdpEngineSendMessage - mov r7, r4 - mov r4, #0 - b _02302BD4 -_02302B84: - mov r0, sl - mov r1, sb - bl GsUdpEngineGetPeerOutBufferFreeSpace - sub r8, r0, #0x17 - cmp r8, #0x17 - bls _02302BD4 - add r1, r6, r7 - add r3, r5, r1 - str r8, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, sl - mov r1, sb - add r2, fp, #0x220 - bl GsUdpEngineSendMessage - cmp r0, #8 - beq _02302BD4 - add r7, r7, r8 - subs r4, r4, r8 - bne _02302B84 -_02302BD4: - ldr r0, [sp, #0x3c] - cmp r0, #0 - beq _02302C08 - cmp r7, #0 - beq _02302C0C - mov r0, r5 - add r1, r5, r7 - add r2, r4, #1 - bl memmove - ldr r0, [sp, #0xc] - sub r0, r0, r7 - str r0, [sp, #0xc] - b _02302C0C -_02302C08: - add r6, r6, r7 -_02302C0C: - ldr r1, [sp, #0xc] - ldr r0, [sp, #8] - ldr r3, [sp, #8] - str r1, [r0, #8] - add r2, sp, #0x10 - mov r0, sl - mov r1, sb - str r6, [r3, #0xc] - bl GsUdpEngineGetPeerState - ldr r0, [sp, #0x10] - cmp r0, #3 - ldreq r0, [sp, #0x38] - moveq r1, #1 - ldrne r0, [sp, #0x38] - movne r1, #0 - str r1, [r0] - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GpiSendBufferToPeer - - arm_func_start GpiReadMessageFromBuffer -GpiReadMessageFromBuffer: ; 0x02302C58 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r5, r2 - mov r0, #0 - mov r6, r1 - str r0, [r5] - ldr r1, [r6, #8] - mov r7, r3 - cmp r1, #5 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6] - mov r1, #0xa - bl strchr - movs r4, r0 - beq _02302D7C - ldr r1, _02302D88 ; =ov00_0231B018 - sub r0, r4, #5 - mov r2, #5 - bl strncmp - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - strb r0, [r4] - ldr r0, [r6] - ldr r1, _02302D8C ; =ov00_0231B020 - add r2, sp, #0 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, sp, #0 - bl atoi - str r0, [r7] - ldr r0, [r6] - ldr r1, _02302D90 ; =ov00_0231B024 - add r2, sp, #0 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, sp, #0 - bl atoi - ldr r2, [r6] - add r1, r0, #1 - sub r2, r4, r2 - ldr r3, [r6, #8] - add r2, r1, r2 - cmp r3, r2 - ble _02302D74 - ldrsb r2, [r4, r1] - cmp r2, #0 - addne sp, sp, #0x10 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r3, r4, #1 - ldr r2, [sp, #0x28] - str r3, [r5] - str r0, [r2] - ldr r0, [r6] - sub r0, r4, r0 - add r0, r1, r0 - add r0, r0, #1 - str r0, [r6, #0xc] - b _02302D7C -_02302D74: - mov r0, #0xa - strb r0, [r4] -_02302D7C: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02302D88: .word ov00_0231B018 -_02302D8C: .word ov00_0231B020 -_02302D90: .word ov00_0231B024 - arm_func_end GpiReadMessageFromBuffer - - arm_func_start GpiClipBufferToPosition -GpiClipBufferToPosition: ; 0x02302D94 - stmdb sp!, {r4, lr} - movs r4, r1 - ldrne r0, [r4] - cmpne r0, #0 - ldrne r1, [r4, #0xc] - cmpne r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #8] - subs r2, r0, r1 - str r2, [r4, #8] - beq _02302DD4 - ldr r0, [r4] - ldr r1, [r4, #0xc] - add r1, r0, r1 - bl memmove -_02302DD4: - ldr r2, [r4] - ldr r1, [r4, #8] - mov r0, #0 - strb r0, [r2, r1] - str r0, [r4, #0xc] - ldmia sp!, {r4, pc} - arm_func_end GpiClipBufferToPosition - - arm_func_start GpiCallErrorCallback -GpiCallErrorCallback: ; 0x02302DEC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r6, r2 - cmp r6, #1 - ldr r5, [r4] - moveq r0, #1 - streq r0, [r5, #0x5bc] - mov r7, r1 - ldr r1, [r5, #0x1a8] - ldr r0, [r5, #0x1ac] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0x10 - bl gsimalloc - movs r3, r0 - beq _02302E4C - str r7, [r3] - str r6, [r3, #0xc] - ldr r0, [r5, #0x5b8] - stmib r3, {r0, r5} -_02302E4C: - mov r2, #0 - str r2, [sp] - mov r2, #1 - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GpiCallErrorCallback - - arm_func_start GpiAddCallback -GpiAddCallback: ; 0x02302E74 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #0x18 - mov r5, r3 - ldr r4, [r6] - bl gsimalloc - cmp r0, #0 - bne _02302EB4 - ldr r1, _02302F14 ; =ov00_0231B02C - mov r0, r6 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_02302EB4: - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x18] - str r1, [r0] - ldr r1, [sp, #0x20] - stmib r0, {r2, r5} - cmp r1, #0 - ldrne r1, [r1, #0x18] - ldr r2, [sp, #0x24] - moveq r1, #0 - str r1, [r0, #0x10] - mov r1, #0 - str r2, [r0, #0xc] - str r1, [r0, #0x14] - ldr r1, [r4, #0x5d8] - cmp r1, #0 - streq r0, [r4, #0x5d8] - ldr r1, [r4, #0x5dc] - cmp r1, #0 - strne r0, [r1, #0x14] - str r0, [r4, #0x5dc] - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02302F14: .word ov00_0231B02C - arm_func_end GpiAddCallback - - arm_func_start GpiCallCallback -GpiCallCallback: ; 0x02302F18 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, r1 - ldr r1, [r4, #8] - ldr r2, [r4, #4] - ldr r3, [r4] - mov r5, r0 - blx r3 - ldr r0, [r4, #0xc] - cmp r0, #2 - bne _02302F5C - ldr r0, [r4, #8] - ldr r0, [r0, #8] - bl gsifree - ldr r0, [r4, #8] - mov r1, #0 - str r1, [r0, #8] - b _02303194 -_02302F5C: - cmp r0, #0xb - bne _02302F80 - ldr r0, [r4, #8] - ldr r0, [r0, #8] - bl gsifree - ldr r0, [r4, #8] - mov r1, #0 - str r1, [r0, #8] - b _02303194 -_02302F80: - cmp r0, #3 - bne _02303000 - ldr r7, [r4, #8] - mov r6, #0 - ldr r0, [r7, #0x38] - cmp r0, #0 - ble _02302FDC - mov r5, r6 - mov r8, r6 -_02302FA4: - ldr r0, [r7, #0x3c] - ldr r0, [r0, r6, lsl #2] - bl gsifree - ldr r0, [r7, #0x3c] - str r5, [r0, r6, lsl #2] - ldr r0, [r7, #0x40] - ldr r0, [r0, r6, lsl #2] - bl gsifree - ldr r0, [r7, #0x40] - str r8, [r0, r6, lsl #2] - ldr r0, [r7, #0x38] - add r6, r6, #1 - cmp r6, r0 - blt _02302FA4 -_02302FDC: - ldr r0, [r7, #0x3c] - bl gsifree - mov r0, #0 - str r0, [r7, #0x3c] - ldr r0, [r7, #0x40] - bl gsifree - mov r0, #0 - str r0, [r7, #0x40] - b _02303194 -_02303000: - cmp r0, #4 - bne _02303020 - ldr r5, [r4, #8] - ldr r0, [r5, #0xc] - bl gsifree - mov r0, #0 - str r0, [r5, #0xc] - b _02303194 -_02303020: - cmp r0, #7 - bne _02303048 - ldr r5, [r4, #8] - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _02303194 - bl gsifree - mov r0, #0 - str r0, [r5, #0x10] - b _02303194 -_02303048: - cmp r0, #8 - bne _02303070 - ldr r5, [r4, #8] - ldr r0, [r5, #8] - cmp r0, #0 - beq _02303194 - bl gsifree - mov r0, #0 - str r0, [r5, #8] - b _02303194 -_02303070: - cmp r0, #9 - bne _023030C8 - ldr r6, [r4, #8] - mov r5, #0 - ldr r0, [r6, #4] - cmp r0, #0 - ble _023030B4 - mov r7, r5 -_02303090: - ldr r0, [r6, #8] - ldr r0, [r0, r5, lsl #2] - bl gsifree - ldr r0, [r6, #8] - str r7, [r0, r5, lsl #2] - ldr r0, [r6, #4] - add r5, r5, #1 - cmp r5, r0 - blt _02303090 -_023030B4: - ldr r0, [r6, #8] - bl gsifree - mov r0, #0 - str r0, [r6, #8] - b _02303194 -_023030C8: - cmp r0, #0xc - bne _023030E8 - ldr r1, [r4, #8] - mov r0, r5 - ldr r1, [r1] - mov r2, #0 - bl GpiDeleteBuddy - b _02303194 -_023030E8: - cmp r0, #0xd - bne _02303110 - ldr r5, [r4, #8] - ldr r0, [r5, #8] - cmp r0, #0 - beq _02303194 - bl gsifree - mov r0, #0 - str r0, [r5, #8] - b _02303194 -_02303110: - cmp r0, #0xe - bne _02303194 - ldr r6, [r4, #8] - ldr r0, [r6, #0xc] - cmp r0, #0 - beq _02303194 - cmp r0, #0 - mov r7, #0 - ble _02303174 - mov r5, r7 - mov r8, r7 -_0230313C: - ldr r0, [r6, #4] - ldr r0, [r0, r7, lsl #2] - bl gsifree - ldr r0, [r6, #4] - str r5, [r0, r7, lsl #2] - ldr r0, [r6, #8] - ldr r0, [r0, r7, lsl #2] - bl gsifree - ldr r0, [r6, #8] - str r8, [r0, r7, lsl #2] - ldr r0, [r6, #0xc] - add r7, r7, #1 - cmp r7, r0 - blt _0230313C -_02303174: - ldr r0, [r6, #4] - bl gsifree - mov r0, #0 - str r0, [r6, #4] - ldr r0, [r6, #8] - bl gsifree - mov r0, #0 - str r0, [r6, #8] -_02303194: - ldr r0, [r4, #8] - bl gsifree - mov r1, #0 - mov r0, r4 - str r1, [r4, #8] - bl gsifree - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end GpiCallCallback - - arm_func_start GpiProcessCallbacks -GpiProcessCallbacks: ; 0x023031B0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - movs sb, r1 - ldr r4, [sl] - beq _0230324C - ldr r5, [r4, #0x5d8] - ldr r6, [r4, #0x5dc] - mov r7, #0 - str r7, [r4, #0x5d8] - mov r1, r5 - str r7, [r4, #0x5dc] - cmp r5, #0 - beq _0230322C -_023031E4: - ldr r0, [r1, #0x10] - ldr r8, [r1, #0x14] - cmp r0, sb - ldrne r0, [r1, #0xc] - cmpne r0, #1 - bne _0230321C - mov r0, sl - cmp r7, #0 - strne r8, [r7, #0x14] - moveq r5, r8 - cmp r6, r1 - moveq r6, r7 - bl GpiCallCallback - b _02303220 -_0230321C: - mov r7, r1 -_02303220: - mov r1, r8 - cmp r8, #0 - bne _023031E4 -_0230322C: - ldr r0, [r4, #0x5d8] - cmp r0, #0 - ldrne r0, [r4, #0x5dc] - strne r5, [r0, #0x14] - streq r5, [r4, #0x5d8] - str r6, [r4, #0x5dc] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230324C: - ldr r1, [r4, #0x5d8] - cmp r1, #0 - beq _02303290 - mov r5, #0 -_0230325C: - str r5, [r4, #0x5d8] - str r5, [r4, #0x5dc] - cmp r1, #0 - beq _02303284 -_0230326C: - ldr r6, [r1, #0x14] - mov r0, sl - bl GpiCallCallback - mov r1, r6 - cmp r6, #0 - bne _0230326C -_02303284: - ldr r1, [r4, #0x5d8] - cmp r1, #0 - bne _0230325C -_02303290: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end GpiProcessCallbacks - - arm_func_start RandomString -RandomString: ; 0x02303298 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - cmp r8, #0 - mov r7, #0 - ble _023032EC - ldr r6, _023032F8 ; =ov00_0231B07C - ldr r5, _023032FC ; =0x08421085 - mov r4, #0x3e -_023032BC: - bl rand - umull r1, r2, r0, r5 - sub r1, r0, r2 - add r2, r2, r1, lsr #1 - mov r2, r2, lsr #5 - umull r1, r2, r4, r2 - sub r2, r0, r1 - ldrsb r0, [r6, r2] - strb r0, [sb, r7] - add r7, r7, #1 - cmp r7, r8 - blt _023032BC -_023032EC: - mov r0, #0 - strb r0, [sb, r7] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023032F8: .word ov00_0231B07C -_023032FC: .word 0x08421085 - arm_func_end RandomString - - arm_func_start GpiStartConnect -GpiStartConnect: ; 0x02303300 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x24 - mov r7, r0 - ldr r4, [r7] - mov r6, r1 - ldr r1, _0230362C ; =ov00_0231B0BC - add r0, r4, #0x220 - mov r2, #0x10 - bl strncpy - bl GsUdpEngineIsInitialized - cmp r0, #0 - bne _0230340C - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - str r1, [sp, #0xc] - ldr r5, _02303630 ; =0x00001964 - str r1, [sp, #0x10] - str r1, [sp, #0x14] - mov r0, r5 - mov r2, r1 - mov r3, r1 - str r1, [sp, #0x18] - bl GsUdpEngineInitialize - cmp r0, #0 - beq _023033F8 - mov sb, #0 - add r8, r5, #0x64 - b _023033B4 -_02303378: - str sb, [sp] - str sb, [sp, #4] - str sb, [sp, #8] - add r0, r5, #1 - str sb, [sp, #0xc] - mov r0, r0, lsl #0x10 - str sb, [sp, #0x10] - mov r5, r0, lsr #0x10 - str sb, [sp, #0x14] - mov r0, r5 - mov r1, sb - mov r2, sb - mov r3, sb - str sb, [sp, #0x18] - bl GsUdpEngineInitialize -_023033B4: - cmp r0, #0 - beq _023033C4 - cmp r5, r8 - blo _02303378 -_023033C4: - cmp r0, #0 - beq _023033F8 - ldr r2, _02303634 ; =ov00_0231B0C8 - mov r0, r7 - mov r1, #8 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x24 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_023033F8: - ldr r0, [r4, #0x10c] - cmp r0, #0 - addeq r0, r4, #0x200 - streqh r5, [r0, #0x30] - b _02303418 -_0230340C: - bl GsUdpEngineGetLocalPort - add r1, r4, #0x200 - strh r0, [r1, #0x30] -_02303418: - ldr r0, _02303638 ; =GpiPeerLeftCallback - ldr r1, _0230363C ; =GpiPeerPingReplyCallback - str r0, [sp] - ldr r0, _02303640 ; =GpiPeerMessageCallback - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r4, #0x220 - ldr r3, _02303644 ; =GpiPeerAcceptedCallback - mov r1, r0 - mov r2, #0 - str r7, [sp, #0xc] - bl GsUdpEngineAddMsgHandler - cmp r0, #0 - beq _0230347C - ldr r2, _02303648 ; =ov00_0231B0F0 - mov r0, r7 - mov r1, #8 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x24 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0230347C: - ldr r0, [r4, #0x10c] - mov r2, #0 - cmp r0, #0 - addne r0, r4, #0x200 - movne r1, #0 - strneh r1, [r0, #0x30] - mov r0, #2 - mov r1, #1 - bl SocketCreate - mvn r1, #0 - str r0, [r4, #0x1f0] - cmp r0, r1 - bne _023034DC - ldr r2, _0230364C ; =ov00_0231B11C - mov r0, r7 - mov r1, #5 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x24 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_023034DC: - mov r1, #0 - bl SocketSetBlocking - cmp r0, #0 - bne _02303518 - ldr r2, _02303650 ; =ov00_0231B144 - mov r0, r7 - mov r1, #5 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x24 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02303518: - add r3, sp, #0x1c - mov r2, #0 - ldr r0, _02303654 ; =ov00_0231B03C - str r2, [r3] - mov r1, #2 - str r2, [r3, #4] - strb r1, [sp, #0x1d] - bl inet_addr_gsi - mvn r1, #0 - cmp r0, r1 - bne _02303594 - ldr r0, _02303654 ; =ov00_0231B03C - bl Soc_GetHostByName - cmp r0, #0 - bne _02303580 - ldr r2, _02303658 ; =ov00_0231B178 - mov r0, r7 - mov r1, #5 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x24 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02303580: - ldr r0, [r0, #0xc] - ldr r0, [r0] - ldr r0, [r0] - str r0, [sp, #0x20] - b _023035A0 -_02303594: - ldr r0, _02303654 ; =ov00_0231B03C - bl inet_addr_gsi - str r0, [sp, #0x20] -_023035A0: - ldr r0, _0230365C ; =0x0000CC74 - add r1, sp, #0x1c - strh r0, [sp, #0x1e] - ldr r0, [r4, #0x1f0] - mov r2, #8 - bl SocketConnect - mvn r1, #0 - cmp r0, r1 - bne _02303614 - ldr r0, [r4, #0x1f0] - bl GoaGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _02303614 - ldr r2, _02303660 ; =ov00_0231B1AC - mov r0, r7 - mov r1, #5 - bl GpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x24 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02303614: - mov r0, #1 - str r0, [r6, #0x14] - str r0, [r4, #0x1f4] - mov r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230362C: .word ov00_0231B0BC -_02303630: .word 0x00001964 -_02303634: .word ov00_0231B0C8 -_02303638: .word GpiPeerLeftCallback -_0230363C: .word GpiPeerPingReplyCallback -_02303640: .word GpiPeerMessageCallback -_02303644: .word GpiPeerAcceptedCallback -_02303648: .word ov00_0231B0F0 -_0230364C: .word ov00_0231B11C -_02303650: .word ov00_0231B144 -_02303654: .word ov00_0231B03C -_02303658: .word ov00_0231B178 -_0230365C: .word 0x0000CC74 -_02303660: .word ov00_0231B1AC - arm_func_end GpiStartConnect - - arm_func_start GpiConnect -GpiConnect: ; 0x02303664 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r8, r0 - ldr r4, [r8] - mov r7, r1 - ldr r1, [r4, #0x1f4] - mov r6, r2 - mov r5, r3 - cmp r1, #4 - bne _0230369C - bl GpiReset - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_0230369C: - ldr r0, [r4, #0x1f4] - cmp r0, #0 - beq _023036C0 - ldr r1, _02303858 ; =ov00_0231B1D4 - mov r0, r8 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023036C0: - mov r3, #1 - mov r1, r7 - add r0, r4, #0x110 - mov r2, #0x1f - str r3, [r4, #0x10c] - bl strzcpy_gsi - add r0, r4, #0x2f - mov r1, r6 - add r0, r0, #0x100 - mov r2, #0x15 - bl strzcpy_gsi - mov r1, r5 - add r0, r4, #0x144 - mov r2, #0x33 - bl strzcpy_gsi - add r0, r4, #0x77 - ldr r1, [sp, #0x28] - add r0, r0, #0x100 - mov r2, #0x1f - bl strzcpy_gsi - add r0, r4, #0x144 - bl strlwr - mov r0, #0x308 - bl gsimalloc - movs r4, r0 - bne _02303740 - ldr r1, _0230385C ; =ov00_0231B1E8 - mov r0, r8 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02303740: - mov r1, #0 - mov r2, #0x308 - bl memset - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0x2c] - str r0, [r4, #0x304] - ldrsb r0, [r1] - cmp r0, #0 - ldrne r0, [sp, #0x30] - ldrnesb r0, [r0] - cmpne r0, #0 - beq _02303790 - add r0, r4, #0xc2 - mov r2, #0x100 - bl strzcpy_gsi - add r0, r4, #0xc2 - ldr r1, [sp, #0x30] - add r0, r0, #0x100 - mov r2, #0x100 - bl strzcpy_gsi -_02303790: - ldr r1, [sp, #0x34] - cmp r1, #0 - beq _023037AC - add r0, r4, #0xc2 - add r0, r0, #0x200 - mov r2, #0x41 - bl strzcpy_gsi -_023037AC: - ldr r1, [sp, #0x40] - ldr r0, [sp, #0x44] - str r1, [sp] - str r0, [sp, #4] - ldr r5, [sp, #0x48] - add r3, sp, #0xc - mov r0, r8 - mov r2, r4 - mov r1, #0 - str r5, [sp, #8] - bl GpiAddOperation - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0xc] - mov r0, r8 - bl GpiStartConnect - movs r4, r0 - beq _02303824 - ldr r1, [sp, #0xc] - mov r0, r8 - str r4, [r1, #0x1c] - ldr r1, [sp, #0xc] - bl GpiFailedOpCallback - mov r0, r8 - mov r1, #0 - bl GpiDisconnect - add sp, sp, #0x10 - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02303824: - ldr r1, [sp, #0xc] - ldr r0, [r1, #8] - cmp r0, #0 - beq _0230384C - ldr r1, [r1, #0x18] - mov r0, r8 - bl GpiProcess - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_0230384C: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02303858: .word ov00_0231B1D4 -_0230385C: .word ov00_0231B1E8 - arm_func_end GpiConnect - - arm_func_start GpiSendLogin -GpiSendLogin: ; 0x02303860 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x294 - mov r5, r1 - mov r6, r0 - add r0, r5, #0x80 - mov r1, #0x20 - ldr r4, [r6] - bl RandomString - add r0, r5, #0x100 - ldrsb r0, [r0, #0xc2] - cmp r0, #0 - addne r0, r5, #0xc2 - addeq r0, r4, #0x77 - add r7, r0, #0x100 - mov r0, r7 - bl strlen - mov r1, r0 - mov r0, r7 - add r2, r5, #0xa1 - bl MD5Digest_Gsi - ldr r2, [r4, #0x1a4] - cmp r2, #0 - beq _023038CC - ldr r1, _02303C30 ; =ov00_0231B1F8 - add r0, sp, #0x14 - bl OS_VsPrintf - b _023038DC -_023038CC: - ldr r0, _02303C34 ; =ov00_0231B1FC - add r1, sp, #0x14 - ldrb r0, [r0] - strb r0, [r1] -_023038DC: - ldrsb r0, [r5, #0xc2] - cmp r0, #0 - addne r0, r5, #0xc2 - bne _02303934 - add r0, r4, #0x100 - ldrsb r0, [r0, #0x2f] - add r2, sp, #0x14 - cmp r0, #0 - add r0, sp, #0x40 - beq _0230391C - add r3, r4, #0x2f - ldr r1, _02303C38 ; =ov00_0231B200 - add r3, r3, #0x100 - bl OS_VsPrintf - add r0, sp, #0x40 - b _02303934 -_0230391C: - ldr r1, _02303C3C ; =ov00_0231B208 - add ip, r4, #0x144 - add r3, r4, #0x110 - str ip, [sp] - bl OS_VsPrintf - add r0, sp, #0x40 -_02303934: - str r0, [sp] - add r0, r5, #0x80 - str r0, [sp, #4] - ldr r1, _02303C40 ; =ov00_0231B210 - ldr r3, _02303C44 ; =ov00_0231B220 - add r0, sp, #0x92 - str r5, [sp, #8] - add r2, r5, #0xa1 - str r2, [sp, #0xc] - bl OS_VsPrintf - add r0, sp, #0x92 - bl strlen - mov r1, r0 - add r0, sp, #0x92 - add r2, sp, #0x1f - bl MD5Digest_Gsi - ldr r0, [r4, #0x100] - cmp r0, #0 - beq _023039B4 - add r3, sp, #0x10 - mov r0, r6 - add r1, r4, #0x110 - add r2, r4, #0x144 - bl GpiFindProfileByUser - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _023039B4 - ldr r0, [r0, #4] - str r0, [r4, #0x19c] - ldr r0, [sp, #0x10] - ldr r0, [r0] - str r0, [r4, #0x1a0] -_023039B4: - ldr r2, _02303C48 ; =ov00_0231B254 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _02303C4C ; =ov00_0231B25C - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - add r2, r5, #0x80 - bl GpiAppendStringToBuffer - ldrsb r0, [r5, #0xc2] - cmp r0, #0 - beq _02303A14 - ldr r2, _02303C50 ; =ov00_0231B268 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - add r2, r5, #0xc2 - bl GpiAppendStringToBuffer - b _02303A8C -_02303A14: - add r0, r4, #0x100 - ldrsb r0, [r0, #0x2f] - cmp r0, #0 - beq _02303A4C - ldr r2, _02303C54 ; =ov00_0231B274 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - add r2, r4, #0x2f - mov r0, r6 - add r1, r4, #0x210 - add r2, r2, #0x100 - bl GpiAppendStringToBuffer - b _02303A8C -_02303A4C: - ldr r2, _02303C58 ; =ov00_0231B284 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - add r2, r4, #0x110 - bl GpiAppendStringToBuffer - ldr r2, _02303C5C ; =ov00_0231B28C - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - add r2, r4, #0x144 - bl GpiAppendStringToBuffer -_02303A8C: - ldr r0, [r4, #0x19c] - cmp r0, #0 - beq _02303AB8 - ldr r2, _02303C60 ; =ov00_0231B290 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x19c] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer -_02303AB8: - ldr r0, [r4, #0x1a0] - cmp r0, #0 - beq _02303AE4 - ldr r2, _02303C64 ; =ov00_0231B29C - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x1a0] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer -_02303AE4: - ldr r2, _02303C68 ; =ov00_0231B2A8 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x1a4] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02303C6C ; =ov00_0231B2B4 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - add r2, sp, #0x1f - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r0, [r4, #0x10c] - cmp r0, #1 - bne _02303B40 - ldr r2, _02303C70 ; =ov00_0231B2C0 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer -_02303B40: - ldr r2, _02303C74 ; =ov00_0231B2CC - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - add r0, r4, #0x200 - ldrh r2, [r0, #0x30] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02303C78 ; =ov00_0231B2D4 - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x608] - mov r0, r6 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C7C ; =ov00_0231B2E0 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C80 ; =ov00_02328804 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C84 ; =ov00_0231B2EC - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, [r4, #0x60c] - bl GpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C88 ; =ov00_0231B2FC - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - mov r2, #3 - bl GpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C8C ; =ov00_0231B30C - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, [r4, #0x62c] - bl GpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C90 ; =ov00_0231B314 - bl GpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x210 - ldr r2, _02303C94 ; =ov00_0231B31C - bl GpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0x294 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_02303C30: .word ov00_0231B1F8 -_02303C34: .word ov00_0231B1FC -_02303C38: .word ov00_0231B200 -_02303C3C: .word ov00_0231B208 -_02303C40: .word ov00_0231B210 -_02303C44: .word ov00_0231B220 -_02303C48: .word ov00_0231B254 -_02303C4C: .word ov00_0231B25C -_02303C50: .word ov00_0231B268 -_02303C54: .word ov00_0231B274 -_02303C58: .word ov00_0231B284 -_02303C5C: .word ov00_0231B28C -_02303C60: .word ov00_0231B290 -_02303C64: .word ov00_0231B29C -_02303C68: .word ov00_0231B2A8 -_02303C6C: .word ov00_0231B2B4 -_02303C70: .word ov00_0231B2C0 -_02303C74: .word ov00_0231B2CC -_02303C78: .word ov00_0231B2D4 -_02303C7C: .word ov00_0231B2E0 -_02303C80: .word ov00_02328804 -_02303C84: .word ov00_0231B2EC -_02303C88: .word ov00_0231B2FC -_02303C8C: .word ov00_0231B30C -_02303C90: .word ov00_0231B314 -_02303C94: .word ov00_0231B31C - arm_func_end GpiSendLogin - - arm_func_start GpiSendNewuser -GpiSendNewuser: ; 0x02303C98 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc8 - mov sl, r0 - ldr r5, [sl] - mov sb, r1 - add r0, r5, #0x77 - add r1, sp, #0 - add r0, r0, #0x100 - bl PasswordEncryptString - ldr r2, _02303EA8 ; =ov00_0231B324 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _02303EAC ; =ov00_0231B330 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r5, #0x210 - add r2, r5, #0x144 - bl GpiAppendStringToBuffer - ldr r2, _02303EB0 ; =ov00_0231B338 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r5, #0x210 - add r2, r5, #0x110 - bl GpiAppendStringToBuffer - ldr r2, _02303EB4 ; =ov00_0231B340 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r5, #0x210 - add r2, sp, #0 - bl GpiAppendStringToBuffer - ldr r2, _02303EB8 ; =ov00_0231B2D4 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r5, #0x608] - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02303EBC ; =ov00_0231B2E0 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _02303EC0 ; =ov00_02328804 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _02303EC4 ; =ov00_0231B2EC - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r5, #0x60c] - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02303EC8 ; =ov00_0231B274 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - add r2, r5, #0x2f - mov r0, sl - add r1, r5, #0x210 - add r2, r2, #0x100 - bl GpiAppendStringToBuffer - add r0, sb, #0x200 - ldrsb r0, [r0, #0xc2] - cmp r0, #0 - beq _02303E5C - add r0, sb, #0xc2 - add r0, r0, #0x200 - bl strlen - mov r7, r0 - ldr r0, _02303ECC ; =0x79707367 - bl Util_RandSeed - cmp r7, #0 - mov r6, #0 - bls _02303E20 - add r8, sp, #0x87 - mov r4, r6 - mov fp, #0xff -_02303DF0: - mov r0, r4 - mov r1, fp - bl RandRangeOverlay0 - add r1, sb, r6 - add r1, r1, #0x200 - add r6, r6, #1 - ldrsb r1, [r1, #0xc2] - mov r0, r0, lsl #0x18 - cmp r6, r7 - eor r0, r1, r0, asr #24 - strb r0, [r8], #1 - blo _02303DF0 -_02303E20: - add r0, sp, #0x87 - mov r4, #0 - add r1, sp, #0x2d - mov r2, r7 - mov r3, #1 - strb r4, [r0, r6] - bl B64Encode - ldr r2, _02303ED0 ; =ov00_0231B350 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - add r2, sp, #0x2d - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer -_02303E5C: - ldr r2, _02303ED4 ; =ov00_0231B2A8 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r5, #0x1a4] - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02303ED8 ; =ov00_0231B314 - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - ldr r2, _02303EDC ; =ov00_0231B31C - mov r0, sl - add r1, r5, #0x210 - bl GpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0xc8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02303EA8: .word ov00_0231B324 -_02303EAC: .word ov00_0231B330 -_02303EB0: .word ov00_0231B338 -_02303EB4: .word ov00_0231B340 -_02303EB8: .word ov00_0231B2D4 -_02303EBC: .word ov00_0231B2E0 -_02303EC0: .word ov00_02328804 -_02303EC4: .word ov00_0231B2EC -_02303EC8: .word ov00_0231B274 -_02303ECC: .word 0x79707367 -_02303ED0: .word ov00_0231B350 -_02303ED4: .word ov00_0231B2A8 -_02303ED8: .word ov00_0231B314 -_02303EDC: .word ov00_0231B31C - arm_func_end GpiSendNewuser - - arm_func_start GpiProcessConnect -GpiProcessConnect: ; 0x02303EE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x2ac - mov r6, r2 - mov r8, r0 - mov r7, r1 - mov r1, r6 - mov r2, #0 - ldr r5, [r8] - bl GpiCheckForError - cmp r0, #0 - beq _02303FA0 - ldr r2, [r5, #0x5b8] - ldr r0, _02304558 ; =0x00000106 - cmp r2, r0 - bne _02303F40 - ldr r1, [r5, #0x1a0] - cmp r1, #0 - beq _02303F40 - mov r0, r8 - bl GpiRemoveProfileByID - mov r0, #0 - str r0, [r5, #0x19c] - str r0, [r5, #0x1a0] - b _02303F74 -_02303F40: - ldr r0, _0230455C ; =0x00000201 - cmp r2, r0 - bne _02303F74 - ldr r1, _02304560 ; =ov00_0231B35C - add r2, sp, #0xab - mov r0, r6 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - beq _02303F74 - add r0, sp, #0xab - bl atoi - str r0, [r5, #0x1a0] -_02303F74: - ldr r1, [r5, #0x5b8] - mov r0, r8 - mov r2, r5 - bl GpiSetError - mov r0, r8 - mov r1, #4 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02303FA0: - ldr r0, [r7, #0x14] - ldr r4, [r7, #4] - cmp r0, #1 - beq _02303FC4 - cmp r0, #2 - beq _023041AC - cmp r0, #3 - beq _0230409C - b _0230454C -_02303FC4: - ldr r1, _02304564 ; =ov00_0231B364 - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _02304008 - ldr r2, _02304568 ; =ov00_0231B36C - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304008: - ldr r1, _0230456C ; =ov00_0231B25C - mov r0, r6 - mov r2, r4 - mov r3, #0x80 - bl GpiValueForKey - cmp r0, #0 - bne _02304050 - ldr r2, _02304568 ; =ov00_0231B36C - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304050: - ldr r0, [r4, #0x304] - mov r1, r4 - cmp r0, #0 - mov r0, r8 - beq _02304080 - bl GpiSendNewuser - cmp r0, #0 - addne sp, sp, #0x2ac - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, #3 - str r0, [r7, #0x14] - b _0230454C -_02304080: - bl GpiSendLogin - cmp r0, #0 - addne sp, sp, #0x2ac - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, #2 - str r0, [r7, #0x14] - b _0230454C -_0230409C: - ldr r1, _02304570 ; =ov00_0231B39C - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _023040E0 - ldr r2, _02304568 ; =ov00_0231B36C - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_023040E0: - ldr r1, _02304574 ; =ov00_0231B290 - add r2, sp, #0xab - mov r0, r6 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _02304128 - ldr r2, _02304578 ; =ov00_0231B3A4 - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304128: - add r0, sp, #0xab - bl atoi - str r0, [r5, #0x19c] - ldr r1, _0230457C ; =ov00_0231B29C - add r2, sp, #0xab - mov r0, r6 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _0230417C - ldr r2, _02304578 ; =ov00_0231B3A4 - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0230417C: - add r0, sp, #0xab - bl atoi - str r0, [r5, #0x1a0] - mov r0, r8 - mov r1, r4 - bl GpiSendLogin - cmp r0, #0 - addne sp, sp, #0x2ac - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, #2 - str r0, [r7, #0x14] - b _0230454C -_023041AC: - ldr r1, _02304580 ; =ov00_0231B3D4 - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _023041F0 - ldr r2, _02304568 ; =ov00_0231B36C - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_023041F0: - ldr r1, _02304584 ; =ov00_0231B3DC - add r2, sp, #0xab - mov r0, r6 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _02304238 - ldr r2, _02304578 ; =ov00_0231B3A4 - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304238: - add r0, sp, #0xab - bl atoi - str r0, [r5, #0x198] - ldr r1, _02304574 ; =ov00_0231B290 - add r2, sp, #0xab - mov r0, r6 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _0230428C - ldr r2, _02304578 ; =ov00_0231B3A4 - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0230428C: - add r0, sp, #0xab - bl atoi - str r0, [r5, #0x19c] - ldr r1, _0230457C ; =ov00_0231B29C - add r2, sp, #0xab - mov r0, r6 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _023042E0 - ldr r2, _02304578 ; =ov00_0231B3A4 - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_023042E0: - add r0, sp, #0xab - bl atoi - str r0, [r5, #0x1a0] - ldr r1, _02304588 ; =ov00_0231B274 - add r2, sp, #0x23 - mov r0, r6 - mov r3, #0x15 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x23] - ldr r1, _0230458C ; =ov00_0231B3E8 - mov r0, r6 - add r2, r5, #0x610 - mov r3, #0x19 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [r5, #0x610] - ldr r2, [r5, #0x1a4] - cmp r2, #0 - beq _02304348 - ldr r1, _02304590 ; =ov00_0231B1F8 - add r0, sp, #0x18 - bl OS_VsPrintf - b _02304358 -_02304348: - ldr r0, _02304594 ; =ov00_0231B1FC - add r1, sp, #0x18 - ldrb r0, [r0] - strb r0, [r1] -_02304358: - ldrsb r0, [r4, #0xc2] - cmp r0, #0 - addne r0, r4, #0xc2 - bne _023043B0 - add r0, r5, #0x100 - ldrsb r0, [r0, #0x2f] - add r2, sp, #0x18 - cmp r0, #0 - add r0, sp, #0x59 - beq _02304398 - add r3, r5, #0x2f - ldr r1, _02304598 ; =ov00_0231B200 - add r3, r3, #0x100 - bl OS_VsPrintf - add r0, sp, #0x59 - b _023043B0 -_02304398: - ldr r1, _0230459C ; =ov00_0231B208 - add ip, r5, #0x144 - add r3, r5, #0x110 - str ip, [sp] - bl OS_VsPrintf - add r0, sp, #0x59 -_023043B0: - stmia sp, {r0, r4} - add r2, r4, #0x80 - str r2, [sp, #8] - add r2, r4, #0xa1 - ldr r1, _023045A0 ; =ov00_0231B210 - ldr r3, _023045A4 ; =ov00_0231B220 - add r0, sp, #0xab - str r2, [sp, #0xc] - bl OS_VsPrintf - add r0, sp, #0xab - bl strlen - mov r1, r0 - add r0, sp, #0xab - add r2, sp, #0x38 - bl MD5Digest_Gsi - ldr r1, _023045A8 ; =ov00_0231B3F0 - mov r0, r6 - add r2, sp, #0xab - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _02304434 - ldr r2, _02304578 ; =ov00_0231B3A4 - mov r0, r8 - mov r1, #1 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304434: - add r0, sp, #0x38 - add r1, sp, #0xab - mov r2, #0x20 - bl memcmp - cmp r0, #0 - beq _02304478 - ldr r2, _023045AC ; =ov00_0231B3F8 - mov r0, r8 - mov r1, #0x108 - bl GpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x2ac - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304478: - ldr r0, [r5, #0x100] - cmp r0, #0 - beq _023044A0 - ldr r1, [r5, #0x1a0] - mov r0, r8 - bl GpiProfileListAdd - ldr r1, [r5, #0x1a0] - str r1, [r0] - ldr r1, [r5, #0x19c] - str r1, [r0, #4] -_023044A0: - mov r0, #3 - str r0, [r5, #0x1f4] - ldr r1, [r7, #0xc] - ldr r0, [r7, #0x10] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - cmp r1, #0 - beq _02304540 - mov r0, #0x20 - bl gsimalloc - movs r4, r0 - bne _023044E8 - ldr r1, _023045B0 ; =ov00_0231B1E8 - mov r0, r8 - bl GpiSetErrorString - add sp, sp, #0x2ac - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_023044E8: - mov r1, #0 - mov r2, #0x20 - bl memset - ldr r0, [r5, #0x1a0] - mov r3, #0 - str r0, [r4, #4] - add r1, sp, #0x23 - add r0, r4, #8 - mov r2, #0x15 - str r3, [r4] - bl strzcpy_gsi - add r1, sp, #0x10 - mov r0, r8 - mov r3, r4 - str r7, [sp] - mov r2, #0 - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x2ac - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02304540: - mov r0, r8 - mov r1, r7 - bl GpiRemoveOperation -_0230454C: - mov r0, #0 - add sp, sp, #0x2ac - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02304558: .word 0x00000106 -_0230455C: .word 0x00000201 -_02304560: .word ov00_0231B35C -_02304564: .word ov00_0231B364 -_02304568: .word ov00_0231B36C -_0230456C: .word ov00_0231B25C -_02304570: .word ov00_0231B39C -_02304574: .word ov00_0231B290 -_02304578: .word ov00_0231B3A4 -_0230457C: .word ov00_0231B29C -_02304580: .word ov00_0231B3D4 -_02304584: .word ov00_0231B3DC -_02304588: .word ov00_0231B274 -_0230458C: .word ov00_0231B3E8 -_02304590: .word ov00_0231B1F8 -_02304594: .word ov00_0231B1FC -_02304598: .word ov00_0231B200 -_0230459C: .word ov00_0231B208 -_023045A0: .word ov00_0231B210 -_023045A4: .word ov00_0231B220 -_023045A8: .word ov00_0231B3F0 -_023045AC: .word ov00_0231B3F8 -_023045B0: .word ov00_0231B1E8 - arm_func_end GpiProcessConnect - - arm_func_start GpiCheckConnect -GpiCheckConnect: ; 0x023045B4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5] - add r2, sp, #0 - ldr r1, [r4, #0x1f0] - bl GpiCheckSocketConnect - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [sp] - cmp r0, #4 - bne _02304608 - ldr r1, _02304620 ; =0x00000107 - ldr r2, _02304624 ; =ov00_0231B418 - mov r0, r5 - bl GpiSetError - mov r0, r5 - mov r1, #4 - mov r2, #1 - bl GpiCallErrorCallback - mov r0, #4 - ldmia sp!, {r3, r4, r5, pc} -_02304608: - cmp r0, #0 - moveq r0, #0 - movne r0, #2 - strne r0, [r4, #0x1f4] - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02304620: .word 0x00000107 -_02304624: .word ov00_0231B418 - arm_func_end GpiCheckConnect - - arm_func_start GpiDisconnectCleanupProfile -GpiDisconnectCleanupProfile: ; 0x02304628 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r1, [r5, #8] - mov r6, r0 - cmp r1, #0 - ldr r4, [r6] - beq _0230468C - ldr r0, [r4, #0x104] - cmp r0, #0 - bne _0230468C - ldr r0, [r1, #8] - bl gsifree - ldr r0, [r5, #8] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r5, #8] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [r5, #8] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r5, #8] - bl gsifree - mov r0, #0 - str r0, [r5, #8] -_0230468C: - ldr r1, [r5, #0xc] - cmp r1, #0 - beq _02304730 - ldr r0, [r4, #0x104] - cmp r0, #0 - bne _02304730 - ldr r0, [r1, #8] - bl gsifree - ldr r0, [r5, #0xc] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r5, #0xc] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [r5, #0xc] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r5, #0xc] - ldr r0, [r0, #0x10] - bl gsifree - ldr r0, [r5, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [r5, #0xc] - ldr r0, [r0, #0x14] - bl gsifree - ldr r0, [r5, #0xc] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, [r5, #0xc] - ldr r0, [r0, #0x38] - cmp r0, #0 - beq _02304720 - bl ArrayFree_Gsi - ldr r0, [r5, #0xc] - mov r1, #0 - str r1, [r0, #0x38] -_02304720: - ldr r0, [r5, #0xc] - bl gsifree - mov r0, #0 - str r0, [r5, #0xc] -_02304730: - ldr r0, [r5, #0x14] - bl gsifree - mov r0, #0 - str r0, [r5, #0x14] - ldr r0, [r5, #0x1c] - bl gsifree - mov r0, #0 - str r0, [r5, #0x1c] - str r0, [r5, #0x18] - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _0230477C - ldr r0, [r4, #0x104] - cmp r0, #1 - ldreq r0, [r5, #8] - cmpeq r0, #0 - ldreq r0, [r5, #0xc] - cmpeq r0, #0 - bne _02304790 -_0230477C: - mov r0, r6 - mov r1, r5 - bl GpiRemoveProfile - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02304790: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiDisconnectCleanupProfile - - arm_func_start GpiDisconnect -GpiDisconnect: ; 0x02304798 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r4, [r5] - ldr r2, [r4, #0x1f4] - cmp r2, #4 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - cmp r2, #0 - beq _0230485C - cmp r1, #0 - beq _023047FC - cmp r2, #3 - bne _023047FC - ldr r2, _02304928 ; =ov00_0231B440 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r5 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _0230492C ; =ov00_0231B31C - mov r0, r5 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer -_023047FC: - mov r1, #1 - ldr r0, _02304930 ; =ov00_0231B454 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r4, #0x1f0] - add r3, sp, #8 - mov r0, r5 - add r2, r4, #0x210 - bl GpiSendFromBuffer - ldr r0, [r4, #0x1f0] - mvn r1, #0 - cmp r0, r1 - beq _02304848 - mov r1, #2 - bl shutdown_gsi - ldr r0, [r4, #0x1f0] - bl SocketClose - mvn r0, #0 - str r0, [r4, #0x1f0] -_02304848: - mov r0, #4 - str r0, [r4, #0x1f4] - mov r0, #0 - str r0, [r4, #0x19c] - str r0, [r4, #0x1a0] -_0230485C: - ldr r0, [r4, #0x1f8] - bl gsifree - mov r0, #0 - str r0, [r4, #0x1f8] - ldr r0, [r4, #0x208] - bl gsifree - mov r0, #0 - str r0, [r4, #0x208] - ldr r0, [r4, #0x210] - bl gsifree - mov r0, #0 - str r0, [r4, #0x210] - ldr r0, [r4, #0x5e0] - bl gsifree - mov r0, #0 - str r0, [r4, #0x5e0] - ldr r0, [r4, #0x5f0] - bl gsifree - mov r0, #0 - str r0, [r4, #0x5f0] - ldr r1, [r4, #0x5c4] - cmp r1, #0 - beq _023048CC -_023048B8: - mov r0, r5 - bl GpiRemoveOperation - ldr r1, [r4, #0x5c4] - cmp r1, #0 - bne _023048B8 -_023048CC: - mov r0, #0 - str r0, [r4, #0x5c4] - ldr r6, [r4, #0x5d4] - cmp r6, #0 - beq _023048F8 -_023048E0: - mov r1, r6 - ldr r6, [r6, #0x4c] - mov r0, r5 - bl GpiDestroyPeer - cmp r6, #0 - bne _023048E0 -_023048F8: - mov r0, #0 - str r0, [r4, #0x5d4] - ldr r6, _02304934 ; =GpiDisconnectCleanupProfile - mov r4, r0 -_02304908: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl GpiProfileMap - cmp r0, #0 - beq _02304908 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02304928: .word ov00_0231B440 -_0230492C: .word ov00_0231B31C -_02304930: .word ov00_0231B454 -_02304934: .word GpiDisconnectCleanupProfile - arm_func_end GpiDisconnect - - arm_func_start GpiIsValidDate -GpiIsValidDate: ; 0x02304938 - stmdb sp!, {r3, r4, r5, lr} - cmp r0, #0 - cmpeq r1, #0 - cmpeq r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0 - cmpge r1, #0 - cmpge r2, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - cmp r1, #0xc - addls pc, pc, r1, lsl #2 - b _02304A40 -_02304970: ; jump table - b _023049A4 ; case 0 - b _023049B4 ; case 1 - b _023049D4 ; case 2 - b _023049B4 ; case 3 - b _023049C4 ; case 4 - b _023049B4 ; case 5 - b _023049C4 ; case 6 - b _023049B4 ; case 7 - b _023049B4 ; case 8 - b _023049C4 ; case 9 - b _023049B4 ; case 10 - b _023049C4 ; case 11 - b _023049B4 ; case 12 -_023049A4: - cmp r0, #0 - beq _02304A48 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_023049B4: - cmp r0, #0x1f - ble _02304A48 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_023049C4: - cmp r0, #0x1e - ble _02304A48 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_023049D4: - mov r4, r2, lsr #0x1f - rsb r3, r4, r2, lsl #30 - adds r3, r4, r3, ror #30 - bne _02304A00 - ldr ip, _02304A90 ; =0x51EB851F - mov lr, #0x64 - smull r3, r5, ip, r2 - add r5, r4, r5, asr #5 - smull r3, ip, lr, r5 - subs r5, r2, r3 - bne _02304A20 -_02304A00: - ldr lr, _02304A90 ; =0x51EB851F - mov r3, r2, lsr #0x1f - smull ip, r4, lr, r2 - add r4, r3, r4, asr #7 - mov lr, #0x190 - smull r3, ip, lr, r4 - subs r4, r2, r3 - bne _02304A30 -_02304A20: - cmp r0, #0x1d - ble _02304A48 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02304A30: - cmp r0, #0x1c - ble _02304A48 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02304A40: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02304A48: - ldr ip, _02304A94 ; =0x0000076C - cmp r2, ip - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - add r3, ip, #0xb3 - cmp r2, r3 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} - bne _02304A88 - cmp r1, #6 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} - bne _02304A88 - cmp r0, #6 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} -_02304A88: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02304A90: .word 0x51EB851F -_02304A94: .word 0x0000076C - arm_func_end GpiIsValidDate - - arm_func_start GpiDateToInt -GpiDateToInt: ; 0x02304A98 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov lr, r1, asr #0x18 - mov ip, r1, asr #0x10 - mov r1, r1, lsl #0x10 - and r5, ip, #0xff - and r4, lr, #0xff - mov sb, r0 - mov r6, r1, lsr #0x10 - mov r8, r2 - mov r0, r4 - mov r1, r5 - mov r2, r6 - mov r7, r3 - bl GpiIsValidDate - cmp r0, #0 - bne _02304AEC - ldr r1, _02304B04 ; =ov00_0231B458 - mov r0, sb - bl GpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02304AEC: - str r4, [r8] - ldr r0, [sp, #0x20] - str r5, [r7] - str r6, [r0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02304B04: .word ov00_0231B458 - arm_func_end GpiDateToInt - - arm_func_start GpiInfoCacheToArg -GpiInfoCacheToArg: ; 0x02304B08 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r1, [r5] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #8] - beq _02304B34 - add r0, r4, #8 - mov r2, #0x1f - bl strzcpy_gsi -_02304B34: - ldr r1, [r5, #4] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x27] - beq _02304B54 - add r0, r4, #0x27 - mov r2, #0x15 - bl strzcpy_gsi -_02304B54: - ldr r1, [r5, #8] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x3c] - beq _02304B74 - add r0, r4, #0x3c - mov r2, #0x33 - bl strzcpy_gsi -_02304B74: - ldr r1, [r5, #0xc] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x6f] - beq _02304B94 - add r0, r4, #0x6f - mov r2, #0x1f - bl strzcpy_gsi -_02304B94: - ldr r1, [r5, #0x10] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x8e] - beq _02304BB4 - add r0, r4, #0x8e - mov r2, #0x1f - bl strzcpy_gsi -_02304BB4: - ldr r1, [r5, #0x14] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0xad] - beq _02304BD4 - add r0, r4, #0xad - mov r2, #0x4c - bl strzcpy_gsi -_02304BD4: - ldr r3, [r5, #0x18] - add r0, r4, #0x100 - add r1, r5, #0x1c - mov r2, #0xb - str r3, [r4, #0xfc] - bl strzcpy_gsi - add r0, r4, #0xb - add r0, r0, #0x100 - add r1, r5, #0x27 - mov r2, #3 - bl strzcpy_gsi - ldr r0, [r5, #0x2c] - adds r1, r5, #0x34 - str r0, [r4, #0x110] - ldr r0, [r5, #0x30] - str r0, [r4, #0x114] - moveq r0, #0 - streqb r0, [r4, #0x118] - beq _02304C2C - add r0, r4, #0x118 - mov r2, #0x80 - bl strzcpy_gsi -_02304C2C: - ldr r0, [r5, #0xb4] - str r0, [r4, #0x198] - ldr r0, [r5, #0xb8] - str r0, [r4, #0x19c] - ldr r0, [r5, #0xbc] - str r0, [r4, #0x1a0] - ldr r0, [r5, #0xc0] - str r0, [r4, #0x1a4] - ldr r0, [r5, #0xc4] - str r0, [r4, #0x1a8] - ldr r1, [r5, #0xc8] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x1ac] - beq _02304C74 - add r0, r4, #0x1ac - mov r2, #0x33 - bl strzcpy_gsi -_02304C74: - ldr r0, [r5, #0x18] - str r0, [r4, #0xfc] - ldr r0, [r5, #0x2c] - str r0, [r4, #0x110] - ldr r0, [r5, #0x30] - str r0, [r4, #0x114] - ldr r0, [r5, #0xb4] - str r0, [r4, #0x198] - ldr r0, [r5, #0xb8] - str r0, [r4, #0x19c] - ldr r0, [r5, #0xbc] - str r0, [r4, #0x1a0] - ldr r0, [r5, #0xc0] - str r0, [r4, #0x1a4] - ldr r0, [r5, #0xc4] - str r0, [r4, #0x1a8] - ldr r0, [r5, #0xcc] - str r0, [r4, #0x1e0] - ldr r0, [r5, #0xd0] - str r0, [r4, #0x1e4] - ldr r0, [r5, #0xd4] - str r0, [r4, #0x1e8] - ldr r0, [r5, #0xd8] - str r0, [r4, #0x1ec] - ldr r0, [r5, #0xdc] - str r0, [r4, #0x1f0] - ldr r0, [r5, #0xe0] - str r0, [r4, #0x1f4] - ldr r0, [r5, #0xe4] - str r0, [r4, #0x1f8] - ldr r0, [r5, #0xe8] - str r0, [r4, #0x1fc] - ldr r0, [r5, #0xec] - str r0, [r4, #0x200] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpiInfoCacheToArg - - arm_func_start GpiProcessGetInfo -GpiProcessGetInfo: ; 0x02304D00 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x268 - mov r4, r2 - mov sl, r0 - mov fp, r1 - mov r1, r4 - mov r2, #1 - ldr r6, [sl] - bl GpiCheckForError - cmp r0, #0 - addne sp, sp, #0x268 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230546C ; =ov00_0231B468 - mov r0, r4 - mov r2, #4 - bl strncmp - cmp r0, #0 - beq _02304D78 - ldr r2, _02305470 ; =ov00_0231B470 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x268 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02304D78: - ldr r1, _02305474 ; =ov00_0231B4A0 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - bne _02304DC0 - ldr r2, _02305470 ; =ov00_0231B470 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x268 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02304DC0: - add r0, sp, #0xec - bl atoi - mov sb, r0 - add r2, sp, #0x10 - mov r0, sl - mov r1, sb - bl GpiGetProfile - mov r0, #0 - add r7, sp, #0x178 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r5, #7 -_02304DF4: - stmia r7!, {r0, r1, r2, r3} - stmia r7!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _02304DF4 - stmia r7!, {r0, r1, r2, r3} - add r3, sp, #0xb8 - add r1, sp, #0x66 - add r2, sp, #0xcd - add r5, sp, #0x85 - add r0, sp, #0x47 - str r3, [sp, #0x17c] - add r3, sp, #0x12c - str r1, [sp, #0x184] - str r5, [sp, #0x180] - add r5, sp, #0x14 - str r0, [sp, #0x188] - str r3, [sp, #0x18c] - ldr r1, _02305478 ; =ov00_0231B4AC - mov r0, r4 - mov r3, #0x1f - str r2, [sp, #0x178] - str r5, [sp, #0x240] - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x178] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x17c] - ldr r1, _0230547C ; =ov00_0231B4B4 - mov r0, r4 - mov r3, #0x15 - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x17c] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x180] - ldr r1, _02305480 ; =ov00_0231B4C4 - mov r0, r4 - mov r3, #0x33 - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x180] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x184] - ldr r1, _02305484 ; =ov00_0231B4CC - mov r0, r4 - mov r3, #0x1f - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x184] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x188] - ldr r1, _02305488 ; =ov00_0231B4D8 - mov r0, r4 - mov r3, #0x1f - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x188] - moveq r1, #0 - streqb r1, [r0] - ldr r1, _0230548C ; =ov00_0231B4E4 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - mvneq r0, #0 - streq r0, [sp, #0x190] - beq _02304F20 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x190] -_02304F20: - ldr r2, [sp, #0x18c] - ldr r1, _02305490 ; =ov00_0231B4F0 - mov r0, r4 - mov r3, #0x4c - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x18c] - moveq r1, #0 - streqb r1, [r0] - ldr r1, _02305494 ; =ov00_0231B4FC - add r2, sp, #0x194 - mov r0, r4 - mov r3, #0xb - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - add r2, sp, #0x100 - streqb r0, [sp, #0x194] - ldr r1, _02305498 ; =ov00_0231B508 - add r2, r2, #0x9f - mov r0, r4 - mov r3, #3 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x19f] - ldr r1, _0230549C ; =ov00_0231B518 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x1a4] - beq _02304FBC - add r0, sp, #0xec - bl atof - bl _d2f - str r0, [sp, #0x1a4] -_02304FBC: - ldr r1, _023054A0 ; =ov00_0231B520 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x1a8] - beq _02304FF0 - add r0, sp, #0xec - bl atof - bl _d2f - str r0, [sp, #0x1a8] -_02304FF0: - ldr r1, _023054A4 ; =ov00_0231B528 - add r2, sp, #0x1ac - mov r0, r4 - mov r3, #0x80 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x1ac] - ldr r1, _023054A8 ; =ov00_0231B530 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - bne _02305040 - mov r0, #0 - str r0, [sp, #0x22c] - str r0, [sp, #0x230] - str r0, [sp, #0x234] - b _02305070 -_02305040: - add r0, sp, #0xec - bl atoi - add r5, sp, #0x234 - mov r1, r0 - add r2, sp, #0x22c - add r3, sp, #0x230 - mov r0, sl - str r5, [sp] - bl GpiDateToInt - cmp r0, #0 - addne sp, sp, #0x268 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02305070: - ldr r1, _023054AC ; =ov00_0231B53C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - ldreq r0, _023054B0 ; =0x00000502 - streq r0, [sp, #0x238] - beq _023050BC - ldrsb r0, [sp, #0xec] - cmp r0, #0x30 - moveq r0, #0x500 - streq r0, [sp, #0x238] - beq _023050BC - cmp r0, #0x31 - ldreq r0, _023054B4 ; =0x00000501 - streq r0, [sp, #0x238] - ldrne r0, _023054B0 ; =0x00000502 - strne r0, [sp, #0x238] -_023050BC: - ldr r1, _023054B8 ; =ov00_0231B544 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - mvneq r0, #0 - streq r0, [sp, #0x23c] - beq _023050EC - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x23c] -_023050EC: - ldr r2, [sp, #0x240] - ldr r1, _023054BC ; =ov00_0231B54C - mov r0, r4 - mov r3, #0x33 - bl GpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x240] - moveq r1, #0 - streqb r1, [r0] - ldr r1, _023054C0 ; =ov00_0231B554 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x244] - beq _02305140 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x244] -_02305140: - ldr r1, _023054C4 ; =ov00_0231B55C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x248] - beq _02305170 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x248] -_02305170: - ldr r1, _023054C8 ; =ov00_0231B564 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x24c] - beq _023051A0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x24c] -_023051A0: - ldr r1, _023054CC ; =ov00_0231B56C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x250] - beq _023051D0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x250] -_023051D0: - ldr r1, _023054D0 ; =ov00_0231B574 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x254] - beq _02305200 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x254] -_02305200: - ldr r1, _023054D4 ; =ov00_0231B57C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x258] - beq _02305230 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x258] -_02305230: - ldr r1, _023054D8 ; =ov00_0231B584 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x25c] - beq _02305260 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x25c] -_02305260: - ldr r1, _023054DC ; =ov00_0231B58C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x260] - beq _02305290 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x260] -_02305290: - ldr r1, _023054E0 ; =ov00_0231B594 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x264] - beq _023052C0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x264] -_023052C0: - ldr r1, _023054E4 ; =ov00_0231B59C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - bne _02305308 - ldr r2, _02305470 ; =ov00_0231B470 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x268 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02305308: - ldr r7, [r6, #0x5d4] - ldr r8, [r6, #0x100] - cmp r7, #0 - beq _02305364 - mov r5, #0x66 - mov r4, #1 -_02305320: - ldr r0, [r7, #0x10] - cmp r0, sb - ldreq r0, [r7] - cmpeq r0, #0x65 - bne _02305358 - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _02305350 - mov r0, sl - mov r1, sb - bl GpiProfileListAdd - str r0, [sp, #0x10] -_02305350: - mov r8, r4 - str r5, [r7] -_02305358: - ldr r7, [r7, #0x4c] - cmp r7, #0 - bne _02305320 -_02305364: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _0230538C - ldr r0, [r6, #0x100] - cmp r0, #0 - beq _0230538C - mov r0, sl - mov r1, sb - bl GpiProfileListAdd - str r0, [sp, #0x10] -_0230538C: - cmp r8, #0 - beq _023053BC - ldr r0, [sp, #0x10] - ldr r0, [r0, #0x1c] - bl gsifree - ldr r1, [sp, #0x10] - mov r2, #0 - add r0, sp, #0xec - str r2, [r1, #0x1c] - bl goastrdup - ldr r1, [sp, #0x10] - str r0, [r1, #0x1c] -_023053BC: - ldr r0, [r6, #0x100] - cmp r0, #0 - beq _023053D8 - ldr r1, [sp, #0x10] - add r2, sp, #0x178 - mov r0, sl - bl GpiSetInfoCache -_023053D8: - ldr r1, [fp, #0xc] - ldr r0, [fp, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _02305454 - mov r0, #0x204 - bl gsimalloc - movs r4, r0 - bne _02305418 - ldr r1, _023054E8 ; =ov00_0231B5A4 - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0x268 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02305418: - add r0, sp, #0x178 - mov r1, r4 - bl GpiInfoCacheToArg - mov r2, #0 - stmia r4, {r2, sb} - str fp, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, sl - mov r3, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x268 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02305454: - mov r0, sl - mov r1, fp - bl GpiRemoveOperation - mov r0, #0 - add sp, sp, #0x268 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230546C: .word ov00_0231B468 -_02305470: .word ov00_0231B470 -_02305474: .word ov00_0231B4A0 -_02305478: .word ov00_0231B4AC -_0230547C: .word ov00_0231B4B4 -_02305480: .word ov00_0231B4C4 -_02305484: .word ov00_0231B4CC -_02305488: .word ov00_0231B4D8 -_0230548C: .word ov00_0231B4E4 -_02305490: .word ov00_0231B4F0 -_02305494: .word ov00_0231B4FC -_02305498: .word ov00_0231B508 -_0230549C: .word ov00_0231B518 -_023054A0: .word ov00_0231B520 -_023054A4: .word ov00_0231B528 -_023054A8: .word ov00_0231B530 -_023054AC: .word ov00_0231B53C -_023054B0: .word 0x00000502 -_023054B4: .word 0x00000501 -_023054B8: .word ov00_0231B544 -_023054BC: .word ov00_0231B54C -_023054C0: .word ov00_0231B554 -_023054C4: .word ov00_0231B55C -_023054C8: .word ov00_0231B564 -_023054CC: .word ov00_0231B56C -_023054D0: .word ov00_0231B574 -_023054D4: .word ov00_0231B57C -_023054D8: .word ov00_0231B584 -_023054DC: .word ov00_0231B58C -_023054E0: .word ov00_0231B594 -_023054E4: .word ov00_0231B59C -_023054E8: .word ov00_0231B5A4 - arm_func_end GpiProcessGetInfo - - arm_func_start GpiAddLocalInfo -GpiAddLocalInfo: ; 0x023054EC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6] - mov r5, r1 - ldr r2, [r4, #0x5e8] - cmp r2, #0 - ble _02305568 - ldr r2, _023055C4 ; =ov00_0231B5B4 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - mov r1, r5 - bl GpiAppendIntToBuffer - ldr r2, [r4, #0x5e0] - mov r0, r6 - mov r1, r5 - bl GpiAppendStringToBuffer - ldr r2, _023055C8 ; =ov00_0231B5CC - mov r0, r6 - mov r1, r5 - bl GpiAppendStringToBuffer - mov r0, r6 - mov r1, r5 - ldr r2, [r4, #0x1a4] - bl GpiAppendIntToBuffer - mov r0, r6 - mov r1, r5 - ldr r2, _023055CC ; =ov00_0231B5D8 - bl GpiAppendStringToBuffer - mov r0, #0 - str r0, [r4, #0x5e8] -_02305568: - ldr r0, [r4, #0x5f8] - cmp r0, #0 - ble _023055BC - ldr r2, _023055D0 ; =ov00_0231B5E0 - mov r0, r6 - mov r1, r5 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - mov r1, r5 - bl GpiAppendIntToBuffer - ldr r2, [r4, #0x5f0] - mov r0, r6 - mov r1, r5 - bl GpiAppendStringToBuffer - ldr r2, _023055CC ; =ov00_0231B5D8 - mov r0, r6 - mov r1, r5 - bl GpiAppendStringToBuffer - mov r0, #0 - str r0, [r4, #0x5f8] -_023055BC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023055C4: .word ov00_0231B5B4 -_023055C8: .word ov00_0231B5CC -_023055CC: .word ov00_0231B5D8 -_023055D0: .word ov00_0231B5E0 - arm_func_end GpiAddLocalInfo - - arm_func_start GpiSendLocalInfo -GpiSendLocalInfo: ; 0x023055D4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6] - mov r5, r2 - mov r2, r1 - add r1, r4, #0x5e0 - bl GpiAppendStringToBuffer - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r2, r5 - add r1, r4, #0x5e0 - bl GpiAppendStringToBuffer - cmp r0, #0 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiSendLocalInfo - - arm_func_start GpiSendUserInfo -GpiSendUserInfo: ; 0x02305614 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6] - mov r5, r2 - mov r2, r1 - add r1, r4, #0x5f0 - bl GpiAppendStringToBuffer - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r2, r5 - add r1, r4, #0x5f0 - bl GpiAppendStringToBuffer - cmp r0, #0 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiSendUserInfo - - arm_func_start GpiSetInfoi -GpiSetInfoi: ; 0x02305654 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - sub r1, r1, #6 - sub r1, r1, #0x700 - mov r4, r0 - cmp r1, #0x18 - addls pc, pc, r1, lsl #2 - b _02305A98 -_02305674: ; jump table - b _023057AC ; case 0 - b _02305A98 ; case 1 - b _023056D8 ; case 2 - b _02305A98 ; case 3 - b _02305A98 ; case 4 - b _02305720 ; case 5 - b _023057D8 ; case 6 - b _02305804 ; case 7 - b _02305830 ; case 8 - b _02305A98 ; case 9 - b _02305868 ; case 10 - b _02305A98 ; case 11 - b _023058A0 ; case 12 - b _023058D8 ; case 13 - b _02305904 ; case 14 - b _02305930 ; case 15 - b _02305A98 ; case 16 - b _02305A98 ; case 17 - b _02305964 ; case 18 - b _02305990 ; case 19 - b _023059BC ; case 20 - b _023059E8 ; case 21 - b _02305A14 ; case 22 - b _02305A40 ; case 23 - b _02305A6C ; case 24 -_023056D8: - cmp r2, #0 - bge _023056F4 - ldr r1, _02305ABC ; =ov00_0231B5F4 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, pc} -_023056F4: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305AC4 ; =ov00_0231B4FC - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305720: - cmp r2, #0x500 - beq _02305744 - ldr r1, _02305AC8 ; =0x00000501 - cmp r2, r1 - beq _02305760 - add r1, r1, #1 - cmp r2, r1 - beq _0230577C - b _02305798 -_02305744: - ldr r1, _02305ACC ; =ov00_0231B53C - ldr r2, _02305AD0 ; =ov00_0231B60C - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305760: - ldr r1, _02305ACC ; =ov00_0231B53C - ldr r2, _02305AD4 ; =ov00_0231B610 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_0230577C: - ldr r1, _02305ACC ; =ov00_0231B53C - ldr r2, _02305AD8 ; =ov00_0231B614 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305798: - ldr r1, _02305ADC ; =ov00_0231B618 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, pc} -_023057AC: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305AE0 ; =ov00_0231B4E4 - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_023057D8: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305AE4 ; =ov00_0231B628 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305804: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305AE8 ; =ov00_0231B638 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305830: - mov r0, r2, asr #3 - add r2, r2, r0, lsr #28 - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - mov r2, r2, asr #4 - bl OS_VsPrintf - ldr r1, _02305AEC ; =ov00_0231B644 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305868: - mov r0, r2, asr #1 - add r2, r2, r0, lsr #30 - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - mov r2, r2, asr #2 - bl OS_VsPrintf - ldr r1, _02305AF0 ; =ov00_0231B650 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_023058A0: - mov r0, r2, asr #1 - add r2, r2, r0, lsr #30 - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - mov r2, r2, asr #2 - bl OS_VsPrintf - ldr r1, _02305AF4 ; =ov00_0231B660 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_023058D8: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305AF8 ; =ov00_0231B670 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305904: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305AFC ; =ov00_0231B680 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305930: - ldr r1, _02305AC0 ; =ov00_0231B608 - cmp r2, #0 - movne r2, #1 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B00 ; =ov00_0231B694 - add r2, sp, #0 - mov r0, r4 - bl GpiSendUserInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305964: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B04 ; =ov00_0231B554 - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305990: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B08 ; =ov00_0231B55C - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_023059BC: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B0C ; =ov00_0231B564 - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_023059E8: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B10 ; =ov00_0231B56C - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305A14: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B14 ; =ov00_0231B574 - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305A40: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B18 ; =ov00_0231B57C - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305A6C: - ldr r1, _02305AC0 ; =ov00_0231B608 - add r0, sp, #0 - bl OS_VsPrintf - ldr r1, _02305B1C ; =ov00_0231B584 - add r2, sp, #0 - mov r0, r4 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02305AB0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_02305A98: - ldr r1, _02305B20 ; =ov00_0231B6A4 - mov r0, r4 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, pc} -_02305AB0: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_02305ABC: .word ov00_0231B5F4 -_02305AC0: .word ov00_0231B608 -_02305AC4: .word ov00_0231B4FC -_02305AC8: .word 0x00000501 -_02305ACC: .word ov00_0231B53C -_02305AD0: .word ov00_0231B60C -_02305AD4: .word ov00_0231B610 -_02305AD8: .word ov00_0231B614 -_02305ADC: .word ov00_0231B618 -_02305AE0: .word ov00_0231B4E4 -_02305AE4: .word ov00_0231B628 -_02305AE8: .word ov00_0231B638 -_02305AEC: .word ov00_0231B644 -_02305AF0: .word ov00_0231B650 -_02305AF4: .word ov00_0231B660 -_02305AF8: .word ov00_0231B670 -_02305AFC: .word ov00_0231B680 -_02305B00: .word ov00_0231B694 -_02305B04: .word ov00_0231B554 -_02305B08: .word ov00_0231B55C -_02305B0C: .word ov00_0231B564 -_02305B10: .word ov00_0231B56C -_02305B14: .word ov00_0231B574 -_02305B18: .word ov00_0231B57C -_02305B1C: .word ov00_0231B584 -_02305B20: .word ov00_0231B6A4 - arm_func_end GpiSetInfoi - - arm_func_start GpiSetInfos -GpiSetInfos: ; 0x02305B24 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x130 - mov r6, r0 - movs r5, r2 - ldr r4, [r6] - bne _02305B50 - ldr r1, _02306284 ; =ov00_0231B6B4 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02305B50: - sub r1, r1, #0x700 - cmp r1, #0x1e - addls pc, pc, r1, lsl #2 - b _02306260 -_02305B60: ; jump table - b _02305BDC ; case 0 - b _02305C3C ; case 1 - b _02305CA0 ; case 2 - b _02305D08 ; case 3 - b _02305D7C ; case 4 - b _02305DAC ; case 5 - b _02305F30 ; case 6 - b _02305DDC ; case 7 - b _02305E0C ; case 8 - b _02305E3C ; case 9 - b _02306260 ; case 10 - b _02305E94 ; case 11 - b _02306260 ; case 12 - b _02305F60 ; case 13 - b _02305F88 ; case 14 - b _02305FB0 ; case 15 - b _02305FE0 ; case 16 - b _02306008 ; case 17 - b _02306038 ; case 18 - b _02306260 ; case 19 - b _02306060 ; case 20 - b _02306088 ; case 21 - b _023060B0 ; case 22 - b _023060E0 ; case 23 - b _02306110 ; case 24 - b _02306140 ; case 25 - b _02306170 ; case 26 - b _023061A0 ; case 27 - b _023061D0 ; case 28 - b _02306200 ; case 29 - b _02306230 ; case 30 -_02305BDC: - ldrsb r1, [r5] - cmp r1, #0 - bne _02305BFC - ldr r1, _02306284 ; =ov00_0231B6B4 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02305BFC: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - add r1, sp, #0x2d - add r0, r4, #0x110 - mov r2, #0x1f - bl strzcpy_gsi - ldr r1, _02306288 ; =ov00_0231B4AC - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305C3C: - ldrsb r1, [r5] - cmp r1, #0 - bne _02305C5C - ldr r1, _02306284 ; =ov00_0231B6B4 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02305C5C: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x15 - bl strzcpy_gsi - add r0, r4, #0x2f - add r1, sp, #0x2d - add r0, r0, #0x100 - mov r2, #0x15 - bl strzcpy_gsi - ldr r1, _0230628C ; =ov00_0231B4B4 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305CA0: - ldrsb r1, [r5] - cmp r1, #0 - bne _02305CC0 - ldr r1, _02306284 ; =ov00_0231B6B4 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02305CC0: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x33 - bl strzcpy_gsi - add r0, sp, #0x2d - bl strlwr - add r1, sp, #0x2d - add r0, r4, #0x144 - mov r2, #0x33 - bl strzcpy_gsi - ldr r1, _02306290 ; =ov00_0231B4C4 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendUserInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305D08: - ldrsb r1, [r5] - cmp r1, #0 - bne _02305D28 - ldr r1, _02306284 ; =ov00_0231B6B4 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02305D28: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - add r0, r4, #0x77 - add r1, sp, #0x2d - add r0, r0, #0x100 - mov r2, #0x1f - bl strzcpy_gsi - add r0, r4, #0x77 - add r1, sp, #0 - add r0, r0, #0x100 - bl PasswordEncryptString - ldr r1, _02306294 ; =ov00_0231B6C4 - add r2, sp, #0 - mov r0, r6 - bl GpiSendUserInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305D7C: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - ldr r1, _02306298 ; =ov00_0231B4CC - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305DAC: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - ldr r1, _0230629C ; =ov00_0231B4D8 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305DDC: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x4c - bl strzcpy_gsi - ldr r1, _023062A0 ; =ov00_0231B4F0 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305E0C: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0xb - bl strzcpy_gsi - ldr r1, _023062A4 ; =ov00_0231B4FC - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305E3C: - mov r0, r5 - bl strlen - cmp r0, #2 - beq _02305E64 - ldr r1, _023062A8 ; =ov00_0231B6D4 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02305E64: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #3 - bl strzcpy_gsi - ldr r1, _023062AC ; =ov00_0231B508 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305E94: - ldrsb r1, [r5] - cmp r1, #0 - blt _02305EB0 - cmp r1, #0x80 - bge _02305EB0 - ldr r0, _023062B0 ; =_020AED30 - ldrb r1, [r0, r1] -_02305EB0: - mov r0, r1, lsl #0x18 - mov r0, r0, asr #0x18 - cmp r0, #0x4d - add r2, sp, #0x2d - bne _02305EDC - ldr r0, _023062B4 ; =ov00_0231B60C - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r2] - strb r0, [r2, #1] - b _02305F10 -_02305EDC: - cmp r0, #0x46 - bne _02305EFC - ldr r0, _023062B8 ; =ov00_0231B610 - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r2] - strb r0, [r2, #1] - b _02305F10 -_02305EFC: - ldr r0, _023062BC ; =ov00_0231B614 - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r2] - strb r0, [r2, #1] -_02305F10: - ldr r1, _023062C0 ; =ov00_0231B53C - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305F30: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062C4 ; =ov00_0231B4E4 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305F60: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _023062C8 ; =0x0000070D - mov r0, r6 - bl GpiSetInfoi - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305F88: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _023062CC ; =0x0000070E - mov r0, r6 - bl GpiSetInfoi - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305FB0: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062D0 ; =ov00_0231B6EC - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02305FE0: - mov r0, r5 - bl atoi - mov r2, r0 - mov r0, r6 - mov r1, #0x710 - bl GpiSetInfoi - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306008: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062D4 ; =ov00_0231B700 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306038: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _023062D8 ; =0x00000712 - mov r0, r6 - bl GpiSetInfoi - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306060: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _023062DC ; =0x00000714 - mov r0, r6 - bl GpiSetInfoi - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306088: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _023062E0 ; =0x00000715 - mov r0, r6 - bl GpiSetInfoi - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_023060B0: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062E4 ; =ov00_0231B714 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_023060E0: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x33 - bl strzcpy_gsi - ldr r1, _023062E8 ; =ov00_0231B54C - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306110: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062EC ; =ov00_0231B554 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306140: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062F0 ; =ov00_0231B55C - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306170: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062F4 ; =ov00_0231B564 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_023061A0: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062F8 ; =ov00_0231B56C - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_023061D0: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _023062FC ; =ov00_0231B574 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306200: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _02306300 ; =ov00_0231B57C - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306230: - add r0, sp, #0x2d - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - ldr r1, _02306304 ; =ov00_0231B584 - add r2, sp, #0x2d - mov r0, r6 - bl GpiSendLocalInfo - cmp r0, #0 - beq _02306278 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} -_02306260: - ldr r1, _02306308 ; =ov00_0231B6A4 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x130 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02306278: - mov r0, #0 - add sp, sp, #0x130 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02306284: .word ov00_0231B6B4 -_02306288: .word ov00_0231B4AC -_0230628C: .word ov00_0231B4B4 -_02306290: .word ov00_0231B4C4 -_02306294: .word ov00_0231B6C4 -_02306298: .word ov00_0231B4CC -_0230629C: .word ov00_0231B4D8 -_023062A0: .word ov00_0231B4F0 -_023062A4: .word ov00_0231B4FC -_023062A8: .word ov00_0231B6D4 -_023062AC: .word ov00_0231B508 -_023062B0: .word _020AED30 -_023062B4: .word ov00_0231B60C -_023062B8: .word ov00_0231B610 -_023062BC: .word ov00_0231B614 -_023062C0: .word ov00_0231B53C -_023062C4: .word ov00_0231B4E4 -_023062C8: .word 0x0000070D -_023062CC: .word 0x0000070E -_023062D0: .word ov00_0231B6EC -_023062D4: .word ov00_0231B700 -_023062D8: .word 0x00000712 -_023062DC: .word 0x00000714 -_023062E0: .word 0x00000715 -_023062E4: .word ov00_0231B714 -_023062E8: .word ov00_0231B54C -_023062EC: .word ov00_0231B554 -_023062F0: .word ov00_0231B55C -_023062F4: .word ov00_0231B564 -_023062F8: .word ov00_0231B56C -_023062FC: .word ov00_0231B574 -_02306300: .word ov00_0231B57C -_02306304: .word ov00_0231B584 -_02306308: .word ov00_0231B6A4 - arm_func_end GpiSetInfos - - arm_func_start GpiSendGetInfo -GpiSendGetInfo: ; 0x0230630C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r4, [r7] - mov r5, r2 - mov r6, r1 - ldr r2, _02306394 ; =ov00_0231B720 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - ldr r2, _02306398 ; =ov00_0231B4A0 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendStringToBuffer - mov r2, r6 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - mov r0, r7 - add r1, r4, #0x210 - ldr r2, _0230639C ; =ov00_0231B738 - bl GpiAppendStringToBuffer - mov r2, r5 - mov r0, r7 - add r1, r4, #0x210 - bl GpiAppendIntToBuffer - mov r0, r7 - add r1, r4, #0x210 - ldr r2, _023063A0 ; =ov00_0231B5D8 - bl GpiAppendStringToBuffer - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02306394: .word ov00_0231B720 -_02306398: .word ov00_0231B4A0 -_0230639C: .word ov00_0231B738 -_023063A0: .word ov00_0231B5D8 - arm_func_end GpiSendGetInfo - - arm_func_start GpiGetInfo -GpiGetInfo: ; 0x023063A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - mov r8, r0 - ldr r0, [r8] - mov r4, #0 - str r4, [sp, #0x14] - ldr r0, [r0, #0x100] - cmp r2, #1 - moveq r4, #1 - cmp r0, #0 - ldr r5, [sp, #0x38] - moveq r4, #0 - cmp r5, #0 - mov r7, r1 - mov r6, r3 - cmpne r4, #0 - beq _023064C4 - add r2, sp, #0x18 - mov r0, r8 - mov r1, r7 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp, #0x18] - ldrne r0, [r0, #0x10] - cmpne r0, #0 - beq _023064C4 - mov r0, #0x204 - bl gsimalloc - movs r4, r0 - bne _02306434 - ldr r1, _02306544 ; =ov00_0231B5A4 - mov r0, r8 - bl GpiSetErrorString - add sp, sp, #0x1c - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02306434: - ldr r0, [sp, #0x18] - mov r1, r4 - ldr r0, [r0, #0x10] - bl GpiInfoCacheToArg - mov r2, #0 - ldr ip, [sp, #0x3c] - stmia r4, {r2, r7} - mov r0, #1 - stmia sp, {r0, r5} - add r3, sp, #0x14 - mov r0, r8 - mov r1, #2 - str r5, [sp, #0xc] - str ip, [sp, #0x10] - str ip, [sp, #8] - bl GpiAddOperation - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, [sp, #0x14] - add r1, sp, #0xc - ldr r5, [r2, #0x18] - mov r0, r8 - str r2, [sp] - mov r2, #0 - str r2, [sp, #4] - mov r3, r4 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x14] - mov r0, r8 - bl GpiRemoveOperation - b _02306518 -_023064C4: - str r6, [sp] - ldr r4, [sp, #0x3c] - str r5, [sp, #4] - add r3, sp, #0x14 - mov r0, r8 - mov r1, #2 - mov r2, #0 - str r4, [sp, #8] - bl GpiAddOperation - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x14] - mov r0, r8 - ldr r5, [r1, #0x18] - mov r1, r7 - mov r2, r5 - bl GpiSendGetInfo - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02306518: - cmp r6, #0 - beq _02306538 - mov r0, r8 - mov r1, r5 - bl GpiProcess - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02306538: - mov r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02306544: .word ov00_0231B5A4 - arm_func_end GpiGetInfo - - arm_func_start GpiSetInfoCache -GpiSetInfoCache: ; 0x02306548 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, [r0] - mov r5, r1 - ldr r0, [r0, #0x100] - mov r4, r2 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl GpiFreeInfoCache - mov r0, #0xf0 - bl gsimalloc - movs r6, r0 - str r0, [r5, #0x10] - beq _0230660C - mov lr, r4 - mov ip, #0xf -_0230658C: - ldmia lr!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230658C - ldr r0, [r4] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1] - ldr r0, [r4, #4] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1, #4] - ldr r0, [r4, #8] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1, #8] - ldr r0, [r4, #0xc] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1, #0xc] - ldr r0, [r4, #0x10] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1, #0x10] - ldr r0, [r4, #0x14] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1, #0x14] - ldr r0, [r4, #0xc8] - bl goastrdup - ldr r1, [r5, #0x10] - str r0, [r1, #0xc8] -_0230660C: - ldr r0, [r5, #0x10] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiSetInfoCache - - arm_func_start GpiFreeInfoCache -GpiFreeInfoCache: ; 0x02306620 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x10] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r0] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0] - ldr r0, [r4, #0x10] - ldr r0, [r0, #4] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0, #4] - ldr r0, [r4, #0x10] - ldr r0, [r0, #8] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r4, #0x10] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x10] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [r4, #0x10] - ldr r0, [r0, #0x14] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, [r4, #0x10] - ldr r0, [r0, #0xc8] - bl gsifree - ldr r0, [r4, #0x10] - mov r1, #0 - str r1, [r0, #0xc8] - ldr r0, [r4, #0x10] - bl gsifree - mov r0, #0 - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end GpiFreeInfoCache - - arm_func_start GpiStatusInfoKeyFree -GpiStatusInfoKeyFree: ; 0x023066EC - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - bl gsifree - mov r0, #0 - str r0, [r4] - ldr r0, [r4, #4] - bl gsifree - mov r0, #0 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end GpiStatusInfoKeyFree - - arm_func_start GpiStatusInfoKeysInit -GpiStatusInfoKeysInit: ; 0x02306718 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r2, _02306758 ; =GpiStatusInfoKeyFree - ldr r4, [r5] - mov r0, #8 - mov r1, #1 - bl ArrayNew_Gsi - str r0, [r4, #0x3b4] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _0230675C ; =ov00_0231B740 - mov r0, r5 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02306758: .word GpiStatusInfoKeyFree -_0230675C: .word ov00_0231B740 - arm_func_end GpiStatusInfoKeysInit - - arm_func_start GpiStatusInfoKeysDestroy -GpiStatusInfoKeysDestroy: ; 0x02306760 - stmdb sp!, {r4, lr} - ldr r4, [r0] - ldr r0, [r4, #0x3b4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl ArrayFree_Gsi - mov r0, #0 - str r0, [r4, #0x3b4] - ldmia sp!, {r4, pc} - arm_func_end GpiStatusInfoKeysDestroy - - arm_func_start GpiStatusInfoKeyCompFunc -GpiStatusInfoKeyCompFunc: ; 0x02306784 - ldr ip, _02306794 ; =strcmp - ldr r0, [r0] - ldr r1, [r1] - bx ip - .align 2, 0 -_02306794: .word strcmp - arm_func_end GpiStatusInfoKeyCompFunc - - arm_func_start GpiStatusInfoAddKey -GpiStatusInfoAddKey: ; 0x02306798 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r1 - mov r4, r3 - cmp r2, #0 - bne _023067C4 - ldr r1, _02306814 ; =ov00_0231B750 - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_023067C4: - cmp r4, #0 - bne _023067E0 - ldr r1, _02306818 ; =ov00_0231B764 - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_023067E0: - mov r0, r2 - bl goastrdup - str r0, [sp] - mov r0, r4 - bl goastrdup - str r0, [sp, #4] - ldr r2, _0230681C ; =GpiStatusInfoKeyCompFunc - add r1, sp, #0 - mov r0, r5 - bl ArrayInsertSorted_Gsi - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02306814: .word ov00_0231B750 -_02306818: .word ov00_0231B764 -_0230681C: .word GpiStatusInfoKeyCompFunc - arm_func_end GpiStatusInfoAddKey - - arm_func_start GpiStatusInfoSetKey -GpiStatusInfoSetKey: ; 0x02306820 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r1 - mov r5, r3 - cmp r2, #0 - bne _0230684C - ldr r1, _023068BC ; =ov00_0231B750 - bl GpiSetErrorString - add sp, sp, #0xc - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230684C: - mov r0, r2 - bl goastrdup - str r0, [sp, #4] - mov r4, #1 - ldr r2, _023068C0 ; =GpiStatusInfoKeyCompFunc - add r1, sp, #4 - mov r0, r6 - mov r3, #0 - str r4, [sp] - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _023068A4 - mov r0, r6 - bl ArrayNth_Gsi - mov r4, r0 - ldr r0, [r4, #4] - bl gsifree - mov r0, r5 - bl goastrdup - str r0, [r4, #4] -_023068A4: - ldr r0, [sp, #4] - bl gsifree - mov r0, #0 - str r0, [sp, #4] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023068BC: .word ov00_0231B750 -_023068C0: .word GpiStatusInfoKeyCompFunc - arm_func_end GpiStatusInfoSetKey - - arm_func_start GpiStatusInfoCheckKey -GpiStatusInfoCheckKey: ; 0x023068C4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r1 - mov r4, r3 - cmp r2, #0 - bne _023068F0 - ldr r1, _02306950 ; =ov00_0231B750 - bl GpiSetErrorString - add sp, sp, #0xc - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_023068F0: - mov r0, r2 - bl goastrdup - str r0, [sp, #4] - mov ip, #1 - ldr r2, _02306954 ; =GpiStatusInfoKeyCompFunc - add r1, sp, #4 - mov r0, r5 - mov r3, #0 - str ip, [sp] - bl ArraySearch_Gsi - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _02306938 - mov r0, r5 - bl ArrayNth_Gsi - ldr r0, [r0, #4] - str r0, [r4] -_02306938: - ldr r0, [sp, #4] - bl gsifree - mov r0, #0 - str r0, [sp, #4] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02306950: .word ov00_0231B750 -_02306954: .word GpiStatusInfoKeyCompFunc - arm_func_end GpiStatusInfoCheckKey - - arm_func_start GpiSaveKeysToBuffer -GpiSaveKeysToBuffer: ; 0x02306958 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x48 - ldr fp, [r0] - str r0, [sp] - ldr r0, [fp, #0x3b4] - str r1, [sp, #4] - mov r8, #0 - bl ArrayLength_Gsi - mov r4, r0 - ldr r1, _02306C74 ; =ov00_0231B778 - add r0, sp, #8 - mov r2, r4 - bl OS_VsPrintf - cmp r4, #0 - mov sb, r8 - ble _02306AA4 - ldr r6, _02306C78 ; =0xAAAAAAAB -_0230699C: - ldr r0, [fp, #0x3b4] - mov r1, sb - bl ArrayNth_Gsi - mov r7, r0 - ldr sl, [r7] - mov r0, sl - bl strlen - umull r1, r2, r0, r6 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - subs r2, r0, r2 - mov r0, sl - beq _02306A0C - bl strlen - mov r5, r0 - mov r0, sl - bl strlen - mov r2, r0, lsl #2 - umull r1, r0, r2, r6 - umull r1, r2, r5, r6 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - sub r2, r5, r2 - rsb r1, r2, #4 - add r5, r1, r0, lsr #1 - b _02306A1C -_02306A0C: - bl strlen - mov r1, r0, lsl #2 - umull r0, r5, r1, r6 - mov r5, r5, lsr #1 -_02306A1C: - ldr sl, [r7, #4] - mov r0, sl - bl strlen - umull r1, r2, r0, r6 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - subs r2, r0, r2 - mov r0, sl - beq _02306A7C - bl strlen - mov r7, r0 - mov r0, sl - bl strlen - mov r2, r0, lsl #2 - umull r1, r0, r2, r6 - umull r1, r2, r7, r6 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - sub r2, r7, r2 - rsb r1, r2, #4 - add r2, r1, r0, lsr #1 - b _02306A8C -_02306A7C: - bl strlen - mov r1, r0, lsl #2 - umull r0, r2, r1, r6 - mov r2, r2, lsr #1 -_02306A8C: - add r0, r5, #2 - add r0, r0, r2 - add sb, sb, #1 - cmp sb, r4 - add r8, r8, r0 - blt _0230699C -_02306AA4: - add r0, sp, #8 - bl strlen - add r0, r8, r0 - add r0, r0, #1 - bl gsimalloc - ldr r1, [sp, #4] - cmp r0, #0 - str r0, [r1] - bne _02306AE0 - ldr r1, _02306C7C ; =ov00_0231B740 - ldr r0, [sp] - bl GpiSetErrorString - add sp, sp, #0x48 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02306AE0: - add r1, sp, #8 - bl OS_VsPrintf - ldr r1, [sp, #4] - cmp r4, #0 - ldr r1, [r1] - mov sl, #0 - add r7, r1, r0 - ble _02306C68 - ldr r5, _02306C78 ; =0xAAAAAAAB -_02306B04: - ldr r0, [fp, #0x3b4] - mov r1, sl - bl ArrayNth_Gsi - mov r8, r0 - ldr r1, _02306C80 ; =ov00_0231B784 - mov r0, r7 - bl strcat - ldr r6, [r8] - add r7, r7, #1 - mov r0, r6 - bl strlen - mov r2, r0 - mov r0, r6 - mov r1, r7 - mov r3, #2 - bl B64Encode - ldr sb, [r8] - mov r0, sb - bl strlen - umull r1, r2, r0, r5 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - subs r2, r0, r2 - mov r0, sb - beq _02306BA8 - bl strlen - mov r6, r0 - mov r0, sb - bl strlen - mov r2, r0, lsl #2 - umull r1, r0, r2, r5 - umull r1, r2, r6, r5 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - sub r2, r6, r2 - rsb r1, r2, #4 - add r0, r1, r0, lsr #1 - add r7, r7, r0 - b _02306BB8 -_02306BA8: - bl strlen - mov r1, r0, lsl #2 - umull r0, r2, r1, r5 - add r7, r7, r2, lsr #1 -_02306BB8: - ldr r1, _02306C80 ; =ov00_0231B784 - mov r0, r7 - bl strcat - ldr r6, [r8, #4] - add r7, r7, #1 - mov r0, r6 - bl strlen - mov r2, r0 - mov r0, r6 - mov r1, r7 - mov r3, #2 - bl B64Encode - ldr r8, [r8, #4] - mov r0, r8 - bl strlen - umull r1, r2, r0, r5 - mov r2, r2, lsr #1 - mov r1, #3 - umull r2, r3, r1, r2 - subs r2, r0, r2 - mov r0, r8 - beq _02306C4C - bl strlen - mov r6, r0 - mov r0, r8 - bl strlen - mov r1, r0, lsl #2 - umull r0, r3, r1, r5 - umull r0, r1, r6, r5 - mov r1, r1, lsr #1 - mov r0, #3 - umull r1, r2, r0, r1 - sub r1, r6, r1 - rsb r0, r1, #4 - add r0, r0, r3, lsr #1 - add r7, r7, r0 - b _02306C5C -_02306C4C: - bl strlen - mov r1, r0, lsl #2 - umull r0, r2, r1, r5 - add r7, r7, r2, lsr #1 -_02306C5C: - add sl, sl, #1 - cmp sl, r4 - blt _02306B04 -_02306C68: - mov r0, #0 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02306C74: .word ov00_0231B778 -_02306C78: .word 0xAAAAAAAB -_02306C7C: .word ov00_0231B740 -_02306C80: .word ov00_0231B784 - arm_func_end GpiSaveKeysToBuffer - - arm_func_start GpiFailedOpCallback -GpiFailedOpCallback: ; 0x02306C84 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r6, r1 - ldr r2, [r6, #0xc] - ldr r1, [r6, #0x10] - mov r7, r0 - str r2, [sp, #8] - str r1, [sp, #0xc] - cmp r2, #0 - ldr r4, [r7] - beq _02307028 - ldr r0, [r6] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02307028 -_02306CC0: ; jump table - b _02306CDC ; case 0 - b _02306D68 ; case 1 - b _02306E60 ; case 2 - b _02306ECC ; case 3 - b _02306F54 ; case 4 - b _02306DE4 ; case 5 - b _02306FC0 ; case 6 -_02306CDC: - mov r0, #0x20 - bl gsimalloc - movs r5, r0 - bne _02306D04 - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306D04: - mov r1, #0 - mov r2, #0x20 - bl memset - ldr r1, [r6, #0x1c] - ldr r0, _02307038 ; =0x00000201 - str r1, [r5] - ldr r1, [r4, #0x5b8] - cmp r1, r0 - bne _02306D38 - ldr r1, [r4, #0x1a0] - mov r0, #0 - str r1, [r5, #4] - str r0, [r4, #0x1a0] -_02306D38: - add r1, sp, #8 - mov r0, r7 - mov r3, r5 - str r6, [sp] - mov r2, #0 - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307028 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306D68: - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _02306D90 - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306D90: - mov r2, #0 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - strb r2, [r3, #4] - strb r2, [r3, #5] - strb r2, [r3, #6] - strb r2, [r3, #7] - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r3] - str r6, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307028 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306DE4: - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _02306E0C - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306E0C: - mov r2, #0 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - strb r2, [r3, #4] - strb r2, [r3, #5] - strb r2, [r3, #6] - strb r2, [r3, #7] - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r3] - str r6, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307028 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306E60: - mov r0, #0x204 - bl gsimalloc - movs r4, r0 - bne _02306E88 - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306E88: - mov r1, #0 - mov r2, #0x204 - bl memset - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r4] - mov r0, r7 - mov r3, r4 - str r6, [sp] - mov r2, #0 - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307028 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306ECC: - mov r0, #0x10 - bl gsimalloc - movs r3, r0 - bne _02306EF4 - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306EF4: - mov r2, r3 - mov r1, #4 - mov r0, #0 -_02306F00: - strb r0, [r2] - strb r0, [r2, #1] - strb r0, [r2, #2] - strb r0, [r2, #3] - add r2, r2, #4 - subs r1, r1, #1 - bne _02306F00 - ldr r0, [r6, #0x1c] - mov r2, #0 - str r0, [r3] - str r2, [r3, #0xc] - str r6, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307028 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306F54: - mov r0, #4 - bl gsimalloc - movs r3, r0 - bne _02306F7C - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306F7C: - mov r2, #0 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r3] - str r6, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307028 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306FC0: - mov r0, #4 - bl gsimalloc - movs r3, r0 - bne _02306FE8 - ldr r1, _02307034 ; =ov00_0231B788 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02306FE8: - mov r2, #0 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r3] - str r6, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02307028: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02307034: .word ov00_0231B788 -_02307038: .word 0x00000201 - arm_func_end GpiFailedOpCallback - - arm_func_start GpiAddOperation -GpiAddOperation: ; 0x0230703C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r0, #0x24 - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [r8] - bl gsimalloc - cmp r0, #0 - bne _02307078 - ldr r1, _023070F0 ; =ov00_0231B788 - mov r0, r8 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02307078: - str r7, [r0] - ldr r1, [sp, #0x18] - str r6, [r0, #4] - str r1, [r0, #8] - mov r1, #0 - str r1, [r0, #0x14] - cmp r7, #0 - moveq r1, #1 - streq r1, [r0, #0x18] - beq _023070C0 - ldr r2, [r4, #0x234] - add r1, r2, #1 - str r1, [r4, #0x234] - str r2, [r0, #0x18] - ldr r1, [r4, #0x234] - cmp r1, #2 - movlt r1, #2 - strlt r1, [r4, #0x234] -_023070C0: - mov r3, #0 - ldr r2, [sp, #0x1c] - str r3, [r0, #0x1c] - ldr r1, [sp, #0x20] - str r2, [r0, #0xc] - str r1, [r0, #0x10] - ldr r1, [r4, #0x5c4] - str r1, [r0, #0x20] - str r0, [r4, #0x5c4] - str r0, [r5] - mov r0, r3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023070F0: .word ov00_0231B788 - arm_func_end GpiAddOperation - - arm_func_start GpiDestroyOperation -GpiDestroyOperation: ; 0x023070F4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, [r4] - ldr r2, [r0] - cmp r1, #3 - bne _02307150 - ldr r0, [r2, #0x238] - ldr r5, [r4, #4] - sub r0, r0, #1 - str r0, [r2, #0x238] - ldr r0, [r5, #4] - mov r1, #2 - bl shutdown_gsi - ldr r0, [r5, #4] - bl SocketClose - ldr r0, [r5, #0x18] - bl gsifree - mov r0, #0 - str r0, [r5, #0x18] - ldr r0, [r5, #8] - bl gsifree - mov r0, #0 - str r0, [r5, #8] -_02307150: - ldr r0, [r4, #4] - bl gsifree - mov r1, #0 - mov r0, r4 - str r1, [r4, #4] - bl gsifree - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpiDestroyOperation - - arm_func_start GpiRemoveOperation -GpiRemoveOperation: ; 0x0230716C - stmdb sp!, {r3, lr} - ldr r3, [r0] - mov ip, #0 - ldr r2, [r3, #0x5c4] - cmp r2, #0 - ldmeqia sp!, {r3, pc} -_02307184: - cmp r2, r1 - bne _023071A8 - cmp ip, #0 - ldreq r2, [r2, #0x20] - streq r2, [r3, #0x5c4] - ldrne r2, [r1, #0x20] - strne r2, [ip, #0x20] - bl GpiDestroyOperation - ldmia sp!, {r3, pc} -_023071A8: - mov ip, r2 - ldr r2, [r2, #0x20] - cmp r2, #0 - bne _02307184 - ldmia sp!, {r3, pc} - arm_func_end GpiRemoveOperation - - arm_func_start GpiFindOperationByID -GpiFindOperationByID: ; 0x023071BC - ldr r0, [r0] - ldr r3, [r0, #0x5c4] - cmp r3, #0 - beq _023071F4 -_023071CC: - ldr r0, [r3, #0x18] - cmp r0, r2 - bne _023071E8 - cmp r1, #0 - strne r3, [r1] - mov r0, #1 - bx lr -_023071E8: - ldr r3, [r3, #0x20] - cmp r3, #0 - bne _023071CC -_023071F4: - cmp r1, #0 - movne r0, #0 - strne r0, [r1] - mov r0, #0 - bx lr - arm_func_end GpiFindOperationByID - - arm_func_start GpiOperationsAreBlocking -GpiOperationsAreBlocking: ; 0x02307208 - ldr r0, [r0] - ldr r1, [r0, #0x5c4] - cmp r1, #0 - beq _0230723C -_02307218: - ldr r0, [r1, #8] - cmp r0, #0 - ldrne r0, [r1] - cmpne r0, #3 - movne r0, #1 - bxne lr - ldr r1, [r1, #0x20] - cmp r1, #0 - bne _02307218 -_0230723C: - mov r0, #0 - bx lr - arm_func_end GpiOperationsAreBlocking - - arm_func_start GpiProcessOperation -GpiProcessOperation: ; 0x02307244 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r3, [r4] - mov ip, #0 - cmp r3, #6 - addls pc, pc, r3, lsl #2 - b _023072C0 -_02307260: ; jump table - b _0230727C ; case 0 - b _02307288 ; case 1 - b _023072A0 ; case 2 - b _023072C0 ; case 3 - b _023072AC ; case 4 - b _02307294 ; case 5 - b _023072B8 ; case 6 -_0230727C: - bl GpiProcessConnect - mov ip, r0 - b _023072C0 -_02307288: - bl GpiProcessNewProfile - mov ip, r0 - b _023072C0 -_02307294: - bl GpiProcessDeleteProfle - mov ip, r0 - b _023072C0 -_023072A0: - bl GpiProcessGetInfo - mov ip, r0 - b _023072C0 -_023072AC: - bl GpiProcessRegisterUniqueNick - mov ip, r0 - b _023072C0 -_023072B8: - bl GpiProcessRegisterCdKey - mov ip, r0 -_023072C0: - cmp ip, #0 - strne ip, [r4, #0x1c] - mov r0, ip - ldmia sp!, {r4, pc} - arm_func_end GpiProcessOperation - - arm_func_start GpiProcessPeerInitiatingConnection -GpiProcessPeerInitiatingConnection: ; 0x023072D0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - ldr r4, [r7] - movs r6, r1 - addeq sp, sp, #0x14 - mov r3, #0 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r2, [r6] - cmp r2, #0x6a - cmpne r2, #0x64 - addeq sp, sp, #0x14 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, pc} - sub r2, r2, #0x65 - cmp r2, #3 - addls pc, pc, r2, lsl #2 - b _02307568 -_0230731C: ; jump table - b _02307568 ; case 0 - b _0230732C ; case 1 - b _02307340 ; case 2 - b _0230749C ; case 3 -_0230732C: - bl GpiPeerStartConnect - cmp r0, #0 - beq _02307568 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} -_02307340: - ldrh r1, [r6, #0xc] - ldr r0, [r6, #8] - add r2, sp, #8 - bl GsUdpEngineGetPeerState - ldr r0, [sp, #8] - cmp r0, #1 - bne _02307568 - ldr r1, [r6, #0x10] - add r2, sp, #0xc - mov r0, r7 - mov r5, #1 - bl GpiGetProfile - cmp r0, #0 - bne _02307390 - ldr r1, _023075B8 ; =ov00_0231B798 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_02307390: - ldr r2, _023075BC ; =ov00_0231B7B4 - mov r0, r7 - add r1, r6, #0x2c - bl GpiAppendStringToBuffer - ldr r2, _023075C0 ; =ov00_0231B7BC - mov r0, r7 - add r1, r6, #0x2c - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x1a0] - mov r0, r7 - add r1, r6, #0x2c - bl GpiAppendIntToBuffer - ldr r2, _023075C4 ; =ov00_0231B7C4 - mov r0, r7 - add r1, r6, #0x2c - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x2c - add r2, r4, #0x110 - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x2c - ldr r2, _023075C8 ; =ov00_0231B7CC - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x2c - ldr r2, [sp, #0xc] - ldr r2, [r2, #0x1c] - bl GpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x2c - ldr r2, _023075CC ; =ov00_0231B7D4 - bl GpiAppendStringToBuffer - ldr r2, [r4, #0x5d4] - cmp r2, #0 - beq _02307454 - ldr r3, [r6, #0x10] - mov r0, #0 -_02307428: - ldr r1, [r2, #0x10] - cmp r1, r3 - bne _02307448 - cmp r2, r6 - beq _02307448 - ldr r1, [r2] - cmp r1, #0x67 - movle r5, r0 -_02307448: - ldr r2, [r2, #0x4c] - cmp r2, #0 - bne _02307428 -_02307454: - cmp r5, #0 - beq _02307490 - ldr r0, [sp, #0xc] - ldr r0, [r0, #0x1c] - bl gsifree - ldr r0, [sp, #0xc] - mov r1, #0 - str r1, [r0, #0x1c] - ldr r0, [sp, #0xc] - bl GpiCanFreeProfile - cmp r0, #0 - beq _02307490 - ldr r1, [sp, #0xc] - mov r0, r7 - bl GpiRemoveProfile -_02307490: - mov r0, #0x68 - str r0, [r6] - b _02307568 -_0230749C: - ldr r0, [r6, #0x1c] - cmp r0, #0 - beq _023074B4 - ldr r1, _023075CC ; =ov00_0231B7D4 - bl strstr - mov r3, r0 -_023074B4: - cmp r3, #0 - beq _02307568 - mov r0, #0 - strb r0, [r3] - ldr r4, [r6, #0x1c] - ldr r1, _023075D0 ; =ov00_0231B7DC - mov r0, r4 - mov r2, #7 - bl strncmp - cmp r0, #0 - bne _02307528 - ldr r0, [r6, #0x18] - add r0, r0, #1 - str r0, [r6, #0x18] - cmp r0, #1 - ble _0230750C - ldr r1, _023075D4 ; =ov00_0231B7E4 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_0230750C: - mov r0, r7 - mov r1, r6 - bl GpiPeerGetSig - cmp r0, #0 - beq _02307558 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} -_02307528: - ldr r1, _023075D8 ; =ov00_0231B808 - mov r0, r4 - mov r2, #6 - bl strncmp - cmp r0, #0 - beq _02307558 - ldr r1, _023075DC ; =ov00_0231B810 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x14 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_02307558: - mov r0, #0x69 - str r0, [r6] - mov r0, #0 - str r0, [r6, #0x24] -_02307568: - ldr r0, [r6, #0x34] - cmp r0, #0 - ble _023075AC - add r1, sp, #0x10 - mov r0, #1 - str r1, [sp] - str r0, [sp, #4] - ldrh r2, [r6, #0xc] - ldr r1, [r6, #8] - mov r0, r7 - add r3, r6, #0x2c - bl GpiSendBufferToPeer - ldr r1, [sp, #0x10] - cmp r1, #0 - cmpeq r0, #0 - movne r0, #0x6a - strne r0, [r6] -_023075AC: - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_023075B8: .word ov00_0231B798 -_023075BC: .word ov00_0231B7B4 -_023075C0: .word ov00_0231B7BC -_023075C4: .word ov00_0231B7C4 -_023075C8: .word ov00_0231B7CC -_023075CC: .word ov00_0231B7D4 -_023075D0: .word ov00_0231B7DC -_023075D4: .word ov00_0231B7E4 -_023075D8: .word ov00_0231B808 -_023075DC: .word ov00_0231B810 - arm_func_end GpiProcessPeerInitiatingConnection - - arm_func_start GpiProcessPeerAcceptingConnection -GpiProcessPeerAcceptingConnection: ; 0x023075E0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x184 - mov r4, r1 - ldr r1, [r4] - mov r5, r0 - cmp r1, #0x68 - ldr r7, [r5] - addne sp, sp, #0x184 - movne r0, #3 - ldmneia sp!, {r4, r5, r6, r7, pc} - ldrh r1, [r4, #0xc] - ldr r0, [r4, #8] - add r2, sp, #0xc - bl GsUdpEngineGetPeerState - ldr r0, [sp, #0xc] - cmp r0, #3 - bne _02307638 - mov r0, #0x6a - str r0, [r4] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_02307638: - ldr r0, [r4, #0x1c] - ldr r1, _02307804 ; =ov00_0231B7D4 - bl strstr - cmp r0, #0 - beq _023077F8 - mov r1, #0 - strb r1, [r0] - ldr r6, [r4, #0x1c] - ldr r1, _02307808 ; =ov00_0231B7B4 - mov r0, r6 - mov r2, #6 - bl strncmp - cmp r0, #0 - bne _023077DC - ldr r1, _0230780C ; =ov00_0231B7BC - add r2, sp, #0x71 - mov r0, r6 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - bne _023076A0 - mov r0, #0x6a - str r0, [r4] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_023076A0: - add r0, sp, #0x71 - bl atoi - mov r6, r0 - ldr r0, [r4, #0x1c] - ldr r1, _02307810 ; =ov00_0231B7C4 - add r2, sp, #0x52 - mov r3, #0x1f - bl GpiValueForKey - cmp r0, #0 - bne _023076DC - mov r0, #0x6a - str r0, [r4] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_023076DC: - ldr r0, [r4, #0x1c] - ldr r1, _02307814 ; =ov00_0231B7CC - add r2, sp, #0x31 - mov r3, #0x21 - bl GpiValueForKey - cmp r0, #0 - bne _0230770C - mov r0, #0x6a - str r0, [r4] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_0230770C: - str r6, [sp] - add r2, r7, #0x77 - ldr r3, [r7, #0x1a0] - ldr r1, _02307818 ; =ov00_0231B830 - add r0, sp, #0x81 - add r2, r2, #0x100 - bl OS_VsPrintf - add r0, sp, #0x81 - bl strlen - mov r1, r0 - add r0, sp, #0x81 - add r2, sp, #0x10 - bl MD5Digest_Gsi - add r0, sp, #0x31 - add r1, sp, #0x10 - bl strcmp - cmp r0, #0 - beq _023077AC - ldr r2, _0230781C ; =ov00_0231B7DC - mov r0, r5 - add r1, r4, #0x2c - bl GpiAppendStringToBuffer - ldr r2, _02307804 ; =ov00_0231B7D4 - mov r0, r5 - add r1, r4, #0x2c - bl GpiAppendStringToBuffer - add r1, sp, #8 - mov r0, #1 - str r1, [sp] - str r0, [sp, #4] - ldrh r2, [r4, #0xc] - ldr r1, [r4, #8] - mov r0, r5 - add r3, r4, #0x2c - bl GpiSendBufferToPeer - mov r0, #0x6a - str r0, [r4] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_023077AC: - ldr r2, _02307820 ; =ov00_0231B808 - mov r0, r5 - add r1, r4, #0x2c - bl GpiAppendStringToBuffer - ldr r2, _02307804 ; =ov00_0231B7D4 - mov r0, r5 - add r1, r4, #0x2c - bl GpiAppendStringToBuffer - mov r0, #0x69 - str r0, [r4] - str r6, [r4, #0x10] - b _023077F0 -_023077DC: - mov r0, #0x6a - str r0, [r4] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_023077F0: - mov r0, #0 - str r0, [r4, #0x24] -_023077F8: - mov r0, #0 - add sp, sp, #0x184 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_02307804: .word ov00_0231B7D4 -_02307808: .word ov00_0231B7B4 -_0230780C: .word ov00_0231B7BC -_02307810: .word ov00_0231B7C4 -_02307814: .word ov00_0231B7CC -_02307818: .word ov00_0231B830 -_0230781C: .word ov00_0231B7DC -_02307820: .word ov00_0231B808 - arm_func_end GpiProcessPeerAcceptingConnection - - arm_func_start GpiPeerSendMessages -GpiPeerSendMessages: ; 0x02307824 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0xc - movs r8, r1 - mov sb, r0 - addeq sp, sp, #0xc - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r8, #0x34] - cmp r0, #0 - addne sp, sp, #0xc - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r8, #0x3c] - bl ArrayLength_Gsi - cmp r0, #0 - beq _023078F0 - mov sl, #0 - mov r7, sl - add r5, sp, #8 - mov r4, sl -_02307874: - ldr r0, [r8, #0x3c] - mov r1, r7 - bl ArrayNth_Gsi - mov r6, r0 - str r5, [sp] - str r4, [sp, #4] - ldrh r2, [r8, #0xc] - ldr r1, [r8, #8] - mov r0, sb - mov r3, r6 - bl GpiSendBufferToPeer - ldr r1, [sp, #8] - cmp r1, #0 - cmpeq r0, #0 - beq _023078C4 - mov r0, #0x6a - str r0, [r8] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_023078C4: - ldr r1, [r6, #0xc] - ldr r0, [r6, #8] - cmp r1, r0 - bne _023078F0 - ldr r0, [r8, #0x3c] - mov r1, sl - bl ArrayDeleteAt_Gsi - ldr r0, [r8, #0x3c] - bl ArrayLength_Gsi - cmp r0, #0 - bne _02307874 -_023078F0: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end GpiPeerSendMessages - - arm_func_start GpiProcessPeerConnected -GpiProcessPeerConnected: ; 0x023078FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov r7, r0 - ldr r5, [r7] - movs r6, r1 - addeq sp, sp, #0x2c - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r6, #0x34] - cmp r1, #0 - beq _0230796C - add r2, sp, #0x24 - mov r1, #1 - str r2, [sp] - str r1, [sp, #4] - ldrh r2, [r6, #0xc] - ldr r1, [r6, #8] - add r3, r6, #0x2c - bl GpiSendBufferToPeer - ldr r1, [sp, #0x24] - cmp r1, #0 - cmpeq r0, #0 - beq _0230796C - mov r0, #0x6a - str r0, [r6] - add sp, sp, #0x2c - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230796C: - ldr r0, [r6, #0x34] - cmp r0, #0 - bne _023079A4 - mov r0, r7 - mov r1, r6 - bl GpiPeerSendMessages - cmp r0, #0 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r6] - cmp r0, #0x6a - addeq sp, sp, #0x2c - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023079A4: - ldr r0, [r6, #0x24] - cmp r0, #0 - ble _023079C4 - mov r0, #0 - bl time_gsi - add r0, r0, #0x710 - add r0, r0, #0x2000 - str r0, [r6, #0x14] -_023079C4: - mov sb, #0 - mov sl, #2 - add fp, sp, #0x1c - add r4, sp, #0x10 -_023079D4: - mov r0, r7 - add r1, r6, #0x1c - add r2, sp, #0x18 - add r3, sp, #0x14 - str r4, [sp] - bl GpiReadMessageFromBuffer - cmp r0, #0 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [sp, #0x18] - cmp r2, #0 - beq _02307C38 - ldr r1, [sp, #0x14] - cmp r1, #0x69 - bgt _02307A54 - cmp r1, #0x68 - blt _02307A28 - beq _02307BD4 - cmp r1, #0x69 - beq _02307BF0 - b _02307C2C -_02307A28: - cmp r1, #5 - bgt _02307A48 - cmp r1, #1 - blt _02307C2C - beq _02307A98 - cmp r1, #5 - beq _02307B1C - b _02307C2C -_02307A48: - cmp r1, #0x66 - beq _02307BB0 - b _02307C2C -_02307A54: - cmp r1, #0xc9 - bgt _02307A6C - bge _02307C0C - cmp r1, #0xc8 - beq _02307C0C - b _02307C2C -_02307A6C: - sub r0, r1, #0xca - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02307C2C -_02307A7C: ; jump table - b _02307C0C ; case 0 - b _02307C0C ; case 1 - b _02307C0C ; case 2 - b _02307C0C ; case 3 - b _02307C0C ; case 4 - b _02307C0C ; case 5 - b _02307C0C ; case 6 -_02307A98: - ldr r1, [r5, #0x1c0] - ldr r0, [r5, #0x1c4] - str r1, [sp, #0x1c] - str r0, [sp, #0x20] - cmp r1, #0 - beq _02307C2C - mov r0, #0xc - bl gsimalloc - movs r8, r0 - bne _02307AD8 - ldr r1, _02307C70 ; =ov00_0231B838 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x2c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02307AD8: - ldr r0, [r6, #0x10] - str r0, [r8] - ldr r0, [sp, #0x18] - bl goastrdup - str r0, [r8, #8] - mov r0, #0 - bl time_gsi - str r0, [r8, #4] - mov r3, r8 - mov r0, r7 - stmia sp, {sb, sl} - ldmia fp, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307C2C - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02307B1C: - ldr r1, [r5, #0x1c8] - ldr r0, [r5, #0x1cc] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _02307C2C - mov r0, #0xc - bl gsimalloc - movs r8, r0 - bne _02307B5C - ldr r1, _02307C70 ; =ov00_0231B838 - mov r0, r7 - bl GpiSetErrorString - add sp, sp, #0x2c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02307B5C: - ldr r0, [r6, #0x10] - str r0, [r8] - ldr r0, [sp, #0x18] - bl goastrdup - str r0, [r8, #8] - mov r0, #0 - bl time_gsi - str r0, [r8, #4] - mov r0, #0 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - add r1, sp, #8 - mov r3, r8 - mov r0, r7 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _02307C2C - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02307BB0: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - ldr r1, [r6, #0x10] - ldr r3, _02307C74 ; =ov00_0231B848 - mov r0, r7 - mov r2, #0x67 - bl GpiSendBuddyMessage - b _02307C2C -_02307BD4: - mov r0, r7 - mov r1, r6 - bl GpiBuddyHandleKeyRequest - cmp r0, #0 - beq _02307C2C - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02307BF0: - mov r0, r7 - mov r1, r6 - bl GpiBuddyHandleKeyReply - cmp r0, #0 - beq _02307C2C - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02307C0C: - str r2, [sp] - mov r2, r1 - ldr r1, [sp, #0x10] - mov r0, r7 - str r1, [sp, #4] - mov r1, r6 - ldr r3, [r6, #0x1c] - bl GpiHandleTransferMessage -_02307C2C: - mov r0, r7 - add r1, r6, #0x1c - bl GpiClipBufferToPosition -_02307C38: - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _023079D4 - ldrh r1, [r6, #0xc] - ldr r0, [r6, #8] - add r2, sp, #0x28 - bl GsUdpEngineGetPeerState - ldr r0, [sp, #0x28] - cmp r0, #3 - moveq r0, #0x6a - streq r0, [r6] - mov r0, #0 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02307C70: .word ov00_0231B838 -_02307C74: .word ov00_0231B848 - arm_func_end GpiProcessPeerConnected - - arm_func_start GpiCheckTimedOutPeerOperations -GpiCheckTimedOutPeerOperations: ; 0x02307C78 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - movs r7, r1 - ldr r6, [r7, #0x44] - mov r8, r0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r5, #0x10 - mov r4, #0 - add sb, sp, #8 - b _02307D28 -_02307CA4: - ldr r0, [r6] - cmp r0, #2 - beq _02307D24 - bl current_time_gsi - ldr r1, [r6, #0x14] - cmp r0, r1 - bls _02307D24 - ldr r0, [r6, #8] - cmp r0, #0 - beq _02307D24 - ldr r0, [r6, #0x10] - cmp r0, #0x68 - bne _02307D18 - mov r0, r5 - bl gsimalloc - ldmib r6, {r1, r2} - mov r3, r0 - str r4, [r3, #4] - str r4, [r3, #0xc] - str r4, [r3, #8] - ldr r0, [r7, #0x10] - str r2, [sp, #8] - str r0, [r3] - str r4, [sp] - str r1, [sp, #0xc] - mov r0, r8 - str r4, [sp, #4] - ldmia sb, {r1, r2} - bl GpiAddCallback -_02307D18: - mov r0, r7 - mov r1, r6 - bl GpiPeerRemoveOp -_02307D24: - ldr r6, [r6, #0xc] -_02307D28: - cmp r6, #0 - ldrne r0, [r7, #0x48] - cmpne r6, r0 - bne _02307CA4 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GpiCheckTimedOutPeerOperations - - arm_func_start GpiProcessPeer -GpiProcessPeer: ; 0x02307D40 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r2, [r5] - mov r6, r0 - cmp r2, #0x64 - mov r4, #0 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r2, #0x69 - beq _02307D88 - ldr r2, [r5, #4] - cmp r2, #0 - beq _02307D80 - bl GpiProcessPeerInitiatingConnection - mov r4, r0 - b _02307D88 -_02307D80: - bl GpiProcessPeerAcceptingConnection - mov r4, r0 -_02307D88: - cmp r4, #0 - ldreq r0, [r5] - cmpeq r0, #0x69 - bne _02307DB4 - mov r0, r6 - mov r1, r5 - bl GpiProcessPeerConnected - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl GpiCheckTimedOutPeerOperations -_02307DB4: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiProcessPeer - - arm_func_start GpiDestroyPeer -GpiDestroyPeer: ; 0x02307DBC - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r0, [r4, #0x1c] - bl gsifree - mov r0, #0 - str r0, [r4, #0x1c] - ldr r0, [r4, #0x2c] - bl gsifree - mov r0, #0 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x3c] - cmp r0, #0 - beq _02307DFC - bl ArrayFree_Gsi - mov r0, #0 - str r0, [r4, #0x3c] -_02307DFC: - mov r0, r4 - bl gsifree - ldmia sp!, {r4, pc} - arm_func_end GpiDestroyPeer - - arm_func_start GpiRemovePeer -GpiRemovePeer: ; 0x02307E08 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - movs r4, r1 - ldr r1, [r5] - ldrne r2, [r1, #0x5d4] - cmpne r2, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r2, r4 - ldreq r0, [r4, #0x4c] - streq r0, [r1, #0x5d4] - beq _02307E60 - ldr r0, [r2, #0x4c] - cmp r0, r4 - beq _02307E58 -_02307E40: - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, r0 - ldr r0, [r0, #0x4c] - cmp r0, r4 - bne _02307E40 -_02307E58: - ldr r0, [r4, #0x4c] - str r0, [r2, #0x4c] -_02307E60: - ldr r0, [r4, #0x3c] - bl ArrayLength_Gsi - cmp r0, #0 - beq _02307EC4 - mov r6, #0 - mov r7, r6 -_02307E78: - ldr r0, [r4, #0x3c] - mov r1, r7 - bl ArrayNth_Gsi - ldr r2, [r0, #0x10] - cmp r2, #0x64 - bge _02307EA8 - ldr ip, [r0] - ldr r3, [r0, #0x14] - ldr r1, [r4, #0x10] - mov r0, r5 - add r3, ip, r3 - bl GpiSendServerBuddyMessage -_02307EA8: - ldr r0, [r4, #0x3c] - mov r1, r6 - bl ArrayDeleteAt_Gsi - ldr r0, [r4, #0x3c] - bl ArrayLength_Gsi - cmp r0, #0 - bne _02307E78 -_02307EC4: - mov r0, r5 - mov r1, r4 - bl GpiDestroyPeer - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GpiRemovePeer - - arm_func_start GpiProcessPeers -GpiProcessPeers: ; 0x02307ED4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r5, [r4] - bl GsUdpEngineThink - ldr r7, [r5, #0x5d4] - cmp r7, #0 - beq _02307F58 - mov r5, #0 -_02307EF4: - ldr r0, [r7] - ldr r6, [r7, #0x4c] - cmp r0, #0x6a - mov r0, r4 - mov r1, r7 - bne _02307F14 - bl GpiRemovePeer - b _02307F4C -_02307F14: - bl GpiProcessPeer - ldr r1, [r7] - cmp r1, #0x6a - beq _02307F40 - cmp r0, #0 - bne _02307F40 - mov r0, r5 - bl time_gsi - ldr r1, [r7, #0x14] - cmp r0, r1 - ble _02307F4C -_02307F40: - mov r0, r4 - mov r1, r7 - bl GpiRemovePeer -_02307F4C: - mov r7, r6 - cmp r6, #0 - bne _02307EF4 -_02307F58: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GpiProcessPeers - - arm_func_start GpiGetPeerByProfile -GpiGetPeerByProfile: ; 0x02307F60 - ldr r0, [r0] - ldr r0, [r0, #0x5d4] - cmp r0, #0 - beq _02307F88 -_02307F70: - ldr r2, [r0, #0x10] - cmp r2, r1 - bxeq lr - ldr r0, [r0, #0x4c] - cmp r0, #0 - bne _02307F70 -_02307F88: - mov r0, #0 - bx lr - arm_func_end GpiGetPeerByProfile - - arm_func_start GpiGetPeerByAddr -GpiGetPeerByAddr: ; 0x02307F90 - ldr r0, [r0] - cmp r1, #0 - cmpeq r2, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0, #0x5d4] - cmp r0, #0 - beq _02307FD0 -_02307FB0: - ldr r3, [r0, #8] - cmp r3, r1 - ldreqh r3, [r0, #0xc] - cmpeq r3, r2 - bxeq lr - ldr r0, [r0, #0x4c] - cmp r0, #0 - bne _02307FB0 -_02307FD0: - mov r0, #0 - bx lr - arm_func_end GpiGetPeerByAddr - - arm_func_start GpiFreeMessage -GpiFreeMessage: ; 0x02307FD8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - bl gsifree - mov r0, #0 - str r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end GpiFreeMessage - - arm_func_start GpiAddPeer -GpiAddPeer: ; 0x02307FF4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, [r0] - mov r0, #0x50 - mov r7, r1 - mov r6, r2 - bl gsimalloc - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, #0 - mov r2, #0x50 - bl memset - mov r0, #0x64 - stmia r4, {r0, r6} - mov r0, #0 - str r7, [r4, #0x10] - bl time_gsi - add r0, r0, #0x710 - add r0, r0, #0x2000 - str r0, [r4, #0x14] - ldr r0, [r5, #0x5d4] - ldr r2, _0230807C ; =GpiFreeMessage - str r0, [r4, #0x4c] - mov r0, #0x18 - mov r1, #0 - bl ArrayNew_Gsi - str r0, [r4, #0x3c] - str r4, [r5, #0x5d4] - mov r1, #0 - str r1, [r4, #0x44] - str r1, [r4, #0x48] - mov r0, r4 - str r1, [r4, #0x40] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230807C: .word GpiFreeMessage - arm_func_end GpiAddPeer - - arm_func_start GpiPeerGetSig -GpiPeerGetSig: ; 0x02308080 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r2, #0 - str r2, [sp] - mov r4, r1 - str r2, [sp, #4] - add r3, sp, #0xc - mov r1, #2 - mov r5, r0 - str r2, [sp, #8] - bl GpiAddOperation - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [sp, #0xc] - ldr r1, [r4, #0x10] - ldr r2, [r0, #0x18] - mov r0, r5 - bl GpiSendGetInfo - cmp r0, #0 - moveq r0, #0x65 - streq r0, [r4] - moveq r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpiPeerGetSig - - arm_func_start GpiPeerStartConnect -GpiPeerStartConnect: ; 0x023080E4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r1 - ldr r1, [r5, #0x10] - mov r6, r0 - add r2, sp, #4 - ldr r4, [r6] - bl GpiGetProfile - cmp r0, #0 - bne _02308124 - ldr r1, _023081D8 ; =ov00_0231B798 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02308124: - ldr r0, [sp, #4] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _023081C4 - ldrh r1, [r0, #0x20] - ldr r0, [r0, #0x1c] - add r2, sp, #0 - bl GsUdpEngineGetPeerState - ldr r0, [sp] - cmp r0, #1 - cmpeq r0, #0 - beq _023081A4 - ldr r0, [sp, #4] - ldr r3, _023081DC ; =0x00002710 - ldr r0, [r0, #0xc] - add r2, r4, #0x220 - ldrh r1, [r0, #0x20] - ldr r0, [r0, #0x1c] - bl GsUdpEngineStartTalkingToPeer - cmp r0, #5 - beq _023081A4 - ldr r2, _023081E0 ; =ov00_0231B84C - mov r0, r6 - mov r1, #5 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #0 - bl GpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_023081A4: - ldr r0, [sp, #4] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0x1c] - str r0, [r5, #8] - ldr r0, [sp, #4] - ldr r0, [r0, #0xc] - ldrh r0, [r0, #0x20] - strh r0, [r5, #0xc] -_023081C4: - mov r0, #0x67 - str r0, [r5] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023081D8: .word ov00_0231B798 -_023081DC: .word 0x00002710 -_023081E0: .word ov00_0231B84C - arm_func_end GpiPeerStartConnect - - arm_func_start GpiPeerAddMessage -GpiPeerAddMessage: ; 0x023081E4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - movs r4, r1 - mov r8, r0 - mov r7, r2 - mov r6, r3 - addeq sp, sp, #0x18 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r6, #0 - addeq sp, sp, #0x18 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - bl strlen - mov r5, r0 - add r1, sp, #0 - mov r3, #0 - str r3, [r1, #0x10] - ldr r2, _02308340 ; =ov00_0231B884 - mov r0, r8 - str r3, [r1] - str r3, [r1, #4] - str r3, [r1, #8] - str r3, [r1, #0xc] - str r3, [r1, #0x14] - str r7, [sp, #0x10] - bl GpiAppendStringToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r0, r8 - mov r2, r7 - bl GpiAppendIntToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _02308344 ; =ov00_0231B888 - add r1, sp, #0 - mov r0, r8 - bl GpiAppendStringToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r0, r8 - mov r2, r5 - bl GpiAppendIntToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _02308348 ; =ov00_0231B890 - add r1, sp, #0 - mov r0, r8 - bl GpiAppendStringToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr ip, [sp, #8] - add r1, sp, #0 - mov r0, r8 - mov r2, r6 - mov r3, r5 - str ip, [sp, #0x14] - bl GpiAppendStringToBufferLen - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r0, r8 - mov r2, #0 - bl GpiAppendCharToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0x3c] - add r1, sp, #0 - bl ArrayAppend_Gsi - mov r0, #0 - bl time_gsi - add r0, r0, #0x710 - add r0, r0, #0x2000 - str r0, [r4, #0x14] - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02308340: .word ov00_0231B884 -_02308344: .word ov00_0231B888 -_02308348: .word ov00_0231B890 - arm_func_end GpiPeerAddMessage - - arm_func_start GpiPeerStartTransferMessage -GpiPeerStartTransferMessage: ; 0x0230834C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - mov r4, r1 - cmp r3, #0 - mov r5, r0 - addeq sp, sp, #0x48 - ldr lr, [r3] - ldmib r3, {r1, ip} - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, pc} - str r1, [sp] - ldr r1, _023083A4 ; =ov00_0231B898 - add r0, sp, #8 - mov r3, lr - str ip, [sp, #4] - bl OS_VsPrintf - add r2, sp, #8 - mov r0, r5 - mov r1, r4 - bl GpiSendOrBufferString - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023083A4: .word ov00_0231B898 - arm_func_end GpiPeerStartTransferMessage - - arm_func_start GpiPeerFinishTransferMessage -GpiPeerFinishTransferMessage: ; 0x023083A8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x20 - movs r6, r1 - mov r7, r0 - mov r5, r2 - mov r4, r3 - addeq sp, sp, #0x20 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mvn r0, #0 - cmp r5, #0 - ldreq r5, _02308474 ; =ov00_0231B8AC - cmp r4, r0 - bne _023083EC - mov r0, r5 - bl strlen - mov r4, r0 -_023083EC: - ldr r1, _02308478 ; =ov00_0231B8B0 - add r0, sp, #0 - mov r2, r4 - bl OS_VsPrintf - add r2, sp, #0 - mov r0, r7 - mov r1, r6 - bl GpiSendOrBufferString - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl GpiSendOrBufferStringLenToPeer - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #0 - bl GpiSendOrBufferChar - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - bl time_gsi - add r0, r0, #0x710 - add r0, r0, #0x2000 - str r0, [r6, #0x14] - mov r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02308474: .word ov00_0231B8AC -_02308478: .word ov00_0231B8B0 - arm_func_end GpiPeerFinishTransferMessage - - arm_func_start GpiPeerLeftCallback -GpiPeerLeftCallback: ; 0x0230847C - stmdb sp!, {r3, lr} - mov ip, r0 - mov r2, r1 - mov r0, r3 - mov r1, ip - bl GpiGetPeerByAddr - cmp r0, #0 - movne r1, #0x6a - strne r1, [r0] - ldmia sp!, {r3, pc} - arm_func_end GpiPeerLeftCallback - - arm_func_start GpiPeerMessageCallback -GpiPeerMessageCallback: ; 0x023084A4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r4, [sp, #0x24] - mov r7, r0 - mov r6, r1 - mov sl, r2 - mov r0, r4 - mov r1, r7 - mov r2, r6 - mov sb, r3 - bl GpiGetPeerByAddr - movs r5, r0 - bne _023084FC - mov r0, r4 - mvn r1, #0 - mov r2, #0 - bl GpiAddPeer - movs r5, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, #0x68 - str r0, [r5] - str r7, [r5, #8] - strh r6, [r5, #0xc] -_023084FC: - ldr r7, [r5, #0x24] - ldr r8, [r5, #0x20] - ldr r6, [r5, #0x1c] - sub r0, r8, r7 - cmp sb, r0 - ble _02308564 - cmp sb, #0x800 - movlt r0, #0x800 - movge r0, sb - add r8, r7, r0 - mov r0, r6 - add r1, r8, #1 - bl gsirealloc - cmp r0, #0 - bne _02308560 - mov r0, r6 - bl gsifree - ldr r1, _02308598 ; =ov00_0231B838 - mov r0, r4 - bl GpiSetErrorString - mov r0, r4 - mov r1, #1 - mov r2, #0 - bl GpiCallErrorCallback - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02308560: - mov r6, r0 -_02308564: - mov r1, sl - mov r2, sb - add r0, r6, r7 - bl memcpy - str r6, [r5, #0x1c] - ldr r0, [r5, #0x24] - mov r1, #0 - add r0, r0, sb - str r0, [r5, #0x24] - str r8, [r5, #0x20] - ldr r0, [r5, #0x24] - strb r1, [r6, r0] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02308598: .word ov00_0231B838 - arm_func_end GpiPeerMessageCallback - - arm_func_start GpiPeerAcceptedCallback -GpiPeerAcceptedCallback: ; 0x0230859C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r2, r1 - mov r1, r4 - ldr r0, [sp, #8] - mov r4, r3 - bl GpiGetPeerByAddr - cmp r0, #0 - cmpne r4, #0 - movne r1, #0x6a - strne r1, [r0] - ldmia sp!, {r4, pc} - arm_func_end GpiPeerAcceptedCallback - - arm_func_start GpiPeerPingReplyCallback -GpiPeerPingReplyCallback: ; 0x023085CC - bx lr - arm_func_end GpiPeerPingReplyCallback - - arm_func_start GpiPeerAddOp -GpiPeerAddOp: ; 0x023085D0 - cmp r0, #0 - cmpne r1, #0 - bxeq lr - ldr r2, [r0, #0x40] - cmp r2, #0 - bne _023085F8 - str r1, [r0, #0x44] - str r1, [r0, #0x48] - str r1, [r0, #0x40] - bx lr -_023085F8: - ldr r3, [r0, #0x48] - ldr r2, [r0, #0x44] - cmp r2, r3 - streq r1, [r2, #0xc] - streq r1, [r0, #0x48] - strne r1, [r3, #0xc] - strne r1, [r0, #0x48] - bx lr - arm_func_end GpiPeerAddOp - - arm_func_start GpiPeerRemoveOp -GpiPeerRemoveOp: ; 0x02308618 - stmdb sp!, {r3, lr} - cmp r0, #0 - cmpne r1, #0 - ldmeqia sp!, {r3, pc} - ldr r2, [r0, #0x40] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldr r3, [r0, #0x44] - ldr r2, [r0, #0x48] - cmp r3, r2 - cmpeq r3, r1 - bne _0230865C - ldr r2, [r1, #0xc] - str r2, [r0, #0x48] - str r2, [r0, #0x44] - str r2, [r0, #0x40] - b _023086A0 -_0230865C: - cmp r3, r1 - bne _02308674 - ldr r2, [r3, #0xc] - str r2, [r0, #0x44] - str r2, [r0, #0x40] - b _023086A0 -_02308674: - ldr r0, [r3, #0xc] - cmp r0, r1 - beq _02308698 -_02308680: - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r3, r0 - ldr r0, [r0, #0xc] - cmp r0, r1 - bne _02308680 -_02308698: - ldr r0, [r1, #0xc] - str r0, [r3, #0xc] -_023086A0: - mov r0, r1 - bl gsifree - ldmia sp!, {r3, pc} - arm_func_end GpiPeerRemoveOp - - arm_func_start GpiProfilesTableHash -GpiProfilesTableHash: ; 0x023086AC - stmdb sp!, {r3, lr} - ldr r0, [r0] - bl _s32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - arm_func_end GpiProfilesTableHash - - arm_func_start GpiProfilesTableCompare -GpiProfilesTableCompare: ; 0x023086C0 - ldr r2, [r0] - ldr r0, [r1] - sub r0, r2, r0 - bx lr - arm_func_end GpiProfilesTableCompare - - arm_func_start GpiProfilesTableFree -GpiProfilesTableFree: ; 0x023086D0 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #8] - cmp r0, #0 - beq _02308720 - ldr r0, [r0, #8] - bl gsifree - ldr r0, [r4, #8] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r4, #8] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [r4, #8] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r4, #8] - bl gsifree - mov r0, #0 - str r0, [r4, #8] -_02308720: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _023087B8 - ldr r0, [r0, #8] - bl gsifree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0xc] - bl gsifree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x10] - bl gsifree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x14] - bl gsifree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x38] - cmp r0, #0 - beq _023087A8 - bl ArrayFree_Gsi - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0x38] -_023087A8: - ldr r0, [r4, #0xc] - bl gsifree - mov r0, #0 - str r0, [r4, #0xc] -_023087B8: - mov r0, r4 - bl GpiFreeInfoCache - ldr r0, [r4, #0x14] - bl gsifree - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, [r4, #0x1c] - bl gsifree - mov r0, #0 - str r0, [r4, #0x1c] - ldmia sp!, {r4, pc} - arm_func_end GpiProfilesTableFree - - arm_func_start GpiInitProfiles -GpiInitProfiles: ; 0x023087E4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r4, [r0] - mov r0, #0 - str r0, [r4, #0x5d0] - str r0, [r4, #0x5cc] - ldr ip, _02308830 ; =GpiProfilesTableFree - ldr r2, _02308834 ; =GpiProfilesTableHash - ldr r3, _02308838 ; =GpiProfilesTableCompare - mov r0, #0x20 - mov r1, #4 - str ip, [sp] - bl TableNew_Gsi - str r0, [r4, #0x5c8] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02308830: .word GpiProfilesTableFree -_02308834: .word GpiProfilesTableHash -_02308838: .word GpiProfilesTableCompare - arm_func_end GpiInitProfiles - - arm_func_start GpiProcessNewProfile -GpiProcessNewProfile: ; 0x0230883C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - mov r6, r2 - mov r4, r1 - mov r1, r6 - mov r2, #1 - mov r5, r0 - bl GpiCheckForError - cmp r0, #0 - addne sp, sp, #0x20 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _0230898C ; =ov00_0231B8C0 - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _023088B0 - ldr r2, _02308990 ; =ov00_0231B8C8 - mov r0, r5 - mov r1, #1 - bl GpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x20 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_023088B0: - ldr r1, _02308994 ; =ov00_0231B8F8 - add r2, sp, #0x10 - mov r0, r6 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - bne _023088F8 - ldr r2, _02308990 ; =ov00_0231B8C8 - mov r0, r5 - mov r1, #1 - bl GpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x20 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_023088F8: - add r0, sp, #0x10 - bl atoi - ldr r2, [r4, #0xc] - ldr r1, [r4, #0x10] - mov r6, r0 - str r2, [sp, #8] - str r1, [sp, #0xc] - cmp r2, #0 - beq _02308974 - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _02308944 - ldr r1, _02308998 ; =ov00_0231B904 - mov r0, r5 - bl GpiSetErrorString - add sp, sp, #0x20 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02308944: - str r6, [r3, #4] - mov r2, #0 - str r2, [r3] - str r4, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r5 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} -_02308974: - mov r0, r5 - mov r1, r4 - bl GpiRemoveOperation - mov r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230898C: .word ov00_0231B8C0 -_02308990: .word ov00_0231B8C8 -_02308994: .word ov00_0231B8F8 -_02308998: .word ov00_0231B904 - arm_func_end GpiProcessNewProfile - - arm_func_start GpiProfileListAdd -GpiProfileListAdd: ; 0x0230899C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x24 - mov r6, r0 - mov r5, r1 - cmp r5, #0 - ldr r4, [r6] - addle sp, sp, #0x24 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, pc} - add r2, sp, #0 - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, pc} - add r3, sp, #4 - mov r0, #0 - mov r2, r3 - mov r1, r0 - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2, {r0, r1} - str r5, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0x14] - str r0, [sp, #0x18] - str r0, [sp, #0x20] - str r0, [sp, #0x1c] - ldr r0, [r4, #0x5c8] - mov r1, r3 - bl TableEnter_Gsi - ldr r0, [r4, #0x5cc] - add r2, sp, #0 - add r3, r0, #1 - mov r0, r6 - mov r1, r5 - str r3, [r4, #0x5cc] - bl GpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - moveq r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end GpiProfileListAdd - - arm_func_start GpiGetProfile -GpiGetProfile: ; 0x02308A4C - stmdb sp!, {r4, lr} - sub sp, sp, #0x20 - ldr r0, [r0] - mov r4, r2 - str r1, [sp] - ldr r0, [r0, #0x5c8] - add r1, sp, #0 - bl TableLookup_Gsi - cmp r4, #0 - strne r0, [r4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - arm_func_end GpiGetProfile - - arm_func_start GpiProcessDeleteProfle -GpiProcessDeleteProfle: ; 0x02308A88 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r2 - mov r5, r0 - mov r4, r1 - mov r1, r7 - mov r2, #1 - ldr r6, [r5] - bl GpiCheckForError - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _02308B8C ; =ov00_0231B914 - mov r0, r7 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _02308B00 - ldr r2, _02308B90 ; =ov00_0231B8C8 - mov r0, r5 - mov r1, #1 - bl GpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x10 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02308B00: - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _02308B74 - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _02308B40 - ldr r1, _02308B94 ; =ov00_0231B904 - mov r0, r5 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02308B40: - ldr r0, [r6, #0x1a0] - mov r2, #0 - str r0, [r3, #4] - str r2, [r3] - str r4, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r5 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02308B74: - mov r0, r5 - mov r1, r4 - bl GpiRemoveOperation - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02308B8C: .word ov00_0231B914 -_02308B90: .word ov00_0231B8C8 -_02308B94: .word ov00_0231B904 - arm_func_end GpiProcessDeleteProfle - - arm_func_start GpiRemoveProfileByID -GpiRemoveProfileByID: ; 0x02308B98 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - add r2, sp, #0 - ldr r4, [r0] - bl GpiGetProfile - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [r4, #0x5c8] - ldr r1, [sp] - bl TableRemove_Gsi - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end GpiRemoveProfileByID - - arm_func_start GpiRemoveProfile -GpiRemoveProfile: ; 0x02308BCC - ldr r0, [r0] - ldr ip, _02308BDC ; =TableRemove_Gsi - ldr r0, [r0, #0x5c8] - bx ip - .align 2, 0 -_02308BDC: .word TableRemove_Gsi - arm_func_end GpiRemoveProfile - - arm_func_start GpiCheckProfileForUser -GpiCheckProfileForUser: ; 0x02308BE0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - ldr r4, [r6, #0x10] - mov r5, r2 - cmp r4, #0 - beq _02308C38 - ldr r0, [r5] - ldr r1, [r4] - bl strcmp - cmp r0, #0 - bne _02308C38 - ldr r0, [r5, #4] - ldr r1, [r4, #8] - bl strcmp - cmp r0, #0 - bne _02308C38 - ldr r1, [r5, #8] - mov r0, #1 - str r6, [r1] - str r0, [r5, #0xc] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02308C38: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GpiCheckProfileForUser - - arm_func_start GpiFindProfileByUser -GpiFindProfileByUser: ; 0x02308C40 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - str r1, [sp] - mov ip, #0 - str r2, [sp, #4] - mov r4, r3 - ldr r1, _02308C88 ; =GpiCheckProfileForUser - add r2, sp, #0 - str ip, [sp, #0xc] - str r4, [sp, #8] - bl GpiProfileMap - ldr r0, [sp, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r4] - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_02308C88: .word GpiCheckProfileForUser - arm_func_end GpiFindProfileByUser - - arm_func_start GpiProfileMapCallback -GpiProfileMapCallback: ; 0x02308C8C - stmdb sp!, {r3, lr} - mov ip, r0 - ldr r2, [r1, #8] - ldmia r1, {r0, r3} - mov r1, ip - blx r3 - ldmia sp!, {r3, pc} - arm_func_end GpiProfileMapCallback - - arm_func_start GpiProfileMap -GpiProfileMap: ; 0x02308CA8 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r3, [r0] - str r1, [sp, #4] - str r2, [sp, #8] - str r0, [sp] - ldr r0, [r3, #0x5c8] - ldr r1, _02308CE4 ; =GpiProfileMapCallback - add r2, sp, #0 - bl TableMapSafe2_Gsi - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_02308CE4: .word GpiProfileMapCallback - arm_func_end GpiProfileMap - - arm_func_start GpiCheckForBuddy -GpiCheckForBuddy: ; 0x02308CE8 - ldr r0, [r1, #8] - cmp r0, #0 - beq _02308D0C - ldr r3, [r2] - ldr r0, [r0] - cmp r3, r0 - streq r1, [r2, #4] - moveq r0, #0 - bxeq lr -_02308D0C: - ldr r0, [r1, #0xc] - cmp r0, #0 - beq _02308D30 - ldr r3, [r2] - ldr r0, [r0] - cmp r3, r0 - streq r1, [r2, #4] - moveq r0, #0 - bxeq lr -_02308D30: - mov r0, #1 - bx lr - arm_func_end GpiCheckForBuddy - - arm_func_start GpiFindBuddy -GpiFindBuddy: ; 0x02308D38 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - str r1, [sp] - mov r3, #0 - ldr r1, _02308D64 ; =GpiCheckForBuddy - add r2, sp, #0 - str r3, [sp, #4] - bl GpiProfileMap - ldr r0, [sp, #4] - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02308D64: .word GpiCheckForBuddy - arm_func_end GpiFindBuddy - - arm_func_start GpiRemoveBuddyStatus -GpiRemoveBuddyStatus: ; 0x02308D68 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0xc] - bl gsifree - mov r0, #0 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - bl gsifree - mov r1, #0 - mov r0, r4 - str r1, [r4, #8] - bl gsifree - ldmia sp!, {r4, pc} - arm_func_end GpiRemoveBuddyStatus - - arm_func_start GpiRemoveBuddyStatusInfo -GpiRemoveBuddyStatusInfo: ; 0x02308D9C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #8] - bl gsifree - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0xc] - bl gsifree - mov r0, #0 - str r0, [r4, #0xc] - ldr r0, [r4, #0x10] - bl gsifree - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, [r4, #0x14] - bl gsifree - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, [r4, #0x38] - bl ArrayFree_Gsi - mov r1, #0 - mov r0, r4 - str r1, [r4, #0x38] - bl gsifree - ldmia sp!, {r4, pc} - arm_func_end GpiRemoveBuddyStatusInfo - - arm_func_start GpiCanFreeProfile -GpiCanFreeProfile: ; 0x02308E00 - cmp r0, #0 - beq _02308E38 - ldr r1, [r0, #0x10] - cmp r1, #0 - ldreq r1, [r0, #8] - cmpeq r1, #0 - ldreq r1, [r0, #0xc] - cmpeq r1, #0 - ldreq r1, [r0, #0x1c] - cmpeq r1, #0 - ldreq r0, [r0, #0x14] - cmpeq r0, #0 - moveq r0, #1 - bxeq lr -_02308E38: - mov r0, #0 - bx lr - arm_func_end GpiCanFreeProfile - - arm_func_start GpiStartProfileSearch -GpiStartProfileSearch: ; 0x02308E40 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r1 - ldr r4, [r5, #4] - mov r1, #0x1000 - mov r6, r0 - add r0, r1, #1 - str r1, [r4, #0xc] - bl gsimalloc - str r0, [r4, #8] - cmp r0, #0 - bne _02308E88 - ldr r1, _02309000 ; =ov00_0231B95C - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02308E88: - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl SocketCreate - mvn r1, #0 - str r0, [r4, #4] - cmp r0, r1 - bne _02308ED4 - ldr r2, _02309004 ; =ov00_0231B96C - mov r0, r6 - mov r1, #5 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02308ED4: - mov r1, #0 - bl SocketSetBlocking - cmp r0, #0 - bne _02308F10 - ldr r2, _02309008 ; =ov00_0231B994 - mov r0, r6 - mov r1, #5 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02308F10: - ldr r0, _0230900C ; =ov00_0231B91C - bl Soc_GetHostByName - cmp r0, #0 - bne _02308F4C - ldr r2, _02309010 ; =ov00_0231B9C8 - mov r0, r6 - mov r1, #5 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02308F4C: - add r1, sp, #0 - mov r3, #0 - str r3, [r1] - mov r2, #2 - str r3, [r1, #4] - strb r2, [sp, #1] - ldr r2, [r0, #0xc] - ldr r0, _02309014 ; =0x0000CD74 - ldr r3, [r2] - mov r2, #8 - ldr r3, [r3] - str r3, [sp, #4] - strh r0, [sp, #2] - ldr r0, [r4, #4] - bl SocketConnect - mvn r1, #0 - cmp r0, r1 - bne _02308FE4 - ldr r0, [r4, #4] - bl GoaGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _02308FE4 - ldr r2, _02309018 ; =ov00_0231B9F8 - mov r0, r6 - mov r1, #5 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02308FE4: - mov r0, #1 - str r0, [r5, #0x14] - bl current_time_gsi - str r0, [r4, #0x148] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02309000: .word ov00_0231B95C -_02309004: .word ov00_0231B96C -_02309008: .word ov00_0231B994 -_0230900C: .word ov00_0231B91C -_02309010: .word ov00_0231B9C8 -_02309014: .word 0x0000CD74 -_02309018: .word ov00_0231B9F8 - arm_func_end GpiStartProfileSearch - - arm_func_start GpiInitSearchData -GpiInitSearchData: ; 0x0230901C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r0, #0x154 - mov r6, r1 - mov r5, r2 - bl gsimalloc - movs r4, r0 - bne _02309050 - ldr r1, _023090C8 ; =ov00_0231B95C - mov r0, r7 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02309050: - mov r1, #0 - mov r2, #0x154 - bl memset - str r5, [r4] - mvn r0, #0 - str r0, [r4, #4] - mov r0, #0 - str r0, [r4, #8] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0xc] - str r0, [r4, #0x20] - mov r1, #0x1000 - str r0, [r4, #0x24] - add r0, r1, #1 - str r1, [r4, #0x1c] - bl gsimalloc - str r0, [r4, #0x18] - cmp r0, #0 - bne _023090B4 - ldr r1, _023090C8 ; =ov00_0231B95C - mov r0, r7 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023090B4: - mov r0, #0 - str r0, [r4, #0x140] - str r0, [r4, #0x144] - str r4, [r6] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023090C8: .word ov00_0231B95C - arm_func_end GpiInitSearchData - - arm_func_start GpiStartSearch -GpiStartSearch: ; 0x023090CC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - ldr r4, [r5] - ldr ip, [sp, #0x20] - ldr lr, [r4, #0x238] - add lr, lr, #1 - str lr, [r4, #0x238] - stmia sp, {r2, r3} - mov r2, r1 - add r3, sp, #0xc - mov r1, #3 - str ip, [sp, #8] - bl GpiAddOperation - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp, #0xc] - mov r0, r5 - bl GpiStartProfileSearch - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp, #0xc] - ldr r0, [r1, #8] - cmp r0, #0 - beq _02309150 - ldr r1, [r1, #0x18] - mov r0, r5 - bl GpiProcess - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} -_02309150: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpiStartSearch - - arm_func_start GpiProfileSearch -GpiProfileSearch: ; 0x0230915C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - movs r8, r1 - mov sb, r0 - ldrnesb r0, [r8] - mov r7, r2 - mov r6, r3 - ldr r5, [sp, #0x28] - ldr r4, [sp, #0x2c] - cmpne r0, #0 - bne _023091EC - cmp r6, #0 - ldrnesb r0, [r6] - cmpne r0, #0 - bne _023091EC - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - bne _023091EC - cmp r4, #0 - ldrnesb r0, [r4] - cmpne r0, #0 - bne _023091EC - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _023091EC - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - bne _023091EC - ldr r1, _02309344 ; =ov00_0231BA20 - mov r0, sb - bl GpiSetErrorString - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_023091EC: - add r1, sp, #4 - mov r0, sb - mov r2, #1 - bl GpiInitSearchData - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r8, #0 - bne _02309220 - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x28] - b _02309234 -_02309220: - ldr r0, [sp, #4] - mov r1, r8 - add r0, r0, #0x28 - mov r2, #0x1f - bl strzcpy_gsi -_02309234: - cmp r7, #0 - bne _0230924C - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x47] - b _02309260 -_0230924C: - ldr r0, [sp, #4] - mov r1, r7 - add r0, r0, #0x47 - mov r2, #0x15 - bl strzcpy_gsi -_02309260: - cmp r6, #0 - bne _02309278 - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x5c] - b _0230928C -_02309278: - ldr r0, [sp, #4] - mov r1, r6 - add r0, r0, #0x5c - mov r2, #0x33 - bl strzcpy_gsi -_0230928C: - ldr r0, [sp, #4] - add r0, r0, #0x5c - bl strlwr - cmp r5, #0 - bne _023092B0 - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x8f] - b _023092C4 -_023092B0: - ldr r0, [sp, #4] - mov r1, r5 - add r0, r0, #0x8f - mov r2, #0x1f - bl strzcpy_gsi -_023092C4: - cmp r4, #0 - bne _023092DC - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0xae] - b _023092F0 -_023092DC: - ldr r0, [sp, #4] - mov r1, r4 - add r0, r0, #0xae - mov r2, #0x1f - bl strzcpy_gsi -_023092F0: - ldr r0, [sp, #0x34] - ldr r2, [sp, #0x30] - ldr r1, [sp, #4] - cmp r0, #0 - movlt r0, #0 - strlt r0, [sp, #0x34] - str r2, [r1, #0x134] - ldr r2, [sp, #0x34] - ldr r1, [sp, #4] - ldr r0, [sp, #0x40] - str r2, [r1, #0x138] - str r0, [sp] - ldr r1, [sp, #4] - ldr r2, [sp, #0x38] - ldr r3, [sp, #0x3c] - mov r0, sb - bl GpiStartSearch - cmp r0, #0 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02309344: .word ov00_0231BA20 - arm_func_end GpiProfileSearch - - arm_func_start GpiOthersBuddyList -GpiOthersBuddyList: ; 0x02309348 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r6, r1 - mov r5, r2 - add r1, sp, #4 - mov r2, #9 - mov r7, r0 - mov r4, r3 - bl GpiInitSearchData - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [sp, #4] - ldr r0, [sp, #0x24] - str r6, [r1, #0x14c] - ldr r1, [sp, #4] - ldr r3, [sp, #0x20] - str r5, [r1, #0x150] - str r0, [sp] - ldr r1, [sp, #4] - mov r0, r7 - mov r2, r4 - bl GpiStartSearch - cmp r0, #0 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GpiOthersBuddyList - - arm_func_start GpiProcessSearch -GpiProcessSearch: ; 0x023093B4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xcc - sub sp, sp, #0x400 - mov sl, r0 - ldr r0, [sl] - str r1, [sp, #0x1c] - ldr r1, [r1, #8] - str r0, [sp, #0x2c] - ldr r0, [sp, #0x1c] - cmp r1, #0 - movne r4, #1 - moveq r4, #0 - ldr r6, [r0, #4] - cmp r1, #0 - bne _02309440 - bl current_time_gsi - ldr r2, [r6, #0x148] - ldr r1, _0230A144 ; =0x0000EA60 - sub r0, r0, r2 - cmp r0, r1 - bls _02309440 - ldr r1, _0230A148 ; =0x00000D02 - mov r3, #1 - ldr r2, _0230A14C ; =ov00_0231BA34 - mov r0, sl - str r3, [r6, #0x144] - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #0 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02309440: - mov r1, #1 - ldr r0, _0230A150 ; =ov00_0231BA4C - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r6, #4] - add r3, sp, #0x74 - mov r0, sl - add r2, r6, #0x18 - bl GpiSendFromBuffer - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x1c] - ldr r0, [r0, #0x14] - cmp r0, #1 - bne _02309C8C - ldr r1, [r6, #4] - add r2, sp, #0x88 - mov r0, sl - bl GpiCheckSocketConnect - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x88] - cmp r0, #4 - bne _023094E0 - ldr r1, _0230A154 ; =0x00000D01 - ldr r2, _0230A158 ; =ov00_0231BA50 - mov r0, sl - bl GpiSetError - mov r0, sl - mov r1, #4 - mov r2, #0 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023094E0: - cmp r0, #3 - bne _0230B46C - ldr r0, [r6] - cmp r0, #1 - bne _023096CC - ldr r2, _0230A15C ; =ov00_0231BA7C - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A160 ; =ov00_0231BA88 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x2c] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl GpiAppendIntToBuffer - ldr r2, _0230A164 ; =ov00_0231BA94 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A168 ; =ov00_0231BAA0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x60c] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A16C ; =ov00_0231BAB0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a4] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldrsb r0, [r6, #0x28] - cmp r0, #0 - beq _023095C0 - ldr r2, _0230A170 ; =ov00_0231BABC - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x28 - bl GpiAppendStringToBuffer -_023095C0: - ldrsb r0, [r6, #0x47] - cmp r0, #0 - beq _023095EC - ldr r2, _0230A174 ; =ov00_0231BAC4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x47 - bl GpiAppendStringToBuffer -_023095EC: - ldrsb r0, [r6, #0x5c] - cmp r0, #0 - beq _02309618 - ldr r2, _0230A178 ; =ov00_0231BAD4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl GpiAppendStringToBuffer -_02309618: - ldrsb r0, [r6, #0x8f] - cmp r0, #0 - beq _02309644 - ldr r2, _0230A17C ; =ov00_0231BADC - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x8f - bl GpiAppendStringToBuffer -_02309644: - ldrsb r0, [r6, #0xae] - cmp r0, #0 - beq _02309670 - ldr r2, _0230A180 ; =ov00_0231BAE8 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xae - bl GpiAppendStringToBuffer -_02309670: - ldr r0, [r6, #0x134] - cmp r0, #0 - beq _0230969C - ldr r2, _0230A184 ; =ov00_0231BAF4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [r6, #0x134] - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendIntToBuffer -_0230969C: - ldr r0, [r6, #0x138] - cmp r0, #0 - ble _02309C4C - ldr r2, _0230A188 ; =ov00_0231BB00 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [r6, #0x138] - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - b _02309C4C -_023096CC: - cmp r0, #2 - bne _0230972C - ldr r2, _0230A18C ; =ov00_0231BB08 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A178 ; =ov00_0231BAD4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl GpiAppendStringToBuffer - ldr r2, _0230A16C ; =ov00_0231BAB0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a4] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - b _02309C4C -_0230972C: - cmp r0, #3 - bne _023097DC - ldr r2, _0230A190 ; =ov00_0231BB10 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A178 ; =ov00_0231BAD4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl GpiAppendStringToBuffer - add r0, r6, #0xcd - add r1, sp, #0x9c - bl PasswordEncryptString - ldr r2, _0230A194 ; =ov00_0231BB18 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, sp, #0x9c - bl GpiAppendStringToBuffer - ldr r2, _0230A168 ; =ov00_0231BAA0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x60c] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A16C ; =ov00_0231BAB0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a4] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - b _02309C4C -_023097DC: - cmp r0, #4 - bne _02309860 - ldr r2, _0230A198 ; =ov00_0231BB24 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A160 ; =ov00_0231BA88 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x2c] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl GpiAppendIntToBuffer - ldr r2, _0230A164 ; =ov00_0231BA94 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A19C ; =ov00_0231BB30 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [r6, #0x13c] - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - b _02309C4C -_02309860: - cmp r0, #5 - bne _0230990C - ldr r2, _0230A1A0 ; =ov00_0231BB3C - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A170 ; =ov00_0231BABC - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x28 - bl GpiAppendStringToBuffer - ldr r2, _0230A178 ; =ov00_0231BAD4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl GpiAppendStringToBuffer - ldr r2, _0230A16C ; =ov00_0231BAB0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a4] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - add r0, r6, #0xcd - add r1, sp, #0x9c - bl PasswordEncryptString - ldr r2, _0230A194 ; =ov00_0231BB18 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, sp, #0x9c - bl GpiAppendStringToBuffer - b _02309C4C -_0230990C: - cmp r0, #6 - bne _02309A4C - ldr r2, _0230A1A4 ; =ov00_0231BB44 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A170 ; =ov00_0231BABC - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x28 - bl GpiAppendStringToBuffer - ldr r2, _0230A178 ; =ov00_0231BAD4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl GpiAppendStringToBuffer - add r0, r6, #0xcd - add r1, sp, #0x9c - bl PasswordEncryptString - ldr r2, _0230A194 ; =ov00_0231BB18 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, sp, #0x9c - bl GpiAppendStringToBuffer - ldr r2, _0230A1A8 ; =ov00_0231BB50 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x608] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A168 ; =ov00_0231BAA0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x60c] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A174 ; =ov00_0231BAC4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x47 - bl GpiAppendStringToBuffer - ldrsb r0, [r6, #0xec] - cmp r0, #0 - beq _02309A24 - ldr r2, _0230A1AC ; =ov00_0231BB5C - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xec - bl GpiAppendStringToBuffer -_02309A24: - ldr r2, _0230A16C ; =ov00_0231BAB0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x2c] - add r1, r6, #0x18 - ldr r2, [r0, #0x1a4] - mov r0, sl - bl GpiAppendIntToBuffer - b _02309C4C -_02309A4C: - cmp r0, #7 - bne _02309AD4 - ldr r2, _0230A1B0 ; =ov00_0231BB64 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A160 ; =ov00_0231BA88 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x2c] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl GpiAppendIntToBuffer - ldr r2, _0230A164 ; =ov00_0231BA94 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A168 ; =ov00_0231BAA0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x60c] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - b _02309C4C -_02309AD4: - cmp r0, #9 - bne _02309BF0 - ldr r2, _0230A1B4 ; =ov00_0231BB70 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A160 ; =ov00_0231BA88 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x2c] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl GpiAppendIntToBuffer - ldr r2, _0230A164 ; =ov00_0231BA94 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A1B8 ; =ov00_0231BB80 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [r6, #0x150] - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r2, _0230A1BC ; =ov00_0231BB8C - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [r6, #0x14c] - cmp r0, #0 - beq _02309BC8 - ldr r2, [r0] - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r0, [r6, #0x150] - mov r5, #1 - cmp r0, #1 - ble _02309BC8 - ldr r7, _0230A1C0 ; =ov00_0231BB94 -_02309B94: - mov r0, sl - mov r2, r7 - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r1, [r6, #0x14c] - mov r0, sl - ldr r2, [r1, r5, lsl #2] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer - ldr r0, [r6, #0x150] - add r5, r5, #1 - cmp r5, r0 - blt _02309B94 -_02309BC8: - ldr r2, _0230A168 ; =ov00_0231BAA0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x2c] - add r1, r6, #0x18 - ldr r2, [r0, #0x60c] - mov r0, sl - bl GpiAppendIntToBuffer - b _02309C4C -_02309BF0: - cmp r0, #8 - bne _02309C4C - ldr r2, _0230A1C4 ; =ov00_0231BB98 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A1C8 ; =ov00_0231BBA8 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x47 - bl GpiAppendStringToBuffer - ldr r2, _0230A168 ; =ov00_0231BAA0 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, [sp, #0x2c] - mov r0, sl - ldr r2, [r2, #0x60c] - add r1, r6, #0x18 - bl GpiAppendIntToBuffer -_02309C4C: - ldr r2, _0230A1CC ; =ov00_0231BBB8 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A1D0 ; =ov00_02328804 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r2, _0230A1D4 ; =ov00_0231BBC4 - mov r0, sl - add r1, r6, #0x18 - bl GpiAppendStringToBuffer - ldr r0, [sp, #0x1c] - mov r1, #4 - str r1, [r0, #0x14] - b _0230B46C -_02309C8C: - cmp r0, #4 - bne _0230B46C - add r1, sp, #0x74 - ldr r0, _0230A150 ; =ov00_0231BA4C - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r6, #4] - add r3, sp, #0x78 - mov r0, sl - add r2, r6, #8 - bl GpiRecvToBuffer - cmp r0, #0 - beq _02309D00 - cmp r0, #3 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230A154 ; =0x00000D01 - ldr r2, _0230A1D8 ; =ov00_0231BBCC - mov r0, sl - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #0 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02309D00: - ldr r0, [sp, #0x1c] - ldr r0, [r0, #8] - cmp r0, #0 - beq _02309D60 - bl current_time_gsi - ldr r2, [r6, #0x148] - ldr r1, _0230A144 ; =0x0000EA60 - sub r0, r0, r2 - cmp r0, r1 - bls _02309D60 - ldr r1, _0230A148 ; =0x00000D02 - mov r3, #1 - ldr r2, _0230A14C ; =ov00_0231BA34 - mov r0, sl - str r3, [r6, #0x144] - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #0 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02309D60: - ldr r0, [r6, #8] - ldr r1, _0230A1D4 ; =ov00_0231BBC4 - bl strstr - cmp r0, #0 - beq _0230B46C - mov r0, #0 - str r0, [sp, #0x84] - ldr r0, [sp, #0x1c] - mov r1, #5 - str r1, [r0, #0x14] - ldr r1, [r6, #8] - mov r0, sl - mov r2, #1 - bl GpiCheckForError - cmp r0, #0 - beq _02309DB8 - add sp, sp, #0xcc - mov r0, #1 - str r0, [r6, #0x144] - add sp, sp, #0x400 - mov r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02309DB8: - ldr r0, [r6] - cmp r0, #1 - bne _0230A214 - ldr r1, _0230A1DC ; =0x00000601 - mov r0, #0 - add r4, sp, #0x200 - str r0, [sp, #0x30] - str r0, [sp, #0x8c] - str r0, [sp, #0x90] - str r0, [sp, #0x98] - str r1, [sp, #0x94] - add r4, r4, #0xc9 - add r5, sp, #0xc9 - add fp, sp, #0x84 -_02309DF0: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, fp - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230A1E0 ; =ov00_0231BBF8 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _02309E8C - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, fp - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230A1E4 ; =ov00_0231BC00 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _02309E80 - ldr r1, _0230A1E8 ; =ov00_0231BC08 - mov r0, r5 - bl strcmp - cmp r0, #0 - movne r0, #0x600 - strne r0, [sp, #0x94] -_02309E80: - mov r0, #1 - str r0, [sp, #0x30] - b _0230A078 -_02309E8C: - ldr r1, _0230A1EC ; =ov00_0231BC0C - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A048 - ldr r1, [sp, #0x90] - ldr r0, [sp, #0x98] - add r2, r1, #1 - mov r1, #0xac - mul r1, r2, r1 - str r2, [sp, #0x90] - bl gsirealloc - movs r7, r0 - str r7, [sp, #0x98] - bne _02309EE4 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02309EE4: - ldr r0, [sp, #0x90] - mov r1, #0 - sub r2, r0, #1 - mov r0, #0xac - mul r8, r2, r0 - add sb, r7, r8 - mov r0, sb - mov r2, #0xac - bl memset - mov r0, r5 - bl atoi - str r0, [r7, r8] - mov r8, #0 -_02309F18: - ldr r7, [sp, #0x84] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - mov r2, fp - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230A1F4 ; =ov00_0231BC10 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _02309F6C - add r0, sb, #4 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - b _0230A03C -_02309F6C: - ldr r1, _0230A1F8 ; =ov00_0231BC18 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _02309F94 - add r0, sb, #0x23 - mov r1, r5 - mov r2, #0x15 - bl strzcpy_gsi - b _0230A03C -_02309F94: - ldr r1, _0230A1FC ; =ov00_0231BC24 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _02309FBC - add r0, sb, #0x38 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - b _0230A03C -_02309FBC: - ldr r1, _0230A200 ; =ov00_0231BC30 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _02309FE4 - add r0, sb, #0x57 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - b _0230A03C -_02309FE4: - ldr r1, _0230A204 ; =ov00_0231BC3C - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A00C - add r0, sb, #0x76 - mov r1, r5 - mov r2, #0x33 - bl strzcpy_gsi - b _0230A03C -_0230A00C: - ldr r1, _0230A1EC ; =ov00_0231BC0C - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _0230A034 - ldr r1, _0230A1E0 ; =ov00_0231BBF8 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A03C -_0230A034: - str r7, [sp, #0x84] - mov r8, #1 -_0230A03C: - cmp r8, #0 - beq _02309F18 - b _0230A078 -_0230A048: - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A078: - ldr r0, [sp, #0x30] - cmp r0, #0 - beq _02309DF0 - ldr r0, [sp, #0x1c] - ldr r4, [sp, #0x94] - ldr r3, [r0, #0xc] - ldr r2, [r0, #0x10] - str r3, [sp, #0x7c] - str r2, [sp, #0x80] - cmp r3, #0 - beq _0230A0B0 - add r1, sp, #0x8c - mov r0, sl - blx r3 -_0230A0B0: - cmp r4, #0x600 - ldreq r0, [sp, #0x94] - cmpeq r0, #0x600 - bne _0230A130 - add r0, r6, #0x8f - str r0, [sp] - add r0, r6, #0xae - str r0, [sp, #4] - ldr r1, [r6, #0x134] - mov r0, sl - str r1, [sp, #8] - ldr r3, [sp, #0x90] - ldr r2, [r6, #0x138] - add r1, r6, #0x28 - add r2, r3, r2 - str r2, [sp, #0xc] - ldr r2, [sp, #0x1c] - ldr r3, [r2, #8] - add r2, r6, #0x47 - str r3, [sp, #0x10] - ldr r3, [sp, #0x1c] - ldr r4, [r3, #0xc] - add r3, r6, #0x5c - str r4, [sp, #0x14] - ldr r4, [sp, #0x1c] - ldr r4, [r4, #0x10] - str r4, [sp, #0x18] - bl GpiProfileSearch - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A130: - ldr r0, [sp, #0x98] - bl gsifree - mov r0, #0 - str r0, [sp, #0x98] - b _0230B460 - .align 2, 0 -_0230A144: .word 0x0000EA60 -_0230A148: .word 0x00000D02 -_0230A14C: .word ov00_0231BA34 -_0230A150: .word ov00_0231BA4C -_0230A154: .word 0x00000D01 -_0230A158: .word ov00_0231BA50 -_0230A15C: .word ov00_0231BA7C -_0230A160: .word ov00_0231BA88 -_0230A164: .word ov00_0231BA94 -_0230A168: .word ov00_0231BAA0 -_0230A16C: .word ov00_0231BAB0 -_0230A170: .word ov00_0231BABC -_0230A174: .word ov00_0231BAC4 -_0230A178: .word ov00_0231BAD4 -_0230A17C: .word ov00_0231BADC -_0230A180: .word ov00_0231BAE8 -_0230A184: .word ov00_0231BAF4 -_0230A188: .word ov00_0231BB00 -_0230A18C: .word ov00_0231BB08 -_0230A190: .word ov00_0231BB10 -_0230A194: .word ov00_0231BB18 -_0230A198: .word ov00_0231BB24 -_0230A19C: .word ov00_0231BB30 -_0230A1A0: .word ov00_0231BB3C -_0230A1A4: .word ov00_0231BB44 -_0230A1A8: .word ov00_0231BB50 -_0230A1AC: .word ov00_0231BB5C -_0230A1B0: .word ov00_0231BB64 -_0230A1B4: .word ov00_0231BB70 -_0230A1B8: .word ov00_0231BB80 -_0230A1BC: .word ov00_0231BB8C -_0230A1C0: .word ov00_0231BB94 -_0230A1C4: .word ov00_0231BB98 -_0230A1C8: .word ov00_0231BBA8 -_0230A1CC: .word ov00_0231BBB8 -_0230A1D0: .word ov00_02328804 -_0230A1D4: .word ov00_0231BBC4 -_0230A1D8: .word ov00_0231BBCC -_0230A1DC: .word 0x00000601 -_0230A1E0: .word ov00_0231BBF8 -_0230A1E4: .word ov00_0231BC00 -_0230A1E8: .word ov00_0231BC08 -_0230A1EC: .word ov00_0231BC0C -_0230A1F0: .word ov00_0231B95C -_0230A1F4: .word ov00_0231BC10 -_0230A1F8: .word ov00_0231BC18 -_0230A1FC: .word ov00_0231BC24 -_0230A200: .word ov00_0231BC30 -_0230A204: .word ov00_0231BC3C -_0230A208: .word ov00_0231BC44 -_0230A20C: .word ov00_0231BC6C -_0230A210: .word ov00_0231BC70 -_0230A214: - cmp r0, #2 - bne _0230A340 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x34] - str r0, [sp, #0x38] - cmp r1, #0 - beq _0230B460 - add r0, sp, #0xc9 - str r0, [sp] - add r3, sp, #0x200 - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230A20C ; =ov00_0231BC6C - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230A2B0 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A2B0: - mov r0, #0x3c - bl gsimalloc - movs r4, r0 - bne _0230A2DC - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A2DC: - mov r0, #0 - str r0, [r4] - add r0, r4, #4 - add r1, r6, #0x5c - mov r2, #0x33 - bl strzcpy_gsi - ldrsb r0, [sp, #0xc9] - ldr r1, [sp, #0x1c] - add r2, sp, #0x34 - cmp r0, #0x30 - moveq r0, #0 - movne r0, #1 - str r0, [r4, #0x38] - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - mov r0, sl - mov r3, r4 - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A340: - cmp r0, #3 - bne _0230A654 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x3c] - str r0, [sp, #0x40] - cmp r1, #0 - beq _0230B460 - mov r0, #0x44 - bl gsimalloc - movs r8, r0 - bne _0230A390 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A390: - mov r2, #0 - add r0, r8, #4 - add r1, r6, #0x5c - str r2, [r8] - bl strcpy - mov r1, #0 - str r1, [r8, #0x38] - str r1, [r8, #0x3c] - add r3, sp, #0x200 - add r0, sp, #0xc9 - str r1, [r8, #0x40] - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230A210 ; =ov00_0231BC70 - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230A42C - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A42C: - add r4, sp, #0x200 - ldr fp, _0230A1F4 ; =ov00_0231BC10 - mov sb, #0 - add r4, r4, #0xc9 - add r7, sp, #0xc9 - add r5, sp, #0x84 -_0230A444: - str r7, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, r5 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r4 - mov r1, fp - bl strcmp - cmp r0, #0 - bne _0230A51C - ldr r0, [r8, #0x3c] - ldr r1, [r8, #0x38] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl gsirealloc - cmp r0, #0 - bne _0230A4B8 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A4B8: - str r0, [r8, #0x3c] - mov r0, #0x1f - bl gsimalloc - cmp r0, #0 - bne _0230A4E8 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A4E8: - ldr r3, [r8, #0x3c] - ldr r2, [r8, #0x38] - mov r1, r7 - str r0, [r3, r2, lsl #2] - ldr r3, [r8, #0x3c] - ldr r0, [r8, #0x38] - mov r2, #0x1f - ldr r0, [r3, r0, lsl #2] - bl strzcpy_gsi - ldr r0, [r8, #0x38] - add r0, r0, #1 - str r0, [r8, #0x38] - b _0230A614 -_0230A51C: - ldr r1, _0230A1F8 ; =ov00_0231BC18 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A5CC - ldr r0, [r8, #0x38] - cmp r0, #0 - ble _0230A614 - mov r1, r0, lsl #2 - ldr r0, [r8, #0x40] - bl gsirealloc - cmp r0, #0 - bne _0230A56C - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A56C: - str r0, [r8, #0x40] - mov r0, #0x15 - bl gsimalloc - cmp r0, #0 - bne _0230A59C - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A59C: - ldr r3, [r8, #0x40] - ldr r2, [r8, #0x38] - mov r1, r7 - add r2, r3, r2, lsl #2 - str r0, [r2, #-4] - ldr r3, [r8, #0x40] - ldr r0, [r8, #0x38] - mov r2, #0x15 - add r0, r3, r0, lsl #2 - ldr r0, [r0, #-4] - bl strzcpy_gsi - b _0230A614 -_0230A5CC: - ldr r1, _0230B494 ; =ov00_0231BC74 - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq sb, #1 - beq _0230A614 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A614: - cmp sb, #0 - beq _0230A444 - ldr r1, [sp, #0x1c] - add r2, sp, #0x3c - str r1, [sp] - mov r1, #3 - str r1, [sp, #4] - mov r0, sl - mov r3, r8 - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A654: - cmp r0, #4 - bne _0230A8EC - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x44] - str r0, [sp, #0x48] - cmp r1, #0 - beq _0230B460 - mov r0, #0x10 - bl gsimalloc - movs fp, r0 - bne _0230A6A4 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A6A4: - ldr r1, [r6, #0x13c] - mov r0, #0 - stmia fp, {r0, r1} - str r0, [fp, #8] - add r4, sp, #0x200 - str r0, [sp, #0x20] - str r0, [fp, #0xc] - add r4, r4, #0xc9 - add r5, sp, #0xc9 -_0230A6C8: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - add r2, sp, #0x84 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230B498 ; =ov00_0231BC7C - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x20] - beq _0230A8A8 - ldr r1, _0230B49C ; =ov00_0231BC84 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A878 - ldr r0, [fp, #8] - add r2, r0, #1 - mov r0, #0x128 - mul r1, r2, r0 - str r2, [fp, #8] - ldr r0, [fp, #0xc] - bl gsirealloc - str r0, [fp, #0xc] - movs r8, r0 - bne _0230A764 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A764: - ldr r0, [fp, #8] - mov r1, #0 - sub r2, r0, #1 - mov r0, #0x128 - mul sb, r2, r0 - add r7, r8, sb - mov r0, r7 - mov r2, #0x128 - bl memset - mov r0, #1 - str r0, [r7, #0x24] - mov r0, r5 - bl atoi - str r0, [r8, sb] - mov r8, #0 -_0230A7A0: - ldr sb, [sp, #0x84] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x84 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230B4A0 ; =ov00_0231BC88 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A7F4 - add r0, r7, #0x28 - mov r1, r5 - mov r2, #0x100 - bl strzcpy_gsi - b _0230A818 -_0230A7F4: - ldr r1, _0230A1F4 ; =ov00_0231BC10 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A818 - add r0, r7, #4 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi -_0230A818: - ldr r1, _0230B4A4 ; =ov00_0231BC90 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A83C - mov r0, r5 - bl atoi - str r0, [r7, #0x24] - b _0230A86C -_0230A83C: - ldr r1, _0230B49C ; =ov00_0231BC84 - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _0230A864 - ldr r1, _0230B498 ; =ov00_0231BC7C - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230A86C -_0230A864: - str sb, [sp, #0x84] - mov r8, #1 -_0230A86C: - cmp r8, #0 - beq _0230A7A0 - b _0230A8A8 -_0230A878: - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A8A8: - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _0230A6C8 - ldr r1, [sp, #0x1c] - add r2, sp, #0x44 - str r1, [sp] - mov r1, #4 - str r1, [sp, #4] - mov r0, sl - mov r3, fp - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A8EC: - cmp r0, #5 - bne _0230AA64 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x4c] - str r0, [sp, #0x50] - cmp r1, #0 - beq _0230B460 - add r0, sp, #0xc9 - str r0, [sp] - add r3, sp, #0x200 - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230B4A8 ; =ov00_0231BC9C - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230A988 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A988: - add r0, sp, #0xc9 - bl atoi - movs r4, r0 - beq _0230A9A8 - ldr r0, [sp, #0x2c] - mov r5, #0 - str r4, [r0, #0x5b8] - b _0230AA00 -_0230A9A8: - ldr r0, [r6, #8] - ldr r1, _0230B4AC ; =ov00_0231BCA0 - add r2, sp, #0xc9 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _0230A9F4 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230A9F4: - add r0, sp, #0xc9 - bl atoi - mov r5, r0 -_0230AA00: - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _0230AA2C - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AA2C: - stmia r3, {r4, r5} - ldr r1, [sp, #0x1c] - add r2, sp, #0x4c - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - mov r0, sl - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AA64: - cmp r0, #6 - bne _0230ABE0 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x54] - str r0, [sp, #0x58] - cmp r1, #0 - beq _0230B460 - add r0, sp, #0xc9 - str r0, [sp] - add r3, sp, #0x200 - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230B4B0 ; =ov00_0231BCA8 - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230AB00 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AB00: - add r0, sp, #0xc9 - bl atoi - movs r4, r0 - ldrne r0, [sp, #0x2c] - ldr r1, _0230B4AC ; =ov00_0231BCA0 - strne r4, [r0, #0x5b8] - ldr r0, [r6, #8] - add r2, sp, #0xc9 - mov r3, #0x200 - bl GpiValueForKey - cmp r0, #0 - bne _0230AB70 - cmp r4, #0 - bne _0230AB68 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AB68: - mov r5, #0 - b _0230AB7C -_0230AB70: - add r0, sp, #0xc9 - bl atoi - mov r5, r0 -_0230AB7C: - mov r0, #8 - bl gsimalloc - movs r3, r0 - bne _0230ABA8 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230ABA8: - stmia r3, {r4, r5} - ldr r1, [sp, #0x1c] - add r2, sp, #0x54 - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - mov r0, sl - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230ABE0: - cmp r0, #7 - bne _0230AF48 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x5c] - str r0, [sp, #0x60] - cmp r1, #0 - beq _0230B460 - mov r0, #0xc - bl gsimalloc - movs fp, r0 - bne _0230AC30 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AC30: - mov r1, #0 - str r1, [fp] - str r1, [fp, #4] - add r0, sp, #0xc9 - str r1, [fp, #8] - str r0, [sp] - add r3, sp, #0x200 - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230B4B4 ; =ov00_0231BCAC - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230ACB8 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230ACB8: - mov r0, #0 - add r4, sp, #0x200 - str r0, [sp, #0x24] - add r4, r4, #0xc9 - add r5, sp, #0xc9 -_0230ACCC: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - add r2, sp, #0x84 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230B4B8 ; =ov00_0231BCB4 - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x24] - beq _0230AF04 - ldr r1, _0230B4BC ; =ov00_0231BCBC - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230AED4 - ldr r1, [fp, #4] - ldr r0, [fp, #8] - add r2, r1, #1 - mov r1, #0xac - mul r1, r2, r1 - bl gsirealloc - cmp r0, #0 - bne _0230AD60 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AD60: - str r0, [fp, #8] - ldr r2, [fp, #4] - mov r8, r0 - mov r0, #0xac - mul sb, r2, r0 - add r7, r8, sb - mov r1, #0 - mov r0, r7 - mov r2, #0xac - bl memset - ldr r1, [fp, #4] - mov r0, r5 - add r1, r1, #1 - str r1, [fp, #4] - bl atoi - str r0, [r8, sb] - mov r8, #0 -_0230ADA4: - ldr sb, [sp, #0x84] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x84 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230A1F4 ; =ov00_0231BC10 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230ADF8 - add r0, r7, #4 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - b _0230AEC8 -_0230ADF8: - ldr r1, _0230A1F8 ; =ov00_0231BC18 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230AE20 - add r0, r7, #0x23 - mov r1, r5 - mov r2, #0x15 - bl strzcpy_gsi - b _0230AEC8 -_0230AE20: - ldr r1, _0230B4C0 ; =ov00_0231BCC0 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230AE48 - add r0, r7, #0x38 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - b _0230AEC8 -_0230AE48: - ldr r1, _0230B4C4 ; =ov00_0231BCC8 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230AE70 - add r0, r7, #0x57 - mov r1, r5 - mov r2, #0x1f - bl strzcpy_gsi - b _0230AEC8 -_0230AE70: - ldr r1, _0230A204 ; =ov00_0231BC3C - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230AE98 - add r0, r7, #0x76 - mov r1, r5 - mov r2, #0x33 - bl strzcpy_gsi - b _0230AEC8 -_0230AE98: - ldr r1, _0230B4BC ; =ov00_0231BCBC - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _0230AEC0 - ldr r1, _0230B4B8 ; =ov00_0231BCB4 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230AEC8 -_0230AEC0: - str sb, [sp, #0x84] - mov r8, #1 -_0230AEC8: - cmp r8, #0 - beq _0230ADA4 - b _0230AF04 -_0230AED4: - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AF04: - ldr r0, [sp, #0x24] - cmp r0, #0 - beq _0230ACCC - ldr r1, [sp, #0x1c] - add r2, sp, #0x5c - str r1, [sp] - mov r1, #8 - str r1, [sp, #4] - mov r0, sl - mov r3, fp - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AF48: - cmp r0, #9 - bne _0230B220 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x64] - str r0, [sp, #0x68] - cmp r1, #0 - beq _0230B460 - mov r0, #0xc - bl gsimalloc - movs fp, r0 - bne _0230AF98 - ldr r1, _0230A1F0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230AF98: - mov r1, #0 - str r1, [fp] - str r1, [fp, #4] - add r0, sp, #0xc9 - str r1, [fp, #8] - str r0, [sp] - add r3, sp, #0x200 - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230B4C8 ; =ov00_0231BCD0 - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230B020 - ldr r2, _0230A208 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B020: - mov r0, #0 - add r4, sp, #0x200 - str r0, [sp, #0x28] - add r4, r4, #0xc9 - add r5, sp, #0xc9 -_0230B034: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - add r2, sp, #0x84 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230B4CC ; =ov00_0231BCDC - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x28] - beq _0230B1DC - ldr r1, _0230B4BC ; =ov00_0231BCBC - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230B1AC - ldr r1, [fp, #4] - ldr r0, [fp, #8] - add r2, r1, #1 - mov r1, #0x1c - mul r1, r2, r1 - bl gsirealloc - cmp r0, #0 - bne _0230B0C8 - ldr r1, _0230B4D0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B0C8: - str r0, [fp, #8] - ldr r3, [fp, #4] - mov r1, #0x1c - mla r7, r3, r1, r0 - mov r2, #7 - mov r1, r7 -_0230B0E0: - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - strb r0, [r1, #2] - strb r0, [r1, #3] - add r1, r1, #4 - subs r2, r2, #1 - bne _0230B0E0 - ldr r1, [fp, #4] - mov r0, r5 - add r1, r1, #1 - str r1, [fp, #4] - bl atoi - str r0, [r7] - mov r8, #0 -_0230B11C: - ldr sb, [sp, #0x84] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x84 - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230B4D4 ; =ov00_0231BC18 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230B170 - add r0, r7, #4 - mov r1, r5 - mov r2, #0x15 - bl strzcpy_gsi - b _0230B1A0 -_0230B170: - ldr r1, _0230B4BC ; =ov00_0231BCBC - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _0230B198 - ldr r1, _0230B4CC ; =ov00_0231BCDC - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230B1A0 -_0230B198: - str sb, [sp, #0x84] - mov r8, #1 -_0230B1A0: - cmp r8, #0 - beq _0230B11C - b _0230B1DC -_0230B1AC: - ldr r2, _0230B4D8 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B1DC: - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _0230B034 - ldr r1, [sp, #0x1c] - add r2, sp, #0x64 - str r1, [sp] - mov r1, #0xd - str r1, [sp, #4] - mov r0, sl - mov r3, fp - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - beq _0230B460 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B220: - cmp r0, #8 - bne _0230B460 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x6c] - str r0, [sp, #0x70] - cmp r1, #0 - beq _0230B460 - mov r0, #0xc - mov r7, #0 - bl gsimalloc - movs r8, r0 - bne _0230B274 - ldr r1, _0230B4D0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B274: - mov r1, r7 - str r1, [r8] - str r1, [r8, #4] - add r0, sp, #0xc9 - str r1, [r8, #8] - str r0, [sp] - add r3, sp, #0x200 - ldr r1, [r6, #8] - add r2, sp, #0x84 - add r3, r3, #0xc9 - mov r0, sl - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x200 - ldr r1, _0230B4DC ; =ov00_0231BCE4 - add r0, r0, #0xc9 - bl strcmp - cmp r0, #0 - beq _0230B2FC - ldr r2, _0230B4D8 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B2FC: - add r0, sp, #0xc9 - bl atoi - str r0, [r8, #4] - mov r0, r0, lsl #2 - bl gsimalloc - str r0, [r8, #8] - cmp r0, #0 - bne _0230B338 - ldr r1, _0230B4D0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B338: - add r4, sp, #0x200 - mov sb, r7 - add r4, r4, #0xc9 - add r5, sp, #0xc9 - add fp, sp, #0x84 -_0230B34C: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, fp - mov r3, r4 - bl GpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0230B4E0 ; =ov00_0231BC10 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _0230B3D8 - mov r0, #0x15 - bl gsimalloc - ldr r1, [r8, #8] - str r0, [r1, r7, lsl #2] - ldr r0, [r8, #8] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bne _0230B3C4 - ldr r1, _0230B4D0 ; =ov00_0231B95C - mov r0, sl - bl GpiSetErrorString - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B3C4: - mov r1, r5 - mov r2, #0x15 - bl strzcpy_gsi - add r7, r7, #1 - b _0230B424 -_0230B3D8: - ldr r1, _0230B4E4 ; =ov00_0231BCE8 - mov r0, r4 - bl strcmp - cmp r0, #0 - streq r7, [r8, #4] - moveq sb, #1 - beq _0230B424 - ldr r2, _0230B4D8 ; =ov00_0231BC44 - mov r0, sl - mov r1, #1 - bl GpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0xcc - add sp, sp, #0x400 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B424: - cmp sb, #0 - beq _0230B34C - ldr r1, [sp, #0x1c] - add r2, sp, #0x6c - str r1, [sp] - mov r1, #9 - str r1, [sp, #4] - mov r0, sl - mov r3, r8 - ldmia r2, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0xcc - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230B460: - mov r0, #1 - str r0, [r6, #0x144] - mov r4, #0 -_0230B46C: - cmp r4, #0 - beq _0230B47C - mov r0, #0xa - bl msleep_gsi -_0230B47C: - cmp r4, #0 - bne _02309440 - mov r0, #0 - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230B494: .word ov00_0231BC74 -_0230B498: .word ov00_0231BC7C -_0230B49C: .word ov00_0231BC84 -_0230B4A0: .word ov00_0231BC88 -_0230B4A4: .word ov00_0231BC90 -_0230B4A8: .word ov00_0231BC9C -_0230B4AC: .word ov00_0231BCA0 -_0230B4B0: .word ov00_0231BCA8 -_0230B4B4: .word ov00_0231BCAC -_0230B4B8: .word ov00_0231BCB4 -_0230B4BC: .word ov00_0231BCBC -_0230B4C0: .word ov00_0231BCC0 -_0230B4C4: .word ov00_0231BCC8 -_0230B4C8: .word ov00_0231BCD0 -_0230B4CC: .word ov00_0231BCDC -_0230B4D0: .word ov00_0231B95C -_0230B4D4: .word ov00_0231BC18 -_0230B4D8: .word ov00_0231BC44 -_0230B4DC: .word ov00_0231BCE4 -_0230B4E0: .word ov00_0231BC10 -_0230B4E4: .word ov00_0231BCE8 - arm_func_end GpiProcessSearch - - arm_func_start GpiProcessSearches -GpiProcessSearches: ; 0x0230B4E8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - ldr r6, [r7] - mov r5, #0 - ldr r0, [r6, #0x238] - cmp r0, #0 - ble _0230B5F4 - mov r0, r0, lsl #2 - bl gsimalloc - movs r4, r0 - bne _0230B528 - ldr r1, _0230B5FC ; =ov00_0231B95C - mov r0, r7 - bl GpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0230B528: - ldr r2, [r6, #0x5c4] - cmp r2, #0 - beq _0230B57C - mov r1, #1 -_0230B538: - ldr r0, [r2] - cmp r0, #3 - bne _0230B570 - ldr r0, [r2, #0x14] - cmp r0, #5 - beq _0230B570 - ldr r0, [r2, #4] - ldr r0, [r0, #0x140] - cmp r0, #0 - bne _0230B570 - str r2, [r4, r5, lsl #2] - ldr r0, [r2, #4] - add r5, r5, #1 - str r1, [r0, #0x140] -_0230B570: - ldr r2, [r2, #0x20] - cmp r2, #0 - bne _0230B538 -_0230B57C: - cmp r5, #0 - mov r6, #0 - ble _0230B5AC -_0230B588: - ldr r1, [r4, r6, lsl #2] - mov r0, r7 - bl GpiProcessSearch - cmp r0, #0 - ldrne r1, [r4, r6, lsl #2] - add r6, r6, #1 - strne r0, [r1, #0x1c] - cmp r6, r5 - blt _0230B588 -_0230B5AC: - cmp r5, #0 - mov r6, #0 - ble _0230B5EC - mov r8, r6 -_0230B5BC: - ldr r0, [r4, r6, lsl #2] - ldr r0, [r0, #4] - str r8, [r0, #0x140] - ldr r0, [r0, #0x144] - cmp r0, #0 - beq _0230B5E0 - ldr r1, [r4, r6, lsl #2] - mov r0, r7 - bl GpiRemoveOperation -_0230B5E0: - add r6, r6, #1 - cmp r6, r5 - blt _0230B5BC -_0230B5EC: - mov r0, r4 - bl gsifree -_0230B5F4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0230B5FC: .word ov00_0231B95C - arm_func_end GpiProcessSearches - - arm_func_start GpiSendTransferReply -GpiSendTransferReply: ; 0x0230B600 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - ldr ip, [sp, #0x30] - mov r5, r2 - mov r6, r0 - cmp ip, #0 - ldreq r0, _0230B69C ; =ov00_0231BCF0 - mov lr, r1 - mov r4, r3 - streq r0, [sp, #0x30] - mov r0, r6 - mov r1, r5 - mov r3, lr - mov r2, #0xc9 - bl GpiPeerStartTransferMessage - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _0230B6A0 ; =ov00_0231BCF4 - add r0, sp, #0 - mov r3, r4 - mov r2, #1 - bl OS_VsPrintf - add r2, sp, #0 - mov r0, r6 - mov r1, r5 - bl GpiSendOrBufferString - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} - ldr r2, [sp, #0x30] - mov r0, r6 - mov r1, r5 - mvn r3, #0 - bl GpiPeerFinishTransferMessage - cmp r0, #0 - moveq r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230B69C: .word ov00_0231BCF0 -_0230B6A0: .word ov00_0231BCF4 - arm_func_end GpiSendTransferReply - - arm_func_start GpiHandleTransferMessage -GpiHandleTransferMessage: ; 0x0230B6A4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x50 - mov r4, r1 - mov r5, r0 - mov r0, r3 - ldr r1, _0230B720 ; =ov00_0231BD0C - add r2, sp, #0x10 - mov r3, #0x40 - bl GpiValueForKey - cmp r0, #0 - addeq sp, sp, #0x50 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0230B724 ; =ov00_0231BD14 - add ip, sp, #0xc - add r0, sp, #0x10 - add r2, sp, #4 - add r3, sp, #8 - str ip, [sp] - bl Std_TsScanf - cmp r0, #3 - addne sp, sp, #0x50 - ldmneia sp!, {r3, r4, r5, pc} - mov ip, #0 - add r1, sp, #4 - mov r0, r5 - mov r2, r4 - mov r3, #2 - str ip, [sp] - bl GpiSendTransferReply - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230B720: .word ov00_0231BD0C -_0230B724: .word ov00_0231BD14 - arm_func_end GpiHandleTransferMessage - - arm_func_start GpiProcessRegisterUniqueNick -GpiProcessRegisterUniqueNick: ; 0x0230B728 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r4, r2 - mov r5, r1 - mov r1, r4 - mov r2, #1 - mov r6, r0 - bl GpiCheckForError - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _0230B820 ; =ov00_0231BD20 - mov r0, r4 - mov r2, #4 - bl strncmp - cmp r0, #0 - beq _0230B79C - ldr r2, _0230B824 ; =ov00_0231BD28 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x10 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_0230B79C: - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _0230B808 - mov r0, #4 - bl gsimalloc - movs r3, r0 - bne _0230B7DC - ldr r1, _0230B828 ; =ov00_0231BD58 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_0230B7DC: - mov r2, #0 - str r2, [r3] - str r5, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r6 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, pc} -_0230B808: - mov r0, r6 - mov r1, r5 - bl GpiRemoveOperation - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230B820: .word ov00_0231BD20 -_0230B824: .word ov00_0231BD28 -_0230B828: .word ov00_0231BD58 - arm_func_end GpiProcessRegisterUniqueNick - - arm_func_start GpiProcessRegisterCdKey -GpiProcessRegisterCdKey: ; 0x0230B82C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r4, r2 - mov r5, r1 - mov r1, r4 - mov r2, #1 - mov r6, r0 - bl GpiCheckForError - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _0230B924 ; =ov00_0231BD68 - mov r0, r4 - mov r2, #4 - bl strncmp - cmp r0, #0 - beq _0230B8A0 - ldr r2, _0230B928 ; =ov00_0231BD28 - mov r0, r6 - mov r1, #1 - bl GpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #0x10 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_0230B8A0: - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _0230B90C - mov r0, #4 - bl gsimalloc - movs r3, r0 - bne _0230B8E0 - ldr r1, _0230B92C ; =ov00_0231BD58 - mov r0, r6 - bl GpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_0230B8E0: - mov r2, #0 - str r2, [r3] - str r5, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r6 - ldmia r1, {r1, r2} - bl GpiAddCallback - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, pc} -_0230B90C: - mov r0, r6 - mov r1, r5 - bl GpiRemoveOperation - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230B924: .word ov00_0231BD68 -_0230B928: .word ov00_0231BD28 -_0230B92C: .word ov00_0231BD58 - arm_func_end GpiProcessRegisterCdKey - - arm_func_start strzcpy_gsi -strzcpy_gsi: ; 0x0230B930 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - bl strncpy - add r0, r5, r4 - mov r1, #0 - strb r1, [r0, #-1] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end strzcpy_gsi - - arm_func_start GpiCheckForError -GpiCheckForError: ; 0x0230B950 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r6, r1 - mov r7, r0 - mov r5, r2 - ldr r1, _0230BA18 ; =ov00_0231BD70 - mov r0, r6 - mov r2, #7 - ldr r4, [r7] - bl strncmp - cmp r0, #0 - bne _0230BA0C - ldr r1, _0230BA1C ; =ov00_0231BD78 - add r2, sp, #0 - mov r0, r6 - mov r3, #0x10 - bl GpiValueForKey - cmp r0, #0 - beq _0230B9A8 - add r0, sp, #0 - bl atoi - str r0, [r4, #0x5b8] -_0230B9A8: - ldr r1, _0230BA20 ; =ov00_0231BD80 - mov r0, r6 - mov r2, r4 - mov r3, #0x100 - bl GpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [r4] - cmp r5, #0 - beq _0230BA00 - ldr r1, _0230BA24 ; =ov00_0231BD8C - mov r0, r6 - bl strstr - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r7 - mov r1, #4 - bl GpiCallErrorCallback -_0230BA00: - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230BA0C: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230BA18: .word ov00_0231BD70 -_0230BA1C: .word ov00_0231BD78 -_0230BA20: .word ov00_0231BD80 -_0230BA24: .word ov00_0231BD8C - arm_func_end GpiCheckForError - - arm_func_start GpiValueForKey -GpiValueForKey: ; 0x0230BA28 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - ldrsb r6, [r8] - mov r4, r2 - mov r7, r3 - bl strstr - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r8 - bl strlen - add r1, r5, r0 - mov r3, #0 - sub r0, r7, #1 - b _0230BA6C -_0230BA64: - strb r2, [r4, r3] - add r3, r3, #1 -_0230BA6C: - cmp r3, r0 - bge _0230BA84 - ldrsb r2, [r1, r3] - cmp r2, #0 - cmpne r2, r6 - bne _0230BA64 -_0230BA84: - mov r0, #0 - strb r0, [r4, r3] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end GpiValueForKey - - arm_func_start GpiCheckSocketConnect -GpiCheckSocketConnect: ; 0x0230BA94 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov ip, #0 - mov r4, r2 - mov r5, r0 - mov r0, r1 - add r2, sp, #4 - add r3, sp, #0 - mov r1, ip - str ip, [sp, #4] - str ip, [sp] - bl GsiSocketSelect - mvn r1, #0 - cmp r0, r1 - bne _0230BAFC - ldr r2, _0230BB54 ; =ov00_0231BD94 - mov r0, r5 - mov r1, #5 - bl GpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r3, r4, r5, pc} -_0230BAFC: - cmp r0, #0 - ble _0230BB44 - ldr r0, [sp] - cmp r0, #0 - beq _0230BB24 - mov r0, #4 - str r0, [r4] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0230BB24: - ldr r0, [sp, #4] - cmp r0, #0 - beq _0230BB44 - mov r0, #3 - str r0, [r4] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0230BB44: - mov r0, #0 - str r0, [r4] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230BB54: .word ov00_0231BD94 - arm_func_end GpiCheckSocketConnect - - arm_func_start GpiReadKeyAndValue -GpiReadKeyAndValue: ; 0x0230BB58 - stmdb sp!, {r4, r5, r6, lr} - ldr ip, [r2] - mov r4, r0 - ldrsb lr, [r1, ip] - add r6, r1, ip - ldr ip, [sp, #0x10] - cmp lr, #0x5c - beq _0230BB9C - ldr r2, _0230BCA0 ; =ov00_0231BDCC - mov r1, #1 - bl GpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_0230BB9C: - ldrsb lr, [r6, #1] - add r1, r6, #2 - mov r5, #0 - cmp lr, #0x5c - beq _0230BC28 - ldr r0, _0230BCA4 ; =0x000001FF -_0230BBB4: - cmp lr, #0 - bne _0230BBE4 - ldr r2, _0230BCA0 ; =ov00_0231BDCC - mov r0, r4 - mov r1, #1 - bl GpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_0230BBE4: - cmp r5, r0 - bne _0230BC14 - ldr r2, _0230BCA0 ; =ov00_0231BDCC - mov r0, r4 - mov r1, #1 - bl GpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_0230BC14: - strb lr, [r3], #1 - ldrsb lr, [r1], #1 - add r5, r5, #1 - cmp lr, #0x5c - bne _0230BBB4 -_0230BC28: - mov r5, #0 - strb r5, [r3] - ldr r0, _0230BCA4 ; =0x000001FF - b _0230BC70 -_0230BC38: - cmp r5, r0 - bne _0230BC68 - ldr r2, _0230BCA0 ; =ov00_0231BDCC - mov r0, r4 - mov r1, #1 - bl GpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl GpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_0230BC68: - strb r3, [ip], #1 - add r5, r5, #1 -_0230BC70: - ldrsb r3, [r1], #1 - cmp r3, #0x5c - cmpne r3, #0 - bne _0230BC38 - mov r0, #0 - strb r0, [ip] - sub r1, r1, r6 - ldr r3, [r2] - sub r1, r1, #1 - add r1, r3, r1 - str r1, [r2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230BCA0: .word ov00_0231BDCC -_0230BCA4: .word 0x000001FF - arm_func_end GpiReadKeyAndValue - - arm_func_start GpiSetError -GpiSetError: ; 0x0230BCA8 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r0] - mov r5, r1 - mov r1, r2 - mov r0, r4 - mov r2, #0x100 - bl strzcpy_gsi - str r5, [r4, #0x5b8] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GpiSetError - - arm_func_start GpiSetErrorString -GpiSetErrorString: ; 0x0230BCCC - ldr ip, _0230BCDC ; =strzcpy_gsi - ldr r0, [r0] - mov r2, #0x100 - bx ip - .align 2, 0 -_0230BCDC: .word strzcpy_gsi - arm_func_end GpiSetErrorString - - arm_func_start PasswordEncryptString -PasswordEncryptString: ; 0x0230BCE0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - mov sl, r0 - mov sb, r1 - bl strlen - mov r7, r0 - ldr r0, _0230BD64 ; =0x79707367 - bl Util_RandSeed - cmp r7, #0 - mov r6, #0 - bls _0230BD40 - add r8, sp, #0 - mov r5, r6 - mov r4, #0xff -_0230BD18: - mov r0, r5 - mov r1, r4 - bl RandRangeOverlay0 - ldrsb r1, [sl, r6] - mov r0, r0, lsl #0x18 - add r6, r6, #1 - eor r0, r1, r0, asr #24 - cmp r6, r7 - strb r0, [r8], #1 - blo _0230BD18 -_0230BD40: - add r0, sp, #0 - mov r4, #0 - mov r1, sb - mov r2, r7 - mov r3, #1 - strb r4, [r0, r6] - bl B64Encode - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0230BD64: .word 0x79707367 - arm_func_end PasswordEncryptString - - arm_func_start BucketNew -BucketNew: ; 0x0230BD68 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - movs r7, r0 - ldreq r0, _0230BDD8 ; =ov00_023289D8 - mov r6, r1 - ldreq r7, [r0] - mov r0, r6 - mov r5, r2 - mov r4, r3 - bl goastrdup - mov r3, #0 - mov r2, #1 - str r0, [sp] - add r0, sp, #0 - mov r1, r4 - str r5, [sp, #4] - str r3, [sp, #0xc] - str r2, [sp, #8] - bl DoSet_Gsi - ldr r0, [r7] - add r1, sp, #0 - bl TableEnter_Gsi - mov r0, r7 - mov r1, r6 - bl DoFind_Gsi - bl DoGet_Gsi - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0230BDD8: .word ov00_023289D8 - arm_func_end BucketNew - - arm_func_start BucketSet -BucketSet: ; 0x0230BDDC - stmdb sp!, {r4, lr} - mov r4, r2 - bl DoFind_Gsi - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0 - mov r1, r4 - str r2, [r0, #8] - bl DoSet_Gsi - ldmia sp!, {r4, pc} - arm_func_end BucketSet - - arm_func_start BucketAdd_Gsi -BucketAdd_Gsi: ; 0x0230BE08 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl DoFind_Gsi - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _0230BE58 - bl DoGet_Gsi - ldr r1, [r5] - ldr r0, [r0] - add r0, r1, r0 - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230BE58: - cmp r1, #1 - bne _0230BE88 - bl DoGet_Gsi - mov r3, r0 - ldmia r5, {r0, r1} - ldmia r3, {r2, r3} - bl _dadd - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230BE88: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl BucketConcat_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end BucketAdd_Gsi - - arm_func_start BucketSub_Gsi -BucketSub_Gsi: ; 0x0230BE9C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r2 - bl DoFind_Gsi - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _0230BEE4 - bl DoGet_Gsi - ldr r1, [r0] - ldr r0, [r5] - sub r0, r1, r0 - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, pc} -_0230BEE4: - cmp r1, #1 - bne _0230BF18 - bl DoGet_Gsi - ldr ip, [r0] - ldr r1, [r0, #4] - mov r0, ip - ldmia r5, {r2, r3} - bl _dsub - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, pc} -_0230BF18: - bl DoGet_Gsi - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BucketSub_Gsi - - arm_func_start BucketMult_Gsi -BucketMult_Gsi: ; 0x0230BF20 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r2 - bl DoFind_Gsi - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _0230BF68 - bl DoGet_Gsi - ldr r1, [r5] - ldr r0, [r0] - mul r0, r1, r0 - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, pc} -_0230BF68: - cmp r1, #1 - bne _0230BF98 - bl DoGet_Gsi - mov r3, r0 - ldmia r5, {r0, r1} - ldmia r3, {r2, r3} - bl _dmul - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, pc} -_0230BF98: - bl DoGet_Gsi - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BucketMult_Gsi - - arm_func_start BucketDiv_Gsi -BucketDiv_Gsi: ; 0x0230BFA0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r2 - bl DoFind_Gsi - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _0230BFE8 - bl DoGet_Gsi - ldr r0, [r0] - ldr r1, [r5] - bl _s32_div_f - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, pc} -_0230BFE8: - cmp r1, #1 - bne _0230C01C - bl DoGet_Gsi - ldr ip, [r0] - ldr r1, [r0, #4] - mov r0, ip - ldmia r5, {r2, r3} - bl _ddiv - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, pc} -_0230C01C: - bl DoGet_Gsi - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BucketDiv_Gsi - - arm_func_start BucketConcat_Gsi -BucketConcat_Gsi: ; 0x0230C024 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r2 - bl DoFind_Gsi - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl DoGet_Gsi - mov r5, r0 - bl strlen - mov r4, r0 - mov r0, r7 - bl strlen - add r0, r4, r0 - add r0, r0, #1 - bl gsimalloc - mov r4, r0 - mov r1, r5 - bl strcpy - mov r0, r4 - mov r1, r7 - bl strcat - mov r0, r6 - mov r1, r4 - bl DoSet_Gsi - mov r0, r4 - bl gsifree - mov r0, r6 - bl DoGet_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end BucketConcat_Gsi - - arm_func_start BucketAvg_Gsi -BucketAvg_Gsi: ; 0x0230C098 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r2 - bl DoFind_Gsi - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _0230C0F0 - bl DoGet_Gsi - ldr r1, [r4, #8] - add r1, r1, #1 - str r1, [r4, #8] - ldr r2, [r7] - ldr r0, [r0] - mla r0, r1, r0, r2 - bl _s32_div_f - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230C0F0: - cmp r1, #1 - bne _0230C164 - bl DoGet_Gsi - ldr r1, [r4, #8] - mov r5, r0 - add r6, r1, #1 - mov r0, r6 - str r6, [r4, #8] - bl _dflt - ldmia r5, {r2, r3} - bl _dmul - mov r2, r0 - mov r3, r1 - ldmia r7, {r0, r1} - bl _dadd - mov r5, r0 - mov r0, r6 - mov r6, r1 - bl _dflt - mov r2, r0 - mov r3, r1 - mov r0, r5 - mov r1, r6 - bl _ddiv - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230C164: - bl DoGet_Gsi - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end BucketAvg_Gsi - - arm_func_start bint -bint: ; 0x0230C16C - ldr r1, _0230C17C ; =ov00_023289D8 - str r0, [r1, #4] - ldr r0, _0230C180 ; =ov00_023289DC - bx lr - .align 2, 0 -_0230C17C: .word ov00_023289D8 -_0230C180: .word ov00_023289DC - arm_func_end bint - - arm_func_start bfloat -bfloat: ; 0x0230C184 - ldr r2, _0230C198 ; =ov00_023289D8 - str r0, [r2, #8] - ldr r0, _0230C19C ; =ov00_023289E0 - str r1, [r2, #0xc] - bx lr - .align 2, 0 -_0230C198: .word ov00_023289D8 -_0230C19C: .word ov00_023289E0 - arm_func_end bfloat - - arm_func_start DumpMap_Gsi -DumpMap_Gsi: ; 0x0230C1A0 - ldrsb r3, [r0] - mov r2, r0 - cmp r3, #0 - beq _0230C1C8 - mov r1, #0x2f -_0230C1B4: - cmp r3, #0x5c - streqb r1, [r0] - ldrsb r3, [r0, #1]! - cmp r3, #0 - bne _0230C1B4 -_0230C1C8: - mov r0, r2 - bx lr - arm_func_end DumpMap_Gsi - - arm_func_start DoSet_Gsi -DoSet_Gsi: ; 0x0230C1D0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #4] - mov r4, r1 - cmp r0, #0 - ldreq r0, [r4] - streq r0, [r5, #0xc] - beq _0230C240 - cmp r0, #1 - bne _0230C20C - ldr r1, [r4] - ldr r0, [r4, #4] - str r1, [r5, #0xc] - str r0, [r5, #0x10] - b _0230C240 -_0230C20C: - cmp r0, #2 - bne _0230C240 - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _0230C224 - bl gsifree -_0230C224: - cmp r4, #0 - moveq r0, #0 - beq _0230C23C - mov r0, r4 - bl goastrdup - bl DumpMap_Gsi -_0230C23C: - str r0, [r5, #0xc] -_0230C240: - mov r0, r5 - bl DoGet_Gsi - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DoSet_Gsi - - arm_func_start DoGet_Gsi -DoGet_Gsi: ; 0x0230C24C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r1, [r0, #4] - cmp r1, #2 - ldreq r0, [r0, #0xc] - addne r0, r0, #0xc - bx lr - arm_func_end DoGet_Gsi - - arm_func_start DoFind_Gsi -DoFind_Gsi: ; 0x0230C26C - stmdb sp!, {lr} - sub sp, sp, #0x14 - cmp r0, #0 - ldreq r0, _0230C298 ; =ov00_023289D8 - str r1, [sp] - ldreq r0, [r0] - add r1, sp, #0 - ldr r0, [r0] - bl TableLookup_Gsi - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_0230C298: .word ov00_023289D8 - arm_func_end DoFind_Gsi - - arm_func_start CloseStatsConnection -CloseStatsConnection: ; 0x0230C29C - stmdb sp!, {r3, lr} - ldr r0, _0230C304 ; =ov00_0231BDDC - mvn r1, #0 - ldr r0, [r0, #4] - cmp r0, r1 - beq _0230C2C8 - mov r1, #2 - bl shutdown_gsi - ldr r0, _0230C304 ; =ov00_0231BDDC - ldr r0, [r0, #4] - bl SocketClose -_0230C2C8: - ldr r0, _0230C304 ; =ov00_0231BDDC - mvn r1, #0 - str r1, [r0, #4] - bl ClosePendingCallbacks - ldr r0, _0230C308 ; =ov00_023289E8 - ldr r0, [r0, #0x28] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl gsifree - ldr r0, _0230C308 ; =ov00_023289E8 - mov r1, #0 - str r1, [r0, #0x28] - str r1, [r0, #0x18] - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230C304: .word ov00_0231BDDC -_0230C308: .word ov00_023289E8 - arm_func_end CloseStatsConnection - - arm_func_start IsStatsConnected -IsStatsConnected: ; 0x0230C30C - ldr r1, _0230C328 ; =ov00_0231BDDC - mvn r0, #0 - ldr r1, [r1, #4] - cmp r1, r0 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_0230C328: .word ov00_0231BDDC - arm_func_end IsStatsConnected - - arm_func_start PersistThink -PersistThink: ; 0x0230C32C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _0230C474 ; =ov00_0231BDDC - mvn r1, #0 - ldr r0, [r0, #4] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _0230C478 ; =ov00_023289E8 - ldr r1, [r1, #0x2c] - cmp r1, #5 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl SocketReadable - cmp r0, #0 - beq _0230C458 - mov r7, #0 - ldr sl, _0230C478 ; =ov00_023289E8 - ldr sb, _0230C474 ; =ov00_0231BDDC - mov r8, #0x100 - mov r6, r7 - mov r4, r7 -_0230C380: - ldr r1, [sl, #0x18] - ldr r0, [sl, #8] - sub r0, r1, r0 - cmp r0, #0x80 - bge _0230C3C4 - cmp r1, #0x100 - strlt r8, [sl, #0x18] - movge r0, r1, lsl #1 - strge r0, [sl, #0x18] - ldr r1, [sl, #0x18] - ldr r0, [sl, #0x28] - add r1, r1, #1 - bl gsirealloc - str r0, [sl, #0x28] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230C3C4: - ldr r5, [sl, #8] - ldr r1, [sl, #0x28] - ldr r2, [sl, #0x18] - ldr r0, [sb, #4] - mov r3, r7 - add r1, r1, r5 - sub r2, r2, r5 - bl SocketRecv - cmp r0, #0 - bgt _0230C3F8 - bl CloseStatsConnection - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230C3F8: - ldr r1, [sl, #8] - add r1, r1, r0 - str r1, [sl, #8] - ldr r0, [sl, #0x28] - strb r6, [r0, r1] - ldr r0, [sl, #0x28] - ldr r1, [sl, #8] - bl ProcessInBuffer - ldr r1, [sl, #8] - mov r5, r0 - cmp r5, r1 - streq r4, [sl, #8] - beq _0230C448 - ldr r0, [sl, #0x28] - sub r2, r1, r5 - add r1, r0, r5 - bl memmove - ldr r0, [sl, #8] - sub r0, r0, r5 - str r0, [sl, #8] -_0230C448: - ldr r0, [sb, #4] - bl SocketReadable - cmp r0, #0 - bne _0230C380 -_0230C458: - ldr r1, _0230C474 ; =ov00_0231BDDC - mvn r0, #0 - ldr r1, [r1, #4] - cmp r1, r0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0230C474: .word ov00_0231BDDC -_0230C478: .word ov00_023289E8 - arm_func_end PersistThink - - arm_func_start xcode_buf -xcode_buf: ; 0x0230C47C - stmdb sp!, {r4, lr} - ldr r2, _0230C4C0 ; =ov00_0231BDDC - cmp r1, #0 - ldr r4, [r2] - mov lr, #0 - ldmleia sp!, {r4, pc} -_0230C494: - ldrsb ip, [r0, lr] - ldrsb r3, [r4] - eor r3, ip, r3 - strb r3, [r0, lr] - ldrsb r3, [r4, #1]! - add lr, lr, #1 - cmp r3, #0 - ldreq r4, [r2] - cmp lr, r1 - blt _0230C494 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230C4C0: .word ov00_0231BDDC - arm_func_end xcode_buf - - arm_func_start value_for_key -value_for_key: ; 0x0230C4C4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x100 - ldr lr, _0230C588 ; =ov00_02318660 - add ip, sp, #0 - mov r4, r0 - mov r3, #0x80 -_0230C4DC: - ldrb r2, [lr] - ldrb r0, [lr, #1] - add lr, lr, #2 - strb r2, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r3, r3, #1 - bne _0230C4DC - ldr r2, _0230C58C ; =ov00_023289E8 - add r0, sp, #0 - ldr r3, [r2, #0x20] - eor r3, r3, #1 - str r3, [r2, #0x20] - bl strcat - ldr r1, _0230C590 ; =ov00_0231BE4C - add r0, sp, #0 - bl strcat - add r1, sp, #0 - mov r0, r4 - bl strstr - movs r4, r0 - addeq sp, sp, #0x100 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, sp, #0 - bl strlen - ldr r1, _0230C58C ; =ov00_023289E8 - ldr r2, _0230C594 ; =ov00_02328C18 - ldr r1, [r1, #0x20] - add r3, r4, r0 - add r0, r2, r1, lsl #8 - mov r2, r0 - b _0230C568 -_0230C560: - ldrsb r1, [r3], #1 - strb r1, [r2], #1 -_0230C568: - ldrsb r1, [r3] - cmp r1, #0 - cmpne r1, #0x5c - bne _0230C560 - mov r1, #0 - strb r1, [r2] - add sp, sp, #0x100 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230C588: .word ov00_02318660 -_0230C58C: .word ov00_023289E8 -_0230C590: .word ov00_0231BE4C -_0230C594: .word ov00_02328C18 - arm_func_end value_for_key - - arm_func_start value_for_key_safe -value_for_key_safe: ; 0x0230C598 - stmdb sp!, {r3, lr} - bl value_for_key - cmp r0, #0 - ldreq r0, _0230C5AC ; =ov00_0231BE48 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230C5AC: .word ov00_0231BE48 - arm_func_end value_for_key_safe - - arm_func_start SocketReadable -SocketReadable: ; 0x0230C5B0 - ldr ip, _0230C5B8 ; =CanReceiveOnSocket - bx ip - .align 2, 0 -_0230C5B8: .word CanReceiveOnSocket - arm_func_end SocketReadable - - arm_func_start FindFinal -FindFinal: ; 0x0230C5BC - sub r3, r1, #6 - mov r2, r0 - cmp r3, #0 - ble _0230C61C -_0230C5CC: - ldrsb r1, [r2] - cmp r1, #0x5c - ldreqsb r1, [r2, #1] - cmpeq r1, #0x66 - ldreqsb r1, [r2, #2] - cmpeq r1, #0x69 - ldreqsb r1, [r2, #3] - cmpeq r1, #0x6e - ldreqsb r1, [r2, #4] - cmpeq r1, #0x61 - ldreqsb r1, [r2, #5] - cmpeq r1, #0x6c - ldreqsb r1, [r2, #6] - cmpeq r1, #0x5c - moveq r0, r2 - bxeq lr - add r2, r2, #1 - sub r1, r2, r0 - cmp r1, r3 - blt _0230C5CC -_0230C61C: - mov r0, #0 - bx lr - arm_func_end FindFinal - - arm_func_start FindRequest -FindRequest: ; 0x0230C624 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r3, _0230C6A4 ; =ov00_023289E8 - mov r7, r0 - ldr r0, [r3, #0x14] - mov r6, r1 - cmp r0, #0 - mov r5, r2 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r4, #0 - bl ArrayLength_Gsi - cmp r0, #0 - ble _0230C69C - ldr r8, _0230C6A4 ; =ov00_023289E8 -_0230C65C: - ldr r0, [r8, #0x14] - mov r1, r4 - bl ArrayNth_Gsi - ldr r1, [r0] - cmp r1, r7 - ldreq r1, [r0, #4] - cmpeq r1, r6 - ldreq r0, [r0, #8] - cmpeq r0, r5 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r8, #0x14] - add r4, r4, #1 - bl ArrayLength_Gsi - cmp r4, r0 - blt _0230C65C -_0230C69C: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0230C6A4: .word ov00_023289E8 - arm_func_end FindRequest - - arm_func_start ProcessPlayerAuth -ProcessPlayerAuth: ; 0x0230C6A8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _0230C748 ; =ov00_0231BE50 - mov r6, r0 - bl value_for_key_safe - bl atoi - mov r5, r0 - ldr r1, _0230C74C ; =ov00_0231BE58 - mov r0, r6 - bl value_for_key_safe - bl atoi - mov r4, r0 - ldr r1, _0230C750 ; =ov00_0231BE5C - mov r0, r6 - bl value_for_key_safe - mov r6, r0 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl FindRequest - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, _0230C754 ; =ov00_023289E8 - mov r1, r4 - ldr r0, [r0, #0x14] - bl ArrayNth_Gsi - cmp r5, #0 - movgt r1, #1 - str r5, [r0, #8] - mov r2, #0 - movle r1, #0 - mov r0, r4 - mov r3, r6 - str r2, [sp] - bl CallReqCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0230C748: .word ov00_0231BE50 -_0230C74C: .word ov00_0231BE58 -_0230C750: .word ov00_0231BE5C -_0230C754: .word ov00_023289E8 - arm_func_end ProcessPlayerAuth - - arm_func_start ProcessGetPid -ProcessGetPid: ; 0x0230C758 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0230C7D8 ; =ov00_0231BE64 - mov r5, r0 - bl value_for_key_safe - bl atoi - mov r4, r0 - ldr r1, _0230C7DC ; =ov00_0231BE58 - mov r0, r5 - bl value_for_key_safe - bl atoi - mov r1, r0 - mov r0, #3 - mov r2, #0 - bl FindRequest - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0230C7E0 ; =ov00_023289E8 - mov r1, r5 - ldr r0, [r0, #0x14] - bl ArrayNth_Gsi - cmp r4, #0 - movgt r1, #1 - mov r2, #0 - str r4, [r0, #8] - movle r1, #0 - mov r0, r5 - mov r3, r2 - str r2, [sp] - bl CallReqCallback - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230C7D8: .word ov00_0231BE64 -_0230C7DC: .word ov00_0231BE58 -_0230C7E0: .word ov00_023289E8 - arm_func_end ProcessGetPid - - arm_func_start ProcessGetData -ProcessGetData: ; 0x0230C7E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - ldr r1, _0230C8AC ; =ov00_0231BE6C - mov r4, r0 - bl value_for_key_safe - bl atoi - mov r7, r0 - ldr r1, _0230C8B0 ; =ov00_0231BE58 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r6, r0 - ldr r1, _0230C8B4 ; =ov00_0231BE74 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r5, r0 - ldr r1, _0230C8B8 ; =ov00_0231BE78 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r8, r0 - mov r1, r6 - mov r2, r5 - mov r0, #1 - bl FindRequest - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, _0230C8BC ; =ov00_0231BE7C - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r6, r0 - ldr r1, _0230C8C0 ; =ov00_0231BE84 - mov r0, r4 - bl strstr - cmp r0, #0 - ldreq r3, _0230C8C4 ; =ov00_0231BE48 - moveq r6, #0 - addne r3, r0, #6 - mov r0, r5 - mov r1, r7 - mov r2, r8 - str r6, [sp] - bl CallReqCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0230C8AC: .word ov00_0231BE6C -_0230C8B0: .word ov00_0231BE58 -_0230C8B4: .word ov00_0231BE74 -_0230C8B8: .word ov00_0231BE78 -_0230C8BC: .word ov00_0231BE7C -_0230C8C0: .word ov00_0231BE84 -_0230C8C4: .word ov00_0231BE48 - arm_func_end ProcessGetData - - arm_func_start ProcessSetData -ProcessSetData: ; 0x0230C8C8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _0230C950 ; =ov00_0231BE8C - mov r7, r0 - bl value_for_key_safe - bl atoi - mov r6, r0 - ldr r1, _0230C954 ; =ov00_0231BE74 - mov r0, r7 - bl value_for_key_safe - bl atoi - mov r5, r0 - ldr r1, _0230C958 ; =ov00_0231BE58 - mov r0, r7 - bl value_for_key_safe - bl atoi - mov r4, r0 - ldr r1, _0230C95C ; =ov00_0231BE78 - mov r0, r7 - bl value_for_key_safe - bl atoi - mov r1, r4 - mov r4, r0 - mov r2, r5 - mov r0, #2 - bl FindRequest - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r3, #0 - mov r1, r6 - mov r2, r4 - str r3, [sp] - bl CallReqCallback - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230C950: .word ov00_0231BE8C -_0230C954: .word ov00_0231BE74 -_0230C958: .word ov00_0231BE58 -_0230C95C: .word ov00_0231BE78 - arm_func_end ProcessSetData - - arm_func_start ProcessStatement -ProcessStatement: ; 0x0230C960 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, _0230CA38 ; =ov00_0231BE94 - mov r5, r0 - mov r3, #0 - mov r2, #8 - strb r3, [r5, r4] - bl strncmp - cmp r0, #0 - bne _0230C998 - mov r0, r5 - mov r1, r4 - bl ProcessPlayerAuth - ldmia sp!, {r3, r4, r5, pc} -_0230C998: - ldr r1, _0230CA3C ; =ov00_0231BEA0 - mov r0, r5 - mov r2, #9 - bl strncmp - cmp r0, #0 - bne _0230C9C0 - mov r0, r5 - mov r1, r4 - bl ProcessGetPid - ldmia sp!, {r3, r4, r5, pc} -_0230C9C0: - ldr r1, _0230CA3C ; =ov00_0231BEA0 - mov r0, r5 - mov r2, #9 - bl strncmp - cmp r0, #0 - bne _0230C9E8 - mov r0, r5 - mov r1, r4 - bl ProcessGetPid - ldmia sp!, {r3, r4, r5, pc} -_0230C9E8: - ldr r1, _0230CA40 ; =ov00_0231BEAC - mov r0, r5 - mov r2, #8 - bl strncmp - cmp r0, #0 - bne _0230CA10 - mov r0, r5 - mov r1, r4 - bl ProcessGetData - ldmia sp!, {r3, r4, r5, pc} -_0230CA10: - ldr r1, _0230CA44 ; =ov00_0231BEB8 - mov r0, r5 - mov r2, #8 - bl strncmp - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ProcessSetData - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230CA38: .word ov00_0231BE94 -_0230CA3C: .word ov00_0231BEA0 -_0230CA40: .word ov00_0231BEAC -_0230CA44: .word ov00_0231BEB8 - arm_func_end ProcessStatement - - arm_func_start ProcessInBuffer -ProcessInBuffer: ; 0x0230CA48 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r1 - mov sl, r0 - mov r7, sb - bl FindFinal - mov r6, r0 - ldr r5, _0230CAC8 ; =ov00_0231BE28 - ldr r4, _0230CACC ; =ov00_0231BDDC - b _0230CAB0 -_0230CA6C: - sub r8, r6, sl - mov r0, sl - mov r1, r8 - str r5, [r4] - bl xcode_buf - mov r0, sl - mov r1, r8 - bl ProcessStatement - add r0, r8, #7 - sub sb, sb, r0 - cmp sb, #0 - add sl, r6, #7 - ble _0230CAB0 - mov r0, sl - mov r1, sb - bl FindFinal - mov r6, r0 -_0230CAB0: - cmp sb, #0 - ble _0230CAC0 - cmp r6, #0 - bne _0230CA6C -_0230CAC0: - sub r0, r7, sb - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0230CAC8: .word ov00_0231BE28 -_0230CACC: .word ov00_0231BDDC - arm_func_end ProcessInBuffer - - arm_func_start CallReqCallback -CallReqCallback: ; 0x0230CAD0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - addmi sp, sp, #0x14 - ldmmiia sp!, {r4, r5, r6, r7, pc} - ldr r0, _0230CBD0 ; =ov00_023289E8 - ldr r0, [r0, #0x14] - bl ArrayLength_Gsi - cmp r7, r0 - addge sp, sp, #0x14 - ldmgeia sp!, {r4, r5, r6, r7, pc} - ldr r0, _0230CBD0 ; =ov00_023289E8 - mov r1, r7 - ldr r0, [r0, #0x14] - bl ArrayNth_Gsi - mov r3, r0 - ldr ip, [r3, #0x18] - cmp ip, #0 - beq _0230CBB8 - ldr r0, [r3] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0230CBB8 -_0230CB38: ; jump table - b _0230CB48 ; case 0 - b _0230CB64 ; case 1 - b _0230CB8C ; case 2 - b _0230CBA8 ; case 3 -_0230CB48: - ldr r0, [r3, #0x14] - mov r2, r6 - str r0, [sp] - ldmib r3, {r0, r1} - mov r3, r4 - blx ip - b _0230CBB8 -_0230CB64: - str r6, [sp] - str r5, [sp, #4] - ldr r0, [sp, #0x28] - str r4, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r3, #0x14] - str r0, [sp, #0x10] - ldmib r3, {r0, r1, r2, r3} - blx ip - b _0230CBB8 -_0230CB8C: - str r6, [sp] - str r5, [sp, #4] - ldr r0, [r3, #0x14] - str r0, [sp, #8] - ldmib r3, {r0, r1, r2, r3} - blx ip - b _0230CBB8 -_0230CBA8: - ldmib r3, {r0, r1} - ldr r3, [r3, #0x14] - mov r2, r6 - blx ip -_0230CBB8: - ldr r0, _0230CBD0 ; =ov00_023289E8 - mov r1, r7 - ldr r0, [r0, #0x14] - bl ArrayDeleteAt_Gsi - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0230CBD0: .word ov00_023289E8 - arm_func_end CallReqCallback - - arm_func_start ClosePendingCallbacks -ClosePendingCallbacks: ; 0x0230CBD4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x24 - ldr r0, _0230CCB8 ; =ov00_023289E8 - ldr r0, [r0, #0x14] - cmp r0, #0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - bl ArrayLength_Gsi - subs r4, r0, #1 - bmi _0230CC98 - ldr r5, _0230CCBC ; =ov00_023184D0 - add r3, sp, #4 - mov r2, #8 -_0230CC08: - ldrb r1, [r5] - ldrb r0, [r5, #1] - add r5, r5, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0230CC08 - ldr sb, _0230CCC0 ; =ov00_0231BE38 - ldr r5, _0230CCC4 ; =ov00_0231BDDC - add r8, sp, #0x14 - mov r7, #0xf - mov r6, #0 -_0230CC3C: - add ip, sp, #4 - add r3, sp, #0x14 - mov r2, #8 -_0230CC48: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0230CC48 - mov r0, r8 - mov r1, r7 - str sb, [r5] - bl xcode_buf - mov r0, r4 - mov r1, r6 - mov r2, r6 - mov r3, r8 - str r6, [sp] - bl CallReqCallback - subs r4, r4, #1 - bpl _0230CC3C -_0230CC98: - ldr r0, _0230CCB8 ; =ov00_023289E8 - ldr r0, [r0, #0x14] - bl ArrayFree_Gsi - ldr r0, _0230CCB8 ; =ov00_023289E8 - mov r1, #0 - str r1, [r0, #0x14] - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230CCB8: .word ov00_023289E8 -_0230CCBC: .word ov00_023184D0 -_0230CCC0: .word ov00_0231BE38 -_0230CCC4: .word ov00_0231BDDC - arm_func_end ClosePendingCallbacks - - arm_func_start GetTeamIndex_Gsi -GetTeamIndex_Gsi: ; 0x0230CCC8 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldreq r0, _0230CCF4 ; =ov00_023289E8 - ldreq r0, [r0, #0xc] - cmp r0, #0 - moveq r0, r1 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x20] - bl ArrayNth_Gsi - ldr r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CCF4: .word ov00_023289E8 - arm_func_end GetTeamIndex_Gsi - - arm_func_start GetPlayerIndex_Gsi -GetPlayerIndex_Gsi: ; 0x0230CCF8 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldreq r0, _0230CD24 ; =ov00_023289E8 - ldreq r0, [r0, #0xc] - cmp r0, #0 - moveq r0, r1 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x1c] - bl ArrayNth_Gsi - ldr r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CD24: .word ov00_023289E8 - arm_func_end GetPlayerIndex_Gsi - - arm_func_start ServerOpInt -ServerOpInt: ; 0x0230CD28 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - ldreq r0, _0230CD8C ; =ov00_023289E8 - mov r4, r1 - ldreq r5, [r0, #0xc] - mov r3, r2 - cmp r5, #0 - addeq r0, sp, #0x1c - beq _0230CD7C - ldr r0, [r5, #0xc] - add r2, sp, #0x1c - mov r1, r4 - blx r3 - cmp r0, #0 - bne _0230CD7C - ldr r0, [r5, #0xc] - add r3, sp, #0x1c - mov r1, r4 - mov r2, #0 - bl BucketNew -_0230CD7C: - ldr r0, [r0] - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_0230CD8C: .word ov00_023289E8 - arm_func_end ServerOpInt - - arm_func_start ServerOpFloat -ServerOpFloat: ; 0x0230CD90 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - ldreq r0, _0230CDFC ; =ov00_023289E8 - mov r4, r1 - ldreq r5, [r0, #0xc] - mov r3, r2 - cmp r5, #0 - addeq r0, sp, #0x1c - beq _0230CDE4 - ldr r0, [r5, #0xc] - add r2, sp, #0x1c - mov r1, r4 - blx r3 - cmp r0, #0 - bne _0230CDE4 - ldr r0, [r5, #0xc] - add r3, sp, #0x1c - mov r1, r4 - mov r2, #1 - bl BucketNew -_0230CDE4: - ldr r2, [r0] - ldr r1, [r0, #4] - mov r0, r2 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_0230CDFC: .word ov00_023289E8 - arm_func_end ServerOpFloat - - arm_func_start ServerOpString -ServerOpString: ; 0x0230CE00 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - ldreq r0, _0230CE58 ; =ov00_023289E8 - mov r5, r1 - ldreq r6, [r0, #0xc] - mov r4, r3 - cmp r6, #0 - mov ip, r2 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #0xc] - mov r1, r5 - mov r2, r4 - blx ip - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #0xc] - mov r1, r5 - mov r3, r4 - mov r2, #2 - bl BucketNew - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230CE58: .word ov00_023289E8 - arm_func_end ServerOpString - - arm_func_start TeamOpInt -TeamOpInt: ; 0x0230CE5C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetTeamIndex_Gsi - mov r3, r0 - ldr r1, _0230CEB4 ; =ov00_0231BEC4 - add r0, sp, #4 - mov r2, r6 - bl OS_VsPrintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpInt - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0230CEB4: .word ov00_0231BEC4 - arm_func_end TeamOpInt - - arm_func_start TeamOpFloat -TeamOpFloat: ; 0x0230CEB8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x48 - mov r7, r1 - ldr r1, [sp, #0x64] - mov r8, r0 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x60] - bl GetTeamIndex_Gsi - mov r3, r0 - ldr r1, _0230CF14 ; =ov00_0231BEC4 - add r0, sp, #8 - mov r2, r7 - bl OS_VsPrintf - ldr ip, [sp, #0x64] - mov r3, r5 - mov r0, r8 - mov r2, r6 - add r1, sp, #8 - stmia sp, {r4, ip} - bl ServerOpFloat - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0230CF14: .word ov00_0231BEC4 - arm_func_end TeamOpFloat - - arm_func_start TeamOpString -TeamOpString: ; 0x0230CF18 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetTeamIndex_Gsi - mov r3, r0 - ldr r1, _0230CF70 ; =ov00_0231BEC4 - add r0, sp, #4 - mov r2, r6 - bl OS_VsPrintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpString - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0230CF70: .word ov00_0231BEC4 - arm_func_end TeamOpString - - arm_func_start PlayerOpInt -PlayerOpInt: ; 0x0230CF74 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetPlayerIndex_Gsi - mov r3, r0 - ldr r1, _0230CFCC ; =ov00_0231BECC - add r0, sp, #4 - mov r2, r6 - bl OS_VsPrintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpInt - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0230CFCC: .word ov00_0231BECC - arm_func_end PlayerOpInt - - arm_func_start PlayerOpFloat -PlayerOpFloat: ; 0x0230CFD0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x48 - mov r7, r1 - ldr r1, [sp, #0x64] - mov r8, r0 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x60] - bl GetPlayerIndex_Gsi - mov r3, r0 - ldr r1, _0230D02C ; =ov00_0231BECC - add r0, sp, #8 - arm_func_end PlayerOpFloat - - arm_func_start ov00_0230D000 -ov00_0230D000: ; 0x0230D000 - mov r2, r7 - bl OS_VsPrintf - ldr ip, [sp, #0x64] - mov r3, r5 - mov r0, r8 - mov r2, r6 - add r1, sp, #8 - stmia sp, {r4, ip} - bl ServerOpFloat - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0230D02C: .word ov00_0231BECC - arm_func_end ov00_0230D000 - - arm_func_start PlayerOpString -PlayerOpString: ; 0x0230D030 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetPlayerIndex_Gsi - mov r3, r0 - ldr r1, _0230D088 ; =ov00_0231BECC - add r0, sp, #4 - mov r2, r6 - bl OS_VsPrintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpString - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0230D088: .word ov00_0231BECC - arm_func_end PlayerOpString - - arm_func_start Gti2VerifyChallenge -Gti2VerifyChallenge: ; 0x0230D08C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldrb r5, [r0] - mov lr, #0 - mov r4, #1 - and r6, r5, #1 - mov r3, lr - mov ip, r4 - mov r1, lr - mov r2, r4 -_0230D0B0: - add r7, r0, r4 - ldrb sl, [r7, #-1] - cmp sl, r5 - eor sl, r4, sl - movlo r8, ip - and sl, sl, #1 - movhs r8, r3 - cmp r5, #0x4f - movlo sb, r2 - eor sl, lr, sl - movhs sb, r1 - eor sl, r6, sl - eor sb, sl, sb - eors lr, sb, r8 - beq _0230D0F8 - ldrb r8, [r7] - tst r8, #1 - beq _0230D10C -_0230D0F8: - cmp lr, #0 - ldreqb r7, [r7] - andeq r7, r7, #1 - cmpeq r7, #1 - bne _0230D114 -_0230D10C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230D114: - add r4, r4, #1 - cmp r4, #0x20 - blt _0230D0B0 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end Gti2VerifyChallenge - - arm_func_start Gti2GetChallenge -Gti2GetChallenge: ; 0x0230D128 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl current_time_gsi - bl srand - bl rand - ldr r5, _0230D21C ; =0x2C0B02C1 - mov r1, r0, lsr #0x1f - smull r2, r4, r5, r0 - mov r8, #0 - mov r7, #1 - add r4, r1, r4, asr #4 - mov r3, #0x5d - smull r1, r2, r3, r4 - sub r4, r0, r1 - add r0, r4, #0x21 - strb r0, [sl] - mov fp, r8 - mov r6, r7 - mov r4, r3 -_0230D174: - add sb, sl, r7 - ldrb r3, [sb, #-1] - ldrb r0, [sl] - cmp r3, r0 - eor r3, r7, r3 - movlo r1, r6 - and r3, r3, #1 - movhs r1, fp - cmp r0, #0x4f - movlo r2, #1 - and r0, r0, #1 - eor r3, r8, r3 - movhs r2, #0 - eor r0, r0, r3 - eor r0, r0, r2 - eor r8, r0, r1 - bl rand - smull r2, r3, r5, r0 - mov r1, r0, lsr #0x1f - add r3, r1, r3, asr #4 - smull r1, r2, r4, r3 - sub r3, r0, r1 - add r0, r3, #0x21 - cmp r8, #0 - strb r0, [sb] - beq _0230D1E8 - ldrb r0, [sb] - tst r0, #1 - beq _0230D1FC -_0230D1E8: - cmp r8, #0 - ldreqb r0, [sb] - andeq r0, r0, #1 - cmpeq r0, #1 - bne _0230D208 -_0230D1FC: - ldrb r0, [sb] - add r0, r0, #1 - strb r0, [sb] -_0230D208: - add r7, r7, #1 - cmp r7, #0x20 - blt _0230D174 - mov r0, sl - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230D21C: .word 0x2C0B02C1 - arm_func_end Gti2GetChallenge - - arm_func_start Gti2GetResponse -Gti2GetResponse: ; 0x0230D220 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, r0 - ldr r0, _0230D320 ; =ov00_0231BED4 - mov r4, r1 - bl strlen - mov r7, r0 - mov r0, r4 - bl Gti2VerifyChallenge - mov sl, #0 - mov fp, r0 - mov r8, sl -_0230D24C: - cmp fp, #0 - cmpne sl, #0 - cmpne sl, #0xd - bne _0230D284 - bl rand - ldr r1, _0230D324 ; =0x2C0B02C1 - mov r2, r0, lsr #0x1f - smull r3, r6, r1, r0 - add r6, r2, r6, asr #4 - mov r1, #0x5d - smull r2, r3, r1, r6 - sub r6, r0, r2 - add r0, r6, #0x21 - b _0230D300 -_0230D284: - cmp sl, #1 - cmpne sl, #0xe - ldreqsb r6, [r4, sl] - addne r0, r4, sl - ldrb sb, [r4, sl] - ldrnesb r6, [r0, #-1] - mov r1, r7 - add r0, sl, sb - bl _s32_div_f - mul r0, r6, r8 - mov r6, r1 - mov r1, r7 - bl _s32_div_f - ldr r0, _0230D320 ; =ov00_0231BED4 - ldrsb r3, [r0, r6] - ldrsb r2, [r0, r1] - mla r0, sl, sb, r3 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldrb r0, [r4, r0] - eor r0, r0, r2 - bl abs - ldr r1, _0230D324 ; =0x2C0B02C1 - smull r2, r3, r1, r0 - mov r1, r0, lsr #0x1f - add r3, r1, r3, asr #4 - mov r1, #0x5d - smull r2, r3, r1, r3 - sub r3, r0, r2 - add r0, r3, #0x21 -_0230D300: - strb r0, [r5, sl] - add r0, r8, #0x47 - add sl, sl, #1 - cmp sl, #0x20 - add r8, r0, #0x4600 - blt _0230D24C - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230D320: .word ov00_0231BED4 -_0230D324: .word 0x2C0B02C1 - arm_func_end Gti2GetResponse - - arm_func_start Gti2CheckResponse -Gti2CheckResponse: ; 0x0230D328 - mov ip, #0 -_0230D32C: - cmp ip, #0 - cmpne ip, #0xd - ldrneb r3, [r0, ip] - ldrneb r2, [r1, ip] - cmpne r3, r2 - movne r0, #0 - bxne lr - add ip, ip, #1 - cmp ip, #0x20 - blt _0230D32C - mov r0, #1 - bx lr - arm_func_end Gti2CheckResponse - - arm_func_start Gti2AllocateBuffer -Gti2AllocateBuffer: ; 0x0230D35C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl gsimalloc - str r0, [r5] - cmp r0, #0 - moveq r0, #0 - strne r4, [r5, #4] - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Gti2AllocateBuffer diff --git a/asm/overlay_00_022DB1A4.s b/asm/overlay_00_022DB1A4.s new file mode 100644 index 00000000..21ed0206 --- /dev/null +++ b/asm/overlay_00_022DB1A4.s @@ -0,0 +1,58715 @@ + .include "asm/macros.inc" + .include "overlay_00_022DB1A4.inc" + + .text + + arm_func_start Dwci_Acc_GetFlag_DataType +Dwci_Acc_GetFlag_DataType: ; 0x022DB1A4 + stmdb sp!, {r3, lr} + bl Dwci_Acc_GetFlags + and r0, r0, #3 + ldmia sp!, {r3, pc} + arm_func_end Dwci_Acc_GetFlag_DataType + + arm_func_start Dwc_IsBuddyFriendData +Dwc_IsBuddyFriendData: ; 0x022DB1B4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_IsBuddyFriendData + cmp r0, #0 + beq _022DB1DC + mov r0, r4 + bl Dwci_IsReverseBuddyFriendData + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, pc} +_022DB1DC: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end Dwc_IsBuddyFriendData + + arm_func_start Dwci_IsBuddyFriendData +Dwci_IsBuddyFriendData: ; 0x022DB1E4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_Acc_GetFlag_DataType + cmp r0, #3 + bne _022DB214 + mov r0, r4 + bl Dwci_Acc_GetFlags + and r0, r0, #4 + cmp r0, #4 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r4, pc} +_022DB214: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end Dwci_IsBuddyFriendData + + arm_func_start Dwci_IsReverseBuddyFriendData +Dwci_IsReverseBuddyFriendData: ; 0x022DB21C + stmdb sp!, {r3, lr} + bl Dwci_Acc_GetFlags + and r0, r0, #8 + cmp r0, #8 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end Dwci_IsReverseBuddyFriendData + + arm_func_start Dwci_IsBuddyMsgAlreadySent +Dwci_IsBuddyMsgAlreadySent: ; 0x022DB238 + stmdb sp!, {r3, lr} + bl Dwci_Acc_GetFlags + and r0, r0, #0x20 + cmp r0, #0x20 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end Dwci_IsBuddyMsgAlreadySent + + arm_func_start Dwc_GetFriendDataType +Dwc_GetFriendDataType: ; 0x022DB254 + ldr ip, _022DB25C ; =Dwci_Acc_GetFlag_DataType + bx ip + .align 2, 0 +_022DB25C: .word Dwci_Acc_GetFlag_DataType + arm_func_end Dwc_GetFriendDataType + + arm_func_start Dwci_Acc_SetFlags +Dwci_Acc_SetFlags: ; 0x022DB260 + ldr ip, _022DB270 ; =Dwci_Acc_SetMaskBits + ldr r3, _022DB274 ; =0x001FFFFF + mov r2, #0xb + bx ip + .align 2, 0 +_022DB270: .word Dwci_Acc_SetMaskBits +_022DB274: .word 0x001FFFFF + arm_func_end Dwci_Acc_SetFlags + + arm_func_start Dwci_Acc_SetFlag_DataType +Dwci_Acc_SetFlag_DataType: ; 0x022DB278 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl Dwci_Acc_GetFlags + bic r1, r0, #3 + mov r0, r5 + orr r1, r1, r4 + bl Dwci_Acc_SetFlags + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_Acc_SetFlag_DataType + + arm_func_start Dwci_SetBuddyFriendData +Dwci_SetBuddyFriendData: ; 0x022DB29C + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_Acc_GetFlag_DataType + cmp r0, #3 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl Dwci_Acc_GetFlags + orr r1, r0, #4 + mov r0, r4 + bl Dwci_Acc_SetFlags + ldmia sp!, {r4, pc} + arm_func_end Dwci_SetBuddyFriendData + + arm_func_start Dwci_SetReverseBuddyFlag +Dwci_SetReverseBuddyFlag: ; 0x022DB2C8 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + beq _022DB2E4 + bl Dwci_Acc_GetFlags + orr r1, r0, #8 + b _022DB2EC +_022DB2E4: + bl Dwci_Acc_GetFlags + bic r1, r0, #8 +_022DB2EC: + mov r0, r4 + bl Dwci_Acc_SetFlags + ldmia sp!, {r4, pc} + arm_func_end Dwci_SetReverseBuddyFlag + + arm_func_start Dwci_SetExpIsBuddyFriendFlag +Dwci_SetExpIsBuddyFriendFlag: ; 0x022DB2F8 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + beq _022DB314 + bl Dwci_Acc_GetFlags + orr r1, r0, #0x10 + b _022DB31C +_022DB314: + bl Dwci_Acc_GetFlags + bic r1, r0, #0x10 +_022DB31C: + mov r0, r4 + bl Dwci_Acc_SetFlags + ldmia sp!, {r4, pc} + arm_func_end Dwci_SetExpIsBuddyFriendFlag + + arm_func_start Dwci_SetSentBuddyReqFlag +Dwci_SetSentBuddyReqFlag: ; 0x022DB328 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + beq _022DB344 + bl Dwci_Acc_GetFlags + orr r1, r0, #0x20 + b _022DB34C +_022DB344: + bl Dwci_Acc_GetFlags + bic r1, r0, #0x20 +_022DB34C: + mov r0, r4 + bl Dwci_Acc_SetFlags + ldmia sp!, {r4, pc} + arm_func_end Dwci_SetSentBuddyReqFlag + + arm_func_start Dwc_Acc_CreateFriendKey +Dwc_Acc_CreateFriendKey: ; 0x022DB358 + stmdb sp!, {r4, lr} + sub sp, sp, #0x170 + mov r4, r0 + str r4, [sp] + str r1, [sp, #4] + cmp r2, #0 + beq _022DB37C + cmp r2, #1 + b _022DB3A0 +_022DB37C: + add r0, sp, #0x70 + mov r1, #7 + bl MATHi_CRC8InitTable + add r0, sp, #0x70 + add r1, sp, #0 + mov r2, #8 + bl MATH_CalcCRC8 + and r0, r0, #0x7f + b _022DB3D0 +_022DB3A0: + add r0, sp, #0x18 + bl MD5_Init + add r0, sp, #0x18 + add r1, sp, #0 + mov r2, #8 + bl MD5_Update + add r0, sp, #8 + add r1, sp, #0x18 + bl MD5_Digest + ldrb r0, [sp, #8] + mov r0, r0, asr #1 + and r0, r0, #0x7f +_022DB3D0: + orr r1, r0, #0 + orr r0, r4, #0 + add sp, sp, #0x170 + ldmia sp!, {r4, pc} + arm_func_end Dwc_Acc_CreateFriendKey + + arm_func_start Dwc_CheckFriendKey +Dwc_CheckFriendKey: ; 0x022DB3E0 + ldr ip, _022DB3FC ; =Dwc_Acc_CheckFriendKey + mov r3, r0 + mov r0, r1 + mov r1, r2 + ldr r2, [r3, #0x24] + mov r3, #0 + bx ip + .align 2, 0 +_022DB3FC: .word Dwc_Acc_CheckFriendKey + arm_func_end Dwc_CheckFriendKey + + arm_func_start Dwc_Acc_CheckFriendKey +Dwc_Acc_CheckFriendKey: ; 0x022DB400 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + sub ip, r0, #1 + and ip, r5, ip + mov r4, r1 + cmp ip, #0 + ldmleia sp!, {r3, r4, r5, pc} + mov r1, r2 + mov r0, ip + mov r2, r3 + bl Dwc_Acc_CreateFriendKey + cmp r4, r1 + cmpeq r5, r0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwc_Acc_CheckFriendKey + + arm_func_start Dwc_Acc_FriendKeyToGsProfileId +Dwc_Acc_FriendKeyToGsProfileId: ; 0x022DB444 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, #0 +_022DB458: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl Dwc_Acc_CheckFriendKey + cmp r0, #0 + beq _022DB484 + mov r0, #0 + sub r0, r0, #1 + and r0, r7, r0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022DB484: + add r4, r4, #1 + cmp r4, #2 + blt _022DB458 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Dwc_Acc_FriendKeyToGsProfileId + + arm_func_start Dwc_FriendKeyToString +Dwc_FriendKeyToString: ; 0x022DB498 + stmdb sp!, {r3, lr} + str r2, [sp] + mov r3, r1 + ldr r2, _022DB4B4 ; =ov00_02318B8C + mov r1, #0xd + bl OS_SnPrintf + ldmia sp!, {r3, pc} + .align 2, 0 +_022DB4B4: .word ov00_02318B8C + arm_func_end Dwc_FriendKeyToString + + arm_func_start Dwci_Acc_U64ToString32 +Dwci_Acc_U64ToString32: ; 0x022DB4B8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr lr, _022DB520 ; =0x66666667 + add r4, r2, #4 + smull ip, r2, lr, r4 + mov ip, r4, lsr #0x1f + add r2, ip, r2, asr #1 + cmp r2, #0 + ldr r7, _022DB524 ; =ov00_02318B94 + mov r6, #0 + ble _022DB514 + add r4, r3, r2 + sub r4, r4, #1 + mov ip, #0x1f +_022DB4EC: + and r5, r0, ip + ldrsb r5, [r7, r5] + mov r0, r0, lsr #5 + mov lr, r1, lsr #5 + strb r5, [r4, -r6] + add r6, r6, #1 + orr r0, r0, r1, lsl #27 + mov r1, lr + cmp r6, r2 + blt _022DB4EC +_022DB514: + mov r0, #0 + strb r0, [r3, r2] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022DB520: .word 0x66666667 +_022DB524: .word ov00_02318B94 + arm_func_end Dwci_Acc_U64ToString32 + + arm_func_start Dwci_Acc_LoginIdToUserName +Dwci_Acc_LoginIdToUserName: ; 0x022DB528 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r4, r1 + mov r5, r2 + bl Dwci_Acc_GetUserId + add r3, sp, #0x29 + mov r2, #0x2b + bl Dwci_Acc_U64ToString32 + mov r0, r6 + bl Dwci_Acc_GetPlayerId + mov r1, #0 + mov r2, #0x20 + add r3, sp, #0x14 + bl Dwci_Acc_U64ToString32 + mov r1, r4, lsr #0x18 + and r1, r1, #0xff + str r1, [sp] + mov r1, r4, lsr #0x10 + and r1, r1, #0xff + str r1, [sp, #4] + mov r1, r4, lsr #8 + and r1, r1, #0xff + str r1, [sp, #8] + and r1, r4, #0xff + str r1, [sp, #0xc] + add r2, sp, #0x14 + str r2, [sp, #0x10] + ldr r2, _022DB5B4 ; =ov00_02318BB8 + mov r0, r5 + mov r1, #0x15 + add r3, sp, #0x29 + bl OS_SnPrintf + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DB5B4: .word ov00_02318BB8 + arm_func_end Dwci_Acc_LoginIdToUserName + + arm_func_start Dwci_Acc_CreateUserData +Dwci_Acc_CreateUserData: ; 0x022DB5B8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x400 + mov r4, r1 + mov r1, #0 + mov r2, #0x40 + mov r5, r0 + bl MI_CpuFill8 + mov r0, #0x40 + str r0, [r5] + mov r0, #0 + str r0, [r5, #0x1c] + add r0, r5, #4 + str r4, [r5, #0x24] + bl Dwci_Acc_CreateTempLoginId + add r0, r5, #0x10 + mov r1, #0 + bl Dwci_Acc_SetFlag_DataType + ldr r1, _022DB630 ; =0xEDB88320 + add r0, sp, #0 + bl MATHi_CRC32InitTable + add r0, sp, #0 + mov r1, r5 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x20] + orr r0, r0, #1 + str r0, [r5, #0x20] + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DB630: .word 0xEDB88320 + arm_func_end Dwci_Acc_CreateUserData + + arm_func_start Dwci_Acc_CreateTempLoginId +Dwci_Acc_CreateTempLoginId: ; 0x022DB634 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x34 + mov r6, r0 + add r0, sp, #0 + bl OS_GetLowEntropyData + mov r3, #1 + add r2, sp, #0 +_022DB650: + add r0, r2, r3, lsl #2 + ldr r1, [r2, r3, lsl #2] + ldr r0, [r0, #-4] + eor r0, r1, r0 + str r0, [r2, r3, lsl #2] + add r3, r3, #1 + cmp r3, #8 + blo _022DB650 + add r0, sp, #0x20 + ldr r5, [sp, #0x1c] + mov r4, #0 + bl Dwc_Auth_GetId + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _022DB6A0 + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + mov r0, r6 + bl Dwci_Acc_SetUserId + b _022DB6B0 +_022DB6A0: + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov r0, r6 + bl Dwci_Acc_SetUserId +_022DB6B0: + ldr r0, _022DB6EC ; =0x6C078965 + ldr r1, _022DB6F0 ; =0x5D588B65 + umull r3, r2, r5, r0 + mla r2, r5, r1, r2 + ldr r1, _022DB6F4 ; =0x00269EC3 + mla r2, r4, r0, r2 + adds r0, r3, r1 + mov r0, r6 + adc r1, r2, #0 + bl Dwci_Acc_SetPlayerId + mov r0, r6 + mov r1, #1 + bl Dwci_Acc_SetFlag_DataType + add sp, sp, #0x34 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022DB6EC: .word 0x6C078965 +_022DB6F0: .word 0x5D588B65 +_022DB6F4: .word 0x00269EC3 + arm_func_end Dwci_Acc_CreateTempLoginId + + arm_func_start Dwci_Acc_CheckConsoleUserId +Dwci_Acc_CheckConsoleUserId: ; 0x022DB6F8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + add r0, sp, #0 + bl Dwc_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0 + mov r0, r4 + beq _022DB740 + bl Dwci_Acc_GetUserId + ldr r2, [sp, #4] + ldr r3, [sp] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #1 + add sp, sp, #0x14 + movne r0, #0 + ldmia sp!, {r3, r4, pc} +_022DB740: + bl Dwci_Acc_GetUserId + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwci_Acc_CheckConsoleUserId + + arm_func_start Dwci_Acc_IsValidLoginId +Dwci_Acc_IsValidLoginId: ; 0x022DB764 + stmdb sp!, {r3, lr} + bl Dwci_Acc_GetFlag_DataType + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end Dwci_Acc_IsValidLoginId + + arm_func_start Dwci_Acc_IsAuthentic +Dwci_Acc_IsAuthentic: ; 0x022DB77C + ldr ip, _022DB788 ; =Dwci_Acc_IsValidLoginId + add r0, r0, #0x10 + bx ip + .align 2, 0 +_022DB788: .word Dwci_Acc_IsValidLoginId + arm_func_end Dwci_Acc_IsAuthentic + + arm_func_start Dwc_IsValidFriendData +Dwc_IsValidFriendData: ; 0x022DB78C + stmdb sp!, {r3, lr} + bl Dwci_Acc_GetFlag_DataType + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end Dwc_IsValidFriendData + + arm_func_start Dwci_Acc_IsValidFriendData +Dwci_Acc_IsValidFriendData: ; 0x022DB7A4 + ldr ip, _022DB7AC ; =Dwc_IsValidFriendData + bx ip + .align 2, 0 +_022DB7AC: .word Dwc_IsValidFriendData + arm_func_end Dwci_Acc_IsValidFriendData + + arm_func_start Dwc_CreateUserData +Dwc_CreateUserData: ; 0x022DB7B0 + ldr ip, _022DB7B8 ; =Dwci_Acc_CreateUserData + bx ip + .align 2, 0 +_022DB7B8: .word Dwci_Acc_CreateUserData + arm_func_end Dwc_CreateUserData + + arm_func_start Dwc_CheckUserData +Dwc_CheckUserData: ; 0x022DB7BC + stmdb sp!, {r4, lr} + sub sp, sp, #0x400 + ldr r1, _022DB7FC ; =0xEDB88320 + mov r4, r0 + add r0, sp, #0 + bl MATHi_CRC32InitTable + add r0, sp, #0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + ldr r1, [r4, #0x3c] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DB7FC: .word 0xEDB88320 + arm_func_end Dwc_CheckUserData + + arm_func_start Dwc_CheckHasProfile +Dwc_CheckHasProfile: ; 0x022DB800 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x10 + bl Dwci_Acc_IsValidLoginId + cmp r0, #0 + beq _022DB828 + ldr r0, [r4, #0x1c] + cmp r0, #0 + movgt r0, #1 + ldmgtia sp!, {r4, pc} +_022DB828: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end Dwc_CheckHasProfile + + arm_func_start Dwc_CheckValidConsole +Dwc_CheckValidConsole: ; 0x022DB830 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + add r0, r4, #0x10 + bl Dwci_Acc_GetFlag_DataType + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #1 + ldmeqia sp!, {r3, r4, pc} + add r0, sp, #0 + bl Dwc_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + add r0, r4, #0x10 + bl Dwci_Acc_GetUserId + ldr r2, [sp, #4] + ldr r3, [sp] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwc_CheckValidConsole + + arm_func_start Dwci_Acc_SetLoginIdToUserData +Dwci_Acc_SetLoginIdToUserData: ; 0x022DB898 + stmdb sp!, {r4, lr} + sub sp, sp, #0x400 + mov r4, r0 + add r3, r4, #0x10 + mov ip, r2 + ldmia r1, {r0, r1, r2} + stmia r3, {r0, r1, r2} + ldr r1, _022DB8EC ; =0xEDB88320 + add r0, sp, #0 + str ip, [r4, #0x1c] + bl MATHi_CRC32InitTable + add r0, sp, #0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x20] + orr r0, r0, #1 + str r0, [r4, #0x20] + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DB8EC: .word 0xEDB88320 + arm_func_end Dwci_Acc_SetLoginIdToUserData + + arm_func_start Dwc_CheckDirtyFlag +Dwc_CheckDirtyFlag: ; 0x022DB8F0 + ldr ip, _022DB8F8 ; =Dwci_Acc_IsDirty + bx ip + .align 2, 0 +_022DB8F8: .word Dwci_Acc_IsDirty + arm_func_end Dwc_CheckDirtyFlag + + arm_func_start Dwci_Acc_IsDirty +Dwci_Acc_IsDirty: ; 0x022DB8FC + ldr r0, [r0, #0x20] + and r0, r0, #1 + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + bx lr + arm_func_end Dwci_Acc_IsDirty + + arm_func_start Dwc_ClearDirtyFlag +Dwc_ClearDirtyFlag: ; 0x022DB914 + ldr ip, _022DB91C ; =Dwci_Acc_ClearDirty + bx ip + .align 2, 0 +_022DB91C: .word Dwci_Acc_ClearDirty + arm_func_end Dwc_ClearDirtyFlag + + arm_func_start Dwci_Acc_ClearDirty +Dwci_Acc_ClearDirty: ; 0x022DB920 + stmdb sp!, {r4, lr} + sub sp, sp, #0x400 + mov r4, r0 + ldr r1, [r4, #0x20] + add r0, sp, #0 + bic r2, r1, #1 + ldr r1, _022DB960 ; =0xEDB88320 + str r2, [r4, #0x20] + bl MATHi_CRC32InitTable + add r0, sp, #0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DB960: .word 0xEDB88320 + arm_func_end Dwci_Acc_ClearDirty + + arm_func_start Dwc_GetFriendKey +Dwc_GetFriendKey: ; 0x022DB964 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_Acc_GetFlag_DataType + cmp r0, #2 + movne r0, #0 + movne r1, r0 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl Dwci_Acc_GetFriendKey + ldmia sp!, {r4, pc} + arm_func_end Dwc_GetFriendKey + + arm_func_start Dwc_GetGsProfileId +Dwc_GetGsProfileId: ; 0x022DB98C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl Dwci_Acc_GetFlag_DataType + cmp r0, #1 + beq _022DB9DC + cmp r0, #2 + beq _022DB9BC + cmp r0, #3 + beq _022DB9D0 + b _022DB9E4 +_022DB9BC: + mov r0, r4 + bl Dwci_Acc_GetFriendKey + ldr r2, [r5, #0x24] + bl Dwc_Acc_FriendKeyToGsProfileId + ldmia sp!, {r3, r4, r5, pc} +_022DB9D0: + mov r0, r4 + bl Dwci_Acc_GetGsProfileId + ldmia sp!, {r3, r4, r5, pc} +_022DB9DC: + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DB9E4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwc_GetGsProfileId + + arm_func_start Dwc_CreateFriendKey +Dwc_CreateFriendKey: ; 0x022DB9EC + stmdb sp!, {r3, lr} + mov r3, r0 + ldr r0, [r3, #0x1c] + mov r2, #0 + mov r1, r2 + cmp r0, #0 + beq _022DBA14 + ldr r1, [r3, #0x24] + bl Dwc_Acc_CreateFriendKey + mov r2, r0 +_022DBA14: + mov r0, r2 + ldmia sp!, {r3, pc} + arm_func_end Dwc_CreateFriendKey + + arm_func_start Dwc_CreateFriendKeyToken +Dwc_CreateFriendKeyToken: ; 0x022DBA1C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r4, r2 + mov r6, r0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl Dwci_Acc_SetFriendKey + mov r0, r6 + mov r1, #2 + bl Dwci_Acc_SetFlag_DataType + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_CreateFriendKeyToken + + arm_func_start Dwc_CreateExchangeToken +Dwc_CreateExchangeToken: ; 0x022DBA58 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + bl Dwci_Acc_IsAuthentic + cmp r0, #0 + addeq r0, r5, #4 + ldmeqia r0, {r0, r1, r2} + stmeqia r4, {r0, r1, r2} + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #0x1c] + mov r0, r4 + bl Dwci_Acc_SetGsProfileId + mov r0, r4 + mov r1, #3 + bl Dwci_Acc_SetFlag_DataType + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwc_CreateExchangeToken + + arm_func_start Dwc_SetGsProfileId +Dwc_SetGsProfileId: ; 0x022DBAAC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + mov r1, r4 + bl Dwci_Acc_SetGsProfileId + mov r0, r5 + mov r1, #3 + bl Dwci_Acc_SetFlag_DataType + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwc_SetGsProfileId + + arm_func_start Dwc_LoginIdToUserName +Dwc_LoginIdToUserName: ; 0x022DBAE0 + ldr ip, _022DBAF4 ; =Dwci_Acc_LoginIdToUserName + mov r3, r0 + mov r0, r1 + ldr r1, [r3, #0x24] + bx ip + .align 2, 0 +_022DBAF4: .word Dwci_Acc_LoginIdToUserName + arm_func_end Dwc_LoginIdToUserName + + arm_func_start Dwc_IsEqualFriendData +Dwc_IsEqualFriendData: ; 0x022DBAF8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + mov r7, r0 + bl Dwci_Acc_GetFlag_DataType + mov r5, r0 + mov r0, r4 + bl Dwci_Acc_GetFlag_DataType + cmp r5, r0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #3 + bne _022DBB4C + mov r0, r7 + bl Dwci_Acc_GetGsProfileId + mov r5, r0 + mov r0, r4 + bl Dwci_Acc_GetGsProfileId + cmp r5, r0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022DBB4C: + cmp r5, #1 + bne _022DBBA0 + mov r0, r7 + bl Dwci_Acc_GetUserId + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl Dwci_Acc_GetUserId + cmp r6, r1 + cmpeq r5, r0 + bne _022DBB98 + mov r0, r7 + bl Dwci_Acc_GetPlayerId + mov r5, r0 + mov r0, r4 + bl Dwci_Acc_GetPlayerId + cmp r5, r0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022DBB98: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022DBBA0: + cmp r5, #2 + bne _022DBBD4 + mov r0, r7 + bl Dwci_Acc_GetFriendKey + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl Dwci_Acc_GetFriendKey + cmp r6, r1 + cmpeq r5, r0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022DBBD4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Dwc_IsEqualFriendData + + arm_func_start Dwc_ReportFriendData +Dwc_ReportFriendData: ; 0x022DBBDC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x24 + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl Dwci_Acc_GetFlag_DataType + cmp r0, #3 + mov r0, r4 + bne _022DBC0C + bl Dwc_IsBuddyFriendData + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} +_022DBC0C: + bl Dwci_Acc_GetFlag_DataType + cmp r0, #2 + mov r0, r4 + bne _022DBC3C + bl Dwci_Acc_GetFriendKey + mov r3, r0 + mov r2, r1 + add r0, sp, #0x15 + mov r1, r3 + bl Dwc_FriendKeyToString + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} +_022DBC3C: + bl Dwci_Acc_GetFlag_DataType + cmp r0, #1 + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, pc} + ldr r1, [r5, #0x24] + add r2, sp, #0 + mov r0, r4 + bl Dwci_Acc_LoginIdToUserName + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} + arm_func_end Dwc_ReportFriendData + + arm_func_start Dwc_ReportUserData +Dwc_ReportUserData: ; 0x022DBC64 + stmdb sp!, {r4, lr} + mov r4, r0 + add r1, r4, #4 + bl Dwc_ReportFriendData + mov r0, r4 + add r1, r4, #0x10 + bl Dwc_ReportFriendData + ldmia sp!, {r4, pc} + arm_func_end Dwc_ReportUserData + + arm_func_start Dwc_Auth_SetCustomNas +Dwc_Auth_SetCustomNas: ; 0x022DBC84 + ldr r1, _022DBC90 ; =ov00_02318BC8 + str r0, [r1] + bx lr + .align 2, 0 +_022DBC90: .word ov00_02318BC8 + arm_func_end Dwc_Auth_SetCustomNas + + arm_func_start Dwc_Auth_GetCustomNas +Dwc_Auth_GetCustomNas: ; 0x022DBC94 + ldr r0, _022DBCA0 ; =ov00_02318BC8 + ldr r0, [r0] + bx lr + .align 2, 0 +_022DBCA0: .word ov00_02318BC8 + arm_func_end Dwc_Auth_GetCustomNas + + arm_func_start Dwc_Auth_Create +Dwc_Auth_Create: ; 0x022DBCA4 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _022DBDB8 ; =ov00_02326CB4 + mov r5, r0 + ldr r0, [r2, #8] + mov r4, r1 + cmp r0, #0 + ldr r2, [r5, #0x40] + movne r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022DBDBC ; =ov00_02318C0C + ldr r1, _022DBDC0 ; =0x000013F4 + blx r2 + ldr r1, _022DBDB8 ; =ov00_02326CB4 + cmp r0, #0 + str r0, [r1, #8] + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, _022DBDC0 ; =0x000013F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r3, _022DBDB8 ; =ov00_02326CB4 + mov r1, #0 + ldr r0, [r3, #8] + mov r2, #0x1c4 + add r0, r0, #0x1000 + str r4, [r0, #0x314] + str r1, [r3] + ldr r0, [r3, #8] + add r0, r0, #8 + add r0, r0, #0x1000 + bl MI_CpuFill8 + ldr r1, _022DBDB8 ; =ov00_02326CB4 + ldr r2, _022DBDC4 ; =0x00004E84 + ldr r0, [r1, #8] + mov r4, #4 + add r0, r0, #0x1000 + str r2, [r0, #8] + ldr lr, [r1, #8] + add r0, lr, #0x1cc + add ip, r0, #0x1000 +_022DBD44: + ldmia r5!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _022DBD44 + ldmia r5, {r0, r1} + stmia ip, {r0, r1} + add r0, lr, #0x1100 + mov r2, #0 + strh r2, [r0, #0xfe] + ldr r1, _022DBDB8 ; =ov00_02326CB4 + mov r0, #1 + ldr r1, [r1, #8] + add r1, r1, #0x1000 + strb r2, [r1, #0x20b] + bl Dwci_Auth_Start + ldr r2, _022DBDB8 ; =ov00_02326CB4 + ldr r1, [r2, #8] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2, #8] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #0 + str r0, [r2, #4] + bl Dwci_Auth_StartThread + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DBDB8: .word ov00_02326CB4 +_022DBDBC: .word ov00_02318C0C +_022DBDC0: .word 0x000013F4 +_022DBDC4: .word 0x00004E84 + arm_func_end Dwc_Auth_Create + + arm_func_start Dwci_Auth_StartThread +Dwci_Auth_StartThread: ; 0x022DBDC8 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _022DBE70 ; =ov00_02326CB4 + ldr r0, [r0, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_InitMutex + ldr r1, _022DBE70 ; =ov00_02326CB4 + mov r2, #0 + ldr r0, [r1, #8] + add r0, r0, #0x1000 + str r2, [r0, #0x3f0] + ldr r1, [r1, #8] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + beq _022DBE24 + add r0, r1, #0x318 + add r0, r0, #0x1000 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, pc} +_022DBE24: + ldr r0, _022DBE70 ; =ov00_02326CB4 + mov r3, #0x1000 + ldr lr, [r0, #8] + ldr r1, _022DBE74 ; =Dwci_Auth_Thread + add r0, lr, #0x318 + ldr r2, _022DBE78 ; =ov00_02326CBC + str r3, [sp] + mov ip, #0x10 + add r0, r0, #0x1000 + add r3, lr, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _022DBE70 ; =ov00_02326CB4 + ldr r0, [r0, #8] + add r0, r0, #0x318 + add r0, r0, #0x1000 + bl OS_WakeupThreadDirect + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DBE70: .word ov00_02326CB4 +_022DBE74: .word Dwci_Auth_Thread +_022DBE78: .word ov00_02326CBC + arm_func_end Dwci_Auth_StartThread + + arm_func_start Dwc_Auth_Abort +Dwc_Auth_Abort: ; 0x022DBE7C + stmdb sp!, {r3, lr} + ldr r0, _022DBF04 ; =ov00_02326CB4 + ldr r0, [r0, #8] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r1, _022DBF04 ; =ov00_02326CB4 + mov r2, #1 + ldr r0, [r1, #8] + add r0, r0, #0x1000 + str r2, [r0, #0x3f0] + ldr r0, [r1, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_UnlockMutex + ldr r0, _022DBF04 ; =ov00_02326CB4 + ldr r0, [r0, #8] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + cmp r0, #0 + beq _022DBEDC + bl Dwc_Http_Abort +_022DBEDC: + ldr r0, _022DBF04 ; =ov00_02326CB4 + ldr r1, [r0, #8] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x318 + add r0, r0, #0x1000 + bl OS_JoinThread + ldmia sp!, {r3, pc} + .align 2, 0 +_022DBF04: .word ov00_02326CB4 + arm_func_end Dwc_Auth_Abort + + arm_func_start Dwc_Auth_Destroy +Dwc_Auth_Destroy: ; 0x022DBF08 + stmdb sp!, {r4, lr} + ldr r0, _022DBF58 ; =ov00_02326CB4 + ldr r0, [r0, #8] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + ldr r4, [r1, #0x210] + cmp r0, #0 + beq _022DBF34 + bl Dwc_Http_Destroy +_022DBF34: + ldr r1, _022DBF58 ; =ov00_02326CB4 + ldr r0, _022DBF5C ; =ov00_02318C1C + ldr r1, [r1, #8] + mov r2, #0 + blx r4 + ldr r0, _022DBF58 ; =ov00_02326CB4 + mov r1, #0 + str r1, [r0, #8] + ldmia sp!, {r4, pc} + .align 2, 0 +_022DBF58: .word ov00_02326CB4 +_022DBF5C: .word ov00_02318C1C + arm_func_end Dwc_Auth_Destroy + + arm_func_start Dwc_Auth_Join +Dwc_Auth_Join: ; 0x022DBF60 + stmdb sp!, {r3, lr} + ldr r0, _022DBF8C ; =ov00_02326CB4 + ldr r1, [r0, #8] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x318 + add r0, r0, #0x1000 + bl OS_JoinThread + ldmia sp!, {r3, pc} + .align 2, 0 +_022DBF8C: .word ov00_02326CB4 + arm_func_end Dwc_Auth_Join + + arm_func_start Dwc_Auth_GetError +Dwc_Auth_GetError: ; 0x022DBF90 + stmdb sp!, {r4, lr} + ldr r0, _022DBFD8 ; =ov00_02326CB4 + ldr r0, [r0, #8] + cmp r0, #0 + moveq r0, #0x16 + ldmeqia sp!, {r4, pc} + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r0, _022DBFD8 ; =ov00_02326CB4 + ldr r1, [r0, #8] + add r0, r1, #0x3d8 + add r1, r1, #0x1000 + add r0, r0, #0x1000 + ldr r4, [r1, #4] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DBFD8: .word ov00_02326CB4 + arm_func_end Dwc_Auth_GetError + + arm_func_start Dwc_Auth_GetResult +Dwc_Auth_GetResult: ; 0x022DBFDC + stmdb sp!, {r4, lr} + ldr r1, _022DC058 ; =ov00_02326CB4 + mov r4, r0 + ldr r1, [r1, #8] + cmp r1, #0 + bne _022DC000 + mov r1, #0 + mov r2, #0x1c4 + bl MI_CpuFill8 +_022DC000: + ldr r0, _022DC058 ; =ov00_02326CB4 + mov r1, r4 + ldr r0, [r0, #8] + mov r2, #0x1c4 + add r0, r0, #8 + add r0, r0, #0x1000 + bl MI_CpuCopy8 + ldr r1, [r4] + ldr r0, _022DC05C ; =0x00004E20 + cmp r1, r0 + blt _022DC038 + ldr r0, _022DC060 ; =0x00007530 + cmp r1, r0 + blt _022DC040 +_022DC038: + ldr r0, _022DC064 ; =0x00005206 + str r0, [r4] +_022DC040: + ldr r1, [r4] + ldr r0, _022DC068 ; =0x00004E84 + cmp r1, r0 + rsbge r0, r1, #0 + strge r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022DC058: .word ov00_02326CB4 +_022DC05C: .word 0x00004E20 +_022DC060: .word 0x00007530 +_022DC064: .word 0x00005206 +_022DC068: .word 0x00004E84 + arm_func_end Dwc_Auth_GetResult + + arm_func_start Dwci_Auth_Start +Dwci_Auth_Start: ; 0x022DC06C + stmdb sp!, {r4, lr} + ldr r1, _022DC164 ; =ov00_02318BC8 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022DC168 ; =ov00_02318C2C + bl strcmp + cmp r0, #0 + ldrne r0, _022DC164 ; =ov00_02318BC8 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _022DC16C ; =ov00_02326CB4 + ldr r2, _022DC164 ; =ov00_02318BC8 + ldr r0, [r0, #8] + ldr r1, _022DC170 ; =ov00_02318BC8 + add r0, r0, #0x1000 + ldr r3, [r0, #0x20c] + str r3, [r2, #0xc] + ldr r3, [r0, #0x210] + str r3, [r2, #0x10] + ldr r0, [r0, #0x314] + bl Dwc_Http_Create + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + cmp r4, #1 + bne _022DC0DC + ldr r0, _022DC174 ; =ov00_02326CC0 + bl Dwci_BM_GetWiFiInfo +_022DC0DC: + ldr r0, _022DC16C ; =ov00_02326CB4 + ldr r1, [r0, #8] + add r0, r1, #0x1000 + add r2, r1, #0x1cc + ldr r0, [r0, #0x314] + add r1, r1, #0x1200 + add r2, r2, #0x1000 + bl Dwci_Auth_Prepare_FirstPost + ldr r2, _022DC16C ; =ov00_02326CB4 + ldr r1, [r2, #8] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2, #8] + add r0, r0, #0x1000 + ldr r1, [r0, #4] + cmp r1, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, [r0, #0x314] + bl Dwc_Http_FinishHeader + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, _022DC178 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _022DC16C ; =ov00_02326CB4 + ldr r2, [r1, #8] + sub r1, r0, #1 + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + bl Dwc_Http_StartThread + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DC164: .word ov00_02318BC8 +_022DC168: .word ov00_02318C2C +_022DC16C: .word ov00_02326CB4 +_022DC170: .word ov00_02318BC8 +_022DC174: .word ov00_02326CC0 +_022DC178: .word OSi_ThreadInfo + arm_func_end Dwci_Auth_Start + + arm_func_start Dwci_Auth_Thread +Dwci_Auth_Thread: ; 0x022DC17C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, #0 +_022DC184: + ldr r0, _022DC420 ; =ov00_02326CB4 + ldr r0, [r0, #8] + add r0, r0, #0x1000 + ldr r1, [r0, #0x314] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + beq _022DC1B0 + add r0, r1, #0x338 + add r0, r0, #0x1800 + bl OS_JoinThread +_022DC1B0: + ldr r2, _022DC420 ; =ov00_02326CB4 + ldr r0, [r2, #8] + add r0, r0, #0x1000 + ldr r1, [r0, #0x314] + add r1, r1, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #8 + beq _022DC24C + ldr r1, _022DC424 ; =0x00004E84 + str r1, [r0, #8] + ldr r0, [r2, #8] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #7 + bne _022DC200 + mov r0, #0x14 + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC200: + cmp r8, #2 + ble _022DC23C + cmp r0, #2 + bne _022DC21C + mov r0, #9 + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC21C: + cmp r0, #3 + bne _022DC230 + mov r0, #0xb + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC230: + mov r0, #0xd + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC23C: + mov r0, #1 + add r8, r8, #1 + str r0, [sp] + b _022DC2BC +_022DC24C: + bl Dwci_Auth_ParseHttp + cmp r0, #0x10 + beq _022DC274 + cmp r0, #0x11 + beq _022DC298 + cmp r0, #0x15 + bne _022DC2A0 + mov r0, #0x15 + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC274: + cmp r8, #2 + ble _022DC288 + mov r0, #0x10 + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC288: + mov r0, #0 + add r8, r8, #1 + str r0, [sp] + b _022DC2BC +_022DC298: + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC2A0: + cmp r8, #2 + blt _022DC2B0 + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC2B0: + mov r0, #1 + add r8, r8, #1 + str r0, [sp] +_022DC2BC: + bl OS_GetTick + mov sb, r0 + mov sl, r1 + bl OS_GetTick + subs r2, r0, sb + sbc r0, r1, sl + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _022DC428 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + ldr r7, _022DC42C ; =0x00001388 + cmpeq r0, r7 + bhs _022DC39C + mov fp, #0 + ldr r6, _022DC428 ; =0x000082EA + ldr r5, _022DC420 ; =ov00_02326CB4 + mov r4, fp +_022DC30C: + ldr r0, [r5, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r2, [r5, #8] + add r0, r2, #0x1000 + ldr r1, [r0, #0x3f0] + cmp r1, #1 + bne _022DC358 + ldr r2, _022DC424 ; =0x00004E84 + ldr r1, _022DC420 ; =ov00_02326CB4 + str r2, [r0, #8] + ldr r0, [r1, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_UnlockMutex + mov r0, #0x14 + bl Dwci_Auth_SetError + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC358: + add r0, r2, #0x3d8 + add r0, r0, #0x1000 + bl OS_UnlockMutex + mov r0, r7 + bl OS_Sleep + bl OS_GetTick + subs r2, r0, sb + sbc r0, r1, sl + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, r6 + mov r3, fp + bl _ll_udiv + cmp r1, r4 + cmpeq r0, r7 + blo _022DC30C +_022DC39C: + ldr r0, _022DC420 ; =ov00_02326CB4 + ldr r0, [r0, #8] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + bl Dwc_Http_Destroy + ldr r0, _022DC420 ; =ov00_02326CB4 + ldr r0, [r0, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r0, [sp] + bl Dwci_Auth_Start + ldr r2, _022DC420 ; =ov00_02326CB4 + ldr r1, [r2, #8] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r3, [r2, #8] + add r0, r3, #0x1000 + ldr r1, [r0, #4] + cmp r1, #0 + beq _022DC40C + ldr r1, _022DC424 ; =0x00004E84 + str r1, [r0, #8] + ldr r0, [r2, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_UnlockMutex + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DC40C: + add r0, r3, #0x3d8 + add r0, r0, #0x1000 + bl OS_UnlockMutex + b _022DC184 +_022DC41C: + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DC420: .word ov00_02326CB4 +_022DC424: .word 0x00004E84 +_022DC428: .word 0x000082EA +_022DC42C: .word 0x00001388 + arm_func_end Dwci_Auth_Thread + + arm_func_start Dwci_Auth_ParseHttp +Dwci_Auth_ParseHttp: ; 0x022DC430 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022DC5E8 ; =ov00_02326CB4 + mov r1, #0 + ldr r0, [r0, #8] + add r2, r0, #0x1000 + ldr r0, [r2, #0x314] + ldr r4, [r2, #0x20c] + ldr r5, [r2, #0x210] + bl Dwc_Http_ParseResult + cmp r0, #1 + beq _022DC478 + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r2, _022DC5EC ; =0x00004E84 + ldr r1, [r0, #8] + mov r0, #0xe + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC478: + bl Dwci_Auth_FillResult + cmp r0, #0 + movne r0, #0xe + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r1, _022DC5EC ; =0x00004E84 + ldr r0, [r0, #8] + add r0, r0, #0x1000 + ldr r2, [r0, #8] + cmp r2, r1 + bge _022DC538 + sub r0, r1, #0x62 + cmp r2, r0 + bne _022DC530 + ldr r0, _022DC5F0 ; =ov00_02318C4C + ldr r1, _022DC5F4 ; =0x0000071F + blx r4 + movs r4, r0 + bne _022DC4E0 + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r2, _022DC5EC ; =0x00004E84 + ldr r1, [r0, #8] + mov r0, #2 + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC4E0: + add r1, r4, #0x1f + ldr r0, _022DC5F8 ; =ov00_02326CC0 + bic r1, r1, #0x1f + bl Dwci_Auth_UpDateWiFiID + cmp r0, #1 + mov r2, #0 + beq _022DC524 + ldr r0, _022DC5FC ; =ov00_02318C5C + mov r1, r4 + blx r5 + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r2, _022DC5EC ; =0x00004E84 + ldr r1, [r0, #8] + mov r0, #0xf + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC524: + ldr r0, _022DC5FC ; =ov00_02318C5C + mov r1, r4 + blx r5 +_022DC530: + mov r0, #0x15 + ldmia sp!, {r3, r4, r5, pc} +_022DC538: + add r0, r1, #4 + cmp r2, r0 + beq _022DC554 + add r0, r1, #8 + cmp r2, r0 + beq _022DC578 + b _022DC5E0 +_022DC554: + ldr r0, _022DC5F8 ; =ov00_02326CC0 + bl Dwci_Auth_RemakeWiFiID + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r2, _022DC600 ; =0x00004E88 + ldr r1, [r0, #8] + mov r0, #0x10 + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC578: + ldr r0, _022DC5F0 ; =ov00_02318C4C + mov r1, #0x700 + blx r4 + movs r4, r0 + bne _022DC5A8 + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r2, _022DC604 ; =0x00004E8C + ldr r1, [r0, #8] + mov r0, #0x11 + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC5A8: + add r0, r4, #0x1f + bic r0, r0, #0x1f + bl Dwci_Auth_MakeWiFiID + ldr r0, _022DC5FC ; =ov00_02318C5C + mov r1, r4 + mov r2, #0 + blx r5 + ldr r0, _022DC5E8 ; =ov00_02326CB4 + ldr r2, _022DC604 ; =0x00004E8C + ldr r1, [r0, #8] + mov r0, #0x11 + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC5E0: + mov r0, #0x12 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DC5E8: .word ov00_02326CB4 +_022DC5EC: .word 0x00004E84 +_022DC5F0: .word ov00_02318C4C +_022DC5F4: .word 0x0000071F +_022DC5F8: .word ov00_02326CC0 +_022DC5FC: .word ov00_02318C5C +_022DC600: .word 0x00004E88 +_022DC604: .word 0x00004E8C + arm_func_end Dwci_Auth_ParseHttp + + arm_func_start Dwci_Auth_FillResult +Dwci_Auth_FillResult: ; 0x022DC608 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022DC8A0 ; =ov00_02326CB4 + mov r1, #0 + ldr r0, [r0, #8] + str r1, [sp] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _022DC8A4 ; =ov00_02318C68 + bl Dwc_Http_GetResult + str r0, [sp] + cmp r0, #0 + beq _022DC63C + bl Dwc_Auth_SetNasTimeDiff +_022DC63C: + ldr r0, _022DC8A0 ; =ov00_02326CB4 + mov r2, #0 + ldr r1, [r0, #8] + ldr r0, _022DC8A8 ; =_022BCA70 + str r2, [sp] + str r2, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _022DC8AC ; =ov00_02318C70 + bl Dwc_Http_GetResult + bl atoi + ldr r1, _022DC8A8 ; =_022BCA70 + ldr r1, [r1] + cmp r1, #0x22 + bne _022DC694 + ldr r0, _022DC8A0 ; =ov00_02326CB4 + ldr r2, _022DC8B0 ; =0x00004E85 + ldr r1, [r0, #8] + mov r0, #0xc + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC694: + cmp r0, #0xc8 + beq _022DC6BC + ldr r1, _022DC8A0 ; =ov00_02326CB4 + add r0, r0, #0x1d8 + ldr r1, [r1, #8] + add r2, r0, #0x5800 + add r0, r1, #0x1000 + str r2, [r0, #8] + mov r0, #0x12 + ldmia sp!, {r3, r4, r5, pc} +_022DC6BC: + ldr r0, _022DC8A0 ; =ov00_02326CB4 + ldr r1, _022DC8B4 ; =ov00_02318C7C + ldr r2, [r0, #8] + mov r3, #4 + add r0, r2, #0x1000 + add r2, r2, #0xc + ldr r0, [r0, #0x314] + add r2, r2, #0x1000 + bl Dwc_Http_GetBase64DecodedResult + cmp r0, #0 + bgt _022DC704 + ldr r0, _022DC8A0 ; =ov00_02326CB4 + ldr r2, _022DC8B0 ; =0x00004E85 + ldr r1, [r0, #8] + mov r0, #0xe + add r1, r1, #0x1000 + str r2, [r1, #8] + ldmia sp!, {r3, r4, r5, pc} +_022DC704: + ldr r0, _022DC8A0 ; =ov00_02326CB4 + add r1, sp, #0 + ldr r0, [r0, #8] + mov r2, #0xa + add r0, r0, #0xc + add r0, r0, #0x1000 + bl strtol + ldr r1, _022DC8A0 ; =ov00_02326CB4 + mov r4, r0 + ldr r5, [r1, #8] + add r0, r5, #0xc + add r0, r0, #0x1000 + bl strlen + add r1, r5, #0xc + add r1, r1, #0x1000 + ldr r2, [sp] + add r0, r1, r0 + cmp r2, r0 + beq _022DC764 + ldr r1, _022DC8B0 ; =0x00004E85 + add r0, r5, #0x1000 + str r1, [r0, #8] + mov r0, #0xc + ldmia sp!, {r3, r4, r5, pc} +_022DC764: + add r0, r4, #0xe20 + add r1, r0, #0x4000 + add r0, r5, #0x1000 + str r1, [r0, #8] + cmp r4, #0x64 + bge _022DC898 + ldr r5, _022DC8A0 ; =ov00_02326CB4 + mov r0, #0 + ldr r2, [r5, #8] + ldr r1, _022DC8B8 ; =ov00_02318C88 + add r2, r2, #0x1000 + strb r0, [r2, #0x52] + ldr r2, [r5, #8] + ldr r3, _022DC8BC ; =0x0000012D + add r2, r2, #0x1000 + strb r0, [r2, #0x1f] + ldr r2, [r5, #8] + add r2, r2, #0x1000 + strb r0, [r2, #0x17f] + ldr r2, [r5, #8] + add r2, r2, #0x1000 + strb r0, [r2, #0x10] + ldr r2, [r5, #8] + add r2, r2, #0x1000 + strb r0, [r2, #0x188] + ldr r2, [r5, #8] + add r0, r2, #0x1000 + add r2, r2, #0x52 + ldr r0, [r0, #0x314] + add r2, r2, #0x1000 + bl Dwc_Http_GetBase64DecodedResult + mov r0, r5 + ldr r2, [r0, #8] + ldr r1, _022DC8C0 ; =ov00_02318C90 + add r0, r2, #0x1000 + add r2, r2, #0x1f + ldr r0, [r0, #0x314] + mov r3, #0x33 + add r2, r2, #0x1000 + bl Dwc_Http_GetBase64DecodedResult + mov r0, r5 + ldr r2, [r0, #8] + ldr r1, _022DC8C4 ; =ov00_02318C98 + add r0, r2, #0x1000 + add r2, r2, #0x7f + ldr r0, [r0, #0x314] + mov r3, #9 + add r2, r2, #0x1100 + bl Dwc_Http_GetBase64DecodedResult + mov r0, r5 + ldr r2, [r0, #8] + ldr r1, _022DC8C8 ; =ov00_02318CA4 + add r0, r2, #0x1000 + add r2, r2, #0x10 + ldr r0, [r0, #0x314] + mov r3, #0xf + add r2, r2, #0x1000 + bl Dwc_Http_GetBase64DecodedResult + mov r0, r5 + ldr r2, [r0, #8] + ldr r1, _022DC8CC ; =ov00_02318CB0 + add r0, r2, #0x1000 + add r2, r2, #0x188 + ldr r0, [r0, #0x314] + mov r3, #0x41 + add r2, r2, #0x1000 + bl Dwc_Http_GetRawResult + mov r1, r5 + ldr r0, [r1, #8] + mov r2, #0 + add r0, r0, #0x1000 + cmp r4, #0x28 + strb r2, [r0, #0x1b3] + movne r0, #1 + strne r0, [r1] + moveq r0, #2 + streq r0, [r1] +_022DC898: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DC8A0: .word ov00_02326CB4 +_022DC8A4: .word ov00_02318C68 +_022DC8A8: .word _022BCA70 +_022DC8AC: .word ov00_02318C70 +_022DC8B0: .word 0x00004E85 +_022DC8B4: .word ov00_02318C7C +_022DC8B8: .word ov00_02318C88 +_022DC8BC: .word 0x0000012D +_022DC8C0: .word ov00_02318C90 +_022DC8C4: .word ov00_02318C98 +_022DC8C8: .word ov00_02318CA4 +_022DC8CC: .word ov00_02318CB0 + arm_func_end Dwci_Auth_FillResult + + arm_func_start Dwci_Auth_Prepare_FirstPost +Dwci_Auth_Prepare_FirstPost: ; 0x022DC8D0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x94 + ldr r3, _022DCA4C ; =ov00_02326CB4 + mov r4, r0 + ldr r0, [r3, #0x10] + ldr r3, [r3, #0xc] + cmp r0, #0 + mov r6, r1 + mov r5, r2 + cmpeq r3, #0 + bne _022DC92C + ldr r0, _022DCA50 ; =ov00_02318CBC + bl strlen + mov r3, r0 + ldr r1, _022DCA54 ; =ov00_02318CC8 + ldr r2, _022DCA50 ; =ov00_02318CBC + mov r0, r4 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + beq _022DC984 + add sp, sp, #0x94 + mov r0, #8 + ldmia sp!, {r3, r4, r5, r6, pc} +_022DC92C: + ldr r0, _022DCA58 ; =ov00_02318CD0 + bl strlen + mov r3, r0 + ldr r1, _022DCA54 ; =ov00_02318CC8 + ldr r2, _022DCA58 ; =ov00_02318CD0 + mov r0, r4 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x94 + movne r0, #8 + ldmneia sp!, {r3, r4, r5, r6, pc} + mov r0, r6 + bl strlen + mov r3, r0 + ldr r1, _022DCA5C ; =ov00_02318CD8 + mov r0, r4 + mov r2, r6 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x94 + movne r0, #8 + ldmneia sp!, {r3, r4, r5, r6, pc} +_022DC984: + ldr r1, _022DCA60 ; =ov00_02326CC0 + add r0, sp, #0 + bl Dwc_Auth_GetCalInfoFromWiFiInfo + cmp r0, #0 + addeq sp, sp, #0x94 + moveq r0, #5 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, _022DCA64 ; =ov00_02326CDC + add r1, sp, #0 + ldr r2, [r0] + mov r0, r4 + bl Dwc_Auth_SetCalInfoToHttp + cmp r0, #0 + addeq sp, sp, #0x94 + moveq r0, #8 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, _022DCA4C ; =ov00_02326CB4 + ldr r0, [r0, #4] + cmp r0, #1 + bne _022DCA00 + ldr r0, _022DCA68 ; =ov00_02318CE0 + bl strlen + mov r3, r0 + ldr r1, _022DCA6C ; =ov00_02318CE4 + ldr r2, _022DCA68 ; =ov00_02318CE0 + mov r0, r4 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x94 + movne r0, #8 + ldmneia sp!, {r3, r4, r5, r6, pc} +_022DCA00: + mov r0, r5 + bl wcslen + cmp r0, #0 + beq _022DCA40 + mov r0, r5 + bl wcslen + mov r3, r0 + ldr r1, _022DCA70 ; =ov00_02318CEC + mov r0, r4 + mov r2, r5 + mov r3, r3, lsl #1 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x94 + movne r0, #8 + ldmneia sp!, {r3, r4, r5, r6, pc} +_022DCA40: + mov r0, #0 + add sp, sp, #0x94 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022DCA4C: .word ov00_02326CB4 +_022DCA50: .word ov00_02318CBC +_022DCA54: .word ov00_02318CC8 +_022DCA58: .word ov00_02318CD0 +_022DCA5C: .word ov00_02318CD8 +_022DCA60: .word ov00_02326CC0 +_022DCA64: .word ov00_02326CDC +_022DCA68: .word ov00_02318CE0 +_022DCA6C: .word ov00_02318CE4 +_022DCA70: .word ov00_02318CEC + arm_func_end Dwci_Auth_Prepare_FirstPost + + arm_func_start Dwci_Auth_SetError +Dwci_Auth_SetError: ; 0x022DCA74 + stmdb sp!, {r4, lr} + ldr r1, _022DCAB4 ; =ov00_02326CB4 + mov r4, r0 + ldr r0, [r1, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r1, _022DCAB4 ; =ov00_02326CB4 + ldr r0, [r1, #8] + add r0, r0, #0x1000 + str r4, [r0, #4] + ldr r0, [r1, #8] + add r0, r0, #0x3d8 + add r0, r0, #0x1000 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_022DCAB4: .word ov00_02326CB4 + arm_func_end Dwci_Auth_SetError + + arm_func_start Dwc_Auth_GetCalInfoFromNVram +Dwc_Auth_GetCalInfoFromNVram: ; 0x022DCAB8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + add r0, sp, #0 + bl Dwci_BM_GetWiFiInfo + add r1, sp, #0 + mov r0, r4 + bl Dwc_Auth_GetCalInfoFromWiFiInfo + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwc_Auth_GetCalInfoFromNVram + + arm_func_start Dwc_Auth_GetCalInfoFromWiFiInfo +Dwc_Auth_GetCalInfoFromWiFiInfo: ; 0x022DCAE0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x8c + mov r6, r1 + mov r1, #0 + mov r2, #0x94 + mov r4, r0 + bl MI_CpuFill8 + ldmia r6, {r3, r5} + cmp r5, #0 + cmpeq r3, #0 + mov r1, #0xe + beq _022DCB24 + ldr r2, _022DCD70 ; =ov00_02318CF8 + mov r0, r4 + str r5, [sp] + bl OS_SnPrintf + b _022DCB3C +_022DCB24: + ldr r3, [r6, #8] + ldr r5, [r6, #0xc] + ldr r2, _022DCD70 ; =ov00_02318CF8 + mov r0, r4 + str r5, [sp] + bl OS_SnPrintf +_022DCB3C: + ldrh r3, [r6, #0x10] + ldr r2, _022DCD74 ; =ov00_02318D00 + add r0, r4, #0xe + mov r1, #7 + bl OS_SnPrintf + ldr r0, _022DCD78 ; =0x027FFE0C + ldrb r0, [r0] + cmp r0, #0 + bne _022DCB64 + bl WaitForever2 +_022DCB64: + ldr r0, _022DCD78 ; =0x027FFE0C + add r1, r4, #0x15 + mov r2, #4 + bl MI_CpuCopy8 + ldr r0, _022DCD7C ; =0x027FFE10 + ldrb r0, [r0] + cmp r0, #0 + bne _022DCB88 + bl WaitForever2 +_022DCB88: + ldr r0, _022DCD7C ; =0x027FFE10 + add r1, r4, #0x1a + mov r2, #2 + bl MI_CpuCopy8 + mov r1, #0x30 + add r0, sp, #0x16 + strb r1, [r4, #0x1d] + bl OS_GetMacAddress + ldr r5, _022DCD80 ; =ov00_02318D08 + add r7, sp, #0x16 + add r8, r4, #0x1f + mov r6, #0 +_022DCBB8: + ldrb r2, [r7], #1 + mov r0, r8 + mov r1, r5 + bl OS_VsPrintf + add r6, r6, #1 + cmp r6, #6 + add r8, r8, #2 + blt _022DCBB8 + add r0, sp, #0x38 + bl GetDsFirmwareUserSettings + ldrb r0, [sp, #0x38] + ldr r2, _022DCD80 ; =ov00_02318D08 + mov r1, #3 + cmp r0, #8 + movhs r0, #1 + strhsb r0, [sp, #0x38] + ldrb r3, [sp, #0x38] + add r0, r4, #0x2c + bl OS_SnPrintf + add r0, sp, #0x3c + add r1, r4, #0x7e + mov r2, #0x14 + bl MI_CpuCopy8 + ldrb r1, [sp, #0x3b] + ldr r2, _022DCD84 ; =ov00_02318D10 + add r0, r4, #0x2f + str r1, [sp] + ldrb r3, [sp, #0x3a] + mov r1, #5 + bl OS_SnPrintf + add r0, sp, #0x28 + add r1, sp, #0x1c + bl Rtc_GetDateTime + cmp r0, #0 + addne sp, sp, #0x8c + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [sp, #0x2c] + ldr r2, _022DCD88 ; =ov00_02318D1C + str r0, [sp] + ldr r1, [sp, #0x30] + add r0, r4, #0x34 + str r1, [sp, #4] + ldr r3, [sp, #0x1c] + mov r1, #0xd + str r3, [sp, #8] + ldr r3, [sp, #0x20] + str r3, [sp, #0xc] + ldr r3, [sp, #0x24] + str r3, [sp, #0x10] + ldr r3, [sp, #0x28] + bl OS_SnPrintf + bl EnableIrqFlag + mov r6, r0 + bl Wcm_GetApMacAddress + mov r7, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r7, #0 + bne _022DCCBC + mov r0, r6 + bl SetIrqFlag + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022DCCBC: + ldr r5, _022DCD80 ; =ov00_02318D08 + add r8, r4, #0x41 + mov sb, #0 +_022DCCC8: + ldrb r2, [r7, sb] + mov r0, r8 + mov r1, r5 + bl OS_VsPrintf + add sb, sb, #1 + cmp sb, #6 + add r8, r8, #2 + blt _022DCCC8 + bl Dwc_AC_GetApType + mov r3, r0 + cmp r3, #0xff + beq _022DCD00 + cmp r3, #0x63 + bls _022DCD04 +_022DCD00: + mov r3, #0x63 +_022DCD04: + ldr r2, _022DCD8C ; =ov00_02318D38 + add r0, r4, #0x6f + mov r1, #0xe + bl OS_SnPrintf + add r0, sp, #0x14 + bl Wcm_GetApEssid + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _022DCD44 + mov r0, r6 + bl SetIrqFlag + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022DCD44: + mov r0, r5 + add r1, r4, #0x4e + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, r4, #0x72 + bl Dwc_AC_GetApSpotInfo + mov r0, r6 + bl SetIrqFlag + mov r0, #1 + add sp, sp, #0x8c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022DCD70: .word ov00_02318CF8 +_022DCD74: .word ov00_02318D00 +_022DCD78: .word 0x027FFE0C +_022DCD7C: .word 0x027FFE10 +_022DCD80: .word ov00_02318D08 +_022DCD84: .word ov00_02318D10 +_022DCD88: .word ov00_02318D1C +_022DCD8C: .word ov00_02318D38 + arm_func_end Dwc_Auth_GetCalInfoFromWiFiInfo + + arm_func_start Dwc_Auth_SetCalInfoToHttp +Dwc_Auth_SetCalInfoToHttp: ; 0x022DCD90 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov ip, #1 + ldr r2, _022DD094 ; =ov00_02318D48 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #3 + str ip, [sp] + bl OS_SnPrintf + add r0, sp, #4 + bl strlen + mov r3, r0 + ldr r1, _022DD098 ; =ov00_02318D54 + mov r0, r6 + add r2, sp, #4 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl strlen + mov r3, r0 + ldr r1, _022DD09C ; =ov00_02318D5C + mov r0, r6 + mov r2, r5 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0xe + bl strlen + mov r3, r0 + ldr r1, _022DD0A0 ; =ov00_02318D64 + mov r0, r6 + add r2, r5, #0xe + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x41 + bl strlen + mov r3, r0 + ldr r1, _022DD0A4 ; =ov00_02318D6C + mov r0, r6 + add r2, r5, #0x41 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x6f + bl strlen + mov r3, r0 + ldr r1, _022DD0A8 ; =ov00_02318D74 + mov r0, r6 + add r2, r5, #0x6f + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x15 + bl strlen + mov r3, r0 + ldr r1, _022DD0AC ; =ov00_02318D7C + mov r0, r6 + add r2, r5, #0x15 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1a + bl strlen + mov r3, r0 + ldr r1, _022DD0B0 ; =ov00_02318D84 + mov r0, r6 + add r2, r5, #0x1a + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1d + bl strlen + mov r3, r0 + ldr r1, _022DD0B4 ; =ov00_02318D8C + mov r0, r6 + add r2, r5, #0x1d + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1f + bl strlen + mov r3, r0 + ldr r1, _022DD0B8 ; =ov00_02318D94 + mov r0, r6 + add r2, r5, #0x1f + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2c + bl strlen + mov r3, r0 + ldr r1, _022DD0BC ; =ov00_02318D9C + mov r0, r6 + add r2, r5, #0x2c + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2f + bl strlen + mov r3, r0 + ldr r1, _022DD0C0 ; =ov00_02318DA4 + mov r0, r6 + add r2, r5, #0x2f + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x34 + bl strlen + mov r3, r0 + ldr r1, _022DD0C4 ; =ov00_02318DAC + mov r0, r6 + add r2, r5, #0x34 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x7e + bl wcslen + mov r3, r0 + ldr r1, _022DD0C8 ; =ov00_02318DB4 + mov r0, r6 + add r2, r5, #0x7e + mov r3, r3, lsl #1 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #1 + bne _022DD034 + add r0, r5, #0x4e + bl strlen + mov r3, r0 + ldr r1, _022DD0CC ; =ov00_02318DBC + mov r0, r6 + add r2, r5, #0x4e + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} +_022DD034: + ldr r2, _022DD0D0 ; =ov00_02318DC4 + mov ip, #1 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #3 + str ip, [sp] + bl OS_SnPrintf + ldr r1, _022DD0D4 ; =ov00_02318DDC + add r2, sp, #4 + mov r0, r6 + bl Dwc_Http_Add_HeaderItem + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _022DD0D8 ; =ov00_02318DE8 + mov r0, r6 + add r2, r5, #0x15 + bl Dwc_Http_Add_HeaderItem + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DD094: .word ov00_02318D48 +_022DD098: .word ov00_02318D54 +_022DD09C: .word ov00_02318D5C +_022DD0A0: .word ov00_02318D64 +_022DD0A4: .word ov00_02318D6C +_022DD0A8: .word ov00_02318D74 +_022DD0AC: .word ov00_02318D7C +_022DD0B0: .word ov00_02318D84 +_022DD0B4: .word ov00_02318D8C +_022DD0B8: .word ov00_02318D94 +_022DD0BC: .word ov00_02318D9C +_022DD0C0: .word ov00_02318DA4 +_022DD0C4: .word ov00_02318DAC +_022DD0C8: .word ov00_02318DB4 +_022DD0CC: .word ov00_02318DBC +_022DD0D0: .word ov00_02318DC4 +_022DD0D4: .word ov00_02318DDC +_022DD0D8: .word ov00_02318DE8 + arm_func_end Dwc_Auth_SetCalInfoToHttp + + arm_func_start Dwc_Http_Create +Dwc_Http_Create: ; 0x022DD0DC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r2, _022DD1E4 ; =0x00001C14 + mov r6, r0 + ldr r4, [r5, #0xc] + mov r1, #0 + bl MI_CpuFill8 + add r1, r6, #4 + add r0, r6, #0x1000 + mvn r2, #0 + str r2, [r0, #0xa30] + mov lr, r5 + str r2, [r0, #0xa34] + add ip, r1, #0x1000 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _022DD1E8 ; =ov00_02318E28 + ldr r1, _022DD1EC ; =0x00000B68 + blx r4 + add r1, r6, #0x1000 + str r0, [r1, #0x9cc] + cmp r0, #0 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _022DD1F0 ; =ov00_02318E40 + ldr r1, _022DD1F4 ; =0x000005EA + blx r4 + add r2, r6, #0x1000 + str r0, [r2, #0x9d0] + cmp r0, #0 + moveq r0, #1 + streq r0, [r2, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + add r1, r6, #0x208 + ldr r2, [r2, #0xc] + mov r0, r6 + add r1, r1, #0x1800 + bl Dwci_Http_AllocBuffer + cmp r0, #0 + bne _022DD198 + add r1, r6, #0x1000 + mov r0, #1 + str r0, [r1, #0x20] + ldmia sp!, {r4, r5, r6, pc} +_022DD198: + ldr r1, [r5] + mov r0, r6 + bl Dwci_Http_SetHostinfo + cmp r0, #0 + bne _022DD1BC + add r1, r6, #0x1000 + mov r0, #1 + str r0, [r1, #0x20] + ldmia sp!, {r4, r5, r6, pc} +_022DD1BC: + mov r0, r6 + bl Dwci_Http_WriteBasicHeader + add r1, r6, #0x1000 + str r0, [r1, #0x20] + cmp r0, #0 + moveq r0, #0xff + streqb r0, [r1] + add r0, r6, #0x1000 + ldr r0, [r0, #0x20] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DD1E4: .word 0x00001C14 +_022DD1E8: .word ov00_02318E28 +_022DD1EC: .word 0x00000B68 +_022DD1F0: .word ov00_02318E40 +_022DD1F4: .word 0x000005EA + arm_func_end Dwc_Http_Create + + arm_func_start Dwc_Http_FinishHeader +Dwc_Http_FinishHeader: ; 0x022DD1F8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022DD27C ; =ov00_02318E58 + ldr r2, _022DD280 ; =ov00_02318E64 + mov r4, r0 + bl Dwc_Http_Add_HeaderItem + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + add r0, r4, #0x1000 + ldr r0, [r0, #0x9f8] + ldr r1, _022DD284 ; =ov00_02318E6C + bl strstr + add r0, r0, #4 + bl strlen + movs r3, r0 + beq _022DD270 + ldr r2, _022DD288 ; =ov00_02318E74 + add r0, sp, #0 + mov r1, #7 + bl OS_SnPrintf + ldr r1, _022DD28C ; =ov00_02318E78 + add r2, sp, #0 + mov r0, r4 + bl Dwc_Http_Add_HeaderItem + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_022DD270: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DD27C: .word ov00_02318E58 +_022DD280: .word ov00_02318E64 +_022DD284: .word ov00_02318E6C +_022DD288: .word ov00_02318E74 +_022DD28C: .word ov00_02318E78 + arm_func_end Dwc_Http_FinishHeader + + arm_func_start Dwc_Http_StartThread +Dwc_Http_StartThread: ; 0x022DD290 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + add r0, r5, #0x3f8 + add r2, r5, #0x1000 + mov r3, #0 + add r0, r0, #0x1800 + mov r4, r1 + str r3, [r2, #0xc10] + bl OS_InitMutex + add r0, r5, #0x218 + add r0, r0, #0x1800 + bl OS_InitMutex + add r0, r5, #0x1000 + ldr r0, [r0, #0x18] + cmp r0, #1 + ldreq r0, _022DD344 ; =ov00_02326CD4 + moveq r1, #1 + ldrne r0, _022DD344 ; =ov00_02326CD4 + movne r1, #0 + str r1, [r0] + add r0, r5, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + beq _022DD30C + add r0, r5, #0x338 + add r0, r0, #0x1800 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, pc} +_022DD30C: + add r0, r5, #0x338 + mov r1, #0x1000 + str r1, [sp] + ldr r1, _022DD348 ; =Dwci_Http_Thread + mov r2, r5 + add r0, r0, #0x1800 + add r3, r5, #0x1000 + str r4, [sp, #4] + bl OS_CreateThread + add r0, r5, #0x338 + add r0, r0, #0x1800 + bl OS_WakeupThreadDirect + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DD344: .word ov00_02326CD4 +_022DD348: .word Dwci_Http_Thread + arm_func_end Dwc_Http_StartThread + + arm_func_start Dwc_Http_Abort +Dwc_Http_Abort: ; 0x022DD34C + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldrb r0, [r0] + cmp r0, #0xff + ldmneia sp!, {r4, pc} + add r0, r4, #0x3f8 + add r0, r0, #0x1800 + bl OS_LockMutex + add r0, r4, #0x3f8 + add r1, r4, #0x1000 + mov r2, #1 + add r0, r0, #0x1800 + str r2, [r1, #0xc10] + bl OS_UnlockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0x338 + add r0, r0, #0x1800 + bl OS_JoinThread + ldmia sp!, {r4, pc} + arm_func_end Dwc_Http_Abort + + arm_func_start Dwci_Http_Yield +Dwci_Http_Yield: ; 0x022DD3A8 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldr r0, [r0, #0x130] + cmp r0, #1 + bne _022DD3DC + add r0, r4, #0x1d4 + add r0, r0, #0x1800 + bl OS_GetLowEntropyData + add r0, r4, #0x1d4 + add r0, r0, #0x1800 + mov r1, #0x20 + bl Cps_SslAddRandomSeed +_022DD3DC: + add r0, r4, #0x3f8 + add r0, r0, #0x1800 + bl OS_LockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xc10] + cmp r0, #1 + add r0, r4, #0x3f8 + add r0, r0, #0x1800 + bne _022DD40C + bl OS_UnlockMutex + mov r0, #0 + ldmia sp!, {r4, pc} +_022DD40C: + bl OS_UnlockMutex + mov r0, #0xa + bl OS_Sleep + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end Dwci_Http_Yield + + arm_func_start Dwci_Http_InitCpsSocket +Dwci_Http_InitCpsSocket: ; 0x022DD420 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x138 + add r0, r0, #0x1000 + mov r1, #0 + mov r2, #0x64 + bl MI_CpuFill8 + ldr r0, _022DD470 ; =0x00000B68 + add r1, r4, #0x1000 + str r0, [r1, #0x174] + ldr r3, [r1, #0x9cc] + add r0, r4, #0x138 + ldr r2, _022DD474 ; =0x000005EA + str r3, [r1, #0x178] + str r2, [r1, #0x180] + ldr r2, [r1, #0x9d0] + add r0, r0, #0x1000 + str r2, [r1, #0x184] + bl Cps_SocRegister + ldmia sp!, {r4, pc} + .align 2, 0 +_022DD470: .word 0x00000B68 +_022DD474: .word 0x000005EA + arm_func_end Dwci_Http_InitCpsSocket + + arm_func_start Dwci_Http_Resolve +Dwci_Http_Resolve: ; 0x022DD478 + ldr ip, _022DD488 ; =Cps_Resolve + add r0, r0, #0x1000 + ldr r0, [r0, #0x124] + bx ip + .align 2, 0 +_022DD488: .word Cps_Resolve + arm_func_end Dwci_Http_Resolve + + arm_func_start Dwci_Http_CheckHeaderReceived +Dwci_Http_CheckHeaderReceived: ; 0x022DD48C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r0 + add r0, r5, #0x1000 + ldr r6, [r0, #0xa08] + add r2, r5, #0x208 + ldr r1, _022DD568 ; =ov00_02318E6C + mov r0, r6 + add r4, r2, #0x1800 + bl strstr + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, _022DD568 ; =ov00_02318E6C + mov r0, r6 + bl strstr + add r1, r5, #0x218 + add r6, r0, #4 + add r0, r1, #0x1800 + bl OS_LockMutex + ldr r0, [r4, #4] + add r1, r5, #0x218 + sub r2, r0, r6 + add r0, r5, #0x1000 + str r2, [r0, #0xa34] + add r0, r1, #0x1800 + bl OS_UnlockMutex + ldr r0, [r4] + ldr r1, _022DD56C ; =ov00_02318E88 + bl strstr + movs r8, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022DD56C ; =ov00_02318E88 + bl strlen + mov r7, r0 + ldr r1, _022DD570 ; =ov00_02318E9C + add r0, r8, r7 + bl strstr + mov r6, r0 + add r0, r5, #0x218 + ldrsb r4, [r6] + mov r1, #0 + add r0, r0, #0x1800 + strb r1, [r6] + bl OS_LockMutex + add r0, r8, r7 + bl atoi + add r1, r5, #0x1000 + add r2, r5, #0x218 + str r0, [r1, #0xa30] + add r0, r2, #0x1800 + bl OS_UnlockMutex + strb r4, [r6] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022DD568: .word ov00_02318E6C +_022DD56C: .word ov00_02318E88 +_022DD570: .word ov00_02318E9C + arm_func_end Dwci_Http_CheckHeaderReceived + + arm_func_start Dwci_Http_Thread +Dwci_Http_Thread: ; 0x022DD574 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sl, r0 + add r0, sl, #0x1000 + ldr r8, [r0, #0x1c] + add r0, sl, #0x138 + add r1, sl, #0x19c + add r2, sl, #0x208 + add r4, r0, #0x1000 + cmp r8, #0 + mov r0, sl + add r5, r1, #0x1000 + add r7, r2, #0x1800 + mov fp, #0 + ldrle r8, _022DD87C ; =0x0000EA60 + bl Dwci_Http_InitCpsSocket + mov r0, sl + bl Dwci_Http_Resolve + movs r6, r0 + add r0, sl, #0x1000 + moveq r1, #2 + streq r1, [r0, #0x20] + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str r6, [r0, #0x12c] + bl Cps_SocUse + add r0, sl, #0x1000 + ldr r0, [r0, #0x130] + cmp r0, #1 + bne _022DD628 + mov r0, r5 + mov r1, #0 + mov r2, #0x830 + bl MI_CpuFill8 + ldr r1, _022DD880 ; =Dwci_Http_CpsCallback + add r0, sl, #0x1000 + str r1, [r5, #0x810] + ldr r1, [r0, #0x124] + ldr r0, _022DD884 ; =ov00_02318DF8 + str r1, [r5, #0x800] + mov r1, #0xc + str r5, [r4, #0xc] + bl Cps_SetRootCa + mov r0, #1 + bl Cps_SetSsl +_022DD628: + add r0, sl, #0x1100 + ldrh r1, [r0, #0x34] + mov r2, r6 + mov r0, #0 + bl Cps_SocBind + bl Cps_TcpConnect + cmp r0, #0 + add r0, sl, #0x1000 + beq _022DD664 + mov r1, #3 + str r1, [r0, #0x20] + bl Cps_SocRelease + bl Cps_SocUnRegister + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DD664: + ldr r4, [r0, #0x9f8] + mov r0, r4 + bl strlen + mov r1, r0 + mov r0, r4 + bl Cps_SocWrite + str r0, [sp, #0x10] + cmp r0, #0 + bgt _022DD698 + add r0, sl, #0x1000 + mov r1, #5 + str r1, [r0, #0x20] + b _022DD864 +_022DD698: + bl Cps_SocFlush + mov r0, sl + bl Dwci_Http_Yield + cmp r0, #0 + bne _022DD6BC + add r0, sl, #0x1000 + mov r1, #7 + str r1, [r0, #0x20] + b _022DD864 +_022DD6BC: + ldr r0, [r7] + str r0, [r7, #4] + ldr r1, [r7] + ldr r0, [r7, #0xc] + add r0, r1, r0 + str r0, [r7, #8] + bl OS_GetTick + str r0, [sp, #8] + add r0, sl, #0x234 + str r1, [sp, #4] + add r5, sl, #0x218 + add r6, r0, #0x1800 + add r4, sl, #0x1000 +_022DD6F0: + ldr r0, _022DD888 ; =ov00_023250C8 + ldr r0, [r0] + cmp r0, #0 + bne _022DD710 + add r0, sl, #0x1000 + mov r1, #5 + str r1, [r0, #0x20] + b _022DD864 +_022DD710: + bl Cps_SocGetLength + str r0, [sp, #0x10] + cmp r0, #0 + blt _022DD840 + ble _022DD7C4 + bl OS_GetTick + str r0, [sp, #8] + add r0, sp, #0x10 + str r1, [sp, #4] + bl Cps_SocRead + cmp r0, #0 + beq _022DD840 + ldmib r7, {r1, r2} + sub r2, r2, #1 + ldr sb, [sp, #0x10] + sub r2, r2, r1 + cmp sb, r2 + movge sb, r2 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, [r7, #4] + cmp fp, #1 + add r1, r0, sb + str r1, [r7, #4] + mov r0, #0 + strb r0, [r1] + bne _022DD79C + add r0, r5, #0x1800 + bl OS_LockMutex + ldr r1, [r6] + add r0, r5, #0x1800 + add r1, r1, sb + str r1, [r6] + bl OS_UnlockMutex + b _022DD7A8 +_022DD79C: + mov r0, sl + bl Dwci_Http_CheckHeaderReceived + mov fp, r0 +_022DD7A8: + ldr r0, [sp, #0x10] + cmp r0, sb + bls _022DD7BC + bl Cps_SocConsume + b _022DD840 +_022DD7BC: + mov r0, sb + bl Cps_SocConsume +_022DD7C4: + ldr r1, [r4, #0xa30] + cmp r1, #0 + ldrge r0, [r4, #0xa34] + cmpge r0, r1 + bge _022DD840 + bl OS_GetTick + ldr r2, [sp, #8] + mov r3, #0 + subs r2, r0, r2 + ldr r0, [sp, #4] + sbc r0, r1, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _022DD88C ; =0x000082EA + bl _ll_udiv + cmp r1, r8, asr #31 + cmpeq r0, r8 + bls _022DD820 + add r0, sl, #0x1000 + mov r1, #6 + str r1, [r0, #0x20] + b _022DD864 +_022DD820: + mov r0, sl + bl Dwci_Http_Yield + cmp r0, #0 + bne _022DD6F0 + add r0, sl, #0x1000 + mov r1, #7 + str r1, [r0, #0x20] + b _022DD864 +_022DD840: + bl Cps_TcpShutdown + bl Cps_TcpClose + bl Cps_SocRelease + bl Cps_SocUnRegister + add r0, sl, #0x1000 + mov r1, #8 + str r1, [r0, #0x20] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DD864: + bl Cps_TcpShutdown + bl Cps_TcpClose + bl Cps_SocRelease + bl Cps_SocUnRegister + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DD87C: .word 0x0000EA60 +_022DD880: .word Dwci_Http_CpsCallback +_022DD884: .word ov00_02318DF8 +_022DD888: .word ov00_023250C8 +_022DD88C: .word 0x000082EA + arm_func_end Dwci_Http_Thread + + arm_func_start Dwc_Http_Destroy +Dwc_Http_Destroy: ; 0x022DD890 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + add r1, r5, #0x1000 + ldr r4, [r1, #0x14] + ldmeqia sp!, {r3, r4, r5, pc} + add r1, r5, #0x238 + add r1, r1, #0x1800 + mov r2, #0x20 + bl Dwc_Http_Disconnect + add r1, r5, #0x208 + mov r0, r5 + add r1, r1, #0x1800 + bl Dwci_Http_FreeBuffer + add r1, r5, #0x1f8 + mov r0, r5 + add r1, r1, #0x1800 + bl Dwci_Http_FreeBuffer + add r0, r5, #0x1000 + ldr r1, [r0, #0x9cc] + cmp r1, #0 + beq _022DD8FC + ldr r0, _022DD938 ; =ov00_02318EA0 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9cc] +_022DD8FC: + add r0, r5, #0x1000 + ldr r1, [r0, #0x9d0] + cmp r1, #0 + beq _022DD924 + ldr r0, _022DD93C ; =ov00_02318EB8 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9d0] +_022DD924: + ldr r2, _022DD940 ; =0x00001C14 + mov r0, r5 + mov r1, #0 + bl MI_CpuFill8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DD938: .word ov00_02318EA0 +_022DD93C: .word ov00_02318EB8 +_022DD940: .word 0x00001C14 + arm_func_end Dwc_Http_Destroy + + arm_func_start Dwci_Http_WriteBasicHeader +Dwci_Http_WriteBasicHeader: ; 0x022DD944 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r7, r0 + add r0, r7, #0x1000 + ldr r1, [r0, #8] + add r0, r7, #0x1f8 + cmp r1, #0 + ldreq r6, _022DD9FC ; =ov00_02318ED0 + add r5, r0, #0x1800 + add r0, r7, #0x1000 + ldrne r6, _022DDA00 ; =ov00_02318F24 + ldr r0, [r0, #0x124] + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + add r1, r7, #0x1000 + mov r8, r0 + ldr r0, [r1, #0x128] + bl strlen + sub r1, r8, #4 + add r0, r1, r0 + add r2, r4, r0 + add r0, r7, #0x1f8 + add r1, r0, #0x1800 + add r2, r2, #0x400 + mov r0, r7 + bl Dwci_Http_AllocBuffer + cmp r0, #1 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + add r3, r7, #0x1000 + ldr r0, [r3, #0x124] + mov r2, r6 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x128] + bl OS_SnPrintf + ldr r1, [r5, #4] + add r0, r1, r0 + str r0, [r5, #4] + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022DD9FC: .word ov00_02318ED0 +_022DDA00: .word ov00_02318F24 + arm_func_end Dwci_Http_WriteBasicHeader + + arm_func_start Dwc_Http_Add_HeaderItem +Dwc_Http_Add_HeaderItem: ; 0x022DDA04 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + mov r6, r2 + add r2, r8, #0x1f8 + mov r0, r6 + mov r7, r1 + add r5, r2, #0x1800 + bl strlen + mov r4, r0 + ldr r0, _022DDAD8 ; =ov00_02318F44 + bl strlen + mov sb, r0 + mov r0, r7 + bl strlen + sub r1, sb, #4 + add r0, r1, r0 + add r4, r4, r0 + ldmib r5, {r1, r2} + add r0, r4, #1 + sub r1, r2, r1 + cmp r0, r1 + ble _022DDA7C + sub r2, r4, r1 + mov r0, r8 + mov r1, r5 + add r2, r2, #1 + bl Dwci_Http_ReallocBuffer + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022DDA7C: + ldr r0, [r5] + ldr r1, _022DDADC ; =ov00_02318E6C + bl strstr + add sb, r0, #2 + ldrsb r8, [r0, #2] + mov r0, sb + bl strlen + add r2, r0, #1 + add r0, sb, r4 + mov r1, sb + bl memmove + ldr r2, _022DDAD8 ; =ov00_02318F44 + str r6, [sp] + mov r3, r7 + mov r0, sb + add r1, r4, #1 + bl OS_SnPrintf + strb r8, [sb, r0] + ldr r1, [r5, #4] + mov r0, #0 + add r1, r1, r4 + str r1, [r5, #4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022DDAD8: .word ov00_02318F44 +_022DDADC: .word ov00_02318E6C + arm_func_end Dwc_Http_Add_HeaderItem + + arm_func_start Dwc_Http_Add_PostBase64Item +Dwc_Http_Add_PostBase64Item: ; 0x022DDAE0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f4] + add r0, sl, #0x1f8 + cmp r4, #0 + ldreq r7, _022DDBE4 ; =ov00_02318F50 + mov r8, r2 + add r4, sl, #0x1000 + add r6, r0, #0x1800 + ldr r0, [r4, #0x9f4] + mov fp, r3 + add r5, r0, #1 + mov r2, #0 + mov sb, r1 + ldrne r7, _022DDBE8 ; =ov00_02318F54 + mov r0, r8 + mov r1, fp + mov r3, r2 + str r5, [r4, #0x9f4] + bl Dwc_Auth_Base64Encode + mov r5, r0 + mov r0, r7 + bl strlen + mov r4, r0 + mov r0, sb + bl strlen + sub r1, r4, #2 + add r2, r1, r0 + ldmib r6, {r0, r1} + add r2, r5, r2 + sub r1, r1, r0 + cmp r2, r1 + ble _022DDB90 + sub r2, r2, r1 + mov r0, sl + mov r1, r6 + add r2, r2, #1 + bl Dwci_Http_ReallocBuffer + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldmib r6, {r0, r1} + sub r1, r1, r0 +_022DDB90: + mov r2, r7 + mov r3, sb + bl OS_SnPrintf + ldr r2, [r6, #4] + mov r1, fp + add r2, r2, r0 + str r2, [r6, #4] + ldr r0, [r6, #8] + sub r3, r0, r2 + mov r0, r8 + sub r3, r3, #1 + bl Dwc_Auth_Base64Encode + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r6, #4] + mov r0, #0 + add r1, r1, r5 + str r1, [r6, #4] + strb r0, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DDBE4: .word ov00_02318F50 +_022DDBE8: .word ov00_02318F54 + arm_func_end Dwc_Http_Add_PostBase64Item + + arm_func_start Dwc_Http_Add_Body +Dwc_Http_Add_Body: ; 0x022DDBEC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + add r1, r7, #0x1f8 + mov r0, r6 + add r5, r1, #0x1800 + bl strlen + mov r4, r0 + ldmib r5, {r0, r1} + sub r1, r1, r0 + cmp r4, r1 + ble _022DDC44 + sub r2, r4, r1 + mov r0, r7 + mov r1, r5 + add r2, r2, #1 + bl Dwci_Http_ReallocBuffer + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldmib r5, {r0, r1} + sub r1, r1, r0 +_022DDC44: + ldr r2, _022DDC70 ; =ov00_02318F5C + mov r3, r6 + bl OS_SnPrintf + cmp r0, r4 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r5, #4] + add r0, r1, r0 + str r0, [r5, #4] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022DDC70: .word ov00_02318F5C + arm_func_end Dwc_Http_Add_Body + + arm_func_start Dwci_Http_CpsCallback +Dwci_Http_CpsCallback: ; 0x022DDC74 + tst r0, #0x8000 + bicne r0, r0, #0x8000 + bx lr + arm_func_end Dwci_Http_CpsCallback + + arm_func_start Dwci_Http_AllocBuffer +Dwci_Http_AllocBuffer: ; 0x022DDC80 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r2 + add r0, r0, #0x1000 + ldr r2, [r0, #0x10] + mov r5, r1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _022DDCD4 ; =ov00_02318F60 + mov r1, r4 + blx r2 + str r0, [r5] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + str r0, [r5, #4] + str r4, [r5, #0xc] + ldr r0, [r5] + add r0, r0, r4 + str r0, [r5, #8] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DDCD4: .word ov00_02318F60 + arm_func_end Dwci_Http_AllocBuffer + + arm_func_start Dwci_Http_FreeBuffer +Dwci_Http_FreeBuffer: ; 0x022DDCD8 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r1, [r4] + add r0, r0, #0x1000 + cmp r1, #0 + ldr r3, [r0, #0x14] + beq _022DDD00 + ldr r0, _022DDD14 ; =ov00_02318F74 + mov r2, #0 + blx r3 +_022DDD00: + mov r0, r4 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DDD14: .word ov00_02318F74 + arm_func_end Dwci_Http_FreeBuffer + + arm_func_start Dwci_Http_ReallocBuffer +Dwci_Http_ReallocBuffer: ; 0x022DDD18 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + add r0, r0, #0x1000 + ldr r7, [r0, #0x14] + mov r5, r2 + mov r6, r1 + cmp r5, #0 + ldr r2, [r0, #0x10] + movle r0, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r6, #0xc] + ldr r0, _022DDDB8 ; =ov00_02318F88 + add r1, r1, r5 + blx r2 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r2, [r6, #0xc] + mov r1, r4 + bl MI_CpuCopy8 + ldr r1, [r6] + ldr r0, _022DDDBC ; =ov00_02318F74 + mov r2, #0 + blx r7 + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldmia r6, {r0, r1} + sub r0, r4, r0 + add r0, r1, r0 + str r0, [r6, #4] + ldr r1, [r6, #0xc] + mov r0, #1 + add r1, r1, r5 + str r1, [r6, #0xc] + str r4, [r6] + ldr r1, [r6, #0xc] + add r1, r4, r1 + str r1, [r6, #8] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022DDDB8: .word ov00_02318F88 +_022DDDBC: .word ov00_02318F74 + arm_func_end Dwci_Http_ReallocBuffer + + arm_func_start Dwci_Http_SetHostinfo +Dwci_Http_SetHostinfo: ; 0x022DDDC0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r0 + mov r0, r6 + mov r4, #0 + bl strlen + cmp r0, #0x100 + movhs r0, r4 + ldmhsia sp!, {r4, r5, r6, pc} + add r0, r5, #0x24 + mov r1, r6 + add r0, r0, #0x1000 + mov r2, #0x100 + bl strncpy + mov r0, r6 + bl strlen + add r1, r5, #0x24 + mov r6, r0 + add r0, r1, #0x1000 + bl strlen + cmp r6, r0 + movne r0, r4 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x24 + ldr r1, _022DDF04 ; =ov00_02318F98 + add r0, r0, #0x1000 + bl strstr + cmp r0, #0 + beq _022DDE5C + add r0, r5, #0x2b + add r1, r0, #0x1000 + add r0, r5, #0x1000 + str r1, [r0, #0x124] + mov r1, r4 + str r1, [r0, #0x130] + add r0, r5, #0x1100 + mov r1, #0x50 + strh r1, [r0, #0x34] + b _022DDE98 +_022DDE5C: + add r0, r5, #0x24 + ldr r1, _022DDF08 ; =ov00_02318FA0 + add r0, r0, #0x1000 + bl strstr + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r2, r0, #8 + add r0, r5, #0x1000 + mov r1, #1 + str r2, [r0, #0x124] + str r1, [r0, #0x130] + rsb r1, r1, #0x1bc + add r0, r5, #0x1100 + strh r1, [r0, #0x34] +_022DDE98: + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _022DDF0C ; =ov00_02318FAC + bl strstr + cmp r0, #0 + movne r1, #0 + strneb r1, [r0] + addne r4, r0, #1 + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _022DDF10 ; =ov00_02318FB0 + bl strstr + cmp r0, #0 + mov r1, #0 + addeq r0, r5, #0x1000 + strneb r1, [r0] + addne r1, r0, #1 + addne r0, r5, #0x1000 + str r1, [r0, #0x128] + cmp r4, #0 + beq _022DDEFC + mov r0, r4 + bl atoi + add r1, r5, #0x1100 + strh r0, [r1, #0x34] +_022DDEFC: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DDF04: .word ov00_02318F98 +_022DDF08: .word ov00_02318FA0 +_022DDF0C: .word ov00_02318FAC +_022DDF10: .word ov00_02318FB0 + arm_func_end Dwci_Http_SetHostinfo + + arm_func_start Dwc_Http_AddResult +Dwc_Http_AddResult: ; 0x022DDF14 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + add r0, r0, #0x1000 + ldmib r8, {r1, r4} + cmp r4, r1 + ldr r4, [r0, #0x10] + ldr r5, [r0, #0x14] + mov r7, r2 + mov r6, r3 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + bl strlen + mov r1, r0 + ldr r0, _022DE058 ; =ov00_02318FB4 + add r1, r1, #1 + blx r4 + ldr r2, [r8] + ldr r1, [r8, #8] + str r0, [r2, r1, lsl #3] + ldr r1, [r8, #8] + ldr r2, [r8] + ldr r0, [r2, r1, lsl #3] + cmp r0, #0 + beq _022DDFF0 + mov r0, r6 + bl strlen + mov r1, r0 + ldr r0, _022DE05C ; =ov00_02318FD4 + add r1, r1, #1 + blx r4 + ldr r2, [r8] + ldr r1, [r8, #8] + add r1, r2, r1, lsl #3 + str r0, [r1, #4] + ldr r1, [r8, #8] + ldr r2, [r8] + add r0, r2, r1, lsl #3 + ldr r0, [r0, #4] + cmp r0, #0 + beq _022DDFF0 + ldr r0, [r2, r1, lsl #3] + mov r1, r7 + bl strcpy + ldr r2, [r8] + ldr r0, [r8, #8] + mov r1, r6 + add r0, r2, r0, lsl #3 + ldr r0, [r0, #4] + bl strcpy + ldr r1, [r8, #8] + mov r0, #1 + add r1, r1, #1 + str r1, [r8, #8] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022DDFF0: + ldr r1, [r2, r1, lsl #3] + cmp r1, #0 + beq _022DE018 + ldr r0, _022DE060 ; =ov00_02318FF4 + mov r2, #0 + blx r5 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + str r2, [r1, r0, lsl #3] +_022DE018: + ldr r1, [r8] + ldr r0, [r8, #8] + add r0, r1, r0, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _022DE050 + ldr r0, _022DE064 ; =ov00_02319010 + mov r2, #0 + blx r5 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + add r0, r1, r0, lsl #3 + str r2, [r0, #4] +_022DE050: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022DE058: .word ov00_02318FB4 +_022DE05C: .word ov00_02318FD4 +_022DE060: .word ov00_02318FF4 +_022DE064: .word ov00_02319010 + arm_func_end Dwc_Http_AddResult + + arm_func_start Dwc_Http_ParseResult +Dwc_Http_ParseResult: ; 0x022DE068 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r4, r0 + add r0, r4, #0x238 + mov r6, r1 + add r0, r0, #0x1800 + mov r3, #0x20 + mov r1, #0 + mov r2, #0x100 + str r0, [sp, #4] + str r3, [sp, #8] + str r1, [sp, #0xc] + bl MI_CpuFill8 + add r0, r4, #0x1000 + ldr r5, [r0, #0xa08] + ldr r1, _022DE2E8 ; =ov00_02318E6C + mov r0, r5 + bl strstr + str r0, [sp] + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r0, #4 + bl strlen + ldr r1, [sp] + add r1, r1, #4 + add fp, r1, r0 + ldr r1, _022DE2EC ; =ov00_0231902C + mov r0, r5 + bl strstr + movs r7, r0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb sb, [r7, #4] + ldr r2, _022DE2F0 ; =ov00_02319030 + mov r5, #0 + add r1, sp, #4 + mov r0, r4 + add r3, r7, #1 + strb r5, [r7, #4] + bl Dwc_Http_AddResult + cmp r0, #1 + addne sp, sp, #0x10 + strb sb, [r7, #4] + movne r0, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r6, #1 + beq _022DE148 + ldr r1, _022DE2F4 ; =ov00_0231903C + add r0, r7, #1 + mov r2, #3 + bl strncmp + cmp r0, #0 + beq _022DE154 +_022DE148: + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DE154: + ldr r1, _022DE2F8 ; =ov00_02318E9C + add r0, r7, #5 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, r5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r0, #2 + b _022DE208 +_022DE178: + ldr r1, _022DE2FC ; =ov00_02319040 + mov r0, sb + bl strstr + movs r6, r0 + beq _022DE21C + ldrsb r7, [r6] + mov r1, #0 + add sl, r6, #2 + strb r1, [r6] + ldr r1, _022DE2F8 ; =ov00_02318E9C + mov r0, sl + bl strstr + movs r5, r0 + streqb r7, [r6] + beq _022DE21C + ldrsb r8, [r5] + mov r1, #0 + mov r2, sb + strb r1, [r5] + mov r0, r4 + add r1, sp, #4 + mov r3, sl + bl Dwc_Http_AddResult + cmp r0, #1 + beq _022DE1F0 + strb r7, [r6] + add sp, sp, #0x10 + strb r8, [r5] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DE1F0: + mov r0, sl + bl strlen + strb r7, [r6] + add r0, sl, r0 + strb r8, [r5] + add sb, r0, #2 +_022DE208: + ldrsb r0, [sb] + cmp r0, #0xd + ldrnesb r0, [sb, #1] + cmpne r0, #0xa + bne _022DE178 +_022DE21C: + ldr r0, [sp] + add r7, r0, #4 + cmp r7, fp + bhs _022DE2DC +_022DE22C: + ldr r1, _022DE300 ; =ov00_02319044 + mov r0, r7 + bl strstr + movs r5, r0 + beq _022DE2DC + ldrsb sb, [r5] + mov r1, #0 + add r6, r5, #1 + strb r1, [r5] + ldr r1, _022DE304 ; =ov00_02319048 + mov r0, r6 + bl strstr + movs sl, r0 + bne _022DE274 + ldr r1, _022DE2F8 ; =ov00_02318E9C + mov r0, r6 + bl strstr + mov sl, r0 +_022DE274: + cmp sl, #0 + ldrnesb r8, [sl] + movne r0, #0 + mov r2, r7 + strneb r0, [sl] + mov r0, r4 + add r1, sp, #4 + mov r3, r6 + bl Dwc_Http_AddResult + cmp r0, #1 + beq _022DE2B8 + strb sb, [r5] + cmp sl, #0 + add sp, sp, #0x10 + strneb r8, [sl] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022DE2B8: + mov r0, r6 + bl strlen + add r0, r6, r0 + strb sb, [r5] + cmp sl, #0 + add r7, r0, #1 + strneb r8, [sl] + cmp r7, fp + blo _022DE22C +_022DE2DC: + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DE2E8: .word ov00_02318E6C +_022DE2EC: .word ov00_0231902C +_022DE2F0: .word ov00_02319030 +_022DE2F4: .word ov00_0231903C +_022DE2F8: .word ov00_02318E9C +_022DE2FC: .word ov00_02319040 +_022DE300: .word ov00_02319044 +_022DE304: .word ov00_02319048 + arm_func_end Dwc_Http_ParseResult + + arm_func_start Dwc_Http_GetResult +Dwc_Http_GetResult: ; 0x022DE308 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, #0 +_022DE318: + add r0, r6, r4, lsl #3 + add r0, r0, #0x1000 + ldr r1, [r0, #0xa38] + cmp r1, #0 + beq _022DE358 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _022DE34C + add r0, r6, r4, lsl #3 + add r0, r0, #0x1000 + ldr r0, [r0, #0xa3c] + ldmia sp!, {r4, r5, r6, pc} +_022DE34C: + add r4, r4, #1 + cmp r4, #0x20 + blt _022DE318 +_022DE358: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_Http_GetResult + + arm_func_start Dwc_Http_GetBase64DecodedResult +Dwc_Http_GetBase64DecodedResult: ; 0x022DE360 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl Dwc_Http_GetResult + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + mov r1, r0 + mov r0, r4 + mov r2, r6 + mov r3, r5 + bl Dwc_Auth_Base64Decode + mvn r1, #0 + cmp r0, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, r5 + ldmhsia sp!, {r4, r5, r6, pc} + mov r1, #0 + strb r1, [r6, r0] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_Http_GetBase64DecodedResult + + arm_func_start Dwc_Http_GetRawResult +Dwc_Http_GetRawResult: ; 0x022DE3B4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl Dwc_Http_GetResult + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + cmp r0, r5 + movge r0, #0 + ldmgeia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + bl strcpy + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_Http_GetRawResult + + arm_func_start Dwc_Http_Disconnect +Dwc_Http_Disconnect: ; 0x022DE3F4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + add r0, r0, #0x1000 + ldr r6, [r0, #0x14] + mov sb, r2 + mov sl, r1 + mov r8, #0 + cmp sb, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr fp, _022DE474 ; =ov00_0231904C + ldr r7, _022DE478 ; =ov00_02319068 + mov r5, r8 + mov r4, r8 +_022DE424: + ldr r1, [sl, r8, lsl #3] + cmp r1, #0 + beq _022DE440 + mov r0, fp + mov r2, #0 + blx r6 + str r5, [sl, r8, lsl #3] +_022DE440: + add r0, sl, r8, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _022DE464 + mov r0, r7 + mov r2, #0 + blx r6 + add r0, sl, r8, lsl #3 + str r4, [r0, #4] +_022DE464: + add r8, r8, #1 + cmp r8, sb + blt _022DE424 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DE474: .word ov00_0231904C +_022DE478: .word ov00_02319068 + arm_func_end Dwc_Http_Disconnect + + arm_func_start Dwc_Netcheck_Create +Dwc_Netcheck_Create: ; 0x022DE47C + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022DE544 ; =ov00_02326CD8 + mov r5, r0 + ldr r0, [r1] + ldr r4, [r5] + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022DE548 ; =ov00_023190AC + ldr r1, _022DE54C ; =0x000011F4 + blx r4 + ldr r1, _022DE544 ; =ov00_02326CD8 + cmp r0, #0 + str r0, [r1] + moveq r0, #4 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, _022DE54C ; =0x000011F4 + mov r1, #0 + bl MI_CpuFill8 + ldr ip, _022DE544 ; =ov00_02326CD8 + ldr r1, _022DE550 ; =0xFFFE7961 + ldr r0, [ip] + add r0, r0, #0x1000 + str r1, [r0, #4] + ldr r3, [ip] + ldmia r5, {r0, r1, r2} + add r3, r3, #0x108 + add r3, r3, #0x1000 + stmia r3, {r0, r1, r2} + ldr r0, [ip, #0x14] + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022DE554 ; =ov00_023190C0 + ldr r1, _022DE558 ; =0x00001C14 + blx r4 + ldr r1, _022DE544 ; =ov00_02326CD8 + cmp r0, #0 + str r0, [r1, #0x14] + moveq r0, #4 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + str r0, [r1, #4] + ldr r0, [r1] + add r0, r0, #0x1dc + add r0, r0, #0x1000 + bl OS_InitMutex + bl Dwci_Netcheck_StartThread + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DE544: .word ov00_02326CD8 +_022DE548: .word ov00_023190AC +_022DE54C: .word 0x000011F4 +_022DE550: .word 0xFFFE7961 +_022DE554: .word ov00_023190C0 +_022DE558: .word 0x00001C14 + arm_func_end Dwc_Netcheck_Create + + arm_func_start Dwc_Netcheck_Destroy +Dwc_Netcheck_Destroy: ; 0x022DE55C + stmdb sp!, {r4, lr} + ldr r0, _022DE640 ; =ov00_02326CD8 + ldr r1, [r0] + ldr r0, [r0, #0x14] + add r1, r1, #0x1000 + cmp r0, #0 + ldr r4, [r1, #0x10c] + beq _022DE5A0 + bl Dwc_Http_Destroy + ldr r1, _022DE640 ; =ov00_02326CD8 + ldr r0, _022DE644 ; =ov00_023190D0 + ldr r1, [r1, #0x14] + mov r2, #0 + blx r4 + ldr r0, _022DE640 ; =ov00_02326CD8 + mov r1, #0 + str r1, [r0, #0x14] +_022DE5A0: + bl Dwc_Auth_Destroy + ldr r0, _022DE640 ; =ov00_02326CD8 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r0, #0x1000 + ldr r1, [r0, #0x114] + cmp r1, #0 + beq _022DE5E4 + ldr r0, _022DE648 ; =ov00_023190E0 + mov r2, #0 + blx r4 + ldr r0, _022DE640 ; =ov00_02326CD8 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x114] +_022DE5E4: + ldr r0, _022DE640 ; =ov00_02326CD8 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _022DE61C + ldr r0, _022DE64C ; =ov00_023190FC + mov r2, #0 + blx r4 + ldr r0, _022DE640 ; =ov00_02326CD8 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x118] +_022DE61C: + ldr r1, _022DE640 ; =ov00_02326CD8 + ldr r0, _022DE650 ; =ov00_0231911C + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _022DE640 ; =ov00_02326CD8 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_022DE640: .word ov00_02326CD8 +_022DE644: .word ov00_023190D0 +_022DE648: .word ov00_023190E0 +_022DE64C: .word ov00_023190FC +_022DE650: .word ov00_0231911C + arm_func_end Dwc_Netcheck_Destroy + + arm_func_start Dwc_Netcheck_Abort +Dwc_Netcheck_Abort: ; 0x022DE654 + stmdb sp!, {r3, lr} + ldr r0, _022DE6B8 ; =ov00_02326CD8 + ldr r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022DE678 + bl Dwc_Http_Abort +_022DE678: + bl Dwc_Auth_Abort + ldr r0, _022DE6B8 ; =ov00_02326CD8 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _022DE6A0 + add r0, r1, #0x11c + add r0, r0, #0x1000 + bl OS_JoinThread +_022DE6A0: + ldr r0, _022DE6B8 ; =ov00_02326CD8 + mvn r1, #6 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE6B8: .word ov00_02326CD8 + arm_func_end Dwc_Netcheck_Abort + + arm_func_start Dwc_Netcheck_GetError +Dwc_Netcheck_GetError: ; 0x022DE6BC + stmdb sp!, {r4, lr} + ldr r0, _022DE6F8 ; =ov00_02326CD8 + ldr r0, [r0] + add r0, r0, #0x1dc + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r0, _022DE6F8 ; =ov00_02326CD8 + ldr r1, [r0] + add r0, r1, #0x1dc + add r1, r1, #0x1000 + add r0, r0, #0x1000 + ldr r4, [r1] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DE6F8: .word ov00_02326CD8 + arm_func_end Dwc_Netcheck_GetError + + arm_func_start Dwc_Netcheck_GetReturnCode +Dwc_Netcheck_GetReturnCode: ; 0x022DE6FC + ldr r0, _022DE710 ; =ov00_02326CD8 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_022DE710: .word ov00_02326CD8 + arm_func_end Dwc_Netcheck_GetReturnCode + + arm_func_start Dwci_Netcheck_StartThread +Dwci_Netcheck_StartThread: ; 0x022DE714 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _022DE794 ; =ov00_02326CD8 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _022DE74C + add r0, r1, #0x11c + add r0, r0, #0x1000 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, pc} +_022DE74C: + ldr r0, _022DE794 ; =ov00_02326CD8 + mov r3, #0x1000 + ldr r2, [r0] + ldr r1, _022DE798 ; =Dwci_Netcheck_Thread + add r0, r2, #0x11c + str r3, [sp] + mov ip, #0x10 + add r0, r0, #0x1000 + add r3, r2, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _022DE794 ; =ov00_02326CD8 + ldr r0, [r0] + add r0, r0, #0x11c + add r0, r0, #0x1000 + bl OS_WakeupThreadDirect + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE794: .word ov00_02326CD8 +_022DE798: .word Dwci_Netcheck_Thread + arm_func_end Dwci_Netcheck_StartThread + + arm_func_start Dwci_Netcheck_Thread +Dwci_Netcheck_Thread: ; 0x022DE79C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x29c + ldr r5, _022DF628 ; =ov00_02326CD8 + mov sb, #0 + ldr r0, [r5] + mov fp, sb + add r0, r0, #0x1000 + ldr r7, [r0, #0x108] + ldr r8, [r0, #0x10c] + mvn r0, #2 + str r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + mov sl, sb + sub r0, r0, #2 + str r0, [sp, #0x28] + ldr r0, _022DF62C ; =0x00009C40 + mov r4, sb + mov r0, r0, lsr #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x1c] +_022DE7FC: + ldr r0, _022DF630 ; =ov00_02319084 + ldr r1, _022DF634 ; =ov00_02326CF0 + ldr r0, [r0] + str r0, [r5, #0x18] + mov r0, #1 + str r0, [r5, #0x1c] + mov r0, #0x1000 + str r0, [r5, #0x20] + str r7, [r5, #0x24] + ldr r0, [sp, #0x18] + str r8, [r5, #0x28] + str r0, [r5, #0x30] + ldr r0, [r5] + add r2, r0, #0x1000 + ldr r0, [sp, #0x1c] + str r0, [r2, #4] + ldr r0, [r5, #0x14] + bl Dwc_Http_Create + cmp r0, #0 + beq _022DE864 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DE864: + ldr r0, [r5, #0x14] + bl Dwc_Http_FinishHeader + cmp r0, #0 + beq _022DE88C + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DE88C: + ldr r0, _022DF638 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r5, #0x14] + bl Dwc_Http_StartThread + ldr r1, [r5, #0x14] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + beq _022DE8C4 + add r0, r1, #0x338 + add r0, r0, #0x1800 + bl OS_JoinThread +_022DE8C4: + ldr r0, [r5, #0x14] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _022DE8E4 + cmp r1, #8 + beq _022DE910 + b _022DE8F8 +_022DE8E4: + ldr r0, _022DF628 ; =ov00_02326CD8 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_022DE8F8: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #3 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DE910: + mov r1, #0 + bl Dwc_Http_ParseResult + cmp r0, #1 + beq _022DE938 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DE938: + ldr r0, [r5, #0x14] + ldr r1, _022DF63C ; =ov00_02319198 + bl Dwc_Http_GetResult + bl atoi + mov r6, r0 + ldr r0, _022DF640 ; =_022BCA70 + ldr r0, [r0] + cmp r0, #0x22 + bne _022DE968 + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DE968: + cmp r6, #0xc8 + beq _022DE980 + ldr r0, _022DF644 ; =0x0000012E + cmp r6, r0 + beq _022DE994 + b _022DEC7C +_022DE980: + ldr r0, [r5, #0x14] + add r0, r0, #0x1000 + ldr r0, [r0, #0x12c] + str r0, [r5, #8] + b _022DEC94 +_022DE994: + mov r0, #1 + str r0, [r5, #4] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _022DEBE4 + ldr r1, _022DF628 ; =ov00_02326CD8 + mvn r2, #5 + str r2, [r0, #4] + ldr r0, [r1, #0x14] + bl Dwc_Http_Destroy + ldr r0, _022DF648 ; =ov00_02318BC8 + ldr r2, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0] + mov r1, #0 + str r0, [r2, #0x18] + str r1, [r2, #0x1c] + mov r1, #0x200 + str r1, [r2, #0x20] + str r7, [r2, #0x24] + ldr r3, _022DF64C ; =0x00004E20 + str r8, [r2, #0x28] + ldr r1, _022DF650 ; =ov00_023191A4 + str r3, [r2, #0x30] + bl strcmp + cmp r0, #0 + ldrne r0, _022DF628 ; =ov00_02326CD8 + movne r1, #1 + strne r1, [r0, #0x2c] + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r1, _022DF634 ; =ov00_02326CF0 + ldr r0, [r0, #0x14] + bl Dwc_Http_Create + cmp r0, #0 + beq _022DEA3C + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEA3C: + add r0, sp, #0x44 + bl Dwc_Auth_GetCalInfoFromNVram + cmp r0, #0 + beq _022DEA68 + ldr r0, _022DF628 ; =ov00_02326CD8 + add r1, sp, #0x44 + ldr r0, [r0, #0x14] + mov r2, #1 + bl Dwc_Auth_SetCalInfoToHttp + cmp r0, #0 + bne _022DEA80 +_022DEA68: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #8 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEA80: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r1, _022DF654 ; =ov00_023191C4 + ldr r0, [r0, #0x14] + ldr r2, _022DF658 ; =ov00_023191CC + mov r3, #7 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + bne _022DEAD8 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r4, [r0, #0x118] + mov r0, r4 + bl strlen + ldr r1, _022DF628 ; =ov00_02326CD8 + mov r3, r0 + ldr r0, [r1, #0x14] + ldr r1, _022DF65C ; =ov00_023191D4 + mov r2, r4 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + beq _022DEAF0 +_022DEAD8: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #8 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEAF0: + ldr r1, _022DF628 ; =ov00_02326CD8 + ldr r0, _022DF660 ; =ov00_023190FC + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0x1000 + ldr r1, [r1, #0x118] + blx r8 + ldr r1, _022DF628 ; =ov00_02326CD8 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x118] + ldr r0, [r1, #0x14] + bl Dwc_Http_FinishHeader + cmp r0, #0 + beq _022DEB48 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEB48: + ldr r0, _022DF638 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r2, _022DF628 ; =ov00_02326CD8 + sub r1, r0, #1 + ldr r0, [r2, #0x14] + bl Dwc_Http_StartThread + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r1, [r0, #0x14] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + beq _022DEB88 + add r0, r1, #0x338 + add r0, r0, #0x1800 + bl OS_JoinThread +_022DEB88: + ldr r2, _022DF628 ; =ov00_02326CD8 + ldr r0, [r2, #0x14] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _022DEBAC + cmp r1, #8 + beq _022DEBD4 + b _022DEBBC +_022DEBAC: + ldr r0, [r2] + mvn r1, #0 + add r0, r0, #0x1000 + str r1, [r0, #4] +_022DEBBC: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #3 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEBD4: + bl Dwc_Http_Destroy + mov r0, #7 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEBE4: + ldr r0, [r5, #0x14] + add r1, r0, #0x1000 + ldr r1, [r1, #0xa08] + str r1, [sp, #0x14] + cmp r1, #0 + bne _022DEC0C + bl Dwc_Http_Destroy + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEC0C: + mov r0, r1 + bl strlen + add r1, r0, #1 + ldr r0, _022DF664 ; =ov00_02319130 + blx r7 + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x114] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x114] + str r0, [sp, #4] + cmp r0, #0 + bne _022DEC5C + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #4 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEC5C: + ldr r0, [sp, #0x14] + bl strlen + mov r2, r0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + add r2, r2, #1 + bl strncpy + b _022DEC94 +_022DEC7C: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #0xa + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEC94: + ldr r0, [r5, #0x14] + bl Dwc_Http_Destroy + add r0, sp, #0x30 + bl Dwci_BM_GetWiFiInfo + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x34] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r4 + bne _022DEDCC + ldr r1, [r5] + ldr r0, _022DF668 ; =ov00_02326D0C + add r2, r1, #0x1000 + ldr r1, [sp, #0x20] + str r1, [r2, #4] + mov r2, #0 + mov r1, r0 + strh r2, [r1] + strb r2, [r1, #0x34] + ldr r1, [r5] + add r2, r1, #0x1000 + ldr r3, [r2, #0x108] + mov r1, r0 + str r3, [r1, #0x40] + ldr r2, [r2, #0x10c] + str r2, [r1, #0x44] + ldr r1, [r5, #0x14] + bl Dwc_Auth_Create + cmp r0, #0 + beq _022DED18 + mov r0, #5 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DED18: + bl Dwc_Auth_Join + bl Dwc_Auth_GetError + cmp r0, #0x15 + beq _022DEDC8 + bl Dwc_Auth_GetError + cmp r0, #9 + bne _022DED4C + ldr r0, _022DF628 ; =ov00_02326CD8 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + b _022DEDB8 +_022DED4C: + add r0, sp, #0xd8 + bl Dwc_Auth_GetResult + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _022DEDA4 + ldr r1, [sp, #0xd8] + ldr r0, _022DF66C ; =0xFFFFA4FA + cmp r1, r0 + beq _022DED80 + bl Dwc_Auth_GetError + cmp r0, #0xb + bne _022DEDA4 +_022DED80: + ldr r0, _022DF628 ; =ov00_02326CD8 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + bl Dwc_Auth_Destroy + mov r0, #0xb + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEDA4: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r1, [sp, #0xd8] + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_022DEDB8: + bl Dwc_Auth_Destroy + mov r0, #6 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEDC8: + bl Dwc_Auth_Destroy +_022DEDCC: + cmp r6, #0xc8 + bne _022DEDF4 + ldr r0, _022DF628 ; =ov00_02326CD8 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEDF4: + ldr r0, [r5] + ldr r1, _022DF650 ; =ov00_023191A4 + add r2, r0, #0x1000 + ldr r0, [sp, #0x24] + str r0, [r2, #4] + ldr r0, _022DF648 ; =ov00_02318BC8 + mov r2, #0 + ldr r0, [r0] + str r0, [r5, #0x18] + str r2, [r5, #0x1c] + mov r2, #0x1000 + str r2, [r5, #0x20] + str r7, [r5, #0x24] + ldr r2, _022DF62C ; =0x00009C40 + str r8, [r5, #0x28] + str r2, [r5, #0x30] + bl strcmp + cmp r0, #0 + movne r0, #1 + strne r0, [r5, #0x2c] + ldr r0, [r5, #0x14] + ldr r1, _022DF634 ; =ov00_02326CF0 + bl Dwc_Http_Create + cmp r0, #0 + beq _022DEE70 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEE70: + add r0, sp, #0x44 + bl Dwc_Auth_GetCalInfoFromNVram + cmp r0, #0 + beq _022DEE98 + ldr r0, [r5, #0x14] + add r1, sp, #0x44 + mov r2, #1 + bl Dwc_Auth_SetCalInfoToHttp + cmp r0, #0 + bne _022DEEB0 +_022DEE98: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #8 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEEB0: + ldr r0, [r5, #0x14] + ldr r1, _022DF654 ; =ov00_023191C4 + ldr r2, _022DF670 ; =ov00_023191E4 + mov r3, #5 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + bne _022DEEFC + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r6, [r0, #0x114] + mov r0, r6 + bl strlen + mov r3, r0 + ldr r0, [r5, #0x14] + ldr r1, _022DF674 ; =ov00_023191EC + mov r2, r6 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + beq _022DEF14 +_022DEEFC: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #8 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEF14: + ldr r1, [r5] + ldr r0, _022DF678 ; =ov00_023190E0 + add r1, r1, #0x1000 + ldr r1, [r1, #0x114] + mov r2, #0 + blx r8 + ldr r0, [r5] + add r1, r0, #0x1000 + mov r0, #0 + str r0, [r1, #0x114] + ldr r0, [r5, #0x14] + bl Dwc_Http_FinishHeader + cmp r0, #0 + beq _022DEF64 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEF64: + ldr r0, _022DF638 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r5, #0x14] + bl Dwc_Http_StartThread + ldr r1, [r5, #0x14] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + beq _022DEF9C + add r0, r1, #0x338 + add r0, r0, #0x1800 + bl OS_JoinThread +_022DEF9C: + ldr r0, [r5, #0x14] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _022DF000 + cmp r1, #3 + beq _022DEFC4 + cmp r1, #8 + beq _022DF02C + b _022DF014 +_022DEFC4: + bl Dwc_Http_Destroy + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r1, [r0, #0xc] + cmp r1, #1 + bne _022DEFF4 + ldr r0, [r0] + mov r2, #0 + add r1, r0, #0x1000 + mov r0, #0xb + str r2, [r1, #4] + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DEFF4: + mov r0, #3 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF000: + ldr r0, _022DF628 ; =ov00_02326CD8 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_022DF014: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #3 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF02C: + mov r1, #0 + bl Dwc_Http_ParseResult + cmp r0, #1 + beq _022DF054 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF054: + ldr r0, [r5, #0x14] + ldr r1, _022DF63C ; =ov00_02319198 + bl Dwc_Http_GetResult + bl atoi + mov r6, r0 + ldr r0, _022DF640 ; =_022BCA70 + ldr r0, [r0] + cmp r0, #0x22 + bne _022DF090 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF090: + cmp r6, #0xc8 + beq _022DF0E4 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + ldr r1, _022DF628 ; =ov00_02326CD8 + ldr r0, [r1, #0xc] + cmp r0, #1 + ldreq r0, _022DF644 ; =0x0000012E + cmpeq r6, r0 + bne _022DF0D8 + ldr r0, [r1] + mov r2, #0 + add r1, r0, #0x1000 + mov r0, #0xb + str r2, [r1, #4] + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF0D8: + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF0E4: + ldr r0, [r5, #0x14] + ldr r1, _022DF67C ; =ov00_023191F4 + add r2, sp, #0x2c + mov r3, #4 + bl Dwc_Http_GetBase64DecodedResult + cmp r0, #0 + bgt _022DF118 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF118: + add r0, sp, #0x2c + bl atoi + ldr r1, _022DF640 ; =_022BCA70 + ldr r1, [r1] + cmp r1, #0x22 + bne _022DF148 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF148: + ldr r1, [r5, #0xc] + cmp r1, #1 + cmpeq r0, #0x72 + bne _022DF178 + ldr r0, _022DF628 ; =ov00_02326CD8 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF178: + cmp r0, #0x64 + blt _022DF198 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #6 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF198: + mov r2, #0 + ldr r0, [r5, #0x14] + ldr r1, _022DF680 ; =ov00_02319200 + mov r3, r2 + bl Dwc_Http_GetBase64DecodedResult + str r0, [sp, #0x10] + cmp r0, #0 + bgt _022DF1D0 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF1D0: + mov r2, #0 + ldr r0, [r5, #0x14] + ldr r1, _022DF684 ; =ov00_02319204 + mov r3, r2 + bl Dwc_Http_GetBase64DecodedResult + str r0, [sp, #0xc] + cmp r0, #0 + bgt _022DF208 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF208: + mov r2, #0 + ldr r0, [r5, #0x14] + ldr r1, _022DF688 ; =ov00_0231920C + mov r3, r2 + bl Dwc_Http_GetBase64DecodedResult + ldr r1, [sp, #0x10] + mov r6, r0 + ldr r0, _022DF68C ; =ov00_0231914C + add r1, r1, #1 + blx r7 + movs sb, r0 + bne _022DF250 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #4 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF250: + ldr r1, [sp, #0xc] + ldr r0, _022DF690 ; =ov00_02319158 + add r1, r1, #1 + blx r7 + movs fp, r0 + bne _022DF280 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #4 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF280: + cmp r6, #0 + ble _022DF2B4 + ldr r0, _022DF694 ; =ov00_02319168 + add r1, r6, #1 + blx r7 + movs sl, r0 + bne _022DF2B4 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #4 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF2B4: + ldr r0, [sp, #0x10] + ldr r1, _022DF680 ; =ov00_02319200 + add r3, r0, #1 + ldr r0, [r5, #0x14] + mov r2, sb + bl Dwc_Http_GetBase64DecodedResult + cmp r0, #0 + bge _022DF2EC + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF2EC: + ldr r1, [sp, #0xc] + mov r2, fp + add r3, r1, #1 + mov r1, #0 + strb r1, [sb, r0] + ldr r0, [r5, #0x14] + ldr r1, _022DF684 ; =ov00_02319204 + bl Dwc_Http_GetBase64DecodedResult + cmp r0, #0 + bge _022DF32C + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF32C: + mov r1, #0 + strb r1, [fp, r0] + mov r0, r1 + cmp r6, #0 + str r0, [sp, #8] + ble _022DF3C8 + ldr r0, [r5, #0x14] + ldr r1, _022DF688 ; =ov00_0231920C + add r3, r6, #1 + mov r2, sl + bl Dwc_Http_GetBase64DecodedResult + cmp r0, #0 + bge _022DF378 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF378: + mov r1, #0 + strb r1, [sl, r0] + mov r0, sl + bl atoi + ldr r1, _022DF640 ; =_022BCA70 + ldr r1, [r1] + cmp r1, #0x22 + bne _022DF3B0 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #9 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF3B0: + mov r1, #0x3e8 + mul r1, r0, r1 + ldr r0, _022DF698 ; =0x0002BF20 + str r1, [sp, #8] + cmp r1, r0 + strgt r0, [sp, #8] +_022DF3C8: + ldr r0, [r5, #0x14] + bl Dwc_Http_Destroy + ldr r0, [r5] + ldr r1, _022DF634 ; =ov00_02326CF0 + add r2, r0, #0x1000 + ldr r0, [sp, #0x28] + str r0, [r2, #4] + str sb, [r5, #0x18] + mov r0, #0 + str r0, [r5, #0x1c] + mov r0, #0x1000 + str r0, [r5, #0x20] + str r7, [r5, #0x24] + ldr r0, _022DF69C ; =0x0001D4C0 + str r8, [r5, #0x28] + str r0, [r5, #0x30] + ldr r0, [r5, #0x14] + bl Dwc_Http_Create + cmp r0, #0 + beq _022DF430 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF430: + ldr r0, [r5, #0x14] + mov r1, fp + bl Dwc_Http_Add_Body + cmp r0, #0 + beq _022DF45C + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #8 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF45C: + ldr r0, [r5, #0x14] + bl Dwc_Http_FinishHeader + cmp r0, #0 + beq _022DF484 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #1 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF484: + ldr r0, _022DF638 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r5, #0x14] + bl Dwc_Http_StartThread + ldr r1, [r5, #0x14] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba4] + cmp r0, #0 + beq _022DF4BC + add r0, r1, #0x338 + add r0, r0, #0x1800 + bl OS_JoinThread +_022DF4BC: + ldr r0, [r5, #0x14] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _022DF4DC + cmp r1, #8 + beq _022DF508 + b _022DF4F0 +_022DF4DC: + ldr r0, _022DF628 ; =ov00_02326CD8 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_022DF4F0: + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #3 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF508: + mov r1, #1 + bl Dwc_Http_ParseResult + cmp r0, #1 + beq _022DF530 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF530: + ldr r0, [r5, #0x14] + add r1, r0, #0x1000 + ldr r6, [r1, #0xa08] + cmp r6, #0 + bne _022DF554 + bl Dwc_Http_Destroy + mov r0, #2 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF554: + mov r0, r6 + bl strlen + add r1, r0, #1 + ldr r0, _022DF6A0 ; =ov00_02319178 + blx r7 + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x118] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x118] + str r0, [sp] + cmp r0, #0 + bne _022DF5A4 + ldr r0, _022DF628 ; =ov00_02326CD8 + ldr r0, [r0, #0x14] + bl Dwc_Http_Destroy + mov r0, #4 + bl Dwci_Netcheck_SetError + b _022DF5D4 +_022DF5A4: + mov r0, r6 + bl strlen + mov r2, r0 + ldr r0, [sp] + mov r1, r6 + add r2, r2, #1 + bl strncpy + ldr r0, [r5, #0x14] + bl Dwc_Http_Destroy + ldr r0, [sp, #8] + bl OS_Sleep + b _022DE7FC +_022DF5D4: + cmp sb, #0 + beq _022DF5EC + ldr r0, _022DF6A4 ; =ov00_02319214 + mov r1, sb + mov r2, #0 + blx r8 +_022DF5EC: + cmp fp, #0 + beq _022DF604 + ldr r0, _022DF6A8 ; =ov00_02319220 + mov r1, fp + mov r2, #0 + blx r8 +_022DF604: + cmp sl, #0 + addeq sp, sp, #0x29c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022DF6AC ; =ov00_0231922C + mov r1, sl + mov r2, #0 + blx r8 + add sp, sp, #0x29c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DF628: .word ov00_02326CD8 +_022DF62C: .word 0x00009C40 +_022DF630: .word ov00_02319084 +_022DF634: .word ov00_02326CF0 +_022DF638: .word OSi_ThreadInfo +_022DF63C: .word ov00_02319198 +_022DF640: .word _022BCA70 +_022DF644: .word 0x0000012E +_022DF648: .word ov00_02318BC8 +_022DF64C: .word 0x00004E20 +_022DF650: .word ov00_023191A4 +_022DF654: .word ov00_023191C4 +_022DF658: .word ov00_023191CC +_022DF65C: .word ov00_023191D4 +_022DF660: .word ov00_023190FC +_022DF664: .word ov00_02319130 +_022DF668: .word ov00_02326D0C +_022DF66C: .word 0xFFFFA4FA +_022DF670: .word ov00_023191E4 +_022DF674: .word ov00_023191EC +_022DF678: .word ov00_023190E0 +_022DF67C: .word ov00_023191F4 +_022DF680: .word ov00_02319200 +_022DF684: .word ov00_02319204 +_022DF688: .word ov00_0231920C +_022DF68C: .word ov00_0231914C +_022DF690: .word ov00_02319158 +_022DF694: .word ov00_02319168 +_022DF698: .word 0x0002BF20 +_022DF69C: .word 0x0001D4C0 +_022DF6A0: .word ov00_02319178 +_022DF6A4: .word ov00_02319214 +_022DF6A8: .word ov00_02319220 +_022DF6AC: .word ov00_0231922C + arm_func_end Dwci_Netcheck_Thread + + arm_func_start Dwci_Netcheck_SetError +Dwci_Netcheck_SetError: ; 0x022DF6B0 + stmdb sp!, {r4, lr} + ldr r1, _022DF6F0 ; =ov00_02326CD8 + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x1dc + add r0, r0, #0x1000 + bl OS_LockMutex + ldr r1, _022DF6F0 ; =ov00_02326CD8 + ldr r0, [r1] + add r0, r0, #0x1000 + str r4, [r0] + ldr r0, [r1] + add r0, r0, #0x1dc + add r0, r0, #0x1000 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_022DF6F0: .word ov00_02326CD8 + arm_func_end Dwci_Netcheck_SetError + + arm_func_start Dwc_Auth_SetNasTimeDiff +Dwc_Auth_SetNasTimeDiff: ; 0x022DF6F4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x3c + mov r6, r0 + bl strlen + mov r4, r0 + ldr r0, _022DF900 ; =ov00_02319298 + bl strlen + cmp r4, r0 + ldreqsb r0, [r6, #7] + cmpeq r0, #0x20 + ldreqsb r0, [r6, #0xb] + cmpeq r0, #0x20 + ldreqsb r0, [r6, #0x10] + cmpeq r0, #0x20 + ldreqsb r0, [r6, #0x13] + cmpeq r0, #0x3a + ldreqsb r0, [r6, #0x16] + cmpeq r0, #0x3a + ldreqsb r0, [r6, #0x19] + cmpeq r0, #0x20 + bne _022DF8F4 + add r0, sp, #0x2c + add r1, sp, #0x20 + bl Rtc_GetDateTime + cmp r0, #0 + bne _022DF8F4 + add r0, sp, #0x2c + add r1, sp, #0x20 + bl Rtc_ConvertDateTimeToSecond + mov r4, r0 + mov r5, r1 + mvn r0, #0 + cmp r5, r0 + cmpeq r4, r0 + beq _022DF8F4 + add r0, sp, #0 + mov r1, r6 + bl strcpy + mov r2, #0 + ldr r1, _022DF904 ; =_022BCA70 + add r0, sp, #0xc + strb r2, [sp, #7] + strb r2, [sp, #0xb] + strb r2, [sp, #0x10] + strb r2, [sp, #0x13] + strb r2, [sp, #0x16] + strb r2, [sp, #0x19] + str r2, [r1] + bl atoi + ldr r1, _022DF904 ; =_022BCA70 + str r0, [sp, #0x2c] + ldr r1, [r1] + cmp r1, #0x22 + beq _022DF8F4 + sub r1, r0, #0x7d0 + mov r0, #0xd + ldr r7, _022DF908 ; =ov00_02319268 + str r1, [sp, #0x2c] + str r0, [sp, #0x30] + mov r8, #0 + add r6, sp, #8 +_022DF7E8: + ldr r0, [r7, r8, lsl #2] + mov r1, r6 + bl strcmp + cmp r0, #0 + addeq r0, r8, #1 + streq r0, [sp, #0x30] + beq _022DF810 + add r8, r8, #1 + cmp r8, #0xc + blt _022DF7E8 +_022DF810: + ldr r0, [sp, #0x30] + cmp r0, #0xc + bhi _022DF8F4 + ldr r1, _022DF904 ; =_022BCA70 + mov r2, #0 + add r0, sp, #5 + str r2, [r1] + bl atoi + ldr r1, _022DF904 ; =_022BCA70 + str r0, [sp, #0x34] + ldr r0, [r1] + cmp r0, #0x22 + beq _022DF8F4 + mov r2, #0 + add r0, sp, #0x11 + str r2, [r1] + bl atoi + ldr r1, _022DF904 ; =_022BCA70 + str r0, [sp, #0x20] + ldr r0, [r1] + cmp r0, #0x22 + beq _022DF8F4 + mov r2, #0 + add r0, sp, #0x14 + str r2, [r1] + bl atoi + ldr r1, _022DF904 ; =_022BCA70 + str r0, [sp, #0x24] + ldr r0, [r1] + cmp r0, #0x22 + beq _022DF8F4 + mov r2, #0 + add r0, sp, #0x17 + str r2, [r1] + bl atoi + ldr r1, _022DF904 ; =_022BCA70 + str r0, [sp, #0x28] + ldr r0, [r1] + cmp r0, #0x22 + beq _022DF8F4 + add r0, sp, #0x2c + add r1, sp, #0x20 + bl Rtc_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + beq _022DF8F4 + ldr r2, _022DF90C ; =ov00_02326D54 + subs r0, r4, r0 + str r0, [r2, #0xc] + sbc r0, r5, r1 + str r0, [r2, #0x10] + stmib r2, {r4, r5} + mov r0, #1 + str r0, [r2] + add sp, sp, #0x3c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_022DF8F4: + mov r0, #0 + add sp, sp, #0x3c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022DF900: .word ov00_02319298 +_022DF904: .word _022BCA70 +_022DF908: .word ov00_02319268 +_022DF90C: .word ov00_02326D54 + arm_func_end Dwc_Auth_SetNasTimeDiff + + arm_func_start Dwc_Svl_Init +Dwc_Svl_Init: ; 0x022DF910 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _022DF998 ; =ov00_02326D68 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _022DF940 + ldr r1, _022DF99C ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DF940: + ldr r0, _022DF9A0 ; =ov00_023192B8 + ldr r1, _022DF9A4 ; =0x00001C20 + blx r5 + ldr r1, _022DF998 ; =ov00_02326D68 + cmp r0, #0 + str r0, [r1] + bne _022DF970 + ldr r1, _022DF99C ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DF970: + ldr r2, _022DF9A4 ; =0x00001C20 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _022DF998 ; =ov00_02326D68 + mov r0, #1 + ldr r2, [r1] + str r5, [r2] + ldr r1, [r1] + str r4, [r1, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DF998: .word ov00_02326D68 +_022DF99C: .word 0xFFFFA1DC +_022DF9A0: .word ov00_023192B8 +_022DF9A4: .word 0x00001C20 + arm_func_end Dwc_Svl_Init + + arm_func_start Dwc_Svl_Cleanup +Dwc_Svl_Cleanup: ; 0x022DF9A8 + stmdb sp!, {r3, lr} + ldr r0, _022DF9EC ; =ov00_02326D68 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #8 + bl Dwc_Http_Destroy + ldr r1, _022DF9EC ; =ov00_02326D68 + ldr r0, _022DF9F0 ; =ov00_023192C8 + ldr r1, [r1] + mov r2, #0 + ldr r3, [r1, #4] + blx r3 + ldr r0, _022DF9EC ; =ov00_02326D68 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DF9EC: .word ov00_02326D68 +_022DF9F0: .word ov00_023192C8 + arm_func_end Dwc_Svl_Cleanup + + arm_func_start Dwc_Svl_GetTokenAsync +Dwc_Svl_GetTokenAsync: ; 0x022DF9F4 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0xb0 + ldr r2, _022DFC38 ; =ov00_02326D68 + mov r5, r0 + ldr r2, [r2] + mov r0, r1 + add r2, r2, #0x1000 + str r1, [r2, #0xc1c] + mov r1, #0 + mov r2, #0x174 + bl MI_CpuFill8 + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xbac] + cmp r0, #0 + beq _022DFA4C + add r0, r1, #0x1b40 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _022DFA4C + bl WaitForever2 +_022DFA4C: + ldr r0, _022DFC3C ; =ov00_02318BC8 + ldr r1, _022DFC38 ; =ov00_02326D68 + ldr r0, [r0] + mov r3, #0 + ldr r4, [r1] + mov r2, #0x1000 + str r0, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + ldr r2, [r4] + ldr r1, _022DFC40 ; =ov00_023192D8 + str r2, [sp, #0xc] + ldr r2, [r4, #4] + str r2, [sp, #0x10] + bl strcmp + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + moveq r0, #0 + ldr r2, _022DFC44 ; =0x00004E20 + streq r0, [sp, #0x14] + add r1, sp, #0 + add r0, r4, #8 + str r2, [sp, #0x18] + bl Dwc_Http_Create + cmp r0, #0 + beq _022DFAD0 + ldr r1, _022DFC48 ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + add sp, sp, #0xb0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DFAD0: + add r0, sp, #0x1c + bl Dwc_Auth_GetCalInfoFromNVram + cmp r0, #0 + beq _022DFB00 + ldr r0, _022DFC38 ; =ov00_02326D68 + add r1, sp, #0x1c + ldr r0, [r0] + mov r2, #0 + add r0, r0, #8 + bl Dwc_Auth_SetCalInfoToHttp + cmp r0, #0 + bne _022DFB28 +_022DFB00: + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r0, [r0] + add r0, r0, #8 + bl Dwc_Http_Destroy + ldr r1, _022DFC48 ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + add sp, sp, #0xb0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DFB28: + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r1, _022DFC4C ; =ov00_023192F8 + ldr r0, [r0] + ldr r2, _022DFC50 ; =ov00_02319300 + add r0, r0, #8 + mov r3, #6 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + bne _022DFB70 + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r1, _022DFC54 ; =ov00_02319308 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #8 + mov r3, #4 + bl Dwc_Http_Add_PostBase64Item + cmp r0, #0 + beq _022DFB98 +_022DFB70: + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r0, [r0] + add r0, r0, #8 + bl Dwc_Http_Destroy + ldr r1, _022DFC48 ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + add sp, sp, #0xb0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DFB98: + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r0, [r0] + add r0, r0, #8 + bl Dwc_Http_FinishHeader + cmp r0, #0 + beq _022DFBD8 + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r0, [r0] + add r0, r0, #8 + bl Dwc_Http_Destroy + ldr r1, _022DFC48 ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + add sp, sp, #0xb0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022DFBD8: + ldr r0, _022DFC58 ; =OSi_ThreadInfo + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _022DFC38 ; =ov00_02326D68 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #8 + bl Dwc_Http_StartThread + ldr r0, _022DFC38 ; =ov00_02326D68 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xbac] + cmp r0, #0 + addne sp, sp, #0xb0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + add r0, r1, #8 + bl Dwc_Http_Destroy + ldr r1, _022DFC48 ; =0xFFFFA1DC + mov r0, #9 + bl Dwci_SetError + mov r0, #0 + add sp, sp, #0xb0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022DFC38: .word ov00_02326D68 +_022DFC3C: .word ov00_02318BC8 +_022DFC40: .word ov00_023192D8 +_022DFC44: .word 0x00004E20 +_022DFC48: .word 0xFFFFA1DC +_022DFC4C: .word ov00_023192F8 +_022DFC50: .word ov00_02319300 +_022DFC54: .word ov00_02319308 +_022DFC58: .word OSi_ThreadInfo + arm_func_end Dwc_Svl_GetTokenAsync + + arm_func_start Dwc_Svl_Process +Dwc_Svl_Process: ; 0x022DFC5C + stmdb sp!, {r3, lr} + ldr r0, _022DFD28 ; =ov00_02326D68 + ldr r1, [r0] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x1000 + ldr r0, [r0, #0xbac] + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x1b40 + bl OS_IsThreadTerminated + cmp r0, #1 + bne _022DFD20 + ldr r0, _022DFD28 ; =ov00_02326D68 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x28] + cmp r0, #7 + beq _022DFCF4 + cmp r0, #8 + bne _022DFD04 + bl Dwci_Svl_ParseHttp + cmp r0, #0 + bne _022DFCDC + ldr r0, _022DFD28 ; =ov00_02326D68 + ldr r0, [r0] + add r0, r0, #8 + bl Dwc_Http_Destroy + mov r0, #4 + ldmia sp!, {r3, pc} +_022DFCDC: + ldr r0, _022DFD28 ; =ov00_02326D68 + ldr r0, [r0] + add r0, r0, #8 + bl Dwc_Http_Destroy + mov r0, #3 + ldmia sp!, {r3, pc} +_022DFCF4: + add r0, r1, #8 + bl Dwc_Http_Destroy + mov r0, #5 + ldmia sp!, {r3, pc} +_022DFD04: + add r0, r1, #8 + bl Dwc_Http_Destroy + ldr r1, _022DFD2C ; =0xFFFFA1DB + mov r0, #0x11 + bl Dwci_SetError + mov r0, #4 + ldmia sp!, {r3, pc} +_022DFD20: + mov r0, #2 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DFD28: .word ov00_02326D68 +_022DFD2C: .word 0xFFFFA1DB + arm_func_end Dwc_Svl_Process + + arm_func_start Dwci_Svl_ParseHttp +Dwci_Svl_ParseHttp: ; 0x022DFD30 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r0, _022DFF20 ; =ov00_02326D68 + mov r1, #0 + ldr r4, [r0] + add r0, r4, #8 + bl Dwc_Http_ParseResult + cmp r0, #0 + bne _022DFD6C + ldr r1, _022DFF24 ; =0xFFFF9DF3 + mov r0, #0x10 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFD6C: + ldr r1, _022DFF28 ; =ov00_0231930C + add r0, r4, #8 + bl Dwc_Http_GetResult + cmp r0, #0 + beq _022DFD84 + bl Dwc_Auth_SetNasTimeDiff +_022DFD84: + ldr r1, _022DFF2C ; =ov00_02319314 + add r0, r4, #8 + bl Dwc_Http_GetResult + cmp r0, #0 + bne _022DFDB0 + ldr r1, _022DFF24 ; =0xFFFF9DF3 + mov r0, #0x10 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFDB0: + bl atoi + ldr r1, _022DFF30 ; =_022BCA70 + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _022DFDE0 + ldr r1, _022DFF24 ; =0xFFFF9DF3 + mov r0, #0x10 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFDE0: + cmp r2, #0xc8 + beq _022DFE04 + ldr r1, _022DFF34 ; =0xFFFF9E58 + mov r0, #0x10 + sub r1, r1, r2 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFE04: + ldr r1, _022DFF38 ; =ov00_02319320 + add r2, sp, #0 + add r0, r4, #8 + mov r3, #4 + bl Dwc_Http_GetBase64DecodedResult + cmp r0, #0 + bgt _022DFE38 + ldr r1, _022DFF24 ; =0xFFFF9DF3 + mov r0, #0x10 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFE38: + add r0, sp, #0 + bl atoi + ldr r1, _022DFF30 ; =_022BCA70 + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _022DFE6C + ldr r1, _022DFF24 ; =0xFFFF9DF3 + mov r0, #0x10 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFE6C: + cmp r2, #0x64 + blt _022DFE90 + ldr r1, _022DFF3C ; =0xFFFFA240 + mov r0, #0x10 + sub r1, r1, r2 + bl Dwci_SetError + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022DFE90: + ldr r0, _022DFF20 ; =ov00_02326D68 + ldr r1, _022DFF40 ; =ov00_0231932C + ldr r2, [r0] + add r0, r4, #8 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc1c] + mov r3, #0x40 + add r2, r2, #4 + bl Dwc_Http_GetBase64DecodedResult + ldr r0, _022DFF20 ; =ov00_02326D68 + ldr r1, _022DFF44 ; =ov00_02319334 + ldr r2, [r0] + add r0, r4, #8 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc1c] + mov r3, #0x12c + add r2, r2, #0x45 + bl Dwc_Http_GetBase64DecodedResult + ldr r1, _022DFF48 ; =ov00_02319344 + add r2, sp, #0 + add r0, r4, #8 + mov r3, #1 + bl Dwc_Http_GetBase64DecodedResult + ldrsb r0, [sp] + cmp r0, #0x59 + ldreq r0, _022DFF20 ; =ov00_02326D68 + moveq r1, #1 + ldrne r0, _022DFF20 ; =ov00_02326D68 + movne r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc1c] + str r1, [r0] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022DFF20: .word ov00_02326D68 +_022DFF24: .word 0xFFFF9DF3 +_022DFF28: .word ov00_0231930C +_022DFF2C: .word ov00_02319314 +_022DFF30: .word _022BCA70 +_022DFF34: .word 0xFFFF9E58 +_022DFF38: .word ov00_02319320 +_022DFF3C: .word 0xFFFFA240 +_022DFF40: .word ov00_0231932C +_022DFF44: .word ov00_02319334 +_022DFF48: .word ov00_02319344 + arm_func_end Dwci_Svl_ParseHttp + + arm_func_start Dwc_Auth_Base64Encode +Dwc_Auth_Base64Encode: ; 0x022DFF4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + ldr r4, _022E00CC ; =0xAAAAAAAB + str r2, [sp] + umull r4, r5, r1, r4 + mov r6, #3 + mov r5, r5, lsr #1 + umull r4, r5, r6, r5 + mov sl, r0 + subs r5, r1, r4 + movne r5, #4 + ldr r2, _022E00CC ; =0xAAAAAAAB + ldr r0, [sp] + moveq r5, #0 + cmp r0, #0 + umull r0, r4, r1, r2 + mov r4, r4, lsr #1 + addeq sp, sp, #8 + add r0, r5, r4, lsl #2 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r3, r0 + addlo sp, sp, #8 + mvnlo r0, #0 + ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r7, sl, r1 + ldr r8, [sp] + cmp sl, r7 + beq _022E00BC + sub fp, r2, #0x80000000 + ldr r5, _022E00D0 ; =ov00_02319350 + mov r4, fp +_022DFFC8: + sub sb, r7, sl + mov r0, sb, lsl #3 + smull r1, r2, r4, r0 + add r2, r2, r0, lsr #31 + mov r1, #6 + smull r2, r3, r1, r2 + subs r2, r0, r2 + smull r1, r2, fp, r0 + movne r3, #1 + moveq r3, #0 + add r2, r2, r0, lsr #31 + cmp sb, #3 + add r6, r2, r3 + movge sb, #3 + add r0, sp, #4 + mov r1, #0 + mov r2, #3 + bl MI_CpuFill8 + mov r0, sl + add r1, sp, #4 + mov r2, sb + bl MI_CpuCopy8 + ldrb r0, [sp, #4] + ldr r1, [r5] + cmp r6, #2 + mov r0, r0, asr #2 + ldrsb r0, [r1, r0] + strb r0, [r8] + movlt r0, #0x2a + blt _022E005C + ldrb r2, [sp, #4] + ldrb r1, [sp, #5] + ldr r0, [r5] + mov r2, r2, lsl #4 + and r2, r2, #0x3f + orr r1, r2, r1, asr #4 + ldrsb r0, [r0, r1] +_022E005C: + strb r0, [r8, #1] + cmp r6, #3 + movlt r0, #0x2a + blt _022E0088 + ldrb r2, [sp, #5] + ldrb r1, [sp, #6] + ldr r0, [r5] + mov r2, r2, lsl #2 + and r2, r2, #0x3f + orr r1, r2, r1, asr #6 + ldrsb r0, [r0, r1] +_022E0088: + strb r0, [r8, #2] + cmp r6, #4 + movlt r0, #0x2a + blt _022E00A8 + ldrb r0, [sp, #6] + ldr r1, [r5] + and r0, r0, #0x3f + ldrsb r0, [r1, r0] +_022E00A8: + add sl, sl, sb + strb r0, [r8, #3] + cmp sl, r7 + add r8, r8, #4 + bne _022DFFC8 +_022E00BC: + ldr r0, [sp] + sub r0, r8, r0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E00CC: .word 0xAAAAAAAB +_022E00D0: .word ov00_02319350 + arm_func_end Dwc_Auth_Base64Encode + + arm_func_start Dwc_Auth_Base64Decode +Dwc_Auth_Base64Decode: ; 0x022E00D4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + tst r1, #3 + mvnne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r5, #0 + mov ip, r5 + cmp r1, #0 + bls _022E010C +_022E00F4: + ldrsb r4, [r0, ip] + add ip, ip, #1 + cmp r4, #0x2a + addne r5, r5, #6 + cmp ip, r1 + blo _022E00F4 +_022E010C: + mov ip, r5, asr #2 + add ip, r5, ip, lsr #29 + mov ip, ip, asr #3 + cmp r2, #0 + moveq r0, ip + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r3, ip + mvnlo r0, #0 + ldmloia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r2 +_022E0140: + mov r7, #0 + add r6, sp, #0 + mov r3, r7 + mov r4, #0x3f + mov lr, #0x3e +_022E0154: + ldrsb r5, [r0, r7] + cmp r5, #0x41 + blt _022E0170 + cmp r5, #0x5a + suble r5, r5, #0x41 + strleb r5, [r6] + ble _022E01B8 +_022E0170: + cmp r5, #0x61 + blt _022E0188 + cmp r5, #0x7a + suble r5, r5, #0x47 + strleb r5, [r6] + ble _022E01B8 +_022E0188: + cmp r5, #0x30 + blt _022E01A0 + cmp r5, #0x39 + addle r5, r5, #4 + strleb r5, [r6] + ble _022E01B8 +_022E01A0: + cmp r5, #0x2e + streqb lr, [r6] + beq _022E01B8 + cmp r5, #0x2d + streqb r4, [r6] + strneb r3, [r6] +_022E01B8: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #1 + blt _022E0154 + ldrsb r4, [sp, #1] + ldrsb lr, [sp] + add r3, r1, #1 + mov r4, r4, asr #4 + orr r4, r4, lr, lsl #2 + sub r3, r3, r2 + strb r4, [r1] + cmp r3, ip + add r0, r0, #4 + bge _022E0234 + ldrsb lr, [sp, #2] + ldrsb r4, [sp, #1] + add r3, r1, #2 + mov lr, lr, asr #2 + orr r4, lr, r4, lsl #4 + sub r3, r3, r2 + strb r4, [r1, #1] + cmp r3, ip + bge _022E0234 + ldrsb lr, [sp, #2] + ldrsb r3, [sp, #3] + orr r3, r3, lr, lsl #6 + strb r3, [r1, #2] + add r1, r1, #3 + sub r3, r1, r2 + cmp r3, ip + blt _022E0140 +_022E0234: + mov r0, r3 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Dwc_Auth_Base64Decode + + arm_func_start Dwc_GetLastError +Dwc_GetLastError: ; 0x022E023C + cmp r0, #0 + ldrne r1, _022E0258 ; =ov00_02326D6C + ldrne r1, [r1, #4] + strne r1, [r0] + ldr r0, _022E0258 ; =ov00_02326D6C + ldr r0, [r0] + bx lr + .align 2, 0 +_022E0258: .word ov00_02326D6C + arm_func_end Dwc_GetLastError + + arm_func_start Dwc_GetLastErrorEx +Dwc_GetLastErrorEx: ; 0x022E025C + cmp r0, #0 + ldrne r2, _022E0354 ; =ov00_02326D6C + ldrne r2, [r2, #4] + strne r2, [r0] + cmp r1, #0 + beq _022E0348 + ldr r0, _022E0354 ; =ov00_02326D6C + ldr r0, [r0] + cmp r0, #0x15 + addls pc, pc, r0, lsl #2 + b _022E0340 +_022E0288: ; jump table + b _022E0340 ; case 0 + b _022E0310 ; case 1 + b _022E02E0 ; case 2 + b _022E02E0 ; case 3 + b _022E02E0 ; case 4 + b _022E02E0 ; case 5 + b _022E02EC ; case 6 + b _022E02F8 ; case 7 + b _022E02E0 ; case 8 + b _022E0310 ; case 9 + b _022E0304 ; case 10 + b _022E0304 ; case 11 + b _022E0304 ; case 12 + b _022E0304 ; case 13 + b _022E031C ; case 14 + b _022E0328 ; case 15 + b _022E0334 ; case 16 + b _022E0328 ; case 17 + b _022E0334 ; case 18 + b _022E0328 ; case 19 + b _022E0334 ; case 20 + b _022E0334 ; case 21 +_022E02E0: + mov r0, #6 + str r0, [r1] + b _022E0348 +_022E02EC: + mov r0, #3 + str r0, [r1] + b _022E0348 +_022E02F8: + mov r0, #4 + str r0, [r1] + b _022E0348 +_022E0304: + mov r0, #1 + str r0, [r1] + b _022E0348 +_022E0310: + mov r0, #7 + str r0, [r1] + b _022E0348 +_022E031C: + mov r0, #5 + str r0, [r1] + b _022E0348 +_022E0328: + mov r0, #6 + str r0, [r1] + b _022E0348 +_022E0334: + mov r0, #2 + str r0, [r1] + b _022E0348 +_022E0340: + mov r0, #0 + str r0, [r1] +_022E0348: + ldr r0, _022E0354 ; =ov00_02326D6C + ldr r0, [r0] + bx lr + .align 2, 0 +_022E0354: .word ov00_02326D6C + arm_func_end Dwc_GetLastErrorEx + + arm_func_start Dwc_ClearError +Dwc_ClearError: ; 0x022E0358 + ldr r0, _022E0374 ; =ov00_02326D6C + ldr r1, [r0] + cmp r1, #9 + movne r1, #0 + strne r1, [r0] + strne r1, [r0, #4] + bx lr + .align 2, 0 +_022E0374: .word ov00_02326D6C + arm_func_end Dwc_ClearError + + arm_func_start Dwci_IsError +Dwci_IsError: ; 0x022E0378 + ldr r0, _022E0390 ; =ov00_02326D6C + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022E0390: .word ov00_02326D6C + arm_func_end Dwci_IsError + + arm_func_start Dwci_SetError +Dwci_SetError: ; 0x022E0394 + ldr r2, _022E03A8 ; =ov00_02326D6C + ldr r3, [r2] + cmp r3, #9 + stmneia r2, {r0, r1} + bx lr + .align 2, 0 +_022E03A8: .word ov00_02326D6C + arm_func_end Dwci_SetError + + arm_func_start Dwci_GetAllocateHeader +Dwci_GetAllocateHeader: ; 0x022E03AC + sub r0, r0, #0x20 + bx lr + arm_func_end Dwci_GetAllocateHeader + + arm_func_start Dwci_SetAllocateHeader +Dwci_SetAllocateHeader: ; 0x022E03B4 + ldr r2, _022E03C8 ; =0x4457434D + str r2, [r0] + str r1, [r0, #4] + add r0, r0, #0x20 + bx lr + .align 2, 0 +_022E03C8: .word 0x4457434D + arm_func_end Dwci_SetAllocateHeader + + arm_func_start Dwci_GetAllocateSize +Dwci_GetAllocateSize: ; 0x022E03CC + stmdb sp!, {r3, lr} + bl Dwci_GetAllocateHeader + ldr r0, [r0, #4] + ldmia sp!, {r3, pc} + arm_func_end Dwci_GetAllocateSize + + arm_func_start Dwc_SetMemFunc +Dwc_SetMemFunc: ; 0x022E03DC + ldr r2, _022E03EC ; =ov00_02326D74 + str r0, [r2, #4] + str r1, [r2] + bx lr + .align 2, 0 +_022E03EC: .word ov00_02326D74 + arm_func_end Dwc_SetMemFunc + + arm_func_start Dwc_Alloc +Dwc_Alloc: ; 0x022E03F0 + ldr ip, _022E03FC ; =Dwc_AllocEx + mov r2, #0x20 + bx ip + .align 2, 0 +_022E03FC: .word Dwc_AllocEx + arm_func_end Dwc_Alloc + + arm_func_start Dwc_AllocEx +Dwc_AllocEx: ; 0x022E0400 + stmdb sp!, {r4, lr} + ldr r3, _022E0430 ; =ov00_02326D74 + mov r4, r1 + ldr r3, [r3, #4] + add r1, r4, #0x20 + blx r3 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r1, r4 + bl Dwci_SetAllocateHeader + ldmia sp!, {r4, pc} + .align 2, 0 +_022E0430: .word ov00_02326D74 + arm_func_end Dwc_AllocEx + + arm_func_start Dwc_Free +Dwc_Free: ; 0x022E0434 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + ldmeqia sp!, {r4, pc} + mov r0, r1 + bl Dwci_GetAllocateHeader + mov r1, r0 + ldr r0, _022E046C ; =ov00_02326D74 + ldr r2, [r1, #4] + ldr r3, [r0] + mov r0, r4 + add r2, r2, #0x20 + blx r3 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E046C: .word ov00_02326D74 + arm_func_end Dwc_Free + + arm_func_start Dwc_Realloc +Dwc_Realloc: ; 0x022E0470 + stmdb sp!, {r3, lr} + mov ip, #0x20 + str ip, [sp] + bl Dwc_ReallocEx + ldmia sp!, {r3, pc} + arm_func_end Dwc_Realloc + + arm_func_start Dwc_ReallocEx +Dwc_ReallocEx: ; 0x022E0484 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r3 + mov r7, r1 + ldr r2, [sp, #0x18] + mov r1, r5 + mov r8, r0 + bl Dwc_AllocEx + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r7, #0 + beq _022E04E8 + mov r0, r7 + bl Dwci_GetAllocateSize + mov r6, r0 + cmp r6, r5 + movls r5, r6 + mov r0, r7 + mov r1, r4 + mov r2, r5 + bl MI_CpuCopy8 + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl Dwc_Free +_022E04E8: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end Dwc_ReallocEx + + arm_func_start Dwci_GsMalloc +Dwci_GsMalloc: ; 0x022E04F0 + ldr ip, _022E0500 ; =Dwc_Alloc + mov r1, r0 + mov r0, #5 + bx ip + .align 2, 0 +_022E0500: .word Dwc_Alloc + arm_func_end Dwci_GsMalloc + + arm_func_start Dwci_GsRealloc +Dwci_GsRealloc: ; 0x022E0504 + ldr ip, _022E051C ; =Dwc_Realloc + mov r2, r1 + mov r1, r0 + mov r3, r2 + mov r0, #5 + bx ip + .align 2, 0 +_022E051C: .word Dwc_Realloc + arm_func_end Dwci_GsRealloc + + arm_func_start Dwci_GsFree +Dwci_GsFree: ; 0x022E0520 + ldr ip, _022E0534 ; =Dwc_Free + mov r1, r0 + mov r0, #5 + mov r2, #0 + bx ip + .align 2, 0 +_022E0534: .word Dwc_Free + arm_func_end Dwci_GsFree + + arm_func_start Dwci_GsMemalign +Dwci_GsMemalign: ; 0x022E0538 + ldr ip, _022E0548 ; =Dwc_AllocEx + mov r2, r0 + mov r0, #5 + bx ip + .align 2, 0 +_022E0548: .word Dwc_AllocEx + arm_func_end Dwci_GsMemalign + + arm_func_start Dwc_InitInetEx +Dwc_InitInetEx: ; 0x022E054C + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _022E05AC ; =ov00_02326D7C + mov r4, r0 + ldr r2, [r2, #4] + mov r6, r1 + mov r5, r3 + cmp r2, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, #0 + mov r2, #0x64 + bl MI_CpuFill8 + strh r6, [r4, #8] + mov r0, #1 + strh r0, [r4, #0xa] + strh r0, [r4, #4] + mov r0, #0 + strh r0, [r4, #6] + strb r0, [r4, #0xc] + ldr r1, _022E05AC ; =ov00_02326D7C + str r0, [r4, #0x10] + mov r0, r5 + str r4, [r1, #4] + bl Cps_SetSslLowThreadPriority + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E05AC: .word ov00_02326D7C + arm_func_end Dwc_InitInetEx + + arm_func_start Dwc_InitInet +Dwc_InitInet: ; 0x022E05B0 + ldr ip, _022E05C4 ; =Dwc_InitInetEx + mov r1, #3 + mov r2, #1 + mov r3, #0x14 + bx ip + .align 2, 0 +_022E05C4: .word Dwc_InitInetEx + arm_func_end Dwc_InitInet + + arm_func_start Dwc_SetAuthServer +Dwc_SetAuthServer: ; 0x022E05C8 + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _022E05E8 + cmp r0, #1 + beq _022E05F4 + cmp r0, #2 + beq _022E0600 + ldmia sp!, {r3, pc} +_022E05E8: + ldr r0, _022E060C ; =ov00_0231A0E0 + bl Dwc_Auth_SetCustomNas + ldmia sp!, {r3, pc} +_022E05F4: + ldr r0, _022E0610 ; =ov00_0231A108 + bl Dwc_Auth_SetCustomNas + ldmia sp!, {r3, pc} +_022E0600: + ldr r0, _022E0614 ; =ov00_0231A12C + bl Dwc_Auth_SetCustomNas + ldmia sp!, {r3, pc} + .align 2, 0 +_022E060C: .word ov00_0231A0E0 +_022E0610: .word ov00_0231A108 +_022E0614: .word ov00_0231A12C + arm_func_end Dwc_SetAuthServer + + arm_func_start Dwc_ConnectInetAsync +Dwc_ConnectInetAsync: ; 0x022E0618 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _022E06BC ; =ov00_02326D7C + ldr r0, [r0, #4] + cmp r0, #0 + beq _022E06A8 + ldrh r0, [r0, #4] + cmp r0, #1 + addne sp, sp, #0xc + ldmneia sp!, {pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _022E06BC ; =ov00_02326D7C + ldr r3, _022E06C0 ; =Dwc_Alloc + ldr lr, [r0, #4] + ldr r2, _022E06C4 ; =Dwc_Free + ldrh ip, [lr, #8] + add r0, sp, #0 + mov r1, #2 + strb ip, [sp, #8] + ldrh ip, [lr, #0xa] + strb ip, [sp, #9] + str r3, [sp] + str r2, [sp, #4] + strh r1, [lr, #4] + bl Dwc_AC_Create + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + ldr r1, _022E06C8 ; =0xFFFF3BE9 + mov r0, #9 + bl Dwci_SetError + add sp, sp, #0xc + ldmia sp!, {pc} +_022E06A8: + ldr r1, _022E06C8 ; =0xFFFF3BE9 + mov r0, #9 + bl Dwci_SetError + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_022E06BC: .word ov00_02326D7C +_022E06C0: .word Dwc_Alloc +_022E06C4: .word Dwc_Free +_022E06C8: .word 0xFFFF3BE9 + arm_func_end Dwc_ConnectInetAsync + + arm_func_start Dwc_DebugConnectInetAsync +Dwc_DebugConnectInetAsync: ; 0x022E06CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl Dwc_ConnectInetAsync + ldr r0, _022E0724 ; =ov00_02326D7C + ldr r1, [r0, #4] + cmp r1, #0 + movne r0, #1 + strneb r0, [r1, #0xc] + bl Dwc_GetInetStatus + cmp r0, #2 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr ip, [sp, #0x18] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str ip, [sp] + bl Dwc_AC_SetSpecifyAp + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E0724: .word ov00_02326D7C + arm_func_end Dwc_DebugConnectInetAsync + + arm_func_start Dwc_CheckInet +Dwc_CheckInet: ; 0x022E0728 + stmdb sp!, {r3, lr} + ldr r0, _022E077C ; =ov00_02326D7C + ldr r1, [r0, #4] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r1] + cmp r0, #0 + beq _022E0774 + mov r0, #3 + strh r0, [r1, #4] + bl Dwc_GetInetStatus + ldr r0, _022E077C ; =ov00_02326D7C + ldr r0, [r0, #4] + ldrb r0, [r0, #0xc] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} +_022E0774: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E077C: .word ov00_02326D7C + arm_func_end Dwc_CheckInet + + arm_func_start Dwc_ProcessInet +Dwc_ProcessInet: ; 0x022E0780 + stmdb sp!, {r3, lr} + ldr r0, _022E0898 ; =ov00_02326D7C + ldr r1, [r0, #4] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r1, #0x10] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022E0838 +_022E07A4: ; jump table + b _022E0838 ; case 0 + b _022E07BC ; case 1 + b _022E07D8 ; case 2 + b _022E0814 ; case 3 + b _022E0834 ; case 4 + b _022E0834 ; case 5 +_022E07BC: + mov r0, #0 + str r0, [r1] + bl Dwc_AC_ProcessGetWdsInfo + ldr r1, _022E0898 ; =ov00_02326D7C + ldr r1, [r1, #4] + str r0, [r1, #0x10] + ldmia sp!, {r3, pc} +_022E07D8: + bl Dwc_AC_CleanupGetWdsInfo + ldr r0, _022E0898 ; =ov00_02326D7C + mov r1, #8 + ldr r3, [r0, #4] + str r1, [sp] + ldr r2, [r3, #0x54] + add r0, r3, #0x14 + add r1, r3, #0x34 + add r3, r3, #0x58 + bl Dwc_DebugConnectInetAsync + ldr r0, _022E0898 ; =ov00_02326D7C + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x10] + ldmia sp!, {r3, pc} +_022E0814: + bl Dwc_AC_CleanupGetWdsInfo + ldr r0, _022E0898 ; =ov00_02326D7C + mvn r3, #0 + ldr r2, [r0, #4] + mov r1, #1 + str r3, [r2] + ldr r0, [r0, #4] + strb r1, [r0, #0xc] +_022E0834: + ldmia sp!, {r3, pc} +_022E0838: + ldrh r0, [r1, #4] + cmp r0, #2 + bne _022E0858 + bl InitWfc + ldr r1, _022E0898 ; =ov00_02326D7C + ldr r1, [r1, #4] + str r0, [r1] + ldmia sp!, {r3, pc} +_022E0858: + cmp r0, #4 + ldmneia sp!, {r3, pc} + ldrh r0, [r1, #6] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl Wcm_GetPhase + cmp r0, #9 + ldmeqia sp!, {r3, pc} + ldr r0, _022E0898 ; =ov00_02326D7C + mov r3, #0 + ldr r2, [r0, #4] + mov r1, #6 + strh r3, [r2, #6] + ldr r0, [r0, #4] + strh r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E0898: .word ov00_02326D7C + arm_func_end Dwc_ProcessInet + + arm_func_start Dwc_GetInetStatus +Dwc_GetInetStatus: ; 0x022E089C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _022E0A68 ; =ov00_02326D7C + ldr r1, [r0, #4] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r1, #0x10] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022E0930 +_022E08C4: ; jump table + b _022E0930 ; case 0 + b _022E08DC ; case 1 + b _022E08E4 ; case 2 + b _022E08EC ; case 3 + b _022E0920 ; case 4 + b _022E0928 ; case 5 +_022E08DC: + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E08E4: + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E08EC: + bl Dwc_ProcessInet + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r0, #5 + ldr r1, [r1] + bl Dwci_SetError + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r0, #7 + ldr r3, [r1, #4] + mov r2, #4 + strh r0, [r3, #4] + ldr r1, [r1, #4] + str r2, [r1, #0x10] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E0920: + mov r0, #7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E0928: + mov r0, #5 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E0930: + ldrh r0, [r1, #4] + cmp r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwc_AC_GetStatus + mov r4, r0 + cmp r4, #5 + bne _022E0974 + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r0, #4 + ldr r2, [r1, #4] + mov r3, #1 + strh r0, [r2, #4] + ldr r2, [r1, #4] + strh r3, [r2, #6] + ldr r1, [r1, #4] + strb r3, [r1, #0xc] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E0974: + cmp r4, #0 + bge _022E0A60 + mvn r0, #9 + cmp r4, r0 + blt _022E09B8 + ldr r0, _022E0A68 ; =ov00_02326D7C + ldr r1, _022E0A6C ; =0xFFFF3BE9 + ldr r2, [r0, #4] + mov r3, #1 + mov r0, #9 + strb r3, [r2, #0xc] + bl Dwci_SetError + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r0, #8 + ldr r1, [r1, #4] + strh r0, [r1, #4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E09B8: + ldr r0, _022E0A68 ; =ov00_02326D7C + ldr r5, [r0, #4] + ldrb r1, [r5, #0xc] + cmp r1, #0 + bne _022E0A34 + ldrh r7, [r5, #8] + bl Cps_GetSslLowThreadPriority + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r6, r0 + str r4, [r1] + bl Dwc_CleanupInet + mov r2, r6, lsl #0x10 + mov r3, r2, lsr #0x10 + mov r0, r5 + mov r1, r7 + mov r2, #1 + bl Dwc_InitInetEx + ldr r0, _022E0A68 ; =ov00_02326D7C + mov r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0x14 + bl Dwc_AC_StartupGetWdsInfo + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r3, #1 + ldr r2, [r1, #4] + mov r0, #2 + str r3, [r2, #0x10] + ldr r1, [r1, #4] + mov r2, #0 + str r2, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E0A34: + ldr r0, [r0] + cmp r0, r4 + movlt r4, r0 + mov r1, r4 + mov r0, #5 + bl Dwci_SetError + ldr r1, _022E0A68 ; =ov00_02326D7C + mov r0, #7 + ldr r1, [r1, #4] + strh r0, [r1, #4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E0A60: + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E0A68: .word ov00_02326D7C +_022E0A6C: .word 0xFFFF3BE9 + arm_func_end Dwc_GetInetStatus + + arm_func_start Dwc_CleanupInet +Dwc_CleanupInet: ; 0x022E0A70 + stmdb sp!, {r4, lr} + ldr r0, _022E0AF8 ; =ov00_02326D7C + ldr r1, [r0, #4] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldrh r0, [r1, #4] + cmp r0, #1 + bne _022E0AC4 + ldr r0, [r1, #0x10] + cmp r0, #1 + bne _022E0AB4 + bl Dwc_AC_CancelGetWdsInfo +_022E0AA0: + bl Dwc_AC_ProcessGetWdsInfo + sub r0, r0, #2 + cmp r0, #2 + bhi _022E0AA0 + bl Dwc_AC_CleanupGetWdsInfo +_022E0AB4: + ldr r0, _022E0AF8 ; =ov00_02326D7C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r4, pc} +_022E0AC4: + bl Dwc_AC_Destroy + cmp r0, #0 + bne _022E0AE8 + mov r4, #0xa +_022E0AD4: + mov r0, r4 + bl OS_Sleep + bl Dwc_AC_Destroy + cmp r0, #0 + beq _022E0AD4 +_022E0AE8: + ldr r0, _022E0AF8 ; =ov00_02326D7C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E0AF8: .word ov00_02326D7C + arm_func_end Dwc_CleanupInet + + arm_func_start Dwc_CleanupInetAsync +Dwc_CleanupInetAsync: ; 0x022E0AFC + stmdb sp!, {r3, lr} + ldr r0, _022E0BBC ; =ov00_02326D7C + ldr r1, [r0, #4] + cmp r1, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldrh r0, [r1, #4] + cmp r0, #8 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #1 + bne _022E0B90 + ldr r0, [r1, #0x10] + cmp r0, #1 + bne _022E0B54 + bl Dwc_AC_CancelGetWdsInfo + ldr r0, _022E0BBC ; =ov00_02326D7C + mov r2, #5 + ldr r1, [r0, #4] + mov r0, #0 + str r2, [r1, #0x10] + ldmia sp!, {r3, pc} +_022E0B54: + cmp r0, #5 + bne _022E0B7C + bl Dwc_AC_ProcessGetWdsInfo + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + sub r0, r0, #2 + cmp r0, #2 + bhi _022E0B7C + bl Dwc_AC_CleanupGetWdsInfo +_022E0B7C: + ldr r0, _022E0BBC ; =ov00_02326D7C + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} +_022E0B90: + mov r0, #5 + strh r0, [r1, #4] + bl Dwc_AC_Destroy + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, _022E0BBC ; =ov00_02326D7C + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E0BBC: .word ov00_02326D7C + arm_func_end Dwc_CleanupInetAsync + + arm_func_start Dwci_CheckDisconnected +Dwci_CheckDisconnected: ; 0x022E0BC0 + ldr r0, _022E0BE8 ; =ov00_02326D7C + ldr r0, [r0, #4] + cmp r0, #0 + beq _022E0BE0 + ldrh r0, [r0, #4] + cmp r0, #6 + moveq r0, #1 + bxeq lr +_022E0BE0: + mov r0, #0 + bx lr + .align 2, 0 +_022E0BE8: .word ov00_02326D7C + arm_func_end Dwci_CheckDisconnected + + arm_func_start Dwc_GetLinkLevel +Dwc_GetLinkLevel: ; 0x022E0BEC + ldr ip, _022E0BF4 ; =Wcm_GetLinkLevel + bx ip + .align 2, 0 +_022E0BF4: .word Wcm_GetLinkLevel + arm_func_end Dwc_GetLinkLevel + + arm_func_start Dwc_GetApInfo +Dwc_GetApInfo: ; 0x022E0BF8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r1, #0 + mov r2, #0x3c + mov r4, r0 + bl MI_CpuFill8 + mov r0, #0xff + str r0, [r4, #4] + bl Dwc_GetInetStatus + cmp r0, #4 + addne sp, sp, #0xc + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, pc} + bl Dwc_AC_GetApType + str r0, [r4] + cmp r0, #0xff + beq _022E0C44 + cmp r0, #0x63 + ble _022E0C58 +_022E0C44: + mov r0, #0x63 + str r0, [r4] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022E0C58: + bl EnableIrqFlag + mov r6, r0 + bl Wcm_GetApMacAddress + mov r5, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r5, #0 + bne _022E0C8C + mov r0, r6 + bl SetIrqFlag + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022E0C8C: + mov r0, r5 + add r1, r4, #0x33 + mov r2, #6 + bl MI_CpuCopy8 + ldr r0, [r4] + cmp r0, #0 + blt _022E0CF0 + cmp r0, #3 + bge _022E0CF0 + add r0, sp, #0 + bl Wcm_GetApEssid + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _022E0CE0 + mov r0, r6 + bl SetIrqFlag + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022E0CE0: + ldrh r2, [sp] + mov r0, r5 + add r1, r4, #0x12 + bl MI_CpuCopy8 +_022E0CF0: + mov r0, r6 + bl SetIrqFlag + add r0, sp, #2 + bl Dwc_AC_GetApSpotInfo + cmp r0, #0 + beq _022E0D44 + ldrb r1, [sp, #2] + mov r0, #0 + cmp r1, #0x30 + blo _022E0D20 + cmp r1, #0x39 + movls r0, #1 +_022E0D20: + cmp r0, #0 + subne r3, r1, #0x30 + moveq r3, #0xff + add r0, sp, #3 + add r1, r4, #8 + mov r2, #9 + str r3, [r4, #4] + bl MI_CpuCopy8 + b _022E0D4C +_022E0D44: + mov r0, #0xff + str r0, [r4, #4] +_022E0D4C: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Dwc_GetApInfo + + arm_func_start Dwc_UpdateConnection +Dwc_UpdateConnection: ; 0x022E0D58 + stmdb sp!, {r3, lr} + bl Dwc_ProcessInet + bl Dwci_CheckDisconnected + cmp r0, #0 + beq _022E0DA0 + bl Dwc_AC_GetApType + mov r2, r0 + cmp r2, #0xff + beq _022E0D84 + cmp r2, #0x63 + bls _022E0D88 +_022E0D84: + mov r2, #0x63 +_022E0D88: + ldr r1, _022E0DA8 ; =0xFFFF2D10 + mov r0, #8 + sub r1, r1, r2 + bl Dwci_SetError + mov r0, #1 + ldmia sp!, {r3, pc} +_022E0DA0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E0DA8: .word 0xFFFF2D10 + arm_func_end Dwc_UpdateConnection + + arm_func_start Dwc_GetIngamesnCheckResult +Dwc_GetIngamesnCheckResult: ; 0x022E0DAC + ldr r0, _022E0DB8 ; =ov00_02326CB4 + ldr r0, [r0] + bx lr + .align 2, 0 +_022E0DB8: .word ov00_02326CB4 + arm_func_end Dwc_GetIngamesnCheckResult + + arm_func_start Dwc_SvlGetTokenAsync +Dwc_SvlGetTokenAsync: ; 0x022E0DBC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr r0, _022E0E24 ; =Dwc_Alloc + ldr r1, _022E0E28 ; =Dwc_Free + bl Dwc_Svl_Init + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl strlen + cmp r0, #0 + bne _022E0E00 + ldr r0, _022E0E2C ; =ov00_0231A14C + mov r1, r4 + bl Dwc_Svl_GetTokenAsync + b _022E0E0C +_022E0E00: + mov r0, r5 + mov r1, r4 + bl Dwc_Svl_GetTokenAsync +_022E0E0C: + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + bl Dwc_Svl_Cleanup + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E0E24: .word Dwc_Alloc +_022E0E28: .word Dwc_Free +_022E0E2C: .word ov00_0231A14C + arm_func_end Dwc_SvlGetTokenAsync + + arm_func_start Dwc_SvlProcess +Dwc_SvlProcess: ; 0x022E0E30 + stmdb sp!, {r4, lr} + bl Dwc_Svl_Process + mov r4, r0 + sub r0, r4, #3 + cmp r0, #2 + bhi _022E0E4C + bl Dwc_Svl_Cleanup +_022E0E4C: + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end Dwc_SvlProcess + + arm_func_start Dwci_NdAlloc +Dwci_NdAlloc: ; 0x022E0E54 + ldr ip, _022E0E68 ; =Dwc_AllocEx + mov r2, r1 + mov r1, r0 + mov r0, #6 + bx ip + .align 2, 0 +_022E0E68: .word Dwc_AllocEx + arm_func_end Dwci_NdAlloc + + arm_func_start Dwci_NdFree +Dwci_NdFree: ; 0x022E0E6C + ldr ip, _022E0E80 ; =Dwc_Free + mov r1, r0 + mov r0, #6 + mov r2, #0 + bx ip + .align 2, 0 +_022E0E80: .word Dwc_Free + arm_func_end Dwci_NdFree + + arm_func_start Dwci_NdCallback +Dwci_NdCallback: ; 0x022E0E84 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r1 + mov r6, r0 + mov r4, r2 + bne _022E0EAC + ldr r3, _022E0F64 ; =ov00_02326D84 + ldr r3, [r3] + ldr r3, [r3] + blx r3 + ldmia sp!, {r4, r5, r6, pc} +_022E0EAC: + cmp r5, #8 + addls pc, pc, r5, lsl #2 + b _022E0F40 +_022E0EB8: ; jump table + b _022E0F40 ; case 0 + b _022E0EDC ; case 1 + b _022E0EEC ; case 2 + b _022E0EF4 ; case 3 + b _022E0F04 ; case 4 + b _022E0F14 ; case 5 + b _022E0F44 ; case 6 + b _022E0F28 ; case 7 + b _022E0F30 ; case 8 +_022E0EDC: + ldr r1, _022E0F68 ; =0xFFFF86E7 + mov r0, #9 + bl Dwci_SetError + b _022E0F44 +_022E0EEC: + bl WaitForever2 + b _022E0F44 +_022E0EF4: + ldr r1, _022E0F6C ; =0xFFFF86D4 + mov r0, #0xf + bl Dwci_SetError + b _022E0F44 +_022E0F04: + ldr r1, _022E0F70 ; =0xFFFF86CA + mov r0, #0xe + bl Dwci_SetError + b _022E0F44 +_022E0F14: + ldr r1, _022E0F74 ; =0xFFFF86E8 + mov r0, #0xe + sub r1, r1, r4 + bl Dwci_SetError + b _022E0F44 +_022E0F28: + bl WaitForever2 + b _022E0F44 +_022E0F30: + ldr r1, _022E0F78 ; =0xFFFF86DF + mov r0, #9 + bl Dwci_SetError + b _022E0F44 +_022E0F40: + bl WaitForever2 +_022E0F44: + ldr r1, _022E0F64 ; =ov00_02326D84 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + ldr r3, [r2] + mov r2, r4 + blx r3 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E0F64: .word ov00_02326D84 +_022E0F68: .word 0xFFFF86E7 +_022E0F6C: .word 0xFFFF86D4 +_022E0F70: .word 0xFFFF86CA +_022E0F74: .word 0xFFFF86E8 +_022E0F78: .word 0xFFFF86DF + arm_func_end Dwci_NdCallback + + arm_func_start Dwci_NdCleanupCallback +Dwci_NdCleanupCallback: ; 0x022E0F7C + stmdb sp!, {r4, lr} + ldr r0, _022E0FBC ; =ov00_02326D84 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_JoinThread + ldr r0, _022E0FBC ; =ov00_02326D84 + ldr r0, [r0] + ldr r4, [r0, #4] + bl Dwci_NdFree + ldr r0, _022E0FBC ; =ov00_02326D84 + mov r1, #0 + str r1, [r0] + cmp r4, #0 + ldmeqia sp!, {r4, pc} + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E0FBC: .word ov00_02326D84 + arm_func_end Dwci_NdCleanupCallback + + arm_func_start Dwci_SvlTokenWaitThread +Dwci_SvlTokenWaitThread: ; 0x022E0FC0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x2a0 + mov r7, #0 + mov r6, #6 + mvn r5, #0 + mov r4, #0x64 +_022E0FD8: + bl Dwc_SvlProcess + cmp r0, #3 + bne _022E10F4 + ldr r0, _022E1160 ; =ov00_02326D84 + ldr r5, [r0] + add r0, r5, #0x50 + bl strlen + mov r4, r0 + ldr r0, _022E1164 ; =ov00_0231A154 + bl strlen + add r0, r4, r0 + cmp r0, #0xff + bls _022E1024 + mov r1, #8 + sub r2, r1, #9 + mov r0, #0 + bl Dwci_NdCallback + add sp, sp, #0x2a0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E1024: + ldr r2, _022E1168 ; =ov00_0231A168 + add r0, sp, #0x1a0 + add r3, r5, #0x50 + mov r1, #0x100 + bl OS_SnPrintf + ldr r0, _022E1160 ; =ov00_02326D84 + ldr r4, [r0] + add r0, r4, #0x91 + bl strlen + mov r1, r0 + add r2, sp, #0x10 + add r0, r4, #0x91 + mov r3, #0x190 + bl Dwc_Auth_Base64Encode + cmp r0, #0 + bge _022E107C + mov r1, #8 + sub r2, r1, #9 + mov r0, #0 + bl Dwci_NdCallback + add sp, sp, #0x2a0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E107C: + ldr r0, _022E1160 ; =ov00_02326D84 + ldr r4, _022E116C ; =Dwci_NdCallback + ldr r2, [r0] + ldr r0, _022E1170 ; =Dwci_NdAlloc + add r1, r2, #8 + str r1, [sp] + add r1, r2, #0x28 + str r1, [sp, #4] + ldr r1, _022E1174 ; =Dwci_NdFree + add r2, sp, #0x1a0 + add r3, sp, #0x10 + str r4, [sp, #8] + bl Dwci_NdStartup + cmp r0, #0 + mov r0, #0 + bne _022E10D0 + mov r1, #8 + sub r2, r1, #9 + bl Dwci_NdCallback + add sp, sp, #0x2a0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E10D0: + ldr r1, _022E1160 ; =ov00_02326D84 + mov r4, #1 + ldr r3, [r1] + mov r1, r0 + sub r2, r0, #1 + str r4, [r3, #0x48] + bl Dwci_NdCallback + add sp, sp, #0x2a0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E10F4: + cmp r0, #4 + bne _022E1134 + add r0, sp, #0xc + bl Dwc_GetLastError + ldr r1, [sp, #0xc] + mov r0, #0xe + bl Dwci_SetError + ldr r0, _022E1160 ; =ov00_02326D84 + mov r1, #3 + ldr r0, [r0] + sub r2, r1, #4 + ldr r3, [r0] + mov r0, #0 + blx r3 + add sp, sp, #0x2a0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E1134: + cmp r0, #5 + bne _022E114C + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl Dwci_NdCallback +_022E114C: + mov r0, r4 + bl OS_Sleep + b _022E0FD8 +_022E1158: + add sp, sp, #0x2a0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E1160: .word ov00_02326D84 +_022E1164: .word ov00_0231A154 +_022E1168: .word ov00_0231A168 +_022E116C: .word Dwci_NdCallback +_022E1170: .word Dwci_NdAlloc +_022E1174: .word Dwci_NdFree + arm_func_end Dwci_SvlTokenWaitThread + + arm_func_start Dwc_NdInitAsync +Dwc_NdInitAsync: ; 0x022E1178 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwci_IsError + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xa80 + mov r1, #0x20 + bl Dwci_NdAlloc + ldr r2, _022E1284 ; =ov00_02326D84 + mov r1, #0 + str r0, [r2] + str r1, [r0, #0x48] + ldr r0, [r2] + mov r2, #0xa80 + bl MI_CpuFill8 + ldr r0, _022E1284 ; =ov00_02326D84 + mov r1, r5 + ldr r3, [r0] + mov r2, #0x1f + str r6, [r3] + ldr r0, [r0] + add r0, r0, #8 + bl strncpy + ldr r0, _022E1284 ; =ov00_02326D84 + mov r1, r4 + ldr r0, [r0] + mov r2, #0x1f + add r0, r0, #0x28 + bl strncpy + ldr r1, _022E1284 ; =ov00_02326D84 + ldr r0, _022E1288 ; =ov00_0231A17C + ldr r1, [r1] + add r1, r1, #0x4c + bl Dwc_SvlGetTokenAsync + cmp r0, #0 + bne _022E123C + ldr r0, _022E1284 ; =ov00_02326D84 + ldr r0, [r0] + bl Dwci_NdFree + ldr r1, _022E1284 ; =ov00_02326D84 + mov r0, #0 + str r0, [r1] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_022E123C: + ldr r0, _022E1284 ; =ov00_02326D84 + mov r2, #0x800 + ldr r3, [r0] + ldr r1, _022E128C ; =Dwci_SvlTokenWaitThread + str r2, [sp] + mov ip, #0x10 + add r0, r3, #0x9c0 + add r3, r3, #0x9c0 + mov r2, #0 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _022E1284 ; =ov00_02326D84 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E1284: .word ov00_02326D84 +_022E1288: .word ov00_0231A17C +_022E128C: .word Dwci_SvlTokenWaitThread + arm_func_end Dwc_NdInitAsync + + arm_func_start Dwc_NdCleanupAsync +Dwc_NdCleanupAsync: ; 0x022E1290 + stmdb sp!, {r3, lr} + ldr r1, _022E12D4 ; =ov00_02326D84 + ldr r2, [r1] + cmp r2, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #0x48] + cmp r0, #0 + bne _022E12C4 + bl Dwci_NdCleanupCallback + b _022E12CC +_022E12C4: + ldr r0, _022E12D8 ; =Dwci_NdCleanupCallback + bl Dwci_NdCleanupAsync +_022E12CC: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E12D4: .word ov00_02326D84 +_022E12D8: .word Dwci_NdCleanupCallback + arm_func_end Dwc_NdCleanupAsync + + arm_func_start Dwc_NdSetAttr +Dwc_NdSetAttr: ; 0x022E12DC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwci_IsError + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl Dwci_NdSetAttr + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_NdSetAttr + + arm_func_start Dwc_NdGetFileListNumAsync +Dwc_NdGetFileListNumAsync: ; 0x022E1310 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_IsError + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl Dwci_NdGetFileListNumAsync + ldmia sp!, {r4, pc} + arm_func_end Dwc_NdGetFileListNumAsync + + arm_func_start Dwc_NdGetFileListAsync +Dwc_NdGetFileListAsync: ; 0x022E1334 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwci_IsError + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xb0 + mul r2, r4, r0 + mov r0, r6 + mov r1, #0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl Dwci_NdGetFileListAsync + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_NdGetFileListAsync + + arm_func_start Dwc_NdGetFileAsync +Dwc_NdGetFileAsync: ; 0x022E137C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwci_IsError + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl Dwci_NdGetFileAsync + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwc_NdGetFileAsync + + arm_func_start Dwc_NdCancelAsync +Dwc_NdCancelAsync: ; 0x022E13B4 + stmdb sp!, {r3, lr} + bl Dwci_IsError + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + bl Dwci_NdCancelAsync + ldmia sp!, {r3, pc} + arm_func_end Dwc_NdCancelAsync + + arm_func_start Dwc_SetCommonKeyValueString +Dwc_SetCommonKeyValueString: ; 0x022E13D0 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xc + stmia sp, {r0, r3} + mov r4, r2 + str r1, [sp, #8] + ldr r2, _022E1404 ; =ov00_0231A184 + mov r0, r4 + mov r1, #0x1000 + bl OS_SnPrintf + mov r0, r4 + bl strlen + add sp, sp, #0xc + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022E1404: .word ov00_0231A184 + arm_func_end Dwc_SetCommonKeyValueString + + arm_func_start Dwc_AddCommonKeyValueString +Dwc_AddCommonKeyValueString: ; 0x022E1408 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r4, r3 + mov r0, r5 + mov r1, #0 + bl strchr + mov r2, r0 + mov r0, r7 + mov r1, r6 + mov r3, r4 + bl Dwc_SetCommonKeyValueString + mov r0, r5 + bl strlen + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Dwc_AddCommonKeyValueString + + arm_func_start Dwc_GetCommonValueString +Dwc_GetCommonValueString: ; 0x022E1448 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r4, r1 + mov r7, r0 + mov r6, r3 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r2 + mov r1, r6 + bl strchr + movs r5, r0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022E1478: + mov r0, r7 + bl strlen + mov r2, r0 + mov r1, r7 + add r0, r5, #1 + bl strncmp + cmp r0, #0 + bne _022E14B0 + mov r0, r7 + bl strlen + add r0, r0, r5 + ldrsb r0, [r0, #1] + cmp r6, r0 + beq _022E14E4 +_022E14B0: + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r0, #1 + bl strchr + movs r5, r0 + bne _022E1478 + mvn r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E14E4: + mov r1, r6 + add r0, r5, #1 + bl strchr + movs r5, r0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addne r1, r5, #1 + subne r6, r0, r1 + bne _022E1524 + add r0, r5, #1 + bl strlen + mov r6, r0 +_022E1524: + mov r0, r4 + mov r2, r6 + add r1, r5, #1 + bl strncpy + mov r1, #0 + mov r0, r6 + strb r1, [r4, r6] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Dwc_GetCommonValueString + + arm_func_start Dwci_GetMathRand32 +Dwci_GetMathRand32: ; 0x022E1544 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022E1650 ; =ov00_02326D88 + mov r4, r0 + ldr r0, [r1, #4] + ldr r2, [r1] + cmp r0, #0 + cmpeq r2, #0 + mov r0, #0 + bne _022E1608 + ldr r2, [r1, #0xc] + ldr r3, [r1, #8] + cmp r2, r0 + cmpeq r3, r0 + bne _022E1608 + ldr r2, [r1, #0x14] + ldr r1, [r1, #0x10] + cmp r2, r0 + cmpeq r1, r0 + bne _022E1608 + add r0, sp, #0 + bl OS_GetMacAddress + bl OS_GetTick + mov r2, r1, lsl #0x18 + ldr ip, [sp] + ldr r3, [sp, #4] + mov lr, ip, lsr #0x18 + orr lr, lr, r3, lsl #8 + mvn r1, #0xff000000 + and r1, lr, r1 + orr lr, r1, r0, lsl #24 + mov ip, #0 + orr r2, r2, r0, lsr #8 + and r1, ip, r3, lsr #24 + orr r2, r1, r2 + ldr r0, _022E1654 ; =ov00_02326D88 + add r1, sp, #0 + str lr, [sp] + str r2, [sp, #4] + ldmia r1, {r2, r3} + stmia r0, {r2, r3} + ldr r1, _022E1658 ; =0x6C078965 + ldr r0, _022E1650 ; =ov00_02326D88 + ldr r2, _022E165C ; =0x5D588B65 + str r1, [r0, #8] + ldr r1, _022E1660 ; =0x00269EC3 + str r2, [r0, #0xc] + str r1, [r0, #0x10] + str ip, [r0, #0x14] +_022E1608: + ldr r1, _022E1650 ; =ov00_02326D88 + ldr r2, [r1] + ldmib r1, {r0, r3} + umull lr, ip, r3, r2 + mla ip, r3, r0, ip + ldr r0, [r1, #0xc] + ldr r3, [r1, #0x10] + mla ip, r0, r2, ip + ldr r0, [r1, #0x14] + adds r2, r3, lr + adc r0, r0, ip + str r2, [r1] + str r0, [r1, #4] + cmp r4, #0 + umullne r2, r1, r0, r4 + movne r0, r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E1650: .word ov00_02326D88 +_022E1654: .word ov00_02326D88 +_022E1658: .word 0x6C078965 +_022E165C: .word 0x5D588B65 +_022E1660: .word 0x00269EC3 + arm_func_end Dwci_GetMathRand32 + + arm_func_start Dwci_WStrLen +Dwci_WStrLen: ; 0x022E1664 + ldrh r1, [r0] + mov r2, #0 + cmp r1, #0 + beq _022E1688 +_022E1674: + add r2, r2, #1 + mov r1, r2, lsl #1 + ldrh r1, [r0, r1] + cmp r1, #0 + bne _022E1674 +_022E1688: + mov r0, r2 + bx lr + arm_func_end Dwci_WStrLen + + arm_func_start Dwc_InitFriendsMatch +Dwc_InitFriendsMatch: ; 0x022E1690 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr ip, _022E18F4 ; =ov00_02326DA0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + str r0, [ip] + bl Dwc_ClearError + ldr r0, _022E18F4 ; =ov00_02326DA0 + mov r2, #0 + ldr r1, [r0] + ldr r3, _022E18F8 ; =Dwci_GT2ConnectedCallback + str r2, [r1] + ldr r1, [r0] + ldr r2, _022E18FC ; =Dwci_GT2ReceivedCallback + str r3, [r1, #4] + ldr r1, [r0] + ldr ip, [sp, #0x24] + str r2, [r1, #8] + cmp ip, #0 + ldr r2, [r0] + ldr r3, _022E1900 ; =Dwci_GT2ClosedCallback + ldr r1, _022E1904 ; =Dwci_GT2PingCallback + str r3, [r2, #0xc] + ldr r0, [r0] + ldr r3, [sp, #0x28] + str r1, [r0, #0x10] + ldr r0, _022E18F4 ; =ov00_02326DA0 + moveq ip, #0x2000 + ldr r0, [r0] + cmp r3, #0 + str ip, [r0, #0x14] + moveq r3, #0x2000 + ldr r1, _022E18F4 ; =ov00_02326DA0 + mov r0, #0 + ldr r2, [r1] + ldr ip, _022E1908 ; =ov00_02328A18 + str r3, [r2, #0x18] + ldr r2, [r1] + ldr r3, _022E190C ; =ov00_02328B18 + str r0, [r2, #0x1c] + ldr r2, [r1] + str r6, [r2, #0x20] + ldr r2, [r1] + str r0, [r2, #0x24] + ldr r2, [r1] + str r0, [r2, #0x28] + ldr r2, [r1] + strb r0, [r2, #0x2c] + ldr r2, [r1] + strb r0, [r2, #0x2d] + ldr r2, [r1] + str r0, [r2, #0x64] + ldr r2, [r1] + str ip, [r2, #0x68] + ldr r2, [r1] + str r3, [r2, #0x6c] + ldr r2, [r1] + str r0, [r2, #0x70] + ldr r2, [r1] + str r0, [r2, #0x74] + ldr r2, [r1] + str r0, [r2, #0x78] + ldr r2, [r1] + str r0, [r2, #0x7c] + ldr r2, [r1] + str r0, [r2, #0x80] + ldr r2, [r1] + str r0, [r2, #0x84] + ldr r2, [r1] + str r0, [r2, #0x88] + ldr r2, [r1] + str r0, [r2, #0x8c] + ldr r2, [r1] + str r0, [r2, #0x90] + ldr r1, [r1] + str r0, [r1, #0x94] + bl Dwci_ClearGT2ConnectionList + ldr r0, _022E18F4 ; =ov00_02326DA0 + ldr r1, [r6, #0x24] + ldr r2, [r0] + ldr r0, _022E1910 ; =Dwci_LoginCallback + str r1, [sp] + add r1, r2, #0x2e + str r1, [sp, #4] + mov r1, r6 + mov r3, r5 + str r0, [sp, #8] + mov r5, #0 + add r0, r2, #0x98 + add r2, r2, #0x1c + str r5, [sp, #0xc] + bl Dwci_LoginInit + ldr r0, _022E18F4 ; =ov00_02326DA0 + ldr r2, [sp, #0x30] + ldr r5, [r0] + ldr r3, [sp, #0x2c] + add r0, r5, #0x318 + add r1, r5, #0x1c + str r2, [sp] + add r2, r5, #0x2e + bl Dwci_FriendInit + ldr r0, _022E18F4 ; =ov00_02326DA0 + ldr r1, _022E1908 ; =ov00_02328A18 + ldr r2, [r0] + ldr r0, _022E190C ; =ov00_02328B18 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r2, #0x378 + add r1, r2, #0x1c + add r3, r2, #4 + bl Dwci_MatchInit + ldr r0, _022E18F4 ; =ov00_02326DA0 + ldr r0, [r0] + add r0, r0, #0x3fc + add r0, r0, #0x400 + bl Dwci_InitTransport + mov r0, r4 + bl strlen + cmp r0, #0x100 + movhs r5, #0xff + bhs _022E1894 + mov r0, r4 + bl strlen + mov r5, r0 +_022E1894: + ldr r1, _022E1908 ; =ov00_02328A18 + mov r0, r4 + mov r2, r5 + bl MI_CpuCopy8 + ldr r0, [sp, #0x20] + ldr r1, _022E1908 ; =ov00_02328A18 + mov r2, #0 + strb r2, [r1, r5] + bl strlen + cmp r0, #0x100 + movhs r4, #0xff + bhs _022E18D0 + ldr r0, [sp, #0x20] + bl strlen + mov r4, r0 +_022E18D0: + ldr r0, [sp, #0x20] + ldr r1, _022E190C ; =ov00_02328B18 + mov r2, r4 + bl MI_CpuCopy8 + ldr r0, _022E190C ; =ov00_02328B18 + mov r1, #0 + strb r1, [r0, r4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E18F4: .word ov00_02326DA0 +_022E18F8: .word Dwci_GT2ConnectedCallback +_022E18FC: .word Dwci_GT2ReceivedCallback +_022E1900: .word Dwci_GT2ClosedCallback +_022E1904: .word Dwci_GT2PingCallback +_022E1908: .word ov00_02328A18 +_022E190C: .word ov00_02328B18 +_022E1910: .word Dwci_LoginCallback + arm_func_end Dwc_InitFriendsMatch + + arm_func_start Dwc_ShutdownFriendsMatch +Dwc_ShutdownFriendsMatch: ; 0x022E1914 + stmdb sp!, {r3, lr} + ldr r0, _022E1A80 ; =ov00_02326DA0 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r0, #0x388] + cmp r0, #0 + beq _022E1948 + bl qr2_shutdown + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x388] +_022E1948: + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x390] + ldr r0, [r0] + ldr r0, [r0, #0x45c] + cmp r0, #0 + beq _022E197C + bl ServerBrowserFree + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x45c] +_022E197C: + bl Dwci_NnFreeNegotiateList + bl Dwci_BeginCloseStatsConnection + bl CloseStatsConnection + bl Dwci_EndCloseStatsConnection + ldr r0, _022E1A80 ; =ov00_02326DA0 + ldr ip, [r0] + ldr r0, [ip, #0x1c] + cmp r0, #0 + beq _022E1A38 + mov r1, #0 + mov r2, r1 + mov r3, r1 + add r0, ip, #0x1c + bl GpSetCallback + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #3 + bl GpSetCallback + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #1 + bl GpSetCallback + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r2, #0 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, r2 + bl GpSetCallback + ldr r0, _022E1A80 ; =ov00_02326DA0 + ldr r0, [r0] + add r0, r0, #0x1c + bl GpProcess + ldr r0, _022E1A80 ; =ov00_02326DA0 + ldr r0, [r0] + add r0, r0, #0x1c + bl GpDestroy + mov r1, #0 + ldr r0, _022E1A80 ; =ov00_02326DA0 + ldr r0, [r0] + str r1, [r0, #0x1c] +_022E1A38: + bl Dwci_ShutdownLogin + bl Dwci_ShutdownFriend + bl Dwci_ShutdownMatch + bl Dwci_ShutdownTransport + ldr r0, _022E1A80 ; =ov00_02326DA0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _022E1A70 + bl Gt2CloseSocket + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] +_022E1A70: + ldr r0, _022E1A80 ; =ov00_02326DA0 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E1A80: .word ov00_02326DA0 + arm_func_end Dwc_ShutdownFriendsMatch + + arm_func_start Dwc_ProcessFriendsMatch +Dwc_ProcessFriendsMatch: ; 0x022E1A84 + stmdb sp!, {r3, lr} + bl Dwc_UpdateConnection + cmp r0, #0 + beq _022E1A98 + bl Dwcs_ForceShutdown +_022E1A98: + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x24] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + bl Dwci_IsError + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _022E1C9C +_022E1AD4: ; jump table + b _022E1C9C ; case 0 + b _022E1AF0 ; case 1 + b _022E1C30 ; case 2 + b _022E1C38 ; case 3 + b _022E1C38 ; case 4 + b _022E1C48 ; case 5 + b _022E1C58 ; case 6 +_022E1AF0: + bl GsiAvailableCheckThink + cmp r0, #1 + beq _022E1B10 + cmp r0, #2 + beq _022E1C10 + cmp r0, #3 + beq _022E1C20 + b _022E1C9C +_022E1B10: + ldr r0, _022E1CE4 ; =ov00_02326DA0 + mov r2, #0x10 + ldr r0, [r0] + mov r3, #0xb + ldr r1, [r0, #0xa0] + add r0, r0, #0x1c + bl GpInitialize + bl Dwci_HandleGpError_Common + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E1CE4 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + ldr r2, _022E1CE8 ; =Dwci_GpErrorCallback + mov r3, r1 + add r0, r0, #0x1c + bl GpSetCallback + bl Dwci_HandleGpError_Common + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r2, _022E1CEC ; =Dwci_GpRecvBuddyMessageCallback + ldr r0, [r0] + mov r1, #3 + add r0, r0, #0x1c + mov r3, #0 + bl GpSetCallback + bl Dwci_HandleGpError_Common + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r2, _022E1CF0 ; =Dwci_GpRecvBuddyAuthCallback + ldr r0, [r0] + mov r1, #7 + add r0, r0, #0x1c + mov r3, #0 + bl GpSetCallback + bl Dwci_HandleGpError_Common + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r2, _022E1CF4 ; =Dwci_GpRecvBuddyRequestCallback + ldr r0, [r0] + mov r1, #1 + add r0, r0, #0x1c + mov r3, #0 + bl GpSetCallback + bl Dwci_HandleGpError_Common + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r2, _022E1CF8 ; =Dwci_GpRecvBuddyStatusCallback + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, #0 + bl GpSetCallback + bl Dwci_HandleGpError_Common + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r0, #2 + bl Dwci_SetState + bl Dwci_LoginAsync + b _022E1C9C +_022E1C10: + ldr r1, _022E1CFC ; =0xFFFFB172 + mov r0, #3 + bl Dwci_StopLogin + ldmia sp!, {r3, pc} +_022E1C20: + ldr r1, _022E1D00 ; =0xFFFFB17B + mov r0, #4 + bl Dwci_StopLogin + ldmia sp!, {r3, pc} +_022E1C30: + bl Dwci_LoginProcess + b _022E1C9C +_022E1C38: + bl Dwci_FriendProcess + mov r0, #0 + bl Dwci_MatchProcess + b _022E1C9C +_022E1C48: + mov r0, #1 + bl Dwci_MatchProcess + bl Dwci_FriendProcess + b _022E1C9C +_022E1C58: + bl Dwci_TransportProcess + bl Dwci_FriendProcess + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x38d] + cmp r0, #2 + ldrneb r0, [r1, #0x38d] + cmpne r0, #3 + bne _022E1C88 + mov r0, #1 + bl Dwci_MatchProcess + b _022E1C9C +_022E1C88: + ldr r0, [r1] + cmp r0, #0 + beq _022E1C9C + mov r0, #0 + bl Dwci_MatchProcess +_022E1C9C: + ldr r0, _022E1CE4 ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x390] + cmp r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, [r1, #0x388] + cmp r0, #0 + beq _022E1CD0 + bl qr2_shutdown + ldr r0, _022E1CE4 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x388] +_022E1CD0: + ldr r0, _022E1CE4 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x390] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E1CE4: .word ov00_02326DA0 +_022E1CE8: .word Dwci_GpErrorCallback +_022E1CEC: .word Dwci_GpRecvBuddyMessageCallback +_022E1CF0: .word Dwci_GpRecvBuddyAuthCallback +_022E1CF4: .word Dwci_GpRecvBuddyRequestCallback +_022E1CF8: .word Dwci_GpRecvBuddyStatusCallback +_022E1CFC: .word 0xFFFFB172 +_022E1D00: .word 0xFFFFB17B + arm_func_end Dwc_ProcessFriendsMatch + + arm_func_start Dwc_LoginAsync +Dwc_LoginAsync: ; 0x022E1D04 + stmdb sp!, {r4, r5, r6, lr} + movs r4, r0 + mov r6, r2 + mov r5, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl Dwci_IsError + cmp r0, #0 + bne _022E1D3C + ldr r0, _022E1E04 ; =ov00_02326DA0 + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #0 + beq _022E1D44 +_022E1D3C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022E1D44: + str r6, [r2, #0x70] + ldr r1, [r0] + cmp r4, #0 + str r5, [r1, #0x74] + ldrneh r1, [r4] + cmpne r1, #0 + moveq r5, #0 + beq _022E1DB0 + ldr r1, [r0] + mov r0, #0 + add r1, r1, #0x2e + mov r2, #0x34 + bl MTi_CpuClear16 + mov r0, r4 + bl Dwci_WStrLen + cmp r0, #0x19 + movhi r5, #0x19 + bhi _022E1D98 + mov r0, r4 + bl Dwci_WStrLen + mov r5, r0 +_022E1D98: + ldr r1, _022E1E04 ; =ov00_02326DA0 + mov r0, r4 + ldr r1, [r1] + mov r2, r5, lsl #1 + add r1, r1, #0x2e + bl MTi_CpuCopy16 +_022E1DB0: + ldr r0, _022E1E04 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r5, lsl #1 + strh r1, [r0, #0x2e] + bl Dwc_GetInetStatus + cmp r0, #4 + beq _022E1DE4 + ldr r1, _022E1E08 ; =0xFFFF1596 + mov r0, #2 + bl Dwci_StopLogin + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_022E1DE4: + mov r0, #1 + bl Dwci_SetState + ldr r0, _022E1E04 ; =ov00_02326DA0 + ldr r0, [r0] + ldr r0, [r0, #0x68] + bl ResolveAvailableNintendoWifi + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E1E04: .word ov00_02326DA0 +_022E1E08: .word 0xFFFF1596 + arm_func_end Dwc_LoginAsync + + arm_func_start Dwc_UpdateServersAsync +Dwc_UpdateServersAsync: ; 0x022E1E0C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl Dwci_IsError + cmp r0, #0 + bne _022E1E48 + ldr r0, _022E1EAC ; =ov00_02326DA0 + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #3 + blt _022E1E48 + cmp r1, #4 + bne _022E1E54 +_022E1E48: + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022E1E54: + str r6, [r2, #0x78] + ldr r1, [r0] + mov r0, #4 + str r5, [r1, #0x7c] + bl Dwci_SetState + ldr r0, _022E1EAC ; =ov00_02326DA0 + ldr r1, [sp, #0x20] + ldr r3, [r0] + ldr r0, [sp, #0x24] + str r4, [sp] + str r1, [sp, #4] + ldr r4, [sp, #0x28] + str r0, [sp, #8] + ldr r2, _022E1EB0 ; =Dwci_UpdateServersCallback + add r0, r3, #0xe0 + add r1, r3, #0x1e0 + mov r3, #0 + str r4, [sp, #0xc] + bl Dwci_UpdateServersAsync + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E1EAC: .word ov00_02326DA0 +_022E1EB0: .word Dwci_UpdateServersCallback + arm_func_end Dwc_UpdateServersAsync + + arm_func_start Dwc_CloseConnectionHard +Dwc_CloseConnectionHard: ; 0x022E1EB4 + stmdb sp!, {r4, lr} + ldr r1, _022E1F18 ; =ov00_02326DA0 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _022E1EF0 + bl Dwci_IsError + cmp r0, #0 + bne _022E1EF0 + ldr r0, _022E1F18 ; =ov00_02326DA0 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #5 + cmpne r0, #6 + beq _022E1EF8 +_022E1EF0: + mvn r0, #0 + ldmia sp!, {r4, pc} +_022E1EF8: + mov r0, r4 + bl Dwci_GetGT2Connection + cmp r0, #0 + mvneq r0, #1 + ldmeqia sp!, {r4, pc} + bl Gt2CloseConnectionHard + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E1F18: .word ov00_02326DA0 + arm_func_end Dwc_CloseConnectionHard + + arm_func_start Dwc_GetMyAid +Dwc_GetMyAid: ; 0x022E1F1C + ldr r0, _022E1F34 ; =ov00_02326DA0 + ldr r0, [r0] + cmp r0, #0 + ldrneb r0, [r0, #0x2c] + moveq r0, #0 + bx lr + .align 2, 0 +_022E1F34: .word ov00_02326DA0 + arm_func_end Dwc_GetMyAid + + arm_func_start Dwc_GetAidList +Dwc_GetAidList: ; 0x022E1F38 + stmdb sp!, {r3, lr} + ldr r2, _022E1F84 ; =ov00_02326DA0 + ldr r1, [r2] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + add r1, r1, #0x248 + add r1, r1, #0x400 + str r1, [r0] + ldr r2, [r2] + ldrb r1, [r2, #0x38d] + cmp r1, #2 + ldrneb r1, [r2, #0x38d] + cmpne r1, #3 + bne _022E1F7C + bl Dwci_GetValidAidList + ldmia sp!, {r3, pc} +_022E1F7C: + bl Dwci_GetAllAidList + ldmia sp!, {r3, pc} + .align 2, 0 +_022E1F84: .word ov00_02326DA0 + arm_func_end Dwc_GetAidList + + arm_func_start Dwc_IsValidAid +Dwc_IsValidAid: ; 0x022E1F88 + stmdb sp!, {r3, lr} + ldr r1, _022E1FBC ; =ov00_02326DA0 + ldr r1, [r1] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r2, [r1, #0x668] + mov r1, #1 + tst r2, r1, lsl r0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl Dwci_IsValidAid + ldmia sp!, {r3, pc} + .align 2, 0 +_022E1FBC: .word ov00_02326DA0 + arm_func_end Dwc_IsValidAid + + arm_func_start Dwc_GetState +Dwc_GetState: ; 0x022E1FC0 + ldr r0, _022E1FD8 ; =ov00_02326DA0 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x24] + moveq r0, #0 + bx lr + .align 2, 0 +_022E1FD8: .word ov00_02326DA0 + arm_func_end Dwc_GetState + + arm_func_start Dwci_GT2Startup +Dwci_GT2Startup: ; 0x022E1FDC + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r0, _022E2094 ; =ov00_02326DA0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r3, r4, pc} + mov r0, #0x4000 + bl Dwci_GetMathRand32 + add r0, r0, #0xc000 + mov r1, r0, lsl #0x10 + ldr r3, _022E2094 ; =ov00_02326DA0 + mov r0, #0 + mov r2, r0 + mov r1, r1, lsr #0x10 + ldr r4, [r3] + bl Gt2AddressToString + ldr r1, _022E2098 ; =Dwci_GT2SocketErrorCallback + ldr r2, _022E2094 ; =ov00_02326DA0 + str r1, [sp] + mov r1, r0 + ldr r0, [r2] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl Gt2CreateSocket + mov r4, r0 + bl Dwci_HandleGT2Error + cmp r0, #0 + addne sp, sp, #4 + movne r0, r4 + ldmneia sp!, {r3, r4, pc} + ldr r0, _022E2094 ; =ov00_02326DA0 + ldr r1, _022E209C ; =Dwci_GT2ConnectAttemptCallback + ldr r0, [r0] + ldr r0, [r0] + bl Gt2Listen + ldr r0, _022E2094 ; =ov00_02326DA0 + ldr r1, _022E20A0 ; =Dwci_GT2UnrecognizedMessageCallback + ldr r0, [r0] + ldr r0, [r0] + bl Gt2SetUnrecognizedMessageCallback + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022E2094: .word ov00_02326DA0 +_022E2098: .word Dwci_GT2SocketErrorCallback +_022E209C: .word Dwci_GT2ConnectAttemptCallback +_022E20A0: .word Dwci_GT2UnrecognizedMessageCallback + arm_func_end Dwci_GT2Startup + + arm_func_start Dwci_GetGT2Connection +Dwci_GetGT2Connection: ; 0x022E20A4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022E2100 ; =ov00_02326DA0 + mov r6, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, _022E2104 ; =ov00_02326DA8 + mov r5, #0 +_022E20C8: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _022E20EC + bl Gt2GetConnectionData + ldrb r0, [r0, #1] + cmp r6, r0 + ldreq r0, _022E2104 ; =ov00_02326DA8 + ldreq r0, [r0, r5, lsl #2] + ldmeqia sp!, {r4, r5, r6, pc} +_022E20EC: + add r5, r5, #1 + cmp r5, #0x20 + blt _022E20C8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E2100: .word ov00_02326DA0 +_022E2104: .word ov00_02326DA8 + arm_func_end Dwci_GetGT2Connection + + arm_func_start Dwci_GetConnectionAid +Dwci_GetConnectionAid: ; 0x022E2108 + stmdb sp!, {r3, lr} + bl Gt2GetConnectionData + ldrb r0, [r0, #1] + ldmia sp!, {r3, pc} + arm_func_end Dwci_GetConnectionAid + + arm_func_start Dwci_GetConnectionIndex +Dwci_GetConnectionIndex: ; 0x022E2118 + stmdb sp!, {r3, lr} + bl Gt2GetConnectionData + ldrb r0, [r0] + ldmia sp!, {r3, pc} + arm_func_end Dwci_GetConnectionIndex + + arm_func_start Dwci_GT2GetConnectionListIdx +Dwci_GT2GetConnectionListIdx: ; 0x022E2128 + ldr r2, _022E2150 ; =ov00_02326DA8 + mov r0, #0 +_022E2130: + ldr r1, [r2, r0, lsl #2] + cmp r1, #0 + bxeq lr + add r0, r0, #1 + cmp r0, #0x20 + blt _022E2130 + mvn r0, #0 + bx lr + .align 2, 0 +_022E2150: .word ov00_02326DA8 + arm_func_end Dwci_GT2GetConnectionListIdx + + arm_func_start Dwci_ClearGT2ConnectionList +Dwci_ClearGT2ConnectionList: ; 0x022E2154 + stmdb sp!, {r3, lr} + ldr r1, _022E217C ; =ov00_02326DA8 + mov r0, #0 + mov r2, #0x80 + bl MTi_CpuClear32 + ldr r1, _022E2180 ; =ov00_02326E28 + mov r0, #0 + mov r2, #0x100 + bl MTi_CpuClear32 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E217C: .word ov00_02326DA8 +_022E2180: .word ov00_02326E28 + arm_func_end Dwci_ClearGT2ConnectionList + + arm_func_start Dwci_GetGT2ConnectionByIdx +Dwci_GetGT2ConnectionByIdx: ; 0x022E2184 + ldr r1, _022E2190 ; =ov00_02326DA8 + add r0, r1, r0, lsl #2 + bx lr + .align 2, 0 +_022E2190: .word ov00_02326DA8 + arm_func_end Dwci_GetGT2ConnectionByIdx + + arm_func_start Dwci_GetGT2ConnectionByProfileID +Dwci_GetGT2ConnectionByProfileID: ; 0x022E2194 + stmdb sp!, {r3, lr} + cmp r1, #0 + mov r3, #0 + ble _022E21CC + ldr r2, _022E21F8 ; =ov00_02326DA0 + ldr ip, [r2] +_022E21AC: + add r2, ip, r3, lsl #2 + ldr r2, [r2, #0x46c] + cmp r0, r2 + beq _022E21CC + add r2, r3, #1 + and r3, r2, #0xff + cmp r3, r1 + blt _022E21AC +_022E21CC: + cmp r3, r1 + movge r0, #0 + ldmgeia sp!, {r3, pc} + ldr r0, _022E21F8 ; =ov00_02326DA0 + ldr r0, [r0] + add r0, r0, r3 + ldrb r0, [r0, #0x648] + bl Dwci_GetGT2Connection + bl Dwci_GetConnectionIndex + bl Dwci_GetGT2ConnectionByIdx + ldmia sp!, {r3, pc} + .align 2, 0 +_022E21F8: .word ov00_02326DA0 + arm_func_end Dwci_GetGT2ConnectionByProfileID + + arm_func_start Dwci_GetConnectionInfoByIdx +Dwci_GetConnectionInfoByIdx: ; 0x022E21FC + ldr r1, _022E2208 ; =ov00_02326E28 + add r0, r1, r0, lsl #3 + bx lr + .align 2, 0 +_022E2208: .word ov00_02326E28 + arm_func_end Dwci_GetConnectionInfoByIdx + + arm_func_start Dwci_IsValidAid +Dwci_IsValidAid: ; 0x022E220C + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _022E2250 ; =ov00_02326DA8 + mov r6, r0 + mov r5, #0 +_022E221C: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _022E223C + bl Gt2GetConnectionData + ldrb r0, [r0, #1] + cmp r6, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_022E223C: + add r5, r5, #1 + cmp r5, #0x20 + blt _022E221C + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E2250: .word ov00_02326DA8 + arm_func_end Dwci_IsValidAid + + arm_func_start Dwci_ResetMyAid +Dwci_ResetMyAid: ; 0x022E2254 + ldr r0, _022E2268 ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x2c] + bx lr + .align 2, 0 +_022E2268: .word ov00_02326DA0 + arm_func_end Dwci_ResetMyAid + + arm_func_start Dwcs_ForceShutdown +Dwcs_ForceShutdown: ; 0x022E226C + bx lr + arm_func_end Dwcs_ForceShutdown + + arm_func_start Dwci_SetState +Dwci_SetState: ; 0x022E2270 + ldr r1, _022E228C ; =ov00_02326DA0 + ldr r3, [r1] + ldr r2, [r3, #0x24] + str r2, [r3, #0x28] + ldr r1, [r1] + str r0, [r1, #0x24] + bx lr + .align 2, 0 +_022E228C: .word ov00_02326DA0 + arm_func_end Dwci_SetState + + arm_func_start Dwci_DeleteAid +Dwci_DeleteAid: ; 0x022E2290 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + add r0, sp, #0 + bl Dwci_GetAllAidList + mov r1, r0 + cmp r1, #0 + mov r0, #0 + ble _022E22D4 + ldr r3, [sp] +_022E22B8: + ldrb r2, [r3] + cmp r4, r2 + beq _022E22D4 + add r0, r0, #1 + cmp r0, r1 + add r3, r3, #1 + blt _022E22B8 +_022E22D4: + cmp r0, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + bl Dwci_DeleteHostByIndex + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwci_DeleteAid + + arm_func_start Dwci_HandleGpError_Common +Dwci_HandleGpError_Common: ; 0x022E22F0 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #4 + addls pc, pc, r6, lsl #2 + b _022E234C +_022E230C: ; jump table + b _022E234C ; case 0 + b _022E2320 ; case 1 + b _022E232C ; case 2 + b _022E2338 ; case 3 + b _022E2344 ; case 4 +_022E2320: + mov r5, #9 + sub r4, r5, #0xa + b _022E234C +_022E232C: + mov r5, #9 + sub r4, r5, #0xb + b _022E234C +_022E2338: + mov r5, #6 + sub r4, r5, #0x10 + b _022E234C +_022E2344: + mov r5, #6 + sub r4, r5, #0x1a +_022E234C: + ldr r0, _022E23F8 ; =ov00_02326DA0 + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022E23DC +_022E2364: ; jump table + b _022E23DC ; case 0 + b _022E237C ; case 1 + b _022E2394 ; case 2 + b _022E23DC ; case 3 + b _022E23D0 ; case 4 + b _022E23B8 ; case 5 +_022E237C: + ldr r1, _022E23FC ; =0xFFFF11B8 + mov r0, r5 + add r4, r4, r1 + mov r1, r4 + bl Dwci_StopLogin + b _022E23E4 +_022E2394: + ldr r1, [r1, #0x9c] + ldr r0, _022E23FC ; =0xFFFF11B8 + cmp r1, #1 + add r4, r4, r0 + bge _022E23E4 + mov r0, r5 + mov r1, r4 + bl Dwci_StopLogin + b _022E23E4 +_022E23B8: + ldr r1, _022E2400 ; =0xFFFEC398 + mov r0, r5 + add r4, r4, r1 + mov r1, r4 + bl Dwci_StopMatching + b _022E23E4 +_022E23D0: + ldr r0, _022E2404 ; =0xFFFEEAA8 + add r4, r4, r0 + b _022E23E4 +_022E23DC: + ldr r0, _022E2408 ; =0xFFFE9C88 + add r4, r4, r0 +_022E23E4: + mov r0, r5 + mov r1, r4 + bl Dwci_StopFriendProcess + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E23F8: .word ov00_02326DA0 +_022E23FC: .word 0xFFFF11B8 +_022E2400: .word 0xFFFEC398 +_022E2404: .word 0xFFFEEAA8 +_022E2408: .word 0xFFFE9C88 + arm_func_end Dwci_HandleGpError_Common + + arm_func_start Dwci_HandleGT2Error +Dwci_HandleGT2Error: ; 0x022E240C + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _022E2490 +_022E2428: ; jump table + b _022E2490 ; case 0 + b _022E2448 ; case 1 + b _022E2454 ; case 2 + b _022E2464 ; case 3 + b _022E2470 ; case 4 + b _022E2454 ; case 5 + b _022E247C ; case 6 + b _022E2488 ; case 7 +_022E2448: + mov r0, #9 + sub r2, r0, #0xa + b _022E2490 +_022E2454: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _022E2490 +_022E2464: + mov r0, #6 + sub r2, r0, #0x10 + b _022E2490 +_022E2470: + mov r0, #6 + sub r2, r0, #0x24 + b _022E2490 +_022E247C: + mov r0, #6 + sub r2, r0, #0x4c + b _022E2490 +_022E2488: + mov r0, #6 + sub r2, r0, #0x56 +_022E2490: + cmp r0, #0 + beq _022E24A4 + ldr r1, _022E24AC ; =0xFFFEFA48 + add r1, r2, r1 + bl Dwci_StopLogin +_022E24A4: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E24AC: .word 0xFFFEFA48 + arm_func_end Dwci_HandleGT2Error + + arm_func_start Dwci_LoginCallback +Dwci_LoginCallback: ; 0x022E24B0 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + mov r4, r1 + bne _022E24DC + ldr r1, _022E250C ; =ov00_02326DA0 + mov r0, #3 + ldr r1, [r1] + str r4, [r1, #0x64] + bl Dwci_SetState + bl Dwci_InitGpProcessCount + b _022E24E4 +_022E24DC: + mov r0, #0 + bl Dwci_SetState +_022E24E4: + ldr r0, _022E250C ; =ov00_02326DA0 + ldr r0, [r0] + ldr r3, [r0, #0x70] + cmp r3, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r0, #0x74] + mov r0, r5 + mov r1, r4 + blx r3 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E250C: .word ov00_02326DA0 + arm_func_end Dwci_LoginCallback + + arm_func_start Dwci_UpdateServersCallback +Dwci_UpdateServersCallback: ; 0x022E2510 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _022E2554 ; =ov00_02326DA0 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + ldr r0, [r0, #0x28] + cmp r0, #4 + beq _022E2534 + bl Dwci_SetState +_022E2534: + ldr r1, _022E2554 ; =ov00_02326DA0 + mov r0, r5 + ldr r3, [r1] + mov r1, r4 + ldr r2, [r3, #0x7c] + ldr r3, [r3, #0x78] + blx r3 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E2554: .word ov00_02326DA0 + arm_func_end Dwci_UpdateServersCallback + + arm_func_start Dwci_GpErrorCallback +Dwci_GpErrorCallback: ; 0x022E2558 + stmdb sp!, {r3, lr} + ldr r1, [r1, #4] + ldr r0, _022E2588 ; =0x00000603 + cmp r1, r0 + ldrne r0, _022E258C ; =0x00000901 + cmpne r1, r0 + addne r0, r0, #0x200 + cmpne r1, r0 + ldmeqia sp!, {r3, pc} + mov r0, #3 + bl Dwci_HandleGpError_Common + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2588: .word 0x00000603 +_022E258C: .word 0x00000901 + arm_func_end Dwci_GpErrorCallback + + arm_func_start Dwci_GpRecvBuddyMessageCallback +Dwci_GpRecvBuddyMessageCallback: ; 0x022E2590 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + add r3, sp, #0 + mov r2, #0 + mov r6, r0 + mov r5, r1 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + strb r2, [r3, #8] + strb r2, [r3, #9] + strb r2, [r3, #0xa] + strb r2, [r3, #0xb] + ldr r0, _022E26DC ; =ov00_0231A194 + ldr r4, [r5, #8] + bl strlen + mov r2, r0 + ldr r1, _022E26DC ; =ov00_0231A194 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022E26DC ; =ov00_0231A194 + bl strlen + add r4, r4, r0 + mov r0, r4 + mov r1, #0x76 + bl strchr + sub r7, r0, r4 + add r0, sp, #0 + mov r1, r4 + mov r2, r7 + bl strncpy + cmp r7, #0xa + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022E26E0 ; =ov00_0231A19C + add r1, r7, #1 + add r4, r4, r1 + bl strlen + mov r2, r0 + ldr r1, _022E26E0 ; =ov00_0231A19C + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022E26E4 ; =ov00_02326DA0 + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + beq _022E26B8 + cmp r0, #6 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r0, [r1, #0x38d] + cmp r0, #2 + ldrneb r0, [r1, #0x38d] + cmpne r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} +_022E26B8: + ldr r0, _022E26E0 ; =ov00_0231A19C + bl strlen + mov r2, r0 + ldr r1, [r5] + mov r0, r6 + add r2, r4, r2 + bl Dwci_MatchGpRecvBuddyMsgCallback + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022E26DC: .word ov00_0231A194 +_022E26E0: .word ov00_0231A19C +_022E26E4: .word ov00_02326DA0 + arm_func_end Dwci_GpRecvBuddyMessageCallback + + arm_func_start Dwci_GT2ReceivedCallback +Dwci_GT2ReceivedCallback: ; 0x022E26E8 + ldr ip, _022E26F0 ; =Dwci_RecvCallback + bx ip + .align 2, 0 +_022E26F0: .word Dwci_RecvCallback + arm_func_end Dwci_GT2ReceivedCallback + + arm_func_start Dwci_GT2ClosedCallback +Dwci_GT2ClosedCallback: ; 0x022E26F4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r5, #0 + mov fp, r0 + mov sb, r1 + mov sl, r5 + bl Dwci_IsShutdownMatch + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sb, #4 + addls pc, pc, sb, lsl #2 + b _022E2758 +_022E2728: ; jump table + b _022E273C ; case 0 + b _022E273C ; case 1 + b _022E2744 ; case 2 + b _022E2744 ; case 3 + b _022E2750 ; case 4 +_022E273C: + mov r8, r5 + b _022E2758 +_022E2744: + mov r8, #6 + ldr r6, _022E2A44 ; =0xFFFFE250 + b _022E2758 +_022E2750: + ldr r6, _022E2A48 ; =0xFFFFE24F + mov r8, #9 +_022E2758: + cmp r8, #0 + bne _022E2814 + mov r0, fp + bl Gt2GetConnectionData + movs r5, r0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldrb r4, [r5, #1] + ldr r0, [r0] + mov r7, #1 + ldr r0, [r0, #0x668] + tst r0, r7, lsl r4 + mov r0, r4 + moveq r7, #0 + bl Dwci_ClearTransConnection + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x38d] + cmp r0, #2 + cmpeq sb, #0 + beq _022E27C0 + ldrb r0, [r1, #0x38d] + cmp r0, #3 + cmpeq r4, #0 + bne _022E27C4 +_022E27C0: + mov sl, #1 +_022E27C4: + mov r0, r4 + bl Dwci_DeleteAid + ldr r1, _022E2A4C ; =ov00_02326DA0 + ldrb r5, [r5] + ldr r3, _022E2A50 ; =ov00_02326DA8 + mov fp, #0 + str fp, [r3, r5, lsl #2] + ldr r2, [r1] + mov r5, r0 + ldrb r1, [r2, #0x385] + cmp r1, #0 + subne r0, r1, #1 + strneb r0, [r2, #0x385] + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x38c] + cmp r0, #0 + ldrneb r0, [r1, #0x38c] + subne r0, r0, #1 + strneb r0, [r1, #0x38c] +_022E2814: + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + ldreq r0, [r1, #0x24] + cmpeq r0, #6 + cmpeq r7, #0 + bne _022E285C + ldrb r0, [r1, #0x38d] + cmp r0, #2 + cmpeq r8, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl Dwci_GpSetServerStatus + mov r0, r5 + bl Dwci_ProcessMatchScClosing + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E285C: + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl Dwci_ProcessMatchClosing + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r8, #0 + beq _022E2898 + ldr r1, _022E2A54 ; =0xFFFEC780 + mov r0, r8 + add r1, r6, r1 + bl Dwci_SetError + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E2898: + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _022E2908 + ldrb r0, [r1, #0x38d] + cmp r0, #2 + ldrneb r0, [r1, #0x38d] + cmpne r0, #3 + bne _022E2908 + ldr r2, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r2] + ldrb r0, [r1, #0x385] + add r6, r0, #2 + add r3, r1, r6, lsl #2 + ldr r3, [r3, #0x46c] + cmp r3, #0 + beq _022E2908 + add r3, r1, r6 + ldrb r3, [r3, #0x648] + add r0, r0, #1 + add r0, r1, r0 + strb r3, [r0, #0x648] + ldr r0, [r2] + ldrb r1, [r0, #0x385] + add r0, r1, #1 + add r1, r1, #3 + bl Dwci_DeleteHostByIndex +_022E2908: + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x38d] + cmp r0, #2 + bne _022E2950 + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _022E2930 + bl Dwci_GpSetServerStatus + b _022E296C +_022E2930: + ldrb r0, [r1, #0x385] + cmp r0, #0 + bne _022E296C + ldr r1, _022E2A58 ; =ov00_0231A190 + mov r0, #1 + mov r2, #0 + bl Dwci_SetGpStatus + b _022E296C +_022E2950: + ldrb r0, [r1, #0x385] + cmp r0, #0 + bne _022E296C + ldr r1, _022E2A58 ; =ov00_0231A190 + mov r0, #1 + mov r2, #0 + bl Dwci_SetGpStatus +_022E296C: + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x38d] + cmp r0, #0 + ldrneb r0, [r1, #0x38d] + cmpne r0, #1 + bne _022E29A4 + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r2, [r0] + ldrb r1, [r2, #0x38c] + strb r1, [r2, #0x38e] + ldr r0, [r0] + ldr r0, [r0, #0x388] + bl qr2_send_statechanged +_022E29A4: + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r6, [r0] + ldr r0, [r6, #0x90] + cmp r0, #0 + cmpne r7, #0 + beq _022E29FC + cmp sb, #0 + moveq r7, #1 + mov r0, r5 + movne r7, #0 + bl Dwci_GetFriendListIndex + str r0, [sp] + ldr r1, [r6, #0x94] + ldr r0, _022E2A4C ; =ov00_02326DA0 + str r1, [sp, #4] + ldr r1, [r0] + mov r0, r8 + ldr r5, [r1, #0x90] + mov r1, r7 + mov r2, sl + mov r3, r4 + blx r5 +_022E29FC: + ldr r0, _022E2A4C ; =ov00_02326DA0 + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + ldreqb r0, [r1, #0x38d] + cmpeq r0, #2 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r1, #0x385] + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl Dwci_NnFreeNegotiateList + bl Dwci_ClearQR2Key + mov r0, #3 + bl Dwci_SetState + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E2A44: .word 0xFFFFE250 +_022E2A48: .word 0xFFFFE24F +_022E2A4C: .word ov00_02326DA0 +_022E2A50: .word ov00_02326DA8 +_022E2A54: .word 0xFFFEC780 +_022E2A58: .word ov00_0231A190 + arm_func_end Dwci_GT2ClosedCallback + + arm_func_start Dwci_GT2PingCallback +Dwci_GT2PingCallback: ; 0x022E2A5C + ldr ip, _022E2A64 ; =Dwci_PingCallback + bx ip + .align 2, 0 +_022E2A64: .word Dwci_PingCallback + arm_func_end Dwci_GT2PingCallback + + arm_func_start Dwci_GT2SocketErrorCallback +Dwci_GT2SocketErrorCallback: ; 0x022E2A68 + stmdb sp!, {r3, lr} + bl Gt2GetSocketSocket + bl GoaGetLastError + ldr r2, _022E2A9C ; =ov00_02326DA0 + ldr r1, _022E2AA0 ; =0xFFFE8515 + str r0, [r2, #4] + mov r0, #9 + bl Dwci_SetError + ldr r0, _022E2A9C ; =ov00_02326DA0 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2A9C: .word ov00_02326DA0 +_022E2AA0: .word 0xFFFE8515 + arm_func_end Dwci_GT2SocketErrorCallback + + arm_func_start Dwci_LoginInit +Dwci_LoginInit: ; 0x022E2AA4 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _022E2B24 ; =ov00_02326F28 + mov r6, r1 + mov r5, r2 + mov r1, #0 + mov r2, #0x280 + mov r4, r3 + str r0, [ip, #4] + bl MI_CpuFill8 + ldr r0, _022E2B24 ; =ov00_02326F28 + mov r2, #0 + ldr r1, [r0, #4] + ldr ip, [sp, #0x10] + str r5, [r1] + ldr r1, [r0, #4] + ldr r5, [sp, #0x14] + str r2, [r1, #4] + ldr r1, [r0, #4] + ldr r3, [sp, #0x18] + str r4, [r1, #8] + ldr r1, [r0, #4] + ldr r2, [sp, #0x1c] + str ip, [r1, #0xc] + ldr r1, [r0, #4] + str r5, [r1, #0x10] + ldr r1, [r0, #4] + str r3, [r1, #0x14] + ldr r1, [r0, #4] + str r2, [r1, #0x18] + ldr r0, [r0, #4] + str r6, [r0, #0x1c] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E2B24: .word ov00_02326F28 + arm_func_end Dwci_LoginInit + + arm_func_start Dwci_LoginAsync +Dwci_LoginAsync: ; 0x022E2B28 + stmdb sp!, {r3, lr} + ldr r0, _022E2B58 ; =Dwci_RemoteAuthCallback + mov r1, #0 + bl Dwci_RemoteLogin + ldr r0, _022E2B5C ; =ov00_02326F28 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0, #4] + str r1, [r0, #0x30] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2B58: .word Dwci_RemoteAuthCallback +_022E2B5C: .word ov00_02326F28 + arm_func_end Dwci_LoginAsync + + arm_func_start Dwci_LoginProcess +Dwci_LoginProcess: ; 0x022E2B60 + stmdb sp!, {r3, lr} + ldr r0, _022E2C48 ; =ov00_02326F28 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl Dwci_IsError + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _022E2C48 ; =ov00_02326F28 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_022E2B98: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _022E2BB0 ; case 1 + b _022E2BB8 ; case 2 + b _022E2BB8 ; case 3 + b _022E2BB8 ; case 4 + ldmia sp!, {r3, pc} ; case 5 +_022E2BB0: + bl Dwci_RemoteLoginProcess + ldmia sp!, {r3, pc} +_022E2BB8: + ldr r0, [r1] + cmp r0, #0 + ldrne r1, [r0] + cmpne r1, #0 + beq _022E2BD0 + bl GpProcess +_022E2BD0: + ldr r0, _022E2C48 ; =ov00_02326F28 + ldr r0, [r0, #4] + ldr r0, [r0, #0x30] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl OS_GetTick + ldr r3, _022E2C48 ; =ov00_02326F28 + ldr r2, _022E2C4C ; =0x000082EA + ldr ip, [r3, #4] + mov r3, #0 + ldr lr, [ip, #0x34] + ldr ip, [ip, #0x38] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _022E2C50 ; =0x0000EA60 + cmp r1, #0 + cmpeq r0, r2 + ldmlsia sp!, {r3, pc} + ldr r1, _022E2C54 ; =0xFFFF1172 + mov r0, #6 + bl Dwci_StopLogin + ldr r0, _022E2C48 ; =ov00_02326F28 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x30] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2C48: .word ov00_02326F28 +_022E2C4C: .word 0x000082EA +_022E2C50: .word 0x0000EA60 +_022E2C54: .word 0xFFFF1172 + arm_func_end Dwci_LoginProcess + + arm_func_start Dwci_GetUserData +Dwci_GetUserData: ; 0x022E2C58 + ldr r0, _022E2C70 ; =ov00_02326F28 + ldr r0, [r0, #4] + cmp r0, #0 + ldrne r0, [r0, #0x1c] + moveq r0, #0 + bx lr + .align 2, 0 +_022E2C70: .word ov00_02326F28 + arm_func_end Dwci_GetUserData + + arm_func_start Dwci_StopLogin +Dwci_StopLogin: ; 0x022E2C74 + stmdb sp!, {r4, lr} + ldr r2, _022E2CC0 ; =ov00_02326F28 + mov r4, r0 + ldr r2, [r2, #4] + cmp r2, #0 + cmpne r4, #0 + ldmeqia sp!, {r4, pc} + bl Dwci_SetError + ldr r0, _022E2CC0 ; =ov00_02326F28 + ldr r0, [r0, #4] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _022E2CB8 + ldr r2, [r0, #0x18] + mov r0, r4 + mov r1, #0 + blx r3 +_022E2CB8: + bl Dwci_CloseLogin + ldmia sp!, {r4, pc} + .align 2, 0 +_022E2CC0: .word ov00_02326F28 + arm_func_end Dwci_StopLogin + + arm_func_start Dwci_ShutdownLogin +Dwci_ShutdownLogin: ; 0x022E2CC4 + stmdb sp!, {r3, lr} + ldr r0, _022E2D1C ; =ov00_02326F28 + ldr r0, [r0, #4] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _022E2D0C + bl Dwc_Auth_Abort + bl Dwc_Auth_Destroy + ldr r1, _022E2D1C ; =ov00_02326F28 + mov r0, #0 + ldr r1, [r1, #4] + mov r2, r0 + ldr r1, [r1, #0x24] + bl Dwc_Free + ldr r0, _022E2D1C ; =ov00_02326F28 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x24] +_022E2D0C: + ldr r0, _022E2D1C ; =ov00_02326F28 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2D1C: .word ov00_02326F28 + arm_func_end Dwci_ShutdownLogin + + arm_func_start Dwci_CloseLogin +Dwci_CloseLogin: ; 0x022E2D20 + ldr r0, _022E2D44 ; =ov00_02326F28 + ldr r2, [r0, #4] + cmp r2, #0 + bxeq lr + mov r1, #0 + str r1, [r2, #4] + ldr r0, [r0, #4] + str r1, [r0, #0x30] + bx lr + .align 2, 0 +_022E2D44: .word ov00_02326F28 + arm_func_end Dwci_CloseLogin + + arm_func_start Dwci_HandleGpError_Login +Dwci_HandleGpError_Login: ; 0x022E2D48 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _022E2DA4 +_022E2D64: ; jump table + b _022E2DA4 ; case 0 + b _022E2D78 ; case 1 + b _022E2D84 ; case 2 + b _022E2D90 ; case 3 + b _022E2D9C ; case 4 +_022E2D78: + mov r0, #9 + sub r2, r0, #0xa + b _022E2DA4 +_022E2D84: + mov r0, #9 + sub r2, r0, #0xb + b _022E2DA4 +_022E2D90: + mov r0, #6 + sub r2, r0, #0x10 + b _022E2DA4 +_022E2D9C: + mov r0, #6 + sub r2, r0, #0x1a +_022E2DA4: + ldr r1, _022E2DB8 ; =0xFFFF11B8 + add r1, r2, r1 + bl Dwci_StopLogin + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E2DB8: .word 0xFFFF11B8 + arm_func_end Dwci_HandleGpError_Login + + arm_func_start Dwci_GpConnectCallback +Dwci_GpConnectCallback: ; 0x022E2DBC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldr r2, _022E2EE4 ; =ov00_02326F28 + mov lr, #0 + ldr r3, [r2, #4] + mov r4, r1 + str lr, [r3, #0x30] + mov r7, r0 + ldr r0, [r4] + cmp r0, #0 + bne _022E2ED8 + ldr ip, [r2, #4] + mov r6, r4 + add r5, ip, #0x260 + ldmia r6!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + ldmia r6, {r0, r1, r2, r3} + stmia r5, {r0, r1, r2, r3} + ldr r0, [ip, #4] + cmp r0, #2 + bne _022E2EA0 + ldr r1, [ip, #0x1c] + ldr r0, [r4, #4] + ldr r1, [r1, #0x1c] + cmp r1, r0 + bne _022E2E8C + ldr r1, _022E2EE8 ; =ov00_0231A1A0 + mov r3, #5 + mov r2, lr + mov r0, #1 + str r3, [ip, #4] + bl Dwci_SetGpStatus + bl Dwci_HandleGpError_Login + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _022E2EE4 ; =ov00_02326F28 + ldr r1, [r4, #4] + ldr r3, [r0, #4] + mov r0, #0 + ldr r2, [r3, #0x18] + ldr r3, [r3, #0x14] + blx r3 + bl Dwci_GT2Startup + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #4] + bl Dwci_QR2Startup + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E2E8C: + ldr r1, _022E2EEC ; =0xFFFF15A0 + mov r0, #6 + bl Dwci_StopLogin + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E2EA0: + cmp r0, #3 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, _022E2EF0 ; =Dwci_GpGetInfoCallback + mov r0, r7 + stmia sp, {r1, lr} + ldr r1, [r4, #4] + mov r2, lr + mov r3, lr + bl GpGetInfo + bl Dwci_HandleGpError_Login + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E2ED8: + bl Dwci_HandleGpError_Login + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E2EE4: .word ov00_02326F28 +_022E2EE8: .word ov00_0231A1A0 +_022E2EEC: .word 0xFFFF15A0 +_022E2EF0: .word Dwci_GpGetInfoCallback + arm_func_end Dwci_GpConnectCallback + + arm_func_start Dwci_RemoteAuthCallback +Dwci_RemoteAuthCallback: ; 0x022E2EF4 + ldr ip, _022E2F04 ; =Dwci_GpConnect + ldr r2, _022E2F08 ; =Dwci_GpConnectCallback + mov r3, #2 + bx ip + .align 2, 0 +_022E2F04: .word Dwci_GpConnect +_022E2F08: .word Dwci_GpConnectCallback + arm_func_end Dwci_RemoteAuthCallback + + arm_func_start Dwci_GpConnect +Dwci_GpConnect: ; 0x022E2F0C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + ldr r4, _022E2FA4 ; =ov00_02326F28 + mov r6, r1 + ldr r4, [r4, #4] + mov r1, r0 + add r0, r4, #0x48 + mov r5, r2 + mov r4, r3 + bl strcpy + ldr r0, _022E2FA4 ; =ov00_02326F28 + mov r1, r6 + ldr r0, [r0, #4] + add r0, r0, #0x148 + bl strcpy + ldr r0, _022E2FA4 ; =ov00_02326F28 + ldr r6, [r0, #4] + bl OS_GetTick + str r0, [r6, #0x34] + str r1, [r6, #0x38] + mov r3, #1 + ldr r0, _022E2FA4 ; =ov00_02326F28 + str r3, [r6, #0x30] + ldr r2, [r0, #4] + mov r1, #0 + stmia sp, {r1, r5} + str r1, [sp, #8] + ldr r0, [r2] + add r1, r2, #0x48 + add r2, r2, #0x148 + bl GpConnectPreAuthenticatedA + bl Dwci_HandleGpError_Login + cmp r0, #0 + ldreq r0, _022E2FA4 ; =ov00_02326F28 + ldreq r0, [r0, #4] + streq r4, [r0, #4] + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022E2FA4: .word ov00_02326F28 + arm_func_end Dwci_GpConnect + + arm_func_start Dwci_RemoteLogin +Dwci_RemoteLogin: ; 0x022E2FA8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x48 + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _022E3158 ; =ov00_02326F28 + str r5, [r0, #8] + str r4, [r0] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl Dwci_Acc_IsAuthentic + cmp r0, #0 + beq _022E3008 + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r1, [r0, #4] + ldr r0, [r1, #0x1c] + add r2, r1, #0x248 + ldr r1, [r0, #0x24] + add r0, r0, #0x10 + bl Dwci_Acc_LoginIdToUserName + b _022E30BC +_022E3008: + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r0, [r0, #4] + add r0, r0, #0x3c + bl Dwci_Acc_IsValidLoginId + cmp r0, #0 + bne _022E3070 + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + add r0, r0, #4 + bl Dwci_Acc_CheckConsoleUserId + cmp r0, #0 + beq _022E305C + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r1, [r0, #4] + ldr r0, [r1, #0x1c] + add r3, r1, #0x3c + add r0, r0, #4 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + b _022E30A4 +_022E305C: + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r0, [r0, #4] + add r0, r0, #0x3c + bl Dwci_Acc_CreateTempLoginId + b _022E30A4 +_022E3070: + bl OS_GetTick + ldr r2, _022E315C ; =0x6C078965 + ldr r3, _022E3160 ; =0x5D588B65 + umull ip, r4, r0, r2 + mla r4, r0, r3, r4 + ldr r3, _022E3158 ; =ov00_02326F28 + ldr r0, _022E3164 ; =0x00269EC3 + mla r4, r1, r2, r4 + adds r0, ip, r0 + ldr r3, [r3, #4] + adc r1, r4, #0 + add r0, r3, #0x3c + bl Dwci_Acc_SetPlayerId +_022E30A4: + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r2, [r0, #4] + ldr r1, [r2, #0xc] + add r0, r2, #0x3c + add r2, r2, #0x248 + bl Dwci_Acc_LoginIdToUserName +_022E30BC: + ldr r0, _022E3158 ; =ov00_02326F28 + ldr r0, [r0, #4] + ldr r0, [r0, #0x10] + bl Dwci_WStrLen + ldr r1, _022E3158 ; =ov00_02326F28 + mov r2, r0, lsl #1 + ldr r1, [r1, #4] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0 + bl MI_CpuCopy8 + ldr r1, _022E3158 ; =ov00_02326F28 + add r0, sp, #0x34 + ldr r1, [r1, #4] + add r1, r1, #0x51 + add r1, r1, #0x200 + bl strcpy + ldr r4, _022E3168 ; =Dwc_Alloc + ldr r3, _022E316C ; =Dwc_Free + ldr r1, _022E3170 ; =0x00001C14 + mov r0, #0 + mov r2, #4 + str r4, [sp, #0x40] + str r3, [sp, #0x44] + bl Dwc_AllocEx + ldr r1, _022E3158 ; =ov00_02326F28 + mov r4, r0 + ldr r0, [r1, #4] + str r4, [r0, #0x24] + bl OS_GetTick + ldr r2, _022E3158 ; =ov00_02326F28 + ldr r2, [r2, #4] + str r0, [r2, #0x28] + str r1, [r2, #0x2c] + mov r1, r4 + add r0, sp, #0 + bl Dwc_Auth_Create + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E3158: .word ov00_02326F28 +_022E315C: .word 0x6C078965 +_022E3160: .word 0x5D588B65 +_022E3164: .word 0x00269EC3 +_022E3168: .word Dwc_Alloc +_022E316C: .word Dwc_Free +_022E3170: .word 0x00001C14 + arm_func_end Dwci_RemoteLogin + + arm_func_start Dwci_RemoteLoginProcess +Dwci_RemoteLoginProcess: ; 0x022E3174 + stmdb sp!, {r3, lr} + sub sp, sp, #0x3d0 + bl Dwc_Auth_GetError + cmp r0, #0x15 + bne _022E3244 + add r0, sp, #0x20c + bl Dwc_Auth_GetResult + ldr r0, _022E3364 ; =ov00_02326F28 + add r1, sp, #0x200 + ldr r0, [r0, #4] + add r1, r1, #0x56 + add r0, r0, #0x48 + bl strcpy + ldr r0, _022E3364 ; =ov00_02326F28 + add r1, sp, #0x300 + ldr r0, [r0, #4] + add r1, r1, #0x83 + add r0, r0, #0x148 + bl strcpy + bl Dwc_Auth_Destroy + ldr r1, _022E3364 ; =ov00_02326F28 + mov r0, #0 + ldr r1, [r1, #4] + mov r2, r0 + ldr r1, [r1, #0x24] + bl Dwc_Free + ldr r0, _022E3364 ; =ov00_02326F28 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #0x24] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl Dwci_Acc_IsAuthentic + cmp r0, #0 + beq _022E3220 + ldr r0, _022E3364 ; =ov00_02326F28 + ldr r2, [r0] + ldmib r0, {r1, r3} + add r0, r1, #0x48 + add r1, r1, #0x148 + blx r3 + add sp, sp, #0x3d0 + ldmia sp!, {r3, pc} +_022E3220: + ldr r0, _022E3364 ; =ov00_02326F28 + ldr r2, _022E3368 ; =Dwci_GpConnectCallback + ldr r1, [r0, #4] + mov r3, #3 + add r0, r1, #0x48 + add r1, r1, #0x148 + bl Dwci_GpConnect + add sp, sp, #0x3d0 + ldmia sp!, {r3, pc} +_022E3244: + bl Dwc_Auth_GetError + cmp r0, #0 + addeq sp, sp, #0x3d0 + ldmeqia sp!, {r3, pc} + bl OS_GetTick + ldr r3, _022E3364 ; =ov00_02326F28 + ldr r2, _022E336C ; =0x000082EA + ldr ip, [r3, #4] + mov r3, #0 + ldr lr, [ip, #0x28] + ldr ip, [ip, #0x2c] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _022E3370 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _022E32E0 + add r0, sp, #0x48 + bl Dwc_Auth_GetResult + bl Dwc_Auth_Destroy + ldr r1, _022E3364 ; =ov00_02326F28 + mov r0, #0 + ldr r1, [r1, #4] + mov r2, r0 + ldr r1, [r1, #0x24] + bl Dwc_Free + ldr r0, _022E3364 ; =ov00_02326F28 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #2 + str r2, [r1, #0x24] + ldr r1, [sp, #0x48] + bl Dwci_StopLogin + add sp, sp, #0x3d0 + ldmia sp!, {r3, pc} +_022E32E0: + bl Dwc_Auth_Destroy + add r0, sp, #0 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _022E3364 ; =ov00_02326F28 + ldr r0, [r0, #4] + ldr r0, [r0, #0x10] + bl Dwci_WStrLen + ldr r1, _022E3364 ; =ov00_02326F28 + mov r2, r0, lsl #1 + ldr r1, [r1, #4] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0 + bl MI_CpuCopy8 + ldr r1, _022E3364 ; =ov00_02326F28 + add r0, sp, #0x34 + ldr r1, [r1, #4] + add r1, r1, #0x51 + add r1, r1, #0x200 + bl strcpy + ldr r2, _022E3374 ; =Dwc_Alloc + ldr r0, _022E3364 ; =ov00_02326F28 + str r2, [sp, #0x40] + ldr r2, _022E3378 ; =Dwc_Free + ldr r1, [r0, #4] + str r2, [sp, #0x44] + ldr r1, [r1, #0x24] + add r0, sp, #0 + bl Dwc_Auth_Create + add sp, sp, #0x3d0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E3364: .word ov00_02326F28 +_022E3368: .word Dwci_GpConnectCallback +_022E336C: .word 0x000082EA +_022E3370: .word 0x00002710 +_022E3374: .word Dwc_Alloc +_022E3378: .word Dwc_Free + arm_func_end Dwci_RemoteLoginProcess + + arm_func_start Dwci_GpGetInfoCallback +Dwci_GpGetInfoCallback: ; 0x022E337C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x48 + mov r4, r1 + ldr r1, [r4] + mov r5, r0 + cmp r1, #0 + addne sp, sp, #0x48 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, _022E3510 ; =ov00_02326F28 + ldr r2, [r1, #4] + ldr r1, [r2, #4] + cmp r1, #3 + bne _022E3454 + ldrsb r1, [r4, #0x8e] + cmp r1, #0 + bne _022E342C + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #0x32 + add r0, r0, #4 + bl Dwci_Acc_LoginIdToUserName + ldr r1, _022E3514 ; =0x00000705 + add r2, sp, #0x32 + mov r0, r5 + bl GpGetInfoNoWait + bl Dwci_HandleGpError_Login + cmp r0, #0 + addne sp, sp, #0x48 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022E3510 ; =ov00_02326F28 + mov r3, #4 + ldr r1, [r0, #4] + ldr r0, _022E3518 ; =Dwci_GpGetInfoCallback + mov r2, #0 + str r3, [r1, #4] + stmia sp, {r0, r2} + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl GpGetInfo + bl Dwci_HandleGpError_Login + add sp, sp, #0x48 + cmp r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E342C: + bl GpDisconnect + ldr r0, _022E351C ; =Dwci_RemoteAuthCallback + mov r1, #0 + bl Dwci_RemoteLogin + ldr r0, _022E3510 ; =ov00_02326F28 + mov r1, #1 + ldr r0, [r0, #4] + add sp, sp, #0x48 + str r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} +_022E3454: + cmp r1, #4 + addne sp, sp, #0x48 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #0x1d + add r0, r0, #4 + bl Dwci_Acc_LoginIdToUserName + add r1, sp, #0x1d + add r0, r4, #0x8e + bl strcmp + cmp r0, #0 + bne _022E34E4 + ldr r0, _022E3510 ; =ov00_02326F28 + add r2, sp, #8 + ldr r0, [r0, #4] + ldr r1, [r0, #0xc] + add r0, r0, #0x3c + bl Dwci_Acc_LoginIdToUserName + ldr r0, _022E3510 ; =ov00_02326F28 + ldr r2, [r4, #4] + ldr r1, [r0, #4] + ldr r0, [r1, #0x1c] + add r1, r1, #0x3c + bl Dwci_Acc_SetLoginIdToUserData + ldr r1, _022E3510 ; =ov00_02326F28 + mov r3, #2 + ldr r2, [r1, #4] + mov r0, r5 + str r3, [r2, #4] + ldr r1, [r1, #4] + mov r2, #0 + add r1, r1, #0x260 + bl Dwci_GpConnectCallback + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022E34E4: + ldr r0, _022E3518 ; =Dwci_GpGetInfoCallback + mov r2, #0 + stmia sp, {r0, r2} + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl GpGetInfo + bl Dwci_HandleGpError_Login + cmp r0, #0 + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E3510: .word ov00_02326F28 +_022E3514: .word 0x00000705 +_022E3518: .word Dwci_GpGetInfoCallback +_022E351C: .word Dwci_RemoteAuthCallback + arm_func_end Dwci_GpGetInfoCallback + + arm_func_start Dwci_CheckLogin +Dwci_CheckLogin: ; 0x022E3520 + ldr r0, _022E3548 ; =ov00_02326F28 + ldr r0, [r0, #4] + cmp r0, #0 + beq _022E3540 + ldr r0, [r0, #4] + cmp r0, #5 + moveq r0, #1 + bxeq lr +_022E3540: + mov r0, #0 + bx lr + .align 2, 0 +_022E3548: .word ov00_02326F28 + arm_func_end Dwci_CheckLogin + + arm_func_start Dwc_GetFriendStatus +Dwc_GetFriendStatus: ; 0x022E354C + ldr ip, _022E3560 ; =Dwc_GetFriendStatusSC + mov r3, r1 + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_022E3560: .word Dwc_GetFriendStatusSC + arm_func_end Dwc_GetFriendStatus + + arm_func_start Dwc_GetFriendStatusSC +Dwc_GetFriendStatusSC: ; 0x022E3564 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x218 + mov r6, r1 + add r1, sp, #4 + mov r4, r2 + mov r5, r3 + bl Dwci_GetFriendBuddyStatus + cmp r0, #0 + beq _022E3654 + ldr r0, [sp, #8] + cmp r0, #6 + bne _022E3618 + cmp r6, #0 + beq _022E35D4 + ldr r0, _022E3678 ; =ov00_0231A1A4 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl Dwc_GetCommonValueString + cmp r0, #0 + movle r0, #0 + strleb r0, [r6] + ble _022E35D4 + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + strb r0, [r6] +_022E35D4: + cmp r4, #0 + beq _022E3630 + ldr r0, _022E367C ; =ov00_0231A1A8 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl Dwc_GetCommonValueString + cmp r0, #0 + movle r0, #0 + strleb r0, [r4] + ble _022E3630 + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + strb r0, [r4] + b _022E3630 +_022E3618: + cmp r6, #0 + movne r0, #0 + strneb r0, [r6] + cmp r4, #0 + movne r0, #0 + strneb r0, [r4] +_022E3630: + cmp r5, #0 + beq _022E3644 + add r1, sp, #0x10c + mov r0, r5 + bl strcpy +_022E3644: + ldr r0, [sp, #8] + add sp, sp, #0x218 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} +_022E3654: + cmp r6, #0 + movne r0, #0 + strneb r0, [r6] + cmp r4, #0 + movne r0, #0 + strneb r0, [r4] + mov r0, #0 + add sp, sp, #0x218 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E3678: .word ov00_0231A1A4 +_022E367C: .word ov00_0231A1A8 + arm_func_end Dwc_GetFriendStatusSC + + arm_func_start Dwc_DeleteBuddyFriendData +Dwc_DeleteBuddyFriendData: ; 0x022E3680 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022E3710 ; =ov00_02326F34 + mov r4, r0 + ldr r0, [r1, #0xc] + cmp r0, #0 + beq _022E36FC + bl Dwci_CheckLogin + cmp r0, #0 + beq _022E36FC + bl Dwci_GetUserData + cmp r0, #0 + beq _022E36FC + bl Dwci_GetUserData + mov r1, r4 + bl Dwc_GetGsProfileId + movs r5, r0 + mvnne r0, #0 + cmpne r5, r0 + beq _022E36FC + ldr r0, _022E3710 ; =ov00_02326F34 + mov r1, r5 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl GpIsBuddy + cmp r0, #0 + beq _022E36FC + ldr r0, _022E3710 ; =ov00_02326F34 + mov r1, r5 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl GpDeleteBuddy +_022E36FC: + mov r0, r4 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E3710: .word ov00_02326F34 + arm_func_end Dwc_DeleteBuddyFriendData + + arm_func_start Dwc_SetBuddyFriendCallback +Dwc_SetBuddyFriendCallback: ; 0x022E3714 + ldr r2, _022E373C ; =ov00_02326F34 + ldr r3, [r2, #0xc] + cmp r3, #0 + moveq r0, #0 + bxeq lr + str r0, [r3, #0x44] + ldr r2, [r2, #0xc] + mov r0, #1 + str r1, [r2, #0x48] + bx lr + .align 2, 0 +_022E373C: .word ov00_02326F34 + arm_func_end Dwc_SetBuddyFriendCallback + + arm_func_start Dwci_FriendInit +Dwci_FriendInit: ; 0x022E3740 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r6, _022E3858 ; =ov00_02326F34 + ldr r5, [sp, #0x18] + str r0, [r6, #0xc] + mov r4, #0 + str r4, [r0] + ldr r0, [r6, #0xc] + cmp r5, #0 + str r1, [r0, #4] + ldr r0, [r6, #0xc] + str r4, [r0, #8] + ldr r0, [r6, #0xc] + str r4, [r0, #0xc] + str r4, [r0, #0x10] + str r5, [r0, #0x14] + ldr r0, [r6, #0xc] + str r3, [r0, #0x18] + ldr r0, [r6, #0xc] + strb r4, [r0, #0x1c] + ldr r0, [r6, #0xc] + strb r4, [r0, #0x1d] + ldr r0, [r6, #0xc] + strb r4, [r0, #0x1e] + ldr r0, [r6, #0xc] + strb r4, [r0, #0x1f] + ldr r0, [r6, #0xc] + str r4, [r0, #0x20] + ldr r0, [r6, #0xc] + str r4, [r0, #0x24] + ldr r0, [r6, #0xc] + str r2, [r0, #0x28] + ldr r0, [r6, #0xc] + str r4, [r0, #0x2c] + ldr r0, [r6, #0xc] + str r4, [r0, #0x30] + ldr r0, [r6, #0xc] + str r4, [r0, #0x34] + ldr r0, [r6, #0xc] + str r4, [r0, #0x38] + ldr r0, [r6, #0xc] + str r4, [r0, #0x3c] + ldr r0, [r6, #0xc] + str r4, [r0, #0x40] + ldr r0, [r6, #0xc] + str r4, [r0, #0x44] + ldr r0, [r6, #0xc] + str r4, [r0, #0x48] + ldr r0, [r6, #0xc] + str r4, [r0, #0x4c] + ldr r0, [r6, #0xc] + str r4, [r0, #0x50] + ldr r0, [r6, #0xc] + str r4, [r0, #0x54] + ldr r0, [r6, #0xc] + str r4, [r0, #0x58] + ldr r0, [r6, #0xc] + str r4, [r0, #0x5c] + ldmleia sp!, {r4, r5, r6, r7, r8, pc} + mov r8, r4 + mov r7, r4 +_022E3830: + ldr r0, [r6, #0xc] + mov r1, r7 + ldr r0, [r0, #0x18] + add r0, r0, r8 + bl Dwci_SetSentBuddyReqFlag + add r4, r4, #1 + cmp r4, r5 + add r8, r8, #0xc + blt _022E3830 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E3858: .word ov00_02326F34 + arm_func_end Dwci_FriendInit + + arm_func_start Dwci_FriendProcess +Dwci_FriendProcess: ; 0x022E385C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r0, _022E3B30 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl Dwci_IsError + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022E3B30 ; =ov00_02326F34 + ldr r1, [r0, #0xc] + ldr r0, [r1, #0x18] + cmp r0, #0 + bne _022E38C0 + ldr r0, [r1, #4] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl Dwci_GpProcess + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E38C0: + bl Dwci_GetPersCallbackLevel + cmp r0, #0 + bne _022E38D8 + bl IsStatsConnected + cmp r0, #0 + beq _022E3910 +_022E38D8: + ldr r0, _022E3B30 ; =ov00_02326F34 + mov r1, #1 + str r1, [r0, #4] + mov r1, #0 + str r1, [r0] + bl PersistThink + ldr r0, _022E3B30 ; =ov00_02326F34 + mov r2, #0 + str r2, [r0, #4] + ldr r1, [r0] + cmp r1, #1 + bne _022E3910 + str r2, [r0] + bl CloseStatsConnection +_022E3910: + ldr r0, _022E3B30 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #0 + beq _022E39B4 + bl Dwci_GpProcess + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022E3B30 ; =ov00_02326F34 + ldr r3, [r0, #0xc] + ldr r0, [r3] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r3, #0x18] + cmp r0, #0 + ldrneb r2, [r3, #0x1e] + cmpne r2, #3 + beq _022E39B4 + ldr r1, [r3, #8] + cmp r1, #7 + bls _022E39B4 + cmp r2, #1 + bhi _022E3984 + ldr r1, [r3, #0x14] + bl Dwci_UpdateFriendReq +_022E3984: + ldr r0, _022E3B30 ; =ov00_02326F34 + ldr r3, [r0, #0xc] + ldrb r2, [r3, #0x1c] + ldr r1, [r3, #0x14] + cmp r2, r1 + blt _022E39B4 + mov r1, #3 + strb r1, [r3, #0x1e] + ldr r1, [r0, #0xc] + ldrb r0, [r1, #0x1f] + add r0, r0, #1 + strb r0, [r1, #0x1f] +_022E39B4: + ldr r6, _022E3B30 ; =ov00_02326F34 + ldr r1, [r6, #0xc] + ldrb r0, [r1, #0x1f] + cmp r0, #2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r1, #4] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #0 + beq _022E3B18 + ldr r0, [r1, #0x14] + mov r4, #0 + mov r5, r4 + mov r7, r4 + cmp r0, #0 + ble _022E3A28 + mov r8, r4 +_022E39FC: + ldr r0, [r1, #0x18] + add r0, r0, r8 + bl Dwc_GetFriendDataType + cmp r0, #3 + ldr r1, [r6, #0xc] + add r7, r7, #1 + ldr r0, [r1, #0x14] + addeq r5, r5, #1 + add r8, r8, #0xc + cmp r7, r0 + blt _022E39FC +_022E3A28: + cmp r5, #0 + bne _022E3A44 + mov r0, #0 + strb r0, [r1, #0x1f] + bl Dwci_EndUpdateServers + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E3A44: + mov r1, r5, lsl #2 + mov r0, #4 + bl Dwc_Alloc + ldr r8, _022E3B30 ; =ov00_02326F34 + ldr r1, [r8, #0xc] + str r0, [r1, #0x5c] + ldr r1, [r8, #0xc] + ldr r0, [r1, #0x5c] + cmp r0, #0 + bne _022E3A80 + ldr r1, _022E3B34 ; =0xFFFEEE8F + mov r0, #9 + bl Dwci_StopFriendProcess + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E3A80: + ldr r0, [r1, #0x14] + mov r7, #0 + cmp r0, #0 + ble _022E3AE4 + mov r6, r7 +_022E3A94: + ldr r0, [r1, #0x18] + add r0, r0, r6 + bl Dwc_GetFriendDataType + cmp r0, #3 + bne _022E3ACC + bl Dwci_GetUserData + ldr r1, [r8, #0xc] + ldr r1, [r1, #0x18] + add r1, r1, r6 + bl Dwc_GetGsProfileId + ldr r1, [r8, #0xc] + ldr r1, [r1, #0x5c] + str r0, [r1, r4, lsl #2] + add r4, r4, #1 +_022E3ACC: + ldr r1, [r8, #0xc] + add r7, r7, #1 + ldr r0, [r1, #0x14] + add r6, r6, #0xc + cmp r7, r0 + blt _022E3A94 +_022E3AE4: + ldr r0, _022E3B30 ; =ov00_02326F34 + ldr r1, _022E3B38 ; =Dwci_GetReverseBuddiesCallback + ldr r2, [r0, #0xc] + mov r3, #0 + stmia sp, {r1, r3} + ldr r0, [r2, #4] + ldr r1, [r2, #0x5c] + mov r2, r5 + bl GpGetReversBuddiesList + bl Dwci_HandleGpError_Friend + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_022E3B18: + ldr r0, _022E3B30 ; =ov00_02326F34 + mov r1, #0 + ldr r0, [r0, #0xc] + strb r1, [r0, #0x1f] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E3B30: .word ov00_02326F34 +_022E3B34: .word 0xFFFEEE8F +_022E3B38: .word Dwci_GetReverseBuddiesCallback + arm_func_end Dwci_FriendProcess + + arm_func_start Dwci_UpdateServersAsync +Dwci_UpdateServersAsync: ; 0x022E3B3C + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022E3BE4 ; =ov00_02326F34 + ldr r5, [sp, #0x10] + ldr r1, [r0, #0xc] + ldr r4, [sp, #0x14] + str r2, [r1, #0x2c] + ldr r1, [r0, #0xc] + ldr lr, [sp, #0x18] + str r3, [r1, #0x30] + ldr r1, [r0, #0xc] + ldr ip, [sp, #0x1c] + str r5, [r1, #0x34] + ldr r1, [r0, #0xc] + mov r3, #0 + str r4, [r1, #0x38] + ldr r1, [r0, #0xc] + mov r2, #1 + str lr, [r1, #0x3c] + ldr r1, [r0, #0xc] + str ip, [r1, #0x40] + ldr r1, [r0, #0xc] + strb r3, [r1, #0x1d] + ldr r1, [r0, #0xc] + strb r3, [r1, #0x1e] + ldr r1, [r0, #0xc] + strb r3, [r1, #0x1f] + ldr r1, [r0, #0xc] + strb r3, [r1, #0x1c] + ldr r1, [r0, #0xc] + str r2, [r1] + ldr r1, [r0, #0xc] + ldr r0, [r1, #0x18] + cmp r0, #0 + ldreqb r0, [r1, #0x1f] + addeq r0, r0, #1 + streqb r0, [r1, #0x1f] + ldr r0, _022E3BE4 ; =ov00_02326F34 + ldr r1, [r0, #0xc] + ldrb r0, [r1, #0x1f] + add r0, r0, #1 + strb r0, [r1, #0x1f] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E3BE4: .word ov00_02326F34 + arm_func_end Dwci_UpdateServersAsync + + arm_func_start Dwci_StopFriendProcess +Dwci_StopFriendProcess: ; 0x022E3BE8 + stmdb sp!, {r4, lr} + ldr r2, _022E3C6C ; =ov00_02326F34 + mov r4, r0 + ldr r2, [r2, #0xc] + cmp r2, #0 + cmpne r4, #0 + ldmeqia sp!, {r4, pc} + bl Dwci_SetError + ldr r0, _022E3C6C ; =ov00_02326F34 + ldr r1, [r0, #0xc] + ldr r0, [r1] + cmp r0, #0 + cmpne r0, #2 + beq _022E3C64 + ldr r1, [r1, #0x5c] + cmp r1, #0 + beq _022E3C48 + mov r0, #4 + mov r2, #0 + bl Dwc_Free + ldr r0, _022E3C6C ; =ov00_02326F34 + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #0x5c] +_022E3C48: + ldr r1, _022E3C6C ; =ov00_02326F34 + mov r0, r4 + ldr r3, [r1, #0xc] + ldrb r1, [r3, #0x1d] + ldr r2, [r3, #0x30] + ldr r3, [r3, #0x2c] + blx r3 +_022E3C64: + bl Dwci_CloseFriendProcess + ldmia sp!, {r4, pc} + .align 2, 0 +_022E3C6C: .word ov00_02326F34 + arm_func_end Dwci_StopFriendProcess + + arm_func_start Dwci_GpRecvBuddyRequestCallback +Dwci_GpRecvBuddyRequestCallback: ; 0x022E3C70 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _022E3CB4 ; =ov00_02326F34 + ldr r2, [r2, #0xc] + ldr r2, [r2, #0x18] + cmp r2, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, pc} + ldr r3, _022E3CB8 ; =Dwci_GpGetInfoCallback_RecvBuddyRequest + mov r2, #0 + str r3, [sp] + str r2, [sp, #4] + ldr r1, [r1] + mov r3, r2 + bl GpGetInfo + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E3CB4: .word ov00_02326F34 +_022E3CB8: .word Dwci_GpGetInfoCallback_RecvBuddyRequest + arm_func_end Dwci_GpRecvBuddyRequestCallback + + arm_func_start Dwci_GpRecvBuddyAuthCallback +Dwci_GpRecvBuddyAuthCallback: ; 0x022E3CBC + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r3, _022E3CE8 ; =Dwci_GpGetInfoCallback_RecvAuthMessage + mov r2, #0 + str r3, [sp] + str r2, [sp, #4] + ldr r1, [r1] + mov r3, r2 + bl GpGetInfo + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E3CE8: .word Dwci_GpGetInfoCallback_RecvAuthMessage + arm_func_end Dwci_GpRecvBuddyAuthCallback + + arm_func_start Dwci_GpRecvBuddyStatusCallback +Dwci_GpRecvBuddyStatusCallback: ; 0x022E3CEC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x214 + ldr r2, _022E3D6C ; =ov00_02326F34 + mov r6, r0 + ldr r0, [r2, #0xc] + mov r5, r1 + ldr r0, [r0, #0x34] + cmp r0, #0 + addeq sp, sp, #0x214 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [r5] + bl Dwci_GetFriendListIndex + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + addeq sp, sp, #0x214 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r1, [r5, #8] + add r2, sp, #0 + mov r0, r6 + bl GpGetBuddyStatus + ldr r0, _022E3D6C ; =ov00_02326F34 + ldr r1, [sp, #4] + ldr r0, [r0, #0xc] + add r2, sp, #0x108 + ldr r3, [r0, #0x38] + ldr ip, [r0, #0x34] + mov r0, r4 + and r1, r1, #0xff + blx ip + add sp, sp, #0x214 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022E3D6C: .word ov00_02326F34 + arm_func_end Dwci_GpRecvBuddyStatusCallback + + arm_func_start Dwci_GetProfileIdFromList +Dwci_GetProfileIdFromList: ; 0x022E3D70 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022E3DB4 ; =ov00_02326F34 + mov r5, r0 + ldr r0, [r1, #0xc] + ldr r4, [r0, #0x18] + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl Dwci_GetUserData + mov r1, #0xc + mla r1, r5, r1, r4 + bl Dwc_GetGsProfileId + cmp r0, #0 + mvnne r1, #0 + cmpne r0, r1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E3DB4: .word ov00_02326F34 + arm_func_end Dwci_GetProfileIdFromList + + arm_func_start Dwci_GetFriendListIndex +Dwci_GetFriendListIndex: ; 0x022E3DB8 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _022E3E18 ; =ov00_02326F34 + mov r6, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + cmpne r6, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r0, #0x14] + mov r5, #0 + cmp r0, #0 + ble _022E3E10 +_022E3DE8: + mov r0, r5 + bl Dwci_GetProfileIdFromList + cmp r6, r0 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r4, #0xc] + add r5, r5, #1 + ldr r0, [r0, #0x14] + cmp r5, r0 + blt _022E3DE8 +_022E3E10: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E3E18: .word ov00_02326F34 + arm_func_end Dwci_GetFriendListIndex + + arm_func_start Dwci_InitGpProcessCount +Dwci_InitGpProcessCount: ; 0x022E3E1C + stmdb sp!, {r3, lr} + ldr r0, _022E3E50 ; =ov00_02326F34 + ldr r1, [r0, #0xc] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0 + str r0, [r1, #8] + bl OS_GetTick + ldr r2, _022E3E50 ; =ov00_02326F34 + ldr r2, [r2, #0xc] + str r0, [r2, #0xc] + str r1, [r2, #0x10] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E3E50: .word ov00_02326F34 + arm_func_end Dwci_InitGpProcessCount + + arm_func_start Dwci_SetGpStatus +Dwci_SetGpStatus: ; 0x022E3E54 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _022E3F04 ; =ov00_02326F34 + mov r6, r0 + ldr r0, [r3, #0xc] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + beq _022E3E80 + bl Dwci_CheckLogin + cmp r0, #0 + bne _022E3E88 +_022E3E80: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022E3E88: + mvn r0, #0 + cmp r6, r0 + bne _022E3EA8 + ldr r0, _022E3F04 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + ldr r0, [r0] + ldr r6, [r0, #0x23c] +_022E3EA8: + cmp r5, #0 + bne _022E3EC4 + ldr r0, _022E3F04 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + ldr r0, [r0] + add r5, r0, #0x3b8 +_022E3EC4: + cmp r4, #0 + bne _022E3EE4 + ldr r0, _022E3F04 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + ldr r0, [r0] + add r0, r0, #0xb8 + add r4, r0, #0x400 +_022E3EE4: + ldr r0, _022E3F04 ; =ov00_02326F34 + mov r1, r6 + ldr r0, [r0, #0xc] + mov r2, r5 + ldr r0, [r0, #4] + mov r3, r4 + bl GpSetStatusA + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E3F04: .word ov00_02326F34 + arm_func_end Dwci_SetGpStatus + + arm_func_start Dwci_GetGpStatus +Dwci_GetGpStatus: ; 0x022E3F08 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x214 + ldr r1, _022E3F8C ; =ov00_02326F34 + mov r4, r0 + ldr r3, [r1, #0xc] + ldr r2, [r3, #0x44] + cmp r2, #0 + ldrne r1, [r3] + cmpne r1, #1 + beq _022E3F38 + ldr r1, [r3, #0x48] + blx r2 +_022E3F38: + ldr r0, _022E3F8C ; =ov00_02326F34 + ldr r1, [r0, #0xc] + ldr r0, [r1, #0x34] + cmp r0, #0 + addeq sp, sp, #0x214 + ldmeqia sp!, {r3, r4, pc} + ldr r1, [r1, #0x18] + mov r0, #0xc + mla r0, r4, r0, r1 + add r1, sp, #0x108 + bl Dwc_GetFriendStatus + ldr r2, _022E3F8C ; =ov00_02326F34 + mov r1, r0 + ldr r0, [r2, #0xc] + add r2, sp, #0x108 + ldr r3, [r0, #0x38] + ldr ip, [r0, #0x34] + mov r0, r4 + blx ip + add sp, sp, #0x214 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022E3F8C: .word ov00_02326F34 + arm_func_end Dwci_GetGpStatus + + arm_func_start Dwci_ShutdownFriend +Dwci_ShutdownFriend: ; 0x022E3F90 + ldr r0, _022E3FA0 ; =ov00_02326F34 + mov r1, #0 + str r1, [r0, #0xc] + bx lr + .align 2, 0 +_022E3FA0: .word ov00_02326F34 + arm_func_end Dwci_ShutdownFriend + + arm_func_start Dwci_GpProcess +Dwci_GpProcess: ; 0x022E3FA4 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022E4028 ; =ov00_02326F34 + mov r4, #0 + ldr r5, [r0, #0xc] + bl OS_GetTick + ldr r3, [r5, #0xc] + ldr r2, [r5, #0x10] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _022E402C ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, r4 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0x12c + blo _022E4020 + ldr r1, [r5, #8] + ldr r0, _022E4028 ; =ov00_02326F34 + add r1, r1, #1 + str r1, [r5, #8] + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl GpProcess + mov r4, r0 + bl OS_GetTick + ldr r2, _022E4028 ; =ov00_02326F34 + ldr r2, [r2, #0xc] + str r0, [r2, #0xc] + str r1, [r2, #0x10] +_022E4020: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E4028: .word ov00_02326F34 +_022E402C: .word 0x000082EA + arm_func_end Dwci_GpProcess + + arm_func_start Dwci_CloseFriendProcess +Dwci_CloseFriendProcess: ; 0x022E4030 + ldr r0, _022E405C ; =ov00_02326F34 + ldr r1, [r0, #0xc] + cmp r1, #0 + bxeq lr + mov r2, #0 + str r2, [r1] + ldr r1, [r0, #0xc] + strb r2, [r1, #0x1e] + ldr r0, [r0, #0xc] + strb r2, [r0, #0x1f] + bx lr + .align 2, 0 +_022E405C: .word ov00_02326F34 + arm_func_end Dwci_CloseFriendProcess + + arm_func_start Dwci_UpdateFriendReq +Dwci_UpdateFriendReq: ; 0x022E4060 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24c + ldr r2, _022E4328 ; =ov00_02326F34 + mov sl, r0 + ldr r2, [r2, #0xc] + mov sb, r1 + ldrb r0, [r2, #0x1e] + cmp r0, #0 + bne _022E41C4 + ldr r0, [r2, #4] + add r1, sp, #0x1c + bl GpGetNumBuddies + bl Dwci_HandleGpError_Friend + ldr r0, [sp, #0x1c] + mov r1, #0 + str r1, [sp, #0x18] + cmp r0, #0 + ble _022E41B4 +_022E40A8: + ldr r0, _022E4328 ; =ov00_02326F34 + ldr r1, [sp, #0x18] + ldr r0, [r0, #0xc] + add r2, sp, #0x38 + ldr r0, [r0, #4] + bl GpGetBuddyStatus + bl Dwci_HandleGpError_Friend + cmp sb, #0 + mov r4, #0 + ble _022E4164 +_022E40D0: + mov r0, r4 + bl Dwci_GetProfileIdFromList + ldr r1, [sp, #0x38] + cmp r1, r0 + bne _022E4158 + mov r0, #0xc + mul r5, r4, r0 + add r0, sl, r5 + bl Dwci_IsBuddyFriendData + cmp r0, #0 + bne _022E4164 + ldr r1, [sp, #0x38] + add r0, sl, r5 + bl Dwc_SetGsProfileId + add r0, sl, r5 + bl Dwci_SetBuddyFriendData + ldr r0, _022E4328 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r5 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4144 + ldr r0, _022E4328 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r5 + bl Dwci_SetExpIsBuddyFriendFlag +_022E4144: + ldr r0, _022E4328 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + strb r1, [r0, #0x1d] + b _022E4164 +_022E4158: + add r4, r4, #1 + cmp r4, sb + blt _022E40D0 +_022E4164: + cmp r4, sb + bne _022E419C + ldr r0, _022E4328 ; =ov00_02326F34 + ldr r1, [sp, #0x38] + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl GpDeleteBuddy + bl Dwci_HandleGpError_Friend + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x18] + sub r1, r1, #1 + sub r0, r0, #1 + str r1, [sp, #0x1c] + str r0, [sp, #0x18] +_022E419C: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + add r1, r1, #1 + str r1, [sp, #0x18] + cmp r1, r0 + blt _022E40A8 +_022E41B4: + ldr r0, _022E4328 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + strb r1, [r0, #0x1e] +_022E41C4: + ldr r7, _022E4328 ; =ov00_02326F34 + ldr r0, [r7, #0xc] + ldrb r1, [r0, #0x1c] + cmp r1, sb + addge sp, sp, #0x24c + ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov fp, #0xc + mvn r5, #0 + mov r4, fp + mov r6, fp +_022E41EC: + mla r0, r1, r6, sl + bl Dwci_IsBuddyMsgAlreadySent + cmp r0, #0 + bne _022E4300 + ldr r0, [r7, #0xc] + ldrb r0, [r0, #0x1c] + bl Dwci_GetProfileIdFromList + movs r8, r0 + beq _022E4270 + ldr r1, [r7, #0xc] + mov r0, sl + ldrb r1, [r1, #0x1c] + mov r2, r8 + bl Dwci_RefreshFriendListForth + cmp r0, #0 + bne _022E4300 + ldr r0, [r7, #0xc] + mov r1, r8 + ldr r0, [r0, #4] + add r2, sp, #0x18 + bl GpGetBuddyIndex + bl Dwci_HandleGpError_Friend + ldr r0, [sp, #0x18] + cmp r0, r5 + bne _022E4300 + mov r0, r8 + bl Dwci_GpSendBuddyRequest + ldr r0, [r7, #0xc] + mov r1, #1 + ldrb r2, [r0, #0x1c] + mla r0, r2, r4, sl + bl Dwci_SetSentBuddyReqFlag + b _022E4300 +_022E4270: + bl Dwci_GetUserData + ldr r1, [r7, #0xc] + ldrb r2, [r1, #0x1c] + mla r1, r2, fp, sl + bl Dwc_GetGsProfileId + cmp r0, r5 + bne _022E4300 + bl Dwci_GetUserData + ldr r2, _022E4328 ; =ov00_02326F34 + mov r1, #0xc + ldr r3, [r2, #0xc] + add r2, sp, #0x20 + ldrb r3, [r3, #0x1c] + mla r1, r3, r1, sl + bl Dwc_LoginIdToUserName + ldr r0, _022E4328 ; =ov00_02326F34 + mov r1, #0 + ldr r4, [r0, #0xc] + add r2, sp, #0x20 + stmia sp, {r1, r2} + str r1, [sp, #8] + ldr r0, _022E432C ; =Dwci_GpProfileSearchCallback + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldrb r0, [r4, #0x1c] + mov r2, r1 + mov r3, r1 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl GpProfileSearchA + ldr r0, _022E4328 ; =ov00_02326F34 + mov r1, #2 + ldr r0, [r0, #0xc] + add sp, sp, #0x24c + strb r1, [r0, #0x1e] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E4300: + ldr r1, [r7, #0xc] + ldrb r0, [r1, #0x1c] + add r0, r0, #1 + strb r0, [r1, #0x1c] + ldr r0, [r7, #0xc] + ldrb r1, [r0, #0x1c] + cmp r1, sb + blt _022E41EC + add sp, sp, #0x24c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E4328: .word ov00_02326F34 +_022E432C: .word Dwci_GpProfileSearchCallback + arm_func_end Dwci_UpdateFriendReq + + arm_func_start Dwci_EndUpdateServers +Dwci_EndUpdateServers: ; 0x022E4330 + stmdb sp!, {r3, lr} + ldr r1, _022E4364 ; =ov00_02326F34 + mov r0, #0 + ldr r3, [r1, #0xc] + ldrb r1, [r3, #0x1d] + ldr r2, [r3, #0x30] + ldr r3, [r3, #0x2c] + blx r3 + ldr r0, _022E4364 ; =ov00_02326F34 + mov r1, #2 + ldr r0, [r0, #0xc] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E4364: .word ov00_02326F34 + arm_func_end Dwci_EndUpdateServers + + arm_func_start Dwci_DeleteFriendFromList +Dwci_DeleteFriendFromList: ; 0x022E4368 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _022E43BC ; =ov00_02326F34 + mov r5, r1 + ldr r1, [r3, #0xc] + mov r4, r2 + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r2, #0xc + mla r0, r5, r2, r0 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _022E43BC ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r3, [r0, #0x3c] + cmp r3, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r0, #0x40] + mov r0, r5 + mov r1, r4 + blx r3 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E43BC: .word ov00_02326F34 + arm_func_end Dwci_DeleteFriendFromList + + arm_func_start Dwci_RefreshFriendListForth +Dwci_RefreshFriendListForth: ; 0x022E43C0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + mov r1, #0xc + mul r4, r7, r1 + mov r8, r0 + add r0, r8, r4 + mov r6, r2 + bl Dwc_GetFriendDataType + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r7, #0 + mov r5, #0 + ble _022E4478 +_022E43F8: + mov r0, r5 + bl Dwci_GetProfileIdFromList + cmp r0, #0 + beq _022E446C + cmp r0, r6 + bne _022E446C + add r0, r8, r4 + bl Dwci_IsBuddyFriendData + cmp r0, #0 + beq _022E4448 + mov r0, #0xc + mla r0, r5, r0, r8 + bl Dwci_IsBuddyFriendData + cmp r0, #0 + bne _022E4448 + mov r0, r8 + mov r1, r5 + mov r2, r7 + bl Dwci_DeleteFriendFromList + b _022E4458 +_022E4448: + mov r0, r8 + mov r1, r7 + mov r2, r5 + bl Dwci_DeleteFriendFromList +_022E4458: + ldr r1, _022E4480 ; =ov00_02326F34 + mov r0, #1 + ldr r1, [r1, #0xc] + strb r0, [r1, #0x1d] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E446C: + add r5, r5, #1 + cmp r5, r7 + blt _022E43F8 +_022E4478: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E4480: .word ov00_02326F34 + arm_func_end Dwci_RefreshFriendListForth + + arm_func_start Dwci_RefreshFriendListAll +Dwci_RefreshFriendListAll: ; 0x022E4484 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov fp, r1 + str r0, [sp] + mvn r0, #0 + str r2, [sp, #4] + cmp fp, #0 + str r0, [sp, #0xc] + mov r6, #0 + ble _022E45C0 + ldr r0, [sp] + mov sb, r6 + str r0, [sp, #8] + mov r8, r0 +_022E44BC: + mov r0, r6 + bl Dwci_GetProfileIdFromList + movs r5, r0 + beq _022E45A0 + ldr r0, [sp, #4] + add r7, r6, #1 + cmp r5, r0 + streq r6, [sp, #0xc] + cmp r7, fp + bge _022E45A0 + ldr r0, [sp] + mov r1, #0xc + mla sl, r7, r1, r0 + ldr r4, _022E45CC ; =ov00_02326F34 +_022E44F4: + mov r0, r7 + bl Dwci_GetProfileIdFromList + cmp r5, r0 + bne _022E4590 + ldr r0, [sp, #8] + bl Dwc_GetFriendDataType + cmp r0, #2 + bne _022E4530 + mov r0, sl + bl Dwc_GetFriendDataType + cmp r0, #3 + bne _022E4530 + mov r0, r8 + mov r1, r5 + bl Dwc_SetGsProfileId +_022E4530: + mov r0, sl + bl Dwci_IsBuddyFriendData + cmp r0, #0 + beq _022E4574 + mov r0, r8 + bl Dwci_SetBuddyFriendData + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4574 + ldr r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwci_SetExpIsBuddyFriendFlag +_022E4574: + ldr r0, [sp] + mov r1, r7 + mov r2, r6 + bl Dwci_DeleteFriendFromList + ldr r1, [r4, #0xc] + mov r0, #1 + strb r0, [r1, #0x1d] +_022E4590: + add sl, sl, #0xc + add r7, r7, #1 + cmp r7, fp + blt _022E44F4 +_022E45A0: + ldr r0, [sp, #8] + add r6, r6, #1 + add r0, r0, #0xc + cmp r6, fp + str r0, [sp, #8] + add r8, r8, #0xc + add sb, sb, #0xc + blt _022E44BC +_022E45C0: + ldr r0, [sp, #0xc] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E45CC: .word ov00_02326F34 + arm_func_end Dwci_RefreshFriendListAll + + arm_func_start Dwci_GpSendBuddyRequest +Dwci_GpSendBuddyRequest: ; 0x022E45D0 + stmdb sp!, {r4, lr} + ldr r2, _022E45FC ; =ov00_02326F34 + mov r1, r0 + ldr r0, [r2, #0xc] + ldr r2, _022E4600 ; =ov00_0231A1AC + ldr r0, [r0, #4] + bl GpSendBuddyRequestA + mov r4, r0 + bl Dwci_HandleGpError_Friend + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E45FC: .word ov00_02326F34 +_022E4600: .word ov00_0231A1AC + arm_func_end Dwci_GpSendBuddyRequest + + arm_func_start Dwci_GetFriendBuddyStatus +Dwci_GetFriendBuddyStatus: ; 0x022E4604 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _022E46BC ; =ov00_02326F34 + mov r3, #0 + ldr r2, [r2, #0xc] + mov r5, r0 + mov r4, r1 + str r3, [sp] + cmp r2, #0 + beq _022E4634 + bl Dwci_CheckLogin + cmp r0, #0 + bne _022E463C +_022E4634: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E463C: + bl Dwci_GetUserData + mov r1, r5 + bl Dwc_GetGsProfileId + mov r5, r0 + cmp r5, #0 + ble _022E4678 + ldr r0, _022E46BC ; =ov00_02326F34 + add r2, sp, #0 + ldr r0, [r0, #0xc] + mov r1, r5 + ldr r0, [r0, #4] + bl GpGetBuddyIndex + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_022E4678: + cmp r5, #0 + ble _022E4690 + ldr r1, [sp] + mvn r0, #0 + cmp r1, r0 + bne _022E4698 +_022E4690: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E4698: + ldr r0, _022E46BC ; =ov00_02326F34 + mov r2, r4 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl GpGetBuddyStatus + cmp r0, #0 + movne r0, #0 + moveq r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E46BC: .word ov00_02326F34 + arm_func_end Dwci_GetFriendBuddyStatus + + arm_func_start Dwci_HandleGpError_Friend +Dwci_HandleGpError_Friend: ; 0x022E46C0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _022E471C +_022E46DC: ; jump table + b _022E471C ; case 0 + b _022E46F0 ; case 1 + b _022E46FC ; case 2 + b _022E4708 ; case 3 + b _022E4714 ; case 4 +_022E46F0: + mov r0, #9 + sub r2, r0, #0xa + b _022E471C +_022E46FC: + mov r0, #9 + sub r2, r0, #0xb + b _022E471C +_022E4708: + mov r0, #6 + sub r2, r0, #0x10 + b _022E471C +_022E4714: + mov r0, #6 + sub r2, r0, #0x1a +_022E471C: + ldr r1, _022E4730 ; =0xFFFEEAA8 + add r1, r2, r1 + bl Dwci_StopFriendProcess + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4730: .word 0xFFFEEAA8 + arm_func_end Dwci_HandleGpError_Friend + + arm_func_start Dwci_GpProfileSearchCallback +Dwci_GpProfileSearchCallback: ; 0x022E4734 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + ldr r1, [sb] + mov sl, r0 + mov r8, r2 + cmp r1, #0 + bne _022E496C + ldr r0, [sb, #4] + cmp r0, #0 + beq _022E496C + mov r0, #0xc + ldr r1, _022E49D4 ; =ov00_02326F34 + mul r6, r8, r0 + ldr r0, [r1, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwc_GetFriendDataType + cmp r0, #0 + beq _022E496C + ldr r7, _022E49D4 ; =ov00_02326F34 + ldr r0, [r7, #0xc] + ldr r0, [r0] + cmp r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sb, #4] + mov r4, #0 + cmp r0, #0 + ble _022E4808 + mov r5, r4 +_022E47A8: + ldr r0, [r7, #0xc] + ldr r1, [sb, #0xc] + ldr r0, [r0, #0x18] + ldr r2, [r1, r5] + mov r1, r8 + bl Dwci_RefreshFriendListForth + cmp r0, #0 + beq _022E47F4 + ldr r0, _022E49D4 ; =ov00_02326F34 + mov r2, #1 + ldr r4, [r0, #0xc] + add r1, r2, #0x600 + ldrb r3, [r4, #0x1c] + add r3, r3, #1 + strb r3, [r4, #0x1c] + ldr r0, [r0, #0xc] + strb r2, [r0, #0x1e] + str r1, [sb, #8] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E47F4: + ldr r0, [sb, #4] + add r4, r4, #1 + cmp r4, r0 + add r5, r5, #0xac + blt _022E47A8 +_022E4808: + cmp r0, #0 + mov r7, #0 + ble _022E493C + ldr fp, _022E49D4 ; =ov00_02326F34 + mov r5, r7 + mvn r4, #0 +_022E4820: + ldr r1, [sb, #0xc] + mov r0, sl + ldr r1, [r1, r5] + add r2, sp, #0 + bl GpGetBuddyIndex + bl Dwci_HandleGpError_Friend + ldr r0, [sp] + cmp r0, r4 + bne _022E4868 + ldr r0, [sb, #0xc] + ldr r0, [r0, r5] + bl Dwci_GpSendBuddyRequest + ldr r0, [fp, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_SetSentBuddyReqFlag + b _022E4928 +_022E4868: + mov r0, #0xc + ldr r1, _022E49D4 ; =ov00_02326F34 + mul r4, r8, r0 + ldr r1, [r1, #0xc] + ldr r0, [sb, #0xc] + ldr r2, [r1, #0x18] + ldr r1, [r0] + add r0, r2, r4 + bl Dwc_SetGsProfileId + ldr r0, _022E49D4 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r4 + bl Dwci_SetBuddyFriendData + ldr r0, _022E49D4 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r4 + bl Dwci_SetReverseBuddyFlag + ldr r0, _022E49D4 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r4 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E48EC + ldr r0, _022E49D4 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_SetExpIsBuddyFriendFlag +_022E48EC: + mov r0, r8 + bl Dwci_GetGpStatus + ldr r0, _022E49D4 ; =ov00_02326F34 + mov r3, #1 + ldr r4, [r0, #0xc] + add r1, r3, #0x600 + ldrb r2, [r4, #0x1c] + add r2, r2, #1 + strb r2, [r4, #0x1c] + ldr r2, [r0, #0xc] + strb r3, [r2, #0x1e] + str r1, [sb, #8] + ldr r0, [r0, #0xc] + strb r3, [r0, #0x1d] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E4928: + ldr r0, [sb, #4] + add r7, r7, #1 + cmp r7, r0 + add r5, r5, #0xac + blt _022E4820 +_022E493C: + ldr r0, [sb, #8] + cmp r0, #0x600 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022E49D4 ; =ov00_02326F34 + mov r1, #1 + ldr r3, [r0, #0xc] + ldrb r2, [r3, #0x1c] + add r2, r2, #1 + strb r2, [r3, #0x1c] + ldr r0, [r0, #0xc] + strb r1, [r0, #0x1e] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E496C: + ldr r0, [sb] + cmp r0, #0 + beq _022E4984 + bl Dwci_HandleGpError_Friend + cmp r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E4984: + ldr r0, _022E49D4 ; =ov00_02326F34 + ldr r1, [r0, #0xc] + ldr r0, [r1] + cmp r0, #1 + beq _022E49B0 + ldr r1, [r1, #0x18] + mov r0, #0xc + mla r0, r8, r0, r1 + bl Dwc_GetFriendDataType + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E49B0: + ldr r0, _022E49D4 ; =ov00_02326F34 + mov r1, #1 + ldr r3, [r0, #0xc] + ldrb r2, [r3, #0x1c] + add r2, r2, #1 + strb r2, [r3, #0x1c] + ldr r0, [r0, #0xc] + strb r1, [r0, #0x1e] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E49D4: .word ov00_02326F34 + arm_func_end Dwci_GpProfileSearchCallback + + arm_func_start Dwci_GpGetInfoCallback_RecvBuddyRequest +Dwci_GpGetInfoCallback_RecvBuddyRequest: ; 0x022E49D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov sb, r1 + ldr r1, [sb] + mov sl, r0 + cmp r1, #0 + mov r6, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _022E4C00 ; =ov00_02326F34 + mov r5, r6 + ldr r1, [r4, #0xc] + ldr r0, [r1, #0x14] + cmp r0, #0 + ble _022E4BD4 + mov r7, r6 + add fp, sp, #0x11 +_022E4A1C: + ldr r0, [r1, #0x18] + add r0, r0, r7 + bl Dwc_GetFriendDataType + cmp r0, #1 + bne _022E4AC4 + bl Dwci_GetUserData + ldr r1, [r4, #0xc] + mov r2, fp + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl Dwc_LoginIdToUserName + mov r0, fp + add r1, sb, #0x8e + bl strcmp + cmp r0, #0 + bne _022E4BBC + ldr r1, [sb, #4] + mov r0, sl + bl GpAuthBuddyRequest + ldr r0, [r4, #0xc] + ldr r1, [sb, #4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwc_SetGsProfileId + ldr r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwci_SetReverseBuddyFlag + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4ABC + ldr r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwci_SetExpIsBuddyFriendFlag +_022E4ABC: + mov r6, #1 + b _022E4BBC +_022E4AC4: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwc_GetFriendDataType + cmp r0, #3 + beq _022E4AF4 + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwc_GetFriendDataType + cmp r0, #2 + bne _022E4BBC +_022E4AF4: + bl Dwci_GetUserData + ldr r1, [r0, #0x24] + add r0, sp, #0xc + mov r2, r1, lsr #0x10 + and r2, r2, #0xff + str r2, [sp] + mov r2, r1, lsr #8 + and r2, r2, #0xff + str r2, [sp, #4] + and r2, r1, #0xff + str r2, [sp, #8] + mov r1, r1, lsr #0x18 + and r3, r1, #0xff + ldr r2, _022E4C04 ; =ov00_0231A1B0 + mov r1, #5 + bl OS_SnPrintf + ldr r8, [sb, #4] + bl Dwci_GetUserData + ldr r1, [r4, #0xc] + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl Dwc_GetGsProfileId + cmp r8, r0 + bne _022E4BBC + add r0, sp, #0xc + add r1, sb, #0x97 + mov r2, #4 + bl memcmp + cmp r0, #0 + bne _022E4BBC + mov r1, r8 + mov r0, sl + bl GpAuthBuddyRequest + ldr r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwci_SetReverseBuddyFlag + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4BB8 + ldr r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl Dwci_SetExpIsBuddyFriendFlag +_022E4BB8: + mov r6, #1 +_022E4BBC: + add r7, r7, #0xc + add r5, r5, #1 + ldr r1, [r4, #0xc] + ldr r0, [r1, #0x14] + cmp r5, r0 + blt _022E4A1C +_022E4BD4: + cmp r6, #0 + beq _022E4BEC + ldr r0, [sb, #4] + bl Dwci_GpSendBuddyRequest + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E4BEC: + ldr r1, [sb, #4] + mov r0, sl + bl GpDenyBuddyRequest + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E4C00: .word ov00_02326F34 +_022E4C04: .word ov00_0231A1B0 + arm_func_end Dwci_GpGetInfoCallback_RecvBuddyRequest + + arm_func_start Dwci_GpGetInfoCallback_RecvAuthMessage +Dwci_GpGetInfoCallback_RecvAuthMessage: ; 0x022E4C08 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sl, r1 + ldr r0, [sl] + mov r7, #0 + cmp r0, #0 + mov r8, r7 + addne sp, sp, #0x18 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _022E4E58 ; =ov00_02326F34 + mov r6, r7 + ldr r0, [r4, #0xc] + ldr r1, [r0, #0x14] + cmp r1, #0 + ble _022E4DC0 + mov sb, r7 + mov fp, #1 + add r5, sp, #0 +_022E4C50: + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_GetFriendDataType + cmp r0, #1 + bne _022E4CE8 + bl Dwci_GetUserData + ldr r1, [r4, #0xc] + mov r2, r5 + ldr r1, [r1, #0x18] + add r1, r1, sb + bl Dwc_LoginIdToUserName + mov r0, r5 + add r1, sl, #0x8e + bl strcmp + cmp r0, #0 + bne _022E4DA8 + ldr r0, [r4, #0xc] + ldr r1, [sl, #4] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_SetGsProfileId + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwci_SetBuddyFriendData + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4CE0 + ldr r0, [r4, #0xc] + mov r1, fp + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwci_SetExpIsBuddyFriendFlag +_022E4CE0: + mov r7, #1 + b _022E4DA8 +_022E4CE8: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_GetFriendDataType + cmp r0, #3 + beq _022E4D18 + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_GetFriendDataType + cmp r0, #2 + bne _022E4DA8 +_022E4D18: + bl Dwci_GetUserData + ldr r1, [r4, #0xc] + ldr r1, [r1, #0x18] + add r1, r1, sb + bl Dwc_GetGsProfileId + ldr r1, [sl, #4] + cmp r1, r0 + bne _022E4DA8 + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwci_IsBuddyFriendData + cmp r0, #1 + moveq r8, #1 + beq _022E4DA8 + ldr r0, [r4, #0xc] + ldr r1, [sl, #4] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_SetGsProfileId + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwci_SetBuddyFriendData + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4DA4 + ldr r0, [r4, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, sb + bl Dwci_SetExpIsBuddyFriendFlag +_022E4DA4: + mov r7, #1 +_022E4DA8: + ldr r0, [r4, #0xc] + add r6, r6, #1 + add sb, sb, #0xc + ldr r1, [r0, #0x14] + cmp r6, r1 + blt _022E4C50 +_022E4DC0: + cmp r7, #0 + addeq sp, sp, #0x18 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r0, #0x18] + ldr r2, [sl, #4] + bl Dwci_RefreshFriendListAll + mov r4, r0 + cmp r8, #0 + bne _022E4E40 + mov r0, #0xc + ldr r1, _022E4E58 ; =ov00_02326F34 + mul r5, r4, r0 + ldr r0, [r1, #0xc] + mov r1, #1 + ldr r0, [r0, #0x18] + add r0, r0, r5 + bl Dwci_SetReverseBuddyFlag + ldr r0, _022E4E58 ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r5 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4E38 + ldr r0, _022E4E58 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r5 + bl Dwci_SetExpIsBuddyFriendFlag +_022E4E38: + mov r0, r4 + bl Dwci_GetGpStatus +_022E4E40: + ldr r0, _022E4E58 ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + strb r1, [r0, #0x1d] + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E4E58: .word ov00_02326F34 + arm_func_end Dwci_GpGetInfoCallback_RecvAuthMessage + + arm_func_start Dwci_GetPersCallbackLevel +Dwci_GetPersCallbackLevel: ; 0x022E4E5C + ldr r0, _022E4E6C ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x20] + bx lr + .align 2, 0 +_022E4E6C: .word ov00_02326F34 + arm_func_end Dwci_GetPersCallbackLevel + + arm_func_start Dwci_BeginCloseStatsConnection +Dwci_BeginCloseStatsConnection: ; 0x022E4E70 + ldr r0, _022E4E80 ; =ov00_02326F34 + mov r1, #1 + str r1, [r0, #0x10] + bx lr + .align 2, 0 +_022E4E80: .word ov00_02326F34 + arm_func_end Dwci_BeginCloseStatsConnection + + arm_func_start Dwci_EndCloseStatsConnection +Dwci_EndCloseStatsConnection: ; 0x022E4E84 + ldr r0, _022E4E94 ; =ov00_02326F34 + mov r1, #0 + str r1, [r0, #0x10] + bx lr + .align 2, 0 +_022E4E94: .word ov00_02326F34 + arm_func_end Dwci_EndCloseStatsConnection + + arm_func_start Dwci_GetReverseBuddiesCallback +Dwci_GetReverseBuddiesCallback: ; 0x022E4E98 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r0, _022E507C ; =ov00_02326F34 + mov r8, r1 + ldr r0, [r0, #0xc] + ldr r1, [r0, #0x5c] + cmp r1, #0 + beq _022E4ED0 + mov r0, #4 + mov r2, #0 + bl Dwc_Free + ldr r0, _022E507C ; =ov00_02326F34 + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #0x5c] +_022E4ED0: + ldr r0, [r8] + cmp r0, #0 + beq _022E4EE4 + bl Dwci_EndUpdateServers + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E4EE4: + ldr r0, _022E507C ; =ov00_02326F34 + mov r4, #0 + ldr r1, [r0, #0xc] + ldr r0, [r1, #0x14] + cmp r0, #0 + ble _022E5074 + mov r6, r4 +_022E4F00: + ldr r0, [r1, #0x18] + add r0, r0, r6 + bl Dwc_GetFriendDataType + cmp r0, #3 + bne _022E5058 + ldr r0, [r8, #4] + mov r5, #0 + cmp r0, #0 + ble _022E4FD8 + ldr sb, _022E507C ; =ov00_02326F34 + mov r7, r5 +_022E4F2C: + bl Dwci_GetUserData + ldr r1, [sb, #0xc] + ldr r1, [r1, #0x18] + add r1, r1, r6 + bl Dwc_GetGsProfileId + ldr r1, [r8, #8] + ldr r1, [r1, r7] + cmp r1, r0 + bne _022E4FC4 + ldr r0, _022E507C ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_IsReverseBuddyFriendData + cmp r0, #0 + bne _022E4FD8 + ldr r0, _022E507C ; =ov00_02326F34 + mov r1, #1 + ldr r2, [r0, #0xc] + strb r1, [r2, #0x1d] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_SetReverseBuddyFlag + ldr r0, _022E507C ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E4FD8 + ldr r0, _022E507C ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_SetExpIsBuddyFriendFlag + b _022E4FD8 +_022E4FC4: + ldr r0, [r8, #4] + add r5, r5, #1 + cmp r5, r0 + add r7, r7, #0x1c + blt _022E4F2C +_022E4FD8: + ldr r0, [r8, #4] + cmp r5, r0 + bne _022E5024 + ldr r0, _022E507C ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_IsReverseBuddyFriendData + cmp r0, #1 + bne _022E5024 + ldr r0, _022E507C ; =ov00_02326F34 + mov r3, #1 + ldr r2, [r0, #0xc] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_SetReverseBuddyFlag +_022E5024: + ldr r0, _022E507C ; =ov00_02326F34 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwc_IsBuddyFriendData + cmp r0, #0 + beq _022E5058 + ldr r0, _022E507C ; =ov00_02326F34 + mov r1, #1 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl Dwci_SetExpIsBuddyFriendFlag +_022E5058: + ldr r0, _022E507C ; =ov00_02326F34 + add r4, r4, #1 + ldr r1, [r0, #0xc] + add r6, r6, #0xc + ldr r0, [r1, #0x14] + cmp r4, r0 + blt _022E4F00 +_022E5074: + bl Dwci_EndUpdateServers + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E507C: .word ov00_02326F34 + arm_func_end Dwci_GetReverseBuddiesCallback + + arm_func_start Dwci_NnFreeNegotiateList +Dwci_NnFreeNegotiateList: ; 0x022E5080 + stmdb sp!, {r3, lr} + ldr r0, _022E50A4 ; =ov00_02326F48 + ldr r1, [r0, #0x10] + cmp r1, #0 + movne r1, #1 + strne r1, [r0, #0xc] + ldmneia sp!, {r3, pc} + bl NnFreeNegotiateList + ldmia sp!, {r3, pc} + .align 2, 0 +_022E50A4: .word ov00_02326F48 + arm_func_end Dwci_NnFreeNegotiateList + + arm_func_start Dwci_MatchInit +Dwci_MatchInit: ; 0x022E50A8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl Dwci_SetMatchCnt + bl Dwci_GetMatchCnt + str r6, [r0] + bl Dwci_GetMatchCnt + str r5, [r0, #4] + bl Dwci_GetMatchCnt + str r4, [r0, #8] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x10] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c] + bl Dwci_GetMatchCnt + mov r1, #0 + strh r1, [r0, #0x1a] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0xe4] + mov r0, r1 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xf] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x19] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1af] + bl Dwci_GetMatchCnt + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb6] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1dc] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x200] + bl Dwci_GetMatchCnt + ldr r1, [sp, #0x10] + str r1, [r0, #0x2f4] + bl Dwci_GetMatchCnt + ldr r1, [sp, #0x14] + str r1, [r0, #0x2f8] + bl Dwci_GetMatchCnt + ldr r1, [sp, #0x18] + str r1, [r0, #0x2fc] + bl Dwci_GetMatchCnt + ldr r1, [sp, #0x1c] + str r1, [r0, #0x300] + bl Dwci_GetMatchCnt + add r0, r0, #0x304 + mov r1, #0 + mov r2, #0x40 + bl MI_CpuFill8 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x344] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x464] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x468] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x474] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x478] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x47c] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x480] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x174] + str r1, [r0, #0x178] + bl Dwci_ClearGameMatchKeys + ldr r1, _022E5220 ; =ov00_02326F48 + mov r0, #0 + strb r0, [r1, #0x1c] + strb r0, [r1, #0x1d] + strh r0, [r1, #0x1e] + bl Dwci_ResetMatchParam + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E5220: .word ov00_02326F48 + arm_func_end Dwci_MatchInit + + arm_func_start Dwci_QR2Startup +Dwci_QR2Startup: ; 0x022E5224 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl Dwci_GetMatchCnt + str r4, [r0, #0x200] + ldr r4, _022E539C ; =Dwci_QR2ServerKeyCallback + ldr fp, _022E53A0 ; =Dwci_QR2PlayerKeyCallback + mov sl, #0 + mov r5, #1 +_022E5260: + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2GetSocketSocket + mov r8, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2GetLocalPort + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldr r3, [r0, #0x2f8] + mov r1, r8 + stmia sp, {r3, r5} + str r5, [sp, #8] + str r4, [sp, #0xc] + ldr r3, _022E53A4 ; =Dwci_QR2TeamKeyCallback + str fp, [sp, #0x10] + str r3, [sp, #0x14] + ldr r3, _022E53A8 ; =Dwci_QR2KeyListCallback + mov r2, r7 + str r3, [sp, #0x18] + ldr r3, _022E53AC ; =Dwci_QR2CountCallback + add r0, sb, #0x10 + str r3, [sp, #0x1c] + ldr r3, _022E53B0 ; =Dwci_QR2AddErrorCallback + str r3, [sp, #0x20] + mov r3, #0 + str r3, [sp, #0x24] + ldr r3, [r6, #0x2f4] + bl qr2_init_socketa + movs r6, r0 + beq _022E533C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_shutdown + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x10] + cmp r6, #3 + bne _022E531C + cmp sl, #4 + bne _022E5330 +_022E531C: + mov r0, r6 + bl Dwci_HandleQR2Error + add sp, sp, #0x28 + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E5330: + add sl, sl, #1 + cmp sl, #5 + blt _022E5260 +_022E533C: + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c] + bl Dwci_GetMatchCnt + mov r1, #0 + strh r1, [r0, #0x1a] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + ldr r1, _022E53B4 ; =Dwci_QR2PublicAddrCallback + bl qr2_register_publicaddress_callback + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + ldr r1, _022E53B8 ; =Dwci_QR2NatnegCallback + bl qr2_register_natneg_callback + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + ldr r1, _022E53BC ; =Dwci_QR2ClientMsgCallback + bl qr2_register_clientmessage_callback + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + mov r0, r6 + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E539C: .word Dwci_QR2ServerKeyCallback +_022E53A0: .word Dwci_QR2PlayerKeyCallback +_022E53A4: .word Dwci_QR2TeamKeyCallback +_022E53A8: .word Dwci_QR2KeyListCallback +_022E53AC: .word Dwci_QR2CountCallback +_022E53B0: .word Dwci_QR2AddErrorCallback +_022E53B4: .word Dwci_QR2PublicAddrCallback +_022E53B8: .word Dwci_QR2NatnegCallback +_022E53BC: .word Dwci_QR2ClientMsgCallback + arm_func_end Dwci_QR2Startup + + arm_func_start Dwci_SendStateChanged +Dwci_SendStateChanged: ; 0x022E53C0 + stmdb sp!, {r4, lr} + movs r4, r0 + ldmeqia sp!, {r4, pc} + bl qr2_think + ldr r0, [r4, #0xb4] + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + cmpne r0, #1 + beq _022E53FC + cmp r0, #2 + beq _022E5450 + ldmia sp!, {r4, pc} +_022E53FC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, pc} +_022E5410: ; jump table + ldmia sp!, {r4, pc} ; case 0 + b _022E5440 ; case 1 + b _022E5440 ; case 2 + b _022E5440 ; case 3 + b _022E5440 ; case 4 + ldmia sp!, {r4, pc} ; case 5 + b _022E5440 ; case 6 + ldmia sp!, {r4, pc} ; case 7 + ldmia sp!, {r4, pc} ; case 8 + ldmia sp!, {r4, pc} ; case 9 + ldmia sp!, {r4, pc} ; case 10 + b _022E5440 ; case 11 +_022E5440: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + ldmia sp!, {r4, pc} +_022E5450: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + ldmneia sp!, {r4, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + ldmia sp!, {r4, pc} + arm_func_end Dwci_SendStateChanged + + arm_func_start Dwci_MatchProcess +Dwci_MatchProcess: ; 0x022E5470 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r4, r0 + bl Dwci_GetMatchCnt + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_IsError + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, #0 + bne _022E54EC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022E54C0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_think +_022E54C0: + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2Think + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E54EC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _022E5C18 +_022E5514: ; jump table + b _022E5C18 ; case 0 + b _022E5B20 ; case 1 + b _022E56C8 ; case 2 + b _022E56C8 ; case 3 + b _022E554C ; case 4 + b _022E56C8 ; case 5 + b _022E5C18 ; case 6 + b _022E5788 ; case 7 + b _022E5C18 ; case 8 + b _022E5C18 ; case 9 + b _022E5C18 ; case 10 + b _022E590C ; case 11 + b _022E5C18 ; case 12 + b _022E5A00 ; case 13 +_022E554C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1c8] + cmp r0, #0 + beq _022E5638 + bl OS_GetTick + mov r6, r0 + mov r7, r1 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + ldr r1, [r5, #0x1cc] + ldr r0, [r5, #0x1d0] + subs r2, r6, r1 + sbc r0, r7, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + ldr r1, [r4, #0x1c8] + cmpeq r0, r1 + bls _022E5638 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E5624 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1aa] + add r1, r1, #1 + strb r1, [r0, #0x1aa] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1aa] + cmp r0, #5 + bls _022E5600 + ldr r1, _022E5EE4 ; =0xFFFEC5D2 + mov r0, #6 + bl Dwci_StopMatching + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5600: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + mov r1, #0 + bl Dwci_SendResvCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E5638 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5624: + mov r0, #0 + bl Dwci_RetryReserving + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022E5638: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1bc] + cmp r0, #0 + beq _022E5C18 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + ldr r0, _022E5EE8 ; =0x00000BB8 + mul r0, r1, r0 + add r0, r0, #0x3b8 + add r5, r0, #0x800 + bl OS_GetTick + mov r4, r0 + mov r6, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1c0] + ldr r0, [r0, #0x1c4] + subs r2, r4, r1 + sbc r0, r6, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r5 + blo _022E5C18 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + mov r1, #0 + bl Dwci_SendResvCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E56C8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe8] + cmp r0, #0 + ble _022E5C18 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #3 + bne _022E5704 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + ldr r0, _022E5EE8 ; =0x00000BB8 + mul r0, r1, r0 + add r0, r0, #0x3b8 + add r5, r0, #0x800 + b _022E5718 +_022E5704: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe8] + cmp r0, #1 + moveq r5, #0x3e8 + ldrne r5, _022E5EE8 ; =0x00000BB8 +_022E5718: + bl OS_GetTick + mov r4, r0 + mov r6, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0xec] + ldr r0, [r0, #0xf0] + subs r3, r4, r1 + sbc r0, r6, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r5 + bls _022E5C18 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + bl Dwci_SbUpdateAsync + bl Dwci_HandleSbError_Match + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0xe8] + b _022E5C18 +_022E5788: + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x190] + ldr r0, [r0, #0x18c] + cmp r1, #0 + cmpeq r0, #0 + beq _022E5814 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x18c] + ldr r0, [r0, #0x190] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EEC ; =0x000061A8 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5C18 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedClientProcess + cmp r0, #0 + bne _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5814: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x3cc] + cmp r0, #6 + bne _022E5C18 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EF0 ; =0x00001770 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5C18 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x3cd] + add r1, r1, #1 + strb r1, [r0, #0x3cd] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x3cd] + cmp r0, #5 + bls _022E58AC + bl Dwci_StopResendingMatchCommand + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedClientProcess + cmp r0, #0 + bne _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E58AC: + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + add r1, r4, #0x3d4 + str r1, [sp] + add r3, r5, #0x300 + ldr r1, [r0, #0x458] + mov r0, #6 + str r1, [sp, #4] + ldr r1, [r7, #0x454] + ldr r2, [r6, #0x3d0] + ldrh r3, [r3, #0xce] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E590C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x3cc] + cmp r0, #2 + bne _022E5C18 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E5974 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EF0 ; =0x00001770 + cmp r1, #0 + cmpeq r0, r2 + bhi _022E59CC +_022E5974: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E5C18 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EF4 ; =0x00004A38 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5C18 +_022E59CC: + bl Dwci_StopResendingMatchCommand + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + cmp r0, #0 + bne _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5A00: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x3cc] + cmp r0, #8 + bne _022E5C18 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EF8 ; =0x00007530 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5C18 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x3cd] + add r1, r1, #1 + strb r1, [r0, #0x3cd] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x3cd] + cmp r0, #0 + beq _022E5AC0 + bl Dwci_StopResendingMatchCommand + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022E5AB8 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + cmp r0, #0 + bne _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5AB8: + bl Dwci_RestartFromTimeout + b _022E5C18 +_022E5AC0: + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + add r1, r4, #0x3d4 + str r1, [sp] + add r3, r5, #0x300 + ldr r1, [r0, #0x458] + mov r0, #8 + str r1, [sp, #4] + ldr r1, [r7, #0x454] + ldr r2, [r6, #0x3d0] + ldrh r3, [r3, #0xce] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5B20: + bl Dwc_GetState + cmp r0, #5 + bne _022E5C18 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1f8] + ldr r0, [r0, #0x1fc] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EF8 ; =0x00007530 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5C18 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1ad] + cmp r0, #5 + blo _022E5BA0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedClientProcess + cmp r0, #0 + bne _022E5C18 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E5BA0: + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r1, [r5, #0xf4] + ldr r2, [r4, #0x24] + mov r0, #0x40 + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1ad] + add r1, r1, #1 + strb r1, [r0, #0x1ad] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + ldr r2, _022E5EFC ; =0xFF403B3A + mvn r3, #0 + adds r0, r0, r2 + str r0, [r4, #0x1f8] + adc r0, r1, r3 + str r0, [r4, #0x1fc] +_022E5C18: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _022E5C38 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #6 + bne _022E5CB0 +_022E5C38: + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x188] + ldr r0, [r0, #0x184] + cmp r1, #0 + cmpeq r0, #0 + beq _022E5CB0 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x184] + ldr r0, [r0, #0x188] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5F00 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5CB0 + bl Dwci_GetMatchCnt + mov r1, #0 + add r3, r0, #0x194 + mov r2, r1 + mov r0, #1 + bl Dwci_NnCompletedCallback +_022E5CB0: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _022E5D70 + ldr r0, _022E5F04 ; =ov00_02326F48 + mov r1, #0 + str r1, [r0, #0x18] + str r1, [r0, #0x14] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserThink + ldr r0, _022E5F04 ; =ov00_02326F48 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022E5D04 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserFree + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0xe4] +_022E5D04: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _022E5D70 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserState + cmp r0, #0 + beq _022E5D70 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x178] + ldr r0, [r0, #0x174] + cmp r1, #0 + cmpeq r0, #0 + beq _022E5D70 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x178] + ldr r0, [r0, #0x174] + cmp r5, r1 + cmpeq r4, r0 + bls _022E5D70 + ldr r1, _022E5F08 ; =0xFFFEB3EE + mov r0, #6 + bl Dwci_StopMatching +_022E5D70: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl Dwci_SendStateChanged + ldr r0, _022E5F04 ; =ov00_02326F48 + mov r1, #0 + str r1, [r0, #0xc] + mov r1, #1 + str r1, [r0, #0x10] + bl NnThink + ldr r0, _022E5F04 ; =ov00_02326F48 + mov r2, #0 + str r2, [r0, #0x10] + ldr r1, [r0, #0xc] + cmp r1, #1 + bne _022E5DB4 + str r2, [r0, #0xc] + bl NnFreeNegotiateList +_022E5DB4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + cmp r0, #0 + beq _022E5DD4 + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2Think +_022E5DD4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x12 + bne _022E5E3C + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1f0] + ldr r0, [r0, #0x1f4] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022E5EE0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022E5EE8 ; =0x00000BB8 + cmp r1, #0 + cmpeq r0, r2 + bls _022E5E3C + bl Dwci_ResumeMatching + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022E5E3C: + bl Dwci_ProcessMatchSynTimeout + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_ProcessCancelMatchSynTimeout + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_ProcessOptMinComp + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1ae] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xa + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] + bl Dwci_GpSetServerStatus + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ae] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x47c] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x480] + ldr r1, [r4, #0x47c] + blx r1 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E5EE0: .word 0x000082EA +_022E5EE4: .word 0xFFFEC5D2 +_022E5EE8: .word 0x00000BB8 +_022E5EEC: .word 0x000061A8 +_022E5EF0: .word 0x00001770 +_022E5EF4: .word 0x00004A38 +_022E5EF8: .word 0x00007530 +_022E5EFC: .word 0xFF403B3A +_022E5F00: .word 0x00002710 +_022E5F04: .word ov00_02326F48 +_022E5F08: .word 0xFFFEB3EE + arm_func_end Dwci_MatchProcess + + arm_func_start Dwci_GT2UnrecognizedMessageCallback +Dwci_GT2UnrecognizedMessageCallback: ; 0x022E5F0C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r0, [sp, #0x18] + mov r4, r3 + cmp r0, #0 + cmpne r4, #0 + mov r5, r1 + mov r6, r2 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r1, sp, #0 + mov r0, #0 + mov r2, #8 + bl MTi_CpuClear32 + mov r1, r6, asr #8 + mov r0, r6, lsl #8 + mov r2, #2 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strb r2, [sp, #1] + strh r0, [sp, #2] + str r5, [sp, #4] + ldrb r5, [r4] + cmp r5, #0xfe + ldreqb r0, [r4, #1] + cmpeq r0, #0xfd + beq _022E5F88 + cmp r5, #0x5c + bne _022E5FB4 +_022E5F88: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022E5FF0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x18] + add r3, sp, #0 + mov r1, r4 + bl qr2_parse_querya + b _022E5FF0 +_022E5FB4: + ldr r1, _022E5FFC ; =ov00_0231BF24 + mov r0, r4 + mov r2, #6 + bl memcmp + cmp r0, #0 + bne _022E5FE0 + ldr r1, [sp, #0x18] + add r2, sp, #0 + mov r0, r4 + bl NnProcessData + b _022E5FF0 +_022E5FE0: + add sp, sp, #8 + cmp r5, #0xfe + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022E5FF0: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E5FFC: .word ov00_0231BF24 + arm_func_end Dwci_GT2UnrecognizedMessageCallback + + arm_func_start Dwci_GT2ConnectAttemptCallback +Dwci_GT2ConnectAttemptCallback: ; 0x022E6000 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl Dwci_GetMatchCnt + cmp r0, #0 + beq _022E603C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #7 + bne _022E603C + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + beq _022E6050 +_022E603C: + ldr r1, _022E6230 ; =ov00_0231A1D0 + mov r0, r8 + mvn r2, #0 + bl Gt2Reject + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E6050: + bl Dwci_GT2GetConnectionListIdx + mov r5, r0 + mvn r2, #0 + cmp r5, r2 + bne _022E6080 + ldr r1, _022E6234 ; =ov00_0231A1DC + mov r0, r8 + bl Gt2Reject + ldr r1, _022E6238 ; =0xFFFEABC4 + mov r0, #6 + bl Dwci_StopMatching + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E6080: + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0x210] + cmp r7, r0 + bne _022E60C4 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #1 + add r0, r0, #0x200 + ldrh r0, [r0, #0x90] + cmp r6, r0 + beq _022E6150 +_022E60C4: + ldr r0, [sp, #0x24] + ldrb r1, [r0] + cmp r1, #0 + beq _022E613C + mov r1, #0 + mov r2, #0xa + bl strtoul + mov r4, r0 + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, sb, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r4, r0 + bne _022E613C + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + str r7, [r0, #0x210] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #1 + add r0, r0, #0x200 + strh r6, [r0, #0x90] + b _022E6150 +_022E613C: + ldr r1, _022E623C ; =ov00_0231A1E8 + mov r0, r8 + mvn r2, #0 + bl Gt2Reject + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E6150: + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl Dwci_GetMatchCnt + ldr r1, [r0, #8] + mov r0, r8 + bl Gt2Accept + cmp r0, #0 + bne _022E6188 + ldr r1, _022E6240 ; =0xFFFEC5E6 + mov r0, #6 + bl Dwci_StopMatching + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E6188: + bl Dwci_StopResendingMatchCommand + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + bne _022E61BC + ldr r1, [sp, #0x20] + ldr r0, _022E6244 ; =0x0000FFFF + mov r4, r1, asr #1 + cmp r0, r1, asr #1 + movle r4, r0 + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + strh r4, [r0, #0xb0] +_022E61BC: + mov r0, r5 + bl Dwci_GetGT2ConnectionByIdx + mov r4, r0 + mov r0, r5 + bl Dwci_GetConnectionInfoByIdx + str r8, [r4] + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + add r1, r1, #1 + strb r1, [r0, #0xd] + strb r5, [r4] + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + mov r0, r8 + mov r2, #0 + sub r1, r1, #1 + add r1, r5, r1 + ldrb r3, [r1, #0x2d0] + mov r1, r4 + strb r3, [r4, #1] + strh r2, [r4, #2] + str r2, [r4, #4] + bl Gt2SetConnectionData + mov r0, #2 + bl Dwci_PostProcessConnection + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E6230: .word ov00_0231A1D0 +_022E6234: .word ov00_0231A1DC +_022E6238: .word 0xFFFEABC4 +_022E623C: .word ov00_0231A1E8 +_022E6240: .word 0xFFFEC5E6 +_022E6244: .word 0x0000FFFF + arm_func_end Dwci_GT2ConnectAttemptCallback + + arm_func_start Dwci_GT2ConnectedCallback +Dwci_GT2ConnectedCallback: ; 0x022E6248 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r6, r0 + mov r4, r1 + bl Dwci_GetMatchCnt + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #7 + beq _022E628C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, pc} +_022E628C: + cmp r4, #0 + beq _022E6408 + cmp r4, #5 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #6 + bne _022E63DC + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xc] + add r1, r1, #1 + strb r1, [r0, #0xc] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xc] + cmp r0, #5 + bls _022E62F8 + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xc] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_022E62F8: + bl Dwci_GetMatchCnt + ldr r3, [r0, #0x200] + ldr r2, _022E64C0 ; =ov00_0231A1C0 + add r0, sp, #0x10 + mov r1, #0xc + bl OS_SnPrintf + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r2, [r6, #0x14] + ldrb r1, [r0, #0x14] + add r0, r7, r2, lsl #2 + add r1, r5, r1, lsl #1 + add r1, r1, #0x200 + ldrh r1, [r1, #0x90] + ldr r0, [r0, #0x210] + mov r2, #0 + bl Gt2AddressToString + mov r5, r0 + bl Dwci_GetMatchCnt + mvn r1, #0 + str r1, [sp] + ldr r3, _022E64C4 ; =0x00001388 + mov r1, #0 + str r3, [sp, #4] + ldr r0, [r0, #8] + mov r2, r5 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #4] + add r3, sp, #0x10 + ldr r0, [r0] + bl Gt2Connect + cmp r0, #1 + bne _022E63A8 + bl Dwci_HandleGT2Error_Match + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_022E63A8: + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_022E63DC: + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_022E6408: + bl Dwci_GT2GetConnectionListIdx + mov r5, r0 + mvn r1, #0 + cmp r5, r1 + bne _022E6430 + ldr r1, _022E64C8 ; =0xFFFEABC4 + mov r0, #6 + bl Dwci_StopMatching + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_022E6430: + bl Dwci_GetGT2ConnectionByIdx + mov r4, r0 + mov r0, r5 + bl Dwci_GetConnectionInfoByIdx + str r6, [r4] + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r2, [r0, #0xd] + mov r1, #0 + add r2, r2, #1 + strb r2, [r0, #0xd] + strb r5, [r4] + strh r1, [r4, #2] + str r1, [r4, #4] + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r2, [r0, #0xd] + mov r0, r6 + mov r1, r4 + add r2, r5, r2 + ldrb r2, [r2, #0x2d0] + strb r2, [r4, #1] + bl Gt2SetConnectionData + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _022E64B0 + mov r0, #0 + bl Dwci_PostProcessConnection + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_022E64B0: + mov r0, #1 + bl Dwci_PostProcessConnection + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022E64C0: .word ov00_0231A1C0 +_022E64C4: .word 0x00001388 +_022E64C8: .word 0xFFFEABC4 + arm_func_end Dwci_GT2ConnectedCallback + + arm_func_start Dwci_MatchGpRecvBuddyMsgCallback +Dwci_MatchGpRecvBuddyMsgCallback: ; 0x022E64CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x218 + mov sb, #0 + mov fp, r1 + mov sl, r2 + add r8, sp, #8 + mov r7, sb + mov r6, #0xa + add r5, sp, #0x18 + mvn r4, #0 +_022E64F4: + mov r0, r8 + mov r2, sb + add r1, sl, #1 + bl Dwci_GetGpBuddyAdditionalMsg + cmp r0, r4 + beq _022E652C + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl strtoul + str r0, [r5, sb, lsl #2] + add sb, sb, #1 + cmp sb, #0x80 + blt _022E64F4 +_022E652C: + add r0, sp, #0x18 + stmia sp, {r0, sb} + mov r2, #0 + ldrb r0, [sl] + mov r1, fp + mov r3, r2 + bl Dwci_ProcessRecvMatchCommand + add sp, sp, #0x218 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end Dwci_MatchGpRecvBuddyMsgCallback + + arm_func_start Dwci_StopResendingMatchCommand +Dwci_StopResendingMatchCommand: ; 0x022E6550 + stmdb sp!, {r3, lr} + bl Dwci_GetMatchCnt + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x3cd] + ldmia sp!, {r3, pc} + arm_func_end Dwci_StopResendingMatchCommand + + arm_func_start Dwci_StopMatching +Dwci_StopMatching: ; 0x022E6570 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + cmp r0, #0 + cmpne r4, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl Dwci_CloseAllConnectionsByTimeout + mov r0, r4 + mov r1, r5 + bl Dwci_SetError + ldr r1, _022E6628 ; =ov00_0231A1BC + mov r0, #1 + mov r2, #0 + bl Dwci_SetGpStatus + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r7, #1 + movne r7, #0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r8, #1 + movne r8, #0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + bl Dwci_GetFriendListIndex + mov r5, r0 + bl Dwci_GetMatchCnt + str r5, [sp] + ldr r1, [r0, #0x468] + mov r0, r4 + str r1, [sp, #4] + ldr r4, [r6, #0x464] + mov r2, r8 + mov r3, r7 + mov r1, #0 + blx r4 + bl Dwci_CloseMatching + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E6628: .word ov00_0231A1BC + arm_func_end Dwci_StopMatching + + arm_func_start Dwci_ClearQR2Key +Dwci_ClearQR2Key: ; 0x022E662C + stmdb sp!, {r3, lr} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + ldmeqia sp!, {r3, pc} + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x14] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x16] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + ldmia sp!, {r3, pc} + arm_func_end Dwci_ClearQR2Key + + arm_func_start Dwci_ProcessMatchSynPacket +Dwci_ProcessMatchSynPacket: ; 0x022E6668 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r2 + cmp r1, #2 + beq _022E6690 + cmp r1, #3 + beq _022E673C + cmp r1, #4 + beq _022E6804 + ldmia sp!, {r4, r5, r6, pc} +_022E6690: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022E672C + ldrb r0, [r4] + cmp r0, #1 + bne _022E66B8 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20c] +_022E66B8: + ldrb r6, [r4, #1] + bl Dwci_GetMatchCnt + ldrb r1, [r4, #2] + add r0, r0, r6 + strb r1, [r0, #0x2d0] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x200] + add r0, r4, r6, lsl #2 + str r1, [r0, #0xf4] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E6704 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E6718 +_022E6704: + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] +_022E6718: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ad] + mov r0, #9 + bl Dwci_SetMatchStatus +_022E672C: + mov r0, r5 + mov r1, #3 + bl Dwci_SendMatchSynPacket + ldmia sp!, {r4, r5, r6, pc} +_022E673C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + bne _022E67F4 + bl Dwci_GetMatchCnt + ldr r2, [r0, #0x1d4] + mov r1, #1 + orr r1, r2, r1, lsl r5 + str r1, [r0, #0x1d4] + ldrb r1, [r4] + ldrb r0, [r4, #1] + orr r4, r1, r0, lsl #8 + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + cmp r4, r0 + ble _022E678C + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + strh r4, [r0, #0xb0] +_022E678C: + mov r0, #0 + bl Dwci_GetAidBitmask + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1d4] + cmp r4, r0 + ldmneia sp!, {r4, r5, r6, pc} + mov r5, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E67E8 + mov r4, #4 +_022E67C0: + bl Dwci_GetMatchCnt + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + mov r1, r4 + bl Dwci_SendMatchSynPacket + add r5, r5, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _022E67C0 +_022E67E8: + mov r0, #0x11 + bl Dwci_SetMatchStatus + ldmia sp!, {r4, r5, r6, pc} +_022E67F4: + mov r0, r5 + mov r1, #4 + bl Dwci_SendMatchSynPacket + ldmia sp!, {r4, r5, r6, pc} +_022E6804: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #9 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #4 + bl Dwci_PostProcessConnection + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_ProcessMatchSynPacket + + arm_func_start Dwci_ProcessMatchClosing +Dwci_ProcessMatchClosing: ; 0x022E6820 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl Dwc_GetState + cmp r0, #5 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r5, #0 + beq _022E6870 + ldr r1, _022E6994 ; =0xFFFEC780 + mov r0, r5 + add r1, r4, r1 + bl Dwci_StopMatching + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022E6870: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x2d0] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a9] + cmp r0, #1 + beq _022E68AC + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a8] + cmp r0, #1 + beq _022E68AC + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a8] + cmp r0, #2 + bne _022E68B4 +_022E68AC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022E68B4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _022E68DC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + bl NnCancel + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x19c] +_022E68DC: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022E691C + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a8] + cmp r0, #0 + bne _022E698C + bl Dwci_GetMatchCnt + mov r1, #3 + strb r1, [r0, #0x1a8] + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2CloseAllConnectionsHard + b _022E698C +_022E691C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E693C + ldr r1, _022E6998 ; =0xFFFEC5D2 + mov r0, #6 + bl Dwci_StopMatching + b _022E698C +_022E693C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _022E6954 + bl Dwci_ResumeMatching + b _022E698C +_022E6954: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022E6984 + mov r0, #0x12 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1f0] + str r1, [r4, #0x1f4] + b _022E698C +_022E6984: + mov r0, #1 + bl Dwci_RestartFromCancel +_022E698C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E6994: .word 0xFFFEC780 +_022E6998: .word 0xFFFEC5D2 + arm_func_end Dwci_ProcessMatchClosing + + arm_func_start Dwci_ProcessMatchScClosing +Dwci_ProcessMatchScClosing: ; 0x022E699C + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a8] + cmp r0, #2 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl Dwci_CancelPreConnectedServerProcess + ldmia sp!, {r4, pc} + arm_func_end Dwci_ProcessMatchScClosing + + arm_func_start Dwci_DeleteHostByProfileID +Dwci_DeleteHostByProfileID: ; 0x022E69C0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r5, #0 + mov r4, #0 + ble _022E6A1C +_022E69E8: + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r6, r0 + bne _022E6A10 + mov r0, r4 + mov r1, r5 + bl Dwci_DeleteHostByIndex + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_022E6A10: + add r4, r4, #1 + cmp r4, r5 + blt _022E69E8 +_022E6A1C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_DeleteHostByProfileID + + arm_func_start Dwci_DeleteHostByIndex +Dwci_DeleteHostByIndex: ; 0x022E6A24 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r0 + mov r8, r1 + bl Dwci_GetMatchCnt + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl Dwci_GetMatchCnt + add r0, r0, sb, lsl #2 + ldr fp, [r0, #0xf4] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + add r0, r0, sb + ldrb r0, [r0, #0x2d0] + mov r1, #1 + ldr r2, [r4, #0x2f0] + mvn r0, r1, lsl r0 + and r0, r2, r0 + str r0, [r4, #0x2f0] + bl Dwci_SetNumValidConnection + sub r0, r8, #1 + cmp sb, r0 + bge _022E6B64 + sub r0, r8, sb + sub r5, r0, #1 + cmp r5, #0 + mov r4, #0 + ble _022E6B64 +_022E6A98: + add r7, sb, r4 + add r6, r7, #1 + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x24] + add r0, sl, r7, lsl #2 + str r1, [r0, #0x24] + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + add r0, r0, r6, lsl #1 + ldrh r1, [r0, #0xa4] + add r0, sl, r7, lsl #1 + strh r1, [r0, #0xa4] + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + add r1, sl, r7, lsl #2 + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r1, #0xf4] + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + add r1, sl, r7, lsl #2 + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0x210] + str r0, [r1, #0x210] + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + add r1, sl, r7, lsl #1 + add r0, r0, r6, lsl #1 + add r0, r0, #0x200 + ldrh r2, [r0, #0x90] + add r0, r1, #0x200 + strh r2, [r0, #0x90] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + add r0, sb, r0 + add r0, r4, r0 + ldrb r1, [r0, #0x2d1] + add r0, sb, r6 + add r0, r4, r0 + strb r1, [r0, #0x2d0] + add r4, r4, #1 + cmp r4, r5 + blt _022E6A98 +_022E6B64: + cmp r8, #0 + ble _022E6BD4 + sub r4, r8, #1 + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0x24] + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #1 + mov r1, #0 + strh r1, [r0, #0xa4] + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0xf4] + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0x210] + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #1 + add r0, r0, #0x200 + mov r1, #0 + strh r1, [r0, #0x90] + bl Dwci_GetMatchCnt + add r0, r0, r4 + mov r1, #0 + strb r1, [r0, #0x2d0] +_022E6BD4: + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end Dwci_DeleteHostByIndex + + arm_func_start Dwci_SetNumValidConnection +Dwci_SetNumValidConnection: ; 0x022E6BDC + stmdb sp!, {r4, r5, r6, lr} + mvn r5, #0 + mov r6, #0 + mov r4, #1 +_022E6BEC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x2f0] + tst r0, r4, lsl r6 + add r6, r6, #1 + addne r5, r5, #1 + cmp r6, #0x20 + blt _022E6BEC + mvn r0, #0 + cmp r5, r0 + bne _022E6C24 + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xe] + ldmia sp!, {r4, r5, r6, pc} +_022E6C24: + bl Dwci_GetMatchCnt + strb r5, [r0, #0xe] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_SetNumValidConnection + + arm_func_start Dwci_GetAllAidList +Dwci_GetAllAidList: ; 0x022E6C30 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_GetMatchCnt + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl Dwci_GetMatchCnt + add r0, r0, #0x2d0 + str r0, [r4] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r0, #1 + ldmia sp!, {r4, pc} + arm_func_end Dwci_GetAllAidList + + arm_func_start Dwci_GetValidAidList +Dwci_GetValidAidList: ; 0x022E6C64 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + bl Dwci_GetMatchCnt + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022E6D04 ; =ov00_02326F68 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + mov r5, #0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xe] + cmp r0, #0 + blt _022E6CEC + ldr r6, _022E6D04 ; =ov00_02326F68 + mov r4, #1 +_022E6CA8: + bl Dwci_GetMatchCnt + mov r8, r0 + bl Dwci_GetMatchCnt + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + ldr r1, [r8, #0x2f0] + tst r1, r4, lsl r0 + beq _022E6CEC + bl Dwci_GetMatchCnt + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + add r5, r5, #1 + strb r0, [r6], #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xe] + cmp r5, r0 + ble _022E6CA8 +_022E6CEC: + ldr r0, _022E6D04 ; =ov00_02326F68 + str r0, [r7] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xe] + add r0, r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E6D04: .word ov00_02326F68 + arm_func_end Dwci_GetValidAidList + + arm_func_start Dwci_GpSetServerStatus +Dwci_GpSetServerStatus: ; 0x022E6D08 + stmdb sp!, {lr} + sub sp, sp, #0x2c + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + addne sp, sp, #0x2c + movne r0, #0 + ldmneia sp!, {pc} + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x16] + ldr r2, _022E6DC8 ; =ov00_0231A1C0 + add r0, sp, #0x20 + add r3, r1, #1 + mov r1, #0xc + bl OS_SnPrintf + ldr r0, _022E6DCC ; =ov00_0231A200 + add r1, sp, #0x20 + add r2, sp, #0 + mov r3, #0x2f + bl Dwc_SetCommonKeyValueString + bl Dwci_GetMatchCnt + ldrb r2, [r0, #0xd] + add r0, sp, #0x20 + mov r1, #0xc + add r3, r2, #1 + ldr r2, _022E6DC8 ; =ov00_0231A1C0 + bl OS_SnPrintf + ldr r0, _022E6DD0 ; =ov00_0231A204 + add r1, sp, #0x20 + add r2, sp, #0 + mov r3, #0x2f + bl Dwc_AddCommonKeyValueString + ldr r2, _022E6DC8 ; =ov00_0231A1C0 + add r0, sp, #0x20 + mov r1, #0xc + mov r3, #3 + bl OS_SnPrintf + ldr r0, _022E6DD4 ; =ov00_0231A1CC + add r1, sp, #0x20 + add r2, sp, #0 + mov r3, #0x2f + bl Dwc_AddCommonKeyValueString + mov r0, #6 + add r1, sp, #0 + mov r2, #0 + bl Dwci_SetGpStatus + add sp, sp, #0x2c + ldmia sp!, {pc} + .align 2, 0 +_022E6DC8: .word ov00_0231A1C0 +_022E6DCC: .word ov00_0231A200 +_022E6DD0: .word ov00_0231A204 +_022E6DD4: .word ov00_0231A1CC + arm_func_end Dwci_GpSetServerStatus + + arm_func_start Dwci_ShutdownMatch +Dwci_ShutdownMatch: ; 0x022E6DD8 + stmdb sp!, {r3, lr} + mov r0, #0 + bl Dwci_SetMatchCnt + ldr r0, _022E6E4C ; =ov00_02326F48 + ldr r1, [r0, #8] + cmp r1, #0 + beq _022E6E0C + mov r0, #4 + mov r2, #0 + bl Dwc_Free + ldr r0, _022E6E4C ; =ov00_02326F48 + mov r1, #0 + str r1, [r0, #8] +_022E6E0C: + bl Dwci_ClearGameMatchKeys + ldr r0, _022E6E4C ; =ov00_02326F48 + ldr r1, [r0] + cmp r1, #0 + beq _022E6E38 + mov r0, #4 + mov r2, #0 + bl Dwc_Free + ldr r0, _022E6E4C ; =ov00_02326F48 + mov r1, #0 + str r1, [r0] +_022E6E38: + ldr r0, _022E6E4C ; =ov00_02326F48 + mov r1, #0 + strb r1, [r0, #0x1c] + strb r1, [r0, #0x1d] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E6E4C: .word ov00_02326F48 + arm_func_end Dwci_ShutdownMatch + + arm_func_start Dwci_IsShutdownMatch +Dwci_IsShutdownMatch: ; 0x022E6E50 + stmdb sp!, {r3, lr} + bl Dwci_GetMatchCnt + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end Dwci_IsShutdownMatch + + arm_func_start Dwci_ResetMatchParam +Dwci_ResetMatchParam: ; 0x022E6E68 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xc] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17c] + bl Dwci_GetMatchCnt + mov r5, r0 + mov r0, #0x10000 + bl Dwci_GetMathRand32 + add r1, r5, #0x100 + strh r0, [r1, #0x7e] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x180] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a4] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a9] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1aa] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ab] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ac] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a7] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a8] + bl Dwci_GetMatchCnt + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb2] + bl Dwci_GetMatchCnt + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb4] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1b8] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1e0] + str r1, [r0, #0x1e4] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1f0] + str r1, [r0, #0x1f4] + bl Dwci_GetMatchCnt + add r1, r0, #0x3cc + mov r0, #0 + mov r2, #0x98 + bl MTi_CpuClear32 + cmp r4, #2 + bne _022E6FD4 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x14] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E6FB8 + mov r0, #1 + bl Dwci_SetMatchStatus + ldmia sp!, {r3, r4, r5, pc} +_022E6FB8: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #0xa + bl Dwci_SetMatchStatus + ldmia sp!, {r3, r4, r5, pc} +_022E6FD4: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xd] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xe] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x14] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0xe8] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a5] + bl Dwci_GetMatchCnt + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb0] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1bc] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c0] + str r1, [r0, #0x1c4] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1cc] + str r1, [r0, #0x1d0] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1d4] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x204] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x208] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x2f0] + bl Dwci_ResetMyAid + bl Dwci_GetMatchCnt + add r1, r0, #0x24 + mov r0, #0 + mov r2, #0x80 + bl MTi_CpuClear32 + bl Dwci_GetMatchCnt + add r1, r0, #0xa4 + mov r0, #0 + mov r2, #0x40 + bl MTi_CpuClear16 + bl Dwci_GetMatchCnt + add r1, r0, #0xf4 + mov r0, #0 + mov r2, #0x80 + bl MTi_CpuClear32 + bl Dwci_GetMatchCnt + add r1, r0, #0x194 + mov r0, #0 + mov r2, #0xc + bl MTi_CpuClear32 + bl Dwci_GetMatchCnt + add r1, r0, #0x210 + mov r0, #0 + mov r2, #0x80 + bl MTi_CpuClear32 + bl Dwci_GetMatchCnt + add r1, r0, #0x290 + mov r0, #0 + mov r2, #0x40 + bl MTi_CpuClear16 + bl Dwci_GetMatchCnt + add r0, r0, #0x2d0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + bl Dwci_GetMatchCnt + add r1, r0, #0x348 + mov r0, #0 + mov r2, #0x84 + bl MTi_CpuClear32 + cmp r4, #1 + bne _022E7184 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E7168 + mov r0, #3 + bl Dwci_SetMatchStatus + ldmia sp!, {r3, r4, r5, pc} +_022E7168: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #4 + bl Dwci_SetMatchStatus + ldmia sp!, {r3, r4, r5, pc} +_022E7184: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x15] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x16] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x18] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20c] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a6] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ae] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ad] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1f8] + str r1, [r0, #0x1fc] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x46c] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x470] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_ResetMatchParam + + arm_func_start Dwci_CloseMatching +Dwci_CloseMatching: ; 0x022E7204 + stmdb sp!, {r3, lr} + bl Dwci_GetMatchCnt + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _022E7254 + ldr r0, _022E729C ; =ov00_02326F48 + ldr r1, [r0, #0x18] + cmp r1, #0 + movne r1, #1 + strne r1, [r0, #0x14] + bne _022E7254 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserFree + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0xe4] +_022E7254: + bl Dwci_NnFreeNegotiateList + mov r0, #0 + bl Dwci_SetMatchStatus + ldr r0, _022E729C ; =ov00_02326F48 + ldr r1, [r0, #8] + cmp r1, #0 + beq _022E7288 + mov r0, #4 + mov r2, #0 + bl Dwc_Free + ldr r0, _022E729C ; =ov00_02326F48 + mov r1, #0 + str r1, [r0, #8] +_022E7288: + bl Dwci_ClearGameMatchKeys + bl Dwci_GetMatchCnt + mov r1, #1 + strb r1, [r0, #0x18] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E729C: .word ov00_02326F48 + arm_func_end Dwci_CloseMatching + + arm_func_start Dwci_SbUpdateAsync +Dwci_SbUpdateAsync: ; 0x022E72A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1b0 + mov r7, #8 + mov r6, #0xa + mov r5, #0x32 + mov r4, #0x33 + mov r3, #0x34 + mov r2, #0x35 + mov r1, #0x36 + strb r7, [sp, #0xc] + strb r6, [sp, #0xd] + strb r5, [sp, #0xe] + strb r4, [sp, #0xf] + strb r3, [sp, #0x10] + strb r2, [sp, #0x11] + strb r1, [sp, #0x12] + mov r4, r0 + mov r8, #7 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E7308 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E7334 +_022E7308: + ldr r2, _022E7484 ; =ov00_02326F88 + add r3, sp, #0x13 + mov r1, #0 +_022E7314: + ldrb r0, [r2] + add r1, r1, #1 + add r2, r2, #0xc + cmp r0, #0 + strneb r0, [r3], #1 + addne r8, r8, #1 + cmp r1, #0x9a + blt _022E7314 +_022E7334: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022E73EC +_022E7348: ; jump table + b _022E73EC ; case 0 + b _022E73EC ; case 1 + b _022E73CC ; case 2 + b _022E7360 ; case 3 + b _022E73CC ; case 4 + b _022E73CC ; case 5 +_022E7360: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r0, #0 + bne _022E73C4 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r1, [r5, #0x200] + ldrb r2, [r4, #0x16] + ldrb r3, [r0, #0x15] + add r0, sp, #0xad + bl Dwci_GetDefaultMatchFilter + mov r1, r0 + ldr r0, _022E7488 ; =ov00_02326F48 + ldr r3, [r0, #8] + cmp r3, #0 + beq _022E73EC + add r0, sp, #0xad + add r0, r0, r1 + ldr r2, _022E748C ; =ov00_0231A234 + rsb r1, r1, #0x100 + bl OS_SnPrintf + b _022E73EC +_022E73C4: + bl Dwci_GetMatchCnt + ldr r4, [r0, #0x208] +_022E73CC: + ldr r2, _022E7490 ; =ov00_0231A240 + ldr r3, _022E7494 ; =ov00_0231A208 + add r0, sp, #0xad + mov r1, #0x100 + str r4, [sp] + bl OS_SnPrintf + bl Dwci_GetMatchCnt + str r4, [r0, #0x204] +_022E73EC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserClear + mov sl, #0 + add r7, sp, #0xad + mov r6, #6 + mov r5, #1 + mov r4, sl + add fp, sp, #0xc +_022E7410: + bl Dwci_GetMatchCnt + str r8, [sp] + str r7, [sp, #4] + str r6, [sp, #8] + ldr r0, [r0, #0xe4] + mov r1, r5 + mov r2, r4 + mov r3, fp + bl ServerBrowserLimitUpdateA + movs sb, r0 + beq _022E7450 + cmp sb, #2 + bne _022E7450 + add sl, sl, #1 + cmp sl, #5 + blt _022E7410 +_022E7450: + cmp sb, #0 + bne _022E7478 + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + ldr r2, _022E7498 ; =0x00EFB5F7 + adds r0, r0, r2 + str r0, [r4, #0x174] + adc r0, r1, #0 + str r0, [r4, #0x178] +_022E7478: + mov r0, sb + add sp, sp, #0x1b0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E7484: .word ov00_02326F88 +_022E7488: .word ov00_02326F48 +_022E748C: .word ov00_0231A234 +_022E7490: .word ov00_0231A240 +_022E7494: .word ov00_0231A208 +_022E7498: .word 0x00EFB5F7 + arm_func_end Dwci_SbUpdateAsync + + arm_func_start Dwci_GetDefaultMatchFilter +Dwci_GetDefaultMatchFilter: ; 0x022E749C + stmdb sp!, {lr} + sub sp, sp, #0x24 + mov lr, #3 + ldr ip, _022E74F0 ; =ov00_0231A208 + str lr, [sp] + str ip, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, _022E74F4 ; =ov00_0231A210 + ldr r1, _022E74F8 ; =ov00_0231A21C + str r2, [sp, #0x14] + str r3, [sp, #0x18] + str r1, [sp, #0x1c] + ldr r2, _022E74FC ; =ov00_0231A248 + ldr r3, _022E7500 ; =ov00_0231A228 + mov r1, #0x100 + str ip, [sp, #0x20] + bl OS_SnPrintf + add sp, sp, #0x24 + ldmia sp!, {pc} + .align 2, 0 +_022E74F0: .word ov00_0231A208 +_022E74F4: .word ov00_0231A210 +_022E74F8: .word ov00_0231A21C +_022E74FC: .word ov00_0231A248 +_022E7500: .word ov00_0231A228 + arm_func_end Dwci_GetDefaultMatchFilter + + arm_func_start Dwci_NnStartupAsync +Dwci_NnStartupAsync: ; 0x022E7504 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r8, r1 + mov r7, r2 + bl Dwci_GetMatchCnt + cmp r4, #0 + ldrb r4, [r0, #0x14] + mov r6, #0 + bne _022E7748 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r2, [r0, #0x7e] + ldr r1, [r5, #0x200] + mov r0, r7 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r8, r2, r1, lsr #16 + bl SbServerHasPrivateAddress + cmp r0, #0 + beq _022E75C0 + mov r0, r7 + bl SbServerGetPublicInetAddress + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserGetMyPublicIpAddr + cmp r5, r0 + movne r5, #1 + bne _022E7648 + bl Dwci_GetMatchCnt + mov r5, r0 + mov r0, r7 + bl SbServerGetPrivateInetAddress + add r1, r5, r4, lsl #2 + str r0, [r1, #0x210] + bl Dwci_GetMatchCnt + mov r5, r0 + mov r0, r7 + bl SbServerGetPrivateQueryPort + add r1, r5, r4, lsl #1 + add r1, r1, #0x200 + strh r0, [r1, #0x90] + mov r5, r6 + b _022E7648 +_022E75C0: + bl Soc_GetHostID + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r2, lsl #0x10 + ldr r1, _022E77EC ; =0x0000A8C0 + mov r0, r0, lsr #0x10 + cmp r0, r1 + beq _022E7608 + and r1, r2, #0xff + cmp r1, #0xac + bne _022E7600 + and r0, r2, #0xff00 + cmp r0, #0x1000 + blo _022E7600 + cmp r0, #0x1f00 + bls _022E7608 +_022E7600: + cmp r1, #0xa + bne _022E7610 +_022E7608: + mov r5, #1 + b _022E7648 +_022E7610: + bl Dwci_GetMatchCnt + mov r5, r0 + mov r0, r7 + bl SbServerGetPublicInetAddress + add r1, r5, r4, lsl #2 + str r0, [r1, #0x210] + bl Dwci_GetMatchCnt + mov r5, r0 + mov r0, r7 + bl SbServerGetPublicQueryPort + add r1, r5, r4, lsl #1 + add r1, r1, #0x200 + strh r0, [r1, #0x90] + mov r5, #0 +_022E7648: + cmp r5, #0 + beq _022E7674 + bl Dwci_GetMatchCnt + mov r4, r0 + mov r0, #0x10000 + bl Dwci_GetMathRand32 + add r1, r4, #0x100 + strh r0, [r1, #0x7e] + bl Dwci_GetMatchCnt + str r8, [r0, #0x19c] + b _022E7700 +_022E7674: + bl Soc_GetHostID + str r0, [sp, #8] + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2GetLocalPort + str r0, [sp, #0xc] + bl Dwci_GetMatchCnt + mov sb, r0 + mov r0, r7 + bl SbServerGetPublicInetAddress + mov r8, r0 + mov r0, r7 + bl SbServerGetPublicQueryPort + add r1, sb, r4, lsl #2 + add r4, sp, #8 + mov r3, r0 + mov r0, #2 + str r4, [sp] + str r0, [sp, #4] + ldr r1, [r1, #0xf4] + mov r2, r8 + mov r0, #6 + bl Dwci_SendMatchCommand + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + cmp r4, #0 + strb r1, [r0, #0x3cd] + addne sp, sp, #0x10 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x19c] +_022E7700: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x194] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x195] + bl Dwci_GetMatchCnt + mov r4, r0 + mov r0, r7 + bl SbServerGetPublicQueryPort + add r1, r4, #0x100 + strh r0, [r1, #0x96] + bl Dwci_GetMatchCnt + mov r4, r0 + mov r0, r7 + bl SbServerGetPublicInetAddress + str r0, [r4, #0x198] + b _022E7788 +_022E7748: + bl Dwci_GetMatchCnt + mov r1, #1 + strb r1, [r0, #0x194] + bl Dwci_GetMatchCnt + mov r1, r6 + strb r1, [r0, #0x195] + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + mov r1, r6 + strh r1, [r0, #0x96] + bl Dwci_GetMatchCnt + mov r1, r6 + str r1, [r0, #0x198] + bl Dwci_GetMatchCnt + str r8, [r0, #0x19c] + mov r5, #1 +_022E7788: + cmp r5, #0 + beq _022E77A4 + bl Dwci_GetMatchCnt + add r0, r0, #0x194 + bl Dwci_DoNatNegotiationAsync + mov r6, r0 + b _022E77E0 +_022E77A4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2GetSocketSocket + mov r4, r0 + bl Dwci_GetMatchCnt + add r3, r0, #0x194 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl Dwci_NnCompletedCallback + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] +_022E77E0: + mov r0, r6 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E77EC: .word 0x0000A8C0 + arm_func_end Dwci_NnStartupAsync + + arm_func_start Dwci_DoNatNegotiationAsync +Dwci_DoNatNegotiationAsync: ; 0x022E77F0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r7, r0 + ldrb r0, [r7] + cmp r0, #0 + bne _022E7848 + bl Dwci_GetMatchCnt + mov r4, r0 + mov r1, #0 + ldr r0, [r7, #4] + mov r2, r1 + bl Gt2AddressToString + mov r1, r0 + ldrh r2, [r7, #2] + ldr r0, [r4, #0xe4] + ldr r3, [r7, #8] + bl ServerBrowserSendNatNegotiateCookieToServerA + bl Dwci_HandleSbError_Match + cmp r0, #0 + addne sp, sp, #8 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022E7848: + ldr r5, _022E78A4 ; =Dwci_NnCompletedCallback + ldr r4, _022E78A8 ; =Dwci_NnProgressCallback + mov r6, #0 +_022E7854: + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2GetSocketSocket + stmia sp, {r5, r7} + ldrb r2, [r7] + ldr r1, [r7, #8] + mov r3, r4 + bl NnBeginNegotiationWithSocket + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, #3 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + add r6, r6, #1 + cmp r6, #5 + blt _022E7854 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E78A4: .word Dwci_NnCompletedCallback +_022E78A8: .word Dwci_NnProgressCallback + arm_func_end Dwci_DoNatNegotiationAsync + + arm_func_start Dwci_SendMatchCommand +Dwci_SendMatchCommand: ; 0x022E78AC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x220 + str r3, [sp, #0xc] + mov sl, r0 + str r1, [sp, #4] + str r2, [sp, #8] + ldr sb, [sp, #0x248] + ldr r8, [sp, #0x24c] + mov r6, #0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E7908 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _022E7900 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _022E7928 +_022E7900: + cmp sl, #6 + bne _022E7928 +_022E7908: + ldr r2, [sp, #0xc] + ldr r1, [sp, #8] + mov r0, sl + mov r3, sb + str r8, [sp] + bl Dwci_SendSbMsgCommand + mov r4, r0 + b _022E79D0 +_022E7928: + cmp sb, #0 + cmpne r8, #0 + beq _022E79A8 + ldr r3, [sb] + ldr r2, _022E7A68 ; =ov00_0231A1C0 + add r0, sp, #0x20 + mov r1, #0x200 + bl OS_SnPrintf + mov r6, r0 + cmp r8, #1 + mov r7, #1 + ble _022E79A8 + add r5, sp, #0x10 + add fp, sp, #0x20 +_022E7960: + ldr r3, [sb, r7, lsl #2] + ldr r2, _022E7A6C ; =ov00_0231A2A0 + mov r0, r5 + mov r1, #0x10 + bl OS_SnPrintf + mov r4, r0 + add r0, r6, r4 + add r0, r0, #1 + cmp r0, #0x200 + bhi _022E79A8 + mov r0, r5 + add r1, fp, r6 + mov r2, r4 + bl MI_CpuCopy8 + add r7, r7, #1 + add r6, r6, r4 + cmp r7, r8 + blt _022E7960 +_022E79A8: + add r0, sp, #0x20 + mov r1, #0 + strb r1, [r0, r6] + bl Dwci_GetMatchCnt + ldr r0, [r0] + ldr r2, [sp, #4] + add r3, sp, #0x20 + mov r1, sl + bl Dwci_SendGpBuddyMsgCommand + mov r4, r0 +_022E79D0: + cmp sl, #2 + cmpne sl, #6 + beq _022E79EC + add r0, sl, #0xf8 + and r0, r0, #0xff + cmp r0, #1 + bhi _022E7A5C +_022E79EC: + bl Dwci_GetMatchCnt + strb sl, [r0, #0x3cc] + bl Dwci_GetMatchCnt + add r1, r0, #0x300 + ldr r0, [sp, #0xc] + strh r0, [r1, #0xce] + bl Dwci_GetMatchCnt + ldr r1, [sp, #8] + str r1, [r0, #0x3d0] + bl Dwci_GetMatchCnt + ldr r1, [sp, #4] + str r1, [r0, #0x454] + bl Dwci_GetMatchCnt + str r8, [r0, #0x458] + bl Dwci_GetMatchCnt + mov r5, r0 + bl OS_GetTick + str r0, [r5, #0x45c] + cmp sb, #0 + str r1, [r5, #0x460] + cmpne r8, #0 + beq _022E7A5C + bl Dwci_GetMatchCnt + mov r1, r0 + mov r0, sb + add r1, r1, #0x3d4 + mov r2, r8, lsl #2 + bl MTi_CpuCopy32 +_022E7A5C: + mov r0, r4 + add sp, sp, #0x220 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E7A68: .word ov00_0231A1C0 +_022E7A6C: .word ov00_0231A2A0 + arm_func_end Dwci_SendMatchCommand + + arm_func_start Dwci_SendSbMsgCommand +Dwci_SendSbMsgCommand: ; 0x022E7A70 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x98 + ldr r5, [sp, #0xb8] + mov r4, r0 + cmp r5, #0x20 + movhi r5, #0x20 + cmp r3, #0 + cmpne r5, #0 + mov r8, r1 + mov r7, r2 + moveq r5, #0 + beq _022E7AB0 + add r1, sp, #0x18 + mov r0, r3 + mov r2, r5, lsl #2 + bl MTi_CpuCopy32 +_022E7AB0: + ldr r2, _022E7B84 ; =ov00_0231A2A4 + mov r0, r5, lsl #2 + ldrb r1, [r2, #4] + ldrb r6, [r2] + add sb, sp, #4 + ldrb r5, [r2, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r1, [sb, #4] + mov r1, #3 + strb r6, [sb] + strb r5, [sb, #1] + strb r3, [sb, #2] + strb r2, [sb, #3] + str r1, [sp, #8] + strb r4, [sp, #0xc] + strb r0, [sp, #0xd] + bl Dwci_GetMatchCnt + ldrh r0, [r0, #0x1a] + strh r0, [sp, #0xe] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1c] + str r0, [sp, #0x10] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x200] + mov r6, #0 + str r0, [sp, #0x14] + mov r4, r6 +_022E7B20: + bl Dwci_GetMatchCnt + mov r5, r0 + mov r0, r8 + mov r1, r4 + mov r2, r4 + bl Gt2AddressToString + mov r1, r0 + ldrb r0, [sp, #0xd] + mov r2, r7 + mov r3, sb + add r0, r0, #0x14 + str r0, [sp] + ldr r0, [r5, #0xe4] + bl ServerBrowserSendMessageToServerA + cmp r0, #0 + addeq sp, sp, #0x98 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r0, #2 + addne sp, sp, #0x98 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r6, r6, #1 + cmp r6, #5 + blt _022E7B20 + add sp, sp, #0x98 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E7B84: .word ov00_0231A2A4 + arm_func_end Dwci_SendSbMsgCommand + + arm_func_start Dwci_SendGpBuddyMsgCommand +Dwci_SendGpBuddyMsgCommand: ; 0x022E7B88 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x208 + mov sb, r0 + mov r8, r2 + mov r7, r3 + mov r0, #3 + mov r5, r1 + str r0, [sp] + ldr r4, _022E7C3C ; =ov00_0231A2BC + ldr r2, _022E7C40 ; =ov00_0231A2AC + ldr r3, _022E7C44 ; =ov00_0231A2B4 + add r0, sp, #8 + mov r1, #0x200 + str r4, [sp, #4] + bl OS_SnPrintf + mov r4, r0 + add r2, sp, #8 + add r1, sp, #9 + strb r5, [r2, r4] + mov r0, #0 + strb r0, [r1, r4] + cmp r7, #0 + add r6, r1, r4 + beq _022E7C24 + mov r0, r7 + bl strlen + mov r5, r0 + add r0, r4, #2 + add r0, r0, r5 + cmp r0, #0x200 + ldrhi r0, _022E7C48 ; =0x000001FF + addhi r1, r4, #1 + subhi r5, r0, r1 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MI_CpuCopy8 + mov r0, #0 + strb r0, [r6, r5] +_022E7C24: + add r2, sp, #8 + mov r0, sb + mov r1, r8 + bl GpSendBuddyMessageA + add sp, sp, #0x208 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E7C3C: .word ov00_0231A2BC +_022E7C40: .word ov00_0231A2AC +_022E7C44: .word ov00_0231A2B4 +_022E7C48: .word 0x000001FF + arm_func_end Dwci_SendGpBuddyMsgCommand + + arm_func_start Dwci_GetGpBuddyAdditionalMsg +Dwci_GetGpBuddyAdditionalMsg: ; 0x022E7C4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r1 + mov r4, r0 + mov r8, r2 + mov r0, sb + mov r1, #0 + bl strchr + mov r6, r0 + cmp r8, #0 + mov r7, #0 + ble _022E7CA4 + mov r5, #0x2f +_022E7C7C: + mov r0, sb + mov r1, r5 + bl strchr + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r7, r7, #1 + cmp r7, r8 + add sb, r0, #1 + blt _022E7C7C +_022E7CA4: + mov r0, sb + mov r1, #0x2f + bl strchr + cmp r0, #0 + moveq r0, r6 + cmp sb, r0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r5, r0, sb + mov r0, sb + mov r1, r4 + mov r2, r5 + bl MI_CpuCopy8 + mov r1, #0 + mov r0, r5 + strb r1, [r4, r5] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end Dwci_GetGpBuddyAdditionalMsg + + arm_func_start Dwci_ProcessRecvMatchCommand +Dwci_ProcessRecvMatchCommand: ; 0x022E7CE8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x118 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov sl, r3 + ldr r6, [sp, #0x138] + ldr r5, [sp, #0x13c] + mov r4, #0 + bl Dwci_GetMatchCnt + cmp r0, #0 + beq _022E7D28 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0 + bne _022E7D34 +_022E7D28: + add sp, sp, #0x118 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E7D34: + bl Dwc_GetState + cmp r0, #5 + bne _022E7D64 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022E7D64 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _022E7D64 + bl Dwci_InitClWaitTimeout +_022E7D64: + cmp sb, #0x40 + bgt _022E7E00 + bge _022E8B44 + cmp sb, #0x20 + addls pc, pc, sb, lsl #2 + b _022E8BB8 +_022E7D7C: ; jump table + b _022E8BB8 ; case 0 + b _022E7E08 ; case 1 + b _022E7FD8 ; case 2 + b _022E81AC ; case 3 + b _022E820C ; case 4 + b _022E832C ; case 5 + b _022E83A8 ; case 6 + b _022E84B8 ; case 7 + b _022E85D0 ; case 8 + b _022E8750 ; case 9 + b _022E87A4 ; case 10 + b _022E7E08 ; case 11 + b _022E884C ; case 12 + b _022E88C0 ; case 13 + b _022E88C0 ; case 14 + b _022E88C0 ; case 15 + b _022E88E4 ; case 16 + b _022E8934 ; case 17 + b _022E89D4 ; case 18 + b _022E8A30 ; case 19 + b _022E8BB8 ; case 20 + b _022E8BB8 ; case 21 + b _022E8BB8 ; case 22 + b _022E8BB8 ; case 23 + b _022E8BB8 ; case 24 + b _022E8BB8 ; case 25 + b _022E8BB8 ; case 26 + b _022E8BB8 ; case 27 + b _022E8BB8 ; case 28 + b _022E8BB8 ; case 29 + b _022E8BB8 ; case 30 + b _022E8BB8 ; case 31 + b _022E8A48 ; case 32 +_022E7E00: + cmp sb, #0x41 + b _022E8BB8 +_022E7E08: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E7E28 + ldr r0, [r6, #8] + ldr r7, [r6, #4] + mov r0, r0, lsl #0x10 + mov sl, r0, lsr #0x10 +_022E7E28: + cmp sb, #0xb + moveq r0, #1 + movne r0, #0 + str r0, [sp] + ldr r3, [r6] + mov r0, r8 + mov r1, r7 + mov r2, sl + bl Dwci_CheckResvCommand + mov r5, r0 + cmp r5, #2 + bne _022E7F4C + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1dc] + mov r0, r8 + mov r1, r7 + mov r2, sl + bl Dwci_ProcessResvOK + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022E7ED0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x46c] + cmp r0, #0 + beq _022E7ED0 + bl Dwci_GetMatchCnt + mov r6, r0 + mov r0, r8 + bl Dwci_GetFriendListIndex + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x470] + ldr r2, [r6, #0x46c] + mov r0, r4 + blx r2 +_022E7ED0: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + mov r4, #1 + str r0, [sp, #0x14] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r0, #1 + blt _022E7F18 + add r6, sp, #0x14 +_022E7EF4: + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r6, r4, lsl #2] + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r4, r0 + ble _022E7EF4 +_022E7F18: + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1c] + add r0, sp, #0x14 + str r1, [r0, r4, lsl #2] + bl Dwci_GetMatchCnt + ldrh r2, [r0, #0x1a] + add r3, r4, #1 + add r1, sp, #0x14 + mov r0, #0xb + str r2, [r1, r3, lsl #2] + add r4, r4, #2 + bl Dwci_SetMatchStatus + b _022E7F98 +_022E7F4C: + cmp r5, #3 + bne _022E7F98 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _022E7F98 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r6, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _022E7F98 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r0, #0x10 + streq r0, [sp, #0x14] + moveq r4, #1 +_022E7F98: + cmp r5, #0xff + beq _022E8BB8 + add r1, sp, #0x14 + str r1, [sp] + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, sl + str r4, [sp, #4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E7FD8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _022E8BB8 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x208] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a7] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1bc] + bl Dwci_GetMatchCnt + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #4] + str r1, [r0, #0x24] + bl Dwci_GetMatchCnt + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #8] + strh r1, [r0, #0xa4] + bl Dwci_GetMatchCnt + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #4] + str r1, [r0, #0x1b8] + bl Dwci_GetMatchCnt + ldr r1, [r6] + add r0, r0, #0x100 + add r1, r6, r1, lsl #2 + ldr r1, [r1, #8] + strh r1, [r0, #0xb4] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E8100 + ldr r1, [r6] + add r0, r6, #4 + bl Dwci_AreAllBuddies + cmp r0, #0 + beq _022E80C0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022E8100 + mov r0, r8 + mov r1, r6 + bl Dwci_MakeBackupServerData + b _022E8100 +_022E80C0: + mov r0, r8 + bl Dwci_CancelReservation + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x118 + mov r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, r0 + mov r2, r8 + bl Dwci_SendResvCommandToFriend + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8100: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E8184 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022E8144 + mov r0, r8 + mov r1, r6 + bl Dwci_MakeBackupServerData + bl Dwci_ChangeToClient + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8144: + mov r0, #6 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + mov r1, #0 + bl ServerBrowserGetServer + mov r2, r0 + mov r0, #0 + mov r1, r0 + bl Dwci_NnStartupAsync + bl Dwci_HandleNnError + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8184: + mov r0, #5 + bl Dwci_SetMatchStatus + mov r0, r8 + bl Dwci_SbUpdateAsync + bl Dwci_HandleSbError_Match + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E81AC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _022E8BB8 + cmp r5, #0 + ble _022E81F8 + ldr r0, [r6] + cmp r0, #0x10 + bne _022E81F8 + mov r0, #0xd + mov r1, #0 + bl Dwci_StopMatching + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E81F8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + bl Dwci_RetryReserving + add sp, sp, #0x118 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E820C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _022E8BB8 + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _022E8260 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a7] + cmp r0, #0x10 + blo _022E8270 +_022E8260: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E82B4 +_022E8270: + bl Dwci_GetMatchCnt + mov r1, #1 + str r1, [r0, #0x1bc] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1c0] + str r1, [r4, #0x1c4] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _022E8BB8 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1a7] + add r1, r1, #1 + strb r1, [r0, #0x1a7] + b _022E8BB8 +_022E82B4: + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x208] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a7] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E8308 + mov r0, #3 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r1, #1 + str r1, [r0, #0xe8] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + b _022E8BB8 +_022E8308: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E8BB8 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl Dwci_SendResvCommandToFriend + b _022E8BB8 +_022E832C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _022E8BB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20] + cmp r8, r0 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022E838C + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + bne _022E838C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf8] + cmp r8, r0 + bne _022E838C + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2CloseAllConnectionsHard +_022E838C: + mov r0, r8 + bl Dwci_CancelPreConnectedServerProcess + cmp r0, #0 + bne _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E83A8: + ldr r0, [r6, #4] + ldr r5, [r6] + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022E83D4 + mov r0, #6 + bl Dwci_SetMatchStatus + b _022E8404 +_022E83D4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _022E83F4 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + bne _022E8BB8 +_022E83F4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20] + cmp r8, r0 + bne _022E8BB8 +_022E8404: + bl Dwci_GetMatchCnt + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + beq _022E8450 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r6, r0, lsl #2 + str r8, [r0, #0xf4] +_022E8450: + mov r1, r4, asr #8 + mov r0, r4, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + str r5, [sp, #0xc] + strh r0, [sp, #0xa] + bl Dwci_GetMatchCnt + mov r1, #1 + strb r1, [r0, #0x194] + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2GetSocketSocket + mov r4, r0 + bl Dwci_GetMatchCnt + add r3, r0, #0x194 + mov r1, r4 + mov r0, #0 + add r2, sp, #8 + bl Dwci_NnCompletedCallback + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + b _022E8BB8 +_022E84B8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _022E8BB8 + ldr r0, [r6] + str r0, [sp, #0x10] + ldr r0, [r6, #4] + and r4, r0, #0xff + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E854C + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _022E854C + ldr r0, [sp, #0x10] + bl Dwci_IsFriendByIdxList + str r0, [sp, #0x14] + add r0, sp, #0x14 + str r0, [sp] + mov r5, #1 + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x20 + str r5, [sp, #4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E854C: + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + ldr r1, [sp, #0x10] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + str r1, [r0, #0xf4] + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x46c] + cmp r0, #0 + beq _022E8BB8 + bl Dwci_GetMatchCnt + mov r5, r0 + ldr r0, [sp, #0x10] + bl Dwci_GetFriendListIndex + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x470] + ldr r2, [r5, #0x46c] + mov r0, r4 + blx r2 + b _022E8BB8 +_022E85D0: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _022E8BB8 + ldr r0, [r6] + str r0, [sp, #0x10] + cmp r0, #0 + bne _022E8638 + ldr r5, [r6, #4] + ldr r4, [r6, #8] + bl Dwci_GetMatchCnt + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r2, [r0, #0x200] + add r1, r4, r5, lsl #2 + mov r0, #3 + str r2, [r1, #0xf4] + bl Dwci_PostProcessConnection + b _022E8BB8 +_022E8638: + ldr r0, [r6, #8] + ldr r5, [r6, #4] + and r4, r0, #0xff + bl Dwci_GetMatchCnt + add r0, r0, r5, lsl #2 + ldr r1, [sp, #0x10] + ldr r0, [r0, #0xf4] + cmp r1, r0 + bne _022E86B8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + sub r0, r0, #1 + cmp r5, r0 + bne _022E86B8 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + add r1, sp, #0x10 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r2, [r4, #0x24] + mov r1, r8 + mov r0, #9 + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E86B8: + bl Dwci_GetMatchCnt + ldr r1, [sp, #0x10] + add r0, r0, r5, lsl #2 + str r1, [r0, #0xf4] + bl Dwci_GetMatchCnt + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl Dwci_GetMatchCnt + ldr r1, [r6, #0xc] + add r0, r0, r5, lsl #2 + str r1, [r0, #0x24] + bl Dwci_GetMatchCnt + ldr r1, [r6, #0x10] + add r0, r0, r5, lsl #1 + strh r1, [r0, #0xa4] + bl Dwci_GetMatchCnt + ldr r1, [r6, #0xc] + str r1, [r0, #0x1b8] + bl Dwci_GetMatchCnt + add r1, r0, #0x100 + ldr r2, [r6, #0x10] + mov r0, #5 + strh r2, [r1, #0xb4] + bl Dwci_SetMatchStatus + ldr r0, [sp, #0x10] + bl Dwci_SbUpdateAsync + bl Dwci_HandleSbError_Match + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1bc] + b _022E8BB8 +_022E8750: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xd + bne _022E8BB8 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a4] + ldr r1, [r6] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r1, r0 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1a4] + add r1, r1, #1 + strb r1, [r0, #0x1a4] + mov r0, #0 + bl Dwci_PostProcessConnection + b _022E8BB8 +_022E87A4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + beq _022E87C4 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x12 + bne _022E8BB8 +_022E87C4: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E87E8 + ldr r1, [r6] + add r0, r6, #4 + bl Dwci_AreAllBuddies + cmp r0, #0 + beq _022E8804 +_022E87E8: + bl Dwci_GetMatchCnt + ldr r1, [r6, #4] + str r1, [r0, #0x208] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a7] + b _022E8810 +_022E8804: + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x208] +_022E8810: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022E8834 + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2CloseAllConnectionsHard + b _022E8BB8 +_022E8834: + bl Dwci_ResumeMatching + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E884C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E887C + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E8898 +_022E887C: + mov r0, r8 + bl Dwci_CancelPreConnectedClientProcess + cmp r0, #0 + bne _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8898: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E8BB8 + bl Dwci_GetMatchCnt + str r8, [r0, #0x20c] + bl Dwci_CloseAllConnectionsByTimeout + mov r0, #0 + bl Dwci_RestartFromCancel + b _022E8BB8 +_022E88C0: + ldr r2, [r6] + mov r0, r8 + mov r1, sb + bl Dwci_ProcessCancelMatchSynCommand + cmp r0, #0 + bne _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E88E4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + cmp r8, r0 + addne sp, sp, #0x118 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r5, #0 + mov r7, #0 + ble _022E8BB8 + mov r4, r7 +_022E890C: + ldr r0, [r6, r7, lsl #2] + mov r1, r4 + bl Dwci_GetAidFromProfileID + cmp r0, #0xff + beq _022E8924 + bl Dwc_CloseConnectionHard +_022E8924: + add r7, r7, #1 + cmp r7, r5 + blt _022E890C + b _022E8BB8 +_022E8934: + ldr r0, _022E8BC4 ; =ov00_02326F48 + ldr r4, [r0] + cmp r4, #0 + ldrneb r0, [r4] + cmpne r0, #0 + beq _022E8990 + bl OS_GetTick + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _022E8BC8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2 + movhs r0, #1 + strhs r0, [sp, #0x14] + bhs _022E8998 +_022E8990: + mov r0, #0 + str r0, [sp, #0x14] +_022E8998: + add r0, sp, #0x14 + str r0, [sp] + mov r4, #1 + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x12 + str r4, [sp, #4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E89D4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x13 + bne _022E8BB8 + mov r0, r8 + mov r1, #0 + bl Dwci_GetAidFromProfileID + cmp r0, #0xff + beq _022E8BB8 + ldr r1, _022E8BC4 ; =ov00_02326F48 + mov r4, #1 + ldr r3, [r1] + ldr r2, [r3, #8] + orr r2, r2, r4, lsl r0 + str r2, [r3, #8] + ldr r2, [r6] + cmp r2, #0 + beq _022E8BB8 + ldr r2, [r1] + ldr r1, [r2, #0xc] + orr r0, r1, r4, lsl r0 + str r0, [r2, #0xc] + b _022E8BB8 +_022E8A30: + mov r0, #0xc + mov r1, #0 + bl Dwci_StopMatching + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8A48: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E8BB8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _022E8BB8 + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E8BB8 +_022E8A7C: + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _022E8B2C + ldr r0, [r6] + cmp r0, #0 + bne _022E8B04 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _022E8ABC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _022E8AD4 +_022E8ABC: + bl Dwci_InvalidateReservation + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8AD4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _022E8AFC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + bl NnCancel + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x19c] +_022E8AFC: + bl Dwci_RestartFromTimeout + b _022E8BB8 +_022E8B04: + bl Dwci_GetMatchCnt + mov r4, r0 + mov r0, r8 + mov r1, #0 + bl Dwci_GetAidFromProfileID + ldr r2, [r4, #0x1dc] + mov r1, #1 + orr r0, r2, r1, lsl r0 + str r0, [r4, #0x1dc] + b _022E8BB8 +_022E8B2C: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022E8A7C + b _022E8BB8 +_022E8B44: + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E8BB8 +_022E8B58: + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _022E8BA4 + mov r4, #0 + str r4, [sp] + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x41 + str r4, [sp, #4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E8BB8 + add sp, sp, #0x118 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E8BA4: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022E8B58 +_022E8BB8: + mov r0, #1 + add sp, sp, #0x118 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022E8BC4: .word ov00_02326F48 +_022E8BC8: .word 0x000082EA + arm_func_end Dwci_ProcessRecvMatchCommand + + arm_func_start Dwci_CheckResvCommand +Dwci_CheckResvCommand: ; 0x022E8BCC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E8C4C + cmp r0, #1 + beq _022E8C04 + cmp r0, #2 + beq _022E8E28 + b _022E8EEC +_022E8C04: + bl Dwci_GetMatchCnt + ldr r0, [r0] + mov r1, r8 + bl GpIsBuddy + cmp r0, #0 + beq _022E8C30 + mov r0, r8 + bl Dwci_GetFriendListIndex + mvn r1, #0 + cmp r0, r1 + bne _022E8C38 +_022E8C30: + mov r4, #0xff + b _022E8EEC +_022E8C38: + mov r0, r8 + bl Dwci_IsFriendByIdxList + cmp r0, #0 + moveq r4, #3 + beq _022E8EEC +_022E8C4C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r5, r0 + bne _022E8CB4 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + bne _022E8CB4 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r4, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + beq _022E8CB4 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _022E8D18 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r1, [r4, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + bne _022E8D18 +_022E8CB4: + mov r4, #3 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E8EEC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + ldr r0, [r0, #0xb4] + cmp r0, #0 + bne _022E8EEC + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _022E8EEC + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r1, [r5, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + bne _022E8EEC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + b _022E8EEC +_022E8D18: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #3 + beq _022E8D38 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _022E8D64 +_022E8D38: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _022E8D58 + bl Dwci_GetMatchCnt + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _022E8D64 +_022E8D58: + cmp r7, #0 + cmpeq r6, #0 + bne _022E8D6C +_022E8D64: + mov r4, #4 + b _022E8EEC +_022E8D6C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _022E8E20 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _022E8DC8 + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _022E8DB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x200] + cmp r0, r8 + bge _022E8DC0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r8, r0 + beq _022E8DC0 +_022E8DB8: + mov r4, #2 + b _022E8EEC +_022E8DC0: + mov r4, #0xff + b _022E8EEC +_022E8DC8: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _022E8DF4 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x200] + cmp r0, r8 + bge _022E8E18 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r0, #0 + bne _022E8E18 +_022E8DF4: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + bl Dwci_CancelReservation + bl Dwci_HandleMatchCommandError + cmp r0, #0 + movne r0, #0xff + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, #2 + b _022E8EEC +_022E8E18: + mov r4, #3 + b _022E8EEC +_022E8E20: + mov r4, #2 + b _022E8EEC +_022E8E28: + bl Dwci_GetMatchCnt + ldr r0, [r0] + mov r1, r8 + bl GpIsBuddy + cmp r0, #0 + beq _022E8E54 + mov r0, r8 + bl Dwci_GetFriendListIndex + mvn r1, #0 + cmp r0, r1 + bne _022E8E5C +_022E8E54: + mov r4, #0xff + b _022E8EEC +_022E8E5C: + cmp r5, #3 + bne _022E8E80 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r4, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _022E8E88 +_022E8E80: + mov r4, #3 + b _022E8EEC +_022E8E88: + ldr r0, _022E8EF4 ; =ov00_02326F48 + ldrb r1, [r0, #0x1c] + cmp r1, #1 + ldreqb r0, [r0, #0x1d] + cmpeq r0, #1 + moveq r4, #0x13 + beq _022E8EEC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xa + bne _022E8EE0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _022E8ED4 + bl Dwci_GetMatchCnt + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _022E8EE0 +_022E8ED4: + cmp r7, #0 + cmpeq r6, #0 + bne _022E8EE8 +_022E8EE0: + mov r4, #4 + b _022E8EEC +_022E8EE8: + mov r4, #2 +_022E8EEC: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E8EF4: .word ov00_02326F48 + arm_func_end Dwci_CheckResvCommand + + arm_func_start Dwci_ProcessResvOK +Dwci_ProcessResvOK: ; 0x022E8EF8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _022E8F34 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20] + cmp r6, r0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E8F34: + bl Dwci_GetMatchCnt + mov r1, #1 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + str r6, [r0, #0x20] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1bc] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x204] + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #2 + str r6, [r0, #0xf4] + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #2 + str r5, [r0, #0x24] + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #1 + strh r4, [r0, #0xa4] + bl Dwci_GetMatchCnt + str r5, [r0, #0x1b8] + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + strh r4, [r0, #0xb4] + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetAidFromList + ldrb r1, [r4, #0x14] + add r1, r1, #1 + add r1, r5, r1 + strb r0, [r1, #0x2d0] + str r6, [sp, #8] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + mov r7, #1 + add r0, r0, #1 + add r0, r4, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0xc] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r0, #1 + blt _022E90A4 + add r6, sp, #8 + mov r5, #2 + mov r4, #7 +_022E9048: + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + mov r8, r0 + bl Dwci_GetMatchCnt + str r6, [sp] + str r5, [sp, #4] + add r0, r0, r7, lsl #1 + add r1, sb, r7, lsl #2 + add r2, r8, r7, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r4 + bl Dwci_SendMatchCommand + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r7, r7, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r7, r0 + ble _022E9048 +_022E90A4: + mov r0, #1 + bl Dwci_InitOptMinCompParam + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end Dwci_ProcessResvOK + + arm_func_start Dwci_MakeBackupServerData +Dwci_MakeBackupServerData: ; 0x022E90B8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r1, [r5] + mov r6, r0 + add r4, r1, #2 + cmp r4, #2 + bls _022E90F0 + bl Dwci_GetMatchCnt + mov r1, r0 + sub r2, r4, #2 + add r0, r5, #4 + add r1, r1, #0x350 + mov r2, r2, lsl #2 + bl MTi_CpuCopy32 +_022E90F0: + bl Dwci_GetMatchCnt + sub r1, r4, #1 + str r1, [r0, #0x348] + bl Dwci_GetMatchCnt + str r6, [r0, #0x34c] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_MakeBackupServerData + + arm_func_start Dwci_HandleMatchCommandError +Dwci_HandleMatchCommandError: ; 0x022E9108 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + mov r0, r4 + bne _022E912C + bl Dwci_HandleSbError_Match + ldmia sp!, {r4, pc} +_022E912C: + bl Dwci_HandleGpError_Match + ldmia sp!, {r4, pc} + arm_func_end Dwci_HandleMatchCommandError + + arm_func_start Dwci_SendResvCommand +Dwci_SendResvCommand: ; 0x022E9134 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r5, r0 + cmp r1, #0 + bne _022E9168 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _022E91A8 + bl Dwci_GetMatchCnt + ldrh r0, [r0, #0x1a] + cmp r0, #0 + bne _022E91A8 +_022E9168: + bl Dwci_GetMatchCnt + mov r1, #1 + str r1, [r0, #0x1bc] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1c0] + str r1, [r4, #0x1c4] + bl Dwci_GetMatchCnt + str r5, [r0, #0xf4] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x204] + add sp, sp, #0x14 + mov r0, r1 + ldmia sp!, {r4, r5, r6, r7, pc} +_022E91A8: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E922C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + mov r1, #0 + bl ServerBrowserGetServer + mov r6, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + ldr r1, _022E92E8 ; =ov00_0231A208 + mov r0, r6 + mov r2, #0 + bl SbServerGetIntValueA + str r0, [r4, #0xf4] + bl Dwci_GetMatchCnt + mov r4, r0 + mov r0, r6 + bl SbServerGetPublicInetAddress + str r0, [r4, #0x24] + bl Dwci_GetMatchCnt + mov r4, r0 + mov r0, r6 + bl SbServerGetPublicQueryPort + strh r0, [r4, #0xa4] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + mov r4, #1 + str r0, [r6, #0x204] + b _022E9268 +_022E922C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E9244 + bl Dwci_GetMatchCnt + str r5, [r0, #0xf4] +_022E9244: + bl Dwci_GetMatchCnt + str r5, [r0, #0x204] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1c] + str r0, [sp, #0xc] + bl Dwci_GetMatchCnt + ldrh r0, [r0, #0x1a] + mov r4, #3 + str r0, [sp, #0x10] +_022E9268: + bl Dwci_GetMatchCnt + ldr r1, _022E92EC ; =0x00001770 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + mov r6, r0 + bl OS_GetTick + str r0, [r6, #0x1cc] + str r1, [r6, #0x1d0] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1bc] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r0, #0 + movne r7, #0xb + moveq r7, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + str r0, [sp, #8] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + add r2, sp, #8 + stmia sp, {r2, r4} + mov r3, r0 + ldrh r3, [r3, #0xa4] + ldr r2, [r6, #0x24] + mov r1, r5 + mov r0, r7 + bl Dwci_SendMatchCommand + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022E92E8: .word ov00_0231A208 +_022E92EC: .word 0x00001770 + arm_func_end Dwci_SendResvCommand + + arm_func_start Dwci_SendResvCommandToFriend +Dwci_SendResvCommandToFriend: ; 0x022E92F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x22c + movs r4, r1 + mov r8, r0 + mov fp, r2 + beq _022E9314 + bl Dwci_GetMatchCnt + ldrb r6, [r0, #0x1a5] + b _022E9344 +_022E9314: + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x344] + ldrb r1, [r5, #0x1a5] + sub r0, r0, #1 + cmp r1, r0 + movge r6, #0 + bge _022E9344 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a5] + add r6, r0, #1 +_022E9344: + cmp r4, #0 + mov r5, #0 + moveq r7, #1 + movne r7, r5 +_022E9354: + cmp r7, #0 + cmpeq r5, #0 + beq _022E9398 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1a5] + add r1, r1, #1 + strb r1, [r0, #0x1a5] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r4, #0x1a5] + ldr r0, [r0, #0x344] + cmp r1, r0 + blt _022E9398 + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a5] +_022E9398: + cmp r5, #0 + beq _022E93E8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a5] + cmp r6, r0 + bne _022E93E8 + bl Dwci_GetMatchCnt + ldr r1, _022E95A8 ; =0x00000BB8 + str r1, [r0, #0x1c8] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1bc] + add sp, sp, #0x22c + mov r0, r1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022E93E8: + mov r5, #1 + bl Dwci_GetUserData + mov sl, r0 + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, r0 + ldrb r2, [r1, #0x1a5] + ldr r3, [sb, #0x2fc] + mov r1, #0xc + add r2, r4, r2 + ldrb r2, [r2, #0x304] + mov r0, sl + mla r1, r2, r1, r3 + bl Dwc_GetGsProfileId + movs r4, r0 + mvnne r0, #0 + cmpne r4, r0 + beq _022E9354 + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1a5] + ldr r2, [sl, #0x2fc] + mov r0, #0xc + add r1, sb, r1 + ldrb r1, [r1, #0x304] + mla r0, r1, r0, r2 + bl Dwci_Acc_IsValidFriendData + cmp r0, #0 + beq _022E9354 + mov sb, r5 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E94B0 +_022E9488: + bl Dwci_GetMatchCnt + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xf4] + cmp r4, r0 + beq _022E94B0 + add sb, sb, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp sb, r0 + ble _022E9488 +_022E94B0: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp sb, r0 + ble _022E9354 + bl Dwci_GetMatchCnt + ldr r0, [r0] + add r2, sp, #4 + mov r1, r4 + bl GpGetBuddyIndex + mov sb, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0] + ldr r1, [sp, #4] + add r2, sp, #0x18 + bl GpGetBuddyStatus + orrs r0, sb, r0 + ldreq r0, [sp, #0x1c] + cmpeq r0, #4 + bne _022E9354 + ldr r0, _022E95AC ; =ov00_0231A1CC + add r1, sp, #0xc + add r2, sp, #0x20 + mov r3, #0x2f + bl Dwc_GetCommonValueString + mov sl, r0 + ldr r0, _022E95B0 ; =ov00_0231A1C4 + add r1, sp, #8 + add r2, sp, #0x20 + mov r3, #0x2f + bl Dwc_GetCommonValueString + mov sb, r0 + ldr r0, _022E95B4 ; =ov00_0231A1C8 + add r1, sp, #0 + add r2, sp, #0x20 + mov r3, #0x2f + bl Dwc_GetCommonValueString + cmp sl, #0 + cmpgt sb, #0 + cmpgt r0, #0 + ble _022E9354 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + cmp r0, #3 + bne _022E9354 + add r0, sp, #8 + mov r1, #0 + mov r2, #0xa + bl strtoul + mov sb, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x16] + cmp sb, r0 + bne _022E9354 + cmp r4, fp + moveq r8, #1 + mov r0, r4 + mov r1, r8 + bl Dwci_SendResvCommand + add sp, sp, #0x22c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E95A8: .word 0x00000BB8 +_022E95AC: .word ov00_0231A1CC +_022E95B0: .word ov00_0231A1C4 +_022E95B4: .word ov00_0231A1C8 + arm_func_end Dwci_SendResvCommandToFriend + + arm_func_start Dwci_RetryReserving +Dwci_RetryReserving: ; 0x022E95B8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x208] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x204] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a7] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E962C + mov r0, #3 + bl Dwci_SetMatchStatus + mov r0, #0 + bl Dwci_SbUpdateAsync + bl Dwci_HandleSbError_Match + cmp r0, #0 + beq _022E9684 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E962C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E9660 + mov r0, #0 + mov r1, r0 + mov r2, r5 + bl Dwci_SendResvCommandToFriend + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022E9684 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E9660: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E9684 + ldr r1, _022E968C ; =0xFFFEC5E6 + mov r0, #6 + bl Dwci_StopMatching + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E9684: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E968C: .word 0xFFFEC5E6 + arm_func_end Dwci_RetryReserving + + arm_func_start Dwci_CancelReservation +Dwci_CancelReservation: ; 0x022E9690 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r2, [r4, #0x24] + mov r1, r5 + mov r0, #5 + bl Dwci_SendMatchCommand + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x204] + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_CancelReservation + + arm_func_start Dwci_CancelPreConnectedServerProcess +Dwci_CancelPreConnectedServerProcess: ; 0x022E96E4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _022E971C + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r1, [r4, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + moveq r4, #0 + beq _022E9720 +_022E971C: + mov r4, #1 +_022E9720: + cmp r4, #0 + beq _022E974C + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged +_022E974C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0x1f + bhs _022E977C + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + mov r1, #0 + add r0, r0, #1 + add r0, r6, r0, lsl #2 + str r1, [r0, #0xf4] +_022E977C: + bl Dwci_GetMatchCnt + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _022E97B0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + bl NnCancel + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x19c] +_022E97B0: + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + strb r0, [r6, #0x14] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x204] + cmp r4, #0 + bne _022E97F0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _022E98F8 + bl Dwci_RestartFromTimeout + b _022E98F8 +_022E97F0: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E982C + mov r0, #3 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r1, #2 + str r1, [r0, #0xe8] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + b _022E98F8 +_022E982C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E9858 + mov r0, #4 + bl Dwci_SetMatchStatus + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl Dwci_SendResvCommandToFriend + b _022E98F8 +_022E9858: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022E98F8 + mov r0, #0xe + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1d8] + bl Dwci_GetMatchCnt + add r1, r0, #0x100 + mov r2, #0 + mov r0, r5 + strh r2, [r1, #0xb2] + bl Dwci_CloseCancelHostAsync + mov r5, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E98E0 + mov r4, #0xd +_022E98AC: + bl Dwci_GetMatchCnt + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r4 + bl Dwci_SendCancelMatchSynCommand + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _022E98AC +_022E98E0: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + bne _022E98F8 + mov r0, #2 + bl Dwci_RestartFromCancel +_022E98F8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_CancelPreConnectedServerProcess + + arm_func_start Dwci_CancelPreConnectedClientProcess +Dwci_CancelPreConnectedClientProcess: ; 0x022E9900 + stmdb sp!, {r3, r4, r5, lr} + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E9940 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022E992C + bl Dwci_CloseAllConnectionsByTimeout +_022E992C: + ldr r1, _022E99BC ; =0xFFFEC5D2 + mov r0, #6 + bl Dwci_StopMatching + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E9940: + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + strb r0, [r5, #0x14] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x208] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _022E9988 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x19c] + bl NnCancel + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x19c] +_022E9988: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022E99A0 + bl Dwci_RestartFromTimeout + b _022E99B4 +_022E99A0: + mov r0, #4 + bl Dwci_SetMatchStatus + mov r0, #0 + bl Dwci_RetryReserving + mov r4, r0 +_022E99B4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E99BC: .word 0xFFFEC5D2 + arm_func_end Dwci_CancelPreConnectedClientProcess + + arm_func_start Dwci_ChangeToClient +Dwci_ChangeToClient: ; 0x022E99C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E9A58 + mov r5, #0xa +_022E99E0: + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + mov r8, r0 + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + add r1, r6, #0x348 + str r1, [sp] + ldr ip, [r0, #0x348] + add r3, r7, r4, lsl #1 + add ip, ip, #1 + str ip, [sp, #4] + add r1, sb, r4, lsl #2 + add r2, r8, r4, lsl #2 + ldrh r3, [r3, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r5 + bl Dwci_SendMatchCommand + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022E99E0 +_022E9A58: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20] + bl Dwci_GetMatchCnt + mov r1, #1 + strb r1, [r0, #0x1a8] + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2CloseAllConnectionsHard + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, r1 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end Dwci_ChangeToClient + + arm_func_start Dwci_PostProcessConnection +Dwci_PostProcessConnection: ; 0x022E9AA4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x1c + cmp r0, #4 + mov r4, #3 + mov r5, #0 + addls pc, pc, r0, lsl #2 + b _022EA12C +_022E9AC0: ; jump table + b _022E9AD4 ; case 0 + b _022E9E74 ; case 1 + b _022E9EB8 ; case 2 + b _022E9F7C ; case 3 + b _022E9F9C ; case 4 +_022E9AD4: + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + ldrb r1, [r6, #0x1a4] + sub r0, r0, #1 + cmp r1, r0 + bge _022E9B94 + mov r0, #0xd + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [sp, #8] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + str r0, [sp, #0xc] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r4, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0x10] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0x24] + str r0, [sp, #0x14] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a4] + mov r4, #5 + add r0, r0, #1 + add r0, r6, r0, lsl #1 + ldrh r0, [r0, #0xa4] + str r0, [sp, #0x18] + b _022E9DE0 +_022E9B94: + bl Dwci_GetMatchCnt + mov r1, r5 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r1, r5 + str r1, [r0, #0x20] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x10] + bl qr2_send_statechanged + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E9BD4 + mov r0, r4 + bl Dwci_SetMatchStatus + b _022E9BF8 +_022E9BD4: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E9BF0 + mov r0, #4 + bl Dwci_SetMatchStatus + b _022E9BF8 +_022E9BF0: + mov r0, #0xa + bl Dwci_SetMatchStatus +_022E9BF8: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a4] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _022E9C30 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r6, #0xd] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _022E9CE0 +_022E9C30: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022E9C68 + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r7, #0x20c] + b _022E9C88 +_022E9C68: + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20c] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x200] + str r0, [r6, #0xf4] +_022E9C88: + mov r0, #0x10 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x1d4] + mov r7, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022E9DD0 + mov r6, #2 +_022E9CB4: + bl Dwci_GetMatchCnt + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + mov r1, r6 + bl Dwci_SendMatchSynPacket + add r7, r7, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _022E9CB4 + b _022E9DD0 +_022E9CE0: + mov r0, #0 + str r0, [sp, #8] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + str r0, [sp, #0xc] + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r6, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0x10] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022E9D44 + bl Dwci_GetMatchCnt + mov r1, #2 + str r1, [r0, #0xe8] + bl Dwci_GetMatchCnt + mov r6, r0 + bl OS_GetTick + str r0, [r6, #0xec] + str r1, [r6, #0xf0] + b _022E9DD0 +_022E9D44: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E9DD0 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl Dwci_SendResvCommandToFriend + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _022E9DD0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #2 + blo _022E9DD0 + bl Dwci_GetMatchCnt + mov r8, r0 + mov r0, #0 + bl Dwci_GetAidBitmask + mov r6, r0 + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + mov r1, #1 + ldr r2, [r8, #0x1dc] + add r0, r7, r0 + ldrb r0, [r0, #0x2d0] + mvn r0, r1, lsl r0 + and r0, r6, r0 + cmp r2, r0 + beq _022E9DD0 + bl Dwci_RestartFromTimeout + b _022EA12C +_022E9DD0: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + movne r5, #1 +_022E9DE0: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + beq _022EA12C + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + mov r8, r0 + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + add r1, sp, #8 + stmia sp, {r1, r4} + mov ip, r0 + ldrb r3, [sb, #0xd] + ldrb r2, [r7, #0xd] + ldrb r1, [ip, #0xd] + add r4, sl, r3, lsl #2 + add r2, r8, r2, lsl #2 + add r3, r6, r1, lsl #1 + ldrh r3, [r3, #0xa4] + ldr r1, [r4, #0xf4] + ldr r2, [r2, #0x24] + mov r0, #8 + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x3cd] + b _022EA12C +_022E9E74: + mov r0, #1 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022E9EB0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r5, #0x20c] +_022E9EB0: + mov r5, #1 + b _022EA12C +_022E9EB8: + mov r0, #1 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022E9EE0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022E9F00 +_022E9EE0: + bl Dwci_GetMatchCnt + mov r1, #1 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x200] + str r0, [r4, #0x20] +_022E9F00: + bl Dwci_InitClWaitTimeout + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + bls _022EA12C + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + mov r8, r0 + bl Dwci_GetMatchCnt + add r3, r8, #0xf4 + ldrb r2, [r0, #0xd] + mov r1, #1 + mov r0, #9 + sub r2, r2, #1 + add r2, r3, r2, lsl #2 + str r2, [sp] + str r1, [sp, #4] + ldr r1, [r7, #0xf4] + ldr r2, [r6, #0x24] + ldrh r3, [r4, #0xa4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022EA12C + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022E9F7C: + mov r0, #1 + bl Dwci_SetMatchStatus + bl Dwci_InitClWaitTimeout + bl Dwci_GetMatchCnt + mov r1, r5 + str r1, [r0, #0x20c] + mov r5, #1 + b _022EA12C +_022E9F9C: + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + ble _022EA000 +_022E9FB0: + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + cmp r0, #0 + beq _022E9FD8 + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + cmp r0, #0x20 + blo _022E9FEC +_022E9FD8: + ldr r1, _022EA160 ; =0xFFFEA2A0 + mov r0, #0x15 + bl Dwci_StopMatching + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022E9FEC: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + blt _022E9FB0 +_022EA000: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _022EA020 + ldr r1, _022EA164 ; =ov00_0231A1BC + mov r0, #2 + mov r2, #0 + bl Dwci_SetGpStatus +_022EA020: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r7, #1 + movne r7, #0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + bl Dwci_GetFriendListIndex + mov r4, r0 + bl Dwci_GetMatchCnt + str r4, [sp] + ldr r1, [r0, #0x468] + mov r0, #0 + str r1, [sp, #4] + ldr r4, [r6, #0x464] + mov r2, r7 + mov r1, r0 + mov r3, r0 + blx r4 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022EA094 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022EA09C +_022EA094: + bl Dwci_CloseMatching + b _022EA120 +_022EA09C: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _022EA0C4 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserFree + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0xe4] +_022EA0C4: + bl Dwci_NnFreeNegotiateList + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022EA10C + bl Dwci_GpSetServerStatus + bl Dwci_HandleGpError_Match + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _022EA168 ; =ov00_02326F48 + ldrb r1, [r0, #0x1c] + cmp r1, #1 + moveq r1, #1 + streqb r1, [r0, #0x1d] + mov r0, #0xa + bl Dwci_SetMatchStatus + b _022EA114 +_022EA10C: + mov r0, #1 + bl Dwci_SetMatchStatus +_022EA114: + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20c] +_022EA120: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a9] +_022EA12C: + cmp r5, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xe4] + bl ServerBrowserClear + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022EA160: .word 0xFFFEA2A0 +_022EA164: .word ov00_0231A1BC +_022EA168: .word ov00_02326F48 + arm_func_end Dwci_PostProcessConnection + + arm_func_start Dwci_AreAllBuddies +Dwci_AreAllBuddies: ; 0x022EA16C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _022EA19C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_022EA19C: + cmp r5, #0 + mov r4, #0 + bls _022EA1EC +_022EA1A8: + ldr r0, [r6, r4, lsl #2] + bl Dwci_IsFriendByIdxList + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _022EA1E0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_022EA1E0: + add r4, r4, #1 + cmp r4, r5 + blo _022EA1A8 +_022EA1EC: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_AreAllBuddies + + arm_func_start Dwci_FinishCancelMatching +Dwci_FinishCancelMatching: ; 0x022EA1F4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldr r1, _022EA2B0 ; =ov00_0231A1BC + mov r0, #1 + mov r2, #0 + bl Dwci_SetGpStatus + bl Dwci_HandleGpError_Match + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_CloseMatching + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + cmp r0, #0 + movne r6, #1 + bne _022EA248 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r6, #1 + movne r6, #0 +_022EA248: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r7, #1 + movne r7, #0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + bl Dwci_GetFriendListIndex + mov r4, r0 + bl Dwci_GetMatchCnt + str r4, [sp] + ldr r1, [r0, #0x468] + mov r2, r7 + str r1, [sp, #4] + ldr ip, [r5, #0x464] + mov r3, r6 + mov r0, #0 + mov r1, #1 + blx ip + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a9] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EA2B0: .word ov00_0231A1BC + arm_func_end Dwci_FinishCancelMatching + + arm_func_start Dwci_InvalidateReservation +Dwci_InvalidateReservation: ; 0x022EA2B4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r4, #0 + str r4, [sp, #8] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _022EA37C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _022EA37C + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r1, [r5, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + beq _022EA37C + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + add r2, sp, #8 + mov r1, #1 + str r2, [sp] + str r1, [sp, #4] + ldrb r3, [r0, #0xd] + ldrb r2, [r6, #0xd] + ldr r1, [r7, #0x20] + add r3, r3, #1 + add r2, r2, #1 + add r3, r4, r3, lsl #1 + add r2, r5, r2, lsl #2 + ldrh r3, [r3, #0xa4] + ldr r2, [r2, #0x24] + mov r0, #0xc + bl Dwci_SendMatchCommand + mov r4, r0 + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20] +_022EA37C: + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end Dwci_InvalidateReservation + + arm_func_start Dwci_RestartFromCancel +Dwci_RestartFromCancel: ; 0x022EA388 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r4, r0 + bne _022EA3A4 + bl Dwci_FinishCancelMatching + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_022EA3A4: + bl Dwci_ResetMatchParam + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _022EA3C8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _022EA424 +_022EA3C8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r6, #1 + movne r6, #0 + bl Dwci_GetMatchCnt + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + bl Dwci_GetFriendListIndex + mov r4, r0 + bl Dwci_GetMatchCnt + str r4, [sp] + ldr r1, [r0, #0x468] + mov r0, #0 + str r1, [sp, #4] + ldr ip, [r5, #0x464] + mov r2, r6 + mov r1, #1 + mov r3, r0 + blx ip + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_022EA424: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022EA458 + cmp r4, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + bl Dwci_SbUpdateAsync + bl Dwci_HandleSbError_Match + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022EA458: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + cmpeq r4, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r0 + mov r2, r0 + bl Dwci_SendResvCommandToFriend + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_RestartFromCancel + + arm_func_start Dwci_RestartFromTimeout +Dwci_RestartFromTimeout: ; 0x022EA488 + stmdb sp!, {r3, lr} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + ldmeqia sp!, {r3, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + ldmeqia sp!, {r3, pc} + bl Dwci_CloseAllConnectionsByTimeout + mov r0, #1 + bl Dwci_RestartFromCancel + ldmia sp!, {r3, pc} + arm_func_end Dwci_RestartFromTimeout + + arm_func_start Dwci_ResumeMatching +Dwci_ResumeMatching: ; 0x022EA4BC + stmdb sp!, {r4, lr} + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x20] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a8] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _022EA56C + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022EA52C + mov r0, #3 + bl Dwci_SetMatchStatus + mov r0, #0 + bl Dwci_SbUpdateAsync + mov r4, r0 + bl Dwci_HandleSbError_Match + cmp r0, #0 + beq _022EA574 + mov r0, r4 + ldmia sp!, {r4, pc} +_022EA52C: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022EA574 + mov r0, #4 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x208] + mov r1, #0 + bl Dwci_SendResvCommand + mov r4, r0 + bl Dwci_HandleMatchCommandError + cmp r0, #0 + beq _022EA574 + mov r0, r4 + ldmia sp!, {r4, pc} +_022EA56C: + mov r0, #1 + bl Dwci_RestartFromCancel +_022EA574: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end Dwci_ResumeMatching + + arm_func_start Dwci_CloseCancelHostAsync +Dwci_CloseCancelHostAsync: ; 0x022EA57C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl Dwci_GetMatchCnt + str r5, [r0, #0x20c] + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + mov r0, r5 + add r1, r1, #1 + bl Dwci_GetGT2ConnectionByProfileID + movs r4, r0 + beq _022EA5D0 + bl Dwci_GetMatchCnt + mov r1, #2 + strb r1, [r0, #0x1a8] + ldr r0, [r4] + bl Gt2CloseConnectionHard + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022EA5D0: + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + mov r0, r5 + add r1, r1, #1 + bl Dwci_DeleteHostByProfileID + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_CloseCancelHostAsync + + arm_func_start Dwci_CloseAllConnectionsByTimeout +Dwci_CloseAllConnectionsByTimeout: ; 0x022EA5EC + stmdb sp!, {r3, lr} + bl Dwci_GetMatchCnt + mov r1, #2 + strb r1, [r0, #0x1a8] + bl Dwci_GetMatchCnt + ldr r0, [r0, #4] + ldr r0, [r0] + bl Gt2CloseAllConnectionsHard + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a8] + ldmia sp!, {r3, pc} + arm_func_end Dwci_CloseAllConnectionsByTimeout + + arm_func_start Dwci_CloseShutdownClientSC +Dwci_CloseShutdownClientSC: ; 0x022EA61C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x108 + mov r7, #0 + mov sl, r0 + arm_func_end Dwci_CloseShutdownClientSC + + arm_func_start ov00_022EA62C +ov00_022EA62C: ; 0x022EA62C + mov r8, r7 + mov sb, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EA6A4 + add r4, sp, #0x88 + add r5, sp, #8 + mov r6, sb +_022EA650: + bl Dwci_GetMatchCnt + add r0, r0, sb + ldrb r0, [r0, #0x2d0] + tst sl, r6, lsl r0 + beq _022EA67C + bl Dwci_GetMatchCnt + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r5, r8, lsl #2] + add r8, r8, #1 + b _022EA690 +_022EA67C: + bl Dwci_GetMatchCnt + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r4, r7, lsl #2] + add r7, r7, #1 +_022EA690: + add sb, sb, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp sb, r0 + ble _022EA650 +_022EA6A4: + cmp r8, #0 + mov sl, #0 + ble _022EA6FC + add sb, sp, #0x88 + mov r6, #0x10 + add r5, sp, #8 + mov r4, sl +_022EA6C0: + ldr r1, [r5, sl, lsl #2] + str sb, [sp] + mov r0, r6 + mov r2, r4 + mov r3, r4 + str r7, [sp, #4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0x108 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add sl, sl, #1 + cmp sl, r8 + blt _022EA6C0 +_022EA6FC: + bl Dwci_GetMatchCnt + mov r1, #2 + strb r1, [r0, #0x1a8] + cmp r7, #0 + mov r6, #0 + ble _022EA740 + add r5, sp, #0x88 + mov r4, r6 +_022EA71C: + ldr r0, [r5, r6, lsl #2] + mov r1, r4 + bl Dwci_GetAidFromProfileID + cmp r0, #0xff + beq _022EA734 + bl Dwc_CloseConnectionHard +_022EA734: + add r6, r6, #1 + cmp r6, r7 + blt _022EA71C +_022EA740: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, #1 + add sp, sp, #0x108 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov00_022EA62C + + arm_func_start Dwci_SendMatchSynPacket +Dwci_SendMatchSynPacket: ; 0x022EA758 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + cmp r4, #2 + beq _022EA77C + cmp r4, #3 + beq _022EA7F4 + b _022EA818 +_022EA77C: + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r6, r0 + ldrb r0, [r0, #0x2d0] + mov r6, #1 + cmp r5, r0 + moveq r0, #1 + streqb r0, [sp] + movne r0, #0 + strneb r0, [sp] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blo _022EA818 +_022EA7BC: + bl Dwci_GetMatchCnt + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + cmp r5, r0 + streqb r6, [sp, #1] + streqb r5, [sp, #2] + beq _022EA818 + add r0, r6, #1 + and r6, r0, #0xff + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r6, r0 + bls _022EA7BC + b _022EA818 +_022EA7F4: + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + strb r0, [sp] + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + mov r0, r0, asr #8 + strb r0, [sp, #1] +_022EA818: + add r2, sp, #0 + mov r0, r4 + mov r1, r5 + mov r3, #4 + bl Dwci_SendReliable + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e0] + str r1, [r4, #0x1e4] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Dwci_SendMatchSynPacket + + arm_func_start Dwci_ProcessMatchSynTimeout +Dwci_ProcessMatchSynTimeout: ; 0x022EA848 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #9 + beq _022EA87C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + beq _022EA87C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x11 + bne _022EA8C0 +_022EA87C: + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1e0] + ldr r0, [r0, #0x1e4] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022EAAB0 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r4, r0 + mov r5, r1 + b _022EA8C8 +_022EA8C0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EA8C8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #9 + beq _022EA8EC + cmp r0, #0x10 + beq _022EA958 + cmp r0, #0x11 + beq _022EAA88 + b _022EAAA8 +_022EA8EC: + ldr r0, _022EAAB4 ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _022EAAA8 + bl Dwc_GetState + cmp r0, #5 + bne _022EA934 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1ad] + cmp r0, #5 + blo _022EA934 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedClientProcess + cmp r0, #0 + bne _022EAAA8 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EA934: + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1ad] + add r1, r1, #1 + strb r1, [r0, #0x1ad] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x2d0] + mov r1, #3 + bl Dwci_SendMatchSynPacket + b _022EAAA8 +_022EA958: + ldr r0, _022EAAB4 ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _022EAAA8 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1ab] + add r1, r1, #1 + strb r1, [r0, #0x1ab] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1ab] + cmp r0, #5 + bls _022EAA20 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _022EA9A8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _022EA9B8 +_022EA9A8: + bl Dwci_CloseAllConnectionsByTimeout + mov r0, #1 + bl Dwci_RestartFromCancel + b _022EAAA8 +_022EA9B8: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1d4] + bl Dwci_CloseShutdownClientSC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022EAA04 + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ab] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e0] + str r1, [r4, #0x1e4] + b _022EAAA8 +_022EAA04: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + bl Dwci_CancelPreConnectedServerProcess + cmp r0, #0 + bne _022EAAA8 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EAA20: + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EAAA8 + mov r5, #2 + mov r6, r4 +_022EAA3C: + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldr r1, [r7, #0x1d4] + tst r1, r6, lsl r0 + bne _022EAA70 + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + mov r1, r5 + bl Dwci_SendMatchSynPacket +_022EAA70: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022EAA3C + b _022EAAA8 +_022EAA88: + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + cmp r5, r0, asr #31 + cmpeq r4, r0 + bls _022EAAA8 + mov r0, #4 + bl Dwci_PostProcessConnection +_022EAAA8: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EAAB0: .word 0x000082EA +_022EAAB4: .word 0x00001770 + arm_func_end Dwci_ProcessMatchSynTimeout + + arm_func_start Dwci_SendCancelMatchSynCommand +Dwci_SendCancelMatchSynCommand: ; 0x022EAAB8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r5, r1 + cmp r5, #0xd + mov r6, r0 + movne r4, #0 + bne _022EAAE4 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x20c] + mov r4, #1 + str r0, [sp, #8] +_022EAAE4: + add r0, sp, #8 + str r0, [sp] + mov r2, #0 + mov r0, r5 + mov r1, r6 + mov r3, r2 + str r4, [sp, #4] + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, pc} + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e8] + str r1, [r4, #0x1ec] + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Dwci_SendCancelMatchSynCommand + + arm_func_start Dwci_ProcessCancelMatchSynCommand +Dwci_ProcessCancelMatchSynCommand: ; 0x022EAB38 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwc_GetState + cmp r0, #6 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + cmp r5, #0xd + beq _022EAB74 + cmp r5, #0xe + beq _022EABB0 + cmp r5, #0xf + beq _022EAD38 + b _022EAD50 +_022EAB74: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _022EAB94 + mov r0, #8 + bl Dwci_SetMatchStatus + mov r0, r4 + bl Dwci_CloseCancelHostAsync +_022EAB94: + mov r0, r6 + mov r1, #0xe + bl Dwci_SendCancelMatchSynCommand + cmp r0, #0 + bne _022EAD50 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022EABB0: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xe + bne _022EAD1C + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022EAD58 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r2, r0, lsr #1 + mov r0, r1, lsr #1 + cmp r0, #0 + orr r2, r2, r1, lsl #31 + cmpeq r2, #0x12c + bls _022EAC7C + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022EAD58 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r3, r0, lsr #1 + mov r0, #0x12c + orr r3, r3, r1, lsl #31 + rsb r0, r0, #0 + mvn r2, #0 + adds r5, r3, r0 + adc r4, r2, r1, lsr #1 + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r0, [r0, #0xb2] + cmp r4, r0, asr #31 + cmpeq r5, r0 + bls _022EAC7C + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + strh r5, [r0, #0xb2] +_022EAC7C: + mov r0, r6 + mov r1, #0 + bl Dwci_GetAidFromProfileID + mov r4, r0 + cmp r4, #0xff + beq _022EACA8 + bl Dwci_GetMatchCnt + ldr r2, [r0, #0x1d8] + mov r1, #1 + orr r1, r2, r1, lsl r4 + str r1, [r0, #0x1d8] +_022EACA8: + mov r0, #1 + bl Dwci_GetAidBitmask + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1d8] + cmp r4, r0 + bne _022EAD50 + mov r5, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EAD10 + mov r4, #0xf +_022EACDC: + bl Dwci_GetMatchCnt + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r4 + bl Dwci_SendCancelMatchSynCommand + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _022EACDC +_022EAD10: + mov r0, #0xf + bl Dwci_SetMatchStatus + b _022EAD50 +_022EAD1C: + mov r0, r6 + mov r1, #0xf + bl Dwci_SendCancelMatchSynCommand + cmp r0, #0 + bne _022EAD50 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022EAD38: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #8 + bne _022EAD50 + mov r0, #2 + bl Dwci_RestartFromCancel +_022EAD50: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EAD58: .word 0x000082EA + arm_func_end Dwci_ProcessCancelMatchSynCommand + + arm_func_start Dwci_ProcessCancelMatchSynTimeout +Dwci_ProcessCancelMatchSynTimeout: ; 0x022EAD5C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _022EAD90 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xe + beq _022EAD90 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xf + bne _022EADD4 +_022EAD90: + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _022EAF54 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r4, r0 + mov r5, r1 + b _022EADDC +_022EADD4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EADDC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _022EAE00 + cmp r0, #0xe + beq _022EAE30 + cmp r0, #0xf + beq _022EAF2C + b _022EAF4C +_022EAE00: + ldr r0, _022EAF58 ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _022EAF4C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0xf4] + mov r1, #0xe + bl Dwci_SendCancelMatchSynCommand + cmp r0, #0 + bne _022EAF4C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EAE30: + ldr r0, _022EAF58 ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _022EAF4C + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x1ac] + add r1, r1, #1 + strb r1, [r0, #0x1ac] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x1ac] + cmp r0, #5 + bls _022EAEB8 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1d8] + bl Dwci_CloseShutdownClientSC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _022EAEAC + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ac] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e8] + str r1, [r4, #0x1ec] + b _022EAF4C +_022EAEAC: + mov r0, #2 + bl Dwci_RestartFromCancel + b _022EAF4C +_022EAEB8: + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EAF4C + mov r5, #0xd + mov r6, r4 +_022EAED4: + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldr r1, [r7, #0x1d8] + tst r1, r6, lsl r0 + bne _022EAF14 + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r5 + bl Dwci_SendCancelMatchSynCommand + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022EAF14: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022EAED4 + b _022EAF4C +_022EAF2C: + bl Dwci_GetMatchCnt + add r0, r0, #0x100 + ldrh r0, [r0, #0xb2] + cmp r5, r0, asr #31 + cmpeq r4, r0 + bls _022EAF4C + mov r0, #2 + bl Dwci_RestartFromCancel +_022EAF4C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EAF54: .word 0x000082EA +_022EAF58: .word 0x00001770 + arm_func_end Dwci_ProcessCancelMatchSynTimeout + + arm_func_start Dwci_ClearGameMatchKeys +Dwci_ClearGameMatchKeys: ; 0x022EAF5C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, #0 + ldr r7, _022EAFAC ; =ov00_02326F88 + mov r5, #4 + mov r4, r6 +_022EAF70: + ldr r1, [r7, #4] + cmp r1, #0 + beq _022EAF88 + mov r0, r5 + mov r2, r4 + bl Dwc_Free +_022EAF88: + add r6, r6, #1 + cmp r6, #0x9a + add r7, r7, #0xc + blt _022EAF70 + ldr r1, _022EAFAC ; =ov00_02326F88 + ldr r2, _022EAFB0 ; =0x00000738 + mov r0, #0 + bl MTi_CpuClear32 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EAFAC: .word ov00_02326F88 +_022EAFB0: .word 0x00000738 + arm_func_end Dwci_ClearGameMatchKeys + + arm_func_start Dwci_GetAidFromList +Dwci_GetAidFromList: ; 0x022EAFB4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, #0 + mov r4, r5 +_022EAFC0: + mov r6, r4 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r0, #0 + blt _022EAFFC +_022EAFD4: + bl Dwci_GetMatchCnt + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + cmp r5, r0 + beq _022EAFFC + add r6, r6, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r6, r0 + ble _022EAFD4 +_022EAFFC: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x14] + cmp r6, r0 + bgt _022EB01C + add r0, r5, #1 + and r5, r0, #0xff + cmp r5, #0x20 + blo _022EAFC0 +_022EB01C: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_GetAidFromList + + arm_func_start Dwci_IsFriendByIdxList +Dwci_IsFriendByIdxList: ; 0x022EB024 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x2fc] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r4, #0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x344] + cmp r0, #0 + ble _022EB08C +_022EB054: + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x304] + bl Dwci_GetProfileIdFromList + cmp r0, #0 + ble _022EB078 + cmp r0, r5 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_022EB078: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x344] + cmp r4, r0 + blt _022EB054 +_022EB08C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_IsFriendByIdxList + + arm_func_start Dwci_GetAidFromProfileID +Dwci_GetAidFromProfileID: ; 0x022EB094 + stmdb sp!, {r3, r4, r5, lr} + cmp r1, #0 + moveq r4, #1 + mov r5, r0 + movne r4, #0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + bgt _022EB0F0 +_022EB0B8: + bl Dwci_GetMatchCnt + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r5, r0 + bne _022EB0DC + bl Dwci_GetMatchCnt + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldmia sp!, {r3, r4, r5, pc} +_022EB0DC: + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022EB0B8 +_022EB0F0: + mov r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_GetAidFromProfileID + + arm_func_start Dwci_GetAidBitmask +Dwci_GetAidBitmask: ; 0x022EB0F8 + stmdb sp!, {r4, r5, r6, lr} + cmp r0, #0 + mov r5, #0 + beq _022EB118 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x2f0] + bic r0, r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_022EB118: + mov r6, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EB154 + mov r4, r6 +_022EB130: + bl Dwci_GetMatchCnt + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + add r6, r6, #1 + orr r5, r5, r4, lsl r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r6, r0 + ble _022EB130 +_022EB154: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_GetAidBitmask + + arm_func_start Dwci_InitClWaitTimeout +Dwci_InitClWaitTimeout: ; 0x022EB15C + stmdb sp!, {r4, lr} + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x1ad] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1f8] + str r1, [r4, #0x1fc] + ldmia sp!, {r4, pc} + arm_func_end Dwci_InitClWaitTimeout + + arm_func_start Dwci_InitOptMinCompParam +Dwci_InitOptMinCompParam: ; 0x022EB184 + stmdb sp!, {r4, lr} + ldr r1, _022EB1F0 ; =ov00_02326F48 + mov r4, r0 + ldr r3, [r1] + cmp r3, #0 + ldrneb r0, [r3] + cmpne r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #0 + str r2, [r3, #8] + ldr r0, [r1] + str r2, [r0, #0xc] + ldr r0, [r1] + strb r2, [r0, #2] + bl OS_GetTick + ldr r2, _022EB1F0 ; =ov00_02326F48 + cmp r4, #0 + ldr r2, [r2] + str r0, [r2, #0x18] + str r1, [r2, #0x1c] + ldmneia sp!, {r4, pc} + bl OS_GetTick + ldr r2, _022EB1F0 ; =ov00_02326F48 + ldr r2, [r2] + str r0, [r2, #0x10] + str r1, [r2, #0x14] + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB1F0: .word ov00_02326F48 + arm_func_end Dwci_InitOptMinCompParam + + arm_func_start Dwci_ProcessOptMinComp +Dwci_ProcessOptMinComp: ; 0x022EB1F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r0, _022EB614 ; =ov00_02326F48 + ldr r0, [r0] + cmp r0, #0 + ldrneb r0, [r0] + cmpne r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0x13 + bne _022EB450 + mov r0, #0 + bl Dwci_GetAidBitmask + ldr r1, _022EB614 ; =ov00_02326F48 + ldr r5, [r1] + ldr r1, [r5, #8] + cmp r1, r0 + bne _022EB328 + ldr r1, [r5, #0xc] + cmp r1, r0 + bne _022EB2B4 + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0xd] + mov r0, #0 + sub r1, r1, #1 + strb r1, [r4, #0x1a4] + bl Dwci_PostProcessConnection + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB2B4: + bl OS_GetTick + str r0, [r5, #0x18] + str r1, [r5, #0x1c] + mov r0, #0 + str r0, [r5, #8] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _022EB308 + mov r0, #3 + bl Dwci_SetMatchStatus + bl Dwci_GetMatchCnt + mov r1, #2 + str r1, [r0, #0xe8] + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #8 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB308: + mov r0, #4 + bl Dwci_SetMatchStatus + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl Dwci_SendResvCommandToFriend + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB328: + ldrb r4, [r5, #2] + bl OS_GetTick + ldr r3, [r5, #0x18] + ldr r2, [r5, #0x1c] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _022EB618 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _022EB61C ; =0x00001770 + mul r2, r4, r2 + cmp r1, r2, asr #31 + cmpeq r0, r2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r4, #5 + bls _022EB394 + mov r0, #1 + bl Dwci_InitOptMinCompParam + bl Dwci_CloseAllConnectionsByTimeout + mov r0, #1 + bl Dwci_RestartFromCancel + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB394: + mov r7, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EB434 + ldr r8, _022EB614 ; =ov00_02326F48 + mov r5, #0 + mov r4, #0x11 + mov r6, r7 +_022EB3B8: + bl Dwci_GetMatchCnt + add r0, r0, r7 + ldr r1, [r8] + ldrb r0, [r0, #0x2d0] + ldr r1, [r1, #8] + tst r1, r6, lsl r0 + bne _022EB420 + bl Dwci_GetMatchCnt + mov sl, r0 + bl Dwci_GetMatchCnt + mov sb, r0 + bl Dwci_GetMatchCnt + str r5, [sp] + str r5, [sp, #4] + add r0, r0, r7, lsl #1 + add r1, sl, r7, lsl #2 + add r2, sb, r7, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r4 + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB420: + add r7, r7, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _022EB3B8 +_022EB434: + ldr r0, _022EB614 ; =ov00_02326F48 + add sp, sp, #8 + ldr r1, [r0] + ldrb r0, [r1, #2] + add r0, r0, #1 + strb r0, [r1, #2] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB450: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #4 + beq _022EB474 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB474: + ldr r0, _022EB614 ; =ov00_02326F48 + ldr r4, [r0] + bl Dwci_GetMatchCnt + ldrb r1, [r4, #1] + ldrb r2, [r0, #0xd] + sub r0, r1, #1 + cmp r2, r0 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [r4, #2] + cmp r0, #0 + bne _022EB4E8 + ldr r0, _022EB614 ; =ov00_02326F48 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _022EB618 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2 + bhs _022EB540 +_022EB4E8: + ldrb r0, [r4, #2] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _022EB614 ; =ov00_02326F48 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0x18] + ldr r2, [r4, #0x1c] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _022EB618 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2, lsr #2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB540: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _022EB56C + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x204] + bl Dwci_CancelReservation + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EB56C: + mov r0, #0x13 + bl Dwci_SetMatchStatus + mov r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _022EB5F0 + mov r6, #0 + mov r5, #0x11 +_022EB590: + bl Dwci_GetMatchCnt + mov r8, r0 + bl Dwci_GetMatchCnt + mov r7, r0 + bl Dwci_GetMatchCnt + str r6, [sp] + str r6, [sp, #4] + add r0, r0, r4, lsl #1 + add r1, r8, r4, lsl #2 + add r2, r7, r4, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r5 + bl Dwci_SendMatchCommand + bl Dwci_HandleMatchCommandError + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r4, r4, #1 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _022EB590 +_022EB5F0: + ldr r0, _022EB614 ; =ov00_02326F48 + ldr r4, [r0] + bl OS_GetTick + str r0, [r4, #0x18] + str r1, [r4, #0x1c] + mov r0, #1 + strb r0, [r4, #2] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022EB614: .word ov00_02326F48 +_022EB618: .word 0x000082EA +_022EB61C: .word 0x00001770 + arm_func_end Dwci_ProcessOptMinComp + + arm_func_start Dwci_HandleGpError_Match +Dwci_HandleGpError_Match: ; 0x022EB620 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _022EB67C +_022EB63C: ; jump table + b _022EB67C ; case 0 + b _022EB650 ; case 1 + b _022EB65C ; case 2 + b _022EB668 ; case 3 + b _022EB674 ; case 4 +_022EB650: + mov r0, #9 + sub r2, r0, #0xa + b _022EB67C +_022EB65C: + mov r0, #9 + sub r2, r0, #0xb + b _022EB67C +_022EB668: + mov r0, #6 + sub r2, r0, #0x10 + b _022EB67C +_022EB674: + mov r0, #6 + sub r2, r0, #0x1a +_022EB67C: + ldr r1, _022EB690 ; =0xFFFEC398 + add r1, r2, r1 + bl Dwci_StopMatching + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB690: .word 0xFFFEC398 + arm_func_end Dwci_HandleGpError_Match + + arm_func_start Dwci_HandleSbError_Match +Dwci_HandleSbError_Match: ; 0x022EB694 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #6 + addls pc, pc, r4, lsl #2 + b _022EB710 +_022EB6B0: ; jump table + b _022EB710 ; case 0 + b _022EB6CC ; case 1 + b _022EB6D8 ; case 2 + b _022EB6E4 ; case 3 + b _022EB6F0 ; case 4 + b _022EB6FC ; case 5 + b _022EB708 ; case 6 +_022EB6CC: + mov r0, #6 + sub r2, r0, #0x38 + b _022EB710 +_022EB6D8: + mov r0, #6 + sub r2, r0, #0x24 + b _022EB710 +_022EB6E4: + mov r0, #6 + sub r2, r0, #0x1a + b _022EB710 +_022EB6F0: + mov r0, #6 + sub r2, r0, #0x2e + b _022EB710 +_022EB6FC: + mov r0, #9 + sub r2, r0, #0xa + b _022EB710 +_022EB708: + mov r0, #9 + sub r2, r0, #0xb +_022EB710: + ldr r1, _022EB724 ; =0xFFFEB3F8 + add r1, r2, r1 + bl Dwci_StopMatching + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB724: .word 0xFFFEB3F8 + arm_func_end Dwci_HandleSbError_Match + + arm_func_start Dwci_HandleQR2Error +Dwci_HandleQR2Error: ; 0x022EB728 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #5 + addls pc, pc, r6, lsl #2 + b _022EB794 +_022EB744: ; jump table + b _022EB794 ; case 0 + b _022EB75C ; case 1 + b _022EB768 ; case 2 + b _022EB774 ; case 3 + b _022EB780 ; case 4 + b _022EB78C ; case 5 +_022EB75C: + mov r5, #6 + sub r4, r5, #0x38 + b _022EB794 +_022EB768: + mov r5, #6 + sub r4, r5, #0x42 + b _022EB794 +_022EB774: + mov r5, #6 + sub r4, r5, #0x24 + b _022EB794 +_022EB780: + mov r5, #6 + sub r4, r5, #0x56 + b _022EB794 +_022EB78C: + mov r5, #6 + sub r4, r5, #0x1a +_022EB794: + bl Dwc_GetState + cmp r0, #2 + beq _022EB7B4 + cmp r0, #4 + beq _022EB7C4 + cmp r0, #5 + beq _022EB7D8 + b _022EB7EC +_022EB7B4: + mov r0, r5 + sub r1, r4, #0xfa00 + bl Dwci_StopLogin + b _022EB7FC +_022EB7C4: + ldr r1, _022EB804 ; =0xFFFEDEF0 + mov r0, r5 + add r1, r4, r1 + bl Dwci_StopFriendProcess + b _022EB7FC +_022EB7D8: + ldr r1, _022EB808 ; =0xFFFEB7E0 + mov r0, r5 + add r1, r4, r1 + bl Dwci_StopMatching + b _022EB7FC +_022EB7EC: + ldr r1, _022EB80C ; =0xFFFE90D0 + mov r0, r5 + add r1, r4, r1 + bl Dwci_SetError +_022EB7FC: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EB804: .word 0xFFFEDEF0 +_022EB808: .word 0xFFFEB7E0 +_022EB80C: .word 0xFFFE90D0 + arm_func_end Dwci_HandleQR2Error + + arm_func_start Dwci_HandleNnError +Dwci_HandleNnError: ; 0x022EB810 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #1 + beq _022EB840 + cmp r4, #2 + beq _022EB84C + cmp r4, #3 + moveq r0, #6 + subeq r2, r0, #0x24 + b _022EB854 +_022EB840: + mov r0, #9 + sub r2, r0, #0xa + b _022EB854 +_022EB84C: + mov r0, #6 + sub r2, r0, #0x38 +_022EB854: + ldr r1, _022EB868 ; =0xFFFEB010 + add r1, r2, r1 + bl Dwci_StopMatching + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB868: .word 0xFFFEB010 + arm_func_end Dwci_HandleNnError + + arm_func_start Dwci_HandleNnResult +Dwci_HandleNnResult: ; 0x022EB86C + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #1 + beq _022EB898 + cmp r4, #2 + beq _022EB8A0 + cmp r4, #3 + beq _022EB8A8 + b _022EB8B0 +_022EB898: + mov r0, #1 + ldmia sp!, {r4, pc} +_022EB8A0: + mov r0, #2 + ldmia sp!, {r4, pc} +_022EB8A8: + mov r0, #3 + ldmia sp!, {r4, pc} +_022EB8B0: + movs r0, #6 + beq _022EB8C0 + ldr r1, _022EB8C8 ; =0xFFFEB007 + bl Dwci_StopMatching +_022EB8C0: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB8C8: .word 0xFFFEB007 + arm_func_end Dwci_HandleNnResult + + arm_func_start Dwci_HandleGT2Error_Match +Dwci_HandleGT2Error_Match: ; 0x022EB8CC + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _022EB950 +_022EB8E8: ; jump table + b _022EB950 ; case 0 + b _022EB908 ; case 1 + b _022EB914 ; case 2 + b _022EB924 ; case 3 + b _022EB930 ; case 4 + b _022EB914 ; case 5 + b _022EB93C ; case 6 + b _022EB948 ; case 7 +_022EB908: + mov r0, #9 + sub r2, r0, #0xa + b _022EB950 +_022EB914: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _022EB950 +_022EB924: + mov r0, #6 + sub r2, r0, #0x10 + b _022EB950 +_022EB930: + mov r0, #6 + sub r2, r0, #0x24 + b _022EB950 +_022EB93C: + mov r0, #6 + sub r2, r0, #0x4c + b _022EB950 +_022EB948: + mov r0, #6 + sub r2, r0, #0x56 +_022EB950: + cmp r0, #0 + beq _022EB964 + ldr r1, _022EB96C ; =0xFFFEAC28 + add r1, r2, r1 + bl Dwci_StopMatching +_022EB964: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB96C: .word 0xFFFEAC28 + arm_func_end Dwci_HandleGT2Error_Match + + arm_func_start Dwci_QR2ServerKeyCallback +Dwci_QR2ServerKeyCallback: ; 0x022EB970 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0x32 + bgt _022EB9A4 + bge _022EB9EC + cmp r0, #0xa + bgt _022EBA48 + cmp r0, #8 + blt _022EBA48 + beq _022EB9C4 + cmp r0, #0xa + beq _022EB9D8 + b _022EBA48 +_022EB9A4: + sub r1, r0, #0x33 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _022EBA48 +_022EB9B4: ; jump table + b _022EBA00 ; case 0 + b _022EBA14 ; case 1 + b _022EBA28 ; case 2 + b _022EBA38 ; case 3 +_022EB9C4: + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x14] + mov r0, r4 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EB9D8: + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x16] + mov r0, r4 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EB9EC: + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x200] + mov r0, r4 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EBA00: + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x15] + mov r0, r4 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EBA14: + bl Dwci_GetMatchCnt + ldr r1, [r0, #0x20] + mov r0, r4 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EBA28: + mov r0, r4 + mov r1, #3 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EBA38: + mov r0, r4 + mov r1, #1 + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} +_022EBA48: + subs r1, r0, #0x64 + ldmmiia sp!, {r4, pc} + cmp r1, #0x9a + ldmgeia sp!, {r4, pc} + mov r0, #0xc + mul r2, r1, r0 + ldr r0, _022EBAAC ; =ov00_02326F88 + ldrb r0, [r0, r2] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022EBAB0 ; =ov00_02326F89 + ldrb r0, [r0, r2] + cmp r0, #0 + beq _022EBA94 + ldr r1, _022EBAB4 ; =ov00_02326F90 + mov r0, r4 + ldr r1, [r1, r2] + bl Qr2_Buffer_AddA + ldmia sp!, {r4, pc} +_022EBA94: + ldr r1, _022EBAB4 ; =ov00_02326F90 + mov r0, r4 + ldr r1, [r1, r2] + ldr r1, [r1] + bl qr2_buffer_add_int + ldmia sp!, {r4, pc} + .align 2, 0 +_022EBAAC: .word ov00_02326F88 +_022EBAB0: .word ov00_02326F89 +_022EBAB4: .word ov00_02326F90 + arm_func_end Dwci_QR2ServerKeyCallback + + arm_func_start Dwci_QR2PlayerKeyCallback +Dwci_QR2PlayerKeyCallback: ; 0x022EBAB8 + bx lr + arm_func_end Dwci_QR2PlayerKeyCallback + + arm_func_start Dwci_QR2TeamKeyCallback +Dwci_QR2TeamKeyCallback: ; 0x022EBABC + bx lr + arm_func_end Dwci_QR2TeamKeyCallback + + arm_func_start Dwci_QR2KeyListCallback +Dwci_QR2KeyListCallback: ; 0x022EBAC0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + cmp r0, #0 + beq _022EBADC + cmp r0, #1 + cmpne r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_022EBADC: + mov r0, r6 + mov r1, #8 + bl qr2_keybuffer_add + mov r0, r6 + mov r1, #0xa + bl qr2_keybuffer_add + mov r0, r6 + mov r1, #0x32 + bl qr2_keybuffer_add + mov r0, r6 + mov r1, #0x33 + bl qr2_keybuffer_add + mov r0, r6 + mov r1, #0x34 + bl qr2_keybuffer_add + mov r0, r6 + mov r1, #0x35 + bl qr2_keybuffer_add + mov r0, r6 + mov r1, #0x36 + bl qr2_keybuffer_add + ldr r5, _022EBB60 ; =ov00_02326F88 + mov r4, #0 +_022EBB38: + ldrb r1, [r5] + cmp r1, #0 + beq _022EBB4C + mov r0, r6 + bl qr2_keybuffer_add +_022EBB4C: + add r4, r4, #1 + cmp r4, #0x9a + add r5, r5, #0xc + blt _022EBB38 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EBB60: .word ov00_02326F88 + arm_func_end Dwci_QR2KeyListCallback + + arm_func_start Dwci_QR2CountCallback +Dwci_QR2CountCallback: ; 0x022EBB64 + mov r0, #0 + bx lr + arm_func_end Dwci_QR2CountCallback + + arm_func_start Dwci_QR2AddErrorCallback +Dwci_QR2AddErrorCallback: ; 0x022EBB6C + ldr ip, _022EBB74 ; =Dwci_HandleQR2Error + bx ip + .align 2, 0 +_022EBB74: .word Dwci_HandleQR2Error + arm_func_end Dwci_QR2AddErrorCallback + + arm_func_start Dwci_QR2PublicAddrCallback +Dwci_QR2PublicAddrCallback: ; 0x022EBB78 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl Dwci_GetMatchCnt + str r5, [r0, #0x1c] + bl Dwci_GetMatchCnt + strh r4, [r0, #0x1a] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwci_QR2PublicAddrCallback + + arm_func_start Dwci_QR2NatnegCallback +Dwci_QR2NatnegCallback: ; 0x022EBB98 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _022EBBBC + mov r0, #6 + bl Dwci_SetMatchStatus + b _022EBBDC +_022EBBBC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _022EBBDC + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + ldmneia sp!, {r4, pc} +_022EBBDC: + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x180] + cmp r4, r0 + bne _022EBC00 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x17c] + add r1, r1, #1 + strb r1, [r0, #0x17c] + b _022EBC14 +_022EBC00: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17c] + bl Dwci_GetMatchCnt + str r4, [r0, #0x180] +_022EBC14: + bl Dwci_GetMatchCnt + mov r2, #0 + str r2, [r0, #0x184] + str r2, [r0, #0x188] + mov r1, r4 + mov r0, #1 + bl Dwci_NnStartupAsync + bl Dwci_HandleNnError + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl Dwci_GetMatchCnt + mov r1, #0xff + strb r1, [r0, #0x3cc] + ldmia sp!, {r4, pc} + arm_func_end Dwci_QR2NatnegCallback + + arm_func_start Dwci_QR2ClientMsgCallback +Dwci_QR2ClientMsgCallback: ; 0x022EBC4C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x9c + mov sl, r0 + mov sb, r1 + mov r8, #0 + bl Dwc_GetState + cmp r0, #5 + beq _022EBCA0 + bl Dwc_GetState + cmp r0, #6 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _022EBCA0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EBCA0: + cmp sb, #0x14 + addlo sp, sp, #0x9c + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r5, _022EBD54 ; =ov00_0231A2A4 + add r4, sp, #0x1c + add r7, sp, #8 + mov r6, #0x14 + mov fp, #4 +_022EBCC0: + mov r0, sl + mov r1, r7 + mov r2, r6 + bl MI_CpuCopy8 + mov r0, r7 + mov r1, r5 + mov r2, fp + bl strncmp + cmp r0, #0 + ldreq r0, [sp, #0xc] + cmpeq r0, #3 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sp, #0x11] + mov r1, r4 + add r0, sl, #0x14 + bl MI_CpuCopy8 + str r4, [sp] + ldrb r0, [sp, #0x11] + mov r0, r0, asr #2 + str r0, [sp, #4] + ldrb r0, [sp, #0x10] + ldrh r3, [sp, #0x12] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + bl Dwci_ProcessRecvMatchCommand + cmp r0, #0 + addeq sp, sp, #0x9c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sp, #0x11] + add r0, r0, #0x14 + add r8, r8, r0 + add r0, r8, #0x14 + cmp r0, sb + bls _022EBCC0 + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EBD54: .word ov00_0231A2A4 + arm_func_end Dwci_QR2ClientMsgCallback + + arm_func_start Dwci_NnProgressCallback +Dwci_NnProgressCallback: ; 0x022EBD58 + bx lr + arm_func_end Dwci_NnProgressCallback + + arm_func_start Dwci_NnCompletedCallback +Dwci_NnCompletedCallback: ; 0x022EBD5C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x1c + mov r5, r0 + mov r6, r2 + mov r4, r3 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _022EBD94 + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, pc} +_022EBD94: + cmp r4, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, pc} + cmp r5, #0 + bne _022EBF90 + mov r0, #0 + str r0, [r4, #8] + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x14] + add r1, r1, #1 + strb r1, [r0, #0x14] + bl Dwci_GetMatchCnt + ldrb r1, [r4] + ldrb r5, [r0, #0x14] + cmp r1, #0 + beq _022EBF28 + bl Dwci_GetMatchCnt + ldr r1, [r6, #4] + add r0, r0, r5, lsl #2 + str r1, [r0, #0x210] + ldrh r4, [r6, #2] + bl Dwci_GetMatchCnt + mov r2, r4, asr #8 + mov r1, r4, lsl #8 + add r0, r0, r5, lsl #1 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r0, #0x200 + strh r1, [r0, #0x90] + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17c] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x180] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl Dwci_GetMatchCnt + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + bne _022EBE50 + mov r0, #0xc + bl Dwci_SetMatchStatus + b _022EBE58 +_022EBE50: + mov r0, #7 + bl Dwci_SetMatchStatus +_022EBE58: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0xc] + bl Dwci_GetMatchCnt + ldr r3, [r0, #0x200] + ldr r2, _022EC138 ; =ov00_0231A1C0 + add r0, sp, #0x10 + mov r1, #0xc + bl OS_SnPrintf + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + mov r6, r0 + bl Dwci_GetMatchCnt + add r1, r6, r5, lsl #2 + mov r2, r0 + ldr r0, [r1, #0x210] + add r1, r2, r5, lsl #1 + add r1, r1, #0x200 + ldrh r1, [r1, #0x90] + mov r2, #0 + bl Gt2AddressToString + mov r6, r0 + bl Dwci_GetMatchCnt + mvn r1, #0 + str r1, [sp] + ldr r3, _022EC13C ; =0x00001388 + mov r1, #0 + str r3, [sp, #4] + ldr r0, [r0, #8] + mov r2, r6 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #4] + add r3, sp, #0x10 + ldr r0, [r0] + bl Gt2Connect + cmp r0, #1 + bne _022EBF00 + bl Dwci_HandleGT2Error_Match + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, pc} +_022EBF00: + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, pc} + bl Dwci_GetMatchCnt + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022EBF28: + cmp r6, #0 + beq _022EBF6C + sub r5, r5, #1 + bl Dwci_GetMatchCnt + ldr r1, [r6, #4] + add r0, r0, r5, lsl #2 + str r1, [r0, #0x210] + ldrh r4, [r6, #2] + bl Dwci_GetMatchCnt + mov r2, r4, asr #8 + mov r1, r4, lsl #8 + add r0, r0, r5, lsl #1 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r0, #0x200 + strh r1, [r0, #0x90] +_022EBF6C: + bl Dwci_GetMatchCnt + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x18c] + mov r0, #7 + str r1, [r4, #0x190] + bl Dwci_SetMatchStatus + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, pc} +_022EBF90: + ldr r0, [r4, #8] + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, pc} + mov r0, r5 + bl Dwci_HandleNnResult + mov r6, r0 + cmp r6, #2 + cmpne r6, #1 + cmpne r6, #3 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, pc} + ldrb r0, [r4] + cmp r0, #0 + bne _022EC050 + cmp r6, #1 + cmpne r6, #3 + beq _022EBFEC + cmp r6, #2 + bne _022EC02C + ldrb r0, [r4, #1] + cmp r0, #1 + blo _022EC02C +_022EBFEC: + mov r0, #0 + str r0, [r4, #8] + bl Dwci_ProcessNnFailure + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, pc} + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedClientProcess + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022EC02C: + ldrb r1, [r4, #1] + mov r0, r4 + add r1, r1, #1 + strb r1, [r4, #1] + bl Dwci_DoNatNegotiationAsync + bl Dwci_HandleNnError + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022EC050: + bl Dwci_GetMatchCnt + mov r5, r0 + bl OS_GetTick + str r0, [r5, #0x184] + cmp r6, #1 + str r1, [r5, #0x188] + cmpne r6, #3 + beq _022EC090 + cmp r6, #2 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17c] + cmp r0, #1 + addlo sp, sp, #0x1c + ldmloia sp!, {r3, r4, r5, r6, pc} +_022EC090: + mov r0, #0 + str r0, [r4, #8] + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _022EC0B8 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _022EC0D0 +_022EC0B8: + mov r0, #1 + bl Dwci_ProcessNnFailure + cmp r0, #0 + bne _022EC0E4 + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, pc} +_022EC0D0: + mov r0, #0 + bl Dwci_ProcessNnFailure + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, pc} +_022EC0E4: + bl Dwci_GetMatchCnt + mov r1, #0 + strb r1, [r0, #0x17c] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x180] + bl Dwci_GetMatchCnt + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl Dwci_GetMatchCnt + mov r4, r0 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl Dwci_CancelPreConnectedServerProcess + cmp r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022EC138: .word ov00_0231A1C0 +_022EC13C: .word 0x00001388 + arm_func_end Dwci_NnCompletedCallback + + arm_func_start Dwci_ProcessNnFailure +Dwci_ProcessNnFailure: ; 0x022EC140 + stmdb sp!, {r3, lr} + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _022EC170 + bl Dwci_GetMatchCnt + ldrb r1, [r0, #0x17d] + add r1, r1, #1 + strb r1, [r0, #0x17d] +_022EC170: + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _022EC190 + bl Dwci_GetMatchCnt + ldrb r0, [r0, #0x17d] + cmp r0, #5 + blo _022EC1A4 +_022EC190: + ldr r1, _022EC1AC ; =0xFFFEAE6C + mov r0, #6 + bl Dwci_StopMatching + mov r0, #0 + ldmia sp!, {r3, pc} +_022EC1A4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EC1AC: .word 0xFFFEAE6C + arm_func_end Dwci_ProcessNnFailure + + arm_func_start Dwci_SetMatchCnt +Dwci_SetMatchCnt: ; 0x022EC1B0 + ldr r1, _022EC1BC ; =ov00_02326F48 + str r0, [r1, #4] + bx lr + .align 2, 0 +_022EC1BC: .word ov00_02326F48 + arm_func_end Dwci_SetMatchCnt + + arm_func_start Dwci_GetMatchCnt +Dwci_GetMatchCnt: ; 0x022EC1C0 + ldr r0, _022EC1CC ; =ov00_02326F48 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_022EC1CC: .word ov00_02326F48 + arm_func_end Dwci_GetMatchCnt + + arm_func_start Dwci_SetMatchStatus +Dwci_SetMatchStatus: ; 0x022EC1D0 + ldr r1, _022EC1E0 ; =ov00_02326F48 + ldr r1, [r1, #4] + str r0, [r1, #0x1a0] + bx lr + .align 2, 0 +_022EC1E0: .word ov00_02326F48 + arm_func_end Dwci_SetMatchStatus + + arm_func_start Dwci_InitReliableQueue +Dwci_InitReliableQueue: ; 0x022EC1E4 + ldr r0, _022EC1F8 ; =ov00_023276C0 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + bx lr + .align 2, 0 +_022EC1F8: .word ov00_023276C0 + arm_func_end Dwci_InitReliableQueue + + arm_func_start Dwci_CleanupReliableQueue +Dwci_CleanupReliableQueue: ; 0x022EC1FC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, _022EC260 ; =ov00_023276C0 + ldr r8, [r4] + cmp r8, #0 + beq _022EC24C + mov r7, #4 + mov r6, r7 + mov r5, #0 +_022EC21C: + ldr r1, [r8, #0xc] + mov r0, r7 + str r1, [r4] + ldmib r8, {r1, r2} + bl Dwc_Free + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl Dwc_Free + ldr r8, [r4] + cmp r8, #0 + bne _022EC21C +_022EC24C: + ldr r0, _022EC260 ; =ov00_023276C0 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EC260: .word ov00_023276C0 + arm_func_end Dwci_CleanupReliableQueue + + arm_func_start Dwci_IsReliableQueueFree +Dwci_IsReliableQueueFree: ; 0x022EC264 + ldr r0, _022EC27C ; =ov00_023276C0 + ldr r0, [r0, #4] + cmp r0, #0x6000 + movlt r0, #1 + movge r0, #0 + bx lr + .align 2, 0 +_022EC27C: .word ov00_023276C0 + arm_func_end Dwci_IsReliableQueueFree + + arm_func_start Dwci_ProcessReliableQueue +Dwci_ProcessReliableQueue: ; 0x022EC280 + ldr ip, _022EC28C ; =Dwci_ProcessReliableQueueEx + ldr r0, _022EC290 ; =Gt2Send + bx ip + .align 2, 0 +_022EC28C: .word Dwci_ProcessReliableQueueEx +_022EC290: .word Gt2Send + arm_func_end Dwci_ProcessReliableQueue + + arm_func_start Dwci_ProcessReliableQueueEx +Dwci_ProcessReliableQueueEx: ; 0x022EC294 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r4, _022EC370 ; =ov00_023276C0 + mov sl, r0 + ldr r8, [r4] + cmp r8, #0 + beq _022EC31C + mov r5, #0 + mov r6, #1 + mov fp, #4 + mov r7, r5 +_022EC2BC: + mov sb, r7 +_022EC2C0: + mov r3, r6 + ldmia r8, {r0, r1, r2} + blx sl + cmp r0, #0 + bne _022EC300 + ldr r2, [r4, #4] + ldr r1, [r8, #8] + mov r0, fp + sub r1, r2, r1 + str r1, [r4, #4] + ldmib r8, {r1, r2} + bl Dwc_Free + str r5, [r8, #4] + str r5, [r8, #8] + str r5, [r8] + b _022EC30C +_022EC300: + add sb, sb, #1 + cmp sb, #3 + blt _022EC2C0 +_022EC30C: + cmp sb, #3 + ldrne r8, [r8, #0xc] + cmpne r8, #0 + bne _022EC2BC +_022EC31C: + ldr r4, _022EC370 ; =ov00_023276C0 + ldr r1, [r4] + cmp r1, #0 + beq _022EC360 + mov r6, #4 + mov r5, #0 +_022EC334: + ldr r0, [r1, #4] + cmp r0, #0 + bne _022EC360 + ldr r3, [r1, #0xc] + mov r0, r6 + mov r2, r5 + str r3, [r4] + bl Dwc_Free + ldr r1, [r4] + cmp r1, #0 + bne _022EC334 +_022EC360: + cmp r1, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EC370: .word ov00_023276C0 + arm_func_end Dwci_ProcessReliableQueueEx + + arm_func_start Dwci_InsertReliableQueue +Dwci_InsertReliableQueue: ; 0x022EC374 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r3, _022EC458 ; =ov00_023276C0 + mov r5, r2 + ldr r2, [r3, #4] + ldr r4, _022EC45C ; =ov00_023276C0 + mov r7, r0 + add r0, r2, r5 + cmp r0, #0x8000 + mov r6, r1 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r3] + cmp r0, #0 + beq _022EC3BC +_022EC3AC: + add r4, r0, #0xc + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _022EC3AC +_022EC3BC: + mov r0, #4 + mov r1, #0x10 + bl Dwc_Alloc + str r0, [r4] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r5 + mov r0, #4 + bl Dwc_Alloc + ldr r1, [r4] + str r0, [r1, #4] + ldr r1, [r4] + ldr r0, [r1, #4] + cmp r0, #0 + bne _022EC414 + mov r0, #4 + mov r2, #0x10 + bl Dwc_Free + mov r0, #0 + str r0, [r4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EC414: + str r7, [r1] + ldr r0, [r4] + mov r2, #0 + str r5, [r0, #8] + ldr r1, [r4] + mov r0, r6 + str r2, [r1, #0xc] + ldr r1, [r4] + mov r2, r5 + ldr r1, [r1, #4] + bl MI_CpuCopy8 + ldr r1, _022EC458 ; =ov00_023276C0 + mov r0, #1 + ldr r2, [r1, #4] + add r2, r2, r5 + str r2, [r1, #4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EC458: .word ov00_023276C0 +_022EC45C: .word ov00_023276C0 + arm_func_end Dwci_InsertReliableQueue + + arm_func_start Dwc_IsSendableReliable +Dwc_IsSendableReliable: ; 0x022EC460 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl Dwci_IsError + cmp r0, #0 + bne _022EC4A0 + cmp r5, #1 + bne _022EC490 + mov r0, r4 + bl Dwc_IsValidAid + cmp r0, #0 + beq _022EC4A0 +_022EC490: + mov r0, r4 + bl Dwci_IsValidAid + cmp r0, #0 + bne _022EC4A8 +_022EC4A0: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022EC4A8: + mov r0, r4 + bl Dwcs_GetSendState + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl Dwcs_GetOutgoingBufferFreeSize + mov r4, r0 + mov r0, r5 + bl Dwcs_GetRequiredHeaderSize + cmp r4, r0 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + bl Dwci_IsReliableQueueFree + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwc_IsSendableReliable + + arm_func_start Dwci_SendReliable +Dwci_SendReliable: ; 0x022EC4F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl Dwcs_GetTransConnection + mov r4, r0 + mov r0, r7 + mov r1, r8 + bl Dwc_IsSendableReliable + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #1 + strb r0, [r4, #0x1c] + str r6, [r4] + mov r0, #0 + str r0, [r4, #0xc] + add r0, sp, #0 + mov r1, r8 + mov r2, r5 + str r5, [r4, #0x14] + bl Dwcs_EncodeHeader + add r1, sp, #0 + mov r0, r7 + mov r2, #8 + mov r3, #1 + bl Dwcs_Send + ldr r0, _022EC60C ; =ov00_023276C8 + ldr r0, [r0] + add r0, r0, #0x600 + ldrh sb, [r0, #0x10] + mov r0, r7 + cmp r5, sb + movle sb, r5 + bl Dwcs_GetOutgoingBufferFreeSize + cmp sb, r0 + addgt sp, sp, #8 + movgt r0, #1 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + mov r1, r6 + mov r2, sb + mov r3, #1 + bl Dwcs_Send + ldr r0, [r4, #0xc] + add r1, r0, sb + str r1, [r4, #0xc] + ldr r0, [r4, #0x14] + cmp r1, r0 + bne _022EC600 + mov r2, #0 + strb r2, [r4, #0x1c] + str r2, [r4] + str r2, [r4, #0xc] + ldr r1, _022EC60C ; =ov00_023276C8 + str r2, [r4, #0x14] + ldr r1, [r1] + ldr r2, [r1, #0x600] + cmp r2, #0 + beq _022EC600 + cmp r8, #1 + bne _022EC600 + mov r1, r7 + blx r2 +_022EC600: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EC60C: .word ov00_023276C8 + arm_func_end Dwci_SendReliable + + arm_func_start Dwcs_EncodeHeader +Dwcs_EncodeHeader: ; 0x022EC610 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + ldr r1, _022EC63C ; =ov00_0231A2C0 + add r0, r6, #6 + mov r2, #2 + bl strncpy + strh r5, [r6, #4] + str r4, [r6] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EC63C: .word ov00_0231A2C0 + arm_func_end Dwcs_EncodeHeader + + arm_func_start Dwcs_DecodeHeader +Dwcs_DecodeHeader: ; 0x022EC640 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + add r1, sp, #0 + mov r2, #8 + bl MI_CpuCopy8 + ldr r1, _022EC678 ; =ov00_0231A2C0 + add r0, sp, #6 + mov r2, #2 + bl memcmp + cmp r0, #0 + ldreqh r0, [sp, #4] + movne r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EC678: .word ov00_0231A2C0 + arm_func_end Dwcs_DecodeHeader + + arm_func_start Dwcs_GetRequiredHeaderSize +Dwcs_GetRequiredHeaderSize: ; 0x022EC67C + cmp r0, #2 + cmpne r0, #3 + cmpne r0, #4 + bne _022EC694 + mov r0, #0xc + bx lr +_022EC694: + mov r0, #8 + bx lr + arm_func_end Dwcs_GetRequiredHeaderSize + + arm_func_start Dwci_InitTransport +Dwci_InitTransport: ; 0x022EC69C + stmdb sp!, {r3, lr} + ldr r3, _022EC6D0 ; =ov00_023276C8 + ldr r2, _022EC6D4 ; =0x00000614 + mov r1, #0 + str r0, [r3] + bl MI_CpuFill8 + ldr r0, _022EC6D0 ; =ov00_023276C8 + ldr r1, _022EC6D8 ; =0x000005B9 + ldr r0, [r0] + add r0, r0, #0x600 + strh r1, [r0, #0x10] + bl Dwci_InitReliableQueue + ldmia sp!, {r3, pc} + .align 2, 0 +_022EC6D0: .word ov00_023276C8 +_022EC6D4: .word 0x00000614 +_022EC6D8: .word 0x000005B9 + arm_func_end Dwci_InitTransport + + arm_func_start Dwci_RecvCallback +Dwci_RecvCallback: ; 0x022EC6DC + stmdb sp!, {r3, lr} + ldr ip, _022EC714 ; =ov00_023276C8 + ldr ip, [ip] + cmp ip, #0 + ldmeqia sp!, {r3, pc} + cmp r1, #0 + cmpne r2, #0 + ldmeqia sp!, {r3, pc} + cmp r3, #0 + beq _022EC70C + bl Dwcs_HandleReliableMessage + ldmia sp!, {r3, pc} +_022EC70C: + bl Dwcs_HandleUnreliableMessage + ldmia sp!, {r3, pc} + .align 2, 0 +_022EC714: .word ov00_023276C8 + arm_func_end Dwci_RecvCallback + + arm_func_start Dwci_PingCallback +Dwci_PingCallback: ; 0x022EC718 + stmdb sp!, {r4, lr} + ldr r2, _022EC754 ; =ov00_023276C8 + mov r4, r1 + ldr r1, [r2] + ldr r1, [r1, #0x60c] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + bl Dwci_GetConnectionAid + ldr r2, _022EC754 ; =ov00_023276C8 + mov r1, r0 + ldr r2, [r2] + mov r0, r4 + ldr r2, [r2, #0x60c] + blx r2 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EC754: .word ov00_023276C8 + arm_func_end Dwci_PingCallback + + arm_func_start Dwci_TransportProcess +Dwci_TransportProcess: ; 0x022EC758 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _022EC8E8 ; =ov00_023276C8 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0 + bl Dwc_GetAidList + mov r7, r0 + mov r8, #0 + cmp r7, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _022EC8E8 ; =ov00_023276C8 + mov fp, r8 +_022EC78C: + ldr r0, [sp] + ldrb sb, [r0, r8] + bl Dwci_ProcessReliableQueue + mov r0, sb + bl Dwc_IsValidAid + cmp r0, #0 + beq _022EC824 + mov r0, sb + bl Dwcs_GetTransConnection + ldr r1, [r4] + mov r6, r0 + ldr r0, [r1, #0x608] + cmp r0, #0 + ldrne r0, [r6, #0x2c] + cmpne r0, #0 + beq _022EC824 + bl OS_GetTick + mov sl, r1 + ldr r2, [r6, #0x24] + mov r5, r0 + subs r2, r5, r2 + ldr r1, [r6, #0x28] + mov r0, r2, lsl #6 + sbc r1, sl, r1 + mov r1, r1, lsl #6 + orr r1, r1, r2, lsr #26 + ldr r2, _022EC8EC ; =0x000082EA + mov r3, #0 + bl _ll_udiv + ldr r1, [r6, #0x2c] + cmp r0, r1 + bls _022EC824 + ldr r1, [r4] + mov r0, sb + ldr r1, [r1, #0x608] + blx r1 + str r5, [r6, #0x24] + str sl, [r6, #0x28] +_022EC824: + bl Dwc_GetMyAid + cmp sb, r0 + beq _022EC8D8 + mov r0, sb + bl Dwcs_GetSendState + cmp r0, #1 + bne _022EC8D8 + mov r0, sb + bl Dwcs_GetTransConnection + mov r5, r0 + ldr r0, [r4] + ldr r2, [r5, #0x14] + add r0, r0, #0x600 + ldr r1, [r5, #0xc] + ldrh r6, [r0, #0x10] + sub r0, r2, r1 + cmp r0, r6 + movle r6, r0 + mov r0, sb + bl Dwcs_GetOutgoingBufferFreeSize + cmp r0, r6 + blt _022EC8D8 + ldr r3, [r5] + ldr r1, [r5, #0xc] + mov r0, sb + add r1, r3, r1 + mov r2, r6 + mov r3, #1 + bl Dwcs_Send + ldr r0, [r5, #0xc] + add r1, r0, r6 + str r1, [r5, #0xc] + ldr r0, [r5, #0x14] + cmp r1, r0 + bne _022EC8D8 + strb fp, [r5, #0x1c] + str fp, [r5] + str fp, [r5, #0xc] + str fp, [r5, #0x14] + ldr r1, [r4] + ldr r2, [r1, #0x600] + cmp r2, #0 + beq _022EC8D8 + mov r1, sb + blx r2 +_022EC8D8: + add r8, r8, #1 + cmp r8, r7 + blt _022EC78C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EC8E8: .word ov00_023276C8 +_022EC8EC: .word 0x000082EA + arm_func_end Dwci_TransportProcess + + arm_func_start Dwci_ClearTransConnection +Dwci_ClearTransConnection: ; 0x022EC8F0 + ldr r2, _022EC978 ; =ov00_023276C8 + ldr r3, [r2] + cmp r3, #0 + bxeq lr + mov r1, #0x30 + mul r1, r0, r1 + add r3, r3, r1 + mov r0, #0 + str r0, [r3, #0xc] + ldr r3, [r2] + add r3, r3, r1 + str r0, [r3, #0x10] + ldr r3, [r2] + add r3, r3, r1 + str r0, [r3, #0x14] + ldr r3, [r2] + add r3, r3, r1 + str r0, [r3, #0x18] + ldr r3, [r2] + add r3, r3, r1 + strb r0, [r3, #0x1c] + ldr r3, [r2] + add r3, r3, r1 + str r0, [r3, #4] + ldr r3, [r2] + add r3, r3, r1 + str r0, [r3, #8] + ldr r3, [r2] + add r3, r3, r1 + strb r0, [r3, #0x1d] + ldr r2, [r2] + add r1, r2, r1 + strh r0, [r1, #0x22] + bx lr + .align 2, 0 +_022EC978: .word ov00_023276C8 + arm_func_end Dwci_ClearTransConnection + + arm_func_start Dwci_ShutdownTransport +Dwci_ShutdownTransport: ; 0x022EC97C + ldr r0, _022EC990 ; =ov00_023276C8 + mov r1, #0 + ldr ip, _022EC994 ; =Dwci_CleanupReliableQueue + str r1, [r0] + bx ip + .align 2, 0 +_022EC990: .word ov00_023276C8 +_022EC994: .word Dwci_CleanupReliableQueue + arm_func_end Dwci_ShutdownTransport + + arm_func_start Dwcs_GetTransConnection +Dwcs_GetTransConnection: ; 0x022EC998 + ldr r2, _022EC9AC ; =ov00_023276C8 + mov r1, #0x30 + ldr r2, [r2] + mla r0, r1, r0, r2 + bx lr + .align 2, 0 +_022EC9AC: .word ov00_023276C8 + arm_func_end Dwcs_GetTransConnection + + arm_func_start Dwcs_GetSendState +Dwcs_GetSendState: ; 0x022EC9B0 + ldr r2, _022EC9C8 ; =ov00_023276C8 + mov r1, #0x30 + ldr r2, [r2] + mla r1, r0, r1, r2 + ldrb r0, [r1, #0x1c] + bx lr + .align 2, 0 +_022EC9C8: .word ov00_023276C8 + arm_func_end Dwcs_GetSendState + + arm_func_start Dwcs_GetRecvState +Dwcs_GetRecvState: ; 0x022EC9CC + ldr r2, _022EC9E4 ; =ov00_023276C8 + mov r1, #0x30 + ldr r2, [r2] + mla r1, r0, r1, r2 + ldrb r0, [r1, #0x1d] + bx lr + .align 2, 0 +_022EC9E4: .word ov00_023276C8 + arm_func_end Dwcs_GetRecvState + + arm_func_start Dwcs_Send +Dwcs_Send: ; 0x022EC9E8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r3 + mov r7, r1 + mov r6, r2 + bl Dwci_GetGT2Connection + mov r4, r0 + cmp r5, #0 + beq _022ECA58 + bl Dwci_ProcessReliableQueue + cmp r0, #0 + beq _022ECA30 + mov r0, r4 + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl Gt2Send + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022ECA30: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl Dwci_InsertReliableQueue + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, _022ECA6C ; =0xFFFE82A2 + mov r0, #6 + bl Dwci_SetError + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022ECA58: + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl Gt2Send + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022ECA6C: .word 0xFFFE82A2 + arm_func_end Dwcs_Send + + arm_func_start Dwcs_HandleReliableMessage +Dwcs_HandleReliableMessage: ; 0x022ECA70 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + bl Dwci_GetConnectionAid + mov r4, r0 + bl Dwcs_GetRecvState + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _022ECB4C +_022ECA94: ; jump table + b _022ECAA8 ; case 0 + b _022ECAD4 ; case 1 + b _022ECAE8 ; case 2 + b _022ECAFC ; case 3 + b _022ECB10 ; case 4 +_022ECAA8: + mov r0, r6 + bl Dwcs_DecodeHeader + cmp r0, #2 + ldmloia sp!, {r4, r5, r6, pc} + cmp r0, #4 + ldmhiia sp!, {r4, r5, r6, pc} + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl Dwcs_RecvDataHeader + ldmia sp!, {r4, r5, r6, pc} +_022ECAD4: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl Dwcs_RecvDataHeader + ldmia sp!, {r4, r5, r6, pc} +_022ECAE8: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl Dwcs_RecvDataBody + ldmia sp!, {r4, r5, r6, pc} +_022ECAFC: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl Dwcs_RecvSystemDataBody + ldmia sp!, {r4, r5, r6, pc} +_022ECB10: + mov r0, #0x30 + mul ip, r4, r0 + ldr r0, _022ECB5C ; =ov00_023276C8 + mov r3, #1 + ldr r1, [r0] + mov r2, #0 + add r1, r1, ip + strb r3, [r1, #0x1d] + ldr r1, [r0] + add r1, r1, ip + str r2, [r1, #0x10] + ldr r0, [r0] + add r0, r0, ip + str r2, [r0, #0x18] + ldmia sp!, {r4, r5, r6, pc} +_022ECB4C: + ldr r1, _022ECB60 ; =0xFFFE82B6 + mov r0, #6 + bl Dwci_SetError + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022ECB5C: .word ov00_023276C8 +_022ECB60: .word 0xFFFE82B6 + arm_func_end Dwcs_HandleReliableMessage + + arm_func_start Dwcs_HandleUnreliableMessage +Dwcs_HandleUnreliableMessage: ; 0x022ECB64 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + bl Dwci_GetConnectionAid + ldr r2, _022ECBE0 ; =ov00_023276C8 + mov r1, #0x30 + ldr r2, [r2] + mla r4, r0, r1, r2 + ldr r1, [r4, #4] + cmp r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r4, #8] + cmp r1, r5 + ldmltia sp!, {r4, r5, r6, pc} + ldr r3, [r2, #0x604] + cmp r3, #0 + beq _022ECBB4 + mov r1, r6 + mov r2, r5 + blx r3 +_022ECBB4: + ldr r0, _022ECBE0 ; =ov00_023276C8 + ldr r0, [r0] + ldr r0, [r0, #0x608] + cmp r0, #0 + ldrne r0, [r4, #0x2c] + cmpne r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl OS_GetTick + str r0, [r4, #0x24] + str r1, [r4, #0x28] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022ECBE0: .word ov00_023276C8 + arm_func_end Dwcs_HandleUnreliableMessage + + arm_func_start Dwcs_RecvDataHeader +Dwcs_RecvDataHeader: ; 0x022ECBE4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldr r4, _022ECCA8 ; =ov00_023276C8 + mov r3, #0x30 + ldr r4, [r4] + mov r7, r1 + mla r4, r0, r3, r4 + mov r6, r2 + bl Dwcs_GetRecvState + strb r0, [r4, #0x1e] + mov r0, r7 + bl Dwcs_DecodeHeader + mov r5, r0 + cmp r5, #4 + addls pc, pc, r5, lsl #2 + b _022ECC9C +_022ECC24: ; jump table + b _022ECC9C ; case 0 + b _022ECC38 ; case 1 + b _022ECC94 ; case 2 + b _022ECC94 ; case 3 + b _022ECC94 ; case 4 +_022ECC38: + cmp r6, #8 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + add r1, sp, #0 + mov r0, r7 + mov r2, #8 + bl MI_CpuCopy8 + ldr r1, [sp] + mov r0, #0 + str r1, [r4, #0x18] + str r0, [r4, #0x10] + ldr r0, [r4, #4] + cmp r0, #0 + beq _022ECC88 + ldr r1, [r4, #8] + ldr r0, [r4, #0x18] + cmp r1, r0 + movge r0, #2 + strgeb r0, [r4, #0x1d] + bge _022ECC9C +_022ECC88: + mov r0, #4 + strb r0, [r4, #0x1d] + b _022ECC9C +_022ECC94: + mov r0, #3 + strb r0, [r4, #0x1d] +_022ECC9C: + strh r5, [r4, #0x22] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022ECCA8: .word ov00_023276C8 + arm_func_end Dwcs_RecvDataHeader + + arm_func_start Dwcs_RecvDataBody +Dwcs_RecvDataBody: ; 0x022ECCAC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r3, _022ECD88 ; =ov00_023276C8 + mov r7, r0 + ldr r4, [r3] + mov r3, #0x30 + mla r4, r7, r3, r4 + mov r6, r1 + mov r5, r2 + bl Dwcs_GetRecvState + cmp r0, #2 + bne _022ECD10 + ldr r3, [r4, #0x10] + ldr r0, [r4, #8] + add r1, r3, r5 + cmp r1, r0 + ble _022ECCFC + ldr r1, _022ECD8C ; =0xFFFE82AC + mov r0, #6 + bl Dwci_SetError + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022ECCFC: + ldr r1, [r4, #4] + mov r0, r6 + mov r2, r5 + add r1, r1, r3 + bl MI_CpuCopy8 +_022ECD10: + ldr r0, [r4, #0x10] + add r0, r0, r5 + str r0, [r4, #0x10] + ldr r2, [r4, #0x18] + cmp r0, r2 + bne _022ECD5C + mov r0, #1 + strb r0, [r4, #0x1d] + mov r1, #0 + str r1, [r4, #0x10] + ldr r0, _022ECD88 ; =ov00_023276C8 + str r1, [r4, #0x18] + ldr r0, [r0] + ldr r3, [r0, #0x604] + cmp r3, #0 + beq _022ECD5C + ldr r1, [r4, #4] + mov r0, r7 + blx r3 +_022ECD5C: + ldr r0, _022ECD88 ; =ov00_023276C8 + ldr r0, [r0] + ldr r0, [r0, #0x608] + cmp r0, #0 + ldrne r0, [r4, #0x2c] + cmpne r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl OS_GetTick + str r0, [r4, #0x24] + str r1, [r4, #0x28] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022ECD88: .word ov00_023276C8 +_022ECD8C: .word 0xFFFE82AC + arm_func_end Dwcs_RecvDataBody + + arm_func_start Dwcs_RecvSystemDataBody +Dwcs_RecvSystemDataBody: ; 0x022ECD90 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl Dwcs_GetTransConnection + ldrb r1, [r0, #0x1e] + strb r1, [r0, #0x1d] + ldrh r1, [r0, #0x22] + cmp r1, #2 + cmpne r1, #3 + cmpne r1, #4 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r2, r4 + bl Dwci_ProcessMatchSynPacket + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwcs_RecvSystemDataBody + + arm_func_start Dwcs_GetOutgoingBufferFreeSize +Dwcs_GetOutgoingBufferFreeSize: ; 0x022ECDCC + stmdb sp!, {r3, lr} + bl Dwci_GetGT2Connection + bl Gt2GetOutgoingBufferFreeSpace + ldr r1, _022ECDEC ; =0xFFFFFDF9 + add r0, r0, r1 + cmp r0, #0 + movle r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022ECDEC: .word 0xFFFFFDF9 + arm_func_end Dwcs_GetOutgoingBufferFreeSize + + arm_func_start Dwc_InitGhttp +Dwc_InitGhttp: ; 0x022ECDF0 + stmdb sp!, {r3, lr} + bl GhttpStartup + ldr r1, _022ECE10 ; =ov00_023276CC + mov r0, #1 + ldr r2, [r1, #4] + add r2, r2, #1 + str r2, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022ECE10: .word ov00_023276CC + arm_func_end Dwc_InitGhttp + + arm_func_start Dwc_ShutdownGhttp +Dwc_ShutdownGhttp: ; 0x022ECE14 + stmdb sp!, {r3, lr} + ldr r0, _022ECE50 ; =ov00_023276CC + ldr r0, [r0, #4] + cmp r0, #0 + movle r0, #1 + ldmleia sp!, {r3, pc} + bl GhttpCleanup + ldr r0, _022ECE50 ; =ov00_023276CC + ldr r1, [r0, #4] + subs r1, r1, #1 + str r1, [r0, #4] + bne _022ECE48 + bl Dwci_RemoveAllDwcGhttpParamEntry +_022ECE48: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022ECE50: .word ov00_023276CC + arm_func_end Dwc_ShutdownGhttp + + arm_func_start Dwc_ProcessGhttp +Dwc_ProcessGhttp: ; 0x022ECE54 + stmdb sp!, {r3, lr} + bl Dwci_IsError + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + bl GhttpThink + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end Dwc_ProcessGhttp + + arm_func_start GhttpCompletedCallback +GhttpCompletedCallback: ; 0x022ECE74 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + mov r7, r1 + ldr r5, [r4, #4] + ldr r6, [r4, #0xc] + cmp r5, #0 + beq _022ECECC + cmp r7, #0 + bne _022ECEB0 + mov r1, r3 + mov r0, r2 + ldr r3, [r4] + mov r2, r7 + blx r5 + b _022ECECC +_022ECEB0: + mov r0, r7 + bl Dwci_HandleGhttpError + mov r0, #0 + ldr r3, [r4] + mov r1, r0 + mov r2, r7 + blx r5 +_022ECECC: + cmp r7, #0 + bne _022ECEDC + cmp r6, #1 + bne _022ECEF8 +_022ECEDC: + ldr r1, [r4, #0x10] + cmp r1, #0 + moveq r6, #1 + beq _022ECEF8 + mov r0, #4 + mov r2, #0 + bl Dwc_Free +_022ECEF8: + mov r0, r4 + bl Dwci_RemoveDwcGHttpParamEntry + cmp r6, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GhttpCompletedCallback + + arm_func_start GhttpProgressCallback +GhttpProgressCallback: ; 0x022ECF10 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r4, [sp, #0x18] + ldr lr, [r4, #8] + cmp lr, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr ip, [sp, #0x14] + mov r0, r1 + str ip, [sp] + mov r1, r2 + mov r2, r3 + ldr ip, [r4] + ldr r3, [sp, #0x10] + str ip, [sp, #4] + blx lr + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end GhttpProgressCallback + + arm_func_start Dwci_GhttpGetEx +Dwci_GhttpGetEx: ; 0x022ECF58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x28 + ldr sb, [sp, #0x4c] + ldr r8, [sp, #0x50] + mov r5, r0 + mov r4, r1 + mov r7, r2 + mov sl, r3 + mov r6, #0 + bl Dwci_IsError + cmp r0, #0 + addne sp, sp, #0x28 + mvnne r0, #7 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [sp, #0x48] + add r0, sp, #0x18 + str r8, [sp, #0x18] + str sb, [sp, #0x1c] + str r1, [sp, #0x20] + str r7, [sp, #0x24] + bl Dwci_AppendDwcGhttpParam + movs r7, r0 + bne _022ECFDC + mvn r0, #4 + bl Dwci_HandleGhttpError + mov r0, r6 + mov r1, r0 + mov r3, r8 + sub r2, r0, #5 + blx sb + add sp, sp, #0x28 + mvn r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022ECFDC: + cmp r4, #0 + ble _022ED02C + mov r1, r4 + mov r0, #4 + bl Dwc_Alloc + movs r6, r0 + bne _022ED028 + mvn r0, #4 + bl Dwci_HandleGhttpError + mov r0, #0 + mov r1, r0 + mov r3, r8 + sub r2, r0, #5 + blx sb + mov r0, r7 + bl Dwci_RemoveDwcGHttpParamEntry + add sp, sp, #0x28 + mvn r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022ED028: + str r6, [r7, #0x10] +_022ED02C: + cmp sl, #0 + mov r1, #0 + beq _022ED06C + ldr r0, [sl] + ldr r2, _022ED0F4 ; =GhttpProgressCallback + stmia sp, {r0, r1} + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r0, _022ED0F8 ; =GhttpCompletedCallback + mov r2, r6 + str r0, [sp, #0x10] + mov r0, r5 + mov r3, r4 + str r7, [sp, #0x14] + bl GHttpGetExA + b _022ED09C +_022ED06C: + str r1, [sp] + str r1, [sp, #4] + ldr r2, _022ED0F4 ; =GhttpProgressCallback + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r0, _022ED0F8 ; =GhttpCompletedCallback + mov r2, r6 + str r0, [sp, #0x10] + mov r0, r5 + mov r3, r4 + str r7, [sp, #0x14] + bl GHttpGetExA +_022ED09C: + mov r4, r0 + cmp r4, #0 + bge _022ED0E4 + mov r0, r4 + bl Dwci_HandleGhttpError + mov r0, #0 + mov r1, r0 + mov r2, r4 + mov r3, r8 + blx sb + ldr r1, [r7, #0x10] + cmp r1, #0 + beq _022ED0DC + mov r0, #4 + mov r2, #0 + bl Dwc_Free +_022ED0DC: + mov r0, r7 + bl Dwci_RemoveDwcGHttpParamEntry +_022ED0E4: + mov r0, r4 + str r4, [r7, #0x14] + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022ED0F4: .word GhttpProgressCallback +_022ED0F8: .word GhttpCompletedCallback + arm_func_end Dwci_GhttpGetEx + + arm_func_start Dwc_GetGhttpDataEx2 +Dwc_GetGhttpDataEx2: ; 0x022ED0FC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr lr, [sp, #0x10] + ldr ip, [sp, #0x14] + stmia sp, {r3, lr} + mov r3, #0 + str ip, [sp, #8] + bl Dwci_GhttpGetEx + add sp, sp, #0xc + ldmia sp!, {pc} + arm_func_end Dwc_GetGhttpDataEx2 + + arm_func_start Dwc_CancelGhttpRequest +Dwc_CancelGhttpRequest: ; 0x022ED124 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GHttpCancelRequest + mov r0, r4 + bl Dwci_FindDwcGhttpParamEntryByReq + movs r4, r0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _022ED158 + mov r0, #4 + mov r2, #0 + bl Dwc_Free +_022ED158: + mov r0, r4 + bl Dwci_RemoveDwcGHttpParamEntry + ldmia sp!, {r4, pc} + arm_func_end Dwc_CancelGhttpRequest + + arm_func_start Dwci_HandleGhttpError +Dwci_HandleGhttpError: ; 0x022ED164 + stmdb sp!, {r4, lr} + movs r4, r0 + mov r0, #7 + ldr r1, _022ED2A4 ; =0xFFFE8130 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r2, r4, #7 + cmp r2, #0x1a + addls pc, pc, r2, lsl #2 + b _022ED298 +_022ED18C: ; jump table + b _022ED1F8 ; case 0 + b _022ED200 ; case 1 + b _022ED20C ; case 2 + b _022ED214 ; case 3 + b _022ED214 ; case 4 + b _022ED214 ; case 5 + b _022ED21C ; case 6 + b _022ED298 ; case 7 + b _022ED228 ; case 8 + b _022ED234 ; case 9 + b _022ED23C ; case 10 + b _022ED248 ; case 11 + b _022ED250 ; case 12 + b _022ED258 ; case 13 + b _022ED260 ; case 14 + b _022ED268 ; case 15 + b _022ED268 ; case 16 + b _022ED268 ; case 17 + b _022ED258 ; case 18 + b _022ED258 ; case 19 + b _022ED274 ; case 20 + b _022ED274 ; case 21 + b _022ED27C ; case 22 + b _022ED288 ; case 23 + b _022ED290 ; case 24 + b _022ED298 ; case 25 + b _022ED228 ; case 26 +_022ED1F8: + sub r1, r1, #0x320 + b _022ED298 +_022ED200: + ldr r2, _022ED2A8 ; =0xFFFFFCD6 + add r1, r1, r2 + b _022ED298 +_022ED20C: + sub r1, r1, #0x348 + b _022ED298 +_022ED214: + sub r1, r1, #0x334 + b _022ED298 +_022ED21C: + ldr r2, _022ED2AC ; =0xFFFFFCC2 + add r1, r1, r2 + b _022ED298 +_022ED228: + sub r1, r1, #1 + mov r0, #9 + b _022ED298 +_022ED234: + sub r1, r1, #0x348 + b _022ED298 +_022ED23C: + ldr r2, _022ED2B0 ; =0xFFFFFCAE + add r1, r1, r2 + b _022ED298 +_022ED248: + sub r1, r1, #0x1e + b _022ED298 +_022ED250: + sub r1, r1, #0x32 + b _022ED298 +_022ED258: + sub r1, r1, #0x14 + b _022ED298 +_022ED260: + sub r1, r1, #0x35c + b _022ED298 +_022ED268: + ldr r2, _022ED2B4 ; =0xFFFFFC9A + add r1, r1, r2 + b _022ED298 +_022ED274: + sub r1, r1, #0x370 + b _022ED298 +_022ED27C: + ldr r2, _022ED2B8 ; =0xFFFFFC86 + add r1, r1, r2 + b _022ED298 +_022ED288: + sub r1, r1, #0x384 + b _022ED298 +_022ED290: + ldr r2, _022ED2BC ; =0xFFFFFC72 + add r1, r1, r2 +_022ED298: + bl Dwci_SetError + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022ED2A4: .word 0xFFFE8130 +_022ED2A8: .word 0xFFFFFCD6 +_022ED2AC: .word 0xFFFFFCC2 +_022ED2B0: .word 0xFFFFFCAE +_022ED2B4: .word 0xFFFFFC9A +_022ED2B8: .word 0xFFFFFC86 +_022ED2BC: .word 0xFFFFFC72 + arm_func_end Dwci_HandleGhttpError + + arm_func_start Dwci_AppendDwcGhttpParam +Dwci_AppendDwcGhttpParam: ; 0x022ED2C0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #4 + mov r1, #0x1c + bl Dwc_Alloc + movs ip, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldmia r4, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + mov r0, #0 + str r0, [ip, #0x18] + ldr r1, _022ED318 ; =ov00_023276CC + str r0, [ip, #0x10] + ldr r0, [r1] + cmp r0, #0 + moveq r0, ip + streq ip, [r1] + strne r0, [ip, #0x18] + movne r0, ip + strne ip, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_022ED318: .word ov00_023276CC + arm_func_end Dwci_AppendDwcGhttpParam + + arm_func_start Dwci_RemoveDwcGHttpParamEntry +Dwci_RemoveDwcGHttpParamEntry: ; 0x022ED31C + stmdb sp!, {r4, lr} + ldr r1, _022ED39C ; =ov00_023276CC + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + cmp r1, r0 + bne _022ED354 + mov r0, #4 + mov r2, #0 + ldr r4, [r1, #0x18] + bl Dwc_Free + ldr r0, _022ED39C ; =ov00_023276CC + str r4, [r0] + ldmia sp!, {r4, pc} +_022ED354: + ldr r2, [r1, #0x18] + cmp r2, #0 + ldmeqia sp!, {r4, pc} +_022ED360: + cmp r2, r0 + movne r1, r2 + bne _022ED38C + ldr ip, [r1, #0x18] + mov r0, #4 + ldr r3, [ip, #0x18] + mov r2, #0 + str r3, [r1, #0x18] + mov r1, ip + bl Dwc_Free + ldmia sp!, {r4, pc} +_022ED38C: + ldr r2, [r2, #0x18] + cmp r2, #0 + bne _022ED360 + ldmia sp!, {r4, pc} + .align 2, 0 +_022ED39C: .word ov00_023276CC + arm_func_end Dwci_RemoveDwcGHttpParamEntry + + arm_func_start Dwci_FindDwcGhttpParamEntryByReq +Dwci_FindDwcGhttpParamEntryByReq: ; 0x022ED3A0 + ldr r1, _022ED3C8 ; =ov00_023276CC + ldr r2, [r1] + b _022ED3B0 +_022ED3AC: + ldr r2, [r2, #0x18] +_022ED3B0: + cmp r2, #0 + ldrne r1, [r2, #0x14] + cmpne r1, r0 + bne _022ED3AC + mov r0, r2 + bx lr + .align 2, 0 +_022ED3C8: .word ov00_023276CC + arm_func_end Dwci_FindDwcGhttpParamEntryByReq + + arm_func_start Dwci_RemoveAllDwcGhttpParamEntry +Dwci_RemoveAllDwcGhttpParamEntry: ; 0x022ED3CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r0, _022ED438 ; =ov00_023276CC + ldr r8, [r0] + cmp r8, #0 + beq _022ED428 + mov r7, #4 + mov r6, #0 + mov r5, r7 + mov r4, r6 +_022ED3F0: + mov sb, r8 + ldr r1, [sb, #0x10] + ldr r8, [r8, #0x18] + cmp r1, #0 + beq _022ED410 + mov r0, r7 + mov r2, r6 + bl Dwc_Free +_022ED410: + mov r0, r5 + mov r1, sb + mov r2, r4 + bl Dwc_Free + cmp r8, #0 + bne _022ED3F0 +_022ED428: + ldr r0, _022ED438 ; =ov00_023276CC + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022ED438: .word ov00_023276CC + arm_func_end Dwci_RemoveAllDwcGhttpParamEntry + + arm_func_start Dwci_BM_GetApInfo +Dwci_BM_GetApInfo: ; 0x022ED43C + stmdb sp!, {r3, lr} + ldr r1, _022ED464 ; =ov00_023276D4 + mov r2, r0 + ldr r0, [r1, #8] + mov r1, #0x300 + bl ReadNvram_Dwc + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022ED464: .word ov00_023276D4 + arm_func_end Dwci_BM_GetApInfo + + arm_func_start Dwci_BM_GetWiFiInfo +Dwci_BM_GetWiFiInfo: ; 0x022ED468 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _022ED528 ; =ov00_023276E0 + mov r1, r4 + mov r2, #6 + bl MI_CpuCopy8 + ldr r1, _022ED52C ; =0x000007FF + ldr r3, [r4] + sub r0, r1, #0x800 + ldr r2, [r4, #4] + and r0, r3, r0 + str r0, [r4] + and r1, r2, r1 + str r1, [r4, #4] + ldr r0, _022ED530 ; =ov00_023276E5 + add r1, r4, #8 + mov r2, #6 + bl MI_CpuCopy8 + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, r1, lsr #3 + orr r1, r1, r0, lsl #29 + str r1, [r4, #8] + mov r3, r0, lsr #3 + str r3, [r4, #0xc] + ldr r1, _022ED52C ; =0x000007FF + ldr r2, [r4, #8] + sub r0, r1, #0x800 + and r0, r2, r0 + str r0, [r4, #8] + and r1, r1, r3 + str r1, [r4, #0xc] + ldr r0, _022ED534 ; =ov00_023276EA + add r1, r4, #0x10 + mov r2, #2 + bl MI_CpuCopy8 + ldrh r1, [r4, #0x10] + ldr r3, _022ED538 ; =0x000003FF + ldr r0, _022ED53C ; =ov00_023276EC + mov r1, r1, asr #6 + strh r1, [r4, #0x10] + ldrh ip, [r4, #0x10] + add r1, r4, #0x12 + mov r2, #2 + and r3, ip, r3 + strh r3, [r4, #0x10] + bl MI_CpuCopy8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022ED528: .word ov00_023276E0 +_022ED52C: .word 0x000007FF +_022ED530: .word ov00_023276E5 +_022ED534: .word ov00_023276EA +_022ED538: .word 0x000003FF +_022ED53C: .word ov00_023276EC + arm_func_end Dwci_BM_GetWiFiInfo + + arm_func_start Dwci_BM_SetWiFiInfo +Dwci_BM_SetWiFiInfo: ; 0x022ED540 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r2, _022ED610 ; =ov00_023276D4 + mov sl, r1 + ldr sb, [r2, #8] + bl Dwci_BackuplConvWifiInfo + ldr r1, _022ED614 ; =0x0000A001 + add r0, sl, #0x200 + bl MATHi_CRC16InitTable + mov r5, #0x100 + ldr r6, _022ED618 ; =ov00_023276E0 + mov r8, #0 + mov r4, r5 + mov fp, #0xe + mov r7, r5 +_022ED578: + mov r0, sb + mov r1, r7 + mov r2, sl + bl ReadNvram_Dwc + cmp r0, #0 + bne _022ED59C + bl WaitForever2 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022ED59C: + mov r0, r6 + mov r2, fp + add r1, sl, #0xf0 + bl MI_CpuCopy8 + mov r1, sl + mov r2, #0xfe + add r0, sl, #0x200 + bl MATH_CalcCRC16 + strh r0, [sl, #0xfe] +_022ED5C0: + mov r0, sb + mov r1, r5 + mov r2, sl + bl WriteNvram_Dwc + mov r0, sl + mov r1, sb + mov r2, r4 + add r3, sl, #0x100 + bl Verify_Dwc + cmp r0, #0 + beq _022ED5C0 + add r8, r8, #1 + cmp r8, #2 + add sb, sb, #0x100 + blt _022ED578 + bl WriteDisable_Dwc + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022ED610: .word ov00_023276D4 +_022ED614: .word 0x0000A001 +_022ED618: .word ov00_023276E0 + arm_func_end Dwci_BM_SetWiFiInfo + + arm_func_start Dwci_BackuplInit +Dwci_BackuplInit: ; 0x022ED61C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x20 + mov r1, r0 + mov r2, r4 + bl ReadNvram_Dwc + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldrh r2, [r4] + ldr r1, _022ED65C ; =ov00_023276D4 + mov r0, #1 + mov r2, r2, lsl #3 + sub r2, r2, #0x400 + str r2, [r1, #8] + ldmia sp!, {r4, pc} + .align 2, 0 +_022ED65C: .word ov00_023276D4 + arm_func_end Dwci_BackuplInit + + arm_func_start Dwci_BackuplRead +Dwci_BackuplRead: ; 0x022ED660 + stmdb sp!, {r3, lr} + ldr r1, _022ED688 ; =ov00_023276D4 + mov r2, r0 + ldr r0, [r1, #8] + mov r1, #0x400 + bl ReadNvram_Dwc + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022ED688: .word ov00_023276D4 + arm_func_end Dwci_BackuplRead + + arm_func_start Dwci_BackuplWritePage +Dwci_BackuplWritePage: ; 0x022ED68C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r3, _022ED710 ; =ov00_023276D4 + mov sl, #0x100 + ldr r5, [r3, #8] + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r4, #0 + mov sb, sl +_022ED6B0: + ldr r0, [r7, r4, lsl #2] + cmp r0, #0 + beq _022ED6E8 +_022ED6BC: + mov r0, r5 + mov r1, sl + mov r2, r8 + bl WriteNvram_Dwc + mov r0, r8 + mov r1, r5 + mov r2, sb + mov r3, r6 + bl Verify_Dwc + cmp r0, #0 + beq _022ED6BC +_022ED6E8: + add r4, r4, #1 + cmp r4, #4 + add r8, r8, #0x100 + add r5, r5, #0x100 + blt _022ED6B0 + bl WriteDisable_Dwc + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022ED710: .word ov00_023276D4 + arm_func_end Dwci_BackuplWritePage + + arm_func_start Dwci_BackuplWriteAll +Dwci_BackuplWriteAll: ; 0x022ED714 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r1, _022ED7A4 ; =ov00_023276D4 + mov r8, r0 + mov sl, #0x100 + ldr r6, [r1, #8] + mov r7, r8 + mov r5, #0 + mov sb, sl + mov r4, #0xfe +_022ED738: + mov r1, r7 + mov r2, r4 + add r0, r8, #0x500 + bl MATH_CalcCRC16 + add r1, r8, r5, lsl #8 + strh r0, [r1, #0xfe] +_022ED750: + mov r0, r6 + mov r1, sl + mov r2, r7 + bl WriteNvram_Dwc + mov r0, r7 + mov r1, r6 + mov r2, sb + add r3, r8, #0x400 + bl Verify_Dwc + cmp r0, #0 + beq _022ED750 + add r5, r5, #1 + cmp r5, #4 + add r7, r7, #0x100 + add r6, r6, #0x100 + blt _022ED738 + bl WriteDisable_Dwc + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022ED7A4: .word ov00_023276D4 + arm_func_end Dwci_BackuplWriteAll + + arm_func_start Dwci_BackuplSetWiFi +Dwci_BackuplSetWiFi: ; 0x022ED7A8 + ldr ip, _022ED7B8 ; =MI_CpuCopy8 + ldr r1, _022ED7BC ; =ov00_023276E0 + mov r2, #0xe + bx ip + .align 2, 0 +_022ED7B8: .word MI_CpuCopy8 +_022ED7BC: .word ov00_023276E0 + arm_func_end Dwci_BackuplSetWiFi + + arm_func_start Dwci_BackuplConvMaskCidr +Dwci_BackuplConvMaskCidr: ; 0x022ED7C0 + stmdb sp!, {r4, lr} + mov ip, #0 + mov r3, ip + mov r2, ip +_022ED7D0: + ldrb r4, [r0, ip] + mov lr, r2 +_022ED7D8: + mov r1, r4, asr lr + tst r1, #1 + add lr, lr, #1 + addne r3, r3, #1 + cmp lr, #8 + blt _022ED7D8 + add ip, ip, #1 + cmp ip, #4 + blt _022ED7D0 + and r0, r3, #0xff + ldmia sp!, {r4, pc} + arm_func_end Dwci_BackuplConvMaskCidr + + arm_func_start Dwci_BackuplConvMaskAddr +Dwci_BackuplConvMaskAddr: ; 0x022ED804 + mvn r2, #0 + mov r3, #0 + eor r2, r2, r2, lsr r0 + mov ip, r3 +_022ED814: + rsb r0, ip, #0x18 + mov r0, r2, lsr r0 + strb r0, [r1, r3] + add r3, r3, #1 + cmp r3, #4 + add ip, ip, #8 + blt _022ED814 + bx lr + arm_func_end Dwci_BackuplConvMaskAddr + + arm_func_start Dwc_BackuplCheckSsid +Dwc_BackuplCheckSsid: ; 0x022ED834 + mov r2, #0 +_022ED838: + ldrb r1, [r0, r2] + cmp r1, #0 + movne r0, #1 + bxne lr + add r2, r2, #1 + cmp r2, #0x20 + blt _022ED838 + mov r0, #0 + bx lr + arm_func_end Dwc_BackuplCheckSsid + + arm_func_start Dwc_BackuplCheckIp +Dwc_BackuplCheckIp: ; 0x022ED85C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r1 + bl Dwc_BackuplCheckAddress + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + add r1, sp, #4 + mov r0, r5 + mov r2, #4 + bl MI_CpuCopy8 + add r1, sp, #0 + mov r0, r4 + mov r2, #4 + bl MI_CpuCopy8 + ldr r0, [sp] + ldr r1, [sp, #4] + mvn r0, r0 + tst r1, r0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Dwc_BackuplCheckIp + + arm_func_start Dwc_BackuplCheckAddress +Dwc_BackuplCheckAddress: ; 0x022ED8C0 + ldrb r0, [r0] + cmp r0, #0x7f + moveq r0, #0 + bxeq lr + cmp r0, #1 + movlo r0, #0 + bxlo lr + cmp r0, #0xdf + movls r0, #1 + movhi r0, #0 + bx lr + arm_func_end Dwc_BackuplCheckAddress + + arm_func_start NVramm_ExecuteCommand +NVramm_ExecuteCommand: ; 0x022ED8EC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3c + ldr sl, _022EDD40 ; =ov00_02327700 + mov r8, r1, lsr #0x10 + mov r4, sl, lsl #8 + mov sb, r4 + and r4, r4, #0xff00 + mov r1, r1, lsl #0x10 + orr r4, r4, #0x20000 + mov r5, r3, lsr #0x10 + mov r7, r0 + ldr ip, _022EDD44 ; =0x01020000 + mov r1, r1, lsr #0x10 + str r4, [sp, #0x30] + orr r4, r1, #0x10000 + mov r3, r3, lsl #0x10 + add r1, ip, #0x30000 + orr r1, r1, r3, lsr #16 + str r1, [sp, #0x10] + mov r1, r3, lsr #0x10 + orr r1, r1, #0x1040000 + ldr r0, _022EDD48 ; =0x02002200 + str r1, [sp, #0x24] + orr r1, r0, sl, lsr #24 + str r1, [sp, #0x28] + ldr r1, [sp, #0x30] + mov sb, sb, lsr #0x10 + orr r1, r1, #0x1000000 + str r1, [sp, #0x30] + add r1, r0, #0x300 + and r8, r8, #0xff + add r0, r0, #0x100 + orr r0, r8, r0 + orr r1, r8, r1 + str r0, [sp] + orr r0, r2, #0x20000 + str r0, [sp, #0x1c] + orr r0, r5, #0x30000 + str r0, [sp, #0x20] + orr r0, r5, #0x40000 + str r0, [sp, #0xc] + ldr r0, _022EDD4C ; =0x03002100 + mov r6, #0 + sub r0, r0, #0x100 + str r0, [sp, #0x14] + mov r0, r2, lsr #0x10 + orr r0, r0, #0x20000 + str r0, [sp, #4] + mov r0, r2, lsl #0x10 + mov r0, r0, lsr #0x10 + orr sb, sb, #0x10000 + orr r0, r0, #0x30000 + str sb, [sp, #0x2c] + str r1, [sp, #0x18] + str r0, [sp, #8] + mov r5, r6 + mov r8, #0xfa0 +_022ED9D0: + cmp r6, #0 + bne _022EDC10 + ldr r0, _022EDD50 ; =ov00_023276D4 + cmp r7, #7 + str r5, [r0, #4] + addls pc, pc, r7, lsl #2 + b _022ED9D0 +_022ED9EC: ; jump table + b _022ED9D0 ; case 0 + b _022EDA0C ; case 1 + b _022EDAB8 ; case 2 + b _022EDAD8 ; case 3 + b _022EDB74 ; case 4 + b _022EDB74 ; case 5 + b _022EDBCC ; case 6 + b _022EDBF0 ; case 7 +_022EDA0C: + ldr r1, [sp] + mov r0, #4 + mov r2, r5 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + mov r0, #4 + mov r1, r4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + ldr r1, [sp, #4] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + ldr r1, [sp, #8] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + ldr r1, [sp, #0xc] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + ldr r1, [sp, #0x10] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + movge r6, #1 + b _022ED9D0 +_022EDAB8: + ldr r1, [sp, #0x14] + mov r0, #4 + mov r2, r5 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + movge r6, #1 + b _022ED9D0 +_022EDAD8: + ldr r1, [sp, #0x18] + mov r0, #4 + mov r2, r5 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022EDB64 + mov r0, #4 + mov r1, r4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022EDB64 + ldr r1, [sp, #0x1c] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022EDB64 + ldr r1, [sp, #0x20] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022EDB64 + ldr r1, [sp, #0x24] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + movge r6, #1 +_022EDB64: + bl OS_GetTick + str r0, [sp, #0x34] + mov fp, r1 + b _022ED9D0 +_022EDB74: + ldr r1, [sp, #0x28] + mov r0, #4 + mov r2, r5 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + ldr r1, [sp, #0x2c] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + blt _022ED9D0 + ldr r1, [sp, #0x30] + mov r0, #4 + mov r2, #0 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + movge r6, #1 + b _022ED9D0 +_022EDBCC: + ldr r1, _022EDD4C ; =0x03002100 + mov r0, #4 + add r1, r1, #0xc00 + mov r2, r5 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + movge r6, #1 + b _022ED9D0 +_022EDBF0: + ldr r1, _022EDD4C ; =0x03002100 + mov r0, #4 + mov r2, r5 + bl PXI_SendWordByFifo + cmp r0, #0 + movlt r6, #0 + movge r6, #1 + b _022ED9D0 +_022EDC10: + ldr r0, _022EDD50 ; =ov00_023276D4 + ldr r0, [r0, #4] + cmp r0, #1 + bne _022ED9D0 + ldr r0, _022EDD50 ; =ov00_023276D4 + mov r6, #0 + ldrh r0, [r0] + cmp r0, #0 + bne _022EDD34 + cmp r7, #7 + addls pc, pc, r7, lsl #2 + b _022ED9D0 +_022EDC40: ; jump table + b _022ED9D0 ; case 0 + b _022EDC60 ; case 1 + b _022EDC6C ; case 2 + b _022EDC74 ; case 3 + b _022EDC7C ; case 4 + b _022EDC7C ; case 5 + b _022EDD1C ; case 6 + b _022EDD28 ; case 7 +_022EDC60: + add sp, sp, #0x3c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EDC6C: + mov r7, #4 + b _022ED9D0 +_022EDC74: + mov r7, #5 + b _022ED9D0 +_022EDC7C: + mov r0, sl + mov r1, #1 + bl DC_InvalidateRange + cmp r7, #4 + ldrb r0, [sl] + bne _022EDCAC + tst r0, #2 + movne r7, #3 + bne _022ED9D0 + add sp, sp, #0x3c + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EDCAC: + tst r0, #1 + addeq sp, sp, #0x3c + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + tst r0, #0x20 + bne _022EDD08 + bl OS_GetTick + ldr r2, [sp, #0x34] + mov ip, r6 + subs sb, r0, r2 + mov r0, #0x40 + sbc lr, r1, fp + umull r0, r1, sb, r0 + mla r1, sb, ip, r1 + mov sb, #0x40 + mla r1, lr, sb, r1 + ldr r2, _022EDD54 ; =0x000082EA + mov r3, r6 + bl _ll_udiv + mov r2, r6 + cmp r1, r2 + cmpeq r0, r8 + bls _022EDD10 +_022EDD08: + mov r7, #6 + b _022ED9D0 +_022EDD10: + mov r0, #0x4000 + blx SVC_WaitByLoop + b _022ED9D0 +_022EDD1C: + add sp, sp, #0x3c + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EDD28: + add sp, sp, #0x3c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EDD34: + mov r0, r6 + add sp, sp, #0x3c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EDD40: .word ov00_02327700 +_022EDD44: .word 0x01020000 +_022EDD48: .word 0x02002200 +_022EDD4C: .word 0x03002100 +_022EDD50: .word ov00_023276D4 +_022EDD54: .word 0x000082EA + arm_func_end NVramm_ExecuteCommand + + arm_func_start ReadNvram_Dwc +ReadNvram_Dwc: ; 0x022EDD58 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, r2 + mov r6, r0 + mov r0, r4 + mov r5, r1 + bl DC_InvalidateRange + mov r8, #4 + mov r7, #1 +_022EDD78: + mov r0, r8 + mov r1, r7 + bl PXI_IsCallbackReady + cmp r0, #0 + beq _022EDD78 + ldr r1, _022EDDE4 ; =Callback_NVram + mov r0, #4 + bl PXI_SetFifoRecvCallback + mov r0, r5, lsl #0x10 + mov r8, r0, lsr #0x10 + mov r7, #0x40000 + mov sb, #1 +_022EDDA8: + mov r0, sb + mov r1, r6 + mov r2, r8 + mov r3, r4 + bl NVramm_ExecuteCommand + cmp r0, #1 + beq _022EDDD0 + mov r0, r7 + blx SVC_WaitByLoop + b _022EDDA8 +_022EDDD0: + mov r0, r4 + mov r1, r5 + bl DC_InvalidateRange + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EDDE4: .word Callback_NVram + arm_func_end ReadNvram_Dwc + + arm_func_start WriteNvram_Dwc +WriteNvram_Dwc: ; 0x022EDDE8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #4 + mov r4, #1 +_022EDE00: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0 + beq _022EDE00 + ldr r1, _022EDE60 ; =Callback_NVram + mov r0, #4 + bl PXI_SetFifoRecvCallback + mov r0, r6 + mov r1, r7 + bl DC_StoreRange + mov r4, #0x40000 + mov r5, #2 +_022EDE34: + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl NVramm_ExecuteCommand + cmp r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + blx SVC_WaitByLoop + b _022EDE34 +_022EDE5C: + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EDE60: .word Callback_NVram + arm_func_end WriteNvram_Dwc + + arm_func_start Verify_Dwc +Verify_Dwc: ; 0x022EDE64 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r2 + mov r4, r3 + mov r6, r0 + mov r0, r1 + mov r1, r5 + mov r2, r4 + bl ReadNvram_Dwc + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Verify_Dwc + + arm_func_start WriteDisable_Dwc +WriteDisable_Dwc: ; 0x022EDEB0 + stmdb sp!, {r4, r5, r6, lr} + mov r5, #4 + mov r4, #1 +_022EDEBC: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0 + beq _022EDEBC + ldr r1, _022EDF18 ; =Callback_NVram + mov r0, #4 + bl PXI_SetFifoRecvCallback + mov r4, #0x40000 + mov r6, #7 + mov r5, #0 +_022EDEE8: + mov r0, r6 + mov r1, r5 + mov r2, r5 + mov r3, r5 + bl NVramm_ExecuteCommand + cmp r0, #1 + beq _022EDF10 + mov r0, r4 + blx SVC_WaitByLoop + b _022EDEE8 +_022EDF10: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EDF18: .word Callback_NVram + arm_func_end WriteDisable_Dwc + + arm_func_start Callback_NVram +Callback_NVram: ; 0x022EDF1C + ldr r0, _022EDF48 ; =ov00_023276D4 + and r1, r1, #0xff + strh r1, [r0] + mov r1, #1 + str r1, [r0, #4] + cmp r2, #0 + movne r1, #0xff + strneh r1, [r0] + ldr r0, _022EDF48 ; =ov00_023276D4 + ldrh r0, [r0] + bx lr + .align 2, 0 +_022EDF48: .word ov00_023276D4 + arm_func_end Callback_NVram + + arm_func_start Dwci_BackuplConvWifiInfo +Dwci_BackuplConvWifiInfo: ; 0x022EDF4C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldr r3, [r4, #8] + ldr r2, [r4, #0xc] + ldr r1, _022EE000 ; =ov00_023276E0 + str r2, [sp, #4] + str r3, [sp] + mov r2, #5 + bl MI_CpuCopy8 + ldr r2, [sp] + ldr r1, [sp, #4] + mov ip, r2, lsr #5 + ldr lr, [r4, #4] + mov r3, r1, lsr #5 + orr ip, ip, r1, lsl #27 + mov r0, #7 + and r1, r0, lr, lsr #8 + and r0, r2, #0x1f + orr lr, r1, r0, lsl #3 + ldr r2, _022EE000 ; =ov00_023276E0 + ldr r1, _022EE004 ; =ov00_023276E6 + strb lr, [r2, #5] + add r0, sp, #0 + str ip, [sp] + str r3, [sp, #4] + mov r2, #4 + bl MI_CpuCopy8 + ldrh r0, [r4, #0x10] + ldr r1, [sp, #4] + ldr r3, _022EE000 ; =ov00_023276E0 + and r1, r1, #0x3f + mov r0, r0, lsl #0x1e + orr r0, r1, r0, lsr #24 + strb r0, [r3, #0xa] + ldrh r2, [r4, #0x10] + add r0, r4, #0x12 + ldr r1, _022EE008 ; =ov00_023276EC + mov r4, r2, asr #2 + mov r2, #2 + strb r4, [r3, #0xb] + bl MI_CpuCopy8 + ldr r0, _022EE000 ; =ov00_023276E0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EE000: .word ov00_023276E0 +_022EE004: .word ov00_023276E6 +_022EE008: .word ov00_023276EC + arm_func_end Dwci_BackuplConvWifiInfo + + arm_func_start Dwci_BackuplGetWifi +Dwci_BackuplGetWifi: ; 0x022EE00C + ldr r0, _022EE014 ; =ov00_023276E0 + bx lr + .align 2, 0 +_022EE014: .word ov00_023276E0 + arm_func_end Dwci_BackuplGetWifi + + arm_func_start Dwc_BM_Init +Dwc_BM_Init: ; 0x022EE018 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + mov r8, r0 + mov r1, #0 + mov r2, #0x700 + bl MI_CpuFill8 + mov r0, r8 + bl Dwci_BackuplInit + cmp r0, #0 + addeq sp, sp, #0x10 + ldreq r0, _022EE30C ; =0xFFFFD8EF + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _022EE310 ; =0x0000A001 + add r0, r8, #0x500 + bl MATHi_CRC16InitTable + mov r0, r8 + bl Dwci_BackuplRead + cmp r0, #0 + addeq sp, sp, #0x10 + ldreq r0, _022EE30C ; =0xFFFFD8EF + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r6, r8 + mov r7, r8 + mov r5, #0 + mov sl, #1 + add sb, sp, #0 + mov r4, #0xfe +_022EE094: + mov r1, r6 + mov r2, r4 + add r0, r8, #0x500 + bl MATH_CalcCRC16 + add r1, r8, r5, lsl #8 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + bne _022EE0C4 + mov r0, r7 + bl CheckAp_Dwc + cmp r0, #0 + strne sl, [sb, r5, lsl #2] +_022EE0C4: + add r5, r5, #1 + cmp r5, #3 + add r6, r6, #0x100 + add r7, r7, #0x100 + blt _022EE094 + add r0, r8, #0x500 + add r1, r8, #0x300 + mov r2, #0xfe + bl MATH_CalcCRC16 + add r1, r8, #0x300 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + moveq r0, #1 + ldr r1, [sp] + streq r0, [sp, #0xc] + cmp r1, #0 + ldrne r0, [sp, #4] + cmpne r0, #0 + ldrne r0, [sp, #8] + cmpne r0, #0 + ldrne r0, [sp, #0xc] + cmpne r0, #0 + beq _022EE134 + add r0, r8, #0xf0 + bl Dwci_BackuplSetWiFi + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EE134: + cmp r1, #0 + ldreq r0, [sp, #4] + cmpeq r0, #0 + ldreq r0, [sp, #8] + cmpeq r0, #0 + ldreq r0, [sp, #0xc] + cmpeq r0, #0 + bne _022EE178 + mov r0, r8 + bl Init_Dwc + mov r0, r8 + bl Dwci_BackuplWriteAll + cmp r0, #0 + movne r0, #0 + add sp, sp, #0x10 + ldreq r0, _022EE314 ; =0xFFFFD8F0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EE178: + cmp r1, #0 + ldrne r0, [sp, #4] + cmpne r0, #0 + bne _022EE1C0 + ldr r0, [sp, #8] + cmp r0, #0 + ldrne r0, [sp, #0xc] + cmpne r0, #0 + bne _022EE1C0 + mov r0, r8 + bl Init_Dwc + mov r0, r8 + bl Dwci_BackuplWriteAll + cmp r0, #0 + movne r0, #0 + add sp, sp, #0x10 + ldreq r0, _022EE314 ; =0xFFFFD8F0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EE1C0: + cmp r1, #0 + ldreq r0, [sp, #4] + cmpeq r0, #0 + bne _022EE1F4 + mov r0, r8 + bl Init_Dwc + mov r0, r8 + bl Dwci_BackuplWriteAll + cmp r0, #0 + ldrne r0, _022EE318 ; =0xFFFFD8ED + add sp, sp, #0x10 + ldreq r0, _022EE314 ; =0xFFFFD8F0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022EE1F4: + cmp r1, #0 + bne _022EE224 + mov r0, r8 + mov r1, #0 + bl InitPage_Dwc + add r0, r8, #0x1f0 + add r1, r8, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r8, #0x1ef] + strb r0, [r8, #0xef] + b _022EE254 +_022EE224: + ldr r0, [sp, #4] + cmp r0, #0 + bne _022EE254 + mov r0, r8 + mov r1, #1 + bl InitPage_Dwc + add r0, r8, #0xf0 + add r1, r8, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r8, #0xef] + strb r0, [r8, #0x1ef] +_022EE254: + add r0, r8, #0xf0 + bl Dwci_BackuplSetWiFi + ldr r0, [sp, #8] + cmp r0, #0 + bne _022EE274 + mov r0, r8 + mov r1, #2 + bl InitPage_Dwc +_022EE274: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _022EE290 + add r1, r8, #0x300 + mov r0, #0 + mov r2, #0x100 + bl MTi_CpuClear16 +_022EE290: + mov r4, #0 + mov r5, r4 + mov r2, #1 + add r3, sp, #0 +_022EE2A0: + ldr r0, [r3, r5, lsl #2] + cmp r0, #0 + bne _022EE2D4 + ldrb r0, [r8, #0xef] + tst r0, r2, lsl r5 + beq _022EE2D4 + mov r1, r0 + mvn r0, r2, lsl r5 + and r0, r1, r0 + strb r0, [r8, #0xef] + and r0, r0, #0xff + mov r4, r2 + strb r0, [r8, #0x1ef] +_022EE2D4: + add r5, r5, #1 + cmp r5, #3 + blt _022EE2A0 + mov r0, r8 + bl Dwci_BackuplWriteAll + cmp r0, #0 + addeq sp, sp, #0x10 + ldreq r0, _022EE314 ; =0xFFFFD8F0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r4, #0 + ldrne r0, _022EE31C ; =0xFFFFD8EE + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022EE30C: .word 0xFFFFD8EF +_022EE310: .word 0x0000A001 +_022EE314: .word 0xFFFFD8F0 +_022EE318: .word 0xFFFFD8ED +_022EE31C: .word 0xFFFFD8EE + arm_func_end Dwc_BM_Init + + arm_func_start CheckAp_Dwc +CheckAp_Dwc: ; 0x022EE320 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldrb r0, [r4, #0xe7] + cmp r0, #0xff + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r3, r4, pc} + cmp r0, #2 + addhi sp, sp, #4 + movhi r0, #0 + ldmhiia sp!, {r3, r4, pc} + add r0, r4, #0x40 + bl Dwc_BackuplCheckSsid + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + ldr r1, _022EE41C ; =ov00_02318268 + add r0, r4, #0xc0 + mov r2, #4 + bl memcmp + cmp r0, #0 + beq _022EE3D0 + add r0, r4, #0xc4 + bl Dwc_BackuplCheckAddress + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #0x20 + addhi sp, sp, #4 + movhi r0, #0 + ldmhiia sp!, {r3, r4, pc} + add r1, sp, #0 + bl Dwci_BackuplConvMaskAddr + add r1, sp, #0 + add r0, r4, #0xc0 + bl Dwc_BackuplCheckIp + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} +_022EE3D0: + ldr r1, _022EE41C ; =ov00_02318268 + add r0, r4, #0xc8 + mov r2, #4 + bl memcmp + cmp r0, #0 + beq _022EE410 + add r0, r4, #0xc8 + bl Dwc_BackuplCheckAddress + cmp r0, #0 + bne _022EE410 + add r0, r4, #0xcc + bl Dwc_BackuplCheckAddress + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} +_022EE410: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022EE41C: .word ov00_02318268 + arm_func_end CheckAp_Dwc + + arm_func_start Init_Dwc +Init_Dwc: ; 0x022EE420 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r7, r0 + mov r1, r7 + mov r0, #0 + mov r2, #0x400 + bl MTi_CpuClear16 + mov r2, #0 + mov r1, #0xff +_022EE444: + add r0, r7, r2, lsl #8 + add r2, r2, #1 + strb r1, [r0, #0xe7] + cmp r2, #3 + blt _022EE444 + add r0, sp, #0 + bl Dwci_Auth_GetNewWiFiInfo + add r0, sp, #0 + bl Dwci_BackuplConvWifiInfo + mov r5, r0 + mov r6, #0 + mov r4, #0xe +_022EE474: + mov r0, r5 + mov r2, r4 + add r1, r7, #0xf0 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #0x100 + blt _022EE474 + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end Init_Dwc + + arm_func_start InitPage_Dwc +InitPage_Dwc: ; 0x022EE4A0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + add r1, r5, r4, lsl #8 + mov r0, #0 + mov r2, #0x100 + bl MTi_CpuClear16 + add r0, r5, r4, lsl #8 + mov r1, #0xff + strb r1, [r0, #0xe7] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end InitPage_Dwc + + arm_func_start Dwci_Util_WiFiId_ScrambleUid +Dwci_Util_WiFiId_ScrambleUid: ; 0x022EE4CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + ldr r4, _022EE644 ; =0x0000FFFF + mov lr, #0 + and ip, lr, #0 + add r5, r4, #0xff0000 + and r2, r2, #1 + mov r6, ip, lsl #2 + and r3, r3, #3 + and r5, r1, r5 + orr r1, r3, r2, lsl #2 + orr r6, r6, r2, lsr #30 + mov r7, ip, lsl #3 + and r2, r0, r4 + orr r0, r1, r5, lsl #3 + orr r1, r0, r2, lsl #27 + mov r3, ip, lsl #0x1b + orr r3, r3, r2, lsr #5 + orr r7, r7, r5, lsr #29 + orr r0, ip, r6 + orr r0, r7, r0 + orr r0, r3, r0 + add r2, sp, #8 + str r1, [sp, #8] + str r0, [sp, #0xc] +_022EE530: + ldrb r0, [r2] + add lr, lr, #1 + cmp lr, #6 + eor r0, r0, #0xd6 + strb r0, [r2], #1 + blt _022EE530 + ldr r2, _022EE648 ; =ov00_02318274 + add r4, sp, #8 + mov r5, #0 +_022EE554: + ldrb r3, [r4] + add r5, r5, #1 + cmp r5, #5 + mov r0, r3, asr #4 + and r1, r0, #0xf + and r0, r3, #0xf + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + orr r0, r0, r1, lsl #4 + strb r0, [r4], #1 + blt _022EE554 + add r0, sp, #8 + add r1, sp, #0 + mov r2, #8 + bl MI_CpuCopy8 + ldr r4, _022EE64C ; =ov00_0231826C + add r3, sp, #0 + mov r5, #0 + add r0, sp, #8 +_022EE5A0: + ldrb r2, [r3], #1 + ldrb r1, [r4], #1 + add r5, r5, #1 + cmp r5, #5 + strb r2, [r0, r1] + blt _022EE5A0 + ldrb r2, [sp, #0xd] + mov r1, #0 + ldr r3, [sp, #8] + and r2, r2, #7 + strb r1, [sp, #0xf] + strb r1, [sp, #0xe] + strb r2, [sp, #0xd] + ldr r2, [sp, #0xc] + mov r4, r3, lsl #1 + mov r2, r2, lsl #1 + orr r2, r2, r3, lsr #31 + str r2, [sp, #0xc] + ldrb r2, [sp, #0xd] + str r4, [sp, #8] + ldrb r3, [sp, #8] + mov r2, r2, asr #3 + and r2, r2, #1 + orr r2, r3, r2 + strb r2, [sp, #8] +_022EE604: + ldrb r2, [r0] + add r1, r1, #1 + cmp r1, #6 + eor r2, r2, #0x67 + strb r2, [r0], #1 + blt _022EE604 + ldrb r0, [sp, #0xd] + mov r1, #0 + strb r1, [sp, #0xf] + and r0, r0, #7 + strb r1, [sp, #0xe] + strb r0, [sp, #0xd] + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EE644: .word 0x0000FFFF +_022EE648: .word ov00_02318274 +_022EE64C: .word ov00_0231826C + arm_func_end Dwci_Util_WiFiId_ScrambleUid + + arm_func_start Dwci_Auth_GetNewWiFiInfo +Dwci_Auth_GetNewWiFiInfo: ; 0x022EE650 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov sl, r0 + bl Dwci_BM_GetWiFiInfo + bl Rtc_Init + add r0, sp, #0x14 + bl Rtc_GetDate + cmp r0, #0 + addne sp, sp, #0x24 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #8 + bl Rtc_GetTime + cmp r0, #0 + addne sp, sp, #0x24 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x14 + add r1, sp, #8 + bl Rtc_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x24 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl OS_IsTickAvailable + cmp r0, #0 + beq _022EE6CC + ldr r0, _022EE81C ; =OS_GetTick + adds r4, r4, r0 +_022EE6CC: + add r0, sp, #0 + bl OS_GetMacAddress + ldrb r0, [sp, #1] + ldr r5, _022EE820 ; =0x5D588B65 + ldr r6, _022EE824 ; =0x00269EC3 + ldrb r1, [sp] + mla sb, r4, r5, r6 + mov r0, r0, lsl #8 + orr r1, r0, r1, lsl #16 + ldrb r2, [sp, #2] + ldr r0, _022EE828 ; =0x000009BF + ldrb r7, [sp, #4] + orr r1, r2, r1 + cmp r1, r0 + mov r2, sb, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + movne r1, #1 + ldrb r0, [sp, #5] + ldrb r4, [sp, #3] + mov r3, r7, lsl #8 + moveq r1, #0 + orr r4, r3, r4, lsl #16 + strh r2, [sl, #0x10] + mov r3, #0 + str r3, [sl] + str r3, [sl, #4] + ldrh r2, [sl, #0x12] + and r7, r1, #0xff + orr r8, r0, r4 + str r3, [sl, #8] + cmp r2, #0 + str r3, [sl, #0xc] + bne _022EE7BC + ldr r0, [sl, #8] + cmp r3, r3 + cmpeq r0, r3 + bne _022EE810 + mov fp, r3 + mov r4, r3 +_022EE770: + mul r0, sb, r5 + adds sb, r0, r6 + bne _022EE788 +_022EE77C: + mul r0, sb, r5 + adds sb, r0, r6 + beq _022EE77C +_022EE788: + strh sb, [sl, #0x12] + ldrh r0, [sl, #0x12] + mov r1, r8 + mov r2, r7 + mov r3, #0 + bl Dwci_Util_WiFiId_ScrambleUid + str r0, [sl, #8] + str r1, [sl, #0xc] + ldr r0, [sl, #8] + cmp r1, fp + cmpeq r0, r4 + beq _022EE770 + b _022EE810 +_022EE7BC: + ldr r0, [sl, #8] + cmp r3, r3 + cmpeq r0, r3 + bne _022EE810 + mov r6, r3 + mov r5, r3 + mov r4, r3 +_022EE7D8: + ldrh r0, [sl, #0x12] + mov r1, r8 + mov r2, r7 + add r0, r0, #1 + strh r0, [sl, #0x12] + ldrh r0, [sl, #0x12] + mov r3, r6 + bl Dwci_Util_WiFiId_ScrambleUid + str r0, [sl, #8] + str r1, [sl, #0xc] + ldr r0, [sl, #8] + cmp r1, r5 + cmpeq r0, r4 + beq _022EE7D8 +_022EE810: + mov r0, #1 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EE81C: .word OS_GetTick +_022EE820: .word 0x5D588B65 +_022EE824: .word 0x00269EC3 +_022EE828: .word 0x000009BF + arm_func_end Dwci_Auth_GetNewWiFiInfo + + arm_func_start Dwci_Auth_MakeWiFiID +Dwci_Auth_MakeWiFiID: ; 0x022EE82C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + add r0, sp, #0 + bl Dwci_Auth_GetNewWiFiInfo + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + add r0, sp, #0 + mov r1, r4 + bl Dwci_BM_SetWiFiInfo + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwci_Auth_MakeWiFiID + + arm_func_start Dwci_Auth_UpDateWiFiID +Dwci_Auth_UpDateWiFiID: ; 0x022EE870 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + add r0, sp, #0 + mov r4, r1 + bl Dwci_BM_GetWiFiInfo + add ip, r5, #8 + ldmia ip, {r2, r3} + stmia r5, {r2, r3} + add r1, sp, #8 + ldmia r1, {r2, r3} + mov r0, r5 + mov r1, r4 + stmia ip, {r2, r3} + bl Dwci_BM_SetWiFiInfo + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + arm_func_end Dwci_Auth_UpDateWiFiID + + arm_func_start Dwci_Auth_RemakeWiFiID +Dwci_Auth_RemakeWiFiID: ; 0x022EE8C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + add r2, sp, #0 + mov r1, #0 + mov sl, r0 + strb r1, [r2] + strb r1, [r2, #1] + strb r1, [r2, #2] + strb r1, [r2, #3] + strb r1, [r2, #4] + strb r1, [r2, #5] + bl Dwci_BM_GetWiFiInfo + bl Rtc_Init + add r0, sp, #0x14 + bl Rtc_GetDate + cmp r0, #0 + addne sp, sp, #0x24 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #8 + bl Rtc_GetTime + cmp r0, #0 + addne sp, sp, #0x24 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x14 + add r1, sp, #8 + bl Rtc_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x24 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl OS_IsTickAvailable + cmp r0, #0 + beq _022EE95C + ldr r0, _022EEA50 ; =OS_GetTick + adds r4, r4, r0 +_022EE95C: + add r0, sp, #0 + bl OS_GetMacAddress + ldrb r0, [sp, #1] + ldr r5, _022EEA54 ; =0x5D588B65 + ldr r6, _022EEA58 ; =0x00269EC3 + ldrb r1, [sp] + mov r0, r0, lsl #8 + mla sb, r4, r5, r6 + orr r1, r0, r1, lsl #16 + ldrb r2, [sp, #2] + ldr r0, _022EEA5C ; =0x000009BF + ldrb r7, [sp, #4] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #1 + mov r2, sb, lsr #0x10 + mov r0, #0x3e8 + mul r4, r2, r0 + mov r2, r4, lsr #0x10 + ldrb r0, [sp, #5] + ldrb r8, [sp, #3] + mov r4, r7, lsl #8 + moveq r1, #0 + mov r3, #0 + strh r2, [sl, #0x10] + str r3, [sl, #8] + str r3, [sl, #0xc] + orr r4, r4, r8, lsl #16 + ldr r2, [sl, #8] + cmp r3, #0 + cmpeq r2, #0 + and r7, r1, #0xff + orr r8, r0, r4 + bne _022EEA44 + mov fp, r3 + mov r4, r3 +_022EE9EC: + mla sb, r5, sb, r6 + b _022EE9F8 +_022EE9F4: + mla sb, r5, sb, r6 +_022EE9F8: + cmp sb, #0 + beq _022EE9F4 + ldrh r2, [sl, #0x12] + mov r0, sb, lsl #0x10 + mov r1, r0, lsr #0x10 + cmp r2, r0, lsr #16 + beq _022EE9F4 + strh r1, [sl, #0x12] + ldrh r0, [sl, #0x12] + mov r1, r8 + mov r2, r7 + mov r3, #0 + bl Dwci_Util_WiFiId_ScrambleUid + str r0, [sl, #8] + str r1, [sl, #0xc] + ldr r0, [sl, #8] + cmp r1, fp + cmpeq r0, r4 + beq _022EE9EC +_022EEA44: + mov r0, #1 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EEA50: .word OS_GetTick +_022EEA54: .word 0x5D588B65 +_022EEA58: .word 0x00269EC3 +_022EEA5C: .word 0x000009BF + arm_func_end Dwci_Auth_RemakeWiFiID + + arm_func_start Dwc_Auth_GetId +Dwc_Auth_GetId: ; 0x022EEA60 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + add r0, sp, #0 + bl Dwci_BM_GetWiFiInfo + add r0, sp, #0 + ldmia r0, {r2, r3} + stmia r4, {r2, r3} + add r1, sp, #8 + add r0, r4, #8 + ldmia r1, {r2, r3} + stmia r0, {r2, r3} + ldr r0, [sp, #4] + ldr r1, [sp] + cmp r0, #0 + mov r0, #0 + cmpeq r1, #0 + movne r0, #1 + str r0, [r4, #0x10] + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwc_Auth_GetId + + arm_func_start Dwc_Auth_CheckWiFiIdNeedCreate +Dwc_Auth_CheckWiFiIdNeedCreate: ; 0x022EEAB4 + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0 + bl Dwci_BM_GetWiFiInfo + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + cmp r0, #0 + cmpeq r1, #0 + mov r0, #0 + bne _022EEAF8 + ldr r1, [sp, #4] + ldr r2, [sp] + cmp r1, r0 + cmpeq r2, r0 + addeq sp, sp, #0x14 + moveq r0, #1 + ldmeqia sp!, {pc} +_022EEAF8: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {pc} + arm_func_end Dwc_Auth_CheckWiFiIdNeedCreate + + arm_func_start b64size +b64size: ; 0x022EEB04 + ldr r1, _022EEB38 ; =0xAAAAAAAB + mov r3, #3 + umull r1, r2, r0, r1 + mov r2, r2, lsr #1 + umull r1, r2, r3, r2 + subs r2, r0, r1 + ldr r1, _022EEB38 ; =0xAAAAAAAB + movne r3, #1 + umull r1, r2, r0, r1 + moveq r3, #0 + add r0, r3, r2, lsr #1 + mov r0, r0, lsl #2 + bx lr + .align 2, 0 +_022EEB38: .word 0xAAAAAAAB + arm_func_end b64size + + arm_func_start my_randinit +my_randinit: ; 0x022EEB3C + ldr r1, _022EEB4C ; =ov00_02327720 + orr r0, r0, r0, lsl #16 + str r0, [r1] + bx lr + .align 2, 0 +_022EEB4C: .word ov00_02327720 + arm_func_end my_randinit + + arm_func_start my_rand +my_rand: ; 0x022EEB50 + stmdb sp!, {r3, lr} + ldr r1, _022EEB88 ; =ov00_0231A2C4 + ldr r0, _022EEB8C ; =ov00_02327720 + ldr r3, [r1, #0x4c] + ldr r2, [r1, #0x48] + ldr r0, [r0] + ldr r1, [r1, #0x50] + mla r0, r2, r0, r3 + bl _u32_div_f + ldr r0, _022EEB8C ; =ov00_02327720 + mov r2, r1, asr #0x10 + str r1, [r0] + and r0, r2, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_022EEB88: .word ov00_0231A2C4 +_022EEB8C: .word ov00_02327720 + arm_func_end my_rand + + arm_func_start Dwci_RankingValidateKey +Dwci_RankingValidateKey: ; 0x022EEB90 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, _022EEC80 ; =ov00_0231A2C4 + mov ip, #0 + str ip, [r4, #0x10] + ldr r4, [sp, #0x18] + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl strlen + cmp r0, #0x20 + movhs r0, #0 + ldmhsia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + bl strlen + cmp r0, #0x14 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + sub r0, r6, #5 + tst r0, #7 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + tst r5, #1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r2, #0 + mov r1, r2 +_022EEBFC: + mov r0, r4, lsr r1 + and r0, r0, #1 + cmp r0, #1 + add r1, r1, #1 + addeq r2, r2, #1 + cmp r1, #0x20 + blt _022EEBFC + cmp r2, #1 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022EEC84 ; =ov00_0231A2D8 + mov r1, r8 + mov r2, #0x20 + bl strncpy + ldr r3, _022EEC88 ; =ov00_0231A2F8 + mov r2, #0xa +_022EEC3C: + ldrb r1, [r7] + ldrb r0, [r7, #1] + add r7, r7, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022EEC3C + ldr r1, _022EEC80 ; =ov00_0231A2C4 + ldr r0, [sp, #0x1c] + str r6, [r1, #0x48] + str r5, [r1, #0x4c] + str r4, [r1, #0x50] + str r0, [r1, #0x54] + mov r0, #1 + str r0, [r1, #0x10] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EEC80: .word ov00_0231A2C4 +_022EEC84: .word ov00_0231A2D8 +_022EEC88: .word ov00_0231A2F8 + arm_func_end Dwci_RankingValidateKey + + arm_func_start Dwci_RankingSessionCompleteCallback_Helper +Dwci_RankingSessionCompleteCallback_Helper: ; 0x022EEC8C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x50 + ldr r4, _022EEE30 ; =ov00_02318284 + add r3, sp, #0 + mov r6, r0 + mov r5, r1 + mov r2, #8 +_022EECA8: + ldrb r1, [r4] + ldrb r0, [r4, #1] + add r4, r4, #2 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + bne _022EECA8 + ldrb r0, [r4] + cmp r5, #0x28 + addle sp, sp, #0x50 + strb r0, [r3] + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} + sub r4, r5, #0x28 + mov r0, r4 + bl b64size + add r1, r0, #0x29 + mov r0, #7 + bl Dwc_Alloc + movs r7, r0 + addeq sp, sp, #0x50 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r8, _022EEE34 ; =ov00_0231A2F8 + mov r3, r7 + mov r2, #0xa +_022EED14: + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r8, r8, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022EED14 + mov r0, r6 + mov r2, r4 + add r1, r7, #0x14 + mov r3, #2 + bl B64Encode + mov r0, r4 + bl b64size + add r1, r7, #0x14 + ldr r3, _022EEE34 ; =ov00_0231A2F8 + add r8, r1, r0 + mov r2, #0xa +_022EED60: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [r8] + strb r0, [r8, #1] + add r8, r8, #2 + bne _022EED60 + mov r0, r4 + bl b64size + mov r2, r0 + add r0, sp, #0x11 + mov r1, r7 + add r2, r2, #0x28 + bl Math_CalcSha1 + mov r1, r7 + mov r0, #7 + mov r2, #0 + bl Dwc_Free + mov r2, #0 + add r3, sp, #0x11 + mov r7, r2 + add r1, sp, #0x25 + add r8, sp, #0 +_022EEDC0: + ldrb ip, [r3], #1 + add r2, r2, #1 + add r0, r1, r7 + mov lr, ip, asr #4 + and ip, ip, #0xf + ldrsb lr, [r8, lr] + ldrsb ip, [r8, ip] + cmp r2, #0x14 + strb lr, [r1, r7] + strb ip, [r0, #1] + add r7, r7, #2 + blt _022EEDC0 + sub r0, r5, #0x28 + mov r3, #0 + add r0, r6, r0 + mov r2, #0x28 + strb r3, [sp, #0x4d] + bl strncmp + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, _022EEE38 ; =ov00_0231A2C4 + mov r0, #1 + str r6, [r1, #0x6c] + str r4, [r1, #0x70] + add sp, sp, #0x50 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EEE30: .word ov00_02318284 +_022EEE34: .word ov00_0231A2F8 +_022EEE38: .word ov00_0231A2C4 + arm_func_end Dwci_RankingSessionCompleteCallback_Helper + + arm_func_start Dwci_RankingSessionProgressCallback +Dwci_RankingSessionProgressCallback: ; 0x022EEE3C + bx lr + arm_func_end Dwci_RankingSessionProgressCallback + + arm_func_start Dwci_RankingSessionCompleteCallback +Dwci_RankingSessionCompleteCallback: ; 0x022EEE40 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x48 + ldr r3, _022EF0B0 ; =ov00_0231A2C4 + mvn r4, #0 + str r4, [r3, #0xc] + ldr ip, [r3, #4] + mov r5, r0 + cmp ip, #1 + mov r4, r1 + addeq sp, sp, #0x48 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r2, #0 + bne _022EF0A0 + cmp ip, #5 + beq _022EEE8C + cmp ip, #7 + beq _022EEFB8 + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022EEE8C: + cmp r4, #0x20 + bne _022EEFA0 + ldr r0, [r3, #0x5c] + ldr r3, _022EF0B4 ; =ov00_02318295 + add lr, sp, #0 + add r4, r0, #0x14 + mov r2, #8 +_022EEEA8: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + strb r1, [lr] + strb r0, [lr, #1] + add lr, lr, #2 + subs r2, r2, #1 + bne _022EEEA8 + ldrb r0, [r3] + ldr r3, _022EF0B8 ; =ov00_0231A2F8 + add ip, sp, #0x11 + strb r0, [lr] + mov r2, #0xa +_022EEEDC: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + strb r1, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + subs r2, r2, #1 + bne _022EEEDC + add r0, sp, #0x25 + mov r1, r5 + mov r2, #0x20 + bl memcpy + add r1, sp, #0x11 + mov r0, r4 + mov r2, #0x34 + bl Math_CalcSha1 + mov r0, #0 + ldr r2, _022EF0B0 ; =ov00_0231A2C4 + mov r1, r0 + add lr, sp, #0 +_022EEF2C: + ldrb ip, [r4, r0] + ldr r3, [r2, #0x5c] + mov ip, ip, asr #4 + ldrsb ip, [lr, ip] + strb ip, [r3, r1] + ldrb ip, [r4, r0] + ldr r3, [r2, #0x5c] + add r0, r0, #1 + and ip, ip, #0xf + ldrsb ip, [lr, ip] + add r3, r3, r1 + cmp r0, #0x14 + strb ip, [r3, #1] + add r1, r1, #2 + blt _022EEF2C + ldr r0, _022EF0BC ; =ov00_0231A368 + bl strlen + ldr r1, _022EF0B0 ; =ov00_0231A2C4 + mov r4, #0x26 + ldr r3, [r1, #0x5c] + mov r2, #0x29 + strb r4, [r3, -r0] + ldr r1, [r1, #0x5c] + ldr r0, _022EF0C0 ; =ov00_0231A33C + bl strncpy + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + mov r1, #6 + str r1, [r0, #4] + b _022EEFA8 +_022EEFA0: + mov r0, #1 + str r0, [r3, #4] +_022EEFA8: + mov r0, r5 + bl Dwci_GsFree + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022EEFB8: + ldr r0, _022EF0C4 ; =ov00_0231A370 + bl strlen + mov r2, r0 + ldr r1, _022EF0C4 ; =ov00_0231A370 + mov r0, r5 + bl strncmp + cmp r0, #0 + bne _022EEFF4 + mov r0, r5 + bl Dwci_GsFree + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + mov r1, #1 + str r1, [r0, #4] + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022EEFF4: + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + ldr r0, [r0, #0x64] + cmp r0, #0 + beq _022EF014 + bl Dwci_GsFree + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + mov r1, #0 + str r1, [r0, #0x64] +_022EF014: + mov r0, r5 + mov r1, r4 + bl Dwci_RankingSessionCompleteCallback_Helper + cmp r0, #0 + bne _022EF044 + mov r0, r5 + bl Dwci_GsFree + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + mov r1, #1 + str r1, [r0, #4] + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022EF044: + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + ldr r2, [r0, #0x74] + cmp r2, #0 + beq _022EF084 + mov r0, r5 + mov r1, r4 + blx r2 + cmp r0, #0 + bne _022EF084 + mov r0, r5 + bl Dwci_GsFree + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + mov r1, #1 + str r1, [r0, #4] + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022EF084: + ldr r0, _022EF0B0 ; =ov00_0231A2C4 + mov r1, #8 + str r5, [r0, #0x64] + str r4, [r0, #0x68] + str r1, [r0, #4] + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} +_022EF0A0: + mov r0, #1 + str r0, [r3, #4] + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EF0B0: .word ov00_0231A2C4 +_022EF0B4: .word ov00_02318295 +_022EF0B8: .word ov00_0231A2F8 +_022EF0BC: .word ov00_0231A368 +_022EF0C0: .word ov00_0231A33C +_022EF0C4: .word ov00_0231A370 + arm_func_end Dwci_RankingSessionCompleteCallback + + arm_func_start Dwci_RankingSessionEncrypt +Dwci_RankingSessionEncrypt: ; 0x022EF0C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r4, [sp, #0x20] + mov sb, r2 + add r7, r4, sb + mov r4, r0 + mov sl, r1 + add r1, r7, #4 + mov r0, #7 + mov r8, r3 + mov r6, #0 + bl Dwc_Alloc + movs r5, r0 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp sb, #0 + mov r2, r6 + ble _022EF124 +_022EF10C: + ldrb r1, [sl, r2] + add r0, r5, r2 + add r2, r2, #1 + strb r1, [r0, #4] + cmp r2, sb + blt _022EF10C +_022EF124: + ldr r3, [sp, #0x20] + mov sl, #0 + cmp r3, #0 + ble _022EF150 + add r2, r5, sb +_022EF138: + ldrb r1, [r8, sl] + add r0, r2, sl + add sl, sl, #1 + strb r1, [r0, #4] + cmp sl, r3 + blt _022EF138 +_022EF150: + cmp r7, #0 + mov r1, #0 + ble _022EF174 +_022EF15C: + add r0, r5, r1 + ldrb r0, [r0, #4] + add r1, r1, #1 + cmp r1, r7 + add r6, r6, r0 + blt _022EF15C +_022EF174: + mov r0, r6 + bl my_randinit + cmp r7, #0 + mov r8, #0 + ble _022EF1A8 +_022EF188: + bl my_rand + add r2, r5, r8 + ldrb r1, [r2, #4] + add r8, r8, #1 + cmp r8, r7 + eor r0, r1, r0 + strb r0, [r2, #4] + blt _022EF188 +_022EF1A8: + ldr r1, _022EF20C ; =ov00_0231A2C4 + mov r0, r5 + ldr r2, [r1, #0x54] + mov r1, r4 + eor r6, r6, r2 + mov r2, r6, lsr #0x18 + strb r2, [r5] + mov r2, r6, lsr #0x10 + strb r2, [r5, #1] + mov r2, r6, lsr #8 + strb r2, [r5, #2] + add r2, r7, #4 + mov r3, #2 + strb r6, [r5, #3] + bl B64Encode + mov r1, r5 + mov r0, #7 + mov r2, #0 + bl Dwc_Free + add r0, r7, #4 + bl b64size + mov r1, #0 + strb r1, [r4, r0] + mov r0, r1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022EF20C: .word ov00_0231A2C4 + arm_func_end Dwci_RankingSessionEncrypt + + arm_func_start Dwci_RankingSessionInitialize +Dwci_RankingSessionInitialize: ; 0x022EF210 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x28 + mov r5, #0 + add r4, sp, #8 + ldr r2, _022EF370 ; =ov00_0231A2C4 + sub r3, r5, #1 + strb r5, [r4] + strb r5, [r4, #1] + strb r5, [r4, #2] + strb r5, [r4, #3] + strb r5, [r4, #4] + strb r5, [r4, #5] + strb r5, [r4, #6] + strb r5, [r4, #7] + strb r5, [r4, #8] + str r3, [r2, #0xc] + str r5, [r2, #0x58] + str r5, [r2, #0x5c] + str r5, [r2, #0x60] + str r5, [r2, #0x64] + mov r4, r1 + str r5, [r2, #0x68] + cmp r0, #0 + beq _022EF288 + cmp r0, #1 + beq _022EF294 + cmp r0, #2 + ldreq r0, _022EF374 ; =ov00_0231A3C4 + streq r0, [r2] + b _022EF29C +_022EF288: + ldr r0, _022EF378 ; =ov00_0231A378 + str r0, [r2] + b _022EF29C +_022EF294: + ldr r0, _022EF37C ; =ov00_0231A3A0 + str r0, [r2] +_022EF29C: + add r0, sp, #0x11 + mov r1, r4 + mov r2, #0x14 + bl strncpy + mov r3, #0 + add r0, sp, #8 + add r1, r4, #0x14 + mov r2, #8 + strb r3, [sp, #0x25] + bl strncpy + mov r1, #0 + mov r2, #0x10 + bl strtoul + mov r7, r0 + add r0, sp, #8 + add r1, r4, #0x1c + mov r2, #8 + bl strncpy + mov r1, #0 + mov r2, #0x10 + bl strtoul + mov r6, r0 + add r0, sp, #8 + add r1, r4, #0x24 + mov r2, #8 + bl strncpy + mov r1, #0 + mov r2, #0x10 + bl strtoul + mov r5, r0 + add r0, sp, #8 + add r1, r4, #0x2c + mov r2, #8 + bl strncpy + mov r1, #0 + mov r2, #0x10 + bl strtoul + str r5, [sp] + str r0, [sp, #4] + mov r2, r7 + mov r3, r6 + add r0, r4, #0x34 + add r1, sp, #0x11 + bl Dwci_RankingValidateKey + mov r0, #0 + bl Dwc_InitGhttp + ldr r0, _022EF370 ; =ov00_0231A2C4 + mov r2, #3 + mov r1, #1 + str r2, [r0, #4] + str r1, [r0, #8] + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EF370: .word ov00_0231A2C4 +_022EF374: .word ov00_0231A3C4 +_022EF378: .word ov00_0231A378 +_022EF37C: .word ov00_0231A3A0 + arm_func_end Dwci_RankingSessionInitialize + + arm_func_start Dwci_RankingSessionProcess +Dwci_RankingSessionProcess: ; 0x022EF380 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _022EF49C ; =ov00_0231A2C4 + ldr r1, [r0, #4] + cmp r1, #8 + addls pc, pc, r1, lsl #2 + b _022EF48C +_022EF39C: ; jump table + b _022EF48C ; case 0 + b _022EF3C0 ; case 1 + b _022EF48C ; case 2 + b _022EF48C ; case 3 + b _022EF3DC ; case 4 + b _022EF41C ; case 5 + b _022EF438 ; case 6 + b _022EF478 ; case 7 + b _022EF48C ; case 8 +_022EF3C0: + bl Dwci_IsError + cmp r0, #0 + bne _022EF48C + ldr r1, _022EF4A0 ; =0xFFFEA048 + mov r0, #6 + bl Dwci_SetError + b _022EF48C +_022EF3DC: + ldr r2, _022EF4A4 ; =Dwci_RankingSessionCompleteCallback + mov r1, #0 + str r2, [sp] + str r1, [sp, #4] + ldr r0, [r0, #0x58] + ldr r3, _022EF4A8 ; =Dwci_RankingSessionProgressCallback + mov r2, r1 + bl Dwc_GetGhttpDataEx2 + ldr r1, _022EF49C ; =ov00_0231A2C4 + cmp r0, #0 + str r0, [r1, #0xc] + movge r0, #5 + strge r0, [r1, #4] + movlt r0, #1 + strlt r0, [r1, #4] + b _022EF48C +_022EF41C: + bl Dwc_ProcessGhttp + cmp r0, #0 + bne _022EF48C + ldr r0, _022EF49C ; =ov00_0231A2C4 + mov r1, #1 + str r1, [r0, #4] + b _022EF48C +_022EF438: + ldr r2, _022EF4A4 ; =Dwci_RankingSessionCompleteCallback + mov r1, #0 + str r2, [sp] + str r1, [sp, #4] + ldr r0, [r0, #0x58] + ldr r3, _022EF4A8 ; =Dwci_RankingSessionProgressCallback + mov r2, r1 + bl Dwc_GetGhttpDataEx2 + ldr r1, _022EF49C ; =ov00_0231A2C4 + cmp r0, #0 + str r0, [r1, #0xc] + movge r0, #7 + strge r0, [r1, #4] + movlt r0, #1 + strlt r0, [r1, #4] + b _022EF48C +_022EF478: + bl Dwc_ProcessGhttp + cmp r0, #0 + ldreq r0, _022EF49C ; =ov00_0231A2C4 + moveq r1, #1 + streq r1, [r0, #4] +_022EF48C: + ldr r0, _022EF49C ; =ov00_0231A2C4 + ldr r0, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EF49C: .word ov00_0231A2C4 +_022EF4A0: .word 0xFFFEA048 +_022EF4A4: .word Dwci_RankingSessionCompleteCallback +_022EF4A8: .word Dwci_RankingSessionProgressCallback + arm_func_end Dwci_RankingSessionProcess + + arm_func_start Dwci_RankingSessionCancel +Dwci_RankingSessionCancel: ; 0x022EF4AC + stmdb sp!, {r3, lr} + ldr r0, _022EF4D4 ; =ov00_0231A2C4 + ldr r0, [r0, #0xc] + cmp r0, #0 + blt _022EF4C4 + bl Dwc_CancelGhttpRequest +_022EF4C4: + ldr r0, _022EF4D4 ; =ov00_0231A2C4 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EF4D4: .word ov00_0231A2C4 + arm_func_end Dwci_RankingSessionCancel + + arm_func_start Dwci_RankingSessionShutdown +Dwci_RankingSessionShutdown: ; 0x022EF4D8 + stmdb sp!, {r3, lr} + ldr r0, _022EF544 ; =ov00_0231A2C4 + ldr r1, [r0, #0x58] + cmp r1, #0 + beq _022EF504 + mov r0, #7 + mov r2, #0 + bl Dwc_Free + ldr r0, _022EF544 ; =ov00_0231A2C4 + mov r1, #0 + str r1, [r0, #0x58] +_022EF504: + ldr r0, _022EF544 ; =ov00_0231A2C4 + ldr r0, [r0, #0x64] + cmp r0, #0 + beq _022EF528 + bl Dwci_GsFree + ldr r0, _022EF544 ; =ov00_0231A2C4 + mov r1, #0 + str r1, [r0, #0x68] + str r1, [r0, #0x64] +_022EF528: + bl Dwc_ShutdownGhttp + ldr r0, _022EF544 ; =ov00_0231A2C4 + mov r1, #2 + str r1, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EF544: .word ov00_0231A2C4 + arm_func_end Dwci_RankingSessionShutdown + + arm_func_start Dwci_RankingSessionGetResponse +Dwci_RankingSessionGetResponse: ; 0x022EF548 + ldr r1, _022EF55C ; =ov00_0231A2C4 + ldr r2, [r1, #0x70] + str r2, [r0] + ldr r0, [r1, #0x6c] + bx lr + .align 2, 0 +_022EF55C: .word ov00_0231A2C4 + arm_func_end Dwci_RankingSessionGetResponse + + arm_func_start Dwci_RankingSessionPutAsync +Dwci_RankingSessionPutAsync: ; 0x022EF560 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + ldr r4, _022EF784 ; =ov00_0231A2C4 + mov sl, r0 + ldr r0, [r4, #0x10] + mov sb, r1 + cmp r0, #1 + str r2, [sp, #0x10] + mov r8, r3 + addne sp, sp, #0x34 + movne r0, #3 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x58] + cmp r1, #0 + beq _022EF5B4 + mov r0, #7 + mov r2, #0 + bl Dwc_Free + mov r0, r4 + mov r1, #0 + str r1, [r0, #0x58] +_022EF5B4: + add r0, r8, #0xc + bl b64size + mov r7, r0 + ldr r0, _022EF788 ; =ov00_0231A3EC + bl strlen + mov r6, r0 + ldr r0, _022EF78C ; =ov00_0231A368 + bl strlen + mov r5, r0 + ldr r2, _022EF790 ; =ov00_0231A3F4 + add r0, sp, #0x24 + mov r1, #0x10 + mov r3, sb + bl snprintf + mov fp, r0 + ldr r0, _022EF794 ; =ov00_0231A3F8 + bl strlen + str r0, [sp, #0x14] + mov r0, sl + bl strlen + str r0, [sp, #0x18] + ldr r0, _022EF784 ; =ov00_0231A2C4 + ldr r0, [r0] + bl strlen + mov r4, r0 + ldr r0, _022EF798 ; =ov00_0231A2D8 + bl strlen + add r1, r4, r0 + ldr r0, [sp, #0x18] + add r1, r0, r1 + ldr r0, [sp, #0x14] + add r0, r0, r1 + add r0, fp, r0 + add r0, r5, r0 + add r0, r0, #0x29 + add r0, r6, r0 + add r1, r7, r0 + mov r0, #7 + bl Dwc_Alloc + ldr r1, _022EF784 ; =ov00_0231A2C4 + cmp r0, #0 + str r0, [r1, #0x58] + addeq sp, sp, #0x34 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str sl, [sp] + ldr r3, _022EF79C ; =ov00_0231A41C + str sb, [sp, #4] + str r3, [sp, #8] + ldr r2, _022EF7A0 ; =ov00_0231A448 + ldr r3, _022EF798 ; =ov00_0231A2D8 + str r2, [sp, #0xc] + ldr r2, [r1] + ldr r1, _022EF7A4 ; =ov00_0231A400 + bl sprintf + ldr r0, _022EF784 ; =ov00_0231A2C4 + ldr r4, [r0, #0x58] + mov r0, r4 + bl strlen + add r2, r4, r0 + ldr r1, _022EF784 ; =ov00_0231A2C4 + ldr r0, _022EF788 ; =ov00_0231A3EC + str r2, [r1, #0x60] + bl strlen + ldr r4, _022EF784 ; =ov00_0231A2C4 + ldr r3, [sp, #0x10] + ldr r5, [r4, #0x60] + add r1, sp, #0x1c + sub r0, r5, r0 + sub r0, r0, #0x28 + str r0, [r4, #0x5c] + str sb, [sp, #0x1c] + str r8, [sp, #0x20] + str r8, [sp] + ldr r0, [r4, #0x60] + mov r2, #8 + bl Dwci_RankingSessionEncrypt + cmp r0, #2 + bne _022EF71C + mov r1, r4 + ldr r1, [r1, #0x58] + mov r0, #7 + mov r2, #0 + bl Dwc_Free + mov r0, r4 + mov r1, #0 + str r1, [r0, #0x58] + add sp, sp, #0x34 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EF71C: + ldr r0, [sp, #0x5c] + cmp r0, #0 + beq _022EF74C + mov r0, r4 + ldr r1, _022EF7A8 ; =ov00_0231A33C + ldr r0, [r0, #0x5c] + mov r2, #0x28 + bl memcpy + mov r0, r4 + mov r1, #6 + str r1, [r0, #4] + b _022EF76C +_022EF74C: + ldr r0, _022EF78C ; =ov00_0231A368 + bl strlen + mov r1, r4 + ldr r3, [r1, #0x5c] + mov r4, #0 + mov r2, #4 + strb r4, [r3, -r0] + str r2, [r1, #4] +_022EF76C: + ldr r2, [sp, #0x58] + ldr r1, _022EF784 ; =ov00_0231A2C4 + mov r0, #0 + str r2, [r1, #0x74] + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EF784: .word ov00_0231A2C4 +_022EF788: .word ov00_0231A3EC +_022EF78C: .word ov00_0231A368 +_022EF790: .word ov00_0231A3F4 +_022EF794: .word ov00_0231A3F8 +_022EF798: .word ov00_0231A2D8 +_022EF79C: .word ov00_0231A41C +_022EF7A0: .word ov00_0231A448 +_022EF7A4: .word ov00_0231A400 +_022EF7A8: .word ov00_0231A33C + arm_func_end Dwci_RankingSessionPutAsync + + arm_func_start Dwci_RankingSessionGetAsync +Dwci_RankingSessionGetAsync: ; 0x022EF7AC + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr lr, [sp, #0x10] + mov ip, #0 + str lr, [sp] + str ip, [sp, #4] + bl Dwci_RankingSessionPutAsync + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end Dwci_RankingSessionGetAsync + + arm_func_start Dwci_Ndi_FreeAttr +Dwci_Ndi_FreeAttr: ; 0x022EF7D0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + ldr r6, _022EF80C ; =ov00_0232774C + ldr r4, _022EF810 ; =ov00_02327744 + mov r5, r7 +_022EF7E4: + ldr r0, [r6, r7, lsl #2] + cmp r0, #0 + beq _022EF7FC + ldr r1, [r4] + blx r1 + str r5, [r6, r7, lsl #2] +_022EF7FC: + add r7, r7, #1 + cmp r7, #3 + blt _022EF7E4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EF80C: .word ov00_0232774C +_022EF810: .word ov00_02327744 + arm_func_end Dwci_Ndi_FreeAttr + + arm_func_start SetAttr_Dwc +SetAttr_Dwc: ; 0x022EF814 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + ldrsb r1, [r6] + mov r4, r0 + cmp r1, #0 + beq _022EF8D0 + mov r0, r6 + bl Dwci_Ndi_Strlen + cmp r0, #0xa + ble _022EF850 + ldr r0, _022EF8D8 ; =ov00_02327740 + mov r1, #7 + str r1, [r0] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022EF850: + mov r0, r6 + bl Dwci_Ndi_Strlen + mov r5, r0 + cmp r5, #0xa + ble _022EF878 + ldr r0, _022EF8D8 ; =ov00_02327740 + mov r1, #7 + str r1, [r0] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022EF878: + bl Dwci_Ndi_GetEncodeLenBase64 + ldr r1, _022EF8DC ; =ov00_02327730 + add r0, r0, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + ldr r1, _022EF8E0 ; =ov00_0232774C + cmp r0, #0 + str r0, [r1, r4, lsl #2] + bne _022EF8B4 + ldr r0, _022EF8D8 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022EF8B4: + mov r1, r6 + mov r2, r5 + bl Dwci_Ndi_EncodeBase64 + ldr r1, _022EF8E0 ; =ov00_0232774C + mov r2, #0 + ldr r1, [r1, r4, lsl #2] + strb r2, [r1, r0] +_022EF8D0: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EF8D8: .word ov00_02327740 +_022EF8DC: .word ov00_02327730 +_022EF8E0: .word ov00_0232774C + arm_func_end SetAttr_Dwc + + arm_func_start Dwci_NdSetAttr +Dwci_NdSetAttr: ; 0x022EF8E4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl Dwci_Ndi_LockGlobal + bl Dwci_Ndi_FreeAttr + mov r1, r6 + mov r0, #0 + bl SetAttr_Dwc + cmp r0, #0 + beq _022EF944 + mov r1, r5 + mov r0, #1 + bl SetAttr_Dwc + cmp r0, #0 + beq _022EF944 + mov r1, r4 + mov r0, #2 + bl SetAttr_Dwc + cmp r0, #0 + beq _022EF944 + bl Dwci_Ndi_UnlockGlobal + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_022EF944: + bl Dwci_Ndi_FreeAttr + bl Dwci_Ndi_UnlockGlobal + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Dwci_NdSetAttr + + arm_func_start GetNChar_Dwc +GetNChar_Dwc: ; 0x022EF954 + stmdb sp!, {r4, lr} + mov r4, #0 + mov lr, r4 + cmp r2, #0 + ble _022EF994 + mov r3, r4 +_022EF96C: + ldrsb ip, [r1] + cmp ip, #0 + streqb r3, [r0], #1 + beq _022EF988 + add r4, r4, #1 + add r1, r1, #1 + strb ip, [r0], #1 +_022EF988: + add lr, lr, #1 + cmp lr, r2 + blt _022EF96C +_022EF994: + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end GetNChar_Dwc + + arm_func_start DecodeChar_Dwc +DecodeChar_Dwc: ; 0x022EF99C + cmp r0, #0x41 + blo _022EF9B0 + cmp r0, #0x5a + subls r0, r0, #0x41 + bxls lr +_022EF9B0: + cmp r0, #0x61 + blo _022EF9C4 + cmp r0, #0x7a + subls r0, r0, #0x47 + bxls lr +_022EF9C4: + cmp r0, #0x30 + blo _022EF9D8 + cmp r0, #0x39 + addls r0, r0, #4 + bxls lr +_022EF9D8: + cmp r0, #0x2e + moveq r0, #0x3e + bxeq lr + cmp r0, #0x2d + moveq r0, #0x3f + mvnne r0, #0 + bx lr + arm_func_end DecodeChar_Dwc + + arm_func_start Dwci_Ndi_GetDecodeLenBase64 +Dwci_Ndi_GetDecodeLenBase64: ; 0x022EF9F4 + mov r0, r0, asr #2 + add r0, r0, r0, lsl #1 + bx lr + arm_func_end Dwci_Ndi_GetDecodeLenBase64 + + arm_func_start Dwci_Ndi_GetEncodeLenBase64 +Dwci_Ndi_GetEncodeLenBase64: ; 0x022EFA00 + ldr r1, _022EFA18 ; =0x55555556 + add r2, r0, #2 + smull r0, r3, r1, r2 + add r3, r3, r2, lsr #31 + mov r0, r3, lsl #2 + bx lr + .align 2, 0 +_022EFA18: .word 0x55555556 + arm_func_end Dwci_Ndi_GetEncodeLenBase64 + + arm_func_start Dwci_Ndi_EncodeBase64 +Dwci_Ndi_EncodeBase64: ; 0x022EFA1C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r7, r2 + mov r8, r1 + mov sb, r0 + cmp r7, #3 + movgt r2, #3 + add r0, sp, #0 + mov r1, r8 + mov r6, #0 + bl GetNChar_Dwc + cmp r0, #0 + ble _022EFB00 + mov r5, #0 + ldr sl, _022EFB10 ; =ov00_023182A8 + mov r4, r5 + mov fp, #0x2a +_022EFA5C: + cmp r7, #3 + strltb r5, [sp, #2] + cmp r7, #2 + strltb r4, [sp, #1] + ldrb r1, [sp, #2] + ldrb r2, [sp] + ldrb r3, [sp, #1] + mov lr, r1, asr #6 + mov ip, r2, asr #2 + orr lr, lr, r3, lsl #2 + mov r3, r3, asr #4 + and ip, ip, #0xff + orr r2, r3, r2, lsl #4 + ldrsb ip, [sl, ip] + and r2, r2, #0x3f + ldrsb r2, [sl, r2] + strb ip, [sb] + and ip, lr, #0x3f + cmp r0, #1 + strb r2, [sb, #1] + ldrgtsb r2, [sl, ip] + and r1, r1, #0x3f + add r8, r8, r0 + movle r2, fp + cmp r0, #2 + ldrgtsb r1, [sl, r1] + strb r2, [sb, #2] + add r6, r6, #4 + movle r1, #0x2a + strb r1, [sb, #3] + add sb, sb, #4 + subs r7, r7, r0 + beq _022EFB00 + cmp r7, #3 + movgt r2, #3 + movle r2, r7 + add r0, sp, #0 + mov r1, r8 + bl GetNChar_Dwc + cmp r0, #0 + bgt _022EFA5C +_022EFB00: + mov r1, #0 + mov r0, r6 + strb r1, [sb] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EFB10: .word ov00_023182A8 + arm_func_end Dwci_Ndi_EncodeBase64 + + arm_func_start Dwci_Ndi_EecodeBase64 +Dwci_Ndi_EecodeBase64: ; 0x022EFB14 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov sb, r0 + mov r7, r2 + add r0, sp, #3 + mov r2, #4 + mov r6, #0 + mov r8, r1 + bl GetNChar_Dwc + mov r5, r0 + mov r4, r6 + b _022EFC20 +_022EFB44: + ldrb r0, [sp, #3] + mov r1, #0 + strb r1, [sp] + strb r1, [sp, #1] + strb r1, [sp, #2] + bl DecodeChar_Dwc + movs r4, r0 + bmi _022EFBCC + ldrb r0, [sp, #4] + mov r1, r4, lsl #2 + strb r1, [sp] + bl DecodeChar_Dwc + movs r4, r0 + bmi _022EFBCC + ldrsb r2, [sp] + ldrb r0, [sp, #5] + mov r1, r4, lsl #4 + orr r2, r2, r4, asr #4 + strb r2, [sp] + strb r1, [sp, #1] + bl DecodeChar_Dwc + movs r4, r0 + bmi _022EFBCC + ldrsb r2, [sp, #1] + ldrb r0, [sp, #6] + mov r1, r4, lsl #6 + orr r2, r2, r4, asr #2 + strb r1, [sp, #2] + strb r2, [sp, #1] + bl DecodeChar_Dwc + movs r4, r0 + ldrplsb r0, [sp, #2] + orrpl r0, r0, r4 + strplb r0, [sp, #2] +_022EFBCC: + sub r1, r5, #1 + cmp r1, #0 + mov r2, #0 + ble _022EFBF4 + add r3, sp, #0 +_022EFBE0: + ldrsb r0, [r3], #1 + add r2, r2, #1 + cmp r2, r1 + strb r0, [sb], #1 + blt _022EFBE0 +_022EFBF4: + sub r0, r5, #1 + sub r7, r7, #4 + cmp r7, #0 + add r8, r8, r5 + add r6, r6, r0 + ble _022EFC30 + add r0, sp, #3 + mov r1, r8 + mov r2, #4 + bl GetNChar_Dwc + mov r5, r0 +_022EFC20: + cmp r5, #0 + ble _022EFC30 + cmp r4, #0 + bge _022EFB44 +_022EFC30: + mov r0, r6 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end Dwci_Ndi_EecodeBase64 + + arm_func_start StrAlloc_Dwc +StrAlloc_Dwc: ; 0x022EFC3C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + bl Dwci_Ndi_Strlen + ldr r1, _022EFC84 ; =ov00_02327724 + mov r4, r0 + ldr r2, [r1, #0xc] + add r0, r4, #1 + mov r1, #4 + blx r2 + movs r5, r0 + beq _022EFC7C + mov r1, r6 + mov r2, r4 + bl Dwci_Ndi_Memcpy + mov r0, #0 + strb r0, [r5, r4] +_022EFC7C: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EFC84: .word ov00_02327724 + arm_func_end StrAlloc_Dwc + + arm_func_start Dwci_NdStartup +Dwci_NdStartup: ; 0x022EFC88 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr ip, _022EFE18 ; =ov00_02327724 + mov r5, r0 + mov r4, r1 + str r5, [ip, #0xc] + mov r1, #0 + ldr r0, [sp, #0x20] + str r4, [ip, #0x20] + str r0, [ip, #0x18] + str r1, [ip, #0x1c] + str r1, [ip, #0x28] + str r1, [ip, #0x2c] + str r1, [ip, #0x30] + str r1, [ip, #4] + sub r0, r1, #1 + str r0, [ip, #0x24] + str r1, [ip, #8] + ldr r0, _022EFE1C ; =ov00_02327764 + mov r7, r2 + mov r6, r3 + str r1, [ip, #0x10] + bl Dwci_Ndi_GetMacAddress + ldr r0, _022EFE20 ; =ov00_023277AC + bl Dwci_Ndi_GetUserAgent + mov r0, r7 + bl StrAlloc_Dwc + ldr r1, _022EFE18 ; =ov00_02327724 + cmp r0, #0 + str r0, [r1, #0x10] + beq _022EFDD4 + mov r0, r6 + bl StrAlloc_Dwc + ldr r1, _022EFE18 ; =ov00_02327724 + cmp r0, #0 + str r0, [r1, #8] + beq _022EFDD4 + ldr r1, [sp, #0x18] + ldr r0, _022EFE24 ; =ov00_02327758 + mov r2, #4 + bl Dwci_Ndi_EncodeBase64 + ldr r1, _022EFE24 ; =ov00_02327758 + mov r2, #0 + strb r2, [r1, r0] + ldr r1, [sp, #0x1c] + ldr r0, _022EFE28 ; =ov00_02327790 + mov r2, #0x10 + bl Dwci_Ndi_EncodeBase64 + ldr r1, _022EFE28 ; =ov00_02327790 + mov r2, #0 + strb r2, [r1, r0] + bl Dwci_Ndi_InitHttpCallback + cmp r0, #0 + beq _022EFDA0 + bl Dwci_Ndi_InitLockGlobal + cmp r0, #0 + beq _022EFDA0 + mov r0, r5 + mov r1, r4 + mov r2, #0xa + bl Nhttp_Startup + cmp r0, #0 + beq _022EFD9C + ldr r0, _022EFE2C ; =ov00_02327778 + bl Dwci_Ndi_GetApInfo + ldr r1, _022EFE18 ; =ov00_02327724 + str r0, [r1, #4] + mov r0, #1 + str r0, [r1, #0x14] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EFD9C: + bl Dwci_Ndi_ExitLockGlobal +_022EFDA0: + ldr r1, _022EFE18 ; =ov00_02327724 + ldr r0, [r1, #8] + ldr r1, [r1, #0x20] + blx r1 + ldr r1, _022EFE18 ; =ov00_02327724 + ldr r0, [r1, #0x10] + ldr r1, [r1, #0x20] + blx r1 + ldr r0, _022EFE18 ; =ov00_02327724 + mov r1, #8 + str r1, [r0, #0x1c] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022EFDD4: + ldr r1, _022EFE18 ; =ov00_02327724 + ldr r0, [r1, #8] + cmp r0, #0 + beq _022EFDEC + ldr r1, [r1, #0x20] + blx r1 +_022EFDEC: + ldr r1, _022EFE18 ; =ov00_02327724 + ldr r0, [r1, #0x10] + cmp r0, #0 + beq _022EFE04 + ldr r1, [r1, #0x20] + blx r1 +_022EFE04: + ldr r0, _022EFE18 ; =ov00_02327724 + mov r1, #1 + str r1, [r0, #0x1c] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EFE18: .word ov00_02327724 +_022EFE1C: .word ov00_02327764 +_022EFE20: .word ov00_023277AC +_022EFE24: .word ov00_02327758 +_022EFE28: .word ov00_02327790 +_022EFE2C: .word ov00_02327778 + arm_func_end Dwci_NdStartup + + arm_func_start NhttpCleanupCallback +NhttpCleanupCallback: ; 0x022EFE30 + stmdb sp!, {r3, lr} + bl Dwci_Ndi_FreeAttr + bl Dwci_Ndi_ExitLockGlobal + bl Dwci_Ndi_ExitHttpCallback + ldr r1, _022EFE70 ; =ov00_02327724 + ldr r0, [r1, #8] + ldr r1, [r1, #0x20] + blx r1 + ldr r1, _022EFE70 ; =ov00_02327724 + ldr r0, [r1, #0x10] + ldr r1, [r1, #0x20] + blx r1 + ldr r0, _022EFE70 ; =ov00_02327724 + ldr r0, [r0] + blx r0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EFE70: .word ov00_02327724 + arm_func_end NhttpCleanupCallback + + arm_func_start Dwci_NdCleanupAsync +Dwci_NdCleanupAsync: ; 0x022EFE74 + ldr r1, _022EFE90 ; =ov00_02327724 + mov r2, #0 + str r2, [r1, #0x14] + str r0, [r1] + ldr ip, _022EFE94 ; =Nhttp_CleanupAsync + ldr r0, _022EFE98 ; =NhttpCleanupCallback + bx ip + .align 2, 0 +_022EFE90: .word ov00_02327724 +_022EFE94: .word Nhttp_CleanupAsync +_022EFE98: .word NhttpCleanupCallback + arm_func_end Dwci_NdCleanupAsync + + arm_func_start Dwci_NdCancelAsync +Dwci_NdCancelAsync: ; 0x022EFE9C + stmdb sp!, {r4, lr} + bl Dwci_Ndi_PrepareHttpCallback + cmp r0, #0 + bne _022EFEC8 + bl Dwci_Ndi_LockGlobal + ldr r0, _022EFED4 ; =ov00_02327748 + ldr r4, [r0] + bl Dwci_Ndi_UnlockGlobal + mov r0, r4 + bl Nhttp_CancelRequestAsync + ldmia sp!, {r4, pc} +_022EFEC8: + bl Dwci_Ndi_UnprepareHttpCallback + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EFED4: .word ov00_02327748 + arm_func_end Dwci_NdCancelAsync + + arm_func_start Dwci_Ndi_GetApInfo +Dwci_Ndi_GetApInfo: ; 0x022EFED8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr ip, _022EFFC8 ; =ov00_023182EC + add r3, sp, #0 + mov r4, r0 + mov r2, #6 +_022EFEF0: + ldrb r1, [ip] + ldrb r0, [ip, #1] + add ip, ip, #2 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + bne _022EFEF0 + ldrb r1, [ip] + ldr r0, _022EFFCC ; =ov00_023277D0 + strb r1, [r3] + bl Dwc_GetApInfo + cmp r0, #0 + beq _022EFFBC + ldr r0, _022EFFD0 ; =ov00_023277D0 + ldr r1, [r0] + cmp r1, #0 + blt _022EFF48 + cmp r1, #0xa + addlt r0, r1, #0x30 + strltb r0, [sp, #1] + blt _022EFF60 +_022EFF48: + cmp r1, #0xa + blt _022EFF60 + cmp r1, #0x64 + bge _022EFF60 + add r0, sp, #0 + bl Dwci_Ndi_IntToStr +_022EFF60: + ldr r0, _022EFFD0 ; =ov00_023277D0 + ldr r0, [r0] + cmp r0, #4 + cmpne r0, #8 + bne _022EFFA0 + ldr r0, _022EFFD0 ; =ov00_023277D0 + ldr r0, [r0, #4] + cmp r0, #0 + blt _022EFF90 + cmp r0, #0xa + addlt r0, r0, #0x30 + strltb r0, [sp, #3] +_022EFF90: + ldr r1, _022EFFD4 ; =ov00_023277D8 + add r0, sp, #4 + mov r2, #9 + bl Dwci_Ndi_Memcpy +_022EFFA0: + add r1, sp, #0 + mov r0, r4 + mov r2, #0xd + bl Dwci_Ndi_EncodeBase64 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, pc} +_022EFFBC: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EFFC8: .word ov00_023182EC +_022EFFCC: .word ov00_023277D0 +_022EFFD0: .word ov00_023277D0 +_022EFFD4: .word ov00_023277D8 + arm_func_end Dwci_Ndi_GetApInfo + + arm_func_start Dwci_Ndi_GetDSdesc +Dwci_Ndi_GetDSdesc: ; 0x022EFFD8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x24 + mov r5, r0 + mov r4, r1 + add r0, sp, #0x10 + mov r1, #0x14 + bl Dwci_Ndi_Memclr + add r0, sp, #0x10 + bl Dwci_BM_GetWiFiInfo + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r0, #0 + cmp r2, r0 + cmpeq r1, r0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4, r5, pc} + add r0, sp, #0 + mov r3, #0xd + bl Dwci_Ndi_IntToStrFigure + cmp r0, #0 + addlt sp, sp, #0x24 + movlt r0, #0 + ldmltia sp!, {r4, r5, pc} + add r1, sp, #0 + mov r0, r4 + mov r2, #0xd + bl Dwci_Ndi_EncodeBase64 + ldr r1, _022F0060 ; =0x027FFE0C + mov r0, r5 + mov r2, #4 + bl Dwci_Ndi_EncodeBase64 + mov r0, #1 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022F0060: .word 0x027FFE0C + arm_func_end Dwci_Ndi_GetDSdesc + + arm_func_start Dwci_Ndi_GetUserAgent +Dwci_Ndi_GetUserAgent: ; 0x022F0064 + stmdb sp!, {r3, lr} + ldr r2, _022F0084 ; =ov00_0231A534 + mov ip, #1 + mov r1, #0x21 + mov r3, #3 + str ip, [sp] + bl OS_SnPrintf + ldmia sp!, {r3, pc} + .align 2, 0 +_022F0084: .word ov00_0231A534 + arm_func_end Dwci_Ndi_GetUserAgent + + arm_func_start Req_Callback_Dwc +Req_Callback_Dwc: ; 0x022F0088 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sb, r2 + mov sl, r1 + ldr r1, [sb, #8] + cmp r0, #0 + str r1, [sp, #8] + ldr r1, [sb, #0xc] + ldr r5, [sb, #4] + str r1, [sp, #4] + mvn r1, #0 + str r1, [sp] + beq _022F00D0 + cmp r0, #6 + beq _022F02AC + cmp r0, #8 + beq _022F02A4 + b _022F02B4 +_022F00D0: + ldr r1, _022F03A0 ; =ov00_0231A550 + add r2, sp, #0x14 + mov r0, sl + bl Nhttp_GetHeaderField + cmp r0, #3 + movne r4, #3 + bne _022F02B8 + ldr r0, [sp, #0x14] + mov r1, #3 + bl Dwci_Ndi_StrToInt + ldr r1, _022F03A4 ; =0x0000012E + cmp r0, r1 + bne _022F021C + add r1, sp, #0x10 + mov r0, sl + mov r8, #0 + bl Nhttp_GetBodyAll + movs r6, r0 + movmi r4, #3 + bmi _022F02B8 + cmp r6, #0 + mov r7, r8 + ble _022F0208 + ldr r4, _022F03A8 ; =ov00_0231A560 + mov fp, #8 +_022F0134: + ldr r3, [sp, #0x10] + mov r1, r7 + add r2, r3, r7 + b _022F014C +_022F0144: + add r2, r2, #1 + add r7, r7, #1 +_022F014C: + ldrsb r0, [r2] + cmp r0, #0x3d + beq _022F0160 + cmp r7, r6 + blt _022F0144 +_022F0160: + sub r0, r7, r1 + cmp r0, #8 + add r7, r7, #1 + bne _022F018C + add r0, r3, r1 + mov r1, r4 + mov r2, fp + bl Dwci_Ndi_Strncmp + cmp r0, #0 + moveq r8, #1 + movne r8, #0 +_022F018C: + ldr r1, [sp, #0x10] + mov r3, r7 + add r2, r1, r7 + b _022F01A4 +_022F019C: + add r2, r2, #1 + add r7, r7, #1 +_022F01A4: + ldrsb r0, [r2] + cmp r0, #0x26 + cmpne r0, #0xd + cmpne r0, #0 + beq _022F01C0 + cmp r7, r6 + blt _022F019C +_022F01C0: + cmp r8, #0 + sub r2, r7, r3 + add r7, r7, #1 + beq _022F0200 + cmp r2, #4 + bne _022F0208 + add r0, sp, #0xc + add r1, r1, r3 + bl Dwci_Ndi_EecodeBase64 + mov r1, r0 + add r0, sp, #0xc + mov r2, #0 + strb r2, [r0, r1] + bl Dwci_Ndi_StrToInt + str r0, [sp] + b _022F0208 +_022F0200: + cmp r7, r6 + blt _022F0134 +_022F0208: + ldr r0, [sp] + cmp r0, #0 + movlt r4, #3 + movge r4, #5 + b _022F02B8 +_022F021C: + cmp r0, #0 + ble _022F022C + cmp r0, #0xc8 + beq _022F0234 +_022F022C: + mov r4, #3 + b _022F02B8 +_022F0234: + cmp r5, #1 + beq _022F0250 + cmp r5, #2 + beq _022F026C + cmp r5, #3 + beq _022F0288 + b _022F02B8 +_022F0250: + mov r0, sl + mov r1, sb + bl Dwci_Ndi_Response_Count + cmp r0, #0 + movne r4, #0 + moveq r4, #3 + b _022F02B8 +_022F026C: + mov r0, sl + mov r1, sb + bl Dwci_Ndi_Response_List + cmp r0, #0 + movne r4, #0 + moveq r4, #3 + b _022F02B8 +_022F0288: + mov r0, sl + mov r1, sb + bl Dwci_Ndi_Response_Contents + cmp r0, #0 + movne r4, #0 + moveq r4, #3 + b _022F02B8 +_022F02A4: + mov r4, #6 + b _022F02B8 +_022F02AC: + mov r4, #4 + b _022F02B8 +_022F02B4: + mov r4, #3 +_022F02B8: + cmp r5, #1 + beq _022F0328 + cmp r5, #2 + beq _022F02D4 + cmp r5, #3 + beq _022F0318 + b _022F0328 +_022F02D4: + ldr r0, [sb, #0x20] + cmp r0, #0 + beq _022F02EC + ldr r1, _022F03AC ; =ov00_02327744 + ldr r1, [r1] + blx r1 +_022F02EC: + ldr r0, [sb, #0x1c] + cmp r0, #0 + beq _022F0304 + ldr r1, _022F03AC ; =ov00_02327744 + ldr r1, [r1] + blx r1 +_022F0304: + ldr r1, _022F03AC ; =ov00_02327744 + ldr r0, [sb, #0x18] + ldr r1, [r1] + blx r1 + b _022F0328 +_022F0318: + ldr r1, _022F03AC ; =ov00_02327744 + ldr r0, [sb, #0x10] + ldr r1, [r1] + blx r1 +_022F0328: + bl Dwci_Ndi_LockGlobal + ldr r0, _022F03B0 ; =ov00_02327748 + mvn r1, #0 + str r1, [r0] + bl Dwci_Ndi_UnlockGlobal + mov r0, sl + bl Nhttp_DestroyResponse + ldr r1, _022F03AC ; =ov00_02327744 + mov r0, sb + ldr r1, [r1] + blx r1 + bl Dwci_Ndi_UnprepareHttpCallback + cmp r4, #0 + ldrne r0, _022F03B4 ; =ov00_02327740 + strne r4, [r0] + ldr r0, [sp, #8] + cmp r0, #0 + beq _022F0384 + ldr r2, [sp] + ldr r3, [sp, #8] + mov r0, r5 + mov r1, r4 + blx r3 +_022F0384: + ldr r0, [sp, #4] + cmp r0, #0 + addeq sp, sp, #0x18 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl Dwci_Ndi_KickThread + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F03A0: .word ov00_0231A550 +_022F03A4: .word 0x0000012E +_022F03A8: .word ov00_0231A560 +_022F03AC: .word ov00_02327744 +_022F03B0: .word ov00_02327748 +_022F03B4: .word ov00_02327740 + arm_func_end Req_Callback_Dwc + + arm_func_start FreeHttp +FreeHttp: ; 0x022F03B8 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl Nhttp_DestroyRequest + bl Dwci_Ndi_UnprepareHttpCallback + ldr r1, _022F03E0 ; =ov00_02327744 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F03E0: .word ov00_02327744 + arm_func_end FreeHttp + + arm_func_start SetupHttp +SetupHttp: ; 0x022F03E4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r0 + mov r7, r1 + ldr r0, _022F0710 ; =ov00_0232780C + ldr r1, _022F0714 ; =ov00_02327818 + mov r6, r2 + mov r5, r3 + bl Dwci_Ndi_GetDSdesc + cmp r0, #0 + bne _022F0428 + ldr r0, _022F0718 ; =ov00_02327740 + mov r1, #8 + str r1, [r0] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F0428: + ldr r1, _022F071C ; =ov00_02327730 + mov r0, #0x24 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r4, r0 + bne _022F045C + ldr r0, _022F0718 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F045C: + ldr r0, _022F0720 ; =ov00_0232773C + mov r1, #0 + ldr r0, [r0] + str r0, [r4, #8] + str r1, [r4, #0xc] + bl Dwci_Ndi_PrepareHttpCallback + cmp r0, #0 + bne _022F04A4 + ldr r1, _022F0724 ; =ov00_02327744 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r0, _022F0718 ; =ov00_02327740 + mov r1, #2 + str r1, [r0] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F04A4: + ldr r1, _022F0728 ; =Req_Callback_Dwc + ldr r0, _022F072C ; =ov00_02327734 + stmia sp, {r1, r4} + ldr r0, [r0] + ldr r3, [sp, #0x20] + mov r2, r5 + mov r1, #1 + bl Nhttp_CreateRequest + movs r5, r0 + bne _022F04F8 + bl Dwci_Ndi_UnprepareHttpCallback + ldr r1, _022F0724 ; =ov00_02327744 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r0, _022F0718 ; =ov00_02327740 + mov r1, #3 + str r1, [r0] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F04F8: + ldr r1, _022F0730 ; =ov00_0231A54C + str r4, [r8] + mov r2, #1 + str r5, [r7] + bl Nhttp_SetCaChain + cmp r0, #0 + beq _022F06EC + ldr r1, _022F0734 ; =ov00_0231A56C + ldr r2, _022F0738 ; =ov00_023277AC + mov r0, r5 + bl Nhttp_AddHeaderField + cmp r0, #0 + beq _022F06EC + ldr r1, _022F073C ; =ov00_0231A578 + ldr r2, _022F0740 ; =ov00_02327758 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r1, _022F0744 ; =ov00_0231A580 + ldr r2, _022F0710 ; =ov00_0232780C + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r1, _022F0748 ; =ov00_0231A58C + ldr r2, _022F074C ; =ov00_02327790 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r0, _022F0750 ; =ov00_0232772C + ldr r1, _022F0754 ; =ov00_0231A594 + ldr r2, [r0] + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r1, _022F0758 ; =ov00_0231A59C + ldr r2, _022F0714 ; =ov00_02327818 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r1, _022F075C ; =ov00_0231A5A4 + ldr r2, _022F0760 ; =ov00_02327764 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r1, _022F0764 ; =ov00_0231A5AC + mov r0, r5 + mov r2, r6 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC + ldr r0, _022F0768 ; =ov00_0232774C + ldr r2, [r0] + cmp r2, #0 + beq _022F05FC + ldr r1, _022F076C ; =ov00_0231A5B4 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC +_022F05FC: + ldr r0, _022F0768 ; =ov00_0232774C + ldr r2, [r0, #4] + cmp r2, #0 + beq _022F0620 + ldr r1, _022F0770 ; =ov00_0231A5BC + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC +_022F0620: + ldr r0, _022F0768 ; =ov00_0232774C + ldr r2, [r0, #8] + cmp r2, #0 + beq _022F0644 + ldr r1, _022F0774 ; =ov00_0231A5C4 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC +_022F0644: + ldr r0, _022F0778 ; =ov00_02327728 + ldr r0, [r0] + cmp r0, #0 + beq _022F066C + ldr r1, _022F077C ; =ov00_0231A5CC + ldr r2, _022F0780 ; =ov00_02327778 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC +_022F066C: + ldr r0, [sp, #0x24] + cmp r0, #0 + beq _022F06E0 + bl Dwci_Ndi_Strlen + mov r6, r0 + cmp r6, #0x40 + ble _022F06AC + ldr r2, _022F0718 ; =ov00_02327740 + mov r3, #7 + mov r0, r4 + mov r1, r5 + str r3, [r2] + bl FreeHttp + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F06AC: + ldr r0, _022F0784 ; =ov00_02327830 + mov r1, #0x59 + bl Dwci_Ndi_Memclr + ldr r1, [sp, #0x24] + ldr r0, _022F0784 ; =ov00_02327830 + mov r2, r6 + bl Dwci_Ndi_EncodeBase64 + ldr r1, _022F0788 ; =ov00_0231A5D4 + ldr r2, _022F0784 ; =ov00_02327830 + mov r0, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F06EC +_022F06E0: + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F06EC: + mov r0, r4 + mov r1, r5 + bl FreeHttp + ldr r0, _022F0718 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F0710: .word ov00_0232780C +_022F0714: .word ov00_02327818 +_022F0718: .word ov00_02327740 +_022F071C: .word ov00_02327730 +_022F0720: .word ov00_0232773C +_022F0724: .word ov00_02327744 +_022F0728: .word Req_Callback_Dwc +_022F072C: .word ov00_02327734 +_022F0730: .word ov00_0231A54C +_022F0734: .word ov00_0231A56C +_022F0738: .word ov00_023277AC +_022F073C: .word ov00_0231A578 +_022F0740: .word ov00_02327758 +_022F0744: .word ov00_0231A580 +_022F0748: .word ov00_0231A58C +_022F074C: .word ov00_02327790 +_022F0750: .word ov00_0232772C +_022F0754: .word ov00_0231A594 +_022F0758: .word ov00_0231A59C +_022F075C: .word ov00_0231A5A4 +_022F0760: .word ov00_02327764 +_022F0764: .word ov00_0231A5AC +_022F0768: .word ov00_0232774C +_022F076C: .word ov00_0231A5B4 +_022F0770: .word ov00_0231A5BC +_022F0774: .word ov00_0231A5C4 +_022F0778: .word ov00_02327728 +_022F077C: .word ov00_0231A5CC +_022F0780: .word ov00_02327778 +_022F0784: .word ov00_02327830 +_022F0788: .word ov00_0231A5D4 + arm_func_end SetupHttp + + arm_func_start RunHttp +RunHttp: ; 0x022F078C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + bl Dwci_Ndi_LockGlobal + mov r0, r4 + bl Nhttp_SendRequestAsync + ldr r1, _022F07E4 ; =ov00_02327748 + str r0, [r5] + str r0, [r1] + bl Dwci_Ndi_UnlockGlobal + ldr r0, [r5] + cmp r0, #0 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FreeHttp + ldr r0, _022F07E8 ; =ov00_02327740 + mov r1, #3 + str r1, [r0] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F07E4: .word ov00_02327748 +_022F07E8: .word ov00_02327740 + arm_func_end RunHttp + + arm_func_start Dwci_NdGetFileListNumAsync +Dwci_NdGetFileListNumAsync: ; 0x022F07EC + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov ip, #0x80 + mov r4, r0 + str ip, [sp] + mov ip, #0 + ldr r2, _022F0860 ; =ov00_023182FC + ldr r3, _022F0864 ; =ov00_0232788C + add r0, sp, #0xc + add r1, sp, #8 + str ip, [sp, #4] + bl SetupHttp + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [sp, #0xc] + mov r1, #1 + str r1, [r0, #4] + ldr r0, [sp, #0xc] + str r4, [r0, #0x10] + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl RunHttp + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F0860: .word ov00_023182FC +_022F0864: .word ov00_0232788C + arm_func_end Dwci_NdGetFileListNumAsync + + arm_func_start Dwci_NdGetFileListAsync +Dwci_NdGetFileListAsync: ; 0x022F0868 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x1c + mov r4, r2 + mov r6, r1 + ldr r1, _022F0B14 ; =ov00_02327730 + mov r7, r4, lsl #8 + cmp r7, #0x80 + ldr r2, [r1] + movlt r7, #0x80 + mov r5, r0 + mov r0, r7 + mov r1, #4 + blx r2 + movs r8, r0 + bne _022F08BC + ldr r0, _022F0B18 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + add sp, sp, #0x1c + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F08BC: + add r0, sp, #0x10 + mov r1, r6 + bl Dwci_Ndi_IntToStr + mov r6, r0 + bl Dwci_Ndi_GetEncodeLenBase64 + ldr r1, _022F0B14 ; =ov00_02327730 + add r0, r0, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs sb, r0 + bne _022F0914 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, r8 + ldr r1, [r1] + blx r1 + ldr r0, _022F0B18 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + add sp, sp, #0x1c + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F0914: + add r1, sp, #0x10 + mov r2, r6 + bl Dwci_Ndi_EncodeBase64 + mov r1, #0 + strb r1, [sb, r0] + add r0, sp, #0x10 + mov r1, r4 + bl Dwci_Ndi_IntToStr + mov r6, r0 + bl Dwci_Ndi_GetEncodeLenBase64 + ldr r1, _022F0B14 ; =ov00_02327730 + add r0, r0, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs sl, r0 + bne _022F0990 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sb + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, r8 + ldr r1, [r1] + blx r1 + ldr r0, _022F0B18 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + add sp, sp, #0x1c + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F0990: + add r1, sp, #0x10 + mov r2, r6 + bl Dwci_Ndi_EncodeBase64 + mov r6, #0 + strb r6, [sl, r0] + str r7, [sp] + ldr r2, _022F0B20 ; =ov00_02318308 + add r0, sp, #0xc + add r1, sp, #8 + mov r3, r8 + str r6, [sp, #4] + bl SetupHttp + cmp r0, #0 + bne _022F0A04 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sl + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sb + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, r8 + ldr r1, [r1] + blx r1 + add sp, sp, #0x1c + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F0A04: + ldr r0, [sp, #8] + ldr r1, _022F0B24 ; =ov00_0231A5E4 + mov r2, sb + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F0AC0 + ldr r0, [sp, #8] + ldr r1, _022F0B28 ; =ov00_0231A5EC + mov r2, sl + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F0AC0 + ldr r0, [sp, #0xc] + mov r1, #2 + str r1, [r0, #4] + ldr r0, [sp, #0xc] + str r5, [r0, #0x10] + ldr r0, [sp, #0xc] + str sb, [r0, #0x1c] + ldr r0, [sp, #0xc] + str sl, [r0, #0x20] + ldr r0, [sp, #0xc] + str r4, [r0, #0x14] + ldr r0, [sp, #0xc] + str r8, [r0, #0x18] + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl RunHttp + cmp r0, #0 + addne sp, sp, #0x1c + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sl + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sb + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, r8 + ldr r1, [r1] + blx r1 + add sp, sp, #0x1c + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F0AC0: + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sl + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, sb + ldr r1, [r1] + blx r1 + ldr r1, _022F0B1C ; =ov00_02327744 + mov r0, r8 + ldr r1, [r1] + blx r1 + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl FreeHttp + ldr r0, _022F0B18 ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F0B14: .word ov00_02327730 +_022F0B18: .word ov00_02327740 +_022F0B1C: .word ov00_02327744 +_022F0B20: .word ov00_02318308 +_022F0B24: .word ov00_0231A5E4 +_022F0B28: .word ov00_0231A5EC + arm_func_end Dwci_NdGetFileListAsync + + arm_func_start Dwci_NdGetFileAsync +Dwci_NdGetFileAsync: ; 0x022F0B2C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov sb, r0 + ldr r4, [sb, #0xac] + mov r8, r1 + mov r7, r3 + cmp r2, r4 + bhs _022F0B64 + ldr r0, _022F0CDC ; =ov00_02327740 + mov r1, #7 + str r1, [r0] + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F0B64: + bl Dwci_Ndi_Strlen + mov r4, r0 + cmp r4, #0x20 + ble _022F0B8C + ldr r0, _022F0CDC ; =ov00_02327740 + mov r1, #7 + str r1, [r0] + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F0B8C: + cmp r4, #0 + movle r6, #0 + ble _022F0BA0 + bl Dwci_Ndi_GetEncodeLenBase64 + mov r6, r0 +_022F0BA0: + ldr r1, _022F0CE0 ; =ov00_02327730 + add r0, r6, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r5, r0 + bne _022F0BD4 + ldr r0, _022F0CDC ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F0BD4: + ldr r1, [sb, #0xac] + ldr r2, _022F0CE4 ; =ov00_02318314 + str r1, [sp] + add r0, sp, #0xc + add r1, sp, #8 + mov r3, r8 + str r7, [sp, #4] + bl SetupHttp + cmp r0, #0 + bne _022F0C18 + ldr r1, _022F0CE8 ; =ov00_02327744 + mov r0, r5 + ldr r1, [r1] + blx r1 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F0C18: + cmp r6, #0 + ble _022F0C50 + mov r0, r5 + mov r1, sb + mov r2, r4 + bl Dwci_Ndi_EncodeBase64 + mov r1, #0 + strb r1, [r5, r0] + ldr r0, [sp, #8] + ldr r1, _022F0CEC ; =ov00_0231A5F0 + mov r2, r5 + bl Nhttp_AddPostDataAscii + cmp r0, #0 + beq _022F0CA8 +_022F0C50: + ldr r0, [sp, #0xc] + mov r1, #3 + str r1, [r0, #4] + ldr r0, [sp, #0xc] + str r5, [r0, #0x10] + ldr r1, [sb, #0xac] + ldr r0, [sp, #0xc] + str r1, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl RunHttp + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r1, _022F0CE8 ; =ov00_02327744 + mov r0, r5 + ldr r1, [r1] + blx r1 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F0CA8: + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + bl FreeHttp + ldr r1, _022F0CE8 ; =ov00_02327744 + mov r0, r5 + ldr r1, [r1] + blx r1 + ldr r0, _022F0CDC ; =ov00_02327740 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F0CDC: .word ov00_02327740 +_022F0CE0: .word ov00_02327730 +_022F0CE4: .word ov00_02318314 +_022F0CE8: .word ov00_02327744 +_022F0CEC: .word ov00_0231A5F0 + arm_func_end Dwci_NdGetFileAsync + + arm_func_start Dwci_Ndi_Response_Count +Dwci_Ndi_Response_Count: ; 0x022F0CF0 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r1 + add r1, sp, #0 + bl Nhttp_GetBodyAll + movs r1, r0 + bmi _022F0D38 + ldr r0, [sp] + bl Dwci_Ndi_StrToInt + ldr r1, [r4, #0x10] + add sp, sp, #4 + str r0, [r1] + ldr r0, [r4, #0x10] + ldr r0, [r0] + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + ldmia sp!, {r3, r4, pc} +_022F0D38: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwci_Ndi_Response_Count + + arm_func_start Dwci_Ndi_Response_Contents +Dwci_Ndi_Response_Contents: ; 0x022F0D44 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r1 + add r1, sp, #0 + bl Nhttp_GetBodyAll + ldr r1, [r4, #0x14] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end Dwci_Ndi_Response_Contents + + arm_func_start Dwci_Ndi_Response_List +Dwci_Ndi_Response_List: ; 0x022F0D70 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + ldr r2, [r1, #0x14] + str r1, [sp] + mov r1, #0xb0 + mul r1, r2, r1 + mov r4, r0 + ldr r0, [sp] + mov r2, #0 + ldr r0, [r0, #0x10] + str r2, [sp, #4] + bl Dwci_Ndi_Memclr + ldr r1, _022F0FF0 ; =ov00_0231A5FC + add r2, sp, #0x10 + mov r0, r4 + bl Nhttp_GetHeaderField + cmp r0, #0 + ble _022F0DD8 + ldr r1, [sp, #0x10] + ldrsb r0, [r1] + cmp r0, #0x30 + ldreqsb r0, [r1, #1] + cmpeq r0, #0 + addeq sp, sp, #0x18 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F0DD8: + add r1, sp, #0x14 + mov r0, r4 + bl Nhttp_GetBodyAll + mov r4, r0 + cmp r4, #0 + ble _022F0FE4 + ldr r0, [sp] + mov r5, #0 + ldr r0, [r0, #0x14] + str r5, [sp, #0xc] + cmp r0, #0 + ble _022F0FE4 + str r5, [sp, #8] +_022F0E0C: + cmp r5, r4 + movge r0, #1 + strge r0, [sp, #4] + bge _022F0FE4 + ldr r0, [sp] + mov r6, #0 + ldr r1, [r0, #0x10] + ldr r0, [sp, #8] + mov r7, r5 + mov r2, r6 + str r6, [sp, #4] + cmp r5, r4 + add r8, r1, r0 + bge _022F0FBC + mov sl, r6 + mov fp, #1 +_022F0E4C: + ldr r3, [sp, #0x14] + ldrsb r0, [r3, r5] + cmp r0, #0xd + moveq r2, fp + beq _022F0FB0 + cmp r2, #0 + beq _022F0EB8 + cmp r0, #0xa + bne _022F0FAC + cmp r6, #5 + bne _022F0E9C + sub r0, r5, #1 + sub r1, r0, r7 + cmp r1, #8 + bgt _022F0FE4 + add r0, r3, r7 + bl Dwci_Ndi_StrToInt + cmp r0, #0 + blt _022F0FE4 + str r0, [r8, #0xac] +_022F0E9C: + cmp r6, #5 + movge r0, #1 + strge r0, [sp, #4] + movlt r0, #0 + add r5, r5, #1 + strlt r0, [sp, #4] + b _022F0FBC +_022F0EB8: + cmp r0, #9 + bne _022F0FAC + cmp r6, #5 + addls pc, pc, r6, lsl #2 + b _022F0FA4 +_022F0ECC: ; jump table + b _022F0EE4 ; case 0 + b _022F0F00 ; case 1 + b _022F0F30 ; case 2 + b _022F0F4C ; case 3 + b _022F0F68 ; case 4 + b _022F0F84 ; case 5 +_022F0EE4: + sub r2, r5, r7 + cmp r2, #0x20 + bhi _022F0FE4 + add r1, r3, r7 + mov r0, r8 + bl Dwci_Ndi_Memcpy + b _022F0FA4 +_022F0F00: + sub sb, r5, r7 + mov r0, sb + bl Dwci_Ndi_GetDecodeLenBase64 + cmp r0, #0x66 + bhi _022F0FE4 + ldr r0, [sp, #0x14] + mov r2, sb + add r1, r0, r7 + add r0, r8, #0x22 + bl Dwci_Ndi_EecodeBase64 + strh sl, [r8, #0x86] + b _022F0FA4 +_022F0F30: + sub r2, r5, r7 + cmp r2, #0xa + bhi _022F0FE4 + add r1, r3, r7 + add r0, r8, #0x88 + bl Dwci_Ndi_Memcpy + b _022F0FA4 +_022F0F4C: + sub r2, r5, r7 + cmp r2, #0xa + bhi _022F0FE4 + add r1, r3, r7 + add r0, r8, #0x93 + bl Dwci_Ndi_Memcpy + b _022F0FA4 +_022F0F68: + sub r2, r5, r7 + cmp r2, #0xa + bhi _022F0FE4 + add r1, r3, r7 + add r0, r8, #0x9e + bl Dwci_Ndi_Memcpy + b _022F0FA4 +_022F0F84: + sub r1, r5, r7 + cmp r1, #8 + bgt _022F0FE4 + add r0, r3, r7 + bl Dwci_Ndi_StrToInt + cmp r0, #0 + blt _022F0FE4 + str r0, [r8, #0xac] +_022F0FA4: + add r6, r6, #1 + add r7, r5, #1 +_022F0FAC: + mov r2, #0 +_022F0FB0: + add r5, r5, #1 + cmp r5, r4 + blt _022F0E4C +_022F0FBC: + ldr r0, [sp] + ldr r1, [r0, #0x14] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, r1 + ldr r0, [sp, #8] + add r0, r0, #0xb0 + str r0, [sp, #8] + blt _022F0E0C +_022F0FE4: + ldr r0, [sp, #4] + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F0FF0: .word ov00_0231A5FC + arm_func_end Dwci_Ndi_Response_List + + arm_func_start Dwci_Ndi_InitLockGlobal +Dwci_Ndi_InitLockGlobal: ; 0x022F0FF4 + stmdb sp!, {r3, lr} + ldr r0, _022F1008 ; =ov00_02327928 + bl OS_InitMutex + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F1008: .word ov00_02327928 + arm_func_end Dwci_Ndi_InitLockGlobal + + arm_func_start Dwci_Ndi_ExitLockGlobal +Dwci_Ndi_ExitLockGlobal: ; 0x022F100C + bx lr + arm_func_end Dwci_Ndi_ExitLockGlobal + + arm_func_start Dwci_Ndi_LockGlobal +Dwci_Ndi_LockGlobal: ; 0x022F1010 + ldr ip, _022F101C ; =OS_LockMutex + ldr r0, _022F1020 ; =ov00_02327928 + bx ip + .align 2, 0 +_022F101C: .word OS_LockMutex +_022F1020: .word ov00_02327928 + arm_func_end Dwci_Ndi_LockGlobal + + arm_func_start Dwci_Ndi_UnlockGlobal +Dwci_Ndi_UnlockGlobal: ; 0x022F1024 + ldr ip, _022F1030 ; =OS_UnlockMutex + ldr r0, _022F1034 ; =ov00_02327928 + bx ip + .align 2, 0 +_022F1030: .word OS_UnlockMutex +_022F1034: .word ov00_02327928 + arm_func_end Dwci_Ndi_UnlockGlobal + + arm_func_start Dwci_Ndi_InitHttpCallback +Dwci_Ndi_InitHttpCallback: ; 0x022F1038 + stmdb sp!, {r3, lr} + ldr r0, _022F1058 ; =ov00_02327910 + bl OS_InitMutex + ldr r0, _022F105C ; =ov00_0232790C + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F1058: .word ov00_02327910 +_022F105C: .word ov00_0232790C + arm_func_end Dwci_Ndi_InitHttpCallback + + arm_func_start Dwci_Ndi_ExitHttpCallback +Dwci_Ndi_ExitHttpCallback: ; 0x022F1060 + bx lr + arm_func_end Dwci_Ndi_ExitHttpCallback + + arm_func_start Dwci_Ndi_PrepareHttpCallback +Dwci_Ndi_PrepareHttpCallback: ; 0x022F1064 + stmdb sp!, {r4, lr} + ldr r0, _022F10A4 ; =ov00_02327910 + bl OS_LockMutex + ldr r0, _022F10A8 ; =ov00_0232790C + ldr r0, [r0] + cmp r0, #0 + moveq r4, #1 + movne r4, #0 + cmp r4, #0 + ldrne r0, _022F10A8 ; =ov00_0232790C + movne r1, #1 + strne r1, [r0] + ldr r0, _022F10A4 ; =ov00_02327910 + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F10A4: .word ov00_02327910 +_022F10A8: .word ov00_0232790C + arm_func_end Dwci_Ndi_PrepareHttpCallback + + arm_func_start Dwci_Ndi_UnprepareHttpCallback +Dwci_Ndi_UnprepareHttpCallback: ; 0x022F10AC + stmdb sp!, {r3, lr} + ldr r0, _022F10D0 ; =ov00_02327910 + bl OS_LockMutex + ldr r1, _022F10D4 ; =ov00_0232790C + mov r2, #0 + ldr r0, _022F10D0 ; =ov00_02327910 + str r2, [r1] + bl OS_UnlockMutex + ldmia sp!, {r3, pc} + .align 2, 0 +_022F10D0: .word ov00_02327910 +_022F10D4: .word ov00_0232790C + arm_func_end Dwci_Ndi_UnprepareHttpCallback + + arm_func_start Dwci_Ndi_KickThread +Dwci_Ndi_KickThread: ; 0x022F10D8 + ldr ip, _022F10E8 ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_022F10E8: .word OS_SendMessage + arm_func_end Dwci_Ndi_KickThread + + arm_func_start Dwci_Ndi_GetMacAddress +Dwci_Ndi_GetMacAddress: ; 0x022F10EC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov sb, r0 + add r0, sp, #0 + bl OS_GetMacAddress + mov r6, #0 + add r7, sp, #0 + mov r8, r6 + add r5, sp, #6 + mov r4, #2 +_022F1114: + ldrb r1, [r7], #1 + mov r2, r4 + add r0, r5, r8 + bl Dwci_Ndi_HexToStrFigure + add r6, r6, #1 + cmp r6, #6 + add r8, r8, #2 + blt _022F1114 + add r1, sp, #6 + mov r0, sb + mov r2, #0xc + bl Dwci_Ndi_EncodeBase64 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end Dwci_Ndi_GetMacAddress + + arm_func_start Dwci_Ndi_Strlen +Dwci_Ndi_Strlen: ; 0x022F114C + ldr ip, _022F1154 ; =Std_GetStringLength + bx ip + .align 2, 0 +_022F1154: .word Std_GetStringLength + arm_func_end Dwci_Ndi_Strlen + + arm_func_start Dwci_Ndi_Strncmp +Dwci_Ndi_Strncmp: ; 0x022F1158 + ldr ip, _022F1160 ; =Std_CompareNString + bx ip + .align 2, 0 +_022F1160: .word Std_CompareNString + arm_func_end Dwci_Ndi_Strncmp + + arm_func_start Dwci_Ndi_Memclr +Dwci_Ndi_Memclr: ; 0x022F1164 + ldr ip, _022F1174 ; =MI_CpuFill8 + mov r2, r1 + mov r1, #0 + bx ip + .align 2, 0 +_022F1174: .word MI_CpuFill8 + arm_func_end Dwci_Ndi_Memclr + + arm_func_start Dwci_Ndi_Memcpy +Dwci_Ndi_Memcpy: ; 0x022F1178 + ldr ip, _022F118C ; =MI_CpuCopy8 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx ip + .align 2, 0 +_022F118C: .word MI_CpuCopy8 + arm_func_end Dwci_Ndi_Memcpy + + arm_func_start Dwci_Ndi_StrToInt +Dwci_Ndi_StrToInt: ; 0x022F1190 + ldr ip, _022F1198 ; =Nhttpi_StrToInt + bx ip + .align 2, 0 +_022F1198: .word Nhttpi_StrToInt + arm_func_end Dwci_Ndi_StrToInt + + arm_func_start Dwci_Ndi_IntToStr +Dwci_Ndi_IntToStr: ; 0x022F119C + ldr ip, _022F11A4 ; =Nhttpi_IntToStr + bx ip + .align 2, 0 +_022F11A4: .word Nhttpi_IntToStr + arm_func_end Dwci_Ndi_IntToStr + + arm_func_start Dwci_Ndi_IntToStrFigure +Dwci_Ndi_IntToStrFigure: ; 0x022F11A8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, r2 + ldr r4, _022F1274 ; =0x01634578 + ldr r2, _022F1278 ; =0x5D8A0000 + mov sb, r1 + cmp r8, r4 + mov sl, r0 + mov fp, r3 + mov r5, #0 + cmpeq sb, r2 + subhs r0, r5, #1 + ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, r5 + mov r0, r5 +_022F11E0: + ldr r1, _022F127C ; =ov00_02318324 + add r1, r1, r4, lsl #3 + ldr r6, [r1, #4] + ldr r1, _022F127C ; =ov00_02318324 + cmp r8, r6 + ldr r7, [r1, r4, lsl #3] + cmpeq sb, r7 + blo _022F1238 + mov r0, sb + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl _ll_udiv + umull r3, r2, r0, r7 + mla r2, r0, r6, r2 + add r0, r0, #0x30 + strb r0, [sl, r5] + subs sb, sb, r3 + sbc r8, r8, r2 + mov r0, #1 + add r5, r5, #1 + b _022F1258 +_022F1238: + cmp r0, #0 + bne _022F124C + rsb r1, r4, #0x11 + cmp r1, fp + bgt _022F1258 +_022F124C: + mov r1, #0x30 + strb r1, [sl, r5] + add r5, r5, #1 +_022F1258: + add r4, r4, #1 + cmp r4, #0x10 + blt _022F11E0 + adds r0, sb, #0x30 + strb r0, [sl, r5] + add r0, r5, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F1274: .word 0x01634578 +_022F1278: .word 0x5D8A0000 +_022F127C: .word ov00_02318324 + arm_func_end Dwci_Ndi_IntToStrFigure + + arm_func_start Dwci_Ndi_HexToStrFigure +Dwci_Ndi_HexToStrFigure: ; 0x022F1280 + stmdb sp!, {r3, lr} + mov lr, #0 + cmp r2, #8 + subgt r0, lr, #1 + ldmgtia sp!, {r3, pc} + cmp r2, #1 + mov ip, #1 + blt _022F12D0 +_022F12A0: + sub r3, r2, ip + mov r3, r3, lsl #2 + mov r3, r1, lsr r3 + and r3, r3, #0xf + cmp r3, #0xa + addlo r3, r3, #0x30 + addhs r3, r3, #0x57 + add ip, ip, #1 + strb r3, [r0, lr] + add lr, lr, #1 + cmp ip, r2 + ble _022F12A0 +_022F12D0: + mov r0, lr + ldmia sp!, {r3, pc} + arm_func_end Dwci_Ndi_HexToStrFigure + + arm_func_start Nhttp_Startup +Nhttp_Startup: ; 0x022F12D8 + stmdb sp!, {r4, lr} + ldr r3, _022F139C ; =ov00_02327940 + mov ip, #0 + str r0, [r3, #8] + str r1, [r3, #0xc] + str ip, [r3, #4] + str ip, [r3, #0x1c] + str ip, [r3, #0x20] + str ip, [r3, #0x10] + mov r4, r2 + str ip, [r3, #0x14] + bl Nhttpi_InitLockReqList + cmp r0, #0 + bne _022F1324 + ldr r0, _022F139C ; =ov00_02327940 + mov r1, #9 + str r1, [r0, #4] + mov r0, #0 + ldmia sp!, {r4, pc} +_022F1324: + ldr r1, _022F139C ; =ov00_02327940 + mov r0, #0x2000 + ldr r2, [r1, #8] + mov r1, #8 + blx r2 + movs r1, r0 + ldr r0, _022F139C ; =ov00_02327940 + str r1, [r0, #0x18] + bne _022F135C + mov r1, #1 + str r1, [r0, #4] + bl Nhttpi_ExitLockReqList + mov r0, #0 + ldmia sp!, {r4, pc} +_022F135C: + mov r0, r4 + bl Nhttpi_CreateCommThread + cmp r0, #0 + ldrne r1, _022F139C ; =ov00_02327940 + movne r0, #1 + strne r0, [r1] + ldmneia sp!, {r4, pc} + ldr r1, _022F139C ; =ov00_02327940 + mov r0, #9 + str r0, [r1, #4] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0xc] + blx r1 + bl Nhttpi_ExitLockReqList + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F139C: .word ov00_02327940 + arm_func_end Nhttp_Startup + + arm_func_start Nhttp_CleanupAsync +Nhttp_CleanupAsync: ; 0x022F13A0 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + mov r2, r0 + mov ip, #0x800 + ldr r0, _022F13DC ; =ov00_02327964 + ldr r1, _022F13E0 ; =Nhttpi_CleanupThreadProc + ldr r3, _022F13E4 ; =ov00_02328224 + str ip, [sp] + mov ip, #0x10 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _022F13DC ; =ov00_02327964 + bl OS_WakeupThreadDirect + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F13DC: .word ov00_02327964 +_022F13E0: .word Nhttpi_CleanupThreadProc +_022F13E4: .word ov00_02328224 + arm_func_end Nhttp_CleanupAsync + + arm_func_start Nhttpi_CleanupThreadProc +Nhttpi_CleanupThreadProc: ; 0x022F13E8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Nhttpi_CancelAllRequests + bl Nhttpi_DestroyCommThread + ldr r1, _022F1420 ; =ov00_02327940 + ldr r0, [r1, #0x18] + ldr r1, [r1, #0xc] + blx r1 + bl Nhttpi_ExitLockReqList + ldr r0, _022F1420 ; =ov00_02327940 + mov r1, #0 + str r1, [r0] + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F1420: .word ov00_02327940 + arm_func_end Nhttpi_CleanupThreadProc + + arm_func_start AddHdrList_Nhttp +AddHdrList_Nhttp: ; 0x022F1424 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r0 + ldr sl, [sb] + mov r8, r1 + mov r7, r2 + mov r6, r3 + cmp sl, #0 + mov r4, #0 + beq _022F14A0 + ldr r1, [sl, #8] + mov r0, r8 + mov r5, sl + bl Nhttpi_CompareToken + cmp r0, #0 + beq _022F149C + ldr r5, [sl, #4] + ldr r0, [sb] + cmp r5, r0 + beq _022F14A0 +_022F1470: + ldr r1, [r5, #8] + mov r0, r8 + bl Nhttpi_CompareToken + cmp r0, #0 + moveq r4, #1 + beq _022F14A0 + ldr r5, [r5, #4] + ldr r0, [sb] + cmp r5, r0 + bne _022F1470 + b _022F14A0 +_022F149C: + mov r4, #1 +_022F14A0: + cmp r4, #0 + strne r7, [r5, #0xc] + bne _022F152C + ldr r1, _022F1534 ; =ov00_02327948 + mov r0, r6 + ldr r2, [r1] + mov r1, #4 + blx r2 + cmp r0, #0 + bne _022F14DC + ldr r0, _022F1538 ; =ov00_02327944 + mov r1, #1 + str r1, [r0] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022F14DC: + str r8, [r0, #8] + str r7, [r0, #0xc] + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + ldr r1, [sb] + cmp r1, #0 + streq r0, [r0, #4] + streq r0, [r0] + streq r0, [sb] + beq _022F152C + ldr r1, [r1] + str r1, [r0] + ldr r1, [sb] + str r1, [r0, #4] + ldr r1, [sb] + ldr r1, [r1] + str r0, [r1, #4] + ldr r1, [sb] + str r0, [r1] +_022F152C: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F1534: .word ov00_02327948 +_022F1538: .word ov00_02327944 + arm_func_end AddHdrList_Nhttp + + arm_func_start Nhttpi_GetHdrFromList +Nhttpi_GetHdrFromList: ; 0x022F153C + ldr r3, [r0] + cmp r3, #0 + beq _022F1578 + ldr r2, [r3] + cmp r3, r2 + moveq r1, #0 + streq r1, [r0] + beq _022F1578 + ldr r1, [r3, #4] + str r1, [r2, #4] + ldr r2, [r3] + ldr r1, [r3, #4] + str r2, [r1] + ldr r1, [r3, #4] + str r1, [r0] +_022F1578: + mov r0, r3 + bx lr + arm_func_end Nhttpi_GetHdrFromList + + arm_func_start IncAscii_Nhttp +IncAscii_Nhttp: ; 0x022F1580 + add r0, r0, #1 + and r0, r0, #0xff + cmp r0, #0x7b + moveq r0, #0x30 + beq _022F15A8 + cmp r0, #0x5b + moveq r0, #0x61 + beq _022F15A8 + cmp r0, #0x3a + moveq r0, #0x41 +_022F15A8: + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bx lr + arm_func_end IncAscii_Nhttp + + arm_func_start CheckTagPost_Nhttp +CheckTagPost_Nhttp: ; 0x022F15B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r0, sb + mov r1, r8 + add r2, sl, #0x46 + mov r3, #0x12 + bl Nhttpi_MemFind + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r6, _022F1650 ; =ov00_023183B7 + mov fp, #0x13 + mov r4, #0x12 +_022F15F0: + add r7, sl, fp + ldrsb r5, [r7, #0x44] +_022F15F8: + and r0, r5, #0xff + bl IncAscii_Nhttp + mov r5, r0 + strb r5, [r7, #0x44] + ldrsb r0, [r6] + cmp r5, r0 + beq _022F1638 + mov r0, sb + mov r1, r8 + mov r3, r4 + add r2, sl, #0x46 + bl Nhttpi_MemFind + cmp r0, #0 + bge _022F15F8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F1638: + sub fp, fp, #1 + cmp fp, #2 + sub r6, r6, #1 + bge _022F15F0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F1650: .word ov00_023183B7 + arm_func_end CheckTagPost_Nhttp + + arm_func_start Nhttp_AddHeaderField +Nhttp_AddHeaderField: ; 0x022F1654 + stmdb sp!, {r3, lr} + ldr r3, [r0] + cmp r3, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r0, #0x34 + mov r3, #0x18 + bl AddHdrList_Nhttp + ldmia sp!, {r3, pc} + arm_func_end Nhttp_AddHeaderField + + arm_func_start Nhttp_AddPostDataAscii +Nhttp_AddPostDataAscii: ; 0x022F1678 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + ldr r0, [r8] + mov r7, r1 + mov r6, r2 + mov r5, #0 + cmp r0, #0 + movne r0, r5 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + bl Nhttpi_Strlen + mov r4, r0 + mov r0, r8 + mov r1, r6 + mov r2, r4 + bl CheckTagPost_Nhttp + cmp r0, #0 + beq _022F16E4 + mov r1, r7 + mov r2, r6 + add r0, r8, #0x38 + mov r3, #0x18 + bl AddHdrList_Nhttp + movs r5, r0 + ldrne r0, [r8, #0x38] + ldrne r0, [r0] + strne r4, [r0, #0x10] +_022F16E4: + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end Nhttp_AddPostDataAscii + + arm_func_start Nhttp_SetCaChain +Nhttp_SetCaChain: ; 0x022F16EC + ldr r3, [r0] + cmp r3, #0 + movne r0, #0 + streq r1, [r0, #0x1c] + streq r2, [r0, #0x18] + moveq r0, #1 + bx lr + arm_func_end Nhttp_SetCaChain + + arm_func_start Nhttpi_SetReqQueue +Nhttpi_SetReqQueue: ; 0x022F1708 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022F17B0 ; =ov00_02327948 + mov r4, r0 + ldr r2, [r1] + mov r0, #0x14 + mov r1, #4 + mvn r5, #0 + blx r2 + cmp r0, #0 + beq _022F17A8 + ldr r1, _022F17B4 ; =ov00_02327960 + ldr r2, [r1] + cmp r2, #0 + streq r0, [r0] + streq r0, [r0, #4] + streq r0, [r1] + beq _022F1770 + ldr r2, [r2] + str r2, [r0] + ldr r2, [r1] + str r2, [r0, #4] + ldr r2, [r1] + ldr r2, [r2] + str r0, [r2, #4] + ldr r1, [r1] + str r0, [r1] +_022F1770: + ldr r1, _022F17B8 ; =ov00_0232795C + mvn r2, #0 + ldr ip, [r1] + ldr r3, [r1] + add r3, r3, #1 + str r3, [r1] + str ip, [r0, #8] + str r4, [r0, #0xc] + str r2, [r0, #0x10] + ldr r2, [r1] + ldr r5, [r0, #8] + cmp r2, #0 + movlt r0, #0 + strlt r0, [r1] +_022F17A8: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F17B0: .word ov00_02327948 +_022F17B4: .word ov00_02327960 +_022F17B8: .word ov00_0232795C + arm_func_end Nhttpi_SetReqQueue + + arm_func_start Nhttpi_FindReqQueue +Nhttpi_FindReqQueue: ; 0x022F17BC + ldr r1, _022F1810 ; =ov00_02327960 + mov r2, #0 + ldr r3, [r1] + cmp r3, #0 + beq _022F1808 + ldr r1, [r3, #8] + cmp r1, r0 + moveq r2, r3 + beq _022F1808 + ldr ip, [r3, #4] + cmp ip, r3 + beq _022F1808 +_022F17EC: + ldr r1, [ip, #8] + cmp r1, r0 + moveq r2, ip + beq _022F1808 + ldr ip, [ip, #4] + cmp ip, r3 + bne _022F17EC +_022F1808: + mov r0, r2 + bx lr + .align 2, 0 +_022F1810: .word ov00_02327960 + arm_func_end Nhttpi_FindReqQueue + + arm_func_start Nhttpi_FreeReqQueue +Nhttpi_FreeReqQueue: ; 0x022F1814 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, #0 + bl Nhttpi_FindReqQueue + movs r4, r0 + beq _022F18A4 + ldr r0, _022F18AC ; =ov00_02327960 + ldr r2, [r0] + ldr r1, [r2] + cmp r2, r1 + beq _022F1864 + ldmia r4, {r1, r2} + str r2, [r1, #4] + ldr r2, [r4] + ldr r1, [r4, #4] + str r2, [r1] + ldr r1, [r0] + cmp r1, r4 + ldreq r1, [r4, #4] + streq r1, [r0] + b _022F186C +_022F1864: + mov r1, r5 + str r1, [r0] +_022F186C: + ldr r0, [r4, #0xc] + ldr r5, [r0, #0x3c] + ldr r6, [r0, #0x30] + ldr r7, [r0, #0x2c] + bl Nhttpi_DestroyRequestObject + ldr r1, _022F18B0 ; =ov00_0232794C + mov r0, r4 + ldr r1, [r1] + blx r1 + mov r1, r6 + mov r2, r7 + mov r0, #8 + blx r5 + mov r5, #1 +_022F18A4: + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F18AC: .word ov00_02327960 +_022F18B0: .word ov00_0232794C + arm_func_end Nhttpi_FreeReqQueue + + arm_func_start Nhttpi_AllFreeReqQueue +Nhttpi_AllFreeReqQueue: ; 0x022F18B4 + stmdb sp!, {r4, lr} + ldr r4, _022F18E0 ; =ov00_02327960 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} +_022F18C8: + ldr r0, [r0, #8] + bl Nhttpi_FreeReqQueue + ldr r0, [r4] + cmp r0, #0 + bne _022F18C8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F18E0: .word ov00_02327960 + arm_func_end Nhttpi_AllFreeReqQueue + + arm_func_start Nhttpi_GetReqFromReqQueue +Nhttpi_GetReqFromReqQueue: ; 0x022F18E4 + ldr ip, _022F18F0 ; =Nhttpi_GetHdrFromList + ldr r0, _022F18F4 ; =ov00_02327960 + bx ip + .align 2, 0 +_022F18F0: .word Nhttpi_GetHdrFromList +_022F18F4: .word ov00_02327960 + arm_func_end Nhttpi_GetReqFromReqQueue + + arm_func_start Nhttpi_InitLockReqList +Nhttpi_InitLockReqList: ; 0x022F18F8 + stmdb sp!, {r3, lr} + ldr r0, _022F190C ; =ov00_02328228 + bl OS_InitMutex + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F190C: .word ov00_02328228 + arm_func_end Nhttpi_InitLockReqList + + arm_func_start Nhttpi_ExitLockReqList +Nhttpi_ExitLockReqList: ; 0x022F1910 + bx lr + arm_func_end Nhttpi_ExitLockReqList + + arm_func_start Nhttpi_LockReqList +Nhttpi_LockReqList: ; 0x022F1914 + ldr ip, _022F1920 ; =OS_LockMutex + ldr r0, _022F1924 ; =ov00_02328228 + bx ip + .align 2, 0 +_022F1920: .word OS_LockMutex +_022F1924: .word ov00_02328228 + arm_func_end Nhttpi_LockReqList + + arm_func_start Nhttpi_UnlockReqList +Nhttpi_UnlockReqList: ; 0x022F1928 + ldr ip, _022F1934 ; =OS_UnlockMutex + ldr r0, _022F1938 ; =ov00_02328228 + bx ip + .align 2, 0 +_022F1934: .word OS_UnlockMutex +_022F1938: .word ov00_02328228 + arm_func_end Nhttpi_UnlockReqList + + arm_func_start Nhttpi_CreateCommThread +Nhttpi_CreateCommThread: ; 0x022F193C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r1 + bl OS_IsThreadAvailable + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _022F19A4 ; =ov00_02328240 + ldr r1, _022F19A8 ; =ov00_02328224 + mov r2, #1 + bl OS_InitMessageQueue + mov r0, #0x2000 + str r0, [sp] + ldr r0, _022F19AC ; =ov00_02328260 + ldr r1, _022F19B0 ; =Nhttpi_CommThreadProc + add r3, r4, #0x2000 + mov r2, #0 + str r5, [sp, #4] + bl OS_CreateThread + ldr r0, _022F19AC ; =ov00_02328260 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F19A4: .word ov00_02328240 +_022F19A8: .word ov00_02328224 +_022F19AC: .word ov00_02328260 +_022F19B0: .word Nhttpi_CommThreadProc + arm_func_end Nhttpi_CreateCommThread + + arm_func_start Nhttpi_DestroyCommThread +Nhttpi_DestroyCommThread: ; 0x022F19B4 + stmdb sp!, {r3, lr} + ldr r0, _022F19D4 ; =ov00_02327954 + mov r1, #1 + str r1, [r0] + bl Nhttpi_KickCommThread + ldr r0, _022F19D8 ; =ov00_02328260 + bl OS_JoinThread + ldmia sp!, {r3, pc} + .align 2, 0 +_022F19D4: .word ov00_02327954 +_022F19D8: .word ov00_02328260 + arm_func_end Nhttpi_DestroyCommThread + + arm_func_start Nhttpi_IdleCommThread +Nhttpi_IdleCommThread: ; 0x022F19DC + stmdb sp!, {r3, lr} + ldr r0, _022F19F4 ; =ov00_02328240 + add r1, sp, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldmia sp!, {r3, pc} + .align 2, 0 +_022F19F4: .word ov00_02328240 + arm_func_end Nhttpi_IdleCommThread + + arm_func_start Nhttpi_KickCommThread +Nhttpi_KickCommThread: ; 0x022F19F8 + ldr ip, _022F1A0C ; =OS_SendMessage + mov r1, #0 + ldr r0, _022F1A10 ; =ov00_02328240 + mov r2, r1 + bx ip + .align 2, 0 +_022F1A0C: .word OS_SendMessage +_022F1A10: .word ov00_02328240 + arm_func_end Nhttpi_KickCommThread + + arm_func_start SetupGetcharFromHdrRecvBuf +SetupGetcharFromHdrRecvBuf: ; 0x022F1A14 + stmdb sp!, {r3, lr} + cmp r1, #0x400 + bge _022F1A30 + mov r0, #0 + str r0, [r2] + str r1, [r3] + ldmia sp!, {r3, pc} +_022F1A30: + sub ip, r1, #0x400 + movs ip, ip, asr #9 + sub lr, ip, #1 + ldr ip, [r0, #0x1c] + beq _022F1A54 +_022F1A44: + cmp lr, #0 + sub lr, lr, #1 + ldr ip, [ip] + bne _022F1A44 +_022F1A54: + ldr r0, _022F1A6C ; =0x000001FF + sub r1, r1, #0x400 + str ip, [r2] + and r0, r1, r0 + str r0, [r3] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F1A6C: .word 0x000001FF + arm_func_end SetupGetcharFromHdrRecvBuf + + arm_func_start GetcharFromHdrRecvBuf +GetcharFromHdrRecvBuf: ; 0x022F1A70 + ldr r3, [r1] + cmp r3, #0 + bne _022F1AB0 + ldr r3, [r2] + cmp r3, #0x400 + bge _022F1A9C + add r1, r3, #1 + str r1, [r2] + add r0, r0, r3 + ldrsb r0, [r0, #0x20] + bx lr +_022F1A9C: + mov r3, #0 + str r3, [r2] + ldr r0, [r0, #0x1c] + str r0, [r1] + b _022F1AD0 +_022F1AB0: + ldr r0, [r2] + cmp r0, #0x200 + bne _022F1AD0 + mov r0, #0 + str r0, [r2] + ldr r0, [r1] + ldr r0, [r0] + str r0, [r1] +_022F1AD0: + ldr r3, [r2] + add r0, r3, #1 + str r0, [r2] + ldr r0, [r1] + add r0, r0, r3 + ldrsb r0, [r0, #4] + bx lr + arm_func_end GetcharFromHdrRecvBuf + + arm_func_start Nhttpi_FindNextLineHdrRecvBuf +Nhttpi_FindNextLineHdrRecvBuf: ; 0x022F1AEC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r6, #0 + movs r7, r3 + mov sl, r0 + subne r0, r6, #1 + mov sb, r1 + mov r8, r2 + strne r0, [r7] + cmp sb, r8 + bge _022F1BB0 + add r2, sp, #4 + add r3, sp, #0 + mov r0, sl + mov r1, sb + bl SetupGetcharFromHdrRecvBuf + cmp sb, r8 + bge _022F1BB0 + mov fp, #1 + add r5, sp, #4 + add r4, sp, #0 +_022F1B40: + mov r0, sl + mov r1, r5 + mov r2, r4 + bl GetcharFromHdrRecvBuf + cmp r0, #0x3a + bne _022F1B6C + cmp r7, #0 + beq _022F1B6C + ldr r1, [r7] + cmp r1, #0 + strlt sb, [r7] +_022F1B6C: + cmp r6, #0 + bne _022F1B80 + cmp r0, #0xd + moveq r6, fp + b _022F1BA4 +_022F1B80: + cmp r0, #0xa + bne _022F1BA0 + sub r0, r8, #1 + cmp sb, r0 + moveq r0, #0 + add sp, sp, #8 + addne r0, sb, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F1BA0: + mov r6, #0 +_022F1BA4: + add sb, sb, #1 + cmp sb, r8 + blt _022F1B40 +_022F1BB0: + mvn r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end Nhttpi_FindNextLineHdrRecvBuf + + arm_func_start Nhttpi_SkipSpaceHdrRecvBuf +Nhttpi_SkipSpaceHdrRecvBuf: ; 0x022F1BBC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r1 + mov r6, r2 + mov r8, r0 + cmp r7, r6 + bge _022F1C20 + add r2, sp, #4 + add r3, sp, #0 + bl SetupGetcharFromHdrRecvBuf + cmp r7, r6 + bge _022F1C20 + add r5, sp, #4 + add r4, sp, #0 +_022F1BF4: + mov r0, r8 + mov r1, r5 + mov r2, r4 + bl GetcharFromHdrRecvBuf + cmp r0, #0x20 + addne sp, sp, #8 + movne r0, r7 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r7, r7, #1 + cmp r7, r6 + blt _022F1BF4 +_022F1C20: + mvn r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end Nhttpi_SkipSpaceHdrRecvBuf + + arm_func_start Nhttpi_CompareTokenN_HdrRecvBuf +Nhttpi_CompareTokenN_HdrRecvBuf: ; 0x022F1C2C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sb, r1 + mov r4, r2 + mov sl, r0 + mov r8, r3 + cmp sb, r4 + ldr r7, [sp, #0x30] + bge _022F1CF0 + add r2, sp, #4 + add r3, sp, #0 + bl SetupGetcharFromHdrRecvBuf + add r1, sp, #4 + add r2, sp, #0 + mov r0, sl + bl GetcharFromHdrRecvBuf + sub r6, r4, #1 + add r5, sp, #4 + add r4, sp, #0 + mov fp, #0 + b _022F1CB4 +_022F1C80: + cmp r2, #0 + cmpne r2, #0x20 + cmpne r2, r7 + cmpne sb, r6 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, r5 + mov r2, r4 + bl GetcharFromHdrRecvBuf + add sb, sb, #1 + add r8, r8, #1 +_022F1CB4: + ldrsb r2, [r8] + mov r1, fp + cmp r2, #0x41 + blt _022F1CCC + cmp r2, #0x5a + movle r1, #1 +_022F1CCC: + cmp r1, #0 + addne r1, r2, #0x20 + moveq r1, r2 + cmp r0, #0x41 + blt _022F1CE8 + cmp r0, #0x5a + addle r0, r0, #0x20 +_022F1CE8: + cmp r0, r1 + beq _022F1C80 +_022F1CF0: + mvn r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end Nhttpi_CompareTokenN_HdrRecvBuf + + arm_func_start Nhttpi_LoadFromHdrRecvBuf +Nhttpi_LoadFromHdrRecvBuf: ; 0x022F1CFC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, r0 + mov r7, r2 + mov r6, r3 + ldr r0, [r4] + add r2, r7, r6 + mov r8, r1 + cmp r2, r0 + bgt _022F1DDC + cmp r6, #0 + beq _022F1DD4 + cmp r7, #0x400 + bge _022F1D5C + rsb r5, r7, #0x400 + cmp r6, r5 + movle r5, r6 + add r1, r4, #0x20 + mov r0, r8 + mov r2, r5 + add r1, r1, r7 + bl Nhttpi_Memcpy + add r7, r7, r5 + sub r6, r6, r5 + add r8, r8, r5 +_022F1D5C: + cmp r6, #0 + beq _022F1DD4 + sub r2, r7, #0x400 + ldr r0, _022F1DE4 ; =0x000001FF + movs r1, r2, asr #9 + and r7, r2, r0 + sub r0, r1, #1 + ldr r4, [r4, #0x1c] + beq _022F1D90 +_022F1D80: + cmp r0, #0 + sub r0, r0, #1 + ldr r4, [r4] + bne _022F1D80 +_022F1D90: + cmp r6, #0 + beq _022F1DD4 + ldr sb, _022F1DE4 ; =0x000001FF +_022F1D9C: + rsb r5, r7, #0x200 + cmp r6, r5 + movle r5, r6 + add r1, r4, #4 + mov r0, r8 + mov r2, r5 + add r1, r1, r7 + bl Nhttpi_Memcpy + add r0, r7, r5 + and r7, r0, sb + subs r6, r6, r5 + add r8, r8, r5 + ldr r4, [r4] + bne _022F1D9C +_022F1DD4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F1DDC: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F1DE4: .word 0x000001FF + arm_func_end Nhttpi_LoadFromHdrRecvBuf + + arm_func_start Nhttpi_IsRecvBufFull +Nhttpi_IsRecvBufFull: ; 0x022F1DE8 + ldr r0, [r0, #0xc] + cmp r0, r1 + movls r0, #1 + movhi r0, #0 + bx lr + arm_func_end Nhttpi_IsRecvBufFull + + arm_func_start Nhttpi_RecvBuf +Nhttpi_RecvBuf: ; 0x022F1DFC + stmdb sp!, {r3, lr} + ldr ip, [r0, #0x30] + mov lr, r2 + str r3, [sp] + ldr r2, [ip, #0x18] + ldr r3, [ip, #0xc] + add r2, r2, lr + sub r3, r3, lr + bl Nhttpi_SocRecv + ldmia sp!, {r3, pc} + arm_func_end Nhttpi_RecvBuf + + arm_func_start Nhttpi_RecvBufN +Nhttpi_RecvBufN: ; 0x022F1E24 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + ldr r4, [r8, #0x30] + mov r6, r2 + mov r7, r1 + mov r0, r4 + mov r1, r6 + mov r5, r3 + bl Nhttpi_IsRecvBufFull + cmp r0, #0 + addne sp, sp, #4 + ldrne r0, _022F1E90 ; =0xFFFFFC15 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x20] + sub r3, r0, r6 + str r1, [sp] + ldr r2, [r4, #0x18] + cmp r5, r3 + movle r3, r5 + mov r0, r8 + mov r1, r7 + add r2, r2, r6 + bl Nhttpi_SocRecv + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F1E90: .word 0xFFFFFC15 + arm_func_end Nhttpi_RecvBufN + + arm_func_start Nhttp_CreateRequest +Nhttp_CreateRequest: ; 0x022F1E94 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov fp, r0 + movs r0, r1 + cmpne r0, #1 + str r1, [sp] + mov r5, r2 + mov r4, r3 + mov r7, #0 + cmpne r0, #2 + beq _022F1ECC + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #0xb + str r1, [r0] + b _022F2358 +_022F1ECC: + cmp r4, #0 + bne _022F1EE4 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #0xb + str r1, [r0] + b _022F2358 +_022F1EE4: + ldr r1, _022F23E0 ; =ov00_02327948 + mov r0, #0x58 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r7, r0 + bne _022F1F10 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #1 + str r1, [r0] + b _022F2358 +_022F1F10: + mov r1, #0x58 + bl Nhttpi_Memclr + ldr r1, _022F23E0 ; =ov00_02327948 + mov r0, #0x420 + ldr r2, [r1] + mov r1, #4 + blx r2 + str r0, [r7, #0x30] + cmp r0, #0 + bne _022F1F48 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #1 + str r1, [r0] + b _022F2358 +_022F1F48: + mov r1, #0x420 + bl Nhttpi_Memclr + ldr r1, [r7, #0x30] + mov r0, fp + str r5, [r1, #0x18] + ldr r1, [r7, #0x30] + str r4, [r1, #0xc] + bl Nhttpi_Strlen + mov r4, r0 + cmp r4, #7 + bgt _022F1F84 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #4 + str r1, [r0] + b _022F2358 +_022F1F84: + mov r8, #7 + mov r3, #0x50 + ldr r1, _022F23E4 ; =ov00_0231A60C + mov r0, fp + mov r2, r8 + str r3, [r7, #0x28] + bl Nhttpi_Strnicmp + cmp r0, #0 + beq _022F1FE4 + ldr r1, _022F23E8 ; =ov00_0231A614 + mov r0, fp + mov r2, #8 + bl Nhttpi_Strnicmp + cmp r0, #0 + beq _022F1FD0 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #4 + str r1, [r0] + b _022F2358 +_022F1FD0: + mov r0, #1 + str r0, [r7, #8] + rsb r0, r0, #0x1bc + str r0, [r7, #0x28] + mov r8, #8 +_022F1FE4: + sub r4, r4, r8 + cmp r4, #0 + add r6, fp, r8 + bgt _022F2004 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #4 + str r1, [r0] + b _022F2358 +_022F2004: + mov r5, #0 + mov sb, r5 + mov sl, r5 + b _022F2078 +_022F2014: + cmp sl, #2 + subeq sl, sl, #1 + beq _022F2074 + cmp sl, #1 + bne _022F2068 + sub r0, r5, #1 + mov r1, #2 + add r0, r6, r0 + bl Nhttpi_StrToHex + mov r0, r0, lsl #0x18 + movs r0, r0, asr #0x18 + sub sl, sl, #1 + bpl _022F2058 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #4 + str r1, [r0] + b _022F2358 +_022F2058: + cmp r0, #0x2f + bne _022F2074 + sub sb, sb, #1 + b _022F208C +_022F2068: + cmp r0, #0x25 + moveq sl, #2 + addeq sb, sb, #1 +_022F2074: + add r5, r5, #1 +_022F2078: + cmp r5, r4 + bge _022F208C + ldrsb r0, [r6, r5] + cmp r0, #0x2f + bne _022F2014 +_022F208C: + cmp sl, #0 + beq _022F20A4 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #4 + str r1, [r0] + b _022F2358 +_022F20A4: + ldr r0, _022F23E0 ; =ov00_02327948 + add r1, r8, r4 + sub r1, r1, sb, lsl #1 + ldr r2, [r0] + add r0, r1, #1 + mov r1, #4 + blx r2 + str r0, [r7, #0x24] + cmp r0, #0 + bne _022F20DC + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #1 + str r1, [r0] + b _022F2358 +_022F20DC: + mov r1, fp + mov r2, r8 + bl Nhttpi_Memcpy + mov sb, #0 + mov r5, sb + mov sl, sb + mov fp, sb + cmp r4, #0 + ble _022F2180 +_022F2100: + cmp sl, #2 + subeq sl, sl, #1 + beq _022F2174 + cmp sl, #1 + bne _022F214C + sub r0, sb, #1 + add r0, r6, r0 + mov r1, #2 + bl Nhttpi_StrToHex + mov r0, r0, lsl #0x18 + mov r1, r0, asr #0x18 + ldr r0, [r7, #0x24] + cmp r1, #0x2f + add r0, r8, r0 + add r0, r5, r0 + sub sl, sl, #1 + strb r1, [r0, #-1] + moveq fp, #1 + b _022F2174 +_022F214C: + ldrsb r1, [r6, sb] + cmp r1, #0x2f + moveq fp, #1 + cmp fp, #0 + cmpeq r1, #0x25 + ldrne r0, [r7, #0x24] + moveq sl, #2 + addne r0, r8, r0 + strneb r1, [r5, r0] + add r5, r5, #1 +_022F2174: + add sb, sb, #1 + cmp sb, r4 + blt _022F2100 +_022F2180: + ldr r1, [r7, #0x24] + add r0, r8, r5 + mov r2, #0 + strb r2, [r1, r0] + ldr r0, [r7, #0x24] + cmp r5, #0 + add r1, r0, r8 + ble _022F21C4 +_022F21A0: + ldrsb r0, [r1, r2] + cmp r0, #0x2f + cmpne r0, #0x3a + addeq r0, r2, r8 + streq r0, [r7, #0xc] + beq _022F21C4 + add r2, r2, #1 + cmp r2, r5 + blt _022F21A0 +_022F21C4: + cmp r2, r5 + bne _022F21DC + add r0, r2, r8 + str r0, [r7, #0xc] + str r0, [r7, #0x10] + b _022F2280 +_022F21DC: + ldrsb r0, [r1, r2] + cmp r0, #0x2f + ldreq r0, [r7, #0xc] + streq r0, [r7, #0x10] + beq _022F2280 + cmp r0, #0x3a + bne _022F2280 + cmp r2, r5 + bge _022F2220 +_022F2200: + ldrsb r0, [r1, r2] + cmp r0, #0x2f + addeq r0, r2, r8 + streq r0, [r7, #0x10] + beq _022F2220 + add r2, r2, #1 + cmp r2, r5 + blt _022F2200 +_022F2220: + cmp r2, r5 + addeq r0, r2, r8 + streq r0, [r7, #0x10] + beq _022F2280 + ldr r1, [r7, #0xc] + ldr r0, [r7, #0x24] + add r2, r1, #1 + ldr r1, [r7, #0x10] + add r0, r0, r2 + sub r1, r1, r2 + bl Nhttpi_StrToNum + cmp r0, #0 + ldrlt r0, [r7, #0x28] + blt _022F2274 + ldr r1, _022F23EC ; =0x0000FFFF + cmp r0, r1 + ble _022F2274 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #4 + str r1, [r0] + b _022F2358 +_022F2274: + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r7, #0x28] +_022F2280: + ldr r0, [r7, #8] + cmp r0, #0 + beq _022F2328 + ldr r0, _022F23E0 ; =ov00_02327948 + ldr r3, [r7, #0xc] + ldr r2, [r0] + mov r0, #0x830 + mov r1, #4 + sub r4, r3, r8 + blx r2 + str r0, [r7, #0x20] + cmp r0, #0 + bne _022F22C4 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #1 + str r1, [r0] + b _022F2358 +_022F22C4: + mov r1, #0x830 + bl Nhttpi_Memclr + ldr r1, _022F23E0 ; =ov00_02327948 + add r0, r4, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + ldr r1, [r7, #0x20] + str r0, [r1, #0x800] + ldr r0, [r7, #0x20] + ldr r0, [r0, #0x800] + cmp r0, #0 + bne _022F2308 + ldr r0, _022F23DC ; =ov00_02327944 + mov r1, #1 + str r1, [r0] + b _022F2358 +_022F2308: + ldr r1, [r7, #0x24] + mov r2, r4 + add r1, r1, r8 + bl Nhttpi_Memcpy + ldr r0, [r7, #0x20] + mov r1, #0 + ldr r0, [r0, #0x800] + strb r1, [r0, r4] +_022F2328: + ldr r1, _022F23F0 ; =ov00_023183A4 + add r0, r7, #0x44 + mov r2, #0x14 + bl Nhttpi_Memcpy + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x28] + str r0, [r7, #0x2c] + ldr r0, [sp] + str r0, [r7, #0x40] + mov r0, r7 + str r1, [r7, #0x3c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F2358: + cmp r7, #0 + beq _022F23D4 + ldr r0, [r7, #0x20] + cmp r0, #0 + beq _022F2394 + ldr r0, [r0, #0x800] + cmp r0, #0 + beq _022F2384 + ldr r1, _022F23F4 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F2384: + ldr r1, _022F23F4 ; =ov00_0232794C + ldr r0, [r7, #0x20] + ldr r1, [r1] + blx r1 +_022F2394: + ldr r0, [r7, #0x24] + cmp r0, #0 + beq _022F23AC + ldr r1, _022F23F4 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F23AC: + ldr r0, [r7, #0x30] + cmp r0, #0 + beq _022F23C4 + ldr r1, _022F23F4 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F23C4: + ldr r1, _022F23F4 ; =ov00_0232794C + mov r0, r7 + ldr r1, [r1] + blx r1 +_022F23D4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F23DC: .word ov00_02327944 +_022F23E0: .word ov00_02327948 +_022F23E4: .word ov00_0231A60C +_022F23E8: .word ov00_0231A614 +_022F23EC: .word 0x0000FFFF +_022F23F0: .word ov00_023183A4 +_022F23F4: .word ov00_0232794C + arm_func_end Nhttp_CreateRequest + + arm_func_start Nhttp_DestroyRequest +Nhttp_DestroyRequest: ; 0x022F23F8 + stmdb sp!, {r4, lr} + ldr r1, _022F241C ; =ov00_0232794C + mov r4, r0 + ldr r0, [r4, #0x30] + ldr r1, [r1] + blx r1 + mov r0, r4 + bl Nhttpi_DestroyRequestObject + ldmia sp!, {r4, pc} + .align 2, 0 +_022F241C: .word ov00_0232794C + arm_func_end Nhttp_DestroyRequest + + arm_func_start DeleteStrList +DeleteStrList: ; 0x022F2420 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r7, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, _022F2470 ; =ov00_0232794C + mov r5, #0 +_022F2434: + ldr r0, [r7] + cmp r7, r0 + beq _022F2454 + ldr r6, [r0] + ldr r1, [r4] + blx r1 + str r6, [r7] + b _022F2464 +_022F2454: + ldr r1, [r4] + mov r0, r7 + blx r1 + mov r7, r5 +_022F2464: + cmp r7, #0 + bne _022F2434 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F2470: .word ov00_0232794C + arm_func_end DeleteStrList + + arm_func_start Nhttpi_DestroyRequestObject +Nhttpi_DestroyRequestObject: ; 0x022F2474 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x34] + bl DeleteStrList + ldr r0, [r4, #0x38] + bl DeleteStrList + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _022F24C0 + ldr r0, [r0, #0x800] + cmp r0, #0 + beq _022F24B0 + ldr r1, _022F24E8 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F24B0: + ldr r1, _022F24E8 ; =ov00_0232794C + ldr r0, [r4, #0x20] + ldr r1, [r1] + blx r1 +_022F24C0: + ldr r1, _022F24E8 ; =ov00_0232794C + ldr r0, [r4, #0x24] + ldr r1, [r1] + blx r1 + ldr r1, _022F24E8 ; =ov00_0232794C + mov r0, r4 + ldr r1, [r1] + blx r1 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F24E8: .word ov00_0232794C + arm_func_end Nhttpi_DestroyRequestObject + + arm_func_start Nhttp_SendRequestAsync +Nhttp_SendRequestAsync: ; 0x022F24EC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + cmp r0, #0 + beq _022F2514 + ldr r0, _022F2574 ; =ov00_02327944 + mov r1, #0xb + str r1, [r0] + sub r0, r1, #0xc + ldmia sp!, {r3, r4, r5, pc} +_022F2514: + ldr r0, [r5, #0x40] + cmp r0, #1 + ldreq r0, [r5, #0x38] + cmpeq r0, #0 + bne _022F253C + ldr r0, _022F2574 ; =ov00_02327944 + mov r1, #0xb + str r1, [r0] + sub r0, r1, #0xc + ldmia sp!, {r3, r4, r5, pc} +_022F253C: + bl Nhttpi_LockReqList + mov r0, r5 + bl Nhttpi_SetReqQueue + movs r4, r0 + ldrmi r0, _022F2574 ; =ov00_02327944 + movmi r1, #1 + strmi r1, [r0] + bmi _022F2568 + mov r0, #1 + str r0, [r5] + bl Nhttpi_KickCommThread +_022F2568: + bl Nhttpi_UnlockReqList + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F2574: .word ov00_02327944 + arm_func_end Nhttp_SendRequestAsync + + arm_func_start Nhttp_CancelRequestAsync +Nhttp_CancelRequestAsync: ; 0x022F2578 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, #0 + bl Nhttpi_LockReqList + ldr r0, _022F25F0 ; =ov00_02327950 + ldr r2, [r0] + cmp r2, #0 + beq _022F25D0 + ldr r1, [r2, #8] + cmp r1, r4 + ldreq r1, [r2, #0xc] + ldreq r1, [r1, #4] + cmpeq r1, #0 + bne _022F25D0 + ldr r1, [r2, #0xc] + mov r2, #1 + str r2, [r1, #4] + ldr r1, [r0] + ldr r0, [r1, #0xc] + ldr r1, [r1, #0x10] + bl Nhttpi_SocCancel + mov r5, #1 +_022F25D0: + cmp r5, #0 + bne _022F25E4 + mov r0, r4 + bl Nhttpi_FreeReqQueue + mov r5, r0 +_022F25E4: + bl Nhttpi_UnlockReqList + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F25F0: .word ov00_02327950 + arm_func_end Nhttp_CancelRequestAsync + + arm_func_start Nhttpi_CancelAllRequests +Nhttpi_CancelAllRequests: ; 0x022F25F4 + stmdb sp!, {r3, lr} + bl Nhttpi_LockReqList + ldr r0, _022F2644 ; =ov00_02327950 + ldr r2, [r0] + cmp r2, #0 + beq _022F2638 + ldr r1, [r2, #0xc] + ldr r1, [r1, #4] + cmp r1, #0 + bne _022F2638 + ldr r1, [r2, #0xc] + mov r2, #1 + str r2, [r1, #4] + ldr r1, [r0] + ldr r0, [r1, #0xc] + ldr r1, [r1, #0x10] + bl Nhttpi_SocCancel +_022F2638: + bl Nhttpi_AllFreeReqQueue + bl Nhttpi_UnlockReqList + ldmia sp!, {r3, pc} + .align 2, 0 +_022F2644: .word ov00_02327950 + arm_func_end Nhttpi_CancelAllRequests + + arm_func_start Nhttpi_ResolveHostname +Nhttpi_ResolveHostname: ; 0x022F2648 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + ldr r2, [r5, #0x24] + ldr r1, [r5, #0xc] + mov r0, #0 + ldrsb r4, [r2, r1] + strb r0, [r2, r1] + ldr r0, [r5, #8] + ldr r6, [r5, #0x24] + cmp r0, #0 + movne r7, #8 + moveq r7, #7 + add r1, sp, #0 + add r0, r6, r7 + bl Soc_InetAtoN + cmp r0, #0 + ldrne r0, [sp] + bne _022F26D0 + add r0, r6, r7 + bl Socl_Resolve + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #8 + mov r3, r0, lsl #8 + mov ip, r0, lsl #0x18 + and r2, r2, #0xff + and r0, r1, #0xff00 + and r1, r3, #0xff0000 + orr r0, r2, r0 + and r2, ip, #0xff000000 + orr r0, r1, r0 + orr r0, r2, r0 +_022F26D0: + ldr r2, [r5, #0x24] + ldr r1, [r5, #0xc] + strb r4, [r2, r1] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Nhttpi_ResolveHostname + + arm_func_start Nhttp_DestroyResponse +Nhttp_DestroyResponse: ; 0x022F26E0 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _022F2710 + ldr r5, _022F2754 ; =ov00_0232794C +_022F26F8: + ldr r6, [r0] + ldr r1, [r5] + blx r1 + movs r0, r6 + str r6, [r4, #0x1c] + bne _022F26F8 +_022F2710: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022F2728 + ldr r1, _022F2754 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F2728: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _022F2740 + ldr r1, _022F2754 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F2740: + ldr r1, _022F2754 ; =ov00_0232794C + mov r0, r4 + ldr r1, [r1] + blx r1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F2754: .word ov00_0232794C + arm_func_end Nhttp_DestroyResponse + + arm_func_start Nhttpi_GetHeaderValue +Nhttpi_GetHeaderValue: ; 0x022F2758 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r2 + mov sl, r1 + ldr r2, [r5] + add r3, sp, #4 + mov r1, #0xc + bl Nhttpi_FindNextLineHdrRecvBuf + mov r8, r0 + cmp r8, #0 + ble _022F2858 + mov r6, #0 + add r7, sp, #4 +_022F2790: + ldr r2, [r5] + mov r0, r5 + mov r1, r8 + mov r3, r7 + bl Nhttpi_FindNextLineHdrRecvBuf + ldr r2, [sp, #4] + mov sb, r0 + cmp r2, #0 + ble _022F284C + mov r0, r5 + mov r1, r8 + mov r3, sl + str r6, [sp] + bl Nhttpi_CompareTokenN_HdrRecvBuf + cmp r0, #0 + bne _022F284C + ldr r1, [sp, #4] + ldr r0, [r5] + add r1, r1, #1 + cmp r1, r0 + bge _022F2840 + ldr r2, [r5] + mov r0, r5 + mov r3, #0 + bl Nhttpi_FindNextLineHdrRecvBuf + cmp r0, #0 + ldrle r6, [r5] + ble _022F2814 + cmp r0, #2 + addlt sp, sp, #8 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + sub r6, r0, #2 +_022F2814: + ldr r1, [sp, #4] + mov r0, r5 + mov r2, r6 + add r1, r1, #1 + bl Nhttpi_SkipSpaceHdrRecvBuf + cmp r0, #0 + movlt r0, r6 + str r0, [r4] + add sp, sp, #8 + sub r0, r6, r0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022F2840: + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022F284C: + mov r8, sb + cmp sb, #0 + bgt _022F2790 +_022F2858: + mvn r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end Nhttpi_GetHeaderValue + + arm_func_start Nhttp_GetHeaderField +Nhttp_GetHeaderField: ; 0x022F2864 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #8] + mov r6, r1 + cmp r0, #0 + mov r5, r2 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _022F28A4 + ldr r1, _022F295C ; =ov00_0232794C + ldr r1, [r1] + blx r1 + mov r0, #0 + str r0, [r7, #0x14] +_022F28A4: + add r2, sp, #0 + mov r0, r7 + mov r1, r6 + bl Nhttpi_GetHeaderValue + movs r4, r0 + bmi _022F2900 + ldr r1, _022F2960 ; =ov00_02327948 + add r0, r4, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + str r0, [r7, #0x14] + mov r1, #0 + strb r1, [r0, r4] + ldr r1, [r7, #0x14] + ldr r2, [sp] + mov r0, r7 + mov r3, r4 + bl Nhttpi_LoadFromHdrRecvBuf + ldr r1, [r7, #0x14] + mov r0, r4 + str r1, [r5] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F2900: + ldr r0, _022F2964 ; =ov00_0231A620 + mov r1, r6 + bl Nhttpi_Strcmp + cmp r0, #0 + mvnne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, _022F2960 ; =ov00_02327948 + mov r0, #4 + ldr r2, [r1] + mov r1, r0 + blx r2 + str r0, [r7, #0x14] + mov r1, #0 + strb r1, [r0, #3] + ldr r1, [r7, #0x14] + mov r0, r7 + mov r2, #9 + mov r3, #3 + bl Nhttpi_LoadFromHdrRecvBuf + ldr r1, [r7, #0x14] + mov r0, #3 + str r1, [r5] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F295C: .word ov00_0232794C +_022F2960: .word ov00_02327948 +_022F2964: .word ov00_0231A620 + arm_func_end Nhttp_GetHeaderField + + arm_func_start Nhttp_GetBodyAll +Nhttp_GetBodyAll: ; 0x022F2968 + ldr r2, [r0, #8] + cmp r2, #0 + ldrne r2, [r0, #4] + cmpne r2, #0 + mvneq r0, #0 + ldrne r2, [r0, #0x18] + strne r2, [r1] + ldrne r0, [r0, #4] + bx lr + arm_func_end Nhttp_GetBodyAll + + arm_func_start SslAuthCallback +SslAuthCallback: ; 0x022F298C + tst r0, #0x8000 + bicne r0, r0, #0x8000 + bx lr + arm_func_end SslAuthCallback + + arm_func_start Nhttpi_SetSslseed +Nhttpi_SetSslseed: ; 0x022F2998 + stmdb sp!, {r3, lr} + ldr r0, _022F29B4 ; =ov00_02328320 + bl OS_GetLowEntropyData + ldr r0, _022F29B4 ; =ov00_02328320 + mov r1, #0x20 + bl Cps_SslAddRandomSeed + ldmia sp!, {r3, pc} + .align 2, 0 +_022F29B4: .word ov00_02328320 + arm_func_end Nhttpi_SetSslseed + + arm_func_start Nhttpi_SocOpen +Nhttpi_SocOpen: ; 0x022F29B8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl socket + movs r4, r0 + bmi _022F2A2C + ldr r0, [r5, #8] + cmp r0, #0 + beq _022F2A2C + bl Nhttpi_SetSslseed + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + ldr r2, _022F2A34 ; =SslAuthCallback + str r1, [r0, #0x814] + ldr r3, [r5, #0x18] + ldr r1, [r5, #0x20] + mov r0, r4 + str r3, [r1, #0x818] + ldr r1, [r5, #0x20] + str r2, [r1, #0x810] + ldr r1, [r5, #0x20] + bl Socl_EnableSsl + cmp r0, #0 + bge _022F2A2C + mov r0, r4 + bl CloseVeneer + mvn r4, #0 +_022F2A2C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F2A34: .word SslAuthCallback + arm_func_end Nhttpi_SocOpen + + arm_func_start Nhttpi_SocClose +Nhttpi_SocClose: ; 0x022F2A38 + ldr ip, _022F2A44 ; =CloseVeneer + mov r0, r1 + bx ip + .align 2, 0 +_022F2A44: .word CloseVeneer + arm_func_end Nhttpi_SocClose + + arm_func_start Nhttpi_SocCloseWait +Nhttpi_SocCloseWait: ; 0x022F2A48 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r0, r6 + bl CloseVeneer + mvn r4, #0x19 + cmp r0, r4 + ldmneia sp!, {r4, r5, r6, pc} + mov r5, #0x1f4 +_022F2A68: + mov r0, r5 + bl OS_Sleep + mov r0, r6 + bl CloseVeneer + cmp r0, r4 + beq _022F2A68 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Nhttpi_SocCloseWait + + arm_func_start Nhttpi_SocConnect +Nhttpi_SocConnect: ; 0x022F2A84 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r3, r3, lsl #0x10 + mov r3, r3, lsr #0x10 + mov ip, r3, asr #8 + mov r4, r0 + mov r5, #8 + mov lr, #2 + mov r3, r3, lsl #8 + mov r0, r1 + and ip, ip, #0xff + and r1, r3, #0xff00 + orr r3, ip, r1 + add r1, sp, #0 + strb r5, [sp] + strb lr, [sp, #1] + strh r3, [sp, #2] + str r2, [sp, #4] + bl connect + cmp r0, #0 + bge _022F2AF0 + ldr r0, [r4, #4] + add sp, sp, #8 + cmp r0, #0 + ldrne r0, _022F2AFC ; =0xFFFFFC16 + mvneq r0, #0x3e8 + ldmia sp!, {r3, r4, r5, pc} +_022F2AF0: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F2AFC: .word 0xFFFFFC16 + arm_func_end Nhttpi_SocConnect + + arm_func_start Nhttpi_SocRecv +Nhttpi_SocRecv: ; 0x022F2B00 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + mov r2, r3 + ldr r3, [sp, #8] + bl recv + cmp r0, #0 + ldmgeia sp!, {r4, pc} + ldr r1, [r4, #4] + cmp r1, #0 + ldrne r0, _022F2B48 ; =0xFFFFFC16 + ldmneia sp!, {r4, pc} + mvn r1, #0x37 + cmp r0, r1 + moveq r0, #0 + mvnne r0, #0x3e8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F2B48: .word 0xFFFFFC16 + arm_func_end Nhttpi_SocRecv + + arm_func_start Nhttpi_SocSend +Nhttpi_SocSend: ; 0x022F2B4C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + mov r2, r3 + ldr r3, [sp, #8] + bl send + cmp r0, #0 + ldmgeia sp!, {r4, pc} + ldr r1, [r4, #4] + cmp r1, #0 + ldrne r0, _022F2B94 ; =0xFFFFFC16 + ldmneia sp!, {r4, pc} + mvn r1, #0x37 + cmp r0, r1 + moveq r0, #0 + mvnne r0, #0x3e8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F2B94: .word 0xFFFFFC16 + arm_func_end Nhttpi_SocSend + + arm_func_start Nhttpi_SocCancel +Nhttpi_SocCancel: ; 0x022F2B98 + stmdb sp!, {r3, lr} + cmp r1, #0 + ldmltia sp!, {r3, pc} + mov r0, r1 + mov r1, #2 + bl Soc_Shutdown + ldmia sp!, {r3, pc} + arm_func_end Nhttpi_SocCancel + + arm_func_start Nhttpi_Strcmp +Nhttpi_Strcmp: ; 0x022F2BB4 + ldr ip, _022F2BBC ; =Std_CompareString__020852CC + bx ip + .align 2, 0 +_022F2BBC: .word Std_CompareString__020852CC + arm_func_end Nhttpi_Strcmp + + arm_func_start Nhttpi_Strnicmp +Nhttpi_Strnicmp: ; 0x022F2BC0 + cmp r2, #0 + ble _022F2C20 +_022F2BC8: + ldrsb ip, [r0], #1 + ldrsb r3, [r1], #1 + cmp ip, #0 + cmpne r3, #0 + bne _022F2BEC + cmp ip, #0 + cmpeq r3, #0 + moveq r2, #0 + b _022F2C20 +_022F2BEC: + cmp r3, #0x41 + blt _022F2BFC + cmp r3, #0x5a + addle r3, r3, #0x20 +_022F2BFC: + cmp ip, #0x41 + blt _022F2C0C + cmp ip, #0x5a + addle ip, ip, #0x20 +_022F2C0C: + cmp ip, r3 + bne _022F2C20 + sub r2, r2, #1 + cmp r2, #0 + bgt _022F2BC8 +_022F2C20: + mov r0, r2 + bx lr + arm_func_end Nhttpi_Strnicmp + + arm_func_start Nhttpi_Strlen +Nhttpi_Strlen: ; 0x022F2C28 + ldr ip, _022F2C30 ; =Std_GetStringLength + bx ip + .align 2, 0 +_022F2C30: .word Std_GetStringLength + arm_func_end Nhttpi_Strlen + + arm_func_start Nhttpi_Memclr +Nhttpi_Memclr: ; 0x022F2C34 + ldr ip, _022F2C44 ; =MI_CpuFill8 + mov r2, r1 + mov r1, #0 + bx ip + .align 2, 0 +_022F2C44: .word MI_CpuFill8 + arm_func_end Nhttpi_Memclr + + arm_func_start Nhttpi_Memcpy +Nhttpi_Memcpy: ; 0x022F2C48 + ldr ip, _022F2C5C ; =MI_CpuCopy8 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx ip + .align 2, 0 +_022F2C5C: .word MI_CpuCopy8 + arm_func_end Nhttpi_Memcpy + + arm_func_start SaveBuf +SaveBuf: ; 0x022F2C60 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r5, [sp, #0x28] + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + cmp r5, #0 + ble _022F2D08 + ldr r4, _022F2D10 ; =ov00_02328388 + mov fp, #0 +_022F2C88: + ldr r0, [sl, #4] + cmp r0, #0 + mvnne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r8] + mov r1, r7 + rsb r6, r0, #0x400 + cmp r5, r6 + movle r6, r5 + mov r2, r6 + add r0, r4, r0 + bl Nhttpi_Memcpy + ldr r0, [r8] + add r7, r7, r6 + add r0, r0, r6 + str r0, [r8] + cmp r0, #0x400 + sub r5, r5, r6 + bne _022F2D00 + mov r0, sl + mov r1, sb + mov r2, r4 + mov r3, #0x400 + str fp, [sp] + bl Nhttpi_SocSend + cmp r0, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r8] + sub r0, r1, r0 + str r0, [r8] +_022F2D00: + cmp r5, #0 + bgt _022F2C88 +_022F2D08: + ldr r0, [sp, #0x28] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F2D10: .word ov00_02328388 + arm_func_end SaveBuf + + arm_func_start SkipLineBuf +SkipLineBuf: ; 0x022F2D14 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r8, #0 + mov sl, r0 + mov sb, r1 + mov r7, r8 + strb r8, [sp, #4] + strb r8, [sp, #5] + mov r6, r8 + mov r5, #1 + add r4, sp, #4 + b _022F2D70 +_022F2D44: + mov r0, sl + mov r1, sb + mov r3, r5 + add r2, r4, r2 + str r6, [sp] + bl Nhttpi_SocRecv + cmp r0, #0 + addle sp, sp, #8 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r8, r8, r0 + add r7, r7, #1 +_022F2D70: + and r2, r7, #1 + ldrsb r0, [r4, r2] + cmp r0, #0xd + bne _022F2D44 + sub r0, r7, #1 + and r0, r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #0xa + bne _022F2D44 + mov r0, r8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end SkipLineBuf + + arm_func_start FreeSslConnection +FreeSslConnection: ; 0x022F2DA0 + stmdb sp!, {r4, lr} + movs r4, r0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x800] + cmp r0, #0 + beq _022F2DC4 + ldr r1, _022F2DD8 ; =ov00_0232794C + ldr r1, [r1] + blx r1 +_022F2DC4: + ldr r1, _022F2DD8 ; =ov00_0232794C + mov r0, r4 + ldr r1, [r1] + blx r1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F2DD8: .word ov00_0232794C + arm_func_end FreeSslConnection + + arm_func_start PutSocketToCloseQue +PutSocketToCloseQue: ; 0x022F2DDC + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _022F2E70 ; =ov00_02328340 + mov r6, r0 + ldmia r2, {r0, r2} + add r0, r0, #1 + and r4, r0, #7 + mov r5, r1 + cmp r4, r2 + bne _022F2E38 + ldr r1, _022F2E74 ; =ov00_02328348 + mov r0, #0 + ldr r1, [r1, r2, lsl #3] + bl Nhttpi_SocCloseWait + ldr r0, _022F2E70 ; =ov00_02328340 + ldr r1, _022F2E78 ; =ov00_0232834C + ldr r0, [r0, #4] + ldr r0, [r1, r0, lsl #3] + bl FreeSslConnection + ldr r0, _022F2E70 ; =ov00_02328340 + ldr r1, [r0, #4] + add r1, r1, #1 + and r1, r1, #7 + str r1, [r0, #4] +_022F2E38: + ldr r0, [r5] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _022F2E70 ; =ov00_02328340 + ldr r1, _022F2E74 ; =ov00_02328348 + ldr ip, [r0] + ldr r2, _022F2E78 ; =ov00_0232834C + str r6, [r1, ip, lsl #3] + ldr r3, [r5] + mov r1, #0 + str r3, [r2, ip, lsl #3] + str r1, [r5] + str r4, [r0] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F2E70: .word ov00_02328340 +_022F2E74: .word ov00_02328348 +_022F2E78: .word ov00_0232834C + arm_func_end PutSocketToCloseQue + + arm_func_start ClearCloseQue +ClearCloseQue: ; 0x022F2E7C + stmdb sp!, {r4, r5, r6, lr} + ldr r6, _022F2ED4 ; =ov00_02328340 + ldmia r6, {r0, r1} + cmp r0, r1 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, _022F2ED8 ; =ov00_02328348 + mov r5, #0 +_022F2E98: + ldr r1, [r4, r1, lsl #3] + mov r0, r5 + bl Nhttpi_SocCloseWait + ldr r0, [r6, #4] + add r0, r4, r0, lsl #3 + ldr r0, [r0, #4] + bl FreeSslConnection + ldr r0, [r6, #4] + add r0, r0, #1 + and r1, r0, #7 + str r1, [r6, #4] + ldr r0, [r6] + cmp r0, r1 + bne _022F2E98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F2ED4: .word ov00_02328340 +_022F2ED8: .word ov00_02328348 + arm_func_end ClearCloseQue + + arm_func_start Nhttpi_CommThreadProc +Nhttpi_CommThreadProc: ; 0x022F2EDC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x4c + ldr r2, _022F3DFC ; =ov00_02328340 + mov r0, #0 + str r0, [sp, #0x3c] + str r0, [r2] + ldr r1, _022F3E00 ; =ov00_02327954 + mvn r6, #0 + str r0, [r2, #4] + ldr r1, [r1] + str r0, [sp, #0x10] + str r6, [sp, #0x18] + str r6, [sp, #0x14] + str r0, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + bne _022F41AC +_022F2F20: + bl Nhttpi_LockReqList + bl Nhttpi_GetReqFromReqQueue + cmp r0, #0 + mvneq r4, #0 + beq _022F2F44 + ldr r4, [r0, #8] + ldr r8, [r0, #0xc] + ldr r1, _022F3E04 ; =ov00_02327950 + str r0, [r1] +_022F2F44: + bl Nhttpi_UnlockReqList + cmp r4, #0 + bge _022F2F58 + bl Nhttpi_IdleCommThread + b _022F419C +_022F2F58: + ldr r0, [r8, #4] + ldr sb, [r8, #0x30] + cmp r0, #0 + bne _022F40CC + mov r0, r8 + bl Nhttpi_ResolveHostname + str r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #4 + streq r0, [sp, #4] + beq _022F40CC + mov r1, r0 + ldr r0, [sp, #0x18] + mov r2, #0 + cmp r1, r0 + ldreq r1, [r8, #0x28] + ldreq r0, [sp, #0x14] + add r5, sp, #0x38 + cmpeq r1, r0 + ldreq r1, [r8, #8] + ldreq r0, [sp, #0xc] + add r4, sp, #0x40 + cmpeq r1, r0 + ldr r0, [r8, #0x28] + moveq r2, #1 + str r0, [sp, #0x14] + ldr r0, [r8, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x18] + ldr r0, [sp, #8] + and r0, r0, r2 + str r0, [sp, #8] + mvn r0, #0 + str r0, [sp, #0x20] +_022F2FE4: + mov r0, #0 + cmp r6, #0 + str r0, [sp, #4] + blt _022F3034 + mov r0, #9 + strh r0, [sp, #0x2c] + ldr r2, _022F3E08 ; =0x0000CC8D + add r0, sp, #0x28 + mov r1, #1 + mov r3, #0 + str r6, [sp, #0x28] + bl Soc_Poll + cmp r0, #0 + movle r0, #0 + strle r0, [sp, #8] + ble _022F3034 + ldrsh r0, [sp, #0x2e] + tst r0, #0xe0 + movne r0, #0 + strne r0, [sp, #8] +_022F3034: + ldr r0, [sp, #8] + cmp r0, #0 + bne _022F30FC + cmp r6, #0 + blt _022F307C + mov r0, r8 + mov r1, r6 + bl Nhttpi_SocClose + cmp r0, #0 + movlt r0, #0xa + strlt r0, [sp, #4] + mov r0, r6 + add r1, sp, #0x3c + bl PutSocketToCloseQue + ldr r0, [sp, #4] + ldr r6, [sp, #0x20] + cmp r0, #0 + bne _022F40CC +_022F307C: + mov r0, r8 + bl Nhttpi_SocOpen + movs r6, r0 + movmi r0, #3 + strmi r0, [sp, #4] + bmi _022F40CC + ldr r0, [r8, #8] + cmp r0, #0 + beq _022F30B0 + ldr r0, [r8, #0x20] + str r0, [sp, #0x3c] + mov r0, #0 + str r0, [r8, #0x20] +_022F30B0: + bl Nhttpi_LockReqList + ldr r0, _022F3E04 ; =ov00_02327950 + ldr r0, [r0] + str r6, [r0, #0x10] + bl Nhttpi_UnlockReqList + ldr r0, [r8, #4] + cmp r0, #0 + bne _022F40CC + ldr r2, [sp, #0x1c] + ldr r3, [r8, #0x28] + mov r0, r8 + mov r1, r6 + bl Nhttpi_SocConnect + cmp r0, #0 + movge r0, #1 + strge r0, [sp, #8] + movlt r0, #0 + strlt r0, [sp, #8] + b _022F3130 +_022F30FC: + ldr r0, [r8, #8] + cmp r0, #0 + beq _022F3118 + ldr r0, [r8, #0x20] + bl FreeSslConnection + mov r0, #0 + str r0, [r8, #0x20] +_022F3118: + bl Nhttpi_SetSslseed + bl Nhttpi_LockReqList + ldr r0, _022F3E04 ; =ov00_02327950 + ldr r0, [r0] + str r6, [r0, #0x10] + bl Nhttpi_UnlockReqList +_022F3130: + ldr r0, [r8, #4] + cmp r0, #0 + bne _022F40CC + ldr r0, [sp, #8] + cmp r0, #0 + moveq r0, #5 + streq r0, [sp, #4] + beq _022F40CC + mov r0, #0 + str r0, [sp, #0x38] + str r0, [sp, #8] + ldr r0, [r8, #0x24] + bl Nhttpi_Strlen + mov r7, r0 + mov r0, #0xa + str r0, [sp, #4] + ldr r0, [r8, #0x40] + cmp r0, #0 + beq _022F3190 + cmp r0, #1 + beq _022F31BC + cmp r0, #2 + beq _022F31E8 + b _022F3210 +_022F3190: + mov r0, #4 + str r0, [sp] + ldr r3, _022F3E0C ; =ov00_0231A630 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + b _022F3210 +_022F31BC: + mov r0, #5 + str r0, [sp] + ldr r3, _022F3E10 ; =ov00_0231A638 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + b _022F3210 +_022F31E8: + mov r0, #5 + str r0, [sp] + ldr r3, _022F3E14 ; =ov00_0231A640 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F3210: + ldr sl, [r8, #0x10] + cmp r7, sl + ble _022F3250 + subs r0, r7, sl + beq _022F3278 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + ldr r3, [r8, #0x24] + add r3, r3, sl + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + b _022F3278 +_022F3250: + mov r0, #1 + str r0, [sp] + ldr r3, _022F3E18 ; =ov00_0231A648 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F3278: + mov r0, #0xb + str r0, [sp] + ldr r3, _022F3E1C ; =ov00_0231A64C + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r8, #8] + ldr r3, _022F3E20 ; =ov00_0231A658 + cmp r0, #0 + movne r0, #8 + moveq r0, #7 + str r0, [sp, #0x34] + mov r0, #6 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r7, [sp, #0x34] + ldr r0, [r8, #0xc] + subs r0, r0, r7 + beq _022F3314 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + ldr r3, [r8, #0x24] + add r3, r3, r7 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F3314: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + add r0, r8, #0x34 + bl Nhttpi_GetHdrFromList + movs r7, r0 + beq _022F3424 +_022F334C: + ldr r0, [r7, #8] + bl Nhttpi_Strlen + cmp r0, #0 + beq _022F3380 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + ldr r3, [r7, #8] + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F3380: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E28 ; =ov00_0231A664 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r7, #0xc] + bl Nhttpi_Strlen + cmp r0, #0 + beq _022F33DC + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + ldr r3, [r7, #0xc] + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F33DC: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r1, _022F3E2C ; =ov00_0232794C + mov r0, r7 + ldr r1, [r1] + blx r1 + add r0, r8, #0x34 + bl Nhttpi_GetHdrFromList + movs r7, r0 + bne _022F334C +_022F3424: + ldr r0, [r8, #0x40] + cmp r0, #1 + bne _022F3644 + ldr sl, [r8, #0x38] + mov r7, #0 + mov r0, r7 + str r0, [sp, #0x10] + cmp sl, #0 + mov r1, sl + beq _022F3474 +_022F344C: + ldr r0, [r1, #0x14] + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x10] + bne _022F3474 + ldr r0, [sl] + cmp r1, r0 + ldrne r1, [r1, #4] + cmpne r1, #0 + bne _022F344C +_022F3474: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _022F3550 + cmp sl, #0 + beq _022F34D0 +_022F3488: + ldr r0, [sl, #8] + add r7, r7, #0x16 + bl Nhttpi_Strlen + add r0, r0, #0x29 + add r7, r7, r0 + ldr r0, [sl, #0x14] + ldr r1, [sl, #0x10] + cmp r0, #0 + ldr r0, [r8, #0x38] + addne r7, r7, #0x4b + ldr r0, [r0] + add r2, r7, #2 + cmp sl, r0 + ldrne sl, [sl, #4] + add r1, r2, r1 + add r7, r1, #2 + cmpne sl, #0 + bne _022F3488 +_022F34D0: + mov r0, #0x2c + str r0, [sp] + ldr r3, _022F3E30 ; =ov00_0231A668 + mov r0, r8 + mov r1, r6 + mov r2, r5 + add r7, r7, #0x18 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + mov r0, #0x12 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + add r3, r8, #0x46 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + b _022F35B8 +_022F3550: + cmp sl, #0 + beq _022F3590 +_022F3558: + ldr r0, [sl, #8] + bl Nhttpi_GetUrlEncodedSize + add r0, r7, r0 + add r7, r0, #1 + ldr r0, [sl, #0xc] + bl Nhttpi_GetUrlEncodedSize + add r7, r7, r0 + ldr r0, [r8, #0x38] + ldr r0, [r0] + cmp sl, r0 + ldrne sl, [sl, #4] + addne r7, r7, #1 + cmpne sl, #0 + bne _022F3558 +_022F3590: + mov r0, #0x31 + str r0, [sp] + ldr r3, _022F3E34 ; =ov00_0231A698 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F35B8: + mov r0, #0x10 + str r0, [sp] + ldr r3, _022F3E38 ; =ov00_0231A6CC + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + mov r1, r7 + mov r0, r4 + bl Nhttpi_IntToStr + str r0, [sp, #0x34] + cmp r0, #0 + beq _022F361C + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F361C: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F3644: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r8, #0x40] + cmp r0, #1 + bne _022F39C4 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _022F3884 + ldr r7, [r8, #0x38] + cmp r7, #0 + beq _022F3830 +_022F3690: + mov r0, #0x14 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + add r3, r8, #0x44 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + mov r0, #0x26 + str r0, [sp] + ldr r3, _022F3E3C ; =ov00_023183BC + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r7, #8] + bl Nhttpi_Strlen + cmp r0, #0 + beq _022F373C + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + ldr r3, [r7, #8] + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F373C: + mov r0, #3 + str r0, [sp] + ldr r3, _022F3E40 ; =ov00_0231A6E0 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _022F3798 + mov r0, #0x4b + str r0, [sp] + ldr r3, _022F3E44 ; =ov00_023183E4 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F3798: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r7, #0x10] + cmp r0, #0 + beq _022F37F0 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + ldr r3, [r7, #0xc] + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F37F0: + mov r0, #2 + str r0, [sp] + ldr r3, _022F3E24 ; =ov00_0231A660 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r0, [r8, #0x38] + ldr r0, [r0] + cmp r7, r0 + ldrne r7, [r7, #4] + cmpne r7, #0 + bne _022F3690 +_022F3830: + mov r0, #0x14 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + add r3, r8, #0x44 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + mov r0, #4 + str r0, [sp] + ldr r3, _022F3E48 ; =ov00_0231A6E4 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + b _022F39C4 +_022F3884: + ldr sl, [r8, #0x38] + cmp sl, #0 + beq _022F39C4 +_022F3890: + ldr r1, [sl, #8] + mov r7, #0 + ldrsb r0, [r1] + cmp r0, #0 + beq _022F38F4 +_022F38A4: + ldrsb r1, [r1, r7] + mov r0, r4 + bl Nhttpi_EncodeUrlChar + str r0, [sp, #0x34] + cmp r0, #0 + beq _022F38E0 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F38E0: + add r7, r7, #1 + ldr r1, [sl, #8] + ldrsb r0, [r1, r7] + cmp r0, #0 + bne _022F38A4 +_022F38F4: + mov r0, #1 + str r0, [sp] + ldr r3, _022F3E4C ; =ov00_0231A6EC + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr r1, [sl, #0xc] + mov r7, #0 + ldrsb r0, [r1] + cmp r0, #0 + beq _022F3980 +_022F3930: + ldrsb r1, [r1, r7] + mov r0, r4 + bl Nhttpi_EncodeUrlChar + str r0, [sp, #0x34] + cmp r0, #0 + beq _022F396C + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F396C: + add r7, r7, #1 + ldr r1, [sl, #0xc] + ldrsb r0, [r1, r7] + cmp r0, #0 + bne _022F3930 +_022F3980: + ldr r0, [r8, #0x38] + ldr r0, [r0] + cmp sl, r0 + beq _022F39C4 + mov r0, #1 + str r0, [sp] + ldr r3, _022F3E50 ; =ov00_0231A6F0 + mov r0, r8 + mov r1, r6 + mov r2, r5 + bl SaveBuf + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 + ldr sl, [sl, #4] + cmp sl, #0 + bne _022F3890 +_022F39C4: + ldr r3, [sp, #0x38] + cmp r3, #0 + ble _022F39F4 + mov r0, #0 + str r0, [sp] + ldr r2, _022F3E54 ; =ov00_02328388 + mov r0, r8 + mov r1, r6 + bl Nhttpi_SocSend + cmp r0, #0 + blt _022F40CC + beq _022F2FE4 +_022F39F4: + mov r0, #0 + str r0, [sb] + strb r0, [sp, #0x40] + strb r0, [sp, #0x41] + mov r1, #7 + strb r0, [sp, #0x42] + strb r0, [sp, #0x43] + ldr r5, [sb, #0x1c] + str r1, [sp, #4] + str r0, [sp, #0x38] + add sl, sb, #0x20 + add r4, sp, #0x40 +_022F3A24: + ldr r1, [r8, #4] + cmp r1, #0 + bne _022F40CC + cmp r0, #0x400 + bge _022F3A6C + add r2, sl, r0 + mov r0, #0 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r3, #1 + bl Nhttpi_SocRecv + ldr r3, [sp, #0x38] + add r1, sb, r3 + ldrsb r2, [r1, #0x20] + and r1, r3, #3 + strb r2, [r4, r1] + b _022F3B00 +_022F3A6C: + ldr r1, _022F3E58 ; =0x000001FF + ands r7, r0, r1 + bne _022F3ACC + cmp r5, #0 + mov r0, #0x204 + mov r1, #4 + beq _022F3AA0 + ldr r2, _022F3E5C ; =ov00_02327948 + ldr r2, [r2] + blx r2 + str r0, [r5] + mov r5, r0 + b _022F3AB4 +_022F3AA0: + ldr r2, _022F3E5C ; =ov00_02327948 + ldr r2, [r2] + blx r2 + mov r5, r0 + str r5, [sb, #0x1c] +_022F3AB4: + cmp r5, #0 + moveq r0, #1 + streq r0, [sp, #4] + beq _022F40CC + mov r0, #0 + str r0, [r5] +_022F3ACC: + mov r0, #0 + add r2, r5, #4 + str r0, [sp] + mov r0, r8 + mov r1, r6 + add r2, r2, r7 + mov r3, #1 + bl Nhttpi_SocRecv + add r1, r5, r7 + ldrsb r2, [r1, #4] + ldr r1, [sp, #0x38] + and r1, r1, #3 + strb r2, [r4, r1] +_022F3B00: + cmp r0, #0 + movle r0, #0xa + strle r0, [sp, #4] + ble _022F40CC + ldr r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + sub r1, r0, #4 + and r1, r1, #3 + ldrsb r1, [r4, r1] + cmp r1, #0xd + bne _022F3A24 + sub r1, r0, #3 + and r1, r1, #3 + ldrsb r1, [r4, r1] + cmp r1, #0xa + bne _022F3A24 + sub r1, r0, #2 + and r1, r1, #3 + ldrsb r1, [r4, r1] + cmp r1, #0xd + bne _022F3A24 + sub r1, r0, #1 + and r1, r1, #3 + ldrsb r1, [r4, r1] + cmp r1, #0xa + bne _022F3A24 + str r0, [sb] + ldr r0, [sb] + cmp r0, #0 + beq _022F40CC + ldr r1, _022F3E54 ; =ov00_02328388 + mov r0, sb + mov r2, #0 + mov r3, #0xe + bl Nhttpi_LoadFromHdrRecvBuf + cmp r0, #0 + beq _022F40CC + ldr r0, _022F3E54 ; =ov00_02328388 + ldr r1, _022F3E60 ; =ov00_0231A6F4 + mov r2, #5 + bl Nhttpi_Strnicmp + cmp r0, #0 + ldreq r0, _022F3E54 ; =ov00_02328388 + ldreqsb r0, [r0, #8] + cmpeq r0, #0x20 + bne _022F40CC + ldr r0, _022F3E64 ; =ov00_02328391 + mov r1, #3 + bl Nhttpi_StrToInt + cmp r0, #0 + blt _022F40CC + ldr r2, [sb] + add r3, sp, #0x30 + mov r0, sb + mov r1, #0xc + bl Nhttpi_FindNextLineHdrRecvBuf + cmp r0, #0 + blt _022F40CC + ldr r1, _022F3E68 ; =ov00_0231A6FC + add r2, sp, #0x34 + mov r0, sb + bl Nhttpi_GetHeaderValue + movs r5, r0 + moveq r0, #0 + streq r0, [sp, #4] + beq _022F40CC + cmp r5, #0x400 + bgt _022F40CC + cmp r5, #0 + ble _022F3C54 + ldr r2, [sp, #0x34] + ldr r1, _022F3E54 ; =ov00_02328388 + mov r0, sb + mov r3, r5 + bl Nhttpi_LoadFromHdrRecvBuf + cmp r0, #0 + beq _022F40CC + ldr r0, _022F3E54 ; =ov00_02328388 + mov r1, r5 + bl Nhttpi_StrToInt + movs r5, r0 + bmi _022F40CC + str r5, [r8, #0x14] + b _022F3C5C +_022F3C54: + mvn r0, #0 + str r0, [r8, #0x14] +_022F3C5C: + ldr r1, _022F3E6C ; =ov00_0231A70C + add r2, sp, #0x34 + mov r0, sb + bl Nhttpi_GetHeaderValue + str r0, [sp, #8] + cmp r0, #0 + beq _022F40CC + bge _022F3CBC + ldr r0, _022F3E54 ; =ov00_02328388 + mov r2, #0 + ldrsb r1, [r0, #5] + ldrsb r3, [r0, #7] + add r0, sp, #0x24 + strb r1, [sp, #0x24] + mov r1, #2 + strb r3, [sp, #0x25] + strb r2, [sp, #0x26] + bl Nhttpi_StrToInt + cmp r0, #0xb + movge r0, #1 + strge r0, [sp, #8] + movlt r0, #0 + strlt r0, [sp, #8] + b _022F3CFC +_022F3CBC: + cmp r0, #0x400 + mov r0, #0 + strgt r0, [sp, #8] + bgt _022F3CFC + ldr r1, [sp, #0x34] + ldr r2, [sp, #8] + str r0, [sp] + ldr r3, _022F3E70 ; =ov00_0231A718 + mov r0, sb + add r2, r1, r2 + bl Nhttpi_CompareTokenN_HdrRecvBuf + cmp r0, #0 + moveq r0, #1 + streq r0, [sp, #8] + movne r0, #0 + strne r0, [sp, #8] +_022F3CFC: + ldr r1, _022F3E74 ; =ov00_0231A724 + add r2, sp, #0x34 + mov r0, sb + bl Nhttpi_GetHeaderValue + cmp r0, #0 + beq _022F40CC + cmp r0, #0x400 + movgt r1, #0 + bgt _022F3D58 + cmp r0, #0 + ble _022F3D54 + ldr r1, [sp, #0x34] + ldr r3, _022F3E78 ; =ov00_0231A738 + add r2, r1, r0 + mov r0, #0x3b + str r0, [sp] + mov r0, sb + bl Nhttpi_CompareTokenN_HdrRecvBuf + cmp r0, #0 + moveq r1, #1 + movne r1, #0 + b _022F3D58 +_022F3D54: + mov r1, #0 +_022F3D58: + ldr r0, [r8, #0x40] + cmp r0, #2 + beq _022F40CC + cmp r5, #0 + blt _022F3E7C + mov r4, #0 + b _022F3DA8 +_022F3D74: + str r4, [sp] + ldr r2, [sb, #4] + mov r0, r8 + mov r1, r6 + mov r3, r5 + bl Nhttpi_RecvBufN + cmp r0, #0 + blt _022F40CC + beq _022F3DC4 + ldr r1, [sb, #4] + sub r5, r5, r0 + add r0, r1, r0 + str r0, [sb, #4] +_022F3DA8: + cmp r5, #0 + ble _022F3DC4 + ldr r1, [sb, #4] + mov r0, sb + bl Nhttpi_IsRecvBufFull + cmp r0, #0 + beq _022F3D74 +_022F3DC4: + cmp r5, #0 + beq _022F3DF0 + ldr r1, [sb, #4] + mov r0, sb + bl Nhttpi_IsRecvBufFull + cmp r0, #0 + movne r0, #6 + strne r0, [sp, #4] + moveq r0, #0xa + streq r0, [sp, #4] + b _022F40CC +_022F3DF0: + mov r0, #0 + str r0, [sp, #4] + b _022F40CC + .align 2, 0 +_022F3DFC: .word ov00_02328340 +_022F3E00: .word ov00_02327954 +_022F3E04: .word ov00_02327950 +_022F3E08: .word 0x0000CC8D +_022F3E0C: .word ov00_0231A630 +_022F3E10: .word ov00_0231A638 +_022F3E14: .word ov00_0231A640 +_022F3E18: .word ov00_0231A648 +_022F3E1C: .word ov00_0231A64C +_022F3E20: .word ov00_0231A658 +_022F3E24: .word ov00_0231A660 +_022F3E28: .word ov00_0231A664 +_022F3E2C: .word ov00_0232794C +_022F3E30: .word ov00_0231A668 +_022F3E34: .word ov00_0231A698 +_022F3E38: .word ov00_0231A6CC +_022F3E3C: .word ov00_023183BC +_022F3E40: .word ov00_0231A6E0 +_022F3E44: .word ov00_023183E4 +_022F3E48: .word ov00_0231A6E4 +_022F3E4C: .word ov00_0231A6EC +_022F3E50: .word ov00_0231A6F0 +_022F3E54: .word ov00_02328388 +_022F3E58: .word 0x000001FF +_022F3E5C: .word ov00_02327948 +_022F3E60: .word ov00_0231A6F4 +_022F3E64: .word ov00_02328391 +_022F3E68: .word ov00_0231A6FC +_022F3E6C: .word ov00_0231A70C +_022F3E70: .word ov00_0231A718 +_022F3E74: .word ov00_0231A724 +_022F3E78: .word ov00_0231A738 +_022F3E7C: + mov r0, #0xa + cmp r1, #0 + str r0, [sp, #4] + beq _022F4020 + mov r7, #0 + ldr r5, _022F3E54 ; =ov00_02328388 + add r4, sp, #0x40 + mov sl, r7 +_022F3E9C: + mov r0, #0 + strb r0, [sp, #0x40] + strb r0, [sp, #0x41] + str r0, [sp, #0x38] +_022F3EAC: + str r7, [sp] + ldr r2, [sp, #0x38] + mov r0, r8 + mov r1, r6 + mov r3, #1 + add r2, r5, r2 + bl Nhttpi_SocRecv + cmp r0, #0 + blt _022F40CC + ldr r1, [sp, #0x38] + ldrsb r0, [r5, r1] + and r2, r1, #1 + strb r0, [r4, r2] + cmp r0, #0x3b + beq _022F3F04 + cmp r0, #0xa + bne _022F3F4C + sub r2, r1, #1 + and r2, r2, #1 + ldrsb r2, [r4, r2] + cmp r2, #0xd + bne _022F3F4C +_022F3F04: + cmp r0, #0xa + subeq r0, r1, #1 + streq r0, [sp, #0x34] + beq _022F3F2C + str r1, [sp, #0x34] + mov r0, r8 + mov r1, r6 + bl SkipLineBuf + cmp r0, #0 + ble _022F40CC +_022F3F2C: + ldr r1, [sp, #0x34] + cmp r1, #0 + beq _022F40CC + mov r0, r5 + bl Nhttpi_StrToHex + movs fp, r0 + bmi _022F40CC + b _022F3F60 +_022F3F4C: + ldr r0, [sp, #0x38] + add r0, r0, #1 + str r0, [sp, #0x38] + cmp r0, #0x400 + blt _022F3EAC +_022F3F60: + ldr r0, [sp, #0x38] + cmp r0, #0x400 + moveq r0, #7 + streq r0, [sp, #4] + beq _022F40CC + cmp fp, #0 + ble _022F4008 + ble _022F3E9C +_022F3F80: + str sl, [sp] + mov r0, r8 + mov r1, r6 + ldr r2, [sb, #4] + mov r3, fp + bl Nhttpi_RecvBufN + cmp r0, #0 + ble _022F40CC + ldr r1, [sb, #4] + subs fp, fp, r0 + add r0, r1, r0 + str r0, [sb, #4] + bne _022F3FFC + mov r0, #0 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, #1 + bl Nhttpi_SocRecv + cmp r0, #0 + ble _022F40CC + mov r0, #0 + str r0, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, #1 + bl Nhttpi_SocRecv + cmp r0, #0 + ble _022F40CC +_022F3FFC: + cmp fp, #0 + bgt _022F3F80 + b _022F3E9C +_022F4008: + mov r0, r8 + mov r1, r6 + bl SkipLineBuf + mov r0, #0 + str r0, [sp, #4] + b _022F40CC +_022F4020: + ldr r1, [sb, #4] + mov r0, sb + bl Nhttpi_IsRecvBufFull + cmp r0, #0 + bne _022F40CC + mov r5, #0 + ldr r4, _022F3E54 ; =ov00_02328388 + mov sl, #1 + mov r7, r5 +_022F4044: + mov r0, r8 + mov r1, r6 + ldr r2, [sb, #4] + mov r3, r7 + bl Nhttpi_RecvBuf + cmp r0, #0 + blt _022F40CC + moveq r0, #0 + streq r0, [sp, #4] + beq _022F40CC + ldr r1, [sb, #4] + add r0, r1, r0 + str r0, [sb, #4] + mov r0, sb + ldr r1, [sb, #4] + bl Nhttpi_IsRecvBufFull + cmp r0, #0 + beq _022F40B8 + str r5, [sp] + mov r0, r8 + mov r1, r6 + mov r2, r4 + mov r3, sl + bl Nhttpi_SocRecv + cmp r0, #0 + blt _022F40CC + movne r0, #6 + strne r0, [sp, #4] + bne _022F40CC +_022F40B8: + mov r0, sb + ldr r1, [sb, #4] + bl Nhttpi_IsRecvBufFull + cmp r0, #0 + beq _022F4044 +_022F40CC: + bl Nhttpi_LockReqList + ldr r0, _022F3E04 ; =ov00_02327950 + ldr r1, _022F3E2C ; =ov00_0232794C + ldr r0, [r0] + ldr r1, [r1] + blx r1 + ldr r0, _022F3E04 ; =ov00_02327950 + mov r1, #0 + str r1, [r0] + bl Nhttpi_UnlockReqList + ldr r0, [r8, #4] + cmp r0, #0 + movne r0, #8 + strne r0, [sp, #4] + cmp r6, #0 + blt _022F4154 + ldr r0, [sp, #8] + cmp r0, #0 + beq _022F4124 + ldr r0, [sp, #4] + cmp r0, #0 + beq _022F4154 +_022F4124: + mov r0, r8 + mov r1, r6 + bl Nhttpi_SocClose + cmp r0, #0 + movlt r0, #0xa + strlt r0, [sp, #4] + add r1, sp, #0x3c + mov r0, r6 + bl PutSocketToCloseQue + mov r0, #0 + mvn r6, #0 + str r0, [sp, #8] +_022F4154: + ldr r0, [sp, #4] + cmp r0, #0 + moveq r0, #1 + streq r0, [sb, #8] + beq _022F417C + mov r0, #0 + str r0, [sb, #8] + ldr r1, _022F41D8 ; =ov00_02327944 + ldr r0, [sp, #4] + str r0, [r1] +_022F417C: + ldr r4, [r8, #0x2c] + mov r0, r8 + ldr r5, [r8, #0x3c] + bl Nhttpi_DestroyRequestObject + ldr r0, [sp, #4] + mov r1, sb + mov r2, r4 + blx r5 +_022F419C: + ldr r0, _022F3E00 ; =ov00_02327954 + ldr r0, [r0] + cmp r0, #0 + beq _022F2F20 +_022F41AC: + cmp r6, #0 + blt _022F41CC + mov r0, r8 + mov r1, r6 + bl Nhttpi_SocClose + add r1, sp, #0x3c + mov r0, r6 + bl PutSocketToCloseQue +_022F41CC: + bl ClearCloseQue + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F41D8: .word ov00_02327944 + arm_func_end Nhttpi_CommThreadProc + + arm_func_start Nhttpi_GetUrlEncodedSize +Nhttpi_GetUrlEncodedSize: ; 0x022F41DC + ldrsb r2, [r0], #1 + mov r1, #0 + cmp r2, #0 + beq _022F423C +_022F41EC: + cmp r2, #0x30 + blt _022F41FC + cmp r2, #0x39 + ble _022F4224 +_022F41FC: + cmp r2, #0x41 + blt _022F420C + cmp r2, #0x5a + ble _022F4224 +_022F420C: + cmp r2, #0x61 + blt _022F421C + cmp r2, #0x7a + ble _022F4224 +_022F421C: + cmp r2, #0x20 + bne _022F422C +_022F4224: + add r1, r1, #1 + b _022F4230 +_022F422C: + add r1, r1, #3 +_022F4230: + ldrsb r2, [r0], #1 + cmp r2, #0 + bne _022F41EC +_022F423C: + mov r0, r1 + bx lr + arm_func_end Nhttpi_GetUrlEncodedSize + + arm_func_start Nhttpi_EncodeUrlChar +Nhttpi_EncodeUrlChar: ; 0x022F4244 + cmp r1, #0x20 + bne _022F425C + mov r1, #0x2b + strb r1, [r0] + mov r0, #1 + bx lr +_022F425C: + cmp r1, #0x30 + blt _022F426C + cmp r1, #0x39 + ble _022F428C +_022F426C: + cmp r1, #0x41 + blt _022F427C + cmp r1, #0x5a + ble _022F428C +_022F427C: + cmp r1, #0x61 + blt _022F4298 + cmp r1, #0x7a + bgt _022F4298 +_022F428C: + strb r1, [r0] + mov r0, #1 + bx lr +_022F4298: + mov r2, r1, asr #4 + and r3, r2, #0xf + mov r2, #0x25 + strb r2, [r0] + cmp r3, #0xa + addlt r2, r3, #0x30 + addge r2, r3, #0x37 + and r1, r1, #0xf + cmp r1, #0xa + addlt r1, r1, #0x30 + strb r2, [r0, #1] + addge r1, r1, #0x37 + strb r1, [r0, #2] + mov r0, #3 + bx lr + arm_func_end Nhttpi_EncodeUrlChar + + arm_func_start Nhttpi_StrToHex +Nhttpi_StrToHex: ; 0x022F42D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + cmp r1, #8 + mvngt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + bne _022F42F8 + ldrsb r2, [r0] + cmp r2, #0x37 + mvngt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} +_022F42F8: + mov r5, #0 + mov r6, r5 + mov r7, r5 + cmp r1, #0 + ble _022F43B4 + mov lr, #1 + mov r3, lr + mov ip, lr + mov r4, r5 +_022F431C: + ldrsb r8, [r0, r5] + mov r2, r4 + cmp r8, #0x41 + blt _022F4334 + cmp r8, #0x5a + movle r2, lr +_022F4334: + cmp r2, #0 + addne r8, r8, #0x20 + mov r2, r8, lsl #0x18 + mov r2, r2, asr #0x18 + cmp r2, #0x30 + blt _022F4364 + cmp r2, #0x39 + bgt _022F4364 + add r2, r2, r6, lsl #4 + mov r7, ip + sub r6, r2, #0x30 + b _022F43A8 +_022F4364: + cmp r2, #0x61 + blt _022F4384 + cmp r2, #0x66 + bgt _022F4384 + add r2, r2, r6, lsl #4 + mov r7, r3 + sub r6, r2, #0x57 + b _022F43A8 +_022F4384: + cmp r7, #0 + beq _022F4398 + cmp r2, #0x20 + cmpne r2, #0 + beq _022F43B4 +_022F4398: + cmp r7, #0 + cmpeq r2, #0x20 + mvnne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_022F43A8: + add r5, r5, #1 + cmp r5, r1 + blt _022F431C +_022F43B4: + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end Nhttpi_StrToHex + + arm_func_start Nhttpi_StrToInt +Nhttpi_StrToInt: ; 0x022F43BC + stmdb sp!, {r3, r4, r5, lr} + cmp r1, #0xa + mvngt r0, #0 + ldmgtia sp!, {r3, r4, r5, pc} + mov lr, #0 + mov r4, lr + mov r3, lr + cmp r1, #0 + ble _022F444C + mov ip, #1 + mov r2, #0xa +_022F43E8: + cmp r3, #0 + ldrsb r5, [r0, lr] + beq _022F4400 + cmp r5, #0x20 + cmpne r5, #0 + beq _022F444C +_022F4400: + cmp r3, #0 + cmpeq r5, #0x20 + beq _022F4440 + cmp r5, #0x30 + blt _022F441C + cmp r5, #0x39 + ble _022F4424 +_022F441C: + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022F4424: + mla r3, r4, r2, r5 + mov r5, r4 + sub r4, r3, #0x30 + cmp r5, r4 + mov r3, ip + mvngt r0, #0 + ldmgtia sp!, {r3, r4, r5, pc} +_022F4440: + add lr, lr, #1 + cmp lr, r1 + blt _022F43E8 +_022F444C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Nhttpi_StrToInt + + arm_func_start Nhttpi_IntToStr +Nhttpi_IntToStr: ; 0x022F4454 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + ldr r6, _022F450C ; =ov00_02318430 + add r4, sp, #0 + mov sl, r0 + mov sb, r1 + ldmia r6!, {r0, r1, r2, r3} + mov r5, r4 + stmia r4!, {r0, r1, r2, r3} + ldmia r6!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + ldr r0, [r6] + mov r7, #0 + str r0, [r4] + mov r6, r7 + mov r1, r7 + mov fp, #1 + mov r4, #0x30 +_022F449C: + ldr r8, [r5, r6, lsl #2] + cmp sb, r8 + blo _022F44D4 + mov r0, sb + mov r1, r8 + bl _u32_div_f + mul r2, r0, r8 + cmp sl, #0 + addne r0, r0, #0x30 + strneb r0, [sl, r7] + mov r1, fp + sub sb, sb, r2 + add r7, r7, #1 + b _022F44E8 +_022F44D4: + cmp r1, #0 + beq _022F44E8 + cmp sl, #0 + strneb r4, [sl, r7] + add r7, r7, #1 +_022F44E8: + add r6, r6, #1 + cmp r6, #9 + blt _022F449C + cmp sl, #0 + addne r0, sb, #0x30 + strneb r0, [sl, r7] + add r0, r7, #1 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F450C: .word ov00_02318430 + arm_func_end Nhttpi_IntToStr + + arm_func_start Nhttpi_CompareToken +Nhttpi_CompareToken: ; 0x022F4510 + stmdb sp!, {r4, r5, r6, lr} + mov ip, #1 + mov r3, #0 + mov r2, ip + mov lr, r3 + b _022F4540 +_022F4528: + cmp r5, #0 + cmpne r5, #0x20 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r0, r0, #1 + add r1, r1, #1 +_022F4540: + ldrsb r6, [r1] + mov r4, lr + cmp r6, #0x41 + blt _022F4558 + cmp r6, #0x5a + movle r4, ip +_022F4558: + ldrsb r5, [r0] + cmp r4, #0 + addne r6, r6, #0x20 + mov r4, r3 + cmp r5, #0x41 + blt _022F4578 + cmp r5, #0x5a + movle r4, r2 +_022F4578: + cmp r4, #0 + addne r4, r5, #0x20 + moveq r4, r5 + cmp r4, r6 + beq _022F4528 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Nhttpi_CompareToken + + arm_func_start Nhttpi_StrToNum +Nhttpi_StrToNum: ; 0x022F4594 + stmdb sp!, {r3, lr} + mov ip, #0 + cmp r1, #0 + mov lr, ip + sub r1, r1, #1 + beq _022F45F4 + mov r2, #0xa +_022F45B0: + ldrsb r3, [r0] + cmp r3, #0x20 + beq _022F45E4 + cmp r3, #0x30 + blt _022F45E4 + cmp r3, #0x39 + bgt _022F45E4 + mla r3, lr, r2, r3 + add ip, ip, #1 + cmp ip, #9 + sub lr, r3, #0x30 + mvngt r0, #0 + ldmgtia sp!, {r3, pc} +_022F45E4: + cmp r1, #0 + add r0, r0, #1 + sub r1, r1, #1 + bne _022F45B0 +_022F45F4: + cmp ip, #0 + mvneq lr, #0 + mov r0, lr + ldmia sp!, {r3, pc} + arm_func_end Nhttpi_StrToNum + + arm_func_start Nhttpi_MemFind +Nhttpi_MemFind: ; 0x022F4604 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + cmp r1, r3 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + sub r1, r1, r3 + add r8, r1, #1 + cmp r8, #0 + mov r4, #0 + ble _022F4680 + ldrsb r7, [r2] + mov lr, #1 +_022F4630: + ldrsb r1, [r0, r4] + cmp r7, r1 + bne _022F4674 + mov r5, lr + cmp r3, #1 + add r6, r0, r4 + ble _022F4668 +_022F464C: + ldrsb ip, [r6, r5] + ldrsb r1, [r2, r5] + cmp ip, r1 + bne _022F4668 + add r5, r5, #1 + cmp r5, r3 + blt _022F464C +_022F4668: + cmp r5, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022F4674: + add r4, r4, #1 + cmp r4, r8 + blt _022F4630 +_022F4680: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end Nhttpi_MemFind + + arm_func_start FreeElement_Gsi +FreeElement_Gsi: ; 0x022F4688 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r2, [r4, #0x10] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + bl ArrayNth_Gsi + ldr r1, [r4, #0x10] + blx r1 + ldmia sp!, {r4, pc} + arm_func_end FreeElement_Gsi + + arm_func_start ArrayGrow_Gsi +ArrayGrow_Gsi: ; 0x022F46AC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + add r2, r1, r0 + str r2, [r4, #4] + ldr r0, [r4, #8] + mul r1, r2, r0 + ldr r0, [r4, #0x14] + bl gsirealloc + str r0, [r4, #0x14] + ldmia sp!, {r4, pc} + arm_func_end ArrayGrow_Gsi + + arm_func_start SetElement_Gsi +SetElement_Gsi: ; 0x022F46DC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r1, r2 + bl ArrayNth_Gsi + ldr r2, [r5, #8] + mov r1, r4 + bl memcpy + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SetElement_Gsi + + arm_func_start ArrayNew_Gsi +ArrayNew_Gsi: ; 0x022F4700 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0x18 + mov r5, r2 + bl gsimalloc + mov r4, r0 + cmp r6, #0 + moveq r6, #8 + mov r0, #0 + stmia r4, {r0, r6, r7} + str r6, [r4, #0xc] + str r5, [r4, #0x10] + ldr r1, [r4, #4] + cmp r1, #0 + beq _022F474C + ldr r0, [r4, #8] + mul r0, r1, r0 + bl gsimalloc +_022F474C: + str r0, [r4, #0x14] + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ArrayNew_Gsi + + arm_func_start ArrayFree_Gsi +ArrayFree_Gsi: ; 0x022F4758 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + mov r4, #0 + cmp r0, #0 + ble _022F478C +_022F4770: + mov r0, r5 + mov r1, r4 + bl FreeElement_Gsi + ldr r0, [r5] + add r4, r4, #1 + cmp r4, r0 + blt _022F4770 +_022F478C: + ldr r0, [r5, #0x14] + bl gsifree + mov r0, r5 + bl gsifree + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ArrayFree_Gsi + + arm_func_start ArrayLength_Gsi +ArrayLength_Gsi: ; 0x022F47A0 + ldr r0, [r0] + bx lr + arm_func_end ArrayLength_Gsi + + arm_func_start ArrayNth_Gsi +ArrayNth_Gsi: ; 0x022F47A8 + cmp r1, #0 + blt _022F47BC + ldr r2, [r0] + cmp r1, r2 + blt _022F47C4 +_022F47BC: + mov r0, #0 + bx lr +_022F47C4: + ldr r3, [r0, #0x14] + ldr r2, [r0, #8] + mla r0, r2, r1, r3 + bx lr + arm_func_end ArrayNth_Gsi + + arm_func_start ArrayAppend_Gsi +ArrayAppend_Gsi: ; 0x022F47D4 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r2, [r0] + bl ArrayInsertAt_Gsi + ldmia sp!, {r3, pc} + arm_func_end ArrayAppend_Gsi + + arm_func_start ArrayInsertAt_Gsi +ArrayInsertAt_Gsi: ; 0x022F47EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + ldr r7, [r6] + ldr r3, [r6, #4] + mov r5, r1 + mov r4, r2 + cmp r7, r3 + bne _022F4810 + bl ArrayGrow_Gsi +_022F4810: + ldr r0, [r6] + add r0, r0, #1 + sub r8, r0, #1 + str r0, [r6] + cmp r4, r8 + bge _022F485C + mov r0, r6 + add r1, r4, #1 + bl ArrayNth_Gsi + mov r7, r0 + mov r0, r6 + mov r1, r4 + bl ArrayNth_Gsi + mov r1, r0 + ldr r3, [r6, #8] + sub r0, r8, r4 + mul r2, r3, r0 + mov r0, r7 + bl memmove +_022F485C: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl SetElement_Gsi + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ArrayInsertAt_Gsi + + arm_func_start ArrayInsertSorted_Gsi +ArrayInsertSorted_Gsi: ; 0x022F4870 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r3, sp, #8 + stmia sp, {r2, r3} + mov r5, r0 + mov r4, r1 + ldr r1, [r5, #0x14] + ldr r2, [r5] + ldr r3, [r5, #8] + mov r0, r4 + bl mybsearch_gsi + ldr r2, [r5, #0x14] + ldr r1, [r5, #8] + sub r0, r0, r2 + bl _s32_div_f + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl ArrayInsertAt_Gsi + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + arm_func_end ArrayInsertSorted_Gsi + + arm_func_start ArrayRemoveAt_Gsi +ArrayRemoveAt_Gsi: ; 0x022F48C4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r2, [r4] + mov r7, r1 + sub r6, r2, #1 + cmp r7, r6 + bge _022F490C + bl ArrayNth_Gsi + mov r5, r0 + mov r0, r4 + add r1, r7, #1 + bl ArrayNth_Gsi + mov r1, r0 + ldr r3, [r4, #8] + sub r0, r6, r7 + mul r2, r3, r0 + mov r0, r5 + bl memmove +_022F490C: + ldr r0, [r4] + sub r0, r0, #1 + str r0, [r4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ArrayRemoveAt_Gsi + + arm_func_start ArrayDeleteAt_Gsi +ArrayDeleteAt_Gsi: ; 0x022F491C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl FreeElement_Gsi + mov r0, r5 + mov r1, r4 + bl ArrayRemoveAt_Gsi + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ArrayDeleteAt_Gsi + + arm_func_start ArrayReplaceAt_Gsi +ArrayReplaceAt_Gsi: ; 0x022F493C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r2 + mov r5, r1 + mov r6, r0 + mov r1, r4 + bl FreeElement_Gsi + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl SetElement_Gsi + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ArrayReplaceAt_Gsi + + arm_func_start ArraySearch_Gsi +ArraySearch_Gsi: ; 0x022F4968 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov ip, #1 + movs r7, r0 + str ip, [sp, #8] + ldrne r8, [r7] + mov r6, r1 + cmpne r8, #0 + mov r5, r2 + mov r4, r3 + addeq sp, sp, #0xc + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x28] + cmp r1, #0 + mov r1, r4 + beq _022F49D4 + bl ArrayNth_Gsi + add r1, sp, #8 + str r5, [sp] + str r1, [sp, #4] + mov r1, r0 + ldr r3, [r7, #8] + mov r0, r6 + sub r2, r8, r4 + bl mybsearch_gsi + b _022F49F0 +_022F49D4: + bl ArrayNth_Gsi + str r5, [sp] + mov r1, r0 + ldr r3, [r7, #8] + mov r0, r6 + sub r2, r8, r4 + bl mylsearch_gsi +_022F49F0: + cmp r0, #0 + ldrne r1, [sp, #8] + cmpne r1, #0 + addeq sp, sp, #0xc + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r2, [r7, #0x14] + ldr r1, [r7, #8] + sub r0, r0, r2 + bl _s32_div_f + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ArraySearch_Gsi + + arm_func_start ArrayMap_Gsi +ArrayMap_Gsi: ; 0x022F4A20 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7] + mov r6, r1 + mov r5, r2 + subs r4, r0, #1 + ldmmiia sp!, {r3, r4, r5, r6, r7, pc} +_022F4A3C: + mov r0, r7 + mov r1, r4 + bl ArrayNth_Gsi + mov r1, r5 + blx r6 + subs r4, r4, #1 + bpl _022F4A3C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ArrayMap_Gsi + + arm_func_start ArrayMapBackwards_Gsi +ArrayMapBackwards_Gsi: ; 0x022F4A5C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + ldr r0, [r8] + mov r7, r1 + mov r6, r2 + subs r5, r0, #1 + bmi _022F4AA4 +_022F4A78: + mov r0, r8 + mov r1, r5 + bl ArrayNth_Gsi + mov r1, r6 + mov r4, r0 + blx r7 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + subs r5, r5, #1 + bpl _022F4A78 +_022F4AA4: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ArrayMapBackwards_Gsi + + arm_func_start ArrayClear_Gsi +ArrayClear_Gsi: ; 0x022F4AAC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl ArrayLength_Gsi + subs r4, r0, #1 + ldmmiia sp!, {r3, r4, r5, pc} +_022F4AC0: + mov r0, r5 + mov r1, r4 + bl ArrayDeleteAt_Gsi + subs r4, r4, #1 + bpl _022F4AC0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ArrayClear_Gsi + + arm_func_start mylsearch_gsi +mylsearch_gsi: ; 0x022F4AD8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r8, r2 + mov sl, r0 + mov sb, r1 + mov r7, r3 + cmp r8, #0 + ldr r6, [sp, #0x20] + mov r4, #0 + ble _022F4B28 + mov r5, r4 +_022F4B00: + mov r0, sl + add r1, sb, r5 + blx r6 + cmp r0, #0 + mlaeq r0, r7, r4, sb + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r4, r4, #1 + cmp r4, r8 + add r5, r5, r7 + blt _022F4B00 +_022F4B28: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end mylsearch_gsi + + arm_func_start mybsearch_gsi +mybsearch_gsi: ; 0x022F4B30 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r7, [sp, #0x2c] + mov r4, #0 + mov fp, r0 + mov sl, r1 + mov sb, r3 + str r4, [r7] + subs r5, r2, #1 + ldr r8, [sp, #0x28] + bmi _022F4B8C +_022F4B58: + add r0, r4, r5 + mov r6, r0, asr #1 + mla r0, r6, sb, sl + mov r1, fp + blx r8 + cmp r0, #0 + moveq r1, #1 + streq r1, [r7] + cmp r0, #0 + addlt r4, r6, #1 + subge r5, r6, #1 + cmp r4, r5 + ble _022F4B58 +_022F4B8C: + mla r0, r4, sb, sl + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end mybsearch_gsi + + arm_func_start TableNew_Gsi +TableNew_Gsi: ; 0x022F4B94 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr ip, [sp, #0x10] + str r3, [sp] + mov r3, r2 + mov r2, #4 + str ip, [sp, #4] + bl TableNew2_Gsi + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end TableNew_Gsi + + arm_func_start TableNew2_Gsi +TableNew2_Gsi: ; 0x022F4BBC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + mov sb, r1 + mov r0, #0x14 + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x24] + bl gsimalloc + mov r4, r0 + mov r0, sb, lsl #2 + bl gsimalloc + str r0, [r4] + cmp sb, #0 + mov r5, #0 + ble _022F4C1C +_022F4BF8: + mov r0, sl + mov r1, r8 + mov r2, r6 + bl ArrayNew_Gsi + ldr r1, [r4] + str r0, [r1, r5, lsl #2] + add r5, r5, #1 + cmp r5, sb + blt _022F4BF8 +_022F4C1C: + str sb, [r4, #4] + ldr r0, [sp, #0x20] + str r6, [r4, #8] + str r0, [r4, #0x10] + mov r0, r4 + str r7, [r4, #0xc] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end TableNew2_Gsi + + arm_func_start TableFree_Gsi +TableFree_Gsi: ; 0x022F4C38 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #4] + mov r4, #0 + cmp r0, #0 + ble _022F4C70 +_022F4C54: + ldr r0, [r5] + ldr r0, [r0, r4, lsl #2] + bl ArrayFree_Gsi + ldr r0, [r5, #4] + add r4, r4, #1 + cmp r4, r0 + blt _022F4C54 +_022F4C70: + ldr r0, [r5] + bl gsifree + mov r0, r5 + bl gsifree + ldmia sp!, {r3, r4, r5, pc} + arm_func_end TableFree_Gsi + + arm_func_start TableCount_Gsi +TableCount_Gsi: ; 0x022F4C84 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + mov r5, #0 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6, #4] + mov r4, r5 + cmp r0, #0 + ble _022F4CC8 +_022F4CA8: + ldr r0, [r6] + ldr r0, [r0, r4, lsl #2] + bl ArrayLength_Gsi + ldr r1, [r6, #4] + add r4, r4, #1 + cmp r4, r1 + add r5, r5, r0 + blt _022F4CA8 +_022F4CC8: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end TableCount_Gsi + + arm_func_start TableEnter_Gsi +TableEnter_Gsi: ; 0x022F4CD0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + movs r6, r0 + mov r5, r1 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + mov r0, r5 + blx r2 + mov r3, #0 + str r3, [sp] + ldr r1, [r6] + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + ldr r2, [r6, #0x10] + mov r1, r5 + bl ArraySearch_Gsi + mov r2, r0 + mvn r0, #0 + cmp r2, r0 + ldr r0, [r6] + mov r1, r5 + bne _022F4D40 + ldr r0, [r0, r4, lsl #2] + bl ArrayAppend_Gsi + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} +_022F4D40: + ldr r0, [r0, r4, lsl #2] + bl ArrayReplaceAt_Gsi + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end TableEnter_Gsi + + arm_func_start TableRemove_Gsi +TableRemove_Gsi: ; 0x022F4D50 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + movs r6, r0 + mov r5, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + mov r0, r5 + blx r2 + mov r3, #0 + str r3, [sp] + ldr r1, [r6] + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + ldr r2, [r6, #0x10] + mov r1, r5 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [r6] + ldr r0, [r0, r4, lsl #2] + bl ArrayDeleteAt_Gsi + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end TableRemove_Gsi + + arm_func_start TableLookup_Gsi +TableLookup_Gsi: ; 0x022F4DCC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + movs r6, r0 + mov r5, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + mov r0, r5 + blx r2 + mov r3, #0 + str r3, [sp] + ldr r1, [r6] + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + ldr r2, [r6, #0x10] + mov r1, r5 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [r6] + ldr r0, [r0, r4, lsl #2] + bl ArrayNth_Gsi + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end TableLookup_Gsi + + arm_func_start TableMap_Gsi +TableMap_Gsi: ; 0x022F4E44 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #4] + mov r6, r1 + mov r5, r2 + mov r4, #0 + cmp r0, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, pc} +_022F4E64: + ldr r0, [r7] + mov r1, r6 + ldr r0, [r0, r4, lsl #2] + mov r2, r5 + bl ArrayMap_Gsi + ldr r0, [r7, #4] + add r4, r4, #1 + cmp r4, r0 + blt _022F4E64 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end TableMap_Gsi + + arm_func_start TableMapSafe2_Gsi +TableMapSafe2_Gsi: ; 0x022F4E8C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #4] + mov r6, r1 + mov r5, r2 + cmp r0, #0 + mov r4, #0 + ble _022F4ED8 +_022F4EAC: + ldr r0, [r7] + mov r1, r6 + ldr r0, [r0, r4, lsl #2] + mov r2, r5 + bl ArrayMapBackwards_Gsi + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r7, #4] + add r4, r4, #1 + cmp r4, r0 + blt _022F4EAC +_022F4ED8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end TableMapSafe2_Gsi + + arm_func_start MD5Print_Gsi +MD5Print_Gsi: ; 0x022F4EE0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, #0 + ldr ip, _022F4F38 ; =ov00_02318454 + mov r5, r4 +_022F4EF0: + ldrb r2, [r0, r4] + add lr, r1, r5 + mov r2, r2, lsr #4 + ldrsb r2, [ip, r2] + strb r2, [r1, r5] + ldrb r2, [r0, r4] + add r4, r4, #1 + cmp r4, #0x10 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #28 + add r2, r3, r2, ror #28 + ldrsb r2, [ip, r2] + add r5, r5, #2 + strb r2, [lr, #1] + blo _022F4EF0 + mov r0, #0 + strb r0, [r1, #0x20] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F4F38: .word ov00_02318454 + arm_func_end MD5Print_Gsi + + arm_func_start MD5Digest_Gsi +MD5Digest_Gsi: ; 0x022F4F3C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x68 + mov r6, r0 + add r0, sp, #0x10 + mov r5, r1 + mov r4, r2 + bl MD5Init_Ghi + add r0, sp, #0x10 + mov r1, r6 + mov r2, r5 + bl MD5Update_Ghi + add r0, sp, #0 + add r1, sp, #0x10 + bl MD5Final_Ghi + add r0, sp, #0 + mov r1, r4 + bl MD5Print_Gsi + add sp, sp, #0x68 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end MD5Digest_Gsi + + arm_func_start SocketCastError +SocketCastError: ; 0x022F4F88 + cmp r0, #0 + ldrlt r2, _022F4F9C ; =ov00_02328788 + strlt r0, [r2, #4] + movlt r0, r1 + bx lr + .align 2, 0 +_022F4F9C: .word ov00_02328788 + arm_func_end SocketCastError + + arm_func_start SocketCreate +SocketCreate: ; 0x022F4FA0 + stmdb sp!, {r3, lr} + bl socket + mvn r1, #0 + bl SocketCastError + ldmia sp!, {r3, pc} + arm_func_end SocketCreate + + arm_func_start SocketClose +SocketClose: ; 0x022F4FB4 + stmdb sp!, {r3, lr} + bl CloseVeneer + mvn r1, #0 + bl SocketCastError + ldmia sp!, {r3, pc} + arm_func_end SocketClose + + arm_func_start shutdown_gsi +shutdown_gsi: ; 0x022F4FC8 + stmdb sp!, {r3, lr} + bl Soc_Shutdown + mvn r1, #0 + bl SocketCastError + ldmia sp!, {r3, pc} + arm_func_end shutdown_gsi + + arm_func_start SocketBind +SocketBind: ; 0x022F4FDC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldrh r3, [r1, #2] + cmp r3, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r4, sp, #0 + mov lr, #4 +_022F5000: + ldrb ip, [r1] + ldrb r3, [r1, #1] + add r1, r1, #2 + subs lr, lr, #1 + strb ip, [r4] + strb r3, [r4, #1] + add r4, r4, #2 + bne _022F5000 + add r1, sp, #0 + strb r2, [sp] + bl bind + mvn r1, #0 + bl SocketCastError + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end SocketBind + + arm_func_start SocketConnect +SocketConnect: ; 0x022F503C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r4, sp, #0 + mov lr, #4 +_022F504C: + ldrb ip, [r1] + ldrb r3, [r1, #1] + add r1, r1, #2 + subs lr, lr, #1 + strb ip, [r4] + strb r3, [r4, #1] + add r4, r4, #2 + bne _022F504C + add r1, sp, #0 + strb r2, [sp] + bl connect + mvn r1, #0 + bl SocketCastError + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end SocketConnect + + arm_func_start SocketRecv +SocketRecv: ; 0x022F5088 + stmdb sp!, {r3, lr} + bl recv + mvn r1, #0 + bl SocketCastError + ldmia sp!, {r3, pc} + arm_func_end SocketRecv + + arm_func_start SocketRecvFrom +SocketRecvFrom: ; 0x022F509C + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [sp, #0x14] + ldr r5, [sp, #0x10] + ldr ip, [r4] + strb ip, [r5] + str r5, [sp] + bl recvfrom + ldrb r2, [r5] + mvn r1, #0 + str r2, [r4] + bl SocketCastError + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SocketRecvFrom + + arm_func_start SocketSend +SocketSend: ; 0x022F50CC + stmdb sp!, {r3, lr} + bl send + mvn r1, #0 + bl SocketCastError + ldmia sp!, {r3, pc} + arm_func_end SocketSend + + arm_func_start SocketSendTo +SocketSendTo: ; 0x022F50E0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + ldr r5, [sp, #0x20] + add r6, sp, #4 + mov r4, #4 +_022F50F4: + ldrb lr, [r5] + ldrb ip, [r5, #1] + add r5, r5, #2 + subs r4, r4, #1 + strb lr, [r6] + strb ip, [r6, #1] + add r6, r6, #2 + bne _022F50F4 + ldr lr, [sp, #0x24] + add ip, sp, #4 + strb lr, [sp, #4] + str ip, [sp] + bl sendto + mvn r1, #0 + bl SocketCastError + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end SocketSendTo + + arm_func_start setsockopt_gsi +setsockopt_gsi: ; 0x022F5138 + ldr ip, _022F5148 ; =SocketCastError + mov r0, #0 + sub r1, r0, #1 + bx ip + .align 2, 0 +_022F5148: .word SocketCastError + arm_func_end setsockopt_gsi + + arm_func_start getsockname_gsi +getsockname_gsi: ; 0x022F514C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r2 + ldr r2, [r4] + mov r5, r1 + strb r2, [r5] + bl Soc_GetSockName + ldrb r2, [r5] + mvn r1, #0 + str r2, [r4] + bl SocketCastError + ldmia sp!, {r3, r4, r5, pc} + arm_func_end getsockname_gsi + + arm_func_start inet_addr_gsi +inet_addr_gsi: ; 0x022F5178 + stmdb sp!, {r3, lr} + add r1, sp, #0 + bl Soc_InetAtoN + cmp r0, #0 + mvneq r0, #0 + ldrne r0, [sp] + ldmia sp!, {r3, pc} + arm_func_end inet_addr_gsi + + arm_func_start GoaGetLastError +GoaGetLastError: ; 0x022F5194 + ldr r0, _022F51A0 ; =ov00_02328788 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_022F51A0: .word ov00_02328788 + arm_func_end GoaGetLastError + + arm_func_start GsiSocketSelect +GsiSocketSelect: ; 0x022F51A4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r6, r1 + mov r1, #0 + strh r1, [sp, #4] + str r0, [sp] + ldrnesh r0, [sp, #4] + mov r5, r2 + mov r2, #0 + orrne r0, r0, #1 + strneh r0, [sp, #4] + cmp r5, #0 + ldrnesh r0, [sp, #4] + mov r4, r3 + mov r3, r2 + orrne r0, r0, #8 + strneh r0, [sp, #4] + add r0, sp, #0 + mov r1, #1 + strh r2, [sp, #6] + bl Soc_Poll + cmp r0, #0 + addlt sp, sp, #8 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, pc} + cmp r6, #0 + beq _022F5234 + cmp r0, #0 + ble _022F522C + ldrsh r1, [sp, #6] + tst r1, #0x41 + movne r1, #1 + strne r1, [r6] + bne _022F5234 +_022F522C: + mov r1, #0 + str r1, [r6] +_022F5234: + cmp r5, #0 + beq _022F5260 + cmp r0, #0 + ble _022F5258 + ldrsh r1, [sp, #6] + tst r1, #8 + movne r1, #1 + strne r1, [r5] + bne _022F5260 +_022F5258: + mov r1, #0 + str r1, [r5] +_022F5260: + cmp r4, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, #0 + ble _022F528C + ldrsh r1, [sp, #6] + tst r1, #0x20 + movne r1, #1 + addne sp, sp, #8 + strne r1, [r4] + ldmneia sp!, {r4, r5, r6, pc} +_022F528C: + mov r1, #0 + str r1, [r4] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GsiSocketSelect + + arm_func_start SocketSetBlocking +SocketSetBlocking: ; 0x022F529C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #3 + mov r2, #0 + mov r5, r0 + bl fcntl + cmp r4, #0 + bicne r2, r0, #4 + orreq r2, r0, #4 + mov r0, r5 + mov r1, #4 + bl fcntl + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SocketSetBlocking + + arm_func_start SetReceiveBufferSize +SetReceiveBufferSize: ; 0x022F52DC + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + ldr r1, _022F5318 ; =0x0000FFFF + mov ip, #4 + ldr r2, _022F531C ; =0x00001002 + add r3, sp, #0xc + str ip, [sp] + bl setsockopt_gsi + mvn r1, #0 + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022F5318: .word 0x0000FFFF +_022F531C: .word 0x00001002 + arm_func_end SetReceiveBufferSize + + arm_func_start CanReceiveOnSocket +CanReceiveOnSocket: ; 0x022F5320 + stmdb sp!, {r3, lr} + mov r2, #0 + add r1, sp, #0 + mov r3, r2 + str r2, [sp] + bl GsiSocketSelect + cmp r0, #1 + ldreq r0, [sp] + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end CanReceiveOnSocket + + arm_func_start CanSendOnSocket +CanSendOnSocket: ; 0x022F5348 + stmdb sp!, {r3, lr} + mov r1, #0 + add r2, sp, #0 + mov r3, r1 + str r1, [sp] + bl GsiSocketSelect + cmp r0, #1 + ldreq r0, [sp] + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end CanSendOnSocket + + arm_func_start getlocalhost_gsi +getlocalhost_gsi: ; 0x022F5370 + stmdb sp!, {r3, lr} + ldr r2, _022F53E4 ; =ov00_0231A7B0 + ldr r0, _022F53E8 ; =ov00_02328788 + ldr r1, _022F53EC ; =ov00_02328788 + str r2, [r0, #0x18] + str r1, [r0, #0x1c] + mov r1, #2 + strh r1, [r0, #0x20] + mov r2, #0 + ldr r1, _022F53F0 ; =ov00_023287C4 + strh r2, [r0, #0x22] + str r1, [r0, #0x24] + str r2, [r0, #0x28] + bl Socl_GetHostID + ldr r1, _022F53F4 ; =ov00_023287B0 + bl Soc_U32to4U8 + ldr r1, _022F53E8 ; =ov00_02328788 + ldr r0, [r1, #0x28] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r2, _022F53F4 ; =ov00_023287B0 + mov r0, #4 + str r2, [r1, #0x3c] + strh r0, [r1, #0x22] + mov r2, #0 + ldr r0, _022F53F8 ; =ov00_023287A0 + str r2, [r1, #0x40] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F53E4: .word ov00_0231A7B0 +_022F53E8: .word ov00_02328788 +_022F53EC: .word ov00_02328788 +_022F53F0: .word ov00_023287C4 +_022F53F4: .word ov00_023287B0 +_022F53F8: .word ov00_023287A0 + arm_func_end getlocalhost_gsi + + arm_func_start IsPrivateIP +IsPrivateIP: ; 0x022F53FC + ldr r3, [r0] + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r3, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r1, r1, r0 + mov r0, r1, lsr #0x18 + and r2, r0, #0xff + mov r0, r1, lsr #0x10 + and r0, r0, #0xff + cmp r2, #0xa + moveq r0, #1 + bxeq lr + cmp r2, #0xac + bne _022F5464 + cmp r0, #0x10 + blt _022F5464 + cmp r0, #0x1f + movle r0, #1 + bxle lr +_022F5464: + cmp r2, #0xc0 + cmpeq r0, #0xa8 + moveq r0, #1 + movne r0, #0 + bx lr + arm_func_end IsPrivateIP + + arm_func_start time_gsi +time_gsi: ; 0x022F5478 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_GetTick + mov r1, r1, lsl #6 + orr r1, r1, r0, lsr #26 + ldr r2, _022F54A8 ; =0x01FF6210 + mov r0, r0, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r4, #0 + strne r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022F54A8: .word 0x01FF6210 + arm_func_end time_gsi + + arm_func_start GsiStartResolvingHostname +GsiStartResolvingHostname: ; 0x022F54AC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + bl Soc_GetHostByName + movs r4, r0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #8 + bl gsimalloc + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r4, #0xc] + ldr r1, [r1] + ldr r1, [r1] + str r1, [r0, #4] + str r0, [r5] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GsiStartResolvingHostname + + arm_func_start GsiCancelResolvingHostname +GsiCancelResolvingHostname: ; 0x022F54F4 + ldr ip, _022F54FC ; =gsifree + bx ip + .align 2, 0 +_022F54FC: .word gsifree + arm_func_end GsiCancelResolvingHostname + + arm_func_start GsiGetResolvedIP +GsiGetResolvedIP: ; 0x022F5500 + stmdb sp!, {r4, lr} + ldr r4, [r0, #4] + bl gsifree + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end GsiGetResolvedIP + + arm_func_start goastrdup +goastrdup: ; 0x022F5514 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl strlen + add r0, r0, #1 + bl gsimalloc + movs r4, r0 + beq _022F5540 + mov r1, r5 + bl strcpy +_022F5540: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end goastrdup + + arm_func_start strlwr +strlwr: ; 0x022F5548 + ldrsb r3, [r0] + mov r2, r0 + cmp r3, #0 + beq _022F5580 + ldr r1, _022F5588 ; =_020AECB0 +_022F555C: + cmp r3, #0 + blt _022F5570 + cmp r3, #0x80 + bge _022F5570 + ldrb r3, [r1, r3] +_022F5570: + strb r3, [r0] + ldrsb r3, [r0, #1]! + cmp r3, #0 + bne _022F555C +_022F5580: + mov r0, r2 + bx lr + .align 2, 0 +_022F5588: .word _020AECB0 + arm_func_end strlwr + + arm_func_start SocketStartUp_Ghi +SocketStartUp_Ghi: ; 0x022F558C + bx lr + arm_func_end SocketStartUp_Ghi + + arm_func_start SocketShutDown_Gsi +SocketShutDown_Gsi: ; 0x022F5590 + bx lr + arm_func_end SocketShutDown_Gsi + + arm_func_start current_time_gsi +current_time_gsi: ; 0x022F5594 + stmdb sp!, {r3, lr} + bl OS_GetTick + mov r1, r1, lsl #6 + orr r1, r1, r0, lsr #26 + ldr r2, _022F55B8 ; =0x000082EA + mov r0, r0, lsl #6 + mov r3, #0 + bl _ll_udiv + ldmia sp!, {r3, pc} + .align 2, 0 +_022F55B8: .word 0x000082EA + arm_func_end current_time_gsi + + arm_func_start current_time_hires_gsi +current_time_hires_gsi: ; 0x022F55BC + stmdb sp!, {r3, lr} + bl OS_GetTick + mov r2, #0xfa00 + umull ip, r3, r0, r2 + mla r3, r1, r2, r3 + ldr r2, _022F55E8 ; =0x000082EA + mov r0, ip + mov r1, r3 + mov r3, #0 + bl _ll_udiv + ldmia sp!, {r3, pc} + .align 2, 0 +_022F55E8: .word 0x000082EA + arm_func_end current_time_hires_gsi + + arm_func_start msleep_gsi +msleep_gsi: ; 0x022F55EC + ldr ip, _022F55F4 ; =OS_Sleep + bx ip + .align 2, 0 +_022F55F4: .word OS_Sleep + arm_func_end msleep_gsi + + arm_func_start DoRand +DoRand: ; 0x022F55F8 + ldr r2, _022F5640 ; =0x000041A7 + mov r1, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mul r3, r0, r2 + mov r1, r1, lsr #0x10 + mul r2, r1, r2 + mov r0, r3, lsl #0x11 + add r0, r2, r0, lsr #1 + mvn r1, #0x80000000 + cmp r0, r1 + bichi r0, r0, #0x80000000 + addhi r0, r0, #1 + add r0, r0, r3, lsr #15 + mvn r1, #0x80000000 + cmp r0, r1 + bichi r0, r0, #0x80000000 + addhi r0, r0, #1 + bx lr + .align 2, 0 +_022F5640: .word 0x000041A7 + arm_func_end DoRand + + arm_func_start longrand_gsi +longrand_gsi: ; 0x022F5644 + stmdb sp!, {r3, lr} + ldr r0, _022F5660 ; =ov00_0231A740 + ldr r0, [r0] + bl DoRand + ldr r1, _022F5660 ; =ov00_0231A740 + str r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F5660: .word ov00_0231A740 + arm_func_end longrand_gsi + + arm_func_start Util_RandSeed +Util_RandSeed: ; 0x022F5664 + cmp r0, #0 + bicne r1, r0, #0x80000000 + ldr r0, _022F567C ; =ov00_0231A740 + moveq r1, #1 + str r1, [r0] + bx lr + .align 2, 0 +_022F567C: .word ov00_0231A740 + arm_func_end Util_RandSeed + + arm_func_start RandRangeOverlay0 +RandRangeOverlay0: ; 0x022F5680 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + subs r4, r1, r5 + ldmeqia sp!, {r3, r4, r5, pc} + bl longrand_gsi + mov r1, r4 + bl _u32_div_f + add r0, r1, r5 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end RandRangeOverlay0 + + arm_func_start QuartToTrip +QuartToTrip: ; 0x022F56A4 + cmp r2, #2 + blt _022F56C0 + ldrsb r3, [r0, #1] + ldrsb ip, [r0] + mov r3, r3, asr #4 + orr r3, r3, ip, lsl #2 + strb r3, [r1] +_022F56C0: + cmp r2, #3 + blt _022F56E0 + ldrsb ip, [r0, #1] + ldrsb r3, [r0, #2] + mov ip, ip, lsl #0x1c + mov r3, r3, asr #2 + orr r3, r3, ip, lsr #24 + strb r3, [r1, #1] +_022F56E0: + cmp r2, #4 + bxlt lr + ldrsb r2, [r0, #2] + ldrsb r0, [r0, #3] + mov r2, r2, lsl #0x1e + orr r0, r0, r2, lsr #24 + strb r0, [r1, #2] + bx lr + arm_func_end QuartToTrip + + arm_func_start TripToQuart +TripToQuart: ; 0x022F5700 + stmdb sp!, {r3, lr} + cmp r2, #0 + mov ip, #0 + ble _022F5728 + add lr, sp, #0 +_022F5714: + ldrsb r3, [r0, ip] + add ip, ip, #1 + cmp ip, r2 + strb r3, [lr], #1 + blt _022F5714 +_022F5728: + cmp ip, #3 + bge _022F574C + add r0, sp, #0 + add r2, r0, ip + mov r0, #0 +_022F573C: + add ip, ip, #1 + cmp ip, #3 + strb r0, [r2], #1 + blt _022F573C +_022F574C: + ldrb r0, [sp] + mov r0, r0, asr #2 + strb r0, [r1] + ldrb r2, [sp] + ldrb r0, [sp, #1] + mov r2, r2, lsl #0x1e + mov r0, r0, asr #4 + orr r0, r0, r2, lsr #26 + strb r0, [r1, #1] + ldrb r2, [sp, #1] + ldrb r0, [sp, #2] + mov r2, r2, lsl #0x1c + mov r0, r0, asr #6 + orr r0, r0, r2, lsr #26 + strb r0, [r1, #2] + ldrb r0, [sp, #2] + and r0, r0, #0x3f + strb r0, [r1, #3] + ldmia sp!, {r3, pc} + arm_func_end TripToQuart + + arm_func_start B64Decode +B64Decode: ; 0x022F5798 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r4, [sp, #0x28] + mov r7, #0 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov fp, r3 + mov r6, r7 + cmp r4, #1 + beq _022F57CC + cmp r4, #2 + beq _022F57D4 + b _022F57DC +_022F57CC: + ldr r5, _022F5980 ; =ov00_02318468 + b _022F57E0 +_022F57D4: + ldr r5, _022F5984 ; =ov00_0231846C + b _022F57E0 +_022F57DC: + ldr r5, _022F5988 ; =ov00_02318470 +_022F57E0: + cmp r8, #0 + bgt _022F5800 + cmp fp, #0 + movne r0, #0 + strne r0, [fp] + mov r0, #0 + strb r0, [sb] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F5800: + add r4, sp, #0 + b _022F5914 +_022F5808: + cmp r0, #0x30 + blt _022F5830 + cmp r0, #0x39 + bgt _022F5830 + mov r2, r7, lsr #0x1f + rsb r1, r2, r7, lsl #30 + add r1, r2, r1, ror #30 + add r0, r0, #4 + strb r0, [r4, r1] + b _022F58F4 +_022F5830: + cmp r0, #0x61 + blt _022F5858 + cmp r0, #0x7a + bgt _022F5858 + mov r2, r7, lsr #0x1f + rsb r1, r2, r7, lsl #30 + add r1, r2, r1, ror #30 + sub r0, r0, #0x47 + strb r0, [r4, r1] + b _022F58F4 +_022F5858: + cmp r0, #0x41 + blt _022F5880 + cmp r0, #0x5a + bgt _022F5880 + mov r2, r7, lsr #0x1f + rsb r1, r2, r7, lsl #30 + add r1, r2, r1, ror #30 + sub r0, r0, #0x41 + strb r0, [r4, r1] + b _022F58F4 +_022F5880: + ldrsb r1, [r5] + cmp r1, r0 + bne _022F58A4 + mov r1, r7, lsr #0x1f + rsb r0, r1, r7, lsl #30 + add r1, r1, r0, ror #30 + mov r0, #0x3e + strb r0, [r4, r1] + b _022F58F4 +_022F58A4: + ldrsb r1, [r5, #1] + cmp r1, r0 + bne _022F58C8 + mov r1, r7, lsr #0x1f + rsb r0, r1, r7, lsl #30 + add r1, r1, r0, ror #30 + mov r0, #0x3f + strb r0, [r4, r1] + b _022F58F4 +_022F58C8: + ldrsb r1, [sl, r7] + ldrsb r0, [r5, #2] + cmp r0, r1 + cmpne r1, #0 + beq _022F592C + cmp fp, #0 + movne r0, #0 + strne r0, [fp] + mov r0, #0 + strb r0, [sb] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F58F4: + cmp r1, #3 + bne _022F5910 + mov r0, r4 + mov r2, #4 + add r1, sb, r6 + bl QuartToTrip + add r6, r6, #3 +_022F5910: + add r7, r7, #1 +_022F5914: + cmp r7, r8 + bge _022F592C + ldrsb r0, [sl, r7] + ldrsb r1, [r5, #2] + cmp r1, r0 + bne _022F5808 +_022F592C: + cmp r7, #0 + beq _022F5974 + mov r1, r7, lsr #0x1f + rsb r0, r1, r7, lsl #30 + adds r4, r1, r0, ror #30 + beq _022F5974 + ldrsb r1, [r5, #2] + add r0, sp, #0 + add r0, r0, r4 + rsb r2, r4, #4 + bl memset + add r0, sp, #0 + mov r2, r4 + add r1, sb, r6 + bl QuartToTrip + cmp r4, #3 + addeq r6, r6, #2 + addne r6, r6, #1 +_022F5974: + cmp fp, #0 + strne r6, [fp] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F5980: .word ov00_02318468 +_022F5984: .word ov00_0231846C +_022F5988: .word ov00_02318470 + arm_func_end B64Decode + + arm_func_start B64Encode +B64Encode: ; 0x022F598C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r7, r1 + mov r6, r2 + mov sl, r0 + mov r5, r7 + mov sb, r6 + cmp r3, #1 + beq _022F59B8 + cmp r3, #2 + beq _022F59C0 + b _022F59C8 +_022F59B8: + ldr r4, _022F5AB4 ; =ov00_02318468 + b _022F59CC +_022F59C0: + ldr r4, _022F5AB8 ; =ov00_0231846C + b _022F59CC +_022F59C8: + ldr r4, _022F5ABC ; =ov00_02318470 +_022F59CC: + cmp r6, #0 + ble _022F5A04 + mov r8, #3 +_022F59D8: + cmp sb, #3 + movlt r2, sb + movge r2, r8 + mov r0, sl + mov r1, r7 + bl TripToQuart + sub sb, sb, #3 + cmp sb, #0 + add r7, r7, #4 + add sl, sl, #3 + bgt _022F59D8 +_022F5A04: + ldr r1, _022F5AC0 ; =0x55555556 + mov r2, #3 + smull r0, r3, r1, r6 + add r3, r3, r6, lsr #31 + smull r0, r1, r2, r3 + sub r3, r6, r0 + mov r1, r7 + cmp r3, #1 + subeq r1, r7, #2 + beq _022F5A34 + cmp r3, #2 + subeq r1, r7, #1 +_022F5A34: + mov r0, #0 + strb r0, [r7] + cmp r7, r5 + ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022F5A44: + sub r7, r7, #1 + cmp r7, r1 + ldrhssb r0, [r4, #2] + strhsb r0, [r7] + bhs _022F5AA8 + ldrsb r0, [r7] + cmp r0, #0x19 + addle r0, r0, #0x41 + strleb r0, [r7] + ble _022F5AA8 + cmp r0, #0x33 + addle r0, r0, #0x47 + strleb r0, [r7] + ble _022F5AA8 + cmp r0, #0x3d + suble r0, r0, #4 + strleb r0, [r7] + ble _022F5AA8 + cmp r0, #0x3e + ldreqsb r0, [r4] + streqb r0, [r7] + beq _022F5AA8 + cmp r0, #0x3f + ldreqsb r0, [r4, #1] + streqb r0, [r7] +_022F5AA8: + cmp r7, r5 + bhi _022F5A44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F5AB4: .word ov00_02318468 +_022F5AB8: .word ov00_0231846C +_022F5ABC: .word ov00_02318470 +_022F5AC0: .word 0x55555556 + arm_func_end B64Encode + + arm_func_start GsDebugAssert +GsDebugAssert: ; 0x022F5AC4 + bx lr + arm_func_end GsDebugAssert + + arm_func_start GsiMemoryCallbacksSet +GsiMemoryCallbacksSet: ; 0x022F5AC8 + ldr ip, _022F5AE0 ; =ov00_02328788 + str r0, [ip, #8] + str r1, [ip, #0xc] + str r2, [ip, #0x10] + str r3, [ip, #0x14] + bx lr + .align 2, 0 +_022F5AE0: .word ov00_02328788 + arm_func_end GsiMemoryCallbacksSet + + arm_func_start gsimalloc +gsimalloc: ; 0x022F5AE4 + stmdb sp!, {r3, lr} + ldr r1, _022F5AF8 ; =ov00_02328788 + ldr r1, [r1, #8] + blx r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F5AF8: .word ov00_02328788 + arm_func_end gsimalloc + + arm_func_start gsirealloc +gsirealloc: ; 0x022F5AFC + stmdb sp!, {r3, lr} + ldr r2, _022F5B10 ; =ov00_02328788 + ldr r2, [r2, #0x10] + blx r2 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F5B10: .word ov00_02328788 + arm_func_end gsirealloc + + arm_func_start gsifree +gsifree: ; 0x022F5B14 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _022F5B30 ; =ov00_02328788 + ldr r1, [r1, #0xc] + blx r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F5B30: .word ov00_02328788 + arm_func_end gsifree + + arm_func_start get_sockaddrin__022F6348 +get_sockaddrin__022F6348: ; 0x022F5B34 + stmdb sp!, {r3, r4, r5, lr} + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r3, r1, asr #8 + mov r1, r1, lsl #8 + mov r4, r2 + mov ip, #2 + and r2, r3, #0xff + and r1, r1, #0xff00 + strb ip, [r4, #1] + orr r1, r2, r1 + mov r5, r0 + strh r1, [r4, #2] + bl inet_addr_gsi + mvn r1, #0 + str r0, [r4, #4] + cmp r0, r1 + bne _022F5BA0 + mov r0, r5 + bl Soc_GetHostByName + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [r4, #4] +_022F5BA0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end get_sockaddrin__022F6348 + + arm_func_start SendPacket_Gsi +SendPacket_Gsi: ; 0x022F5BA8 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r1, _022F5BEC ; =ov00_02328888 + mov r0, #8 + str r1, [sp] + ldr r1, _022F5BF0 ; =ov00_02328884 + str r0, [sp, #4] + ldr r0, [r1] + ldr r2, [r1, #0x4c] + ldr r1, _022F5BF4 ; =ov00_02328890 + mov r3, #0 + bl SocketSendTo + bl current_time_gsi + ldr r1, _022F5BF0 ; =ov00_02328884 + str r0, [r1, #0x50] + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F5BEC: .word ov00_02328888 +_022F5BF0: .word ov00_02328884 +_022F5BF4: .word ov00_02328890 + arm_func_end SendPacket_Gsi + + arm_func_start ResolveAvailableNintendoWifi +ResolveAvailableNintendoWifi: ; 0x022F5BF8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x40 + mov r4, r0 + ldr r0, _022F5CD4 ; =ov00_02328804 + mov r1, r4 + bl strcpy + ldr r0, _022F5CD8 ; =ov00_02328884 + mvn r1, #0 + str r1, [r0] + bl SocketStartUp_Ghi + ldr r0, _022F5CDC ; =ov00_02328844 + ldrsb r5, [r0] + cmp r5, #0 + bne _022F5C40 + ldr r1, _022F5CE0 ; =ov00_0231A7BC + add r0, sp, #0 + mov r2, r4 + bl OS_VsPrintf +_022F5C40: + cmp r5, #0 + ldrne r0, _022F5CDC ; =ov00_02328844 + ldr r1, _022F5CE4 ; =0x00006CFC + ldr r2, _022F5CE8 ; =ov00_02328888 + addeq r0, sp, #0 + bl get_sockaddrin__022F6348 + cmp r0, #0 + addeq sp, sp, #0x40 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #2 + mov r1, r0 + mov r2, #0 + bl SocketCreate + ldr r2, _022F5CD8 ; =ov00_02328884 + mvn r1, #0 + cmp r0, r1 + str r0, [r2] + addeq sp, sp, #0x40 + ldmeqia sp!, {r3, r4, r5, pc} + mov r1, #9 + mov r0, r4 + strb r1, [r2, #0xc] + bl strlen + mov r5, r0 + ldr r0, _022F5CEC ; =ov00_02328895 + mov r1, r4 + add r2, r5, #1 + bl memcpy + ldr r0, _022F5CD8 ; =ov00_02328884 + add r1, r5, #6 + str r1, [r0, #0x4c] + bl SendPacket_Gsi + ldr r0, _022F5CD8 ; =ov00_02328884 + mov r1, #0 + str r1, [r0, #0x54] + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F5CD4: .word ov00_02328804 +_022F5CD8: .word ov00_02328884 +_022F5CDC: .word ov00_02328844 +_022F5CE0: .word ov00_0231A7BC +_022F5CE4: .word 0x00006CFC +_022F5CE8: .word ov00_02328888 +_022F5CEC: .word ov00_02328895 + arm_func_end ResolveAvailableNintendoWifi + + arm_func_start HandlePacket +HandlePacket: ; 0x022F5CF0 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + cmp r1, #7 + mov r6, r2 + mov r4, r3 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, pc} + ldr r1, _022F5D9C ; =ov00_0232888C + add r0, r6, #4 + mov r2, #4 + bl memcmp + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _022F5DA0 ; =ov00_02328884 + ldrh r1, [r6, #2] + ldrh r0, [r0, #6] + cmp r1, r0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _022F5DA4 ; =ov00_0231A7E0 + mov r0, r5 + mov r2, #3 + bl memcmp + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldrsb r2, [r5, #3] + ldrsb r1, [r5, #4] + ldrsb r0, [r5, #5] + mov r3, r2, lsl #0x18 + mov r2, r1, lsl #0x10 + mov r1, r0, lsl #8 + and r3, r3, #0xff000000 + and r2, r2, #0xff0000 + ldrb r0, [r5, #6] + orr r2, r3, r2 + and r1, r1, #0xff00 + orr r1, r2, r1 + orr r0, r1, r0 + str r0, [r4] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F5D9C: .word ov00_0232888C +_022F5DA0: .word ov00_02328884 +_022F5DA4: .word ov00_0231A7E0 + arm_func_end HandlePacket + + arm_func_start GsiAvailableCheckThink +GsiAvailableCheckThink: ; 0x022F5DA8 + stmdb sp!, {r3, lr} + sub sp, sp, #0x58 + ldr r0, _022F5EE8 ; =ov00_02328884 + mov r2, #8 + ldr r0, [r0] + sub r1, r2, #9 + str r2, [sp, #0xc] + cmp r0, r1 + bne _022F5DE0 + ldr r1, _022F5EEC ; =ov00_02328800 + mov r0, #1 + str r0, [r1] + add sp, sp, #0x58 + ldmia sp!, {r3, pc} +_022F5DE0: + bl CanReceiveOnSocket + cmp r0, #0 + beq _022F5E88 + add r0, sp, #0x10 + str r0, [sp] + add r1, sp, #0xc + str r1, [sp, #4] + ldr r0, _022F5EE8 ; =ov00_02328884 + add r1, sp, #0x18 + ldr r0, [r0] + mov r2, #0x40 + mov r3, #0 + bl SocketRecvFrom + mov r1, r0 + add r0, sp, #0x18 + add r2, sp, #0x10 + add r3, sp, #8 + bl HandlePacket + cmp r0, #0 + bne _022F5E88 + ldr r0, _022F5EE8 ; =ov00_02328884 + ldr r0, [r0] + bl SocketClose + ldr r0, [sp, #8] + tst r0, #1 + beq _022F5E58 + ldr r0, _022F5EEC ; =ov00_02328800 + mov r1, #2 + str r1, [r0] + b _022F5E78 +_022F5E58: + tst r0, #2 + ldreq r0, _022F5EEC ; =ov00_02328800 + moveq r1, #1 + streq r1, [r0] + beq _022F5E78 + ldr r0, _022F5EEC ; =ov00_02328800 + mov r1, #3 + str r1, [r0] +_022F5E78: + ldr r0, _022F5EEC ; =ov00_02328800 + add sp, sp, #0x58 + ldr r0, [r0] + ldmia sp!, {r3, pc} +_022F5E88: + bl current_time_gsi + ldr r1, _022F5EE8 ; =ov00_02328884 + ldr r2, [r1, #0x50] + add r2, r2, #0x7d0 + cmp r0, r2 + bls _022F5EDC + ldr r0, [r1, #0x54] + cmp r0, #1 + bne _022F5EC8 + ldr r0, [r1] + bl SocketClose + ldr r1, _022F5EEC ; =ov00_02328800 + mov r0, #1 + str r0, [r1] + add sp, sp, #0x58 + ldmia sp!, {r3, pc} +_022F5EC8: + bl SendPacket_Gsi + ldr r0, _022F5EE8 ; =ov00_02328884 + ldr r1, [r0, #0x54] + add r1, r1, #1 + str r1, [r0, #0x54] +_022F5EDC: + mov r0, #0 + add sp, sp, #0x58 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F5EE8: .word ov00_02328884 +_022F5EEC: .word ov00_02328800 + arm_func_end GsiAvailableCheckThink + + arm_func_start GsiCryptRsaGeneratePad +GsiCryptRsaGeneratePad: ; 0x022F5EF0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + mov r8, r0 + bl current_time_gsi + bl Util_RandSeed + mov r6, #0 + cmp r7, #0 + ldmlsia sp!, {r4, r5, r6, r7, r8, pc} + mov r5, r6 + mov r4, #0xff +_022F5F18: + mov r0, r5 + mov r1, r4 + bl RandRangeOverlay0 + add r0, r0, #1 + strb r0, [r8, r6] + add r6, r6, #1 + cmp r6, r7 + blo _022F5F18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end GsiCryptRsaGeneratePad + + arm_func_start GsCryptRsaEncryptBuffer +GsCryptRsaEncryptBuffer: ; 0x022F5F3C + ldr ip, _022F5F44 ; =GsCryptRsaPkcs1EncryptBuffer + bx ip + .align 2, 0 +_022F5F44: .word GsCryptRsaPkcs1EncryptBuffer + arm_func_end GsCryptRsaEncryptBuffer + + arm_func_start GsCryptRsaPkcs1EncryptBuffer +GsCryptRsaPkcs1EncryptBuffer: ; 0x022F5F48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x184 + mov r7, r2 + mov sb, r0 + cmp r7, #0x75 + add r4, sp, #0x104 + mov r8, r1 + mov r6, r3 + addhi sp, sp, #0x184 + mvnhi r0, #0 + ldmhiia sp!, {r4, r5, r6, r7, r8, sb, pc} + rsb r5, r7, #0x7d + mov r3, #0 + mov r2, #2 + mov r1, r5 + add r0, r4, #2 + strb r3, [r4] + strb r2, [r4, #1] + bl GsiCryptRsaGeneratePad + add r3, r4, #2 + rsb r0, r7, #0x7e + add r4, r4, r5 + mov r5, #0 + mov r1, r8 + mov r2, r7 + add r0, r3, r0 + strb r5, [r4, #2] + bl memcpy + add r0, sp, #0 + add r1, sp, #0x104 + mov r2, #0x80 + bl GsLargeIntSetFromMemoryStream + cmp r0, #0 + beq _022F6000 + add r0, sp, #0 + mov r2, sb + mov r3, r0 + add r1, sb, #0x104 + bl GsLargeIntPowerMod + cmp r0, #0 + beq _022F6000 + add r0, sp, #0 + mov r1, r6 + bl GsLargeIntWriteToMemoryStream + cmp r0, #0 + bne _022F600C +_022F6000: + add sp, sp, #0x184 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022F600C: + mov r0, r5 + add sp, sp, #0x184 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end GsCryptRsaPkcs1EncryptBuffer + + arm_func_start GsiLargeIntTimerEnter +GsiLargeIntTimerEnter: ; 0x022F6018 + stmdb sp!, {r4, lr} + ldr r1, _022F605C ; =ov00_023288E8 + mov r4, r0 + ldr r0, [r1, r4, lsl #4] + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022F6060 ; =ov00_023288E4 + ldr r0, [r1, r4, lsl #4] + add r0, r0, #1 + str r0, [r1, r4, lsl #4] + bl current_time_hires_gsi + ldr r2, _022F6064 ; =ov00_023288DC + ldr r1, _022F605C ; =ov00_023288E8 + str r0, [r2, r4, lsl #4] + mov r0, #1 + str r0, [r1, r4, lsl #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022F605C: .word ov00_023288E8 +_022F6060: .word ov00_023288E4 +_022F6064: .word ov00_023288DC + arm_func_end GsiLargeIntTimerEnter + + arm_func_start GsiLargeIntTimerExit +GsiLargeIntTimerExit: ; 0x022F6068 + stmdb sp!, {r4, lr} + ldr r1, _022F60B0 ; =ov00_023288E8 + mov r4, r0 + ldr r0, [r1, r4, lsl #4] + cmp r0, #1 + ldmneia sp!, {r4, pc} + bl current_time_hires_gsi + ldr r1, _022F60B4 ; =ov00_023288DC + ldr r3, _022F60B8 ; =ov00_023288E0 + ldr r1, [r1, r4, lsl #4] + ldr r2, [r3, r4, lsl #4] + sub r0, r0, r1 + add r1, r2, r0 + ldr r0, _022F60B0 ; =ov00_023288E8 + str r1, [r3, r4, lsl #4] + mov r1, #0 + str r1, [r0, r4, lsl #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022F60B0: .word ov00_023288E8 +_022F60B4: .word ov00_023288DC +_022F60B8: .word ov00_023288E0 + arm_func_end GsiLargeIntTimerExit + + arm_func_start GsiLargeIntCompare +GsiLargeIntCompare: ; 0x022F60BC + b _022F60C4 +_022F60C0: + sub r1, r1, #1 + arm_func_end GsiLargeIntCompare +_022F60C4: + add ip, r0, r1, lsl #2 + ldr ip, [ip, #-4] + cmp ip, #0 + bne _022F60E4 + cmp r1, #0 + bne _022F60C0 + b _022F60E4 +_022F60E0: + sub r3, r3, #1 +_022F60E4: + add ip, r2, r3, lsl #2 + ldr ip, [ip, #-4] + cmp ip, #0 + bne _022F60FC + cmp r3, #0 + bne _022F60E0 +_022F60FC: + cmp r1, r3 + mvnlo r0, #0 + bxlo lr + movhi r0, #1 + bxhi lr + cmp r1, #0 + beq _022F6144 +_022F6118: + add ip, r2, r1, lsl #2 + add r3, r0, r1, lsl #2 + ldr ip, [ip, #-4] + ldr r3, [r3, #-4] + cmp r3, ip + mvnlo r0, #0 + bxlo lr + movhi r0, #1 + bxhi lr + subs r1, r1, #1 + bne _022F6118 +_022F6144: + mov r0, #0 + bx lr + + arm_func_start GsiLargeIntStripLeadingZeroes +GsiLargeIntStripLeadingZeroes: ; 0x022F614C + b _022F615C +_022F6150: + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + arm_func_end GsiLargeIntStripLeadingZeroes +_022F615C: + ldr r1, [r0] + cmp r1, #0 + beq _022F6174 + ldr r1, [r0, r1, lsl #2] + cmp r1, #0 + beq _022F6150 +_022F6174: + mov r0, #1 + bx lr + + arm_func_start GsiLargeIntAdd +GsiLargeIntAdd: ; 0x022F617C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, #0 + mov sl, r0 + mov r0, #3 + mov fp, r1 + mov sb, r2 + mov r8, r3 + mov r5, r6 + mov r4, r6 + ldr r7, [sp, #0x28] + bl GsiLargeIntTimerEnter + ldr r0, [sp, #0x30] + cmp r0, fp + cmphs r0, r8 + movlo r0, #0 + ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp fp, r8 + movlo r0, fp + movlo r1, sb + movhs r0, r8 + movhs r8, fp + movhs r1, sl + cmp r0, #0 + bls _022F620C + mov r2, #0 +_022F61E0: + ldr fp, [sl, r6, lsl #2] + ldr r3, [sb, r6, lsl #2] + adds fp, fp, r3 + adc r3, r2, #0 + adds r5, r5, fp + str r5, [r7, r6, lsl #2] + adc r5, r4, r3 + add r6, r6, #1 + cmp r6, r0 + mov r4, #0 + blo _022F61E0 +_022F620C: + mov r2, #0 + mov r0, r2 + b _022F6230 +_022F6218: + ldr r3, [r1, r6, lsl #2] + adds r3, r5, r3 + str r3, [r7, r6, lsl #2] + adc r5, r4, #0 + add r6, r6, #1 + mov r4, #0 +_022F6230: + cmp r4, r2 + cmpeq r5, r0 + beq _022F6244 + cmp r6, r8 + blo _022F6218 +_022F6244: + mov r0, #0 + cmp r4, r0 + cmpeq r5, r0 + beq _022F6270 + ldr r2, [sp, #0x30] + cmp r2, r6 + ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + str r5, [r7, r6, lsl #2] + mov r5, r0 + mov r4, r0 + add r6, r6, #1 +_022F6270: + cmp r6, r8 + bhs _022F6298 + add r1, r1, r6, lsl #2 + add r0, r7, r6, lsl #2 + cmp r0, r1 + beq _022F6294 + sub r2, r8, r6 + mov r2, r2, lsl #2 + bl memcpy +_022F6294: + mov r6, r8 +_022F6298: + ldr r1, [sp, #0x2c] + mov r0, #3 + str r6, [r1] + bl GsiLargeIntTimerExit + mov r0, #0 + cmp r4, r0 + cmpeq r5, r0 + moveq r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GsiLargeIntAdd + + arm_func_start GsiLargeIntSub +GsiLargeIntSub: ; 0x022F62BC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov fp, r1 + mov r8, r3 + cmp fp, r8 + strlo fp, [sp] + mov r5, #0 + mov sl, r0 + strhs r8, [sp] + mov r0, #4 + mov sb, r2 + mov r4, r5 + ldr r7, [sp, #0x28] + mov r6, #0 + bl GsiLargeIntTimerEnter + ldr r0, [sp] + cmp r0, #0 + bls _022F6338 + mov r1, r6 +_022F6304: + ldr r2, [sb, r6, lsl #2] + ldr r0, [sl, r6, lsl #2] + subs r2, r2, r0 + rsc r0, r1, #0 + subs r3, r2, r5 + sbc r2, r0, r4 + str r3, [r7, r6, lsl #2] + ldr r0, [sp] + add r6, r6, #1 + cmp r6, r0 + mov r5, r2, lsr #0x1f + mov r4, #0 + blo _022F6304 +_022F6338: + cmp r6, r8 + bhs _022F6364 +_022F6340: + ldr r0, [sb, r6, lsl #2] + subs r1, r0, r5 + rsc r0, r4, #0 + str r1, [r7, r6, lsl #2] + add r6, r6, #1 + cmp r6, r8 + mov r5, r0, lsr #0x1f + mov r4, #0 + blo _022F6340 +_022F6364: + cmp r4, #0 + cmpeq r5, #0 + beq _022F6380 + mov r0, #4 + bl GsiLargeIntTimerExit + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F6380: + cmp r6, fp + bhs _022F63B0 +_022F6388: + ldr r0, [sl, r6, lsl #2] + cmp r0, #0 + beq _022F63A4 + mov r0, #4 + bl GsiLargeIntTimerExit + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F63A4: + add r6, r6, #1 + cmp r6, fp + blo _022F6388 +_022F63B0: + ldr r1, [sp, #0x2c] + mov r0, #4 + str r8, [r1] + bl GsiLargeIntTimerExit + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GsiLargeIntSub + + arm_func_start GsiLargeIntMult +GsiLargeIntMult: ; 0x022F63C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x114 + str r0, [sp] + ldr r0, [sp, #0x13c] + ldr r4, [sp, #0x140] + str r0, [sp, #0x13c] + mov r0, #0 + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + add r6, sp, #0x10 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r5, #8 +_022F6404: + stmia r6!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _022F6404 + ldr r1, [sp, #0x13c] + str r0, [r6] + mov r0, #0 + str r0, [r1] + bl GsiLargeIntTimerEnter + ldr r0, [sp, #0xc] + mov fp, #0 + cmp r0, #0 + bls _022F6534 +_022F6438: + ldr r0, [sp, #8] + ldr r0, [r0, fp, lsl #2] + cmp r0, #0 + beq _022F6524 + ldr r0, [sp, #4] + mov r7, #0 + cmp r0, #0 + bls _022F6524 + add r6, sp, #0x10 + mov r3, r7 + mov r2, r7 + mov r1, r7 + mov r0, r7 + mov ip, r7 +_022F6470: + ldr r5, [sp] + ldr r8, [sp, #8] + ldr r5, [r5, r7, lsl #2] + ldr r8, [r8, fp, lsl #2] + add sl, fp, r7 + umull sb, r8, r5, r8 + cmp sl, r4 + blo _022F64A4 + mov r0, #0 + bl GsiLargeIntTimerExit + add sp, sp, #0x114 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F64A4: + cmp r8, #0 + cmpeq sb, ip + beq _022F6508 +_022F64B0: + add r5, r6, sl, lsl #2 + ldr lr, [r5, #4] + add sl, sl, #1 + adds sb, sb, lr + str sb, [r5, #4] + adc sb, r8, #0 + cmp sl, r4 + mov r8, #0 + bhi _022F64E8 + cmp sl, r4 + bne _022F64FC + cmp r8, r3 + cmpeq sb, r2 + beq _022F64FC +_022F64E8: + mov r0, #0 + bl GsiLargeIntTimerExit + add sp, sp, #0x114 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F64FC: + cmp r8, r1 + cmpeq sb, r0 + bne _022F64B0 +_022F6508: + ldr r5, [sp, #0x10] + add r7, r7, #1 + cmp sl, r5 + ldr r5, [sp, #4] + strhi sl, [sp, #0x10] + cmp r7, r5 + blo _022F6470 +_022F6524: + ldr r0, [sp, #0xc] + add fp, fp, #1 + cmp fp, r0 + blo _022F6438 +_022F6534: + add r1, sp, #0x10 + b _022F6548 +_022F653C: + ldr r0, [sp, #0x10] + sub r0, r0, #1 + str r0, [sp, #0x10] +_022F6548: + ldr r4, [sp, #0x10] + cmp r4, #0 + beq _022F6560 + ldr r0, [r1, r4, lsl #2] + cmp r0, #0 + beq _022F653C +_022F6560: + ldr r3, [sp, #0x13c] + ldr r0, [sp, #0x138] + add r1, sp, #0x14 + mov r2, r4, lsl #2 + str r4, [r3] + bl memcpy + mov r0, #0 + bl GsiLargeIntTimerExit + mov r0, #1 + add sp, sp, #0x114 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GsiLargeIntMult + + arm_func_start GsLargeIntDiv +GsLargeIntDiv: ; 0x022F658C + stmdb sp!, {r3, lr} + str r3, [sp] + mov ip, r1 + mov r3, r2 + ldr r1, [r0], #4 + mov r2, ip + bl GsiLargeIntDiv + ldmia sp!, {r3, pc} + arm_func_end GsLargeIntDiv + + arm_func_start GsiLargeIntDiv +GsiLargeIntDiv: ; 0x022F65AC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x314 + mov r4, r0 + mov r0, #5 + mov r6, r1 + mov r5, r3 + add r8, r2, #4 + ldr fp, [sp, #0x338] + ldr sb, [r2] + mov r7, #0x1f + mov sl, #0 + bl GsiLargeIntTimerEnter + mov r0, sl + add ip, sp, #0x10 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov lr, #0x10 +_022F65F4: + stmia ip!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs lr, lr, #1 + bne _022F65F4 + cmp r6, #0x40 + bls _022F6624 + cmp r5, #0 + addne sp, sp, #0x314 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + b _022F6624 +_022F6620: + sub r6, r6, #1 +_022F6624: + cmp r6, #0 + beq _022F6644 + add r0, r4, r6, lsl #2 + ldr r0, [r0, #-4] + cmp r0, #0 + beq _022F6620 + b _022F6644 +_022F6640: + sub sb, sb, #1 +_022F6644: + cmp sb, #0 + beq _022F665C + add r0, r8, sb, lsl #2 + ldr r0, [r0, #-4] + cmp r0, #0 + beq _022F6640 +_022F665C: + mov r0, r6, lsl #2 + str r0, [sp, #8] + ldr r2, [sp, #8] + add r0, sp, #0x10 + mov r1, r4 + bl memcpy + mov r0, #0 + add ip, sp, #0x210 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r4, #8 +_022F668C: + stmia ip!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _022F668C + cmp r6, #0 + str r0, [ip] + cmpne sb, #0 + bne _022F66E8 + cmp r5, #0 + movne r0, #0 + strne r0, [r5, #4] + strne r0, [r5] + cmp fp, #0 + movne r0, #0 + strne r0, [fp, #4] + strne r0, [fp] + mov r0, #5 + bl GsiLargeIntTimerExit + cmp sb, #0 + moveq r0, #0 + add sp, sp, #0x314 + movne r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F66E8: + add r0, sp, #0x10 + mov r1, r6 + mov r2, r8 + mov r3, sb + bl GsiLargeIntCompare + mvn r1, #0 + cmp r0, r1 + bne _022F6740 + cmp r5, #0 + movne r0, #0 + strne r0, [r5] + strne r0, [r5, #4] + ldr r2, [sp, #8] + add r1, sp, #0x10 + add r0, fp, #4 + str r6, [fp] + bl memcpy + mov r0, #5 + bl GsiLargeIntTimerExit + add sp, sp, #0x314 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F6740: + sub r2, sb, #1 + ldr r1, [r8, r2, lsl #2] + mov r0, #1 + b _022F6754 +_022F6750: + sub r7, r7, #1 +_022F6754: + tst r1, r0, lsl r7 + bne _022F6764 + cmp r7, #0 + bge _022F6750 +_022F6764: + mvn r0, #0 + cmp r7, r0 + bne _022F6784 + mov r0, #5 + bl GsiLargeIntTimerExit + add sp, sp, #0x314 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F6784: + mov r4, sb + add r7, r7, r2, lsl #5 + sub r6, r6, sb +_022F6790: + add r0, sp, #0x10 + mov r1, r4 + mov r2, r8 + mov r3, sb + add r0, r0, r6, lsl #2 + bl GsiLargeIntCompare + mvn r1, #0 + cmp r0, r1 + bne _022F67C8 + cmp r6, #0 + subgt r6, r6, #1 + addgt r4, r4, #1 + movle sl, #1 + b _022F68CC +_022F67C8: + cmp r0, #0 + mov r1, #0 + add r0, sp, #0x10 + bne _022F6818 + mov r2, r4, lsl #2 + add r0, r0, r6, lsl #2 + bl memset + add r0, sp, #0x210 + add r2, r0, r6, lsl #2 + ldr r0, [r2, #4] + add r1, r6, r4 + add r0, r0, #1 + str r0, [r2, #4] + ldr r0, [sp, #0x210] + cmp r0, r1 + strlo r1, [sp, #0x210] + subs r6, r6, r4 + mov r4, #1 + movmi sl, r4 + b _022F68CC +_022F6818: + str r1, [sp, #0xc] + add ip, sp, #0xc + mov r1, r4 + mov r2, r8 + mov r3, sb + add r0, r0, r6, lsl #2 + stmia sp, {r7, ip} + bl GsiLargeIntSubDivide + cmp r0, #0 + bne _022F6854 + mov r0, #5 + bl GsiLargeIntTimerExit + add sp, sp, #0x314 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F6854: + add r0, sp, #0x210 + add r2, r0, r6, lsl #2 + ldr r3, [sp, #0xc] + ldr r0, [r2, #4] + add r1, r6, r4 + add r0, r3, r0 + str r0, [r2, #4] + ldr r0, [sp, #0x210] + cmp r0, r1 + add r0, sp, #0x10 + strlo r1, [sp, #0x210] + add r1, r0, r6, lsl #2 + b _022F688C +_022F6888: + sub r4, r4, #1 +_022F688C: + add r0, r1, r4, lsl #2 + ldr r0, [r0, #-4] + cmp r0, #0 + bne _022F68A4 + cmp r4, #1 + bgt _022F6888 +_022F68A4: + add r0, sp, #0x10 + add r1, r0, r4, lsl #2 + b _022F68B4 +_022F68B0: + sub r6, r6, #1 +_022F68B4: + add r0, r1, r6, lsl #2 + ldr r0, [r0, #-4] + cmp r0, #0 + bne _022F68CC + cmp r6, #1 + bgt _022F68B0 +_022F68CC: + cmp sl, #0 + beq _022F6790 + cmp r6, #0 + movlt r0, #0 + strlt r0, [fp, #4] + strlt r0, [fp] + blt _022F6900 + add r1, sp, #0x10 + add r0, fp, #4 + add r1, r1, r6, lsl #2 + mov r2, r4, lsl #2 + bl memcpy + str r4, [fp] +_022F6900: + cmp r5, #0 + beq _022F6924 + ldr r2, [sp, #0x210] + add r1, sp, #0x214 + add r0, r5, #4 + mov r2, r2, lsl #2 + bl memcpy + ldr r0, [sp, #0x210] + str r0, [r5] +_022F6924: + mov r0, #5 + bl GsiLargeIntTimerExit + mov r0, #1 + add sp, sp, #0x314 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GsiLargeIntDiv + + arm_func_start GsiLargeIntSubDivide +GsiLargeIntSubDivide: ; 0x022F6938 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x214 + mov r6, r0 + mov r0, #6 + mov r5, r2 + mov r4, r3 + bl GsiLargeIntTimerEnter + ldr r2, [sp, #0x23c] + cmp r2, r4 + subls r0, r2, #1 + ldrls sb, [r6, r0, lsl #2] + movls ip, #0 + bls _022F6994 + sub r1, r2, #2 + sub r0, r4, #1 + sub r2, r2, #1 + ldr r2, [r6, r2, lsl #2] + ldr r1, [r6, r1, lsl #2] + ldr r0, [r5, r0, lsl #2] + orr ip, r2, #0 + and r0, r1, r0 + orr sb, r0, #0 +_022F6994: + sub r0, r4, #1 + ldr r2, [r5, r0, lsl #2] + mov r0, sb + mov r1, ip + mov r3, #0 + bl _ll_udiv + mov sb, r0 + mov r0, #0 + mov ip, r1 + add r8, sp, #0xc + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #8 +_022F69CC: + stmia r8!, {r0, r1, r2, r3} + stmia r8!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F69CC + str r0, [r8] + str sb, [sp, #0x10] + str ip, [sp, #0x14] + cmp ip, #0 + beq _022F6A00 + mvn r1, #0 + mov r0, #0 + str r1, [sp, #0x10] + str r0, [sp, #0x14] +_022F6A00: + mov r0, #1 + str r0, [sp, #0xc] + add r1, sp, #0x114 + str r1, [sp] + add r0, sp, #0x110 + str r0, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + ldr r3, [sp, #0xc] + add r2, sp, #0x10 + mov r0, r5 + mov r1, r4 + bl GsiLargeIntMult + cmp r0, #0 + bne _022F6A58 + mov r0, #6 + bl GsiLargeIntTimerExit + add sp, sp, #0x214 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + add sp, sp, #0x10 + bx lr +_022F6A58: + ldr r1, [sp, #0x110] + ldr r3, [sp, #0x23c] + add r0, sp, #0x114 + mov r2, r6 + bl GsiLargeIntCompare + cmp r0, #1 + bne _022F6AF0 + add sl, sp, #0x114 + add sb, sp, #0x110 + mov r8, #0x40 + add r7, sp, #0x10 +_022F6A84: + ldr r1, [sp, #0x10] + mov r0, r5 + mov r1, r1, lsr #1 + str r1, [sp, #0x10] + str sl, [sp] + str sb, [sp, #4] + str r8, [sp, #8] + ldr r3, [sp, #0xc] + mov r1, r4 + mov r2, r7 + bl GsiLargeIntMult + cmp r0, #0 + bne _022F6AD4 + mov r0, #6 + bl GsiLargeIntTimerExit + add sp, sp, #0x214 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + add sp, sp, #0x10 + bx lr +_022F6AD4: + ldr r1, [sp, #0x110] + ldr r3, [sp, #0x23c] + mov r0, sl + mov r2, r6 + bl GsiLargeIntCompare + cmp r0, #1 + beq _022F6A84 +_022F6AF0: + add r0, sp, #0x23c + str r6, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x110] + ldr r3, [sp, #0x23c] + add r0, sp, #0x114 + mov r2, r6 + bl GsiLargeIntSub + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x24c] + mov r0, #6 + str r2, [r1] + bl GsiLargeIntTimerExit + mov r0, #1 + add sp, sp, #0x214 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + add sp, sp, #0x10 + bx lr + arm_func_end GsiLargeIntSubDivide + + arm_func_start GsLargeIntSquareMod +GsLargeIntSquareMod: ; 0x022F6B38 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + sub sp, sp, #0x400 + mov r7, r0 + ldr r4, [r7] + mov r6, #0 + mov r0, #7 + str r1, [sp, #0xc] + str r2, [sp, #0x10] + mov r5, r6 + mov fp, r6 + str r6, [sp, #0x14] + bl GsiLargeIntTimerEnter + mov r0, r6 + add sb, sp, #0x218 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r8, #0x10 +_022F6B84: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r8, r8, #1 + bne _022F6B84 + mov r0, #0 + add sb, sp, #0x18 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r8, #0x10 +_022F6BAC: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r8, r8, #1 + bne _022F6BAC + cmp r4, #1 + mov sb, #1 + ble _022F6C44 + mov r0, #0 +_022F6BCC: + mov sl, #0 + cmp sb, #0 + ble _022F6C18 + add r1, sp, #0x18 + add ip, r1, sb, lsl #2 + add r3, r7, sb, lsl #2 +_022F6BE4: + ldr r8, [ip, sl, lsl #2] + ldr r2, [r3, #4] + add r1, r7, sl, lsl #2 + ldr r1, [r1, #4] + mov lr, #0 + umlal r8, lr, r2, r1 + adds r1, r6, r8 + str r1, [ip, sl, lsl #2] + adc r6, r5, lr + mov r5, #0 + add sl, sl, #1 + cmp sl, sb + blt _022F6BE4 +_022F6C18: + cmp r5, #0 + cmpeq r6, r0 + beq _022F6C38 + add r2, sb, sl + add r1, sp, #0x18 + str r6, [r1, r2, lsl #2] + mov r6, r5 + mov r5, #0 +_022F6C38: + add sb, sb, #1 + cmp sb, r4 + blt _022F6BCC +_022F6C44: + mov r1, r4, lsl #1 + cmp r1, #0 + mov r8, #0 + ble _022F6C8C + mov r2, r8 + mov r3, #1 + add r5, sp, #0x18 +_022F6C60: + ldr r6, [r5, r8, lsl #2] + and r0, r6, #0x80000000 + cmp r0, #0x80000000 + moveq sb, r3 + add r0, fp, r6, lsl #1 + movne sb, r2 + str r0, [r5, r8, lsl #2] + add r8, r8, #1 + mov fp, sb + cmp r8, r1 + blt _022F6C60 +_022F6C8C: + cmp r4, #0 + mov r8, #0 + ble _022F6CC8 + mov r6, r8 + add r2, sp, #0x218 +_022F6CA0: + add r0, r7, r8, lsl #2 + ldr r5, [r0, #4] + add r8, r8, #1 + umull r0, r3, r5, r5 + str r0, [r2, r6, lsl #2] + add r0, r2, r6, lsl #2 + str r3, [r0, #4] + cmp r8, r4 + add r6, r6, #2 + blt _022F6CA0 +_022F6CC8: + add r2, sp, #0x218 + str r1, [sp, #0x14] + add r0, sp, #0x14 + str r2, [sp] + str r0, [sp, #4] + mov r4, #0x80 + add r0, sp, #0x18 + mov r3, r1 + str r4, [sp, #8] + bl GsiLargeIntAdd + ldr r0, [sp, #0x10] + ldr r2, [sp, #0xc] + str r0, [sp] + ldr r1, [sp, #0x14] + add r0, sp, #0x218 + mov r3, #0 + bl GsiLargeIntDiv + mov r4, r0 + mov r0, #7 + bl GsiLargeIntTimerExit + mov r0, r4 + add sp, sp, #0x18 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GsLargeIntSquareMod + + arm_func_start GsLargeIntPowerMod +GsLargeIntPowerMod: ; 0x022F6D28 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x28 + sub sp, sp, #0x800 + mov r6, r0 + mov r0, #8 + mov r5, r1 + mov r4, r2 + mov r8, r3 + bl GsiLargeIntTimerEnter + mov r0, #0 + add sb, sp, #0x700 + add sb, sb, #0x24 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #8 +_022F6D68: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F6D68 + str r0, [sb] + mov r0, #0 + add sb, sp, #0x620 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #8 +_022F6D94: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F6D94 + str r0, [sb] + mov r0, #0 + add sb, sp, #0x500 + add sb, sb, #0x1c + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #8 +_022F6DC4: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F6DC4 + str r0, [sb] + mov r0, #0 + add sb, sp, #0x400 + add sb, sb, #0x18 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #8 +_022F6DF4: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F6DF4 + str r0, [sb] + mov r0, #0 + add sb, sp, #0x314 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #8 +_022F6E20: + stmia sb!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F6E20 + str r0, [sb] + add r0, sp, #0x210 + mov r1, r6 + mov r2, #0x104 + bl memcpy + add r0, sp, #0x10c + mov r1, r5 + mov r2, #0x104 + bl memcpy + add r0, sp, #8 + mov r1, r4 + mov r2, #0x104 + bl memcpy + add r0, sp, #0x210 + bl GsiLargeIntStripLeadingZeroes + add r0, sp, #0x10c + bl GsiLargeIntStripLeadingZeroes + add r0, sp, #8 + bl GsiLargeIntStripLeadingZeroes + ldr r3, [sp, #8] + cmp r3, #0 + bne _022F6EA8 + mov r1, #0 + mov r0, #8 + str r1, [r8] + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F6EA8: + cmp r3, #1 + ldreq r0, [sp, #0xc] + cmpeq r0, #1 + bne _022F6EDC + mov r1, #0 + str r1, [r8] + mov r0, #8 + str r1, [r8, #4] + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F6EDC: + ldr r0, [sp, #0x10c] + cmp r0, #0 + bne _022F6F0C + mov r1, #1 + str r1, [r8] + mov r0, #8 + str r1, [r8, #4] + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F6F0C: + ldr r0, [sp, #0xc] + tst r0, #1 + bne _022F6F3C + mov r1, #0 + str r1, [r8] + mov r0, #8 + str r1, [r8, #4] + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F6F3C: + ldr r1, [sp, #0x210] + add r0, sp, #0x214 + add r2, sp, #0xc + bl GsiLargeIntCompare + mvn r1, #0 + cmp r0, r1 + beq _022F6F6C + add r0, sp, #0x210 + add r1, sp, #8 + mov r3, r0 + mov r2, #0 + bl GsLargeIntDiv +_022F6F6C: + ldr r0, [sp, #0x210] + cmp r0, #0 + bne _022F6F9C + mov r1, #0 + str r1, [r8] + mov r0, #8 + str r1, [r8, #4] + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F6F9C: + ldr r1, [sp, #0x10c] + add r0, sp, #0x110 + sub r5, r1, #1 + ldr r0, [r0, r5, lsl #2] + mov r4, #0x20 + tst r0, #0x80000000 + bne _022F6FD8 + add r0, sp, #0x10c + add r0, r0, r5, lsl #2 + ldr r0, [r0, #4] + mov r2, #1 +_022F6FC8: + sub r4, r4, #1 + sub r1, r4, #1 + tst r0, r2, lsl r1 + beq _022F6FC8 +_022F6FD8: + mov r0, #0 + add r6, sp, #0x700 + add r4, r4, r5, lsl #5 + add r6, r6, #0x24 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r5, #8 +_022F6FF8: + stmia r6!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _022F6FF8 + ldr r1, [sp, #8] + str r0, [r6] + add r3, r1, #1 + cmp r3, #0x40 + str r3, [sp, #0x724] + addhi sp, sp, #0x28 + addhi sp, sp, #0x800 + movhi r0, #0 + ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r2, sp, #0x700 + add r2, r2, #0x28 + add r0, sp, #8 + add r1, sp, #4 + sub r3, r3, #1 + mov r5, #1 + str r5, [r2, r3, lsl #2] + bl GsiLargeIntInverseMod + add r0, sp, #0x700 + add r0, r0, #0x24 + add r1, sp, #8 + add r3, sp, #0x620 + mov r2, #0 + bl GsLargeIntDiv + cmp r0, #0 + bne _022F7084 + mov r0, #8 + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F7084: + add r2, sp, #0x500 + add r0, sp, #0x620 + add r1, sp, #8 + add r2, r2, #0x1c + bl GsLargeIntSquareMod + cmp r0, #0 + bne _022F70B8 + mov r0, #8 + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F70B8: + add r1, sp, #0x314 + str r1, [sp] + add r1, sp, #0x500 + ldr r3, [sp, #4] + add r0, sp, #0x210 + add r1, r1, #0x1c + add r2, sp, #8 + bl GsiLargeIntMultM + cmp r0, #0 + bne _022F70F8 + mov r0, #8 + bl GsiLargeIntTimerExit + add sp, sp, #0x28 + add sp, sp, #0x800 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F70F8: + add r1, sp, #0x620 + mov r0, r8 + mov r2, #0x104 + bl memcpy + subs r7, r4, #1 + bmi _022F7170 + add sb, sp, #0x314 + add r6, sp, #8 + add r4, sp, #0x10c +_022F711C: + str r8, [sp] + ldr r3, [sp, #4] + mov r0, r8 + mov r1, r8 + mov r2, r6 + bl GsiLargeIntMultM + mov r0, r7, lsr #5 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #4] + and r1, r7, #0x1f + and r0, r0, r5, lsl r1 + cmp r0, r5, lsl r1 + bne _022F7168 + str r8, [sp] + ldr r3, [sp, #4] + mov r0, r8 + mov r1, sb + mov r2, r6 + bl GsiLargeIntMultM +_022F7168: + subs r7, r7, #1 + bpl _022F711C +_022F7170: + mov r0, #1 + str r0, [sp, #0x418] + str r0, [sp, #0x41c] + str r8, [sp] + add r1, sp, #0x400 + ldr r3, [sp, #4] + add r1, r1, #0x18 + add r2, sp, #8 + mov r0, r8 + bl GsiLargeIntMultM + mov r0, #8 + bl GsiLargeIntTimerExit + mov r0, #1 + add sp, sp, #0x28 + add sp, sp, #0x800 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end GsLargeIntPowerMod + + arm_func_start GsiLargeIntMultM +GsiLargeIntMultM: ; 0x022F71B0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x218 + mov r6, r0 + mov r0, #0 + mov r5, r1 + ldr r1, [sp, #0x240] + mov r4, r2 + str r3, [sp, #0xc] + str r0, [sp, #0x14] + str r1, [sp, #0x240] + ldr r1, [r4] + add r8, sp, #0x18 + str r1, [sp, #0x10] + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r7, #0x10 +_022F71F4: + stmia r8!, {r0, r1, r2, r3} + stmia r8!, {r0, r1, r2, r3} + subs r7, r7, #1 + bne _022F71F4 + add r1, sp, #0x18 + add r0, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + ldr r1, [r6] + ldr r3, [r5] + add r0, r6, #4 + add r2, r5, #4 + bl GsiLargeIntMult + cmp r0, #0 + addeq sp, sp, #0x218 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r6, [r4] + ldr r0, [sp, #0x14] + add r2, sp, #0x18 + sub r3, r6, #1 + add r1, r4, #4 + cmp r0, r6, lsl #1 + add fp, r2, r3, lsl #2 + add r5, r1, r3, lsl #2 + bhs _022F7284 + rsb r1, r0, r6, lsl #1 + add r0, r2, r0, lsl #2 + mov r2, r1, lsl #2 + mov r1, #0 + bl memset + ldr r0, [r4] + mov r0, r0, lsl #1 + str r0, [sp, #0x14] +_022F7284: + add lr, sp, #0x18 + cmp lr, fp + bhi _022F735C +_022F7290: + ldr r1, [lr] + ldr r0, [sp, #0xc] + add r6, r4, #4 + umull sb, r1, r0, r1 + mov sl, #0 + cmp r6, r5 + mov r7, lr + mov r8, sl + cmpls r6, r5 + bhi _022F72EC + mov r0, sl +_022F72BC: + ldr r1, [r6], #4 + ldr ip, [r7] + umull r3, r2, sb, r1 + adds r3, ip, r3 + mla r2, sb, r0, r2 + mla r2, r8, r1, r2 + adc r1, r2, #0 + adds sl, sl, r3 + str sl, [r7], #4 + adc sl, r1, #0 + cmp r6, r5 + bls _022F72BC +_022F72EC: + ldr r0, [sp, #0x14] + mov r3, #0 + add r1, sp, #0x18 + sub r0, r0, #1 + add r2, r1, r0, lsl #2 + mov r8, r3 + mov r1, r3 + mov r0, r3 + b _022F7320 +_022F7310: + ldr r6, [r7] + adds sl, r6, sl + str sl, [r7], #4 + adc sl, r3, #0 +_022F7320: + cmp r8, r1 + cmpeq sl, r0 + beq _022F7334 + cmp r7, r2 + bls _022F7310 +_022F7334: + cmp r8, #0 + cmpeq sl, #0 + beq _022F7350 + ldr r0, [sp, #0x14] + str sl, [r7] + add r0, r0, #1 + str r0, [sp, #0x14] +_022F7350: + add lr, lr, #4 + cmp lr, fp + bls _022F7290 +_022F735C: + ldr r0, [sp, #0x10] + add r1, sp, #0x18 + add r5, r1, r0, lsl #2 + ldr r2, [sp, #0x14] + ldr r1, [sp, #0x10] + ldr r3, [r4] + sub r1, r2, r1 + mov r0, r5 + add r2, r4, #4 + bl GsiLargeIntCompare + mvn r1, #0 + cmp r0, r1 + beq _022F740C + ldr r0, [sp, #0x240] + ldr r3, [sp, #0x10] + add r0, r0, #4 + str r0, [sp] + ldr r0, [sp, #0x240] + mov r2, r5 + str r0, [sp, #4] + ldr r6, [sp, #0x14] + ldr r1, [r4] + add r0, r4, #4 + sub r3, r6, r3 + bl GsiLargeIntSub + cmp r0, #0 + bne _022F746C + mov r0, #0 + add r5, sp, #0x18 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r4, #0x10 +_022F73E0: + stmia r5!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _022F73E0 + ldr r0, [sp, #0x240] + mov r1, #0 + mov r2, #0x104 + bl memset + add sp, sp, #0x218 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F740C: + ldr r0, [sp, #0x240] + mov r1, #0 + mov r2, #0x104 + bl memset + ldr r1, [r4] + ldr r0, [sp, #0x240] + add r3, sp, #0x18 + str r1, [r0], #4 + ldr r2, [sp, #0x14] + ldr r1, [sp, #0x10] + sub r2, r2, r1 + add r1, r3, r1, lsl #2 + mov r2, r2, lsl #2 + bl memcpy + mov r0, #0 + add r5, sp, #0x18 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r4, #0x10 +_022F745C: + stmia r5!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _022F745C +_022F746C: + mov r0, #1 + add sp, sp, #0x218 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GsiLargeIntMultM + + arm_func_start GsiLargeIntInverseMod +GsiLargeIntInverseMod: ; 0x022F7478 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r3, #2 + mov r2, #0 + ldr r5, [r0, #4] + mov r0, r2 + mov lr, r3 + mov ip, #1 + mov r4, r2 + mvn r6, #0 +_022F749C: + umull sl, sb, r5, ip + mla sb, r5, r0, sb + mov r7, r2, lsl #1 + adds r8, r6, r3, lsl #1 + and r8, sl, r8 + orr r7, r7, r3, lsr #31 + adc r7, r7, r6 + mla sb, r4, ip, sb + and r7, sb, r7 + cmp r2, r7 + cmpeq r3, r8 + bhs _022F74D4 + adds ip, ip, r3 + adc r0, r0, r2 +_022F74D4: + mov r2, r2, lsl #1 + add lr, lr, #1 + orr r2, r2, r3, lsr #31 + cmp lr, #0x20 + mov r3, r3, lsl #1 + bls _022F749C + subs r0, r3, ip + str r0, [r1] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end GsiLargeIntInverseMod + + arm_func_start GsLargeIntReverseBytes +GsLargeIntReverseBytes: ; 0x022F74FC + ldr r1, [r0] + add r2, r0, #4 + add r0, r2, r1, lsl #2 + cmp r1, #0 + sub r3, r0, #1 + moveq r0, #1 + bxeq lr + cmp r2, r3 + bhs _022F7538 +_022F7520: + ldrsb r0, [r3] + ldrsb r1, [r2] + strb r0, [r2], #1 + strb r1, [r3], #-1 + cmp r2, r3 + blo _022F7520 +_022F7538: + mov r0, #1 + bx lr + arm_func_end GsLargeIntReverseBytes + + arm_func_start GsLargeIntSetFromMemoryStream +GsLargeIntSetFromMemoryStream: ; 0x022F7540 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r2 + and r3, r5, #3 + mov r4, r0 + rsb r0, r3, #4 + mov ip, #0 + add r3, r4, #4 + and r0, r0, #3 + add r0, r3, r0 + str ip, [r4, #4] + bl memcpy + add r0, r5, #3 + mov r1, r0, lsr #2 + mov r0, r4 + str r1, [r4] + bl GsLargeIntReverseBytes + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GsLargeIntSetFromMemoryStream + + arm_func_start GsLargeIntWriteToMemoryStream +GsLargeIntWriteToMemoryStream: ; 0x022F7584 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x104 + mov r2, r0 + mov r4, r1 + mov r1, r2 + add r0, sp, #0 + mov r2, #0x104 + bl memcpy + add r0, sp, #0 + bl GsLargeIntReverseBytes + ldr r2, [sp] + add r1, sp, #4 + mov r0, r4 + mov r2, r2, lsl #2 + bl memcpy + mov r0, #1 + add sp, sp, #0x104 + ldmia sp!, {r3, r4, pc} + arm_func_end GsLargeIntWriteToMemoryStream + + arm_func_start swap_byte_gsi +swap_byte_gsi: ; 0x022F75CC + ldrb r3, [r0] + ldrb r2, [r1] + strb r2, [r0] + strb r3, [r1] + bx lr + arm_func_end swap_byte_gsi + + arm_func_start RC4Init_Gsi +RC4Init_Gsi: ; 0x022F75E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + movs r8, r1 + mov r7, r2 + mov sb, r0 + mov r5, r4 + cmpne r7, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + strb r4, [sb] + mov r1, r4 + strb r4, [sb, #1] +_022F760C: + add r0, sb, r1 + strb r1, [r0, #2] + add r1, r1, #1 + cmp r1, #0x100 + blt _022F760C + mov r6, #0 + add sl, sb, #2 +_022F7628: + add r0, sb, r6 + ldrb r2, [r0, #2] + ldrb r1, [r8, r5] + add r0, sl, r6 + add r2, r4, r2 + add r1, r2, r1 + and r4, r1, #0xff + add r1, sl, r4 + bl swap_byte_gsi + mov r1, r7 + add r0, r5, #1 + bl _s32_div_f + add r6, r6, #1 + cmp r6, #0x100 + and r5, r1, #0xff + blt _022F7628 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end RC4Init_Gsi + + arm_func_start RC4Encrypt_Gsi +RC4Encrypt_Gsi: ; 0x022F766C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r3 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r5, #0 + cmp r6, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r4, sb, #2 +_022F7690: + ldrb r0, [sb] + add r1, r0, #1 + and r0, r1, #0xff + strb r1, [sb] + add r0, sb, r0 + ldrb r1, [sb, #1] + ldrb r0, [r0, #2] + add r0, r1, r0 + strb r0, [sb, #1] + ldrb r2, [sb] + and r0, r0, #0xff + add r1, r4, r0 + add r0, r4, r2 + bl swap_byte_gsi + ldrb r2, [sb] + ldrb r1, [sb, #1] + ldrb r0, [r8, r5] + add r2, sb, r2 + add r1, sb, r1 + ldrb r2, [r2, #2] + ldrb r1, [r1, #2] + add r1, r2, r1 + and r1, r1, #0xff + add r1, sb, r1 + ldrb r1, [r1, #2] + eor r0, r0, r1 + strb r0, [r7, r5] + add r5, r5, #1 + cmp r5, r6 + blt _022F7690 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end RC4Encrypt_Gsi + + arm_func_start Sha1Reset_Gsi +Sha1Reset_Gsi: ; 0x022F770C + cmp r0, #0 + moveq r0, #1 + bxeq lr + mov r3, #0 + str r3, [r0, #0x14] + str r3, [r0, #0x18] + ldr r1, _022F7760 ; =0x67452301 + strh r3, [r0, #0x1c] + ldr r2, _022F7764 ; =0xEFCDAB89 + str r1, [r0] + ldr r1, _022F7768 ; =0x98BADCFE + str r2, [r0, #4] + ldr r2, _022F776C ; =0x10325476 + str r1, [r0, #8] + ldr r1, _022F7770 ; =0xC3D2E1F0 + str r2, [r0, #0xc] + str r1, [r0, #0x10] + str r3, [r0, #0x60] + str r3, [r0, #0x64] + mov r0, r3 + bx lr + .align 2, 0 +_022F7760: .word 0x67452301 +_022F7764: .word 0xEFCDAB89 +_022F7768: .word 0x98BADCFE +_022F776C: .word 0x10325476 +_022F7770: .word 0xC3D2E1F0 + arm_func_end Sha1Reset_Gsi + + arm_func_start Sha1Result_Gsi +Sha1Result_Gsi: ; 0x022F7774 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + mov r4, r1 + cmpne r4, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #0x64] + cmp r1, #0 + movne r0, r1 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #0x60] + cmp r1, #0 + bne _022F77D8 + bl Sha1PadMessage + mov r2, #0 + mov r1, r2 +_022F77B4: + add r0, r5, r2 + add r2, r2, #1 + strb r1, [r0, #0x1e] + cmp r2, #0x40 + blt _022F77B4 + str r1, [r5, #0x14] + str r1, [r5, #0x18] + mov r0, #1 + str r0, [r5, #0x60] +_022F77D8: + mov r2, #0 +_022F77DC: + bic r1, r2, #3 + and r0, r2, #3 + rsb r0, r0, #3 + ldr r1, [r5, r1] + mov r0, r0, lsl #3 + mov r0, r1, lsr r0 + strb r0, [r4, r2] + add r2, r2, #1 + cmp r2, #0x14 + blt _022F77DC + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Sha1Result_Gsi + + arm_func_start Sha1Input_Ghi +Sha1Input_Ghi: ; 0x022F780C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r4, r2 + mov r6, r0 + mov r5, r1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r6, #0 + cmpne r5, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6, #0x60] + cmp r0, #0 + movne r0, #3 + strne r0, [r6, #0x64] + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6, #0x64] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r7, #1 + b _022F78B0 +_022F785C: + ldrsh r0, [r6, #0x1c] + mov r2, r0 + add r0, r0, #1 + strh r0, [r6, #0x1c] + ldrb r1, [r5] + add r0, r6, r2 + strb r1, [r0, #0x1e] + ldr r0, [r6, #0x14] + adds r0, r0, #8 + str r0, [r6, #0x14] + bne _022F7898 + ldr r0, [r6, #0x18] + adds r0, r0, #1 + str r0, [r6, #0x18] + streq r7, [r6, #0x64] +_022F7898: + ldrsh r0, [r6, #0x1c] + cmp r0, #0x40 + bne _022F78AC + mov r0, r6 + bl Sha1ProcessMessageBlock +_022F78AC: + add r5, r5, #1 +_022F78B0: + cmp r4, #0 + sub r4, r4, #1 + beq _022F78C8 + ldr r0, [r6, #0x64] + cmp r0, #0 + beq _022F785C +_022F78C8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Sha1Input_Ghi + + arm_func_start Sha1ProcessMessageBlock +Sha1ProcessMessageBlock: ; 0x022F78D0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x150 + ldr r1, _022F7B20 ; =ov00_02318474 + add r5, sp, #0 + mov lr, r0 + ldmia r1, {r0, r1, r2, r3} + stmia r5, {r0, r1, r2, r3} + mov r4, #0 + mov r5, r4 + add r2, sp, #0x10 +_022F78F8: + add r3, lr, r5 + ldrb r0, [r3, #0x1e] + add r5, r5, #4 + mov r1, r0, lsl #0x18 + str r1, [r2, r4, lsl #2] + ldrb r0, [r3, #0x1f] + orr r1, r1, r0, lsl #16 + str r1, [r2, r4, lsl #2] + ldrb r0, [r3, #0x20] + orr r1, r1, r0, lsl #8 + str r1, [r2, r4, lsl #2] + ldrb r0, [r3, #0x21] + orr r0, r1, r0 + str r0, [r2, r4, lsl #2] + add r4, r4, #1 + cmp r4, #0x10 + blt _022F78F8 + mov r5, #0x10 + add r4, sp, #0x10 +_022F7944: + add r3, r4, r5, lsl #2 + ldr r1, [r3, #-0xc] + ldr r0, [r3, #-0x20] + ldr r2, [r3, #-0x38] + eor r0, r1, r0 + ldr r1, [r3, #-0x40] + eor r0, r2, r0 + eor r1, r1, r0 + mov r0, r1, lsr #0x1f + orr r0, r0, r1, lsl #1 + str r0, [r4, r5, lsl #2] + add r5, r5, #1 + cmp r5, #0x50 + blt _022F7944 + ldmia lr, {r0, r1, r2, r3, ip} + ldr r8, [sp] + mov sb, #0 + add r7, sp, #0x10 +_022F798C: + mvn r6, r1 + mov r5, r0, lsr #0x1b + and r4, r1, r2 + and sl, r6, r3 + ldr r6, [r7, sb, lsl #2] + add sb, sb, #1 + orr r4, r4, sl + orr r5, r5, r0, lsl #5 + add r4, r5, r4 + add r4, ip, r4 + mov ip, r3 + add r5, r6, r4 + mov r4, r1, lsr #2 + mov r3, r2 + orr r2, r4, r1, lsl #30 + cmp sb, #0x14 + mov r1, r0 + add r0, r8, r5 + blt _022F798C + ldr r6, [sp, #4] + mov r7, #0x14 + add r5, sp, #0x10 +_022F79E4: + mov sb, r0, lsr #0x1b + eor r8, r1, r2 + ldr r4, [r5, r7, lsl #2] + orr sb, sb, r0, lsl #5 + eor r8, r3, r8 + add r8, sb, r8 + add r8, ip, r8 + add r7, r7, #1 + mov ip, r3 + add r8, r4, r8 + mov r4, r1, lsr #2 + mov r3, r2 + orr r2, r4, r1, lsl #30 + cmp r7, #0x28 + mov r1, r0 + add r0, r6, r8 + blt _022F79E4 + ldr r8, [sp, #8] + mov sb, #0x28 + add r7, sp, #0x10 +_022F7A34: + orr r6, r2, r3 + mov r5, r0, lsr #0x1b + and r4, r2, r3 + and sl, r1, r6 + ldr r6, [r7, sb, lsl #2] + add sb, sb, #1 + orr r4, r4, sl + orr r5, r5, r0, lsl #5 + add r4, r5, r4 + add r4, ip, r4 + mov ip, r3 + add r5, r6, r4 + mov r4, r1, lsr #2 + mov r3, r2 + orr r2, r4, r1, lsl #30 + cmp sb, #0x3c + mov r1, r0 + add r0, r8, r5 + blt _022F7A34 + ldr r6, [sp, #0xc] + mov r7, #0x3c + add r5, sp, #0x10 +_022F7A8C: + mov sb, r0, lsr #0x1b + eor r8, r1, r2 + ldr r4, [r5, r7, lsl #2] + orr sb, sb, r0, lsl #5 + eor r8, r3, r8 + add r8, sb, r8 + add r8, ip, r8 + add r4, r4, r8 + add r7, r7, #1 + mov ip, r3 + add r8, r6, r4 + mov r4, r1, lsr #2 + mov r3, r2 + orr r2, r4, r1, lsl #30 + cmp r7, #0x50 + mov r1, r0 + mov r0, r8 + blt _022F7A8C + ldr r4, [lr] + mov r0, #0 + add r4, r4, r8 + str r4, [lr] + ldr r4, [lr, #4] + add r1, r4, r1 + str r1, [lr, #4] + ldr r1, [lr, #8] + add r1, r1, r2 + str r1, [lr, #8] + ldr r1, [lr, #0xc] + add r1, r1, r3 + str r1, [lr, #0xc] + ldr r1, [lr, #0x10] + add r1, r1, ip + str r1, [lr, #0x10] + strh r0, [lr, #0x1c] + add sp, sp, #0x150 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F7B20: .word ov00_02318474 + arm_func_end Sha1ProcessMessageBlock + + arm_func_start Sha1PadMessage +Sha1PadMessage: ; 0x022F7B24 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r1, [r4, #0x1c] + add r0, r1, #1 + cmp r1, #0x37 + strh r0, [r4, #0x1c] + ble _022F7BB8 + add r0, r4, r1 + mov r1, #0x80 + strb r1, [r0, #0x1e] + ldrsh r0, [r4, #0x1c] + cmp r0, #0x40 + bge _022F7B7C + mov r1, #0 +_022F7B5C: + ldrsh r2, [r4, #0x1c] + add r0, r4, r0 + add r2, r2, #1 + strh r2, [r4, #0x1c] + strb r1, [r0, #0x1e] + ldrsh r0, [r4, #0x1c] + cmp r0, #0x40 + blt _022F7B5C +_022F7B7C: + mov r0, r4 + bl Sha1ProcessMessageBlock + ldrsh r0, [r4, #0x1c] + cmp r0, #0x38 + bge _022F7BF4 + mov r1, #0 +_022F7B94: + ldrsh r2, [r4, #0x1c] + add r0, r4, r0 + add r2, r2, #1 + strh r2, [r4, #0x1c] + strb r1, [r0, #0x1e] + ldrsh r0, [r4, #0x1c] + cmp r0, #0x38 + blt _022F7B94 + b _022F7BF4 +_022F7BB8: + add r0, r4, r1 + mov r1, #0x80 + strb r1, [r0, #0x1e] + ldrsh r0, [r4, #0x1c] + cmp r0, #0x38 + bge _022F7BF4 + mov r1, #0 +_022F7BD4: + ldrsh r2, [r4, #0x1c] + add r0, r4, r0 + add r2, r2, #1 + strh r2, [r4, #0x1c] + strb r1, [r0, #0x1e] + ldrsh r0, [r4, #0x1c] + cmp r0, #0x38 + blt _022F7BD4 +_022F7BF4: + ldr r1, [r4, #0x18] + mov r0, r4 + mov r1, r1, lsr #0x18 + strb r1, [r4, #0x56] + ldr r1, [r4, #0x18] + mov r1, r1, lsr #0x10 + strb r1, [r4, #0x57] + ldr r1, [r4, #0x18] + mov r1, r1, lsr #8 + strb r1, [r4, #0x58] + ldr r1, [r4, #0x18] + strb r1, [r4, #0x59] + ldr r1, [r4, #0x14] + mov r1, r1, lsr #0x18 + strb r1, [r4, #0x5a] + ldr r1, [r4, #0x14] + mov r1, r1, lsr #0x10 + strb r1, [r4, #0x5b] + ldr r1, [r4, #0x14] + mov r1, r1, lsr #8 + strb r1, [r4, #0x5c] + ldr r1, [r4, #0x14] + strb r1, [r4, #0x5d] + bl Sha1ProcessMessageBlock + ldmia sp!, {r4, pc} + arm_func_end Sha1PadMessage + + arm_func_start GsUdpEngineGetEngine +GsUdpEngineGetEngine: ; 0x022F7C58 + ldr r0, _022F7C60 ; =ov00_0232896C + bx lr + .align 2, 0 +_022F7C60: .word ov00_0232896C + arm_func_end GsUdpEngineGetEngine + + arm_func_start GsUdpMsgHandlerFree +GsUdpMsgHandlerFree: ; 0x022F7C64 + ldr ip, _022F7C70 ; =ArrayFree_Gsi + ldr r0, [r0, #0x20] + bx ip + .align 2, 0 +_022F7C70: .word ArrayFree_Gsi + arm_func_end GsUdpMsgHandlerFree + + arm_func_start GsUdpMsgHandlerCompare +GsUdpMsgHandlerCompare: ; 0x022F7C74 + ldr ip, _022F7C80 ; =memcmp + mov r2, #0x10 + bx ip + .align 2, 0 +_022F7C80: .word memcmp + arm_func_end GsUdpMsgHandlerCompare + + arm_func_start GsUdpMsgHandlerCompare2 +GsUdpMsgHandlerCompare2: ; 0x022F7C84 + ldr ip, _022F7C98 ; =memcmp + add r0, r0, #0x10 + add r1, r1, #0x10 + mov r2, #0x10 + bx ip + .align 2, 0 +_022F7C98: .word memcmp + arm_func_end GsUdpMsgHandlerCompare2 + + arm_func_start GsUdpRemotePeerCompare +GsUdpRemotePeerCompare: ; 0x022F7C9C + ldr r3, [r0] + ldr r2, [r1] + cmp r3, r2 + movne r0, #1 + bxne lr + ldrh r2, [r0, #4] + ldrh r0, [r1, #4] + cmp r2, r0 + movne r0, #1 + moveq r0, #0 + bx lr + arm_func_end GsUdpRemotePeerCompare + + arm_func_start GsUdpRemotePeerCompare2 +GsUdpRemotePeerCompare2: ; 0x022F7CC8 + ldr r2, [r0, #8] + ldr r0, [r1, #8] + cmp r2, r0 + movne r0, #1 + moveq r0, #0 + bx lr + arm_func_end GsUdpRemotePeerCompare2 + + arm_func_start GsUdpSocketError +GsUdpSocketError: ; 0x022F7CE0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + bl GsUdpEngineGetEngine + mov r7, r0 + ldr r2, [r7, #0x24] + cmp r2, #0 + beq _022F7D04 + ldr r1, [r7, #0x2c] + mov r0, #3 + blx r2 +_022F7D04: + ldr r0, [r7, #8] + bl ArrayLength_Gsi + mov r6, r0 + mov r5, #0 + cmp r6, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, pc} + mov r4, #3 +_022F7D20: + ldr r0, [r7, #8] + mov r1, r5 + bl ArrayNth_Gsi + ldr r2, [r0, #0x34] + cmp r2, #0 + beq _022F7D44 + ldr r1, [r0, #0x38] + mov r0, r4 + blx r2 +_022F7D44: + add r5, r5, #1 + cmp r5, r6 + blt _022F7D20 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GsUdpSocketError + + arm_func_start GsUdpClosedRoutingCB +GsUdpClosedRoutingCB: ; 0x022F7D54 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + mov r8, r1 + mov sb, r0 + bl GsUdpEngineGetEngine + sub r1, r8, #2 + cmp r1, #1 + mov r5, r0 + movls r8, #2 + bls _022F7D84 + cmp r8, #4 + moveq r8, #3 +_022F7D84: + ldr r0, [r5, #8] + bl ArrayLength_Gsi + mov r7, r0 + cmp r7, #0 + mov r6, #0 + ble _022F7DF0 +_022F7D9C: + ldr r0, [r5, #8] + mov r1, r6 + bl ArrayNth_Gsi + mov r4, r0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _022F7DE4 + mov r0, sb + bl Gt2GetRemoteIP + mov sl, r0 + mov r0, sb + bl Gt2GetRemotePort + mov r1, r0 + mov r0, sl + mov r2, r8 + ldr r3, [r4, #0x38] + ldr r4, [r4, #0x24] + blx r4 +_022F7DE4: + add r6, r6, #1 + cmp r6, r7 + blt _022F7D9C +_022F7DF0: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _022F7E28 + mov r0, sb + bl Gt2GetRemoteIP + mov r4, r0 + mov r0, sb + bl Gt2GetRemotePort + mov r1, r0 + ldr r3, [r5, #0x2c] + mov r0, r4 + mov r2, r8 + ldr r4, [r5, #0x14] + blx r4 +_022F7E28: + str sb, [sp, #0xc] + mov r3, #0 + str r3, [sp] + ldr r0, [r5, #4] + ldr r2, _022F7E68 ; =GsUdpRemotePeerCompare2 + add r1, sp, #4 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [r5, #4] + bl ArrayDeleteAt_Gsi + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F7E68: .word GsUdpRemotePeerCompare2 + arm_func_end GsUdpClosedRoutingCB + + arm_func_start GsUdpConnectedRoutingCB +GsUdpConnectedRoutingCB: ; 0x022F7E6C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + mov r4, r1 + mov r5, r0 + bl GsUdpEngineGetEngine + mov r7, r0 + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _022F7EE0 +_022F7E90: ; jump table + b _022F7ED4 ; case 0 + b _022F7EE0 ; case 1 + b _022F7EBC ; case 2 + b _022F7EE0 ; case 3 + b _022F7EE0 ; case 4 + b _022F7EE0 ; case 5 + b _022F7EC8 ; case 6 + b _022F7EB0 ; case 7 +_022F7EB0: + mov r0, #7 + str r0, [sp, #4] + b _022F7EE8 +_022F7EBC: + mov r0, #2 + str r0, [sp, #4] + b _022F7EE8 +_022F7EC8: + mov r0, #6 + str r0, [sp, #4] + b _022F7EE8 +_022F7ED4: + mov r0, #0 + str r0, [sp, #4] + b _022F7EE8 +_022F7EE0: + mov r0, #0xd + str r0, [sp, #4] +_022F7EE8: + cmp r4, #2 + bne _022F7F38 + mov r0, r5 + bl Gt2GetRemoteIP + str r0, [sp, #0x14] + mov r0, r5 + bl Gt2GetRemotePort + strh r0, [sp, #0x18] + mov r3, #0 + str r3, [sp] + ldr r0, [r7, #4] + ldr r2, _022F8080 ; =GsUdpRemotePeerCompare + add r1, sp, #0x14 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _022F7F38 + ldr r0, [r7, #4] + bl ArrayDeleteAt_Gsi +_022F7F38: + ldr r0, [r7, #8] + bl ArrayLength_Gsi + mov sb, r0 + cmp sb, #0 + mov r8, #0 + ble _022F8010 + mvn r6, #0 +_022F7F54: + ldr r0, [r7, #8] + mov r1, r8 + bl ArrayNth_Gsi + mov sl, r0 + mov r0, r5 + bl Gt2GetRemoteIP + str r0, [sp, #8] + mov r0, r5 + bl Gt2GetRemotePort + strh r0, [sp, #0xc] + mov r0, #0 + str r0, [sp] + ldr r0, [sl, #0x20] + ldr r2, _022F8080 ; =GsUdpRemotePeerCompare + add r1, sp, #8 + mov r3, #0 + bl ArraySearch_Gsi + mov fp, r0 + cmp fp, r6 + beq _022F8004 + ldr r0, [sl, #0x2c] + cmp r0, #0 + beq _022F7FF0 + cmp r4, #2 + moveq r6, #1 + mov r0, r5 + movne r6, #0 + bl Gt2GetRemoteIP + mov r4, r0 + mov r0, r5 + bl Gt2GetRemotePort + ldr r1, [sl, #0x38] + ldr r2, [sp, #4] + str r1, [sp] + mov r1, r0 + mov r0, r4 + ldr r4, [sl, #0x2c] + mov r3, r6 + blx r4 +_022F7FF0: + ldr r0, [sl, #0x20] + mov r1, fp + bl ArrayDeleteAt_Gsi + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F8004: + add r8, r8, #1 + cmp r8, sb + blt _022F7F54 +_022F8010: + ldr r0, [r7, #0x30] + cmp r0, #0 + addle sp, sp, #0x20 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r7, #0x10] + cmp r0, #0 + beq _022F806C + cmp r4, #2 + moveq r8, #1 + mov r0, r5 + movne r8, #0 + bl Gt2GetRemoteIP + mov r6, r0 + mov r0, r5 + bl Gt2GetRemotePort + ldr r2, [r7, #0x2c] + mov r1, r0 + str r2, [sp] + ldr r4, [r7, #0x10] + ldr r2, [sp, #4] + mov r0, r6 + mov r3, r8 + blx r4 +_022F806C: + ldr r0, [r7, #0x30] + sub r0, r0, #1 + str r0, [r7, #0x30] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F8080: .word GsUdpRemotePeerCompare + arm_func_end GsUdpConnectedRoutingCB + + arm_func_start GsUdpPingRoutingCB +GsUdpPingRoutingCB: ; 0x022F8084 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r5, r0 + mov r4, r1 + bl GsUdpEngineGetEngine + mov r8, r0 + ldr r0, [r8, #8] + bl ArrayLength_Gsi + mov sb, r0 + cmp sb, #0 + mov r6, #0 + ble _022F8108 +_022F80B0: + ldr r0, [r8, #8] + mov r1, r6 + bl ArrayNth_Gsi + mov r7, r0 + ldr r0, [r7, #0x30] + cmp r0, #0 + beq _022F80FC + mov r0, r5 + bl Gt2GetRemoteIP + mov r6, r0 + mov r0, r5 + bl Gt2GetRemotePort + mov r1, r0 + ldr r3, [r7, #0x38] + ldr r5, [r7, #0x30] + mov r0, r6 + mov r2, r4 + blx r5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F80FC: + add r6, r6, #1 + cmp r6, sb + blt _022F80B0 +_022F8108: + ldr r0, [r8, #0x18] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r5 + bl Gt2GetRemoteIP + mov r6, r0 + mov r0, r5 + bl Gt2GetRemotePort + mov r1, r0 + ldr r3, [r8, #0x2c] + ldr r5, [r8, #0x18] + mov r0, r6 + mov r2, r4 + blx r5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end GsUdpPingRoutingCB + + arm_func_start GsUdpReceivedRoutingCB +GsUdpReceivedRoutingCB: ; 0x022F8144 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x44 + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r4, r3 + bl GsUdpEngineGetEngine + mov sl, r0 + cmp r5, #0x10 + blt _022F8218 + add r8, sp, #0x18 + mov r3, r6 + mov r2, #8 +_022F8178: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [r8] + strb r0, [r8, #1] + add r8, r8, #2 + bne _022F8178 + mov r3, #0 + str r3, [sp] + ldr r0, [sl, #8] + ldr r2, _022F8268 ; =GsUdpMsgHandlerCompare2 + add r1, sp, #8 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _022F8218 + ldr r0, [sl, #8] + bl ArrayNth_Gsi + mov sb, r0 + ldr r0, [sb, #0x28] + cmp r0, #0 + beq _022F8218 + mov r0, r7 + bl Gt2GetRemoteIP + mov r8, r0 + mov r0, r7 + bl Gt2GetRemotePort + str r4, [sp] + ldr r2, [sb, #0x38] + mov r1, r0 + str r2, [sp, #4] + ldr r4, [sb, #0x28] + mov r0, r8 + add r2, r6, #0x10 + sub r3, r5, #0x10 + blx r4 + add sp, sp, #0x44 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F8218: + ldr r0, [sl, #0x1c] + cmp r0, #0 + addeq sp, sp, #0x44 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r7 + bl Gt2GetRemoteIP + mov r8, r0 + mov r0, r7 + bl Gt2GetRemotePort + str r4, [sp] + ldr r2, [sl, #0x2c] + mov r1, r0 + str r2, [sp, #4] + ldr r4, [sl, #0x1c] + mov r0, r8 + mov r2, r6 + mov r3, r5 + blx r4 + add sp, sp, #0x44 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F8268: .word GsUdpMsgHandlerCompare2 + arm_func_end GsUdpReceivedRoutingCB + + arm_func_start GsUdpUnrecognizedMsgCB +GsUdpUnrecognizedMsgCB: ; 0x022F826C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl GsUdpEngineGetEngine + ldr lr, [r0, #0x28] + cmp lr, #0 + beq _022F82C0 + ldr ip, [r0, #0x2c] + ldr r3, [sp, #0x18] + mov r0, r6 + mov r1, r5 + mov r2, r4 + str ip, [sp] + blx lr + cmp r0, #0 + movne r0, #1 + add sp, sp, #4 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_022F82C0: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end GsUdpUnrecognizedMsgCB + + arm_func_start GsUdpConnAttemptCB +GsUdpConnAttemptCB: ; 0x022F82CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x60 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GsUdpEngineGetEngine + ldr r1, [sp, #0x80] + mov r4, r0 + cmp r1, #0x10 + blt _022F8390 + ldr r3, [sp, #0x7c] + add ip, sp, #0x24 + mov r2, #8 +_022F8300: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + bne _022F8300 + str r6, [sp, #0x18] + strh r5, [sp, #0x1c] + str r7, [sp, #0x20] + ldr r0, [r4, #4] + add r1, sp, #0x18 + bl ArrayAppend_Gsi + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #8] + ldr r2, _022F83F8 ; =GsUdpMsgHandlerCompare + add r1, sp, #0x24 + bl ArraySearch_Gsi + mvn r1, #0 + cmp r0, r1 + beq _022F8390 + ldr r5, _022F83FC ; =GsUdpClosedRoutingCB + ldr r4, _022F8400 ; =GsUdpConnectedRoutingCB + ldr r3, _022F8404 ; =GsUdpPingRoutingCB + ldr r2, _022F8408 ; =GsUdpReceivedRoutingCB + ldr r0, [sp, #0x20] + add r1, sp, #8 + str r5, [sp, #0x10] + str r4, [sp, #8] + str r3, [sp, #0x14] + str r2, [sp, #0xc] + bl Gt2Accept + add sp, sp, #0x60 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F8390: + ldr ip, [r4, #0x20] + cmp ip, #0 + beq _022F83C8 + ldr r0, [sp, #0x80] + ldr r2, [sp, #0x78] + str r0, [sp] + ldr r4, [r4, #0x2c] + ldr r3, [sp, #0x7c] + mov r0, r6 + mov r1, r5 + str r4, [sp, #4] + blx ip + add sp, sp, #0x60 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F83C8: + mov r1, #0 + mov r0, r7 + mov r2, r1 + bl Gt2Reject + ldr r0, [r4, #4] + bl ArrayLength_Gsi + mov r1, r0 + ldr r0, [r4, #4] + sub r1, r1, #1 + bl ArrayRemoveAt_Gsi + add sp, sp, #0x60 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F83F8: .word GsUdpMsgHandlerCompare +_022F83FC: .word GsUdpClosedRoutingCB +_022F8400: .word GsUdpConnectedRoutingCB +_022F8404: .word GsUdpPingRoutingCB +_022F8408: .word GsUdpReceivedRoutingCB + arm_func_end GsUdpConnAttemptCB + + arm_func_start GsUdpEngineIsInitialized +GsUdpEngineIsInitialized: ; 0x022F840C + stmdb sp!, {r3, lr} + bl GsUdpEngineGetEngine + ldr r0, [r0, #0xc] + ldmia sp!, {r3, pc} + arm_func_end GsUdpEngineIsInitialized + + arm_func_start GsUdpEngineInitialize +GsUdpEngineInitialize: ; 0x022F841C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x1c + mov r6, r1 + mov r7, r0 + mov r5, r2 + mov r8, r3 + bl GsUdpEngineGetEngine + mov r4, r0 + cmp r6, #0 + ldreq r6, _022F8560 ; =0x000005DC + cmp r5, #0 + ldr r0, [sp, #0x48] + str r8, [r4, #0x24] + str r0, [r4, #0x28] + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + str r1, [r4, #0x10] + str r0, [r4, #0x14] + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x44] + str r1, [r4, #0x18] + str r0, [r4, #0x1c] + ldr r3, [sp, #0x4c] + ldreq r5, _022F8564 ; =0x000005B4 + add r2, sp, #4 + mov r1, r7 + mov r0, #0 + str r3, [r4, #0x20] + bl Gt2AddressToString + ldr r7, _022F8568 ; =GsUdpSocketError + add r1, sp, #4 + mov r0, r4 + mov r2, r5 + mov r3, r6 + str r7, [sp] + bl Gt2CreateSocket + cmp r0, #0 + addne sp, sp, #0x1c + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r0, #0xc + mov r1, #1 + mov r2, #0 + bl ArrayNew_Gsi + cmp r0, #0 + str r0, [r4, #4] + addeq sp, sp, #0x1c + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r2, _022F856C ; =GsUdpMsgHandlerFree + mov r0, #0x3c + mov r1, #1 + bl ArrayNew_Gsi + cmp r0, #0 + str r0, [r4, #8] + addeq sp, sp, #0x1c + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r0, [r4] + ldr r1, _022F8570 ; =GsUdpUnrecognizedMsgCB + bl Gt2SetUnrecognizedMessageCallback + ldr r0, [r4] + ldr r1, _022F8574 ; =GsUdpConnAttemptCB + bl Gt2Listen + ldr r0, [r4] + bl Gt2GetLocalIP + str r0, [r4, #0x34] + ldr r0, [r4] + bl Gt2GetLocalPort + strh r0, [r4, #0x38] + mov r2, #0 + ldr r1, [sp, #0x50] + str r2, [r4, #0x30] + mov r0, #1 + str r0, [r4, #0xc] + cmp r1, #0 + strne r1, [r4, #0x2c] + streq r2, [r4, #0x2c] + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F8560: .word 0x000005DC +_022F8564: .word 0x000005B4 +_022F8568: .word GsUdpSocketError +_022F856C: .word GsUdpMsgHandlerFree +_022F8570: .word GsUdpUnrecognizedMsgCB +_022F8574: .word GsUdpConnAttemptCB + arm_func_end GsUdpEngineInitialize + + arm_func_start GsUdpEngineGetPeerState +GsUdpEngineGetPeerState: ; 0x022F8578 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _022F85B4 + mov r0, #3 + str r0, [r5] + add sp, sp, #0x10 + mov r0, #0xb + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F85B4: + str r7, [sp, #4] + strh r6, [sp, #8] + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #4] + ldr r2, _022F8618 ; =GsUdpRemotePeerCompare + add r1, sp, #4 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + bne _022F85F8 + mov r0, #3 + str r0, [r5] + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F85F8: + ldr r0, [r4, #4] + bl ArrayNth_Gsi + ldr r0, [r0, #8] + bl Gt2GetConnectionState + str r0, [r5] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F8618: .word GsUdpRemotePeerCompare + arm_func_end GsUdpEngineGetPeerState + + arm_func_start GsUdpEngineStartTalkingToPeer +GsUdpEngineStartTalkingToPeer: ; 0x022F861C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x84 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + addeq sp, sp, #0x84 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + cmp r8, #0 + cmpne r7, #0 + addeq sp, sp, #0x84 + moveq r0, #0xa + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + str r8, [sp, #0x60] + strh r7, [sp, #0x64] + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #4] + ldr r2, _022F8830 ; =GsUdpRemotePeerCompare + add r1, sp, #0x60 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _022F8728 + ldr r0, [r4, #4] + bl ArrayNth_Gsi + mov r5, r0 + ldr r0, [r5, #8] + bl Gt2GetConnectionState + cmp r0, #1 + addeq sp, sp, #0x84 + moveq r0, #5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + cmp r0, #0 + bne _022F8824 + add r3, sp, #0x24 + mov r2, #8 +_022F86C8: + ldrb r1, [r6] + ldrb r0, [r6, #1] + add r6, r6, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022F86C8 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #8] + ldr r2, _022F8834 ; =GsUdpMsgHandlerCompare + add r1, sp, #0x24 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _022F8824 + ldr r0, [r4, #8] + bl ArrayNth_Gsi + ldr r0, [r0, #0x20] + mov r1, r5 + bl ArrayAppend_Gsi + b _022F8824 +_022F8728: + add r2, sp, #0x6c + mov r0, r8 + mov r1, r7 + bl Gt2AddressToString + ldr r3, _022F8838 ; =GsUdpClosedRoutingCB + ldr r2, _022F883C ; =GsUdpConnectedRoutingCB + ldr r1, _022F8840 ; =GsUdpPingRoutingCB + ldr r0, _022F8844 ; =GsUdpReceivedRoutingCB + str r3, [sp, #0x1c] + str r2, [sp, #0x14] + str r1, [sp, #0x20] + str r0, [sp, #0x18] + mov r0, #0x10 + str r0, [sp] + add r0, sp, #0x14 + str r5, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r4] + add r1, sp, #0x68 + add r2, sp, #0x6c + mov r3, r6 + bl Gt2Connect + ldr r0, [r4, #4] + add r1, sp, #0x60 + bl ArrayAppend_Gsi + add r3, sp, #0x24 + mov r2, #8 +_022F879C: + ldrb r1, [r6] + ldrb r0, [r6, #1] + add r6, r6, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022F879C + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #8] + ldr r2, _022F8834 ; =GsUdpMsgHandlerCompare + add r1, sp, #0x24 + bl ArraySearch_Gsi + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + ldreq r0, [r4, #0x30] + addeq r0, r0, #1 + streq r0, [r4, #0x30] + beq _022F8824 + ldr r0, [r4, #4] + bl ArrayLength_Gsi + mov r1, r0 + ldr r0, [r4, #4] + sub r1, r1, #1 + bl ArrayNth_Gsi + str r0, [sp, #0x10] + ldr r0, [r4, #8] + mov r1, r5 + bl ArrayNth_Gsi + ldr r0, [r0, #0x20] + add r1, sp, #0x10 + bl ArrayAppend_Gsi +_022F8824: + mov r0, #0 + add sp, sp, #0x84 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F8830: .word GsUdpRemotePeerCompare +_022F8834: .word GsUdpMsgHandlerCompare +_022F8838: .word GsUdpClosedRoutingCB +_022F883C: .word GsUdpConnectedRoutingCB +_022F8840: .word GsUdpPingRoutingCB +_022F8844: .word GsUdpReceivedRoutingCB + arm_func_end GsUdpEngineStartTalkingToPeer + + arm_func_start GsUdpEngineSendMessage +GsUdpEngineSendMessage: ; 0x022F8848 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x28 + mov sb, r0 + mov r5, r1 + mov r8, r2 + mov r7, r3 + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + addeq sp, sp, #0x28 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrsb r0, [r8] + mov r3, #0 + ldr r2, _022F8984 ; =GsUdpRemotePeerCompare + cmp r0, #0 + ldrne r0, [sp, #0x48] + str sb, [sp, #0x1c] + strh r5, [sp, #0x20] + addne r6, r0, #0x10 + str r3, [sp] + ldr r0, [r4, #4] + add r1, sp, #0x1c + ldreq r6, [sp, #0x48] + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + bne _022F88DC + add r2, sp, #4 + mov r0, sb + mov r1, r5 + bl Gt2AddressToString + add sp, sp, #0x28 + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F88DC: + ldr r0, [r4, #4] + bl ArrayNth_Gsi + mov r4, r0 + ldr r0, [r4, #8] + bl Gt2GetOutgoingBufferSize + cmp r6, r0 + ble _022F890C + ldr r0, [sp, #0x4c] + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0xc + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F890C: + mov r0, r6 + bl gsimalloc + mov r5, r0 + mov r3, r5 + mov r2, #8 +_022F8920: + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r8, r8, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022F8920 + ldr r2, [sp, #0x48] + mov r1, r7 + add r0, r5, #0x10 + bl memcpy + ldr r0, [r4, #8] + ldr r3, [sp, #0x4c] + mov r1, r5 + mov r2, r6 + bl Gt2Send + mov r4, r0 + mov r0, r5 + bl gsifree + cmp r4, #0 + movne r0, #8 + moveq r0, #0 + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F8984: .word GsUdpRemotePeerCompare + arm_func_end GsUdpEngineSendMessage + + arm_func_start GsUdpEngineThink +GsUdpEngineThink: ; 0x022F8988 + stmdb sp!, {r3, lr} + bl GsUdpEngineGetEngine + ldr r1, [r0, #0xc] + cmp r1, #0 + moveq r0, #3 + ldmeqia sp!, {r3, pc} + ldr r0, [r0] + bl Gt2Think + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end GsUdpEngineThink + + arm_func_start GsUdpEngineShutdown +GsUdpEngineShutdown: ; 0x022F89B0 + stmdb sp!, {r4, lr} + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + moveq r0, #3 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + bl Gt2CloseSocket + ldr r0, [r4, #8] + bl ArrayFree_Gsi + ldr r0, [r4, #4] + bl ArrayFree_Gsi + mov r0, #0 + str r0, [r4, #0xc] + ldmia sp!, {r4, pc} + arm_func_end GsUdpEngineShutdown + + arm_func_start GsUdpEngineGetLocalPort +GsUdpEngineGetLocalPort: ; 0x022F89F0 + stmdb sp!, {r3, lr} + bl GsUdpEngineGetEngine + ldr r1, [r0, #0xc] + cmp r1, #0 + ldrneh r0, [r0, #0x38] + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end GsUdpEngineGetLocalPort + + arm_func_start GsUdpEngineAddMsgHandler +GsUdpEngineAddMsgHandler: ; 0x022F8A0C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x3c + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + addeq sp, sp, #0x3c + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldrsb r0, [r8] + cmp r0, #0 + addeq sp, sp, #0x3c + moveq r0, #0xa + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldrsb r0, [r7] + cmp r0, #0 + addeq sp, sp, #0x3c + moveq r0, #0xa + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r2, [sp, #0x58] + ldr r1, [sp, #0x5c] + ldr r0, [sp, #0x60] + str r2, [sp, #0x24] + add r3, sp, #0 + str r5, [sp, #0x2c] + str r1, [sp, #0x30] + str r0, [sp, #0x28] + str r6, [sp, #0x34] + mov r2, #8 +_022F8A90: + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r8, r8, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022F8A90 + add r3, sp, #0x10 + mov r2, #8 +_022F8AB8: + ldrb r1, [r7] + ldrb r0, [r7, #1] + add r7, r7, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022F8AB8 + mov r0, #4 + mov r1, #1 + mov r2, #0 + bl ArrayNew_Gsi + str r0, [sp, #0x20] + cmp r0, #0 + addeq sp, sp, #0x3c + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r0, [sp, #0x64] + add r1, sp, #0 + str r0, [sp, #0x38] + ldr r0, [r4, #8] + bl ArrayAppend_Gsi + mov r0, #0 + add sp, sp, #0x3c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end GsUdpEngineAddMsgHandler + + arm_func_start GsUdpEngineRemoveMsgHandler +GsUdpEngineRemoveMsgHandler: ; 0x022F8B1C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x40 + mov r5, r0 + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + addeq sp, sp, #0x40 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r5, #0 + ldrnesb r0, [r5] + cmpne r0, #0 + addeq sp, sp, #0x40 + moveq r0, #0xa + ldmeqia sp!, {r3, r4, r5, pc} + add r3, sp, #0x14 + mov r2, #8 +_022F8B64: + ldrb r1, [r5] + ldrb r0, [r5, #1] + add r5, r5, #2 + subs r2, r2, #1 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + bne _022F8B64 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #8] + ldr r2, _022F8BC0 ; =GsUdpMsgHandlerCompare2 + add r1, sp, #4 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _022F8BB4 + ldr r0, [r4, #8] + bl ArrayDeleteAt_Gsi +_022F8BB4: + mov r0, #0 + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F8BC0: .word GsUdpMsgHandlerCompare2 + arm_func_end GsUdpEngineRemoveMsgHandler + + arm_func_start GsUdpEngineNoMoreMsgHandlers +GsUdpEngineNoMoreMsgHandlers: ; 0x022F8BC4 + stmdb sp!, {r3, lr} + bl GsUdpEngineGetEngine + ldr r1, [r0, #0xc] + cmp r1, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldr r0, [r0, #8] + bl ArrayLength_Gsi + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end GsUdpEngineNoMoreMsgHandlers + + arm_func_start GsUdpEngineNoApp +GsUdpEngineNoApp: ; 0x022F8BF4 + stmdb sp!, {r3, lr} + bl GsUdpEngineGetEngine + ldr r1, [r0, #0xc] + cmp r1, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldr r1, [r0, #0x14] + cmp r1, #0 + ldreq r1, [r0, #0x20] + cmpeq r1, #0 + ldreq r1, [r0, #0x10] + cmpeq r1, #0 + ldreq r1, [r0, #0x24] + cmpeq r1, #0 + ldreq r1, [r0, #0x18] + cmpeq r1, #0 + ldreq r1, [r0, #0x1c] + cmpeq r1, #0 + ldreq r0, [r0, #0x28] + cmpeq r0, #0 + movne r0, #0 + moveq r0, #1 + ldmia sp!, {r3, pc} + arm_func_end GsUdpEngineNoApp + + arm_func_start GsUdpEngineGetPeerOutBufferFreeSpace +GsUdpEngineGetPeerOutBufferFreeSpace: ; 0x022F8C50 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r0 + mov r5, r1 + bl GsUdpEngineGetEngine + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + str r6, [sp, #4] + strh r5, [sp, #8] + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #4] + ldr r2, _022F8CCC ; =GsUdpRemotePeerCompare + add r1, sp, #4 + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r4, #4] + bl ArrayNth_Gsi + ldr r0, [r0, #8] + bl Gt2GetOutgoingBufferFreeSpace + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F8CCC: .word GsUdpRemotePeerCompare + arm_func_end GsUdpEngineGetPeerOutBufferFreeSpace + + arm_func_start GsXmlWriterGetData +GsXmlWriterGetData: ; 0x022F8CD0 + ldr r0, [r0] + bx lr + arm_func_end GsXmlWriterGetData + + arm_func_start GsXmlWriterGetDataLength +GsXmlWriterGetDataLength: ; 0x022F8CD8 + ldr r0, [r0, #4] + bx lr + arm_func_end GsXmlWriterGetDataLength + + arm_func_start GhiResizeBuffer +GhiResizeBuffer: ; 0x022F8CE0 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r1, #0 + movle r0, #0 + ldmleia sp!, {r3, r4, r5, pc} + ldmib r5, {r0, r2} + add r4, r2, r1 + mov r1, r4 + bl gsirealloc + cmp r0, #0 + moveq r0, #0 + stmneib r5, {r0, r4} + movne r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiResizeBuffer + + arm_func_start GhiInitBuffer +GhiInitBuffer: ; 0x022F8D20 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r2, #0 + movle r0, #0 + ldmleia sp!, {r4, pc} + cmp r3, #0 + movle r0, #0 + ldmleia sp!, {r4, pc} + str r0, [r4] + mov ip, #0 + str ip, [r4, #4] + str ip, [r4, #8] + str ip, [r4, #0xc] + str ip, [r4, #0x10] + str r3, [r4, #0x14] + str ip, [r4, #0x18] + str ip, [r4, #0x1c] + mov r0, r4 + mov r1, r2 + str ip, [r4, #0x20] + bl GhiResizeBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #4] + mov r1, #0 + strb r1, [r0] + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end GhiInitBuffer + + arm_func_start GhiInitFixedBuffer +GhiInitFixedBuffer: ; 0x022F8DAC + cmp r0, #0 + moveq r0, #0 + bxeq lr + cmp r1, #0 + moveq r0, #0 + bxeq lr + cmp r2, #0 + moveq r0, #0 + bxeq lr + cmp r3, #0 + movle r0, #0 + bxle lr + stmia r1, {r0, r2, r3} + mov r2, #0 + str r2, [r1, #0xc] + str r2, [r1, #0x10] + str r2, [r1, #0x14] + mov r0, #1 + str r0, [r1, #0x18] + str r0, [r1, #0x1c] + str r2, [r1, #0x20] + ldr r1, [r1, #4] + strb r2, [r1] + bx lr + arm_func_end GhiInitFixedBuffer + + arm_func_start GhiInitReadOnlyBuffer +GhiInitReadOnlyBuffer: ; 0x022F8E0C + cmp r0, #0 + moveq r0, #0 + bxeq lr + cmp r1, #0 + moveq r0, #0 + bxeq lr + cmp r2, #0 + moveq r0, #0 + bxeq lr + cmp r3, #0 + movle r0, #0 + bxle lr + stmia r1, {r0, r2, r3} + mov r0, #0 + str r0, [r1, #0x10] + str r0, [r1, #0x14] + mov r0, #1 + str r0, [r1, #0x18] + str r0, [r1, #0x1c] + str r0, [r1, #0x20] + str r3, [r1, #0xc] + bx lr + arm_func_end GhiInitReadOnlyBuffer + + arm_func_start GhiFreeBuffer +GhiFreeBuffer: ; 0x022F8E64 + stmdb sp!, {r4, lr} + movs r4, r0 + ldrne r0, [r4, #4] + cmpne r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0x1c] + cmp r1, #0 + bne _022F8E88 + bl gsifree +_022F8E88: + mov r0, r4 + mov r1, #0 + mov r2, #0x24 + bl memset + ldmia sp!, {r4, pc} + arm_func_end GhiFreeBuffer + + arm_func_start GhiAppendDataToBuffer +GhiAppendDataToBuffer: ; 0x022F8E9C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r7, r0 + mov r6, r1 + mov r5, r2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r6, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #0 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r7, #0x20] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #0 + bne _022F8EF0 + mov r0, r6 + bl strlen + mov r5, r0 +_022F8EF0: + ldr r1, [r7, #0xc] + ldr r0, [r7, #8] + add r4, r1, r5 + cmp r4, r0 + blt _022F8F6C +_022F8F04: + ldr r0, [r7, #0x18] + cmp r0, #0 + beq _022F8F30 + ldr r0, [r7] + mov r1, #1 + str r1, [r0, #0x120] + ldr r0, [r7] + mov r1, #2 + str r1, [r0, #0x3c] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F8F30: + ldr r1, [r7, #0x14] + mov r0, r7 + bl GhiResizeBuffer + cmp r0, #0 + bne _022F8F60 + ldr r0, [r7] + mov r2, #1 + str r2, [r0, #0x120] + ldr r1, [r7] + mov r0, #0 + str r2, [r1, #0x3c] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F8F60: + ldr r0, [r7, #8] + cmp r4, r0 + bge _022F8F04 +_022F8F6C: + ldr r3, [r7, #4] + ldr r0, [r7, #0xc] + mov r1, r6 + mov r2, r5 + add r0, r3, r0 + bl memcpy + str r4, [r7, #0xc] + ldr r0, [r7, #4] + mov r1, #0 + strb r1, [r0, r4] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GhiAppendDataToBuffer + + arm_func_start GhiEncryptDataToBuffer +GhiEncryptDataToBuffer: ; 0x022F8F9C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0xc + mov r6, #0 + movs sl, r0 + str r6, [sp, #8] + mov sb, r1 + mov r8, r2 + addeq sp, sp, #0xc + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + cmp sb, #0 + addeq sp, sp, #0xc + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + cmp r8, #0 + addlt sp, sp, #0xc + movlt r0, r6 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [sl, #0x20] + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r6 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [sl] + ldr r0, [r1, #0x194] + cmp r0, #0 + ldrne r0, [r1, #0x19c] + cmpne r0, #0 + bne _022F9028 + mov r0, sl + mov r1, sb + mov r2, r8 + bl GhiAppendDataToBuffer + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F9028: + cmp r8, #0 + bne _022F903C + mov r0, sb + bl strlen + mov r8, r0 +_022F903C: + cmp r8, #0 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [sl, #8] + ldr r0, [sl, #0xc] + ldr r5, _022F910C ; =0x00003F01 + sub r0, r1, r0 + str r0, [sp, #8] + add r4, sp, #8 +_022F9064: + ldr r1, [sl, #0xc] + ldmia sl, {r0, r2} + add r1, r2, r1 + stmia sp, {r1, r4} + cmp r8, r5 + movlt r7, r8 + ldr ip, [r0, #0x1a8] + mov r3, r8 + add r1, r0, #0x190 + add r2, sb, r6 + movge r7, r5 + blx ip + cmp r0, #2 + bne _022F90CC + ldr r1, [sl, #0x14] + mov r0, sl + bl GhiResizeBuffer + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [sl, #8] + ldr r0, [sl, #0xc] + sub r0, r1, r0 + str r0, [sp, #8] + b _022F90F8 +_022F90CC: + cmp r0, #1 + bne _022F90EC + ldr r1, [sl, #8] + ldr r0, [sp, #8] + add r6, r6, r7 + sub r0, r1, r0 + str r0, [sl, #0xc] + b _022F90F8 +_022F90EC: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_022F90F8: + cmp r6, r8 + blt _022F9064 + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F910C: .word 0x00003F01 + arm_func_end GhiEncryptDataToBuffer + + arm_func_start GhiAppendHeaderToBuffer +GhiAppendHeaderToBuffer: ; 0x022F9110 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r2 + mov r2, #0 + mov r5, r0 + bl GhiAppendDataToBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _022F9188 ; =ov00_0231A7E4 + mov r0, r5 + mov r2, #2 + bl GhiAppendDataToBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl GhiAppendDataToBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _022F918C ; =ov00_0231A7E8 + mov r0, r5 + mov r2, #2 + bl GhiAppendDataToBuffer + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F9188: .word ov00_0231A7E4 +_022F918C: .word ov00_0231A7E8 + arm_func_end GhiAppendHeaderToBuffer + + arm_func_start GhiAppendCharToBuffer +GhiAppendCharToBuffer: ; 0x022F9190 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + mov r4, r1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #0x20] + cmp r1, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r2, [r5, #0xc] + ldr r1, [r5, #8] + add r2, r2, #1 + cmp r2, r1 + blt _022F9220 + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _022F91F4 + ldr r0, [r5] + mov r1, #1 + str r1, [r0, #0x120] + ldr r0, [r5] + mov r1, #2 + str r1, [r0, #0x3c] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022F91F4: + ldr r1, [r5, #0x14] + bl GhiResizeBuffer + cmp r0, #0 + bne _022F9220 + ldr r0, [r5] + mov r2, #1 + str r2, [r0, #0x120] + ldr r1, [r5] + mov r0, #0 + str r2, [r1, #0x3c] + ldmia sp!, {r3, r4, r5, pc} +_022F9220: + ldr r1, [r5, #4] + ldr r0, [r5, #0xc] + mov r2, #0 + strb r4, [r1, r0] + ldr r1, [r5, #0xc] + mov r0, #1 + add r3, r1, #1 + str r3, [r5, #0xc] + ldr r1, [r5, #4] + strb r2, [r1, r3] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiAppendCharToBuffer + + arm_func_start GhiAppendIntToBuffer +GhiAppendIntToBuffer: ; 0x022F924C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r2, r1 + mov r4, r0 + ldr r1, _022F9280 ; =ov00_0231A7EC + add r0, sp, #0 + bl OS_VsPrintf + add r1, sp, #0 + mov r0, r4 + mov r2, #0 + bl GhiAppendDataToBuffer + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F9280: .word ov00_0231A7EC + arm_func_end GhiAppendIntToBuffer + + arm_func_start GhiResetBuffer +GhiResetBuffer: ; 0x022F9284 + mov r2, #0 + str r2, [r0, #0xc] + str r2, [r0, #0x10] + ldr r1, [r0, #0x20] + cmp r1, #0 + ldreq r0, [r0, #4] + streqb r2, [r0] + bx lr + arm_func_end GhiResetBuffer + + arm_func_start GhiSendBufferedData +GhiSendBufferedData: ; 0x022F92A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r0 + mov r6, #0 + add r5, sp, #4 + add r4, sp, #0 + mvn r8, #0 +_022F92C0: + ldr r0, [r7, #0x4c] + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl GsiSocketSelect + cmp r0, r8 + beq _022F92F0 + cmp r0, #1 + bne _022F9328 + ldr r1, [sp] + cmp r1, #0 + beq _022F9328 +_022F92F0: + mov r1, #1 + mov r2, #5 + str r1, [r7, #0x120] + sub r1, r2, #6 + cmp r0, r1 + str r2, [r7, #0x3c] + movne r0, #0 + bne _022F9318 + ldr r0, [r7, #0x4c] + bl GoaGetLastError +_022F9318: + add sp, sp, #8 + str r0, [r7, #0x50] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F9328: + cmp r0, #1 + blt _022F933C + ldr r0, [sp, #4] + cmp r0, #0 + bne _022F9348 +_022F933C: + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F9348: + ldr r3, [r7, #0x64] + ldr r1, [r7, #0x58] + ldr r2, [r7, #0x60] + mov r0, r7 + add r1, r1, r3 + sub r2, r2, r3 + bl GhiDoSend + cmp r0, r8 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [r7, #0x64] + add r1, r1, r0 + str r1, [r7, #0x64] + ldr r0, [r7, #0x60] + cmp r1, r0 + blt _022F92C0 + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end GhiSendBufferedData + + arm_func_start GhiReadDataFromBufferFixed +GhiReadDataFromBufferFixed: ; 0x022F9398 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r2 + mov r5, r0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xc] + cmp r0, r4 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + ldr ip, [r5, #4] + ldr r3, [r5, #0x10] + mov r0, r1 + add r1, ip, r3 + bl memcpy + ldr r1, [r5, #0x10] + mov r0, #1 + add r1, r1, r4 + str r1, [r5, #0x10] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiReadDataFromBufferFixed + + arm_func_start GhiCallCompletedCallback +GhiCallCompletedCallback: ; 0x022F93E4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr ip, [r5, #0x44] + cmp ip, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xc] + cmp r0, #0 + ldreq r4, [r5, #0xe8] + ldr r0, [r5, #0x48] + movne r4, #0 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0x3c] + ldr r3, [r5, #0x124] + mov r2, r4 + blx ip + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #0 + moveq r0, #1 + streq r0, [r5, #0x100] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiCallCompletedCallback + + arm_func_start GhiCallProgressCallback +GhiCallProgressCallback: ; 0x022F943C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov lr, r0 + ldr ip, [lr, #0x40] + mov r3, r2 + cmp ip, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} + ldr r0, [lr, #0x124] + mov r2, r1 + str r0, [sp] + ldr r0, [lr, #0x128] + str r0, [sp, #4] + ldr r0, [lr, #0x48] + str r0, [sp, #8] + ldr r0, [lr, #4] + ldr r1, [lr, #0x10] + blx ip + add sp, sp, #0xc + ldmia sp!, {pc} + arm_func_end GhiCallProgressCallback + + arm_func_start GhiCallPostCallback +GhiCallPostCallback: ; 0x022F948C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldr r0, [r4, #0x174] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x164] + bl ArrayLength_Gsi + str r0, [sp] + ldr r0, [r4, #0x48] + str r0, [sp, #4] + ldr r0, [r4, #4] + ldr r1, [r4, #0x16c] + ldr r2, [r4, #0x170] + ldr r3, [r4, #0x168] + ldr ip, [r4, #0x174] + blx ip + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end GhiCallPostCallback + + arm_func_start GhiCreateLock +GhiCreateLock: ; 0x022F94DC + bx lr + arm_func_end GhiCreateLock + + arm_func_start GhiFreeLock +GhiFreeLock: ; 0x022F94E0 + bx lr + arm_func_end GhiFreeLock + + arm_func_start GhiLock +GhiLock: ; 0x022F94E4 + bx lr + arm_func_end GhiLock + + arm_func_start GhiUnlock +GhiUnlock: ; 0x022F94E8 + bx lr + arm_func_end GhiUnlock + + arm_func_start GhiDecryptReceivedData +GhiDecryptReceivedData: ; 0x022F94EC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r1, #0 + mov r6, r0 + str r1, [sp, #0xc] + str r1, [sp, #8] + add r5, sp, #8 + add r4, sp, #0xc +_022F950C: + ldr ip, [r6, #0xd0] + ldr r0, [r6, #0xcc] + ldr r2, [r6, #0xc4] + sub r0, r0, ip + str r0, [sp, #0xc] + ldr r3, [r6, #0xa8] + ldr r0, [r6, #0xa4] + ldr r1, [r6, #0xa0] + sub r0, r0, r3 + str r0, [sp, #8] + add r0, r1, r3 + stmia sp, {r0, r5} + ldr lr, [r6, #0x1ac] + mov r0, r6 + mov r3, r4 + add r1, r6, #0x190 + add r2, r2, ip + blx lr + mov r7, r0 + cmp r7, #2 + bne _022F9580 + ldr r1, [r6, #0xb0] + add r0, r6, #0x9c + bl GhiResizeBuffer + cmp r0, #0 + bne _022F9590 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F9580: + cmp r7, #3 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022F9590: + cmp r7, #2 + ldreq r0, [sp, #8] + cmpeq r0, #0 + beq _022F950C + ldr r1, [sp, #0xc] + ldr r0, [r6, #0xcc] + cmp r1, r0 + addgt sp, sp, #0x10 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6, #0xd0] + add r0, r0, r1 + str r0, [r6, #0xd0] + ldr r1, [r6, #0xa8] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [r6, #0xa8] + ldr r0, [sp, #8] + cmp r0, #0 + bgt _022F950C + ldr r1, [r6, #0xd0] + cmp r1, #0xff + ble _022F9620 + ldr r0, [r6, #0xcc] + subs r4, r0, r1 + bne _022F9604 + add r0, r6, #0xc0 + bl GhiResetBuffer + b _022F9620 +_022F9604: + ldr r0, [r6, #0xc4] + mov r2, r4 + add r1, r0, r1 + bl memmove + mov r0, #0 + str r0, [r6, #0xd0] + str r4, [r6, #0xcc] +_022F9620: + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GhiDecryptReceivedData + + arm_func_start GhiDoReceive +GhiDoReceive: ; 0x022F962C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r5, r2 + ldr r2, [r5] + ldr r0, [r7, #0x158] + mov r6, r1 + cmp r0, #0 + sub r4, r2, #1 + beq _022F9680 + bl current_time_gsi + ldr r1, _022F9730 ; =ov00_0231A7F0 + ldr r3, [r7, #0x15c] + ldr r2, [r1] + add r2, r3, r2 + cmp r0, r2 + movlo r0, #1 + ldmloia sp!, {r3, r4, r5, r6, r7, pc} + str r0, [r7, #0x15c] + ldr r0, [r1, #4] + cmp r4, r0 + movge r4, r0 +_022F9680: + ldr r0, [r7, #0x4c] + mov r1, r6 + mov r2, r4 + mov r3, #0 + bl SocketRecv + mvn r1, #0 + cmp r0, r1 + bne _022F9704 + ldr r0, [r7, #0x4c] + bl GoaGetLastError + mvn r2, #0x37 + cmp r0, r2 + bne _022F96C4 + mov r0, #1 + str r0, [r7, #0x154] + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F96C4: + add r1, r2, #0x32 + cmp r0, r1 + addne r1, r2, #0x1e + cmpne r0, r1 + subne r1, r2, #0x14 + cmpne r0, r1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r2, #1 + str r2, [r7, #0x120] + mov r1, #5 + str r1, [r7, #0x3c] + str r0, [r7, #0x50] + str r2, [r7, #0x154] + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F9704: + cmp r0, #0 + bne _022F971C + mov r0, #1 + str r0, [r7, #0x154] + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F971C: + mov r1, #0 + strb r1, [r6, r0] + str r0, [r5] + mov r0, r1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F9730: .word ov00_0231A7F0 + arm_func_end GhiDoReceive + + arm_func_start GhiDoSend +GhiDoSend: ; 0x022F9734 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + cmpne r2, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x4c] + mov r3, #0 + bl SocketSend + mvn r1, #0 + cmp r0, r1 + bne _022F97A8 + ldr r0, [r4, #0x4c] + bl GoaGetLastError + mvn r2, #5 + cmp r0, r2 + subne r1, r2, #0x14 + cmpne r0, r1 + subne r1, r2, #0x46 + cmpne r0, r1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r1, #1 + str r1, [r4, #0x120] + mov r1, #5 + str r1, [r4, #0x3c] + str r0, [r4, #0x50] + sub r0, r1, #6 + ldmia sp!, {r4, pc} +_022F97A8: + ldr r1, [r4, #0x10] + cmp r1, #6 + ldreq r1, [r4, #0x17c] + cmpeq r1, #0 + ldreq r1, [r4, #0x16c] + addeq r1, r1, r0 + streq r1, [r4, #0x16c] + ldmia sp!, {r4, pc} + arm_func_end GhiDoSend + + arm_func_start GhiTrySendThenBuffer +GhiTrySendThenBuffer: ; 0x022F97C8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0x194] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + mov r3, #0 + beq _022F9840 + ldr r0, [r6, #0x19c] + cmp r0, #1 + bne _022F9840 + add r0, r6, #0x54 + bl GhiEncryptDataToBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl GhiSendBufferedData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r6, #0x64] + ldr r0, [r6, #0x60] + cmp r1, r0 + movlt r0, #2 + ldmltia sp!, {r4, r5, r6, pc} + add r0, r6, #0x54 + bl GhiResetBuffer + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_022F9840: + ldr r1, [r6, #0x64] + ldr r0, [r6, #0x60] + cmp r1, r0 + blt _022F9880 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GhiDoSend + mov r3, r0 + mvn r0, #0 + cmp r3, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r3, r4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_022F9880: + add r0, r6, #0x54 + add r1, r5, r3 + sub r2, r4, r3 + bl GhiAppendDataToBuffer + cmp r0, #0 + moveq r0, #0 + movne r0, #2 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GhiTrySendThenBuffer + + arm_func_start GhiFindFreeSlot +GhiFindFreeSlot: ; 0x022F98A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _022F9988 ; =ov00_023289B0 + mov r0, #0 + ldr r3, [r1] + cmp r3, #0 + arm_func_end GhiFindFreeSlot + + arm_func_start ov00_022F98B4 +ov00_022F98B4: ; 0x022F98B4 + ble _022F98D8 + ldr r2, [r1, #0xc] +_022F98BC: + ldr r1, [r2, r0, lsl #2] + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r0, r0, #1 + cmp r0, r3 + blt _022F98BC +_022F98D8: + ldr r0, _022F9988 ; =ov00_023289B0 + ldr r6, [r0] + ldr r0, [r0, #0xc] + add r5, r6, #4 + mov r1, r5, lsl #2 + bl gsirealloc + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r8, _022F9988 ; =ov00_023289B0 + mov r7, r6 + str r0, [r8, #0xc] + cmp r6, r5 + bge _022F9978 + mov sb, #0 + mov r4, #0x1b4 +_022F9918: + mov r0, r4 + bl gsimalloc + ldr r1, [r8, #0xc] + str r0, [r1, r7, lsl #2] + ldr r0, [r8, #0xc] + ldr r0, [r0, r7, lsl #2] + cmp r0, #0 + bne _022F9968 + sub r7, r7, #1 + cmp r7, r6 + blt _022F9960 + ldr r4, _022F9988 ; =ov00_023289B0 +_022F9948: + ldr r0, [r4, #0xc] + ldr r0, [r0, r7, lsl #2] + bl gsifree + sub r7, r7, #1 + cmp r7, r6 + bge _022F9948 +_022F9960: + mvn r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F9968: + add r7, r7, #1 + str sb, [r0] + cmp r7, r5 + blt _022F9918 +_022F9978: + ldr r1, _022F9988 ; =ov00_023289B0 + mov r0, r6 + str r5, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F9988: .word ov00_023289B0 + arm_func_end ov00_022F98B4 + + arm_func_start GhiNewConnection +GhiNewConnection: ; 0x022F998C + stmdb sp!, {r3, r4, r5, lr} + bl GhiLock + bl GhiFindFreeSlot + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + bne _022F99B4 + bl GhiUnlock + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022F99B4: + ldr r0, _022F9B3C ; =ov00_023289B0 + mov r1, #0 + ldr r0, [r0, #0xc] + mov r2, #0x1b4 + ldr r4, [r0, r5, lsl #2] + mov r0, r4 + bl memset + mov r0, #1 + str r0, [r4] + ldr r0, _022F9B3C ; =ov00_023289B0 + str r5, [r4, #4] + ldr r2, [r0, #8] + mov ip, #0 + add r1, r2, #1 + str r1, [r0, #8] + str r2, [r4, #8] + str ip, [r4, #0xc] + str ip, [r4, #0x10] + str ip, [r4, #0x14] + str ip, [r4, #0x18] + str ip, [r4, #0x1c] + strh ip, [r4, #0x20] + str ip, [r4, #0x24] + str ip, [r4, #0x2c] + str ip, [r4, #0x30] + str ip, [r4, #0x34] + str ip, [r4, #0x38] + str ip, [r4, #0x3c] + str ip, [r4, #0x40] + str ip, [r4, #0x44] + str ip, [r4, #0x48] + sub r0, ip, #1 + str r0, [r4, #0x4c] + str ip, [r4, #0x50] + str ip, [r4, #0x108] + str ip, [r4, #0x10c] + str ip, [r4, #0x110] + str ip, [r4, #0x114] + str ip, [r4, #0x118] + str ip, [r4, #0x11c] + str ip, [r4, #0x120] + str ip, [r4, #0x124] + str r0, [r4, #0x128] + str ip, [r4, #0x12c] + str ip, [r4, #0x130] + str ip, [r4, #0x134] + str ip, [r4, #0x150] + str ip, [r4, #0x158] + str ip, [r4, #0x15c] + str ip, [r4, #0x160] + mov r0, #0x1f4 + str r0, [r4, #0x184] + add r0, r4, #0x100 + mov r1, #0x50 + strh r1, [r0, #0x8c] + str ip, [r4, #0x188] + str ip, [r4, #0x190] + mov r0, r4 + add r1, r4, #0x54 + mov r2, #0x800 + mov r3, #0x1000 + str ip, [r4, #0x1b0] + bl GhiInitBuffer + cmp r0, #0 + beq _022F9ACC + mov r0, r4 + add r1, r4, #0x78 + mov r2, #0x800 + mov r3, #0x400 + bl GhiInitBuffer +_022F9ACC: + cmp r0, #0 + beq _022F9AE8 + mov r2, #0x800 + mov r0, r4 + mov r3, r2 + add r1, r4, #0x9c + bl GhiInitBuffer +_022F9AE8: + cmp r0, #0 + beq _022F9B04 + mov r0, r4 + add r1, r4, #0xc0 + mov r2, #0x800 + mov r3, #0x400 + bl GhiInitBuffer +_022F9B04: + cmp r0, #0 + bne _022F9B20 + mov r0, r4 + bl GhiFreeConnection + bl GhiUnlock + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022F9B20: + ldr r0, _022F9B3C ; =ov00_023289B0 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + bl GhiUnlock + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F9B3C: .word ov00_023289B0 + arm_func_end GhiNewConnection + + arm_func_start GhiFreeConnection +GhiFreeConnection: ; 0x022F9B40 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #4] + cmp r1, #0 + movlt r0, #0 + ldmltia sp!, {r4, pc} + ldr r0, _022F9C8C ; =ov00_023289B0 + ldr r0, [r0] + cmp r1, r0 + movge r0, #0 + ldmgeia sp!, {r4, pc} + bl GhiLock + ldr r0, [r4, #0x14] + bl gsifree + ldr r0, [r4, #0x18] + bl gsifree + ldr r0, [r4, #0x24] + bl gsifree + ldr r0, [r4, #0x2c] + bl gsifree + ldr r0, [r4, #0x12c] + bl gsifree + ldr r0, [r4, #0x188] + bl gsifree + ldr r0, [r4, #0x4c] + mvn r1, #0 + cmp r0, r1 + beq _022F9BD8 + mov r1, #2 + bl shutdown_gsi + ldr r0, [r4, #0x4c] + bl SocketClose +_022F9BD8: + add r0, r4, #0x54 + bl GhiFreeBuffer + add r0, r4, #0x78 + bl GhiFreeBuffer + add r0, r4, #0x9c + bl GhiFreeBuffer + add r0, r4, #0xc0 + bl GhiFreeBuffer + add r0, r4, #0xe4 + bl GhiFreeBuffer + ldr r0, [r4, #0x164] + cmp r0, #0 + beq _022F9C14 + mov r0, r4 + bl GhiPostCleanupState +_022F9C14: + ldr r0, [r4, #0x160] + cmp r0, #0 + beq _022F9C3C + bl GhiIsPostAutoFree + cmp r0, #0 + beq _022F9C3C + ldr r0, [r4, #0x160] + bl GhiFreePost + mov r0, #0 + str r0, [r4, #0x160] +_022F9C3C: + ldr r0, [r4, #0x198] + cmp r0, #0 + beq _022F9C68 + ldr r2, [r4, #0x1a4] + cmp r2, #0 + beq _022F9C60 + mov r0, r4 + add r1, r4, #0x190 + blx r2 +_022F9C60: + mov r0, #0 + str r0, [r4, #0x198] +_022F9C68: + mov r1, #0 + ldr r0, _022F9C8C ; =ov00_023289B0 + str r1, [r4] + ldr r1, [r0, #4] + sub r1, r1, #1 + str r1, [r0, #4] + bl GhiUnlock + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F9C8C: .word ov00_023289B0 + arm_func_end GhiFreeConnection + + arm_func_start GhiRequestToConnection +GhiRequestToConnection: ; 0x022F9C90 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GhiLock + cmp r4, #0 + blt _022F9CB4 + ldr r0, _022F9CE0 ; =ov00_023289B0 + ldr r1, [r0] + cmp r4, r1 + blt _022F9CC0 +_022F9CB4: + bl GhiUnlock + mov r0, #0 + ldmia sp!, {r4, pc} +_022F9CC0: + ldr r0, [r0, #0xc] + ldr r4, [r0, r4, lsl #2] + ldr r0, [r4] + cmp r0, #0 + moveq r4, #0 + bl GhiUnlock + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F9CE0: .word ov00_023289B0 + arm_func_end GhiRequestToConnection + + arm_func_start GhiEnumConnections +GhiEnumConnections: ; 0x022F9CE4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022F9D44 ; =ov00_023289B0 + mov r4, r0 + ldr r0, [r1, #4] + cmp r0, #0 + ldmleia sp!, {r4, r5, r6, pc} + bl GhiLock + ldr r5, _022F9D44 ; =ov00_023289B0 + mov r6, #0 + ldr r0, [r5] + cmp r0, #0 + ble _022F9D3C +_022F9D14: + ldr r0, [r5, #0xc] + ldr r0, [r0, r6, lsl #2] + ldr r1, [r0] + cmp r1, #0 + beq _022F9D2C + blx r4 +_022F9D2C: + ldr r0, [r5] + add r6, r6, #1 + cmp r6, r0 + blt _022F9D14 +_022F9D3C: + bl GhiUnlock + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F9D44: .word ov00_023289B0 + arm_func_end GhiEnumConnections + + arm_func_start GhiRedirectConnection +GhiRedirectConnection: ; 0x022F9D48 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x1b0] + cmp r0, #0 + beq _022F9D78 + bl GsiCancelResolvingHostname + ldr r0, [r4, #0x1b0] + bl gsifree + mov r0, #0 + str r0, [r4, #0x1b0] +_022F9D78: + ldr r0, [r4, #0x14] + bl gsifree + ldr r1, [r4, #0x12c] + mov r0, #0 + str r1, [r4, #0x14] + str r0, [r4, #0x12c] + ldr r0, [r4, #0x18] + bl gsifree + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + strh r0, [r4, #0x20] + ldr r0, [r4, #0x24] + bl gsifree + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x4c] + mov r1, #2 + bl shutdown_gsi + ldr r0, [r4, #0x4c] + bl SocketClose + mvn r1, #0 + add r0, r4, #0x54 + str r1, [r4, #0x4c] + bl GhiResetBuffer + add r0, r4, #0x78 + bl GhiResetBuffer + add r0, r4, #0x9c + bl GhiResetBuffer + add r0, r4, #0xc0 + bl GhiResetBuffer + mov r0, #0 + str r0, [r4, #0x10c] + str r0, [r4, #0x110] + str r0, [r4, #0x114] + str r0, [r4, #0x118] + str r0, [r4, #0x11c] + str r0, [r4, #0x154] + ldr r0, [r4, #0x198] + cmp r0, #0 + beq _022F9E5C + ldr r2, [r4, #0x1a4] + cmp r2, #0 + beq _022F9E34 + mov r0, r4 + add r1, r4, #0x190 + blx r2 +_022F9E34: + mov r0, #0 + str r0, [r4, #0x198] + ldr r1, [r4, #0x14] + ldr r0, _022F9E6C ; =ov00_0231A7F8 + mov r2, #8 + bl strncmp + cmp r0, #0 + movne r0, #0 + strne r0, [r4, #0x194] + strne r0, [r4, #0x190] +_022F9E5C: + ldr r0, [r4, #0x130] + add r0, r0, #1 + str r0, [r4, #0x130] + ldmia sp!, {r4, pc} + .align 2, 0 +_022F9E6C: .word ov00_0231A7F8 + arm_func_end GhiRedirectConnection + + arm_func_start GhiCleanupConnections +GhiCleanupConnections: ; 0x022F9E70 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022F9EE0 ; =ov00_023289B0 + ldr r0, [r0, #0xc] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _022F9EE4 ; =GhiFreeConnection + bl GhiEnumConnections + ldr r4, _022F9EE0 ; =ov00_023289B0 + mov r5, #0 + ldr r0, [r4] + cmp r0, #0 + ble _022F9EBC +_022F9EA0: + ldr r0, [r4, #0xc] + ldr r0, [r0, r5, lsl #2] + bl gsifree + ldr r0, [r4] + add r5, r5, #1 + cmp r5, r0 + blt _022F9EA0 +_022F9EBC: + ldr r0, _022F9EE0 ; =ov00_023289B0 + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, _022F9EE0 ; =ov00_023289B0 + mov r1, #0 + str r1, [r0, #0xc] + str r1, [r0] + str r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F9EE0: .word ov00_023289B0 +_022F9EE4: .word GhiFreeConnection + arm_func_end GhiCleanupConnections + + arm_func_start GhttpSetRequestEncryptionEngine +GhttpSetRequestEncryptionEngine: ; 0x022F9EE8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + bl GhiRequestToConnection + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r4, #0x194] + cmp r1, r5 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4, #0x190] + cmp r0, #0 + cmpne r1, r5 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + cmp r5, #0 + bne _022F9F48 + ldr r0, [r4, #0x14] + ldr r1, _022F9F9C ; =ov00_0231A804 + mov r2, #8 + bl strncmp + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_022F9F48: + str r5, [r4, #0x194] + cmp r5, #0 + bne _022F9F64 + mov r0, #0 + str r0, [r4, #0x190] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022F9F64: + mov r2, #0 + ldr r1, _022F9FA0 ; =GhttpEncryptorSslInitFunc + str r2, [r4, #0x190] + ldr r0, _022F9FA4 ; =GhttpEncryptorSslCleanupFunc + str r1, [r4, #0x1a0] + ldr r1, _022F9FA8 ; =GhttpEncryptorSslEncryptFunc + str r0, [r4, #0x1a4] + ldr r0, _022F9FAC ; =GhttpEncryptorSslDecryptFunc + str r1, [r4, #0x1a8] + str r0, [r4, #0x1ac] + str r2, [r4, #0x198] + str r2, [r4, #0x19c] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F9F9C: .word ov00_0231A804 +_022F9FA0: .word GhttpEncryptorSslInitFunc +_022F9FA4: .word GhttpEncryptorSslCleanupFunc +_022F9FA8: .word GhttpEncryptorSslEncryptFunc +_022F9FAC: .word GhttpEncryptorSslDecryptFunc + arm_func_end GhttpSetRequestEncryptionEngine + + arm_func_start GhiEncryptorWriteNboLength +GhiEncryptorWriteNboLength: ; 0x022F9FB0 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov ip, r1, lsr #0x18 + mov r4, r1, lsl #0x18 + mov r3, r1, lsr #8 + mov lr, r1, lsl #8 + and r1, r3, #0xff00 + and ip, ip, #0xff + and r3, lr, #0xff0000 + orr r1, ip, r1 + orr r1, r3, r1 + and r4, r4, #0xff000000 + orr r1, r4, r1 + str r1, [sp] + cmp r2, #4 + add r3, sp, #0 + addhi sp, sp, #4 + ldmhiia sp!, {r3, r4, pc} + rsb r1, r2, #4 + add r1, r3, r1 + bl memcpy + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end GhiEncryptorWriteNboLength + + arm_func_start GhiEncryptorReadNboLength +GhiEncryptorReadNboLength: ; 0x022FA00C + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r2, #4 + movhi r0, #0 + ldmhiia sp!, {r4, pc} + rsb r1, r2, #4 + add r1, r4, r1 + bl GhiReadDataFromBufferFixed + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr ip, [r4] + mov r0, #1 + mov r2, ip, lsr #0x18 + mov r1, ip, lsr #8 + mov r3, ip, lsl #8 + mov ip, ip, lsl #0x18 + and r2, r2, #0xff + and r1, r1, #0xff00 + and r3, r3, #0xff0000 + orr r1, r2, r1 + and r2, ip, #0xff000000 + orr r1, r3, r1 + orr r1, r2, r1 + str r1, [r4] + ldmia sp!, {r4, pc} + arm_func_end GhiEncryptorReadNboLength + + arm_func_start GhiEncryptorParseAsn1Sequence +GhiEncryptorParseAsn1Sequence: ; 0x022FA074 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r4, r1 + mov r3, #0 + add r1, sp, #0 + mov r2, #1 + mov r5, r0 + strb r3, [sp] + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsb r0, [sp] + cmp r0, #0x30 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + add r1, sp, #0 + mov r0, r5 + mov r2, #1 + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsb r2, [sp] + and r0, r2, #0x80 + cmp r0, #0x80 + bne _022FA144 + eor r0, r2, #0x80 + strb r0, [sp] + ldrsb r2, [sp] + mov r3, #0 + add r1, sp, #4 + mov r0, r5 + str r3, [sp, #4] + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + ldr r2, [sp, #4] + sub r0, r1, r0 + cmp r2, r0 + movgt r0, #0 + add sp, sp, #8 + strle r2, [r4] + movle r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FA144: + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + sub r0, r1, r0 + cmp r2, r0 + movgt r0, #0 + strle r2, [r4] + movle r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiEncryptorParseAsn1Sequence + + arm_func_start GhttpEncryptorGenerateEncryptionKeys +GhttpEncryptorGenerateEncryptionKeys: ; 0x022FA168 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x114 + mov r4, r0 + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA698 ; =ov00_0231A810 + add r0, sp, #0xac + mov r2, #1 + bl Sha1Input_Ghi + add r1, r4, #0x2a4 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2a4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, r4, #0x2d4 + add r0, r0, #0x400 + add r1, sp, #0x54 + bl MD5Final_Ghi + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA69C ; =ov00_0231A814 + add r0, sp, #0xac + mov r2, #2 + bl Sha1Input_Ghi + add r1, r4, #0x2a4 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2a4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, r4, #0x2e4 + add r0, r0, #0x400 + add r1, sp, #0x54 + bl MD5Final_Ghi + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA6A0 ; =ov00_0231A818 + add r0, sp, #0xac + mov r2, #3 + bl Sha1Input_Ghi + add r1, r4, #0x2a4 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2a4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, r4, #0x2f4 + add r0, r0, #0x400 + add r1, sp, #0x54 + bl MD5Final_Ghi + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA698 ; =ov00_0231A810 + add r0, sp, #0xac + mov r2, #1 + bl Sha1Input_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, sp, #0 + add r1, sp, #0x54 + bl MD5Final_Ghi + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA69C ; =ov00_0231A814 + add r0, sp, #0xac + mov r2, #2 + bl Sha1Input_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, sp, #0x10 + add r1, sp, #0x54 + bl MD5Final_Ghi + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA6A0 ; =ov00_0231A818 + add r0, sp, #0xac + mov r2, #3 + bl Sha1Input_Ghi + add r0, r4, #0x2d4 + add r1, r0, #0x400 + add r0, sp, #0xac + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, sp, #0x20 + add r1, sp, #0x54 + bl MD5Final_Ghi + add r0, sp, #0xac + bl Sha1Reset_Gsi + ldr r1, _022FA6A4 ; =ov00_0231A81C + add r0, sp, #0xac + mov r2, #4 + bl Sha1Input_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r1, r4, #0x264 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r1, r4, #0x284 + add r0, sp, #0xac + add r1, r1, #0x400 + mov r2, #0x20 + bl Sha1Input_Ghi + add r0, sp, #0xac + add r1, sp, #0x40 + bl Sha1Result_Gsi + add r0, sp, #0x54 + bl MD5Init_Ghi + add r1, r4, #0x2d4 + add r0, sp, #0x54 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x54 + add r1, sp, #0x40 + mov r2, #0x14 + bl MD5Update_Ghi + add r0, sp, #0x30 + add r1, sp, #0x54 + bl MD5Final_Ghi + add ip, r4, #0x320 + add r3, sp, #0 + mov r2, #8 +_022FA5B4: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + bne _022FA5B4 + add r3, sp, #0x10 + add ip, r4, #0x334 + mov r2, #8 +_022FA5E0: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + bne _022FA5E0 + add r3, sp, #0x20 + add ip, r4, #0x348 + mov r2, #8 +_022FA60C: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + bne _022FA60C + add r3, sp, #0x30 + add ip, r4, #0x358 + mov r2, #8 +_022FA638: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + bne _022FA638 + mov r0, #0x10 + str r0, [r4, #0x388] + str r0, [r4, #0x38c] + str r0, [r4, #0x390] + str r0, [r4, #0x394] + ldr r2, [r4, #0x390] + add r0, r4, #0x3a0 + add r1, r4, #0x348 + bl RC4Init_Gsi + add r0, r4, #0xa2 + ldr r2, [r4, #0x394] + add r0, r0, #0x400 + add r1, r4, #0x358 + bl RC4Init_Gsi + add sp, sp, #0x114 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022FA698: .word ov00_0231A810 +_022FA69C: .word ov00_0231A814 +_022FA6A0: .word ov00_0231A818 +_022FA6A4: .word ov00_0231A81C + arm_func_end GhttpEncryptorGenerateEncryptionKeys + + arm_func_start GhttpEncryptorSslInitFunc +GhttpEncryptorSslInitFunc: ; 0x022FA6A8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x34 + mov r6, r0 + ldr r2, [r6, #0x5c] + ldr r0, [r6, #0x60] + mov r5, r1 + sub r0, r2, r0 + cmp r0, #0x32 + addlo sp, sp, #0x34 + movlo r0, #2 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, _022FA8A8 ; =0x00000704 + bl gsimalloc + cmp r0, #0 + str r0, [r5] + addeq sp, sp, #0x34 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r2, _022FA8A8 ; =0x00000704 + mov r1, #0 + bl memset + ldr r4, [r5] + mov r1, #1 + add r0, r4, #0x1a4 + str r1, [r5, #8] + mov r1, #0 + add r0, r0, #0x400 + str r1, [r5, #0xc] + bl MD5Init_Ghi + add r0, r4, #0x1fc + add r0, r0, #0x400 + bl Sha1Reset_Gsi + mov r0, #0x16 + mov r1, #3 + mov r2, #0 + strb r0, [sp] + strb r1, [sp, #1] + strb r2, [sp, #2] + add r0, sp, #3 + mov r1, #0x2d + mov r2, #2 + bl GhiEncryptorWriteNboLength + mov r0, #1 + strb r0, [sp, #5] + mov r0, #0 + mov r2, #3 + strb r0, [sp, #0xa] + add r0, sp, #6 + mov r1, #0x29 + strb r2, [sp, #9] + bl GhiEncryptorWriteNboLength + add r0, sp, #0xb + mov r1, #0 + mov r2, #4 + bl GhiEncryptorWriteNboLength + bl current_time_gsi + bl Util_RandSeed + mov r8, #0 + add sb, sp, #0 + mov r7, r8 + mov r5, #0xff +_022FA79C: + mov r0, r7 + mov r1, r5 + bl RandRangeOverlay0 + add r8, r8, #1 + strb r0, [sb, #0xf] + cmp r8, #0x1c + add sb, sb, #1 + blt _022FA79C + add ip, sp, #0xb + ldrb r2, [ip] + ldrb r1, [ip, #1] + add r0, r4, #0x288 + add r5, r0, #0x400 + strb r2, [r4, #0x684] + strb r1, [r4, #0x685] + ldrb r1, [ip, #2] + ldrb r0, [ip, #3] + add r3, sp, #0xf + mov r2, #0xe + strb r1, [r4, #0x686] + strb r0, [r4, #0x687] +_022FA7F0: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [r5] + strb r0, [r5, #1] + add r5, r5, #2 + bne _022FA7F0 + ldr r0, _022FA8AC ; =ov00_02318490 + mov ip, #0 + ldr r0, [r0] + add r1, sp, #0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov lr, r0, asr #8 + mov r2, r0, lsl #8 + add r0, r4, #0x1a4 + mov r3, #0x200 + mov r5, #1 + and lr, lr, #0xff + and r2, r2, #0xff00 + orr lr, lr, r2 + add r0, r0, #0x400 + add r1, r1, #5 + mov r2, #0x2d + strb ip, [sp, #0x2b] + strh r3, [sp, #0x2c] + strh lr, [sp, #0x2e] + strb r5, [sp, #0x30] + strb ip, [sp, #0x31] + bl MD5Update_Ghi + add r1, sp, #0 + add r0, r4, #0x1fc + add r0, r0, #0x400 + add r1, r1, #5 + mov r2, #0x2d + bl Sha1Input_Ghi + add r1, sp, #0 + add r0, r6, #0x54 + mov r2, #0x32 + bl GhiAppendDataToBuffer + cmp r0, #0 + moveq r0, #2 + movne r0, r5 + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FA8A8: .word 0x00000704 +_022FA8AC: .word ov00_02318490 + arm_func_end GhttpEncryptorSslInitFunc + + arm_func_start GhttpEncryptorSslCleanupFunc +GhttpEncryptorSslCleanupFunc: ; 0x022FA8B0 + stmdb sp!, {r4, lr} + movs r4, r1 + beq _022FA8E0 + ldr r0, [r4] + cmp r0, #0 + beq _022FA8D4 + bl gsifree + mov r0, #0 + str r0, [r4] +_022FA8D4: + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] +_022FA8E0: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end GhttpEncryptorSslCleanupFunc + + arm_func_start GhttpEncryptorSslEncryptFunc +GhttpEncryptorSslEncryptFunc: ; 0x022FA8E8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x6c + mov sb, r2 + mov r8, r3 + cmp r1, #0 + ldr r7, [sp, #0x88] + ldr r6, [sp, #0x8c] + beq _022FAAE0 + ldr r4, [r1] + cmp r4, #0 + ldrne r0, [r1, #0xc] + cmpne r0, #0 + bne _022FA950 + ldr r0, [r6] + cmp r8, r0 + addgt sp, sp, #0x6c + movgt r0, #2 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + mov r1, sb + mov r2, r8 + bl memcpy + ldr r0, [r6] + add r0, r0, r8 + str r0, [r6] + b _022FAAE0 +_022FA950: + mov r0, r8, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp] + ldr r1, [r6] + add r0, r8, #5 + cmp r1, r0 + addlt sp, sp, #0x6c + mov r1, #0 + movlt r0, #2 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, #0x17 + strb r0, [r7] + mov r0, #3 + strb r0, [r7, #1] + add r0, sp, #0x14 + strb r1, [r7, #2] + add r5, r1, #5 + bl MD5Init_Ghi + ldr r2, [r4, #0x388] + add r0, sp, #0x14 + add r1, r4, #0x320 + bl MD5Update_Ghi + ldr r1, _022FAAEC ; =ov00_0231A824 + add r0, sp, #0x14 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x14 + add r1, r4, #0x310 + mov r2, #8 + bl MD5Update_Ghi + ldr r1, _022FAAF0 ; =ov00_0231A858 + add r0, sp, #0x14 + mov r2, #1 + bl MD5Update_Ghi + add r0, sp, #0x14 + add r1, sp, #0 + mov r2, #2 + bl MD5Update_Ghi + add r0, sp, #0x14 + mov r1, sb + mov r2, r8 + bl MD5Update_Ghi + add r0, sp, #2 + add r1, sp, #0x14 + bl MD5Final_Ghi + add r0, sp, #0x14 + bl MD5Init_Ghi + ldr r2, [r4, #0x388] + add r0, sp, #0x14 + add r1, r4, #0x320 + bl MD5Update_Ghi + ldr r1, _022FAAF4 ; =ov00_0231A85C + add r0, sp, #0x14 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, sp, #0x14 + add r1, sp, #2 + mov r2, #0x10 + bl MD5Update_Ghi + add r0, sp, #2 + add r1, sp, #0x14 + bl MD5Final_Ghi + mov r1, sb + add r0, r4, #0x3a0 + add r2, r7, r5 + mov r3, r8 + bl RC4Encrypt_Gsi + add r5, r5, r8 + add r0, r4, #0x3a0 + add r1, sp, #2 + add r2, r7, r5 + mov r3, #0x10 + bl RC4Encrypt_Gsi + add r1, r5, #0x10 + add r0, r7, #3 + sub r1, r1, #5 + mov r2, #2 + bl GhiEncryptorWriteNboLength + add r0, r5, #0x10 + ldr r1, [r6] + mov r5, #7 + sub r0, r1, r0 + str r0, [r6] + mov r0, #0 + mov r2, r0 +_022FAAB8: + add r3, r4, r5 + ldrb r1, [r3, #0x310] + cmp r1, #0xff + subeq r5, r5, #1 + streqb r2, [r3, #0x310] + addne r1, r1, #1 + movne r5, r0 + strneb r1, [r3, #0x310] + cmp r5, #0 + bge _022FAAB8 +_022FAAE0: + mov r0, #1 + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FAAEC: .word ov00_0231A824 +_022FAAF0: .word ov00_0231A858 +_022FAAF4: .word ov00_0231A85C + arm_func_end GhttpEncryptorSslEncryptFunc + + arm_func_start GhttpEncryptorSslDecryptFunc +GhttpEncryptorSslDecryptFunc: ; 0x022FAAF8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + movs fp, r1 + mov sb, r0 + ldr r0, [sp, #0x50] + ldrne r1, [fp] + mov r5, #0 + mov r8, r2 + mov r7, r3 + mov r6, r5 + str r0, [sp, #0x50] + ldr sl, [sp, #0x54] + cmpne r1, #0 + bne _022FAB5C + ldr r2, [r7] + ldr r0, [sp, #0x50] + mov r1, r8 + bl memcpy + ldr r1, [r7] + mov r0, #0 + str r1, [sl] + str r0, [r7] + add sp, sp, #0x28 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FAB5C: + addeq sp, sp, #0x28 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r7] + cmp r0, #0 + ble _022FAD04 + add r4, r1, #0xa2 +_022FAB78: + mov r0, #0 + strh r0, [sp] + ldr r0, [r7] + sub r0, r0, r5 + cmp r0, #5 + blo _022FAD04 + add r1, r8, r5 + ldrb r3, [r1, #3] + ldrb r2, [r1, #4] + add r0, sp, #0 + strb r2, [r0, #1] + strb r3, [r0] + ldrh r3, [sp] + mov r0, r3, asr #8 + and r2, r0, #0xff + mov r0, r3, lsl #8 + and r0, r0, #0xff00 + orr r0, r2, r0 + strh r0, [sp] + ldrh r3, [sp] + ldr r0, [r7] + add r2, r5, r3 + add r2, r2, #5 + cmp r0, r2 + blt _022FAD04 + ldr r0, [sb, #0x19c] + cmp r0, #0 + beq _022FAC14 + ldr r2, [sl] + sub r2, r2, r6 + cmp r2, r3 + bge _022FAC14 + str r5, [r7] + cmp r6, #0 + movgt r0, #1 + add sp, sp, #0x28 + str r6, [sl] + movle r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FAC14: + ldrb r1, [r1] + sub r1, r1, #0x14 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _022FACE4 +_022FAC28: ; jump table + b _022FACCC ; case 0 + b _022FACDC ; case 1 + b _022FAC38 ; case 2 + b _022FAC88 ; case 3 +_022FAC38: + cmp r0, #0 + add r5, r5, #5 + beq _022FAC54 + add r1, r8, r5 + add r0, r4, #0x400 + mov r2, r1 + bl RC4Encrypt_Gsi +_022FAC54: + ldrh r3, [sp] + mov r0, sb + add r1, sp, #4 + add r2, r8, r5 + bl GhiInitReadOnlyBuffer + mov r0, sb + mov r1, fp + add r2, sp, #4 + bl GhttpEncryptorProcessSslHandshake + cmp r0, #1 + beq _022FACF0 + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FAC88: + cmp r0, #0 + add r5, r5, #5 + beq _022FACA4 + add r1, r8, r5 + add r0, r4, #0x400 + mov r2, r1 + bl RC4Encrypt_Gsi +_022FACA4: + ldrh r2, [sp] + ldr r0, [sp, #0x50] + add r1, r8, r5 + add r0, r0, r6 + sub r2, r2, #0x10 + bl memcpy + ldrh r0, [sp] + sub r0, r0, #0x10 + add r6, r6, r0 + b _022FACF0 +_022FACCC: + mov r0, #1 + str r0, [sb, #0x19c] + add r5, r5, #5 + b _022FACF0 +_022FACDC: + add r5, r5, #5 + b _022FACF0 +_022FACE4: + add sp, sp, #0x28 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FACF0: + ldrh r1, [sp] + ldr r0, [r7] + add r5, r5, r1 + cmp r5, r0 + blt _022FAB78 +_022FAD04: + str r5, [r7] + str r6, [sl] + ldr r0, [r7] + cmp r0, #0 + movlt r0, #3 + movge r0, #1 + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GhttpEncryptorSslDecryptFunc + + arm_func_start GhiCertificateChainIsValid +GhiCertificateChainIsValid: ; 0x022FAD24 + mov r0, #1 + bx lr + arm_func_end GhiCertificateChainIsValid + + arm_func_start GhttpEncryptorProcessSslHandshake +GhttpEncryptorProcessSslHandshake: ; 0x022FAD2C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x50 + mov r4, r2 + ldr r2, [r4, #0x10] + ldr r3, [r4, #0xc] + mov r5, r0 + mov r0, r2 + str r2, [sp] + cmp r0, r3 + ldr r7, [r1] + bge _022FBCF8 +_022FAD58: + mov r3, #0 + add r1, sp, #5 + mov r0, r4 + mov r2, #1 + strb r3, [sp, #5] + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r0, [sp, #5] + cmp r0, #2 + bne _022FAF0C + mov r0, #0 + str r0, [sp, #0x28] + str r0, [sp, #0x24] + strb r0, [sp, #4] + ldr r0, [r7] + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #0x28 + mov r0, r4 + mov r2, #3 + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x10] + ldr r2, [sp, #0x28] + sub r1, r1, r0 + cmp r2, r1 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, r7, #0x264 + add r3, r0, #2 + mov r0, r4 + add r1, r1, #0x400 + mov r2, #0x20 + str r3, [r4, #0x10] + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #4 + mov r0, r4 + mov r2, #1 + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r2, [sp, #4] + mov r0, r4 + add r1, r7, #4 + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r3, [sp, #4] + add r1, sp, #0x24 + mov r0, r4 + mov r2, #2 + str r3, [r7] + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r6, [sp, #0x24] + add r3, r7, #0x100 + add r1, sp, #4 + mov r0, r4 + mov r2, #1 + strh r6, [r3, #4] + bl GhiReadDataFromBufferFixed + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r0, [sp, #4] + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + ldr r0, [sp] + ldr r3, [r4, #4] + sub r6, r1, r0 + ldr r1, [sp] + add r0, r7, #0x1a4 + mov r2, r6 + add r0, r0, #0x400 + add r1, r3, r1 + bl MD5Update_Ghi + add r0, r7, #0x1fc + ldr r3, [r4, #4] + ldr r1, [sp] + mov r2, r6 + add r0, r0, #0x400 + add r1, r3, r1 + bl Sha1Input_Ghi + b _022FBCE4 +_022FAF0C: + cmp r0, #0xb + bne _022FB6A0 + mov r8, #0 + add r1, sp, #0x20 + mov r0, r4 + mov r2, #3 + str r8, [sp, #0x20] + str r8, [sp, #0x1c] + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #0x1c + mov r0, r4 + mov r2, #3 + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r2, #3 + cmp r1, r0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + ldr r0, [r4, #0xc] + add sb, r1, r2 + sub r0, r0, r1 + cmp r2, r0 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r1, sb + bge _022FB630 + add r6, sp, #0x14 +_022FAFA8: + mov r0, #0 + str r0, [sp, #0x18] + mov r0, r4 + add r1, sp, #0x18 + mov r2, #3 + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr fp, [r4, #0x10] + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x18] + sub r0, r0, fp + cmp r1, r0 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022FBD10 ; =0x0000FFFF + cmp r1, r0 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r8, r8, #1 + cmp r8, #1 + bne _022FB61C + mov r0, #0 + str r0, [sp, #0x14] + mov r0, r4 + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r4 + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + ldr r0, [r4, #0xc] + sub r0, r0, r1 + cmp r0, #5 + addlt sp, sp, #0x50 + movlt r0, #3 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #0xa0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #3 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #2 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #1 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + add r1, r0, #1 + add r0, r1, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #2 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0x10] + mov r0, r2 + add r1, r0, #1 + str r1, [r4, #0x10] + ldr r0, [r4, #4] + ldrb sl, [r0, r2] + add r0, r1, sl + cmp r0, sb + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r4 + add r1, r1, sl + str r1, [r4, #0x10] + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0x10] + ldr r1, [sp, #0x14] + mov r0, r4 + add r1, r2, r1 + str r1, [r4, #0x10] + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0x10] + ldr r1, [sp, #0x14] + mov r0, r4 + add r1, r2, r1 + str r1, [r4, #0x10] + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0x10] + ldr r1, [sp, #0x14] + mov r0, r4 + add r1, r2, r1 + str r1, [r4, #0x10] + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0x10] + ldr r1, [sp, #0x14] + mov r0, r4 + add r1, r2, r1 + str r1, [r4, #0x10] + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r4 + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x14] + cmp r0, #0xd + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #6 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r2, [r4, #4] + ldrb r0, [r2, r1] + cmp r0, #9 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + ldr r1, _022FBD14 ; =ov00_02318484 + add r0, r2, r0 + mov r2, #9 + bl memcmp + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + add r1, r0, #9 + add r0, r1, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #5 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + sub r0, sb, r1 + cmp r0, #2 + addlt sp, sp, #0x50 + movlt r0, #3 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #3 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #0x81 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + sub r0, sb, r0 + cmp sl, r0 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + add r1, r0, #1 + add r0, r1, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r4 + mov r1, r6 + bl GhiEncryptorParseAsn1Sequence + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0x10] + mov r0, r2 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4, #4] + ldrsb r0, [r1, r2] + cmp r0, #2 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + ldrsb r1, [r1, r0] + and r1, r1, #0x80 + cmp r1, #0x80 + mov r1, r0 + add r1, r1, #1 + bne _022FB488 + str r1, [r4, #0x10] + ldr r1, [r4, #4] + ldrsb r0, [r1, r0] + and r0, r0, #0x7f + cmp r0, #4 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #0 + sub r0, r0, #1 + mov sl, #0 + ble _022FB494 +_022FB45C: + ldr r2, [r4, #0x10] + cmp r0, #0 + mov r1, r2 + add r1, r1, #1 + str r1, [r4, #0x10] + ldr r1, [r4, #4] + sub r0, r0, #1 + ldrb r1, [r1, r2] + orr sl, r1, sl, lsl #8 + bgt _022FB45C + b _022FB494 +_022FB488: + str r1, [r4, #0x10] + ldr r1, [r4, #4] + ldrb sl, [r1, r0] +_022FB494: + ldr r1, [r4, #0x10] + add r0, r1, sl + cmp r0, sb + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #4] + ldrsb r0, [r0, r1] + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + sub r2, sl, #1 + cmp r2, #0x800 + addhi sp, sp, #0x50 + movhi r0, #3 + ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r2, lsr #2 + str r0, [r7, #0x108] + ldr r3, [r4, #4] + ldr r1, [r4, #0x10] + add r0, r7, #0x108 + add r1, r3, r1 + bl GsLargeIntSetFromMemoryStream + ldr r1, [r4, #0x10] + sub r0, sl, #1 + add r2, r1, r0 + add r0, r2, #1 + str r0, [r4, #0x10] + ldr r1, [r4, #4] + ldrsb r0, [r1, r2] + cmp r0, #2 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + ldrsb r1, [r1, r0] + and r1, r1, #0x80 + cmp r1, #0x80 + mov r1, r0 + add r1, r1, #1 + bne _022FB5A4 + str r1, [r4, #0x10] + ldr r1, [r4, #4] + ldrsb r0, [r1, r0] + and r0, r0, #0x7f + cmp r0, #4 + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #0 + sub r0, r0, #1 + mov sl, #0 + ble _022FB5B0 +_022FB578: + ldr r2, [r4, #0x10] + cmp r0, #0 + mov r1, r2 + add r1, r1, #1 + str r1, [r4, #0x10] + ldr r1, [r4, #4] + sub r0, r0, #1 + ldrb r1, [r1, r2] + orr sl, r1, sl, lsl #8 + bgt _022FB578 + b _022FB5B0 +_022FB5A4: + str r1, [r4, #0x10] + ldr r1, [r4, #4] + ldrb sl, [r1, r0] +_022FB5B0: + ldr r0, [r4, #0x10] + add r0, r0, sl + cmp r0, sb + addgt sp, sp, #0x50 + movgt r0, #3 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sl, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sl, #0x800 + addhi sp, sp, #0x50 + movhi r0, #3 + ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + sub r0, sl, #1 + mov r0, r0, lsr #2 + add r0, r0, #1 + str r0, [r7, #0x20c] + add r0, r7, #0x20c + ldr r3, [r4, #4] + ldr r1, [r4, #0x10] + mov r2, sl + add r1, r3, r1 + bl GsLargeIntSetFromMemoryStream + ldr r0, [r4, #0x10] + add r0, r0, sl + str r0, [r4, #0x10] +_022FB61C: + ldr r0, [sp, #0x18] + add r1, fp, r0 + str r1, [r4, #0x10] + cmp r1, sb + blt _022FAFA8 +_022FB630: + cmp r1, sb + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r7 + bl GhiCertificateChainIsValid + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #0x10] + ldr r0, [sp] + ldr r3, [r4, #4] + sub r6, r1, r0 + ldr r1, [sp] + add r0, r7, #0x1a4 + mov r2, r6 + add r0, r0, #0x400 + add r1, r3, r1 + bl MD5Update_Ghi + add r0, r7, #0x1fc + ldr r3, [r4, #4] + ldr r1, [sp] + mov r2, r6 + add r0, r0, #0x400 + add r1, r3, r1 + bl Sha1Input_Ghi + b _022FBCE4 +_022FB6A0: + cmp r0, #0xe + bne _022FBCC8 + mov r3, #0 + add r1, sp, #8 + mov r0, r4 + mov r2, #3 + str r3, [sp, #8] + bl GhiEncryptorReadNboLength + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #8] + cmp r0, #0 + addne sp, sp, #0x50 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #4] + ldr r1, [sp] + ldr r3, [r4, #0x10] + add r1, r2, r1 + ldr r2, [sp] + add r0, r7, #0x1a4 + add r0, r0, #0x400 + sub r2, r3, r2 + bl MD5Update_Ghi + add r0, r7, #0x1fc + ldr r2, [r4, #4] + ldr r1, [sp] + ldr r3, [r4, #0x10] + add r1, r2, r1 + ldr r2, [sp] + add r0, r0, #0x400 + sub r2, r3, r2 + bl Sha1Input_Ghi + ldr r0, [r7, #0x108] + mov r0, r0, lsl #2 + add r2, r0, #9 + str r2, [sp, #8] + ldr r1, [r5, #0x5c] + ldr r0, [r5, #0x60] + sub r0, r1, r0 + cmp r0, r2 + bge _022FB784 +_022FB750: + ldr r1, [r5, #0x68] + add r0, r5, #0x54 + bl GhiResizeBuffer + cmp r0, #0 + addeq sp, sp, #0x50 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r5, #0x5c] + ldr r1, [r5, #0x60] + ldr r0, [sp, #8] + sub r1, r2, r1 + cmp r1, r0 + blt _022FB750 +_022FB784: + mov r0, #3 + strb r0, [r7, #0x6a4] + mov r0, #0 + strb r0, [r7, #0x6a5] + mov sb, #2 + mov r8, r0 + mov r6, #0x100 +_022FB7A0: + bl current_time_gsi + bl Util_RandSeed + mov r0, r8 + mov r1, r6 + bl RandRangeOverlay0 + add r1, r7, sb + add sb, sb, #1 + strb r0, [r1, #0x6a4] + cmp sb, #0x30 + blt _022FB7A0 + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x58] + add r0, r1, #9 + str r0, [r5, #0x60] + mov r0, #0x16 + strb r0, [r2, r1] + add r6, r2, r1 + mov r0, #3 + strb r0, [r6, #1] + mov r0, #0 + strb r0, [r6, #2] + ldr r1, [r7, #0x108] + add r0, r6, #3 + mov r1, r1, lsl #2 + add r1, r1, #4 + mov r2, #2 + bl GhiEncryptorWriteNboLength + mov r0, #0x10 + strb r0, [r6, #5] + ldr r1, [r7, #0x108] + add r0, r6, #6 + mov r1, r1, lsl #2 + mov r2, #3 + bl GhiEncryptorWriteNboLength + add r0, r7, #0x2a4 + add r1, r0, #0x400 + ldr r8, [r5, #0x58] + ldr r3, [r5, #0x60] + add r0, r7, #0x108 + mov r2, #0x30 + add r3, r8, r3 + bl GsCryptRsaEncryptBuffer + add r0, r7, #0x1a4 + ldr r2, [r5, #0x60] + ldr r1, [r7, #0x108] + add r0, r0, #0x400 + add r1, r2, r1, lsl #2 + str r1, [r5, #0x60] + ldr r2, [r7, #0x108] + add r1, r6, #5 + mov r2, r2, lsl #2 + add r2, r2, #4 + bl MD5Update_Ghi + ldr r2, [r7, #0x108] + add r0, r7, #0x1fc + mov r2, r2, lsl #2 + add r1, r6, #5 + add r0, r0, #0x400 + add r2, r2, #4 + bl Sha1Input_Ghi + ldr r2, [r5, #0x58] + ldr r1, [r5, #0x60] + mov r0, #0x14 + strb r0, [r2, r1] + add r1, r2, r1 + mov r0, #3 + strb r0, [r1, #1] + mov r0, #0 + strb r0, [r1, #2] + strb r0, [r1, #3] + mov r2, #1 + strb r2, [r1, #4] + ldr r0, [r5, #0x60] + add r1, r0, #5 + add r0, r1, #1 + str r0, [r5, #0x60] + ldr r0, [r5, #0x58] + strb r2, [r0, r1] + mov r0, r7 + bl GhttpEncryptorGenerateEncryptionKeys + ldr r2, [r5, #0x58] + ldr r1, [r5, #0x60] + mov r0, #0x16 + strb r0, [r2, r1] + add r6, r2, r1 + mov r2, #3 + strb r2, [r6, #1] + mov r0, #0 + strb r0, [r6, #2] + strb r0, [r6, #3] + mov r0, #0x38 + strb r0, [r6, #4] + ldr r0, [r5, #0x60] + mov r3, #0x14 + add r8, r0, #5 + add r0, r8, #1 + str r0, [r5, #0x60] + ldr r0, [r5, #0x58] + mov r1, #0x24 + strb r3, [r0, r8] + ldr r3, [r5, #0x58] + ldr r0, [r5, #0x60] + add r0, r3, r0 + bl GhiEncryptorWriteNboLength + ldr r1, [r5, #0x60] + add r0, r7, #0x1a4 + add r3, r1, #3 + ldr r1, _022FBD18 ; =ov00_0231A890 + add r0, r0, #0x400 + mov r2, #4 + str r3, [r5, #0x60] + bl MD5Update_Ghi + add r0, r7, #0x1a4 + add r1, r7, #0x2d4 + add r0, r0, #0x400 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + ldr r1, _022FBD1C ; =ov00_0231A824 + add r0, r0, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r1, r7, #0x1a4 + add r0, sp, #0x40 + add r1, r1, #0x400 + bl MD5Final_Ghi + add r0, r7, #0x1fc + ldr r1, _022FBD18 ; =ov00_0231A890 + add r0, r0, #0x400 + mov r2, #4 + bl Sha1Input_Ghi + add r0, r7, #0x1fc + add r1, r7, #0x2d4 + add r0, r0, #0x400 + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r0, r7, #0x1fc + ldr r1, _022FBD1C ; =ov00_0231A824 + add r0, r0, #0x400 + mov r2, #0x28 + bl Sha1Input_Ghi + add r0, r7, #0x1fc + add r0, r0, #0x400 + add r1, sp, #0x2c + bl Sha1Result_Gsi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + bl MD5Init_Ghi + add r0, r7, #0x1a4 + add r1, r7, #0x2d4 + add r0, r0, #0x400 + add r1, r1, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + ldr r1, _022FBD20 ; =ov00_0231A85C + add r0, r0, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, sp, #0x40 + mov r2, #0x10 + bl MD5Update_Ghi + add r1, r7, #0x1a4 + add r0, sp, #0x40 + add r1, r1, #0x400 + bl MD5Final_Ghi + add r0, r7, #0x1fc + add r0, r0, #0x400 + bl Sha1Reset_Gsi + add r0, r7, #0x1fc + add r1, r7, #0x2d4 + add r0, r0, #0x400 + add r1, r1, #0x400 + mov r2, #0x30 + bl Sha1Input_Ghi + add r0, r7, #0x1fc + ldr r1, _022FBD20 ; =ov00_0231A85C + add r0, r0, #0x400 + mov r2, #0x28 + bl Sha1Input_Ghi + add r0, r7, #0x1fc + add r0, r0, #0x400 + add r1, sp, #0x2c + mov r2, #0x14 + bl Sha1Input_Ghi + add r0, r7, #0x1fc + add r0, r0, #0x400 + add r1, sp, #0x2c + bl Sha1Result_Gsi + ldr r1, [r5, #0x58] + ldr r0, [r5, #0x60] + add r3, sp, #0x40 + add r8, r1, r0 + mov r2, #8 +_022FBAB8: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [r8] + strb r0, [r8, #1] + add r8, r8, #2 + bne _022FBAB8 + ldr r0, [r5, #0x60] + add r3, sp, #0x2c + add r1, r0, #0x10 + str r1, [r5, #0x60] + ldr r0, [r5, #0x58] + mov r2, #0xa + arm_func_end GhttpEncryptorProcessSslHandshake + + arm_func_start ov00_022FBAF0 +ov00_022FBAF0: ; 0x022FBAF0 + add r8, r0, r1 +_022FBAF4: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [r8] + strb r0, [r8, #1] + add r8, r8, #2 + bne _022FBAF4 + ldr r1, [r5, #0x60] + add r0, r7, #0x1a4 + add r1, r1, #0x14 + add r0, r0, #0x400 + str r1, [r5, #0x60] + bl MD5Init_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, r7, #0x320 + mov r2, #0x10 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + ldr r1, _022FBD1C ; =ov00_0231A824 + add r0, r0, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, r7, #0x310 + mov r2, #8 + bl MD5Update_Ghi + mov r0, #0x16 + strb r0, [sp, #0xc] + mov r0, #0 + strb r0, [sp, #0xd] + strb r0, [sp, #0x10] + strb r0, [sp, #0x11] + mov r0, #0x28 + strb r0, [sp, #0xe] + mov r0, #0x14 + strb r0, [sp, #0xf] + mov r0, #0x24 + strb r0, [sp, #0x12] + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, sp, #0xc + mov r2, #7 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, sp, #0x40 + mov r2, #0x10 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, sp, #0x2c + mov r2, #0x14 + bl MD5Update_Ghi + add r1, r7, #0x1a4 + add r0, sp, #0x40 + add r1, r1, #0x400 + bl MD5Final_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + bl MD5Init_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, r7, #0x320 + mov r2, #0x10 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + ldr r1, _022FBD20 ; =ov00_0231A85C + add r0, r0, #0x400 + mov r2, #0x30 + bl MD5Update_Ghi + add r0, r7, #0x1a4 + add r0, r0, #0x400 + add r1, sp, #0x40 + mov r2, #0x10 + bl MD5Update_Ghi + add r1, r7, #0x1a4 + add r0, sp, #0x40 + add r1, r1, #0x400 + bl MD5Final_Ghi + ldr r1, [r5, #0x58] + ldr r0, [r5, #0x60] + add r3, sp, #0x40 + add r8, r1, r0 + mov r2, #8 +_022FBC50: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + strb r1, [r8] + strb r0, [r8, #1] + add r8, r8, #2 + bne _022FBC50 + ldr r0, [r5, #0x60] + mov r3, #0 + add r0, r0, #0x10 + str r0, [r5, #0x60] + strb r3, [r7, #0x310] + strb r3, [r7, #0x311] + strb r3, [r7, #0x312] + strb r3, [r7, #0x313] + strb r3, [r7, #0x314] + strb r3, [r7, #0x315] + strb r3, [r7, #0x316] + add r0, r7, #0x314 + mov r1, #1 + mov r2, #4 + strb r3, [r7, #0x317] + bl GhiEncryptorWriteNboLength + add r1, r6, #5 + add r0, r7, #0x3a0 + mov r2, r1 + mov r3, #0x38 + bl RC4Encrypt_Gsi + b _022FBCE4 +_022FBCC8: + cmp r0, #0x14 + ldreq r0, [r4, #0xc] + streq r0, [r4, #0x10] + beq _022FBCE4 + add sp, sp, #0x50 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FBCE4: + ldr r0, [r4, #0x10] + ldr r3, [r4, #0xc] + str r0, [sp] + cmp r0, r3 + blt _022FAD58 +_022FBCF8: + ldr r0, [sp] + cmp r0, r3 + moveq r0, #1 + movne r0, #3 + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FBD10: .word 0x0000FFFF +_022FBD14: .word ov00_02318484 +_022FBD18: .word ov00_0231A890 +_022FBD1C: .word ov00_0231A824 +_022FBD20: .word ov00_0231A85C + arm_func_end ov00_022FBAF0 + + arm_func_start GhiHandleStatus +GhiHandleStatus: ; 0x022FBD24 + stmdb sp!, {r3, lr} + ldr lr, [r0, #0x114] + ldr r3, _022FBDDC ; =0x51EB851F + mov r1, lr, lsr #0x1f + smull r2, ip, r3, lr + add ip, r1, ip, asr #5 + cmp ip, #5 + addls pc, pc, ip, lsl #2 + ldmia sp!, {r3, pc} +_022FBD48: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _022FBD60 ; case 1 + b _022FBD60 ; case 2 + b _022FBD60 ; case 3 + b _022FBD64 ; case 4 + b _022FBDD0 ; case 5 +_022FBD60: + ldmia sp!, {r3, pc} +_022FBD64: + sub r1, lr, #0x91 + sub r1, r1, #0x100 + cmp r1, #9 + addls pc, pc, r1, lsl #2 + b _022FBDC4 +_022FBD78: ; jump table + b _022FBDA0 ; case 0 + b _022FBDC4 ; case 1 + b _022FBDAC ; case 2 + b _022FBDB8 ; case 3 + b _022FBDC4 ; case 4 + b _022FBDC4 ; case 5 + b _022FBDC4 ; case 6 + b _022FBDC4 ; case 7 + b _022FBDC4 ; case 8 + b _022FBDB8 ; case 9 +_022FBDA0: + mov r1, #9 + str r1, [r0, #0x3c] + ldmia sp!, {r3, pc} +_022FBDAC: + mov r1, #0xa + str r1, [r0, #0x3c] + ldmia sp!, {r3, pc} +_022FBDB8: + mov r1, #0xb + str r1, [r0, #0x3c] + ldmia sp!, {r3, pc} +_022FBDC4: + mov r1, #8 + str r1, [r0, #0x3c] + ldmia sp!, {r3, pc} +_022FBDD0: + mov r1, #0xc + str r1, [r0, #0x3c] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBDDC: .word 0x51EB851F + arm_func_end GhiHandleStatus + + arm_func_start GhiProcessConnection +GhiProcessConnection: ; 0x022FBDE0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r1, [r4, #0x150] + cmp r1, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r1, #1 + str r1, [r4, #0x150] + ldr r1, [r4, #0x10] + cmp r1, #0 + bne _022FBE10 + bl GhiDoSocketInit +_022FBE10: + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _022FBE24 + mov r0, r4 + bl GhiDoHostLookup +_022FBE24: + ldr r0, [r4, #0x10] + cmp r0, #2 + bne _022FBE38 + mov r0, r4 + bl GhiDoLookupPending +_022FBE38: + ldr r0, [r4, #0x10] + cmp r0, #3 + bne _022FBE4C + mov r0, r4 + bl GhiDoConnecting +_022FBE4C: + ldr r0, [r4, #0x10] + cmp r0, #4 + bne _022FBE60 + mov r0, r4 + bl GhiDoSecuringSession +_022FBE60: + ldr r0, [r4, #0x10] + cmp r0, #5 + bne _022FBE74 + mov r0, r4 + bl GhiDoSendingRequest +_022FBE74: + ldr r0, [r4, #0x10] + cmp r0, #6 + bne _022FBE88 + mov r0, r4 + bl GhiDoPosting +_022FBE88: + ldr r0, [r4, #0x10] + cmp r0, #7 + bne _022FBE9C + mov r0, r4 + bl GhiDoWaiting +_022FBE9C: + ldr r0, [r4, #0x10] + cmp r0, #8 + bne _022FBEB0 + mov r0, r4 + bl GhiDoReceivingStatus +_022FBEB0: + ldr r0, [r4, #0x10] + cmp r0, #9 + bne _022FBEC4 + mov r0, r4 + bl GhiDoReceivingHeaders +_022FBEC4: + ldr r0, [r4, #0x10] + cmp r0, #0xa + bne _022FBED8 + mov r0, r4 + bl GhiDoReceivingFile +_022FBED8: + ldr r0, [r4, #0x12c] + cmp r0, #0 + beq _022FBEEC + mov r0, r4 + bl GhiRedirectConnection +_022FBEEC: + ldr r0, [r4, #0x3c] + ldr r5, [r4, #0x120] + cmp r0, #0x12 + cmpeq r5, #0 + bne _022FBF14 + ldr r0, [r4, #0x4c] + bl CanReceiveOnSocket + cmp r0, #0 + moveq r0, #1 + streq r0, [r4, #0x120] +_022FBF14: + ldr r0, [r4, #0x120] + cmp r0, #0 + moveq r0, #0 + streq r0, [r4, #0x150] + beq _022FBF40 + mov r0, r4 + bl GhiHandleStatus + mov r0, r4 + bl GhiCallCompletedCallback + mov r0, r4 + bl GhiFreeConnection +_022FBF40: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiProcessConnection + + arm_func_start GhttpStartup +GhttpStartup: ; 0x022FBF48 + stmdb sp!, {r3, lr} + bl GhiLock + ldr r0, _022FBF90 ; =ov00_023289C0 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + cmp r1, #1 + bne _022FBF88 + bl GhiCreateLock + ldr r0, _022FBF94 ; =ov00_0231A7F0 + mov r2, #0xfa + ldr r1, _022FBF98 ; =ov00_0231A7F4 + mov r3, #0x7d + str r2, [r0] + str r3, [r1] + ldmia sp!, {r3, pc} +_022FBF88: + bl GhiUnlock + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBF90: .word ov00_023289C0 +_022FBF94: .word ov00_0231A7F0 +_022FBF98: .word ov00_0231A7F4 + arm_func_end GhttpStartup + + arm_func_start GhttpCleanup +GhttpCleanup: ; 0x022FBF9C + stmdb sp!, {r3, lr} + bl GhiLock + ldr r0, _022FBFF0 ; =ov00_023289C0 + ldr r1, [r0] + subs r1, r1, #1 + str r1, [r0] + bne _022FBFE8 + bl GhiCleanupConnections + ldr r0, _022FBFF4 ; =ov00_023289AC + ldr r0, [r0] + cmp r0, #0 + beq _022FBFDC + bl gsifree + ldr r0, _022FBFF4 ; =ov00_023289AC + mov r1, #0 + str r1, [r0] +_022FBFDC: + bl GhiUnlock + bl GhiFreeLock + ldmia sp!, {r3, pc} +_022FBFE8: + bl GhiUnlock + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBFF0: .word ov00_023289C0 +_022FBFF4: .word ov00_023289AC + arm_func_end GhttpCleanup + + arm_func_start GHttpGetExA +GHttpGetExA: ; 0x022FBFF8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r8, r0 + ldrnesb r0, [r8] + mov r7, r1 + mov r6, r2 + cmpne r0, #0 + mov r5, r3 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r5, #0 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + cmp r6, #0 + beq _022FC03C + cmp r5, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022FC03C: + ldr r0, _022FC1C0 ; =ov00_023289C0 + ldr r0, [r0] + cmp r0, #0 + bne _022FC050 + bl GhttpStartup +_022FC050: + bl GhiNewConnection + movs r4, r0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, #0 + mov r0, r8 + str r1, [r4, #0xc] + bl goastrdup + str r0, [r4, #0x14] + cmp r0, #0 + bne _022FC08C + mov r0, r4 + bl GhiFreeConnection + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FC08C: + cmp r7, #0 + ldrnesb r0, [r7] + cmpne r0, #0 + beq _022FC0C0 + mov r0, r7 + bl goastrdup + str r0, [r4, #0x2c] + cmp r0, #0 + bne _022FC0C0 + mov r0, r4 + bl GhiFreeConnection + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FC0C0: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x20] + str r1, [r4, #0x160] + str r0, [r4, #0x34] + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [r4, #0x40] + str r0, [r4, #0x44] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c] + str r1, [r4, #0x48] + str r0, [r4, #0x158] + cmp r6, #0 + movne r0, #1 + moveq r0, #0 + str r0, [r4, #0x108] + cmp r0, #0 + beq _022FC120 + mov r0, r4 + mov r2, r6 + mov r3, r5 + add r1, r4, #0xe4 + bl GhiInitFixedBuffer + b _022FC134 +_022FC120: + mov r2, #0x800 + mov r0, r4 + mov r3, r2 + add r1, r4, #0xe4 + bl GhiInitBuffer +_022FC134: + cmp r0, #0 + bne _022FC14C + mov r0, r4 + bl GhiFreeConnection + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FC14C: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _022FC178 + mov r0, r4 + bl GhiPostInitState + cmp r0, #0 + bne _022FC178 + mov r0, r4 + bl GhiFreeConnection + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FC178: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _022FC1B8 + mov r0, r4 + bl GhiProcessConnection + cmp r0, #0 + bne _022FC1B0 + mov r5, #0xa +_022FC198: + mov r0, r5 + bl msleep_gsi + mov r0, r4 + bl GhiProcessConnection + cmp r0, #0 + beq _022FC198 +_022FC1B0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FC1B8: + ldr r0, [r4, #4] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FC1C0: .word ov00_023289C0 + arm_func_end GHttpGetExA + + arm_func_start GhttpThink +GhttpThink: ; 0x022FC1C4 + ldr ip, _022FC1D0 ; =GhiEnumConnections + ldr r0, _022FC1D4 ; =GhiProcessConnection + bx ip + .align 2, 0 +_022FC1D0: .word GhiEnumConnections +_022FC1D4: .word GhiProcessConnection + arm_func_end GhttpThink + + arm_func_start GHttpCancelRequest +GHttpCancelRequest: ; 0x022FC1D8 + stmdb sp!, {r3, lr} + bl GhiRequestToConnection + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GhiFreeConnection + ldmia sp!, {r3, pc} + arm_func_end GHttpCancelRequest + + arm_func_start GhiIsPostAutoFree +GhiIsPostAutoFree: ; 0x022FC1F0 + ldr r0, [r0, #0x18] + bx lr + arm_func_end GhiIsPostAutoFree + + arm_func_start GhiFreePost +GhiFreePost: ; 0x022FC1F8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + bl ArrayFree_Gsi + mov r0, r4 + bl gsifree + ldmia sp!, {r4, pc} + arm_func_end GhiFreePost + + arm_func_start GhiPostGetContentType +GhiPostGetContentType: ; 0x022FC214 + ldr r1, [r0, #0x160] + cmp r1, #0 + ldreq r0, _022FC258 ; =ov00_0231A8DC + bxeq lr + ldr r0, [r1, #0x14] + cmp r0, #0 + ldrne r0, _022FC25C ; =ov00_0231A8E0 + bxne lr + ldr r0, [r1, #0xc] + cmp r0, #0 + ldrne r0, _022FC260 ; =ov00_0231A8F4 + bxne lr + ldr r0, [r1, #0x10] + cmp r0, #0 + ldrne r0, _022FC264 ; =ov00_0231A938 + ldreq r0, _022FC268 ; =ov00_0231A944 + bx lr + .align 2, 0 +_022FC258: .word ov00_0231A8DC +_022FC25C: .word ov00_0231A8E0 +_022FC260: .word ov00_0231A8F4 +_022FC264: .word ov00_0231A938 +_022FC268: .word ov00_0231A944 + arm_func_end GhiPostGetContentType + + arm_func_start GhiPostGetNoFilesContentLength +GhiPostGetNoFilesContentLength: ; 0x022FC26C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r5, [r0, #0x160] + mov r8, #0 + ldr r0, [r5] + bl ArrayLength_Gsi + movs r7, r0 + moveq r0, r8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r7, #0 + mov r6, r8 + ble _022FC2F8 +_022FC298: + ldr r0, [r5] + mov r1, r6 + bl ArrayNth_Gsi + mov r4, r0 + ldr r0, [r4] + cmp r0, #0 + bne _022FC2D8 + ldr r0, [r4, #4] + bl strlen + ldr r1, [r4, #0xc] + add r2, r8, r0 + ldr r0, [r4, #0x14] + add r1, r2, r1 + add r0, r1, r0, lsl #1 + add r8, r0, #1 + b _022FC2EC +_022FC2D8: + cmp r0, #3 + bne _022FC2EC + ldr r0, [r4, #8] + bl GsXmlWriterGetDataLength + add r8, r8, r0 +_022FC2EC: + add r6, r6, #1 + cmp r6, r7 + blt _022FC298 +_022FC2F8: + sub r0, r7, #1 + add r0, r8, r0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end GhiPostGetNoFilesContentLength + + arm_func_start GhiPostGetHasFilesContentLength +GhiPostGetHasFilesContentLength: ; 0x022FC304 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _022FC60C ; =ov00_023289C4 + str r0, [sp] + ldr r2, [r1, #0x10] + ldr r5, [r0, #0x160] + cmp r2, #0 + mov r8, #0 + bne _022FC37C + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _022FC34C + mov r0, #0xc + str r0, [r1, #0x10] + str r0, [r1, #0xc] + str r0, [r1, #8] + stmia r1, {r0, r8} + b _022FC37C +_022FC34C: + ldr r0, _022FC610 ; =ov00_0231A968 + bl strlen + ldr r1, _022FC60C ; =ov00_023289C4 + add r2, r0, #0x2f + str r0, [r1, #0x10] + str r2, [r1, #0xc] + add r2, r0, #0x4c + str r2, [r1, #8] + mov r2, r8 + str r2, [r1] + add r0, r0, #4 + str r0, [r1, #4] +_022FC37C: + ldr r0, [r5] + bl ArrayLength_Gsi + str r0, [sp, #8] + cmp r0, #0 + mov r7, #0 + ble _022FC5F8 + ldr r4, _022FC60C ; =ov00_023289C4 +_022FC398: + ldr r0, [r5] + mov r1, r7 + bl ArrayNth_Gsi + mov r6, r0 + ldr r0, [r6] + cmp r0, #0 + bne _022FC3D4 + ldr r1, [r4, #0xc] + ldr r0, [r6, #4] + add r8, r8, r1 + bl strlen + ldr r1, [r6, #0xc] + add r0, r8, r0 + add r8, r0, r1 + b _022FC5E8 +_022FC3D4: + cmp r0, #1 + bne _022FC490 + ldr r1, [r4, #8] + ldr r0, [r6, #4] + add r8, r8, r1 + bl strlen + add r8, r8, r0 + ldr r0, [r6, #0x10] + bl strlen + add r8, r8, r0 + ldr r0, [sp] + mov r1, r7 + ldr r0, [r0, #0x164] + bl ArrayNth_Gsi + ldr sb, [r0, #0xc] + ldr sl, [r5, #0x14] + add r8, r8, sb + cmp sl, #0 + bne _022FC42C + ldr r0, [r6, #0xc] + bl strlen + add r8, r8, r0 +_022FC42C: + cmp sl, #0 + beq _022FC5E8 + ldr r0, [r6, #4] + bl strlen + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + ldr r0, [r6, #0x10] + bl strlen + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + mov r1, sb, lsr #0x1f + addne r8, r8, r0 + rsb r0, r1, sb, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + b _022FC5E8 +_022FC490: + cmp r0, #2 + bne _022FC544 + ldr r0, [r6, #4] + ldr r1, [r4, #8] + str r0, [sp, #4] + add r8, r8, r1 + bl strlen + ldr sl, [r6, #0x14] + add r8, r8, r0 + mov r0, sl + bl strlen + ldr sb, [r5, #0x14] + ldr fp, [r6, #0xc] + add r0, r8, r0 + add r8, r0, fp + cmp sb, #0 + bne _022FC4E0 + ldr r0, [r6, #0x10] + bl strlen + add r8, r8, r0 +_022FC4E0: + cmp sb, #0 + beq _022FC5E8 + ldr r0, [sp, #4] + bl strlen + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + mov r0, sl + bl strlen + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + mov r1, fp, lsr #0x1f + addne r8, r8, r0 + rsb r0, r1, fp, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + b _022FC5E8 +_022FC544: + cmp r0, #3 + bne _022FC5DC + ldr r1, [r4] + ldr r0, [r6, #8] + add r8, r8, r1 + bl GsXmlWriterGetDataLength + add r8, r8, r0 + ldr r0, [r6, #8] + bl GsXmlWriterGetDataLength + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + ldr r0, _022FC614 ; =ov00_0231A990 + bl strlen + add r8, r8, r0 + ldr r0, _022FC614 ; =ov00_0231A990 + bl strlen + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + ldr r0, _022FC618 ; =ov00_0231A998 + bl strlen + add r8, r8, r0 + ldr r0, _022FC618 ; =ov00_0231A998 + bl strlen + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r0, r0, #4 + cmp r0, #4 + addne r8, r8, r0 + b _022FC5E8 +_022FC5DC: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FC5E8: + ldr r0, [sp, #8] + add r7, r7, #1 + cmp r7, r0 + blt _022FC398 +_022FC5F8: + ldr r0, _022FC60C ; =ov00_023289C4 + ldr r0, [r0, #4] + add r0, r8, r0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC60C: .word ov00_023289C4 +_022FC610: .word ov00_0231A968 +_022FC614: .word ov00_0231A990 +_022FC618: .word ov00_0231A998 + arm_func_end GhiPostGetHasFilesContentLength + + arm_func_start GhiPostGetContentLength +GhiPostGetContentLength: ; 0x022FC61C + stmdb sp!, {r3, lr} + ldr r1, [r0, #0x160] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, [r1, #0xc] + cmp r1, #0 + beq _022FC644 + bl GhiPostGetHasFilesContentLength + ldmia sp!, {r3, pc} +_022FC644: + bl GhiPostGetNoFilesContentLength + ldmia sp!, {r3, pc} + arm_func_end GhiPostGetContentLength + + arm_func_start GhiPostStateInit +GhiPostStateInit: ; 0x022FC64C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4] + mvn r0, #0 + ldr r1, [r1] + str r0, [r4, #4] + cmp r1, #0 + beq _022FC6D4 + cmp r1, #1 + bne _022FC6C4 + ldr r0, [r4, #8] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r2, #2 + bl fseek + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #8] + bl ftell + mvn r1, #0 + str r0, [r4, #0xc] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #8] + bl rewind + b _022FC6D4 +_022FC6C4: + cmp r1, #2 + cmpne r1, #3 + movne r0, #0 + ldmneia sp!, {r4, pc} +_022FC6D4: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end GhiPostStateInit + + arm_func_start GhiPostStateCleanup +GhiPostStateCleanup: ; 0x022FC6DC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + cmp r0, #1 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #8] + cmp r0, #0 + beq _022FC70C + bl fclose +_022FC70C: + mov r0, #0 + str r0, [r4, #8] + ldmia sp!, {r4, pc} + arm_func_end GhiPostStateCleanup + + arm_func_start GhiPostInitState +GhiPostInitState: ; 0x022FC718 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, [r4, #0x160] + cmp r0, #0 + addeq sp, sp, #0x10 + mov r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + str r0, [r4, #0x168] + str r0, [r4, #0x16c] + str r0, [r4, #0x170] + str r0, [r4, #0x180] + ldr r0, [r4, #0x160] + ldr r0, [r0, #4] + str r0, [r4, #0x174] + ldr r0, [r4, #0x160] + ldr r0, [r0, #8] + str r0, [r4, #0x178] + ldr r0, [r4, #0x160] + ldr r0, [r0] + bl ArrayLength_Gsi + mov r8, r0 + mov r1, r8 + mov r0, #0x10 + mov r2, #0 + bl ArrayNew_Gsi + cmp r0, #0 + str r0, [r4, #0x164] + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r8, #0 + mov r7, #0 + ble _022FC82C + add r6, sp, #0 + mov r5, r7 +_022FC7A8: + ldr r0, [r4, #0x160] + mov r1, r7 + ldr r0, [r0] + bl ArrayNth_Gsi + str r5, [r6] + str r0, [sp] + mov r0, r6 + str r5, [r6, #4] + str r5, [r6, #8] + str r5, [r6, #0xc] + bl GhiPostStateInit + cmp r0, #0 + bne _022FC814 + subs r7, r7, #1 + bmi _022FC7FC +_022FC7E4: + ldr r0, [r4, #0x164] + mov r1, r7 + bl ArrayNth_Gsi + bl GhiPostStateCleanup + subs r7, r7, #1 + bpl _022FC7E4 +_022FC7FC: + ldr r0, [r4, #0x164] + bl ArrayFree_Gsi + mov r0, #0 + add sp, sp, #0x10 + str r0, [r4, #0x164] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FC814: + ldr r0, [r4, #0x164] + mov r1, r6 + bl ArrayAppend_Gsi + add r7, r7, #1 + cmp r7, r8 + blt _022FC7A8 +_022FC82C: + mov r0, r4 + bl GhiPostGetContentLength + str r0, [r4, #0x170] + ldr r0, [r4, #0x160] + ldr r0, [r0, #0x10] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + str r0, [r4, #0x17c] + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end GhiPostInitState + + arm_func_start GhiPostCleanupState +GhiPostCleanupState: ; 0x022FC85C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0x164] + cmp r0, #0 + beq _022FC8B0 + bl ArrayLength_Gsi + mov r5, r0 + cmp r5, #0 + mov r4, #0 + ble _022FC8A0 +_022FC884: + ldr r0, [r6, #0x164] + mov r1, r4 + bl ArrayNth_Gsi + bl GhiPostStateCleanup + add r4, r4, #1 + cmp r4, r5 + blt _022FC884 +_022FC8A0: + ldr r0, [r6, #0x164] + bl ArrayFree_Gsi + mov r0, #0 + str r0, [r6, #0x164] +_022FC8B0: + ldr r0, [r6, #0x160] + cmp r0, #0 + ldrne r1, [r0, #0x18] + cmpne r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl GhiFreePost + mov r0, #0 + str r0, [r6, #0x160] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GhiPostCleanupState + + arm_func_start GhiPostStringStateDoPosting +GhiPostStringStateDoPosting: ; 0x022FC8D4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r3, [r0] + mov sl, r1 + ldr r2, [r3, #0xc] + cmp r2, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0x160] + ldr r0, [r1, #0xc] + cmp r0, #0 + ldreq r0, [r1, #0x10] + cmpeq r0, #0 + bne _022FC9F0 + ldr r0, [r3, #0x10] + cmp r0, #0 + beq _022FC9F0 + ldr r0, _022FCA54 ; =ov00_023184A0 + ldr r8, [r3, #8] + ldrb r2, [r0] + ldrb r1, [r0, #1] + mov r6, #0 + strb r2, [sp] + strb r1, [sp, #1] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + strb r1, [sp, #2] + strb r0, [sp, #3] + ldr r0, [sl, #0x194] + ldrsb r7, [r8] + cmp r0, #0 + addeq sb, sl, #0x54 + addne sb, sl, #0x78 + cmp r7, #0 + beq _022FCA0C + ldr r4, _022FCA58 ; =ov00_0231A9C4 + ldr r5, _022FCA5C ; =ov00_0231A898 + mov fp, #0x2b +_022FC968: + mov r0, r5 + mov r1, r7 + bl strchr + cmp r0, #0 + beq _022FC98C + mov r0, sb + mov r1, r7 + bl GhiAppendCharToBuffer + b _022FC9DC +_022FC98C: + cmp r7, #0x20 + bne _022FC9A4 + mov r0, sb + mov r1, fp + bl GhiAppendCharToBuffer + b _022FC9DC +_022FC9A4: + mov r0, r7, asr #3 + mov r2, r7, lsr #0x1f + add r0, r7, r0, lsr #28 + rsb r1, r2, r7, lsl #28 + mov r3, r0, asr #4 + add r0, r2, r1, ror #28 + ldrsb r7, [r4, r3] + ldrsb r3, [r4, r0] + mov r0, sb + add r1, sp, #0 + mov r2, #3 + strb r7, [sp, #1] + strb r3, [sp, #2] + bl GhiAppendDataToBuffer +_022FC9DC: + add r6, r6, #1 + ldrsb r7, [r8, r6] + cmp r7, #0 + bne _022FC968 + b _022FCA0C +_022FC9F0: + ldr r1, [r3, #8] + mov r0, sl + bl GhiTrySendThenBuffer + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FCA0C: + ldr r0, [sl, #0x194] + cmp r0, #0 + bne _022FCA4C + mov r0, sl + bl GhiSendBufferedData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0x64] + ldr r0, [sl, #0x60] + cmp r1, r0 + bne _022FCA44 + add r0, sl, #0x54 + bl GhiResetBuffer +_022FCA44: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FCA4C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FCA54: .word ov00_023184A0 +_022FCA58: .word ov00_0231A9C4 +_022FCA5C: .word ov00_0231A898 + arm_func_end GhiPostStringStateDoPosting + + arm_func_start GhiPostXmlStateDoPosting +GhiPostXmlStateDoPosting: ; 0x022FCA60 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, [r0] + add r0, sp, #0 + ldr r4, [r2, #8] + mov r5, #0 + mov r6, r1 + strb r5, [r0] + strb r5, [r0, #1] + strb r5, [r0, #2] + ldr r0, [r6, #0x160] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022FCAB4 + mov r0, r4 + bl GsXmlWriterGetDataLength + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + rsb r5, r0, #4 + cmp r5, #4 + moveq r5, #0 +_022FCAB4: + ldr r0, [r6, #0x194] + cmp r0, #0 + mov r0, r4 + bne _022FCB10 + bl GsXmlWriterGetData + mov r7, r0 + mov r0, r4 + bl GsXmlWriterGetDataLength + mov r2, r0 + mov r0, r6 + mov r1, r7 + bl GhiTrySendThenBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r1, sp, #0 + mov r0, r6 + mov r2, r5 + bl GhiTrySendThenBuffer + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FCB10: + bl GsXmlWriterGetData + mov r7, r0 + mov r0, r4 + bl GsXmlWriterGetDataLength + mov r2, r0 + mov r1, r7 + add r0, r6, #0x78 + bl GhiAppendDataToBuffer + cmp r0, #0 + beq _022FCB68 + add r1, sp, #0 + mov r2, r5 + add r0, r6, #0x78 + bl GhiAppendDataToBuffer + cmp r0, #0 + beq _022FCB68 + ldr r1, [r6, #0x7c] + ldr r2, [r6, #0x84] + add r0, r6, #0x54 + bl GhiEncryptDataToBuffer + cmp r0, #0 + bne _022FCB70 +_022FCB68: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FCB70: + add r0, r6, #0x78 + bl GhiResetBuffer + mov r0, r6 + bl GhiSendBufferedData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r6, #0x64] + ldr r0, [r6, #0x60] + cmp r1, r0 + bne _022FCBA4 + add r0, r6, #0x54 + bl GhiResetBuffer +_022FCBA4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GhiPostXmlStateDoPosting + + arm_func_start GhiPostFileDiskStateDoPosting +GhiPostFileDiskStateDoPosting: ; 0x022FCBAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + sub sp, sp, #0x1000 + mov r8, r0 + mov r7, r1 + add r6, sp, #3 + mov r5, #1 + mov r4, #0x1000 +_022FCBCC: + ldr r3, [r8, #8] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl fread + mov r2, r0 + cmp r2, #0 + bgt _022FCC0C + mov r0, #1 + add sp, sp, #4 + str r0, [r7, #0x120] + mov r0, #0xe + str r0, [r7, #0x3c] + add sp, sp, #0x1000 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_022FCC0C: + ldr r0, [r8, #4] + add r1, r0, r2 + str r1, [r8, #4] + ldr r0, [r8, #0xc] + cmp r1, r0 + ble _022FCC44 + mov r0, #1 + add sp, sp, #4 + str r0, [r7, #0x120] + mov r0, #0xe + str r0, [r7, #0x3c] + add sp, sp, #0x1000 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_022FCC44: + mov r0, r7 + mov r1, r6 + bl GhiTrySendThenBuffer + cmp r0, #0 + addeq sp, sp, #4 + addeq sp, sp, #0x1000 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r2, [r8, #4] + ldr r1, [r8, #0xc] + cmp r2, r1 + bne _022FCCE8 + ldr r0, [r7, #0x160] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022FCCD8 + add r1, sp, #0 + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r1, #2] + ldr r0, [r8, #0xc] + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #30 + add r0, r2, r0, ror #30 + rsb r2, r0, #4 + cmp r2, #4 + beq _022FCCD8 + cmp r2, #0 + ble _022FCCD8 + mov r0, r7 + bl GhiTrySendThenBuffer + cmp r0, #0 + addeq sp, sp, #4 + addeq sp, sp, #0x1000 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} +_022FCCD8: + add sp, sp, #4 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_022FCCE8: + cmp r0, #1 + beq _022FCBCC + mov r0, #2 + add sp, sp, #4 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end GhiPostFileDiskStateDoPosting + + arm_func_start GhiPostFileMemoryStateDoPosting +GhiPostFileMemoryStateDoPosting: ; 0x022FCD00 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r5, r0 + ldr r2, [r5] + mov r4, r1 + ldr r7, [r2, #0xc] + cmp r7, #0 + addeq sp, sp, #8 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0x194] + cmp r0, #0 + bne _022FCE00 + mvn r6, #0 +_022FCD38: + ldr r3, [r5, #4] + ldr r1, [r2, #8] + mov r0, r4 + add r1, r1, r3 + sub r2, r7, r3 + bl GhiDoSend + cmp r0, r6 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r5, #4] + add r1, r1, r0 + str r1, [r5, #4] + ldr r2, [r5] + ldr r7, [r2, #0xc] + cmp r7, r1 + bne _022FCDEC + ldr r0, [r4, #0x160] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022FCDE0 + add r1, sp, #3 + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r1, #2] + ldr r0, [r5] + ldr r0, [r0, #0xc] + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #30 + add r0, r2, r0, ror #30 + rsb r2, r0, #4 + cmp r2, #4 + beq _022FCDE0 + cmp r2, #0 + ble _022FCDE0 + mov r0, r4 + bl GhiTrySendThenBuffer + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022FCDE0: + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FCDEC: + cmp r0, #0 + bne _022FCD38 + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FCE00: + ldr r6, _022FCED8 ; =0x00003F01 +_022FCE04: + ldr r3, [r5, #4] + ldr r1, [r2, #8] + sub r7, r7, r3 + cmp r7, r6 + movge r7, r6 + mov r0, r4 + mov r2, r7 + add r1, r1, r3 + bl GhiTrySendThenBuffer + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r5, #4] + add r1, r1, r7 + str r1, [r5, #4] + ldr r2, [r5] + ldr r7, [r2, #0xc] + cmp r7, r1 + bne _022FCEC4 + ldr r0, [r4, #0x160] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _022FCEB8 + add r1, sp, #0 + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r1, #2] + ldr r0, [r5] + ldr r0, [r0, #0xc] + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #30 + add r0, r2, r0, ror #30 + rsb r2, r0, #4 + cmp r2, #4 + beq _022FCEB8 + cmp r2, #0 + ble _022FCEB8 + mov r0, r4 + bl GhiTrySendThenBuffer + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022FCEB8: + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FCEC4: + cmp r0, #1 + beq _022FCE04 + mov r0, #2 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FCED8: .word 0x00003F01 + arm_func_end GhiPostFileMemoryStateDoPosting + + arm_func_start GhiPostStateDoPosting +GhiPostStateDoPosting: ; 0x022FCEDC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x820 + mov r8, r0 + mov r6, #0 + ldr r4, [r8, #4] + sub r0, r6, #1 + mov r7, r1 + cmp r4, r0 + bne _022FD518 + str r6, [r8, #4] + ldr sb, [r7, #0x160] + ldr r0, [sb, #0xc] + cmp r0, #0 + ldreq r0, [sb, #0x10] + cmpeq r0, #0 + bne _022FCF48 + ldr r1, [r8] + cmp r2, #0 + add r0, sp, #0x20 + ldr r2, [r1, #4] + beq _022FCF3C + ldr r1, _022FD580 ; =ov00_0231A9D8 + bl OS_VsPrintf + b _022FD450 +_022FCF3C: + ldr r1, _022FD584 ; =ov00_0231A9DC + bl OS_VsPrintf + b _022FD450 +_022FCF48: + ldr sl, [r8] + ldr r1, [sl] + cmp r1, #0 + bne _022FCF78 + cmp r2, #0 + ldrne r2, _022FD588 ; =ov00_0231A9E4 + ldr r3, [sl, #4] + ldreq r2, _022FD58C ; =ov00_0231AA0C + ldr r1, _022FD590 ; =ov00_0231AA38 + add r0, sp, #0x20 + bl OS_VsPrintf + b _022FD450 +_022FCF78: + cmp r1, #3 + bne _022FD1FC + ldr r0, [sb, #0x14] + cmp r0, #0 + beq _022FD1F0 + mov r0, #8 + cmp r2, #0 + strb r0, [sp, #0x14] + andne r0, r0, #0xff + orrne r0, r0, #4 + strneb r0, [sp, #0x14] + cmp r3, #0 + ldrneb r0, [sp, #0x14] + mov r2, #0x20 + mov r1, #0 + orrne r0, r0, #2 + strneb r0, [sp, #0x14] + ldr r0, _022FD594 ; =ov00_0231A990 + mov r6, #0 + strb r2, [sp, #0x15] + strh r1, [sp, #0x16] + bl strlen + mov r4, r0 + ldr r0, _022FD594 ; =ov00_0231A990 + bl strlen + mov r1, r0, lsl #0x10 + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsl #0x10 + mov r1, r2, asr #8 + mov r0, r0, lsr #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r1, r1, r0 + ldr r0, _022FD598 ; =ov00_0231A998 + strh r1, [sp, #0x18] + bl strlen + mov r4, r0 + ldr r0, _022FD598 ; =ov00_0231A998 + bl strlen + mov r1, r4, lsl #0x10 + mov r2, r1, asr #0x10 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsl #0x10 + mov r1, r2, asr #8 + mov r0, r0, lsr #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0x1a] + ldr r0, [r8] + ldr r0, [r0, #8] + bl GsXmlWriterGetDataLength + ldr r1, [r8] + mov sb, r0 + ldr r0, [r1, #8] + bl GsXmlWriterGetDataLength + ldr r1, [r8] + mov r5, r0 + ldr r0, [r1, #8] + bl GsXmlWriterGetDataLength + ldr r1, [r8] + mov r4, r0 + ldr r0, [r1, #8] + bl GsXmlWriterGetDataLength + mov r2, r5, lsl #8 + and r3, r2, #0xff0000 + mov r2, r4, lsr #0x18 + mov r0, r0, lsr #8 + mov r1, sb, lsl #0x18 + and r2, r2, #0xff + and r0, r0, #0xff00 + orr r0, r2, r0 + orr r0, r3, r0 + and r1, r1, #0xff000000 + orr r0, r1, r0 + add r4, sp, #0x20 + add r3, sp, #0x14 + str r0, [sp, #0x1c] + mov r2, #6 +_022FD0D0: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + strb r1, [r4] + strb r0, [r4, #1] + add r4, r4, #2 + subs r2, r2, #1 + bne _022FD0D0 + add r0, sp, #0x20 + add r6, r6, #0xc + ldr r3, _022FD594 ; =ov00_0231A990 + add r4, r0, r6 + mov r2, #4 +_022FD104: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + strb r1, [r4] + strb r0, [r4, #1] + add r4, r4, #2 + subs r2, r2, #1 + bne _022FD104 + ldr r0, _022FD594 ; =ov00_0231A990 + bl strlen + add r6, r6, r0 + ldr r0, _022FD594 ; =ov00_0231A990 + bl strlen + and r0, r0, #3 + rsb r0, r0, #4 + cmp r0, #4 + beq _022FD170 + cmp r0, #0 + sub r2, r0, #1 + ble _022FD170 + mov r1, #0 + add r0, sp, #0x20 +_022FD15C: + strb r1, [r0, r6] + cmp r2, #0 + add r6, r6, #1 + sub r2, r2, #1 + bgt _022FD15C +_022FD170: + add r0, sp, #0x20 + ldr r3, _022FD598 ; =ov00_0231A998 + add r4, r0, r6 + mov r2, #0x15 +_022FD180: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + strb r1, [r4] + strb r0, [r4, #1] + add r4, r4, #2 + subs r2, r2, #1 + bne _022FD180 + ldr r0, _022FD598 ; =ov00_0231A998 + bl strlen + add r6, r6, r0 + ldr r0, _022FD598 ; =ov00_0231A998 + bl strlen + and r0, r0, #3 + rsb r0, r0, #4 + cmp r0, #4 + beq _022FD450 + cmp r0, #0 + sub r2, r0, #1 + ble _022FD450 + mov r1, #0 + add r0, sp, #0x20 +_022FD1D8: + strb r1, [r0, r6] + cmp r2, #0 + add r6, r6, #1 + sub r2, r2, #1 + bgt _022FD1D8 + b _022FD450 +_022FD1F0: + mov r0, #0 + strb r0, [sp, #0x20] + b _022FD450 +_022FD1FC: + sub r0, r1, #1 + cmp r0, #1 + bhi _022FD450 + cmp r1, #1 + ldrne r5, [sl, #0xc] + ldrne r1, [sl, #0x10] + ldrne r4, [sl, #0x14] + bne _022FD228 + ldr r5, [r8, #0xc] + ldr r1, [sl, #0xc] + ldr r4, [sl, #0x10] +_022FD228: + ldr r0, [sb, #0x14] + cmp r0, #0 + beq _022FD430 + mov r0, #8 + strb r0, [sp, #8] + cmp r2, #0 + andne r0, r0, #0xff + orrne r0, r0, #4 + strneb r0, [sp, #8] + cmp r3, #0 + ldrneb r0, [sp, #8] + mov r1, #0x10 + strb r1, [sp, #9] + orrne r0, r0, #2 + strneb r0, [sp, #8] + mov r0, #0 + strh r0, [sp, #0xa] + ldr r0, [r8] + mov r6, #0 + ldr sl, [r0, #4] + mov r0, sl + bl strlen + mov sb, r0 + mov r0, sl + bl strlen + mov r1, r0, lsl #0x10 + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsl #0x10 + mov r1, r2, asr #8 + mov r0, r0, lsr #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r1, r1, r0 + mov r0, r4 + strh r1, [sp, #0xc] + bl strlen + mov sb, r0 + mov r0, r4 + bl strlen + mov r1, sb, lsl #0x10 + mov r2, r1, asr #0x10 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r1, r1, asr #0x10 + mov ip, r5, lsr #0x18 + mov r3, r2, asr #8 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #8 + mov r1, r5, lsl #0x18 + mov sb, r5, lsr #8 + mov r0, r5, lsl #8 + and r5, sb, #0xff00 + and ip, ip, #0xff + and sb, r0, #0xff0000 + orr r0, ip, r5 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [sp, #0xe] + and r1, r1, #0xff000000 + orr r0, sb, r0 + orr r0, r1, r0 + add r5, sp, #0x20 + add r3, sp, #8 + str r0, [sp, #0x10] + mov r2, #6 +_022FD344: + ldrb r1, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + strb r1, [r5] + strb r0, [r5, #1] + add r5, r5, #2 + subs r2, r2, #1 + bne _022FD344 + ldr r0, [r8] + add r2, sp, #0x20 + add r6, r6, #0xc + ldr r1, [r0, #4] + add r0, r2, r6 + bl strcpy + ldr r0, [r8] + ldr r5, [r0, #4] + mov r0, r5 + bl strlen + add r6, r6, r0 + mov r0, r5 + bl strlen + and r0, r0, #3 + rsb r0, r0, #4 + cmp r0, #4 + beq _022FD3D0 + cmp r0, #0 + sub r2, r0, #1 + ble _022FD3D0 + mov r1, #0 + add r0, sp, #0x20 +_022FD3BC: + strb r1, [r0, r6] + cmp r2, #0 + add r6, r6, #1 + sub r2, r2, #1 + bgt _022FD3BC +_022FD3D0: + add r0, sp, #0x20 + mov r1, r4 + add r0, r0, r6 + bl strcpy + mov r0, r4 + bl strlen + add r6, r6, r0 + mov r0, r4 + bl strlen + and r0, r0, #3 + rsb r0, r0, #4 + cmp r0, #4 + beq _022FD450 + cmp r0, #0 + sub r2, r0, #1 + ble _022FD450 + mov r1, #0 + add r0, sp, #0x20 +_022FD418: + strb r1, [r0, r6] + cmp r2, #0 + add r6, r6, #1 + sub r2, r2, #1 + bgt _022FD418 + b _022FD450 +_022FD430: + stmia sp, {r1, r4} + cmp r2, #0 + ldrne r2, _022FD588 ; =ov00_0231A9E4 + ldr r3, [sl, #4] + ldreq r2, _022FD58C ; =ov00_0231AA0C + ldr r1, _022FD59C ; =ov00_0231AA68 + add r0, sp, #0x20 + bl OS_VsPrintf +_022FD450: + ldr r0, [r7, #0x194] + cmp r0, #0 + bne _022FD4AC + cmp r6, #0 + bne _022FD470 + add r0, sp, #0x20 + bl strlen + mov r6, r0 +_022FD470: + add r1, sp, #0x20 + mov r0, r7 + mov r2, r6 + bl GhiTrySendThenBuffer + cmp r0, #0 + addeq sp, sp, #0x820 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r0, #2 + addeq sp, sp, #0x820 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r0, r7, #0x54 + bl GhiResetBuffer + b _022FD518 +_022FD4AC: + cmp r6, #0 + bne _022FD4C0 + add r0, sp, #0x20 + bl strlen + mov r6, r0 +_022FD4C0: + add r1, sp, #0x20 + mov r2, r6 + add r0, r7, #0x54 + bl GhiEncryptDataToBuffer + cmp r0, #0 + addeq sp, sp, #0x820 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r7 + bl GhiSendBufferedData + cmp r0, #0 + addeq sp, sp, #0x820 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [r7, #0x64] + ldr r0, [r7, #0x60] + cmp r1, r0 + addlt sp, sp, #0x820 + movlt r0, #2 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r0, r7, #0x54 + bl GhiResetBuffer +_022FD518: + ldr r0, [r8] + ldr r0, [r0] + cmp r0, #0 + bne _022FD53C + mov r0, r8 + mov r1, r7 + bl GhiPostStringStateDoPosting + add sp, sp, #0x820 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022FD53C: + cmp r0, #3 + bne _022FD558 + mov r0, r8 + mov r1, r7 + bl GhiPostXmlStateDoPosting + add sp, sp, #0x820 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022FD558: + cmp r0, #1 + mov r0, r8 + mov r1, r7 + bne _022FD574 + bl GhiPostFileDiskStateDoPosting + add sp, sp, #0x820 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022FD574: + bl GhiPostFileMemoryStateDoPosting + add sp, sp, #0x820 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FD580: .word ov00_0231A9D8 +_022FD584: .word ov00_0231A9DC +_022FD588: .word ov00_0231A9E4 +_022FD58C: .word ov00_0231AA0C +_022FD590: .word ov00_0231AA38 +_022FD594: .word ov00_0231A990 +_022FD598: .word ov00_0231A998 +_022FD59C: .word ov00_0231AA68 + arm_func_end GhiPostStateDoPosting + + arm_func_start GhiPostDoPosting +GhiPostDoPosting: ; 0x022FD5A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r0, [sl, #0x164] + bl ArrayLength_Gsi + ldr r2, [sl, #0x64] + ldr r1, [sl, #0x60] + mov r8, r0 + cmp r2, r1 + bge _022FD614 + mov r0, sl + bl GhiSendBufferedData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0x64] + ldr r0, [sl, #0x60] + cmp r1, r0 + movlt r0, #2 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sl, #0x54 + bl GhiResetBuffer + ldr r0, [sl, #0x17c] + cmp r0, #0 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sl, #0x168] + cmp r0, r8 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FD614: + ldr r0, [sl, #0x17c] + cmp r0, #0 + beq _022FD684 + ldr r1, [sl, #0x160] + ldr r0, [r1, #0xc] + cmp r0, #0 + ldreq r0, [r1, #0x10] + cmpeq r0, #0 + beq _022FD67C + ldr r0, _022FD79C ; =ov00_0231AABC + bl strlen + mov r2, r0 + ldr r1, _022FD79C ; =ov00_0231AABC + mov r0, sl + bl GhiTrySendThenBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #2 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sl, #0x17c] + cmp r0, #1 + bne _022FD684 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FD67C: + mov r0, #0 + str r0, [sl, #0x17c] +_022FD684: + ldr r1, [sl, #0x168] + cmp r1, r8 + bge _022FD70C + mov r5, #0 + mov r6, #1 + mov fp, r5 + mov r4, r6 +_022FD6A0: + ldr r0, [sl, #0x164] + bl ArrayNth_Gsi + mov r7, r0 + ldr r0, [sl, #0x164] + ldr sb, [sl, #0x168] + bl ArrayLength_Gsi + sub r0, r0, #1 + cmp sb, r0 + moveq r3, r6 + movne r3, r5 + cmp sb, #0 + moveq r2, r4 + movne r2, fp + mov r0, r7 + mov r1, sl + bl GhiPostStateDoPosting + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #2 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sl, #0x168] + add r1, r0, #1 + str r1, [sl, #0x168] + cmp r1, r8 + blt _022FD6A0 +_022FD70C: + ldr r0, [sl, #0x194] + cmp r0, #0 + beq _022FD744 + ldr r2, [sl, #0x84] + cmp r2, #0 + ble _022FD744 + ldr r1, [sl, #0x7c] + add r0, sl, #0x54 + bl GhiEncryptDataToBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sl, #0x78 + bl GhiResetBuffer +_022FD744: + ldr r1, [sl, #0x160] + ldr r0, [r1, #0xc] + cmp r0, #0 + beq _022FD784 + ldr r0, [r1, #0x14] + cmp r0, #0 + bne _022FD784 + ldr r0, _022FD7A0 ; =ov00_0231AAC0 + bl strlen + mov r2, r0 + ldr r1, _022FD7A0 ; =ov00_0231AAC0 + mov r0, sl + bl GhiTrySendThenBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FD784: + ldr r1, [sl, #0x64] + ldr r0, [sl, #0x60] + cmp r1, r0 + movlt r0, #2 + movge r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FD79C: .word ov00_0231AABC +_022FD7A0: .word ov00_0231AAC0 + arm_func_end GhiPostDoPosting + + arm_func_start GhiParseUrl +GhiParseUrl: ; 0x022FD7A4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r5, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, [r5, #0x14] + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, _022FD910 ; =ov00_0231AAEC + mov r0, r4 + mov r2, #7 + bl strncmp + cmp r0, #0 + bne _022FD7EC + mov r0, #0 + str r0, [r5, #0x28] + add r4, r4, #7 + b _022FD81C +_022FD7EC: + ldr r1, _022FD914 ; =ov00_0231AAF4 + mov r0, r4 + mov r2, #8 + bl strncmp + cmp r0, #0 + bne _022FD814 + mov r0, #1 + str r0, [r5, #0x28] + add r4, r4, #8 + b _022FD81C +_022FD814: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FD81C: + ldr r1, _022FD918 ; =ov00_0231AB00 + mov r0, r4 + bl strcspn + mov r6, r0 + ldrsb r7, [r4, r6] + mov r1, #0 + mov r0, r4 + strb r1, [r4, r6] + bl goastrdup + str r0, [r5, #0x18] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + strb r7, [r4, r6] + ldrsb r0, [r4, r6]! + cmp r0, #0x3a + bne _022FD898 + add r4, r4, #1 + mov r0, r4 + bl atoi + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x20] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022FD880: + ldrsb r0, [r4, #1]! + cmp r0, #0 + beq _022FD8B0 + cmp r0, #0x2f + bne _022FD880 + b _022FD8B0 +_022FD898: + ldr r0, [r5, #0x28] + cmp r0, #1 + ldreq r0, _022FD91C ; =0x000001BB + streqh r0, [r5, #0x20] + movne r0, #0x50 + strneh r0, [r5, #0x20] +_022FD8B0: + ldrsb r0, [r4] + cmp r0, #0 + ldreq r4, _022FD920 ; =ov00_0231AB04 + mov r0, r4 + bl goastrdup + mov r1, #0x20 + mov r7, r0 + str r0, [r5, #0x24] + bl strchr + cmp r0, #0 + beq _022FD900 + mov r6, #0x2b + mov r4, #0x20 +_022FD8E4: + strb r6, [r0] + ldr r7, [r5, #0x24] + mov r1, r4 + mov r0, r7 + bl strchr + cmp r0, #0 + bne _022FD8E4 +_022FD900: + cmp r7, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FD910: .word ov00_0231AAEC +_022FD914: .word ov00_0231AAF4 +_022FD918: .word ov00_0231AB00 +_022FD91C: .word 0x000001BB +_022FD920: .word ov00_0231AB04 + arm_func_end GhiParseUrl + + arm_func_start GhiDoSocketInit +GhiDoSocketInit: ; 0x022FD924 + stmdb sp!, {r4, lr} + mov r1, #0 + mov r4, r0 + mov r2, r1 + bl GhiCallProgressCallback + bl SocketStartUp_Ghi + mov r0, r4 + bl GhiParseUrl + cmp r0, #0 + bne _022FD960 + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #3 + str r0, [r4, #0x3c] + ldmia sp!, {r4, pc} +_022FD960: + ldr r1, [r4, #0x28] + cmp r1, #1 + ldreq r0, [r4, #0x194] + cmpeq r0, #0 + bne _022FD984 + ldr r0, [r4, #4] + mov r1, #1 + bl GhttpSetRequestEncryptionEngine + b _022FD9A0 +_022FD984: + cmp r1, #1 + ldrne r0, [r4, #0x194] + cmpne r0, #0 + beq _022FD9A0 + ldr r0, [r4, #4] + mov r1, #0 + bl GhttpSetRequestEncryptionEngine +_022FD9A0: + mov r1, #0 + mov r3, #1 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + ldmia sp!, {r4, pc} + arm_func_end GhiDoSocketInit + + arm_func_start GhiDoHostLookup +GhiDoHostLookup: ; 0x022FD9BC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r1, [r4, #0x1b0] + cmp r1, #0 + beq _022FD9E8 + mov r1, #0 + mov r3, #2 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + ldmia sp!, {r3, r4, r5, pc} +_022FD9E8: + ldr r5, [r4, #0x188] + cmp r5, #0 + bne _022FDA04 + ldr r0, _022FDA94 ; =ov00_023289AC + ldr r5, [r0] + cmp r5, #0 + ldreq r5, [r4, #0x18] +_022FDA04: + mov r0, r5 + bl inet_addr_gsi + mvn r1, #0 + str r0, [r4, #0x1c] + cmp r0, r1 + bne _022FDA50 + mov r0, r5 + add r1, r4, #0x1b0 + bl GsiStartResolvingHostname + mvn r1, #0 + cmp r0, r1 + bne _022FDA50 + mov r0, #0 + str r0, [r4, #0x1b0] + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #4 + str r0, [r4, #0x3c] + ldmia sp!, {r3, r4, r5, pc} +_022FDA50: + ldr r1, [r4, #0x1c] + mvn r0, #0 + cmp r1, r0 + mov r1, #0 + bne _022FDA7C + mov r3, #2 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + ldmia sp!, {r3, r4, r5, pc} +_022FDA7C: + mov r3, #3 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FDA94: .word ov00_023289AC + arm_func_end GhiDoHostLookup + + arm_func_start GhiDoLookupPending +GhiDoLookupPending: ; 0x022FDA98 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x1b0] + bl GsiGetResolvedIP + mvn r1, #0 + str r0, [r4, #0x1c] + cmp r0, r1 + bne _022FDAD4 + mov r0, #0 + str r0, [r4, #0x1b0] + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #4 + str r0, [r4, #0x3c] + ldmia sp!, {r4, pc} +_022FDAD4: + cmp r0, #0 + mov r1, #0 + bne _022FDAF8 + mov r3, #2 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + ldmia sp!, {r4, pc} +_022FDAF8: + mov r0, r4 + mov r2, r1 + str r1, [r4, #0x1b0] + mov r3, #3 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + ldmia sp!, {r4, pc} + arm_func_end GhiDoLookupPending + + arm_func_start GhiDoConnecting +GhiDoConnecting: ; 0x022FDB14 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r1, [r4, #0x4c] + mvn r0, #0 + cmp r1, r0 + bne _022FDCC0 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl SocketCreate + mvn r1, #0 + str r0, [r4, #0x4c] + cmp r0, r1 + bne _022FDB74 + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #5 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x4c] + bl GoaGetLastError + add sp, sp, #0x10 + str r0, [r4, #0x50] + ldmia sp!, {r4, pc} +_022FDB74: + mov r1, #0 + bl SocketSetBlocking + cmp r0, #0 + bne _022FDBA8 + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #5 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x4c] + bl GoaGetLastError + add sp, sp, #0x10 + str r0, [r4, #0x50] + ldmia sp!, {r4, pc} +_022FDBA8: + ldr r0, [r4, #0x158] + cmp r0, #0 + beq _022FDBC4 + ldr r1, _022FDD70 ; =ov00_0231A7F4 + ldr r0, [r4, #0x4c] + ldr r1, [r1] + bl SetReceiveBufferSize +_022FDBC4: + add r2, sp, #8 + mov r1, #0 + str r1, [r2] + mov r0, #2 + str r1, [r2, #4] + strb r0, [sp, #9] + ldr r0, [r4, #0x188] + cmp r0, #0 + beq _022FDC0C + add r0, r4, #0x100 + ldrh r0, [r0, #0x8c] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0xa] + b _022FDC5C +_022FDC0C: + ldr r0, _022FDD74 ; =ov00_023289AC + ldr r0, [r0] + cmp r0, #0 + beq _022FDC40 + ldr r0, _022FDD78 ; =ov00_023289A8 + ldrh r0, [r0] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0xa] + b _022FDC5C +_022FDC40: + ldrh r0, [r4, #0x20] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0xa] +_022FDC5C: + ldr r0, [r4, #0x1c] + add r1, sp, #8 + str r0, [sp, #0xc] + ldr r0, [r4, #0x4c] + mov r2, #8 + bl SocketConnect + mvn r1, #0 + cmp r0, r1 + bne _022FDCC0 + ldr r0, [r4, #0x4c] + bl GoaGetLastError + mvn r2, #5 + cmp r0, r2 + subne r1, r2, #0x14 + cmpne r0, r1 + subne r1, r2, #0x46 + cmpne r0, r1 + beq _022FDCC0 + mov r1, #1 + str r1, [r4, #0x120] + mov r1, #6 + str r1, [r4, #0x3c] + add sp, sp, #0x10 + str r0, [r4, #0x50] + ldmia sp!, {r4, pc} +_022FDCC0: + ldr r0, [r4, #0x4c] + add r2, sp, #4 + add r3, sp, #0 + mov r1, #0 + bl GsiSocketSelect + mvn r1, #0 + cmp r0, r1 + beq _022FDCF4 + cmp r0, #1 + bne _022FDD28 + ldr r1, [sp] + cmp r1, #0 + beq _022FDD28 +_022FDCF4: + mov r1, #1 + mov r2, #6 + str r1, [r4, #0x120] + sub r1, r2, #7 + cmp r0, r1 + str r2, [r4, #0x3c] + movne r0, #0 + bne _022FDD1C + ldr r0, [r4, #0x4c] + bl GoaGetLastError +_022FDD1C: + add sp, sp, #0x10 + str r0, [r4, #0x50] + ldmia sp!, {r4, pc} +_022FDD28: + cmp r0, #1 + addne sp, sp, #0x10 + ldmneia sp!, {r4, pc} + ldr r0, [sp, #4] + cmp r0, #0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x194] + mov r1, #0 + cmp r0, #0 + moveq r0, #5 + movne r0, #4 + str r0, [r4, #0x10] + mov r0, r4 + mov r2, r1 + bl GhiCallProgressCallback + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FDD70: .word ov00_0231A7F4 +_022FDD74: .word ov00_023289AC +_022FDD78: .word ov00_023289A8 + arm_func_end GhiDoConnecting + + arm_func_start GhiDoSecuringSession +GhiDoSecuringSession: ; 0x022FDD7C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + sub sp, sp, #0x400 + mov r4, r0 + ldr r1, [r4, #0x198] + cmp r1, #0 + bne _022FDDC8 + ldr r2, [r4, #0x1a0] + add r1, r4, #0x190 + blx r2 + cmp r0, #3 + bne _022FDDC8 + mov r0, #1 + add sp, sp, #8 + str r0, [r4, #0x120] + mov r0, #0x11 + add sp, sp, #0x400 + str r0, [r4, #0x3c] + ldmia sp!, {r4, pc} +_022FDDC8: + ldr r1, [r4, #0x64] + ldr r0, [r4, #0x60] + cmp r1, r0 + bge _022FDE10 + mov r0, r4 + bl GhiSendBufferedData + cmp r0, #0 + addeq sp, sp, #8 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0x64] + ldr r0, [r4, #0x60] + cmp r1, r0 + addlt sp, sp, #8 + addlt sp, sp, #0x400 + ldmltia sp!, {r4, pc} + add r0, r4, #0x54 + bl GhiResetBuffer +_022FDE10: + ldr r3, _022FDEE4 ; =0x00000401 + add r1, sp, #4 + add r2, sp, #0 + mov r0, r4 + str r3, [sp] + bl GhiDoReceive + sub r1, r0, #2 + cmp r1, #1 + bhi _022FDE50 + mov r0, #1 + add sp, sp, #8 + str r0, [r4, #0x120] + mov r0, #0x11 + add sp, sp, #0x400 + str r0, [r4, #0x3c] + ldmia sp!, {r4, pc} +_022FDE50: + cmp r0, #0 + addne sp, sp, #8 + addne sp, sp, #0x400 + ldmneia sp!, {r4, pc} + ldr r2, [sp] + add r1, sp, #4 + add r0, r4, #0xc0 + bl GhiAppendDataToBuffer + cmp r0, #0 + addeq sp, sp, #8 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl GhiDecryptReceivedData + cmp r0, #0 + bne _022FDEAC + mov r0, #1 + add sp, sp, #8 + str r0, [r4, #0x120] + mov r0, #0x11 + add sp, sp, #0x400 + str r0, [r4, #0x3c] + ldmia sp!, {r4, pc} +_022FDEAC: + ldr r0, [r4, #0x19c] + cmp r0, #0 + addeq sp, sp, #8 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r3, #5 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + add sp, sp, #8 + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FDEE4: .word 0x00000401 + arm_func_end GhiDoSecuringSession + + arm_func_start GhiDoSendingRequest +GhiDoSendingRequest: ; 0x022FDEE8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r0 + ldr r0, [r5, #0x60] + cmp r0, #0 + bne _022FE110 + ldr r0, [r5, #0x194] + cmp r0, #0 + addeq r4, r5, #0x54 + ldr r0, [r5, #0x160] + addne r4, r5, #0x78 + cmp r0, #0 + beq _022FDF2C + ldr r0, [r5, #0x180] + cmp r0, #0 + ldreq r1, _022FE180 ; =ov00_0231AB08 + beq _022FDF3C +_022FDF2C: + ldr r0, [r5, #0xc] + cmp r0, #3 + ldreq r1, _022FE184 ; =ov00_0231AB10 + ldrne r1, _022FE188 ; =ov00_0231AB18 +_022FDF3C: + mov r0, r4 + mov r2, #0 + bl GhiAppendDataToBuffer + ldr r0, [r5, #0x188] + mov r2, #0 + cmp r0, #0 + ldreq r0, _022FE18C ; =ov00_023289AC + ldreq r0, [r0] + cmpeq r0, #0 + beq _022FDF74 + ldr r1, [r5, #0x14] + mov r0, r4 + bl GhiAppendDataToBuffer + b _022FDF80 +_022FDF74: + ldr r1, [r5, #0x24] + mov r0, r4 + bl GhiAppendDataToBuffer +_022FDF80: + ldr r1, _022FE190 ; =ov00_0231AB20 + mov r0, r4 + mov r2, #0 + bl GhiAppendDataToBuffer + ldrh r0, [r5, #0x20] + cmp r0, #0x50 + bne _022FDFB0 + ldr r2, [r5, #0x18] + ldr r1, _022FE194 ; =ov00_0231AB2C + mov r0, r4 + bl GhiAppendHeaderToBuffer + b _022FDFF8 +_022FDFB0: + ldr r1, _022FE198 ; =ov00_0231AB34 + mov r0, r4 + mov r2, #0 + bl GhiAppendDataToBuffer + ldr r1, [r5, #0x18] + mov r0, r4 + mov r2, #0 + bl GhiAppendDataToBuffer + mov r0, r4 + mov r1, #0x3a + bl GhiAppendCharToBuffer + ldrh r1, [r5, #0x20] + mov r0, r4 + bl GhiAppendIntToBuffer + mov r0, r4 + ldr r1, _022FE19C ; =ov00_0231AB3C + mov r2, #2 + bl GhiAppendDataToBuffer +_022FDFF8: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _022FE014 + ldr r1, _022FE1A0 ; =ov00_0231AB40 + bl strstr + cmp r0, #0 + bne _022FE024 +_022FE014: + ldr r1, _022FE1A0 ; =ov00_0231AB40 + ldr r2, _022FE1A4 ; =ov00_0231AB4C + mov r0, r4 + bl GhiAppendHeaderToBuffer +_022FE024: + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _022FE044 + ldr r1, _022FE1A8 ; =ov00_0231AB5C + ldr r2, _022FE1AC ; =ov00_0231AB68 + mov r0, r4 + bl GhiAppendHeaderToBuffer + b _022FE054 +_022FE044: + ldr r1, _022FE1A8 ; =ov00_0231AB5C + ldr r2, _022FE1B0 ; =ov00_0231AB74 + mov r0, r4 + bl GhiAppendHeaderToBuffer +_022FE054: + ldr r0, [r5, #0x160] + cmp r0, #0 + beq _022FE0A4 + ldr r0, [r5, #0x180] + cmp r0, #0 + bne _022FE0A4 + ldr r2, [r5, #0x170] + ldr r1, _022FE1B4 ; =ov00_0231AB7C + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _022FE1B8 ; =ov00_0231AB80 + add r2, sp, #0 + mov r0, r4 + bl GhiAppendHeaderToBuffer + mov r0, r5 + bl GhiPostGetContentType + mov r2, r0 + ldr r1, _022FE1BC ; =ov00_0231AB90 + mov r0, r4 + bl GhiAppendHeaderToBuffer +_022FE0A4: + ldr r1, [r5, #0x2c] + cmp r1, #0 + beq _022FE0BC + mov r0, r4 + mov r2, #0 + bl GhiAppendDataToBuffer +_022FE0BC: + ldr r1, _022FE19C ; =ov00_0231AB3C + mov r0, r4 + mov r2, #2 + bl GhiAppendDataToBuffer + ldr r0, [r5, #0x194] + cmp r0, #0 + beq _022FE110 + ldr r1, [r4, #4] + ldr r2, [r4, #0xc] + add r0, r5, #0x54 + bl GhiEncryptDataToBuffer + cmp r0, #0 + bne _022FE108 + mov r0, #1 + str r0, [r5, #0x120] + mov r0, #0x11 + add sp, sp, #0x10 + str r0, [r5, #0x3c] + ldmia sp!, {r3, r4, r5, pc} +_022FE108: + mov r0, r4 + bl GhiResetBuffer +_022FE110: + mov r0, r5 + bl GhiSendBufferedData + cmp r0, #0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #0x64] + ldr r0, [r5, #0x60] + cmp r1, r0 + addlt sp, sp, #0x10 + ldmltia sp!, {r3, r4, r5, pc} + add r0, r5, #0x54 + bl GhiResetBuffer + ldr r0, [r5, #0x160] + cmp r0, #0 + beq _022FE160 + ldr r0, [r5, #0x180] + cmp r0, #0 + moveq r0, #6 + streq r0, [r5, #0x10] + beq _022FE168 +_022FE160: + mov r0, #7 + str r0, [r5, #0x10] +_022FE168: + mov r1, #0 + mov r0, r5 + mov r2, r1 + bl GhiCallProgressCallback + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FE180: .word ov00_0231AB08 +_022FE184: .word ov00_0231AB10 +_022FE188: .word ov00_0231AB18 +_022FE18C: .word ov00_023289AC +_022FE190: .word ov00_0231AB20 +_022FE194: .word ov00_0231AB2C +_022FE198: .word ov00_0231AB34 +_022FE19C: .word ov00_0231AB3C +_022FE1A0: .word ov00_0231AB40 +_022FE1A4: .word ov00_0231AB4C +_022FE1A8: .word ov00_0231AB5C +_022FE1AC: .word ov00_0231AB68 +_022FE1B0: .word ov00_0231AB74 +_022FE1B4: .word ov00_0231AB7C +_022FE1B8: .word ov00_0231AB80 +_022FE1BC: .word ov00_0231AB90 + arm_func_end GhiDoSendingRequest + + arm_func_start GhiDoPosting +GhiDoPosting: ; 0x022FE1C0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r6, [r4, #0x16c] + bl GhiPostDoPosting + movs r5, r0 + bne _022FE23C + mov r1, #0 + mov r0, r4 + str r1, [sp] + bl GhiPostCleanupState + mov r2, #0 + ldr r0, [r4, #0x4c] + add r1, sp, #0 + mov r3, r2 + bl GsiSocketSelect + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {r3, r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, r5, r6, pc} + mov r1, #0 + mov r3, #8 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} +_022FE23C: + cmp r5, #3 + moveq r0, #0 + addeq sp, sp, #4 + streq r0, [r4, #0x17c] + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [r4, #0x16c] + cmp r6, r0 + beq _022FE264 + mov r0, r4 + bl GhiCallPostCallback +_022FE264: + cmp r5, #1 + addne sp, sp, #4 + ldmneia sp!, {r3, r4, r5, r6, pc} + mov r0, r4 + bl GhiPostCleanupState + mov r3, #1 + mov r1, #0 + str r3, [r4, #0x180] + mov r3, #7 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end GhiDoPosting + + arm_func_start GhiDoWaiting +GhiDoWaiting: ; 0x022FE2A0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldr r0, [r4, #0x4c] + add r1, sp, #4 + add r3, sp, #0 + mov r2, #0 + bl GsiSocketSelect + mvn r1, #0 + cmp r0, r1 + beq _022FE2E0 + cmp r0, #1 + bne _022FE314 + ldr r1, [sp] + cmp r1, #0 + beq _022FE314 +_022FE2E0: + mov r1, #1 + mov r2, #5 + str r1, [r4, #0x120] + sub r1, r2, #6 + cmp r0, r1 + str r2, [r4, #0x3c] + movne r0, #0 + bne _022FE308 + ldr r0, [r4, #0x4c] + bl GoaGetLastError +_022FE308: + add sp, sp, #8 + str r0, [r4, #0x50] + ldmia sp!, {r4, pc} +_022FE314: + cmp r0, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, [sp, #4] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r1, #0 + mov r3, #8 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end GhiDoWaiting + + arm_func_start GhiParseStatus +GhiParseStatus: ; 0x022FE350 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + add r2, sp, #0xc + str r2, [sp] + add r1, sp, #8 + str r1, [sp, #4] + mov r4, r0 + ldr r0, [r4, #0xa0] + ldr r1, _022FE444 ; =ov00_0231ABA0 + add r2, sp, #0x14 + add r3, sp, #0x10 + bl Std_TsScanf + cmp r0, #3 + bne _022FE3A4 + ldr r6, [sp, #0x14] + cmp r6, #1 + ldrge r0, [sp, #0xc] + cmpge r0, #0x64 + blt _022FE3A4 + cmp r0, #0x258 + blt _022FE3C0 +_022FE3A4: + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #7 + str r0, [r4, #0x3c] + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022FE3C0: + mov r3, #0 + ldr lr, [sp, #8] + mov ip, #1 + ldr r1, _022FE448 ; =_020AEDB0 + mov r2, r3 + b _022FE3E0 +_022FE3D8: + add lr, lr, #1 + str lr, [sp, #8] +_022FE3E0: + ldr r0, [r4, #0xa0] + ldrsb r0, [r0, lr] + cmp r0, #0 + beq _022FE41C + mov r5, ip + blt _022FE400 + cmp r0, #0x80 + movlt r5, r3 +_022FE400: + cmp r5, #0 + movne r0, r2 + moveq r0, r0, lsl #1 + ldreqh r0, [r1, r0] + andeq r0, r0, #0x100 + cmp r0, #0 + bne _022FE3D8 +_022FE41C: + str r6, [r4, #0x10c] + ldr r1, [sp, #0x10] + mov r0, #1 + str r1, [r4, #0x110] + ldr r1, [sp, #0xc] + str r1, [r4, #0x114] + ldr r1, [sp, #8] + str r1, [r4, #0x118] + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FE444: .word ov00_0231ABA0 +_022FE448: .word _020AEDB0 + arm_func_end GhiParseStatus + + arm_func_start GhiDoReceivingStatus +GhiDoReceivingStatus: ; 0x022FE44C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + sub sp, sp, #0x400 + mov r3, #0x400 + add r1, sp, #4 + add r2, sp, #0 + mov r4, r0 + str r3, [sp] + bl GhiDoReceive + mov r5, r0 + cmp r5, #3 + cmpne r5, #1 + addeq sp, sp, #4 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, pc} + cmp r5, #0 + bne _022FE504 + ldr r0, [r4, #0x194] + add r1, sp, #4 + cmp r0, #0 + beq _022FE4E8 + ldr r2, [sp] + add r0, r4, #0xc0 + bl GhiAppendDataToBuffer + cmp r0, #0 + addeq sp, sp, #4 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, pc} + mov r0, r4 + bl GhiDecryptReceivedData + cmp r0, #0 + bne _022FE504 + mov r0, #1 + add sp, sp, #4 + str r0, [r4, #0x120] + mov r0, #0x11 + add sp, sp, #0x400 + str r0, [r4, #0x3c] + ldmia sp!, {r4, r5, pc} +_022FE4E8: + ldr r2, [sp] + add r0, r4, #0x9c + bl GhiAppendDataToBuffer + cmp r0, #0 + addeq sp, sp, #4 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, pc} +_022FE504: + ldr r0, [r4, #0xa0] + ldr r1, _022FE5F0 ; =ov00_0231AB3C + bl strstr + cmp r0, #0 + beq _022FE5B8 + mov r1, #0 + strb r1, [r0] + ldr r1, [r4, #0xa0] + sub r5, r0, r1 + mov r0, r4 + bl GhiParseStatus + cmp r0, #0 + addeq sp, sp, #4 + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, pc} + add r0, r5, #2 + str r0, [r4, #0x11c] + ldr r0, [r4, #0x114] + cmp r0, #0x64 + bne _022FE594 + ldr r0, [r4, #0x17c] + cmp r0, #0 + beq _022FE594 + mov r1, #0 + add r0, r4, #0x9c + str r1, [r4, #0x17c] + bl GhiResetBuffer + mov r1, #0 + mov r3, #6 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + add sp, sp, #4 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, pc} +_022FE594: + mov r1, #0 + mov r3, #9 + mov r0, r4 + mov r2, r1 + str r3, [r4, #0x10] + bl GhiCallProgressCallback + add sp, sp, #4 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, pc} +_022FE5B8: + cmp r5, #2 + addne sp, sp, #4 + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, pc} + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #7 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x4c] + bl GoaGetLastError + str r0, [r4, #0x50] + add sp, sp, #4 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022FE5F0: .word ov00_0231AB3C + arm_func_end GhiDoReceivingStatus + + arm_func_start GhiDeliverIncomingFileData +GhiDeliverIncomingFileData: ; 0x022FE5F4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x124] + mov ip, #0 + add r3, r0, r2 + str r3, [r4, #0x124] + ldr r0, [r4, #0x128] + mov lr, ip + cmp r3, r0 + beq _022FE628 + ldr r0, [r4, #0x154] + cmp r0, #0 + beq _022FE630 +_022FE628: + mov r0, #1 + str r0, [r4, #0x120] +_022FE630: + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _022FE65C + add r0, r4, #0xe4 + bl GhiAppendDataToBuffer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr ip, [r4, #0xe8] + ldr lr, [r4, #0xf0] + b _022FE69C +_022FE65C: + cmp r0, #1 + bne _022FE690 + cmp r2, #0 + beq _022FE684 + mov r0, #1 + str r0, [r4, #0x120] + mov r0, #0xd + str r0, [r4, #0x3c] + mov r0, #0 + ldmia sp!, {r4, pc} +_022FE684: + mov ip, r1 + mov lr, r2 + b _022FE69C +_022FE690: + cmp r0, #2 + moveq ip, r1 + moveq lr, r2 +_022FE69C: + mov r0, r4 + mov r1, ip + mov r2, lr + bl GhiCallProgressCallback + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end GhiDeliverIncomingFileData + + arm_func_start GhiParseChunkSize +GhiParseChunkSize: ; 0x022FE6B4 + stmdb sp!, {r3, lr} + ldr r1, _022FE6D8 ; =ov00_0231ABB0 + add r2, sp, #0 + add r0, r0, #0x138 + bl Std_TsScanf + cmp r0, #1 + mvnne r0, #0 + ldreq r0, [sp] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FE6D8: .word ov00_0231ABB0 + arm_func_end GhiParseChunkSize + + arm_func_start GhiAppendToChunkHeaderBuffer +GhiAppendToChunkHeaderBuffer: ; 0x022FE6DC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + cmp r2, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r3, [r5, #0x144] + cmp r3, #0xa + ldmgeia sp!, {r3, r4, r5, pc} + rsb r4, r3, #0xa + cmp r4, r2 + movge r4, r2 + add r0, r5, #0x138 + mov r2, r4 + add r0, r0, r3 + bl memcpy + ldr r0, [r5, #0x144] + mov r1, #0 + add r0, r0, r4 + str r0, [r5, #0x144] + add r0, r5, r0 + strb r1, [r0, #0x138] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GhiAppendToChunkHeaderBuffer + + arm_func_start GhiProcessIncomingFileData +GhiProcessIncomingFileData: ; 0x022FE730 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, r0 + ldr r3, [r6, #0x134] + mov r5, r1 + mov r4, r2 + cmp r3, #0 + beq _022FE8B0 + cmp r4, #0 + ble _022FE8A8 + mov r8, #0 + mov fp, #1 + mov sb, #3 + mvn r7, #0 +_022FE764: + ldr r0, [r6, #0x14c] + cmp r0, #0 + bne _022FE7F8 + mov r0, r5 + mov r1, #0xa + bl strchr + movs sl, r0 + beq _022FE7E0 + mov r0, r6 + mov r1, r5 + sub r2, sl, r5 + bl GhiAppendToChunkHeaderBuffer + add r1, sl, #1 + sub r2, r1, r5 + mov r0, r6 + sub r4, r4, r2 + mov r5, r1 + bl GhiParseChunkSize + str r0, [r6, #0x148] + cmp r0, r7 + bne _022FE7D0 + mov r0, #1 + str r0, [r6, #0x120] + mov r0, #7 + str r0, [r6, #0x3c] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FE7D0: + cmp r0, #0 + streq sb, [r6, #0x14c] + strne fp, [r6, #0x14c] + b _022FE8A0 +_022FE7E0: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GhiAppendToChunkHeaderBuffer + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FE7F8: + cmp r0, #1 + bne _022FE848 + ldr sl, [r6, #0x148] + mov r0, r6 + cmp sl, r4 + movge sl, r4 + mov r1, r5 + mov r2, sl + bl GhiDeliverIncomingFileData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r6, #0x148] + add r5, r5, sl + subs r0, r0, sl + str r0, [r6, #0x148] + moveq r0, #2 + sub r4, r4, sl + streq r0, [r6, #0x14c] + b _022FE8A0 +_022FE848: + cmp r0, #2 + bne _022FE88C + mov r0, r5 + mov r1, #0xa + bl strchr + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + strb r8, [r6, #0x138] + str r8, [r6, #0x144] + add r0, r0, #1 + sub r1, r0, r5 + str r8, [r6, #0x148] + mov r5, r0 + str r8, [r6, #0x14c] + sub r4, r4, r1 + b _022FE8A0 +_022FE88C: + cmp r0, #3 + moveq r0, #1 + streq r0, [r6, #0x120] + movne r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FE8A0: + cmp r4, #0 + bgt _022FE764 +_022FE8A8: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FE8B0: + bl GhiDeliverIncomingFileData + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GhiProcessIncomingFileData + + arm_func_start GhiDoReceivingHeaders +GhiDoReceivingHeaders: ; 0x022FE8B8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sl, r0 + mov r0, #0x1000 + mov r7, #1 + bl gsimalloc + str r0, [sp, #4] + cmp r0, #0 + bne _022FE8F0 + mov r0, r7 + str r0, [sl, #0x120] + add sp, sp, #0x18 + str r0, [sl, #0x3c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FE8F0: + ldr r1, [sp, #4] + mov r3, #0x1000 + add r2, sp, #8 + mov r0, sl + str r3, [sp, #8] + bl GhiDoReceive + mov r6, r0 + cmp r6, #3 + cmpne r6, #1 + beq _022FEDA0 + cmp r6, #0 + bne _022FE980 + ldr r0, [sl, #0x194] + cmp r0, #0 + beq _022FE968 + ldr r2, [sp, #8] + ldr r1, [sp, #4] + add r0, sl, #0xc0 + bl GhiAppendDataToBuffer + cmp r0, #0 + beq _022FEDA0 + mov r0, sl + bl GhiDecryptReceivedData + cmp r0, #0 + bne _022FE980 + mov r0, r7 + str r0, [sl, #0x120] + mov r0, #0x11 + str r0, [sl, #0x3c] + b _022FEDA0 +_022FE968: + ldr r2, [sp, #8] + ldr r1, [sp, #4] + add r0, sl, #0x9c + bl GhiAppendDataToBuffer + cmp r0, #0 + beq _022FEDA0 +_022FE980: + ldr r1, [sl, #0x114] + ldr r2, _022FEDB0 ; =0x51EB851F + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + add r3, r0, r3, asr #5 + cmp r3, #1 + ldr r5, [sl, #0xa0] + ldr r4, [sl, #0x11c] + bne _022FE9E0 + ldr r1, _022FEDB4 ; =ov00_0231AB3C + add r0, r5, r4 + mov r2, #2 + bl strncmp + cmp r0, #0 + beq _022FE9D4 + ldr r1, _022FEDB8 ; =ov00_0231ABB4 + add r0, r5, r4 + mov r2, #2 + bl strncmp + cmp r0, #0 + bne _022FE9E0 +_022FE9D4: + add r0, r5, r4 + mov r7, #0 + b _022FE9EC +_022FE9E0: + ldr r1, _022FEDBC ; =ov00_0231ABB8 + add r0, r5, r4 + bl strstr +_022FE9EC: + cmp r0, #0 + bne _022FEA00 + ldr r1, _022FEDB8 ; =ov00_0231ABB4 + add r0, r5, r4 + bl strstr +_022FEA00: + cmp r0, #0 + beq _022FED7C + cmp r7, #1 + addeq r0, r0, #2 + mov r1, #0 + strb r1, [r0] + ldr r1, [sl, #0xa0] + add r6, r0, #2 + sub r0, r0, r1 + ldr r7, [sl, #0xa8] + add r0, r0, #1 + str r0, [sl, #0xa8] + str r0, [sl, #0xac] + ldr r2, [sl, #0x114] + sub r1, r6, r1 + ldr r3, _022FEDB0 ; =0x51EB851F + mov r0, r2, lsr #0x1f + smull r2, r8, r3, r2 + add r8, r0, r8, asr #5 + cmp r8, #1 + sub r7, r7, r1 + bne _022FEAC4 + cmp r7, #0 + beq _022FEA78 + ldr r0, [sl, #0xa0] + mov r1, r6 + add r2, r7, #1 + bl memmove + str r7, [sl, #0xa8] + b _022FEA80 +_022FEA78: + add r0, sl, #0x9c + bl GhiResetBuffer +_022FEA80: + ldr r0, [sl, #0x17c] + cmp r0, #0 + beq _022FEAA8 + mov r1, #0 + mov r0, sl + mov r2, r1 + str r1, [sl, #0x17c] + mov r3, #6 + str r3, [sl, #0x10] + bl GhiCallProgressCallback +_022FEAA8: + mov r1, #0 + mov r3, #8 + mov r0, sl + mov r2, r1 + str r3, [sl, #0x10] + bl GhiCallProgressCallback + b _022FEDA0 +_022FEAC4: + cmp r8, #3 + bne _022FEC14 + ldr r0, [sl, #0x130] + cmp r0, #0xa + ble _022FEAEC + mov r0, #1 + str r0, [sl, #0x120] + mov r0, #0xb + str r0, [sl, #0x3c] + b _022FEDA0 +_022FEAEC: + ldr r1, _022FEDC0 ; =ov00_0231ABC0 + add r0, r5, r4 + bl strstr + cmp r0, #0 + beq _022FEC14 + add r4, r0, #9 + ldr r1, _022FEDC4 ; =_020AEDB0 + mov r2, #0 + b _022FEB14 +_022FEB10: + add r4, r4, #1 +_022FEB14: + ldrsb r0, [r4] + cmp r0, #0 + blt _022FEB28 + cmp r0, #0x80 + blt _022FEB30 +_022FEB28: + mov r0, r2 + b _022FEB3C +_022FEB30: + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + and r0, r0, #0x100 +_022FEB3C: + cmp r0, #0 + bne _022FEB10 + mov r3, r4 + ldr r1, _022FEDC4 ; =_020AEDB0 + mov r2, #0 + b _022FEB58 +_022FEB54: + add r3, r3, #1 +_022FEB58: + ldrsb r0, [r3] + cmp r0, #0 + beq _022FEB8C + blt _022FEB70 + cmp r0, #0x80 + blt _022FEB78 +_022FEB70: + mov r0, r2 + b _022FEB84 +_022FEB78: + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + and r0, r0, #0x100 +_022FEB84: + cmp r0, #0 + beq _022FEB54 +_022FEB8C: + mov r0, #0 + strb r0, [r3] + ldrsb r0, [r4] + cmp r0, #0x2f + bne _022FEBF0 + ldr r0, [sl, #0x18] + bl strlen + mov r5, r0 + mov r0, r4 + bl strlen + add r1, r5, #0xe + add r0, r1, r0 + bl gsimalloc + str r0, [sl, #0x12c] + cmp r0, #0 + moveq r0, #1 + streq r0, [sl, #0x120] + streq r0, [sl, #0x3c] + str r4, [sp] + ldrh r3, [sl, #0x20] + ldr r0, [sl, #0x12c] + ldr r2, [sl, #0x18] + ldr r1, _022FEDC8 ; =ov00_0231ABCC + bl OS_VsPrintf + b _022FEDA0 +_022FEBF0: + mov r0, r4 + bl goastrdup + str r0, [sl, #0x12c] + cmp r0, #0 + bne _022FEDA0 + mov r0, #1 + str r0, [sl, #0x120] + str r0, [sl, #0x3c] + b _022FEDA0 +_022FEC14: + ldr r1, _022FEDCC ; =ov00_0231ABDC + add r0, r5, r4 + bl strstr + movs fp, r0 + beq _022FECEC + ldr r8, _022FEDD0 ; =ov00_023184AC + add r1, sp, #0xc + mov r3, #5 +_022FEC34: + ldrb r2, [r8] + ldrb r0, [r8, #1] + add r8, r8, #2 + strb r2, [r1] + strb r0, [r1, #1] + add r1, r1, #2 + subs r3, r3, #1 + bne _022FEC34 + ldrb r2, [r8] + add r8, fp, #0x10 + add r0, sp, #0xc + mov sb, r8 + strb r2, [r1] + bl strlen + b _022FEC74 +_022FEC70: + add sb, sb, #1 +_022FEC74: + cmp sb, #0 + ldrnesb r1, [sb] + cmpne r1, #0 + cmpne r1, #0xa + cmpne r1, #0xd + cmpne r1, #0x20 + bne _022FEC70 + sub r2, sb, r8 + cmp r2, r0 + ble _022FECB0 + mov r0, #1 + str r0, [sl, #0x120] + mov r0, #0x10 + str r0, [sl, #0x3c] + b _022FEDA0 +_022FECB0: + cmp r0, r2 + bne _022FECE0 + add r1, sp, #0xc + mov r0, r8 + bl strncmp + cmp r0, #0 + blt _022FECE0 + mov r0, #1 + str r0, [sl, #0x120] + mov r0, #0x10 + str r0, [sl, #0x3c] + b _022FEDA0 +_022FECE0: + mov r0, r8 + bl atoi + str r0, [sl, #0x128] +_022FECEC: + ldr r1, _022FEDD4 ; =ov00_0231ABEC + add r0, r5, r4 + bl strstr + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + str r0, [sl, #0x134] + cmp r0, #0 + beq _022FED24 + mov r0, #0 + strb r0, [sl, #0x138] + str r0, [sl, #0x144] + str r0, [sl, #0x148] + str r0, [sl, #0x14c] +_022FED24: + ldr r0, [sl, #0xc] + sub r0, r0, #3 + cmp r0, #1 + movls r0, #1 + strls r0, [sl, #0x120] + bls _022FEDA0 + mov r0, #0xa + str r0, [sl, #0x10] + cmp fp, #0 + beq _022FED60 + ldr r0, [sl, #0x128] + cmp r0, #0 + moveq r0, #1 + streq r0, [sl, #0x120] + beq _022FEDA0 +_022FED60: + cmp r7, #0 + ble _022FEDA0 + mov r0, sl + mov r1, r6 + mov r2, r7 + bl GhiProcessIncomingFileData + b _022FEDA0 +_022FED7C: + cmp r6, #2 + bne _022FEDA0 + mov r0, #1 + str r0, [sl, #0x120] + mov r0, #7 + str r0, [sl, #0x3c] + ldr r0, [sl, #0x4c] + bl GoaGetLastError + str r0, [sl, #0x50] +_022FEDA0: + ldr r0, [sp, #4] + bl gsifree + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FEDB0: .word 0x51EB851F +_022FEDB4: .word ov00_0231AB3C +_022FEDB8: .word ov00_0231ABB4 +_022FEDBC: .word ov00_0231ABB8 +_022FEDC0: .word ov00_0231ABC0 +_022FEDC4: .word _020AEDB0 +_022FEDC8: .word ov00_0231ABCC +_022FEDCC: .word ov00_0231ABDC +_022FEDD0: .word ov00_023184AC +_022FEDD4: .word ov00_0231ABEC + arm_func_end GhiDoReceivingHeaders + + arm_func_start GhiDoReceivingFile +GhiDoReceivingFile: ; 0x022FEDD8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + bl current_time_gsi + mov r7, r0 + mov r0, #0x2000 + mov r8, #0 + bl gsimalloc + movs r6, r0 + bne _022FEE0C + mov r0, #1 + str r0, [sb, #0x120] + str r0, [sb, #0x3c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FEE0C: + mov r5, #0x2000 + add r4, sp, #0 + b _022FEF04 +_022FEE18: + mov r0, sb + mov r1, r6 + mov r2, r4 + str r5, [sp] + bl GhiDoReceive + cmp r0, #3 + cmpne r0, #1 + beq _022FEF1C + cmp r0, #2 + bne _022FEE68 + mov r0, #1 + str r0, [sb, #0x120] + ldr r1, [sb, #0x128] + cmp r1, #0 + ble _022FEF1C + ldr r0, [sb, #0x124] + cmp r0, r1 + movlt r0, #0xf + strlt r0, [sb, #0x3c] + b _022FEF1C +_022FEE68: + ldr r0, [sb, #0x194] + cmp r0, #0 + beq _022FEEE4 + ldr r2, [sp] + mov r1, r6 + add r0, sb, #0xc0 + bl GhiAppendDataToBuffer + cmp r0, #0 + beq _022FEF1C + ldr r1, [sb, #0xac] + mov r0, sb + str r1, [sb, #0xa8] + bl GhiDecryptReceivedData + cmp r0, #0 + bne _022FEEB8 + mov r0, #1 + str r0, [sb, #0x120] + mov r0, #0x11 + str r0, [sb, #0x3c] + b _022FEF1C +_022FEEB8: + ldr r3, [sb, #0xac] + ldr r0, [sb, #0xa8] + subs r2, r0, r3 + beq _022FEEFC + ldr r1, [sb, #0xa0] + mov r0, sb + add r1, r1, r3 + bl GhiProcessIncomingFileData + cmp r0, #0 + beq _022FEF1C + b _022FEEFC +_022FEEE4: + ldr r2, [sp] + mov r0, sb + mov r1, r6 + bl GhiProcessIncomingFileData + cmp r0, #0 + beq _022FEF1C +_022FEEFC: + bl current_time_gsi + sub r8, r0, r7 +_022FEF04: + ldr r0, [sb, #0x120] + cmp r0, #0 + bne _022FEF1C + ldr r0, [sb, #0x184] + cmp r8, r0 + blo _022FEE18 +_022FEF1C: + mov r0, r6 + bl gsifree + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end GhiDoReceivingFile + + arm_func_start GpInitialize +GpInitialize: ; 0x022FEF28 + stmdb sp!, {r3, lr} + ldr ip, _022FEF54 ; =ov00_02328800 + ldr ip, [ip] + cmp ip, #1 + movne r0, #2 + ldmneia sp!, {r3, pc} + cmp r0, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + bl GpiInitialize + ldmia sp!, {r3, pc} + .align 2, 0 +_022FEF54: .word ov00_02328800 + arm_func_end GpInitialize + + arm_func_start GpDestroy +GpDestroy: ; 0x022FEF58 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldrne r1, [r0] + cmpne r1, #0 + ldmeqia sp!, {r3, pc} + bl GpiDestroy + ldmia sp!, {r3, pc} + arm_func_end GpDestroy + + arm_func_start GpProcess +GpProcess: ; 0x022FEF74 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldrne r1, [r0] + cmpne r1, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + ldr r1, [r1, #0x108] + cmp r1, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + bl GpiProcess + ldmia sp!, {r3, pc} + arm_func_end GpProcess + + arm_func_start GpSetCallback +GpSetCallback: ; 0x022FEFA8 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldrne ip, [r0] + cmpne ip, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + cmp r1, #0 + blt _022FEFD0 + cmp r1, #9 + blt _022FEFE0 +_022FEFD0: + ldr r1, _022FEFF4 ; =ov00_0231AC08 + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, pc} +_022FEFE0: + add r0, ip, r1, lsl #3 + str r2, [r0, #0x1a8] + str r3, [r0, #0x1ac] + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FEFF4: .word ov00_0231AC08 + arm_func_end GpSetCallback + + arm_func_start GpConnectPreAuthenticatedA +GpConnectPreAuthenticatedA: ; 0x022FEFF8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x44 + movs lr, r0 + ldrne ip, [lr] + cmpne ip, #0 + addeq sp, sp, #0x44 + moveq r0, #2 + ldmeqia sp!, {r3, r4, pc} + cmp r1, #0 + ldrnesb r4, [r1] + cmpne r4, #0 + addeq sp, sp, #0x44 + moveq r0, #2 + ldmeqia sp!, {r3, r4, pc} + cmp r2, #0 + ldrnesb r4, [r2] + cmpne r4, #0 + addeq sp, sp, #0x44 + moveq r0, #2 + ldmeqia sp!, {r3, r4, pc} + ldr r4, [sp, #0x54] + cmp r4, #0 + bne _022FF068 + ldr r1, _022FF0F4 ; =ov00_0231AC18 + bl GpiSetErrorString + add sp, sp, #0x44 + mov r0, #2 + ldmia sp!, {r3, r4, pc} +_022FF068: + ldr ip, [ip, #0x108] + cmp ip, #0 + beq _022FF0B0 + add r3, sp, #0x24 + mov r0, #0 + mov r2, r3 + mov r1, r0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2, {r0, r1} + ldr r2, [sp, #0x58] + mov r0, lr + mov r1, r3 + blx r4 + add sp, sp, #0x44 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022FF0B0: + ldr lr, _022FF0F8 ; =ov00_0231AC28 + mov ip, #0 + str lr, [sp] + stmib sp, {r1, r2, ip} + str r3, [sp, #0x10] + str ip, [sp, #0x14] + ldr r1, [sp, #0x50] + ldr ip, [sp, #0x58] + str r1, [sp, #0x18] + str r4, [sp, #0x1c] + mov r1, lr + mov r2, lr + mov r3, lr + str ip, [sp, #0x20] + bl GpiConnect + add sp, sp, #0x44 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022FF0F4: .word ov00_0231AC18 +_022FF0F8: .word ov00_0231AC28 + arm_func_end GpConnectPreAuthenticatedA + + arm_func_start GpDisconnect +GpDisconnect: ; 0x022FF0FC + stmdb sp!, {r4, lr} + movs r4, r0 + ldrne r1, [r4] + cmpne r1, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r1, #0x108] + cmp r1, #0 + ldmneia sp!, {r4, pc} + mov r1, #1 + bl GpiDisconnect + mov r0, r4 + bl GpiReset + ldmia sp!, {r4, pc} + arm_func_end GpDisconnect + + arm_func_start GpProfileSearchA +GpProfileSearchA: ; 0x022FF130 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x2c + cmp r0, #0 + ldrne r4, [r0] + cmpne r4, #0 + addeq sp, sp, #0x2c + moveq r0, #2 + ldmeqia sp!, {r3, r4, pc} + ldr ip, [sp, #0x48] + cmp ip, #0 + bne _022FF170 + ldr r1, _022FF1F0 ; =ov00_0231AC18 + bl GpiSetErrorString + add sp, sp, #0x2c + mov r0, #2 + ldmia sp!, {r3, r4, pc} +_022FF170: + ldr r4, [r4, #0x108] + cmp r4, #0 + beq _022FF1B0 + add r1, sp, #0x1c + mov r4, #0 + ldr r2, [sp, #0x4c] + ldr r3, _022FF1F4 ; =0x00000601 + str r4, [r1, #8] + str r4, [r1] + str r4, [r1, #4] + str r4, [r1, #0xc] + str r3, [sp, #0x24] + blx ip + add sp, sp, #0x2c + mov r0, r4 + ldmia sp!, {r3, r4, pc} +_022FF1B0: + ldr r4, [sp, #0x38] + ldr lr, [sp, #0x3c] + str r4, [sp] + ldr r4, [sp, #0x40] + str lr, [sp, #4] + str r4, [sp, #8] + mov r4, #0 + ldr lr, [sp, #0x44] + str r4, [sp, #0xc] + str lr, [sp, #0x10] + ldr lr, [sp, #0x4c] + str ip, [sp, #0x14] + str lr, [sp, #0x18] + bl GpiProfileSearch + add sp, sp, #0x2c + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022FF1F0: .word ov00_0231AC18 +_022FF1F4: .word 0x00000601 + arm_func_end GpProfileSearchA + + arm_func_start GpGetInfo +GpGetInfo: ; 0x022FF1F8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x20c + movs r5, r0 + ldrne r4, [r5] + cmpne r4, #0 + cmpne r1, #0 + addeq sp, sp, #0x20c + moveq r0, #2 + ldmeqia sp!, {r4, r5, pc} + ldr lr, [sp, #0x218] + cmp lr, #0 + bne _022FF23C + ldr r1, _022FF2CC ; =ov00_0231AC18 + bl GpiSetErrorString + add sp, sp, #0x20c + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_022FF23C: + ldr ip, [r4, #0x108] + cmp ip, #0 + beq _022FF294 + mov r0, #0 + add lr, sp, #8 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov ip, #0x10 +_022FF260: + stmia lr!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022FF260 + ldr r2, [sp, #0x21c] + str r0, [lr] + ldr r3, [sp, #0x218] + add r1, sp, #8 + mov r0, r5 + blx r3 + add sp, sp, #0x20c + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_022FF294: + ldr ip, [r4, #0x1f4] + cmp ip, #4 + bne _022FF2B4 + ldr r1, _022FF2D0 ; =ov00_0231AC2C + bl GpiSetErrorString + add sp, sp, #0x20c + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_022FF2B4: + ldr ip, [sp, #0x21c] + str lr, [sp] + str ip, [sp, #4] + bl GpiGetInfo + add sp, sp, #0x20c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022FF2CC: .word ov00_0231AC18 +_022FF2D0: .word ov00_0231AC2C + arm_func_end GpGetInfo + + arm_func_start GpGetInfoNoWait +GpGetInfoNoWait: ; 0x022FF2D4 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldrne ip, [r0] + cmpne ip, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + ldr r3, [ip, #0x108] + cmp r3, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r3, [ip, #0x1f4] + cmp r3, #4 + bne _022FF318 + ldr r1, _022FF320 ; =ov00_0231AC2C + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, pc} +_022FF318: + bl GpiSetInfos + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF320: .word ov00_0231AC2C + arm_func_end GpGetInfoNoWait + + arm_func_start GpSendBuddyRequestA +GpSendBuddyRequestA: ; 0x022FF324 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + sub sp, sp, #0x400 + movs r6, r0 + ldrne r4, [r6] + mov r5, r1 + cmpne r4, #0 + addeq sp, sp, #4 + addeq sp, sp, #0x400 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r1, [r4, #0x108] + cmp r1, #0 + addne sp, sp, #4 + addne sp, sp, #0x400 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, pc} + ldr r1, [r4, #0x1f4] + cmp r1, #4 + bne _022FF38C + ldr r1, _022FF478 ; =ov00_0231AC2C + bl GpiSetErrorString + add sp, sp, #4 + add sp, sp, #0x400 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, pc} +_022FF38C: + cmp r2, #0 + bne _022FF3AC + ldr r1, _022FF47C ; =ov00_0231AC5C + bl GpiSetErrorString + add sp, sp, #4 + add sp, sp, #0x400 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, pc} +_022FF3AC: + mov r1, r2 + ldr r2, _022FF480 ; =0x00000401 + add r0, sp, #0 + bl strzcpy_gsi + ldrsb r0, [sp] + cmp r0, #0 + beq _022FF3E8 + add r2, sp, #0 + mov r1, #0x2f +_022FF3D0: + ldrsb r0, [r2] + cmp r0, #0x5c + streqb r1, [r2] + ldrsb r0, [r2, #1]! + cmp r0, #0 + bne _022FF3D0 +_022FF3E8: + ldr r2, _022FF484 ; =ov00_0231AC6C + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _022FF488 ; =ov00_0231AC78 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _022FF48C ; =ov00_0231AC84 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r2, r5 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _022FF490 ; =ov00_0231AC94 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + add r2, sp, #0 + bl GpiAppendStringToBuffer + ldr r2, _022FF494 ; =ov00_0231ACA0 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, #0 + add sp, sp, #4 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022FF478: .word ov00_0231AC2C +_022FF47C: .word ov00_0231AC5C +_022FF480: .word 0x00000401 +_022FF484: .word ov00_0231AC6C +_022FF488: .word ov00_0231AC78 +_022FF48C: .word ov00_0231AC84 +_022FF490: .word ov00_0231AC94 +_022FF494: .word ov00_0231ACA0 + arm_func_end GpSendBuddyRequestA + + arm_func_start GpAuthBuddyRequest +GpAuthBuddyRequest: ; 0x022FF498 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldrne r3, [r0] + cmpne r3, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + ldr r2, [r3, #0x108] + cmp r2, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r2, [r3, #0x1f4] + cmp r2, #4 + bne _022FF4DC + ldr r1, _022FF4E4 ; =ov00_0231AC2C + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, pc} +_022FF4DC: + bl GpiAuthBuddyRequest + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF4E4: .word ov00_0231AC2C + arm_func_end GpAuthBuddyRequest + + arm_func_start GpDenyBuddyRequest +GpDenyBuddyRequest: ; 0x022FF4E8 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r0 + ldrne r5, [r4] + cmpne r5, #0 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r5, #0x108] + cmp r2, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r2, [r5, #0x1f4] + cmp r2, #4 + bne _022FF52C + ldr r1, _022FF5A4 ; =ov00_0231AC2C + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_022FF52C: + add r2, sp, #0 + bl GpiGetProfile + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [sp] + ldr r0, [r1, #0x18] + sub r0, r0, #1 + str r0, [r1, #0x18] + ldr r0, [r5, #0x100] + cmp r0, #0 + bne _022FF59C + ldr r1, [sp] + ldr r0, [r1, #0x18] + cmp r0, #0 + bgt _022FF59C + ldr r0, [r1, #0x14] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, [sp] + bl GpiCanFreeProfile + cmp r0, #0 + beq _022FF59C + ldr r1, [sp] + mov r0, r4 + bl GpiRemoveProfile +_022FF59C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FF5A4: .word ov00_0231AC2C + arm_func_end GpDenyBuddyRequest + + arm_func_start GpGetNumBuddies +GpGetNumBuddies: ; 0x022FF5A8 + cmp r0, #0 + ldrne r2, [r0] + cmpne r2, #0 + moveq r0, #2 + bxeq lr + ldr r0, [r2, #0x108] + cmp r0, #0 + mov r0, #0 + strne r0, [r1] + ldreq r2, [r2, #0x5d0] + streq r2, [r1] + bx lr + arm_func_end GpGetNumBuddies + + arm_func_start GpGetBuddyStatus +GpGetBuddyStatus: ; 0x022FF5D8 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + ldrne r3, [r6] + mov r5, r2 + cmpne r3, #0 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r2, [r3, #0x108] + cmp r2, #0 + beq _022FF618 + mov r0, r5 + mov r1, #0 + mov r2, #0x214 + bl memset + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_022FF618: + cmp r5, #0 + bne _022FF630 + ldr r1, _022FF760 ; =ov00_0231ACA8 + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_022FF630: + cmp r1, #0 + ldr r2, [r3, #0x5d0] + blt _022FF644 + cmp r1, r2 + blt _022FF658 +_022FF644: + ldr r1, _022FF764 ; =ov00_0231ACB8 + mov r0, r6 + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_022FF658: + bl GpiFindBuddy + movs r4, r0 + bne _022FF678 + ldr r1, _022FF764 ; =ov00_0231ACB8 + mov r0, r6 + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_022FF678: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _022FF6D8 + ldr r0, [r0, #4] + cmp r0, #0 + bne _022FF6D8 + ldr r1, [r4] + mov r0, #0 + str r1, [r5] + ldr r1, [r4, #0xc] + ldr r1, [r1, #4] + str r1, [r5, #4] + strb r0, [r5, #8] + strb r0, [r5, #0x108] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x1c] + str r0, [r5, #0x208] + ldr r0, [r4, #0xc] + ldrh r0, [r0, #0x20] + str r0, [r5, #0x20c] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x30] + str r0, [r5, #0x210] + b _022FF758 +_022FF6D8: + ldr r0, [r4] + str r0, [r5] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r0, [r5, #4] + ldr r0, [r4, #8] + ldr r1, [r0, #8] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r5, #8] + beq _022FF710 + add r0, r5, #8 + mov r2, #0x100 + bl strzcpy_gsi +_022FF710: + ldr r0, [r4, #8] + ldr r1, [r0, #0xc] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r5, #0x108] + beq _022FF734 + add r0, r5, #0x108 + mov r2, #0x100 + bl strzcpy_gsi +_022FF734: + ldr r0, [r4, #8] + ldr r0, [r0, #0x10] + str r0, [r5, #0x208] + ldr r0, [r4, #8] + ldrh r0, [r0, #0x14] + str r0, [r5, #0x20c] + ldr r0, [r4, #8] + ldr r0, [r0, #0x18] + str r0, [r5, #0x210] +_022FF758: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FF760: .word ov00_0231ACA8 +_022FF764: .word ov00_0231ACB8 + arm_func_end GpGetBuddyStatus + + arm_func_start GpGetBuddyIndex +GpGetBuddyIndex: ; 0x022FF768 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + movs r6, r0 + mov r4, r2 + ldrne r2, [r6] + mov r5, r1 + cmpne r2, #0 + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r2, [r2, #0x108] + cmp r2, #0 + movne r0, #0 + addne sp, sp, #4 + strne r0, [r4] + ldmneia sp!, {r3, r4, r5, r6, pc} + add r2, sp, #0 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + ldrne r0, [r0, #8] + cmpne r0, #0 + ldrne r0, [r0] + strne r0, [r4] + bne _022FF7FC + add r2, sp, #0 + mov r0, r6 + mov r1, r5 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + ldrne r0, [r0, #0xc] + cmpne r0, #0 + ldrne r0, [r0] + strne r0, [r4] + mvneq r0, #0 + streq r0, [r4] +_022FF7FC: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end GpGetBuddyIndex + + arm_func_start GpIsBuddy +GpIsBuddy: ; 0x022FF808 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + ldrne r2, [r5] + mov r4, r1 + cmpne r2, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r2, #0x108] + cmp r2, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + add r2, sp, #0 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + ldrne r0, [r0, #8] + cmpne r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + ldrne r0, [r0, #0xc] + cmpne r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpIsBuddy + + arm_func_start GpDeleteBuddy +GpDeleteBuddy: ; 0x022FF880 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldrne r3, [r0] + cmpne r3, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + ldr r2, [r3, #0x108] + cmp r2, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r2, [r3, #0x1f4] + cmp r2, #4 + bne _022FF8C4 + ldr r1, _022FF8D8 ; =ov00_0231AC2C + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, pc} +_022FF8C4: + mov r2, #1 + bl GpiDeleteBuddy + cmp r0, #0 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF8D8: .word ov00_0231AC2C + arm_func_end GpDeleteBuddy + + arm_func_start GpSetStatusA +GpSetStatusA: ; 0x022FF8DC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x200 + movs r7, r0 + ldrne r4, [r7] + mov r6, r1 + cmpne r4, #0 + mov r5, r3 + addeq sp, sp, #0x200 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r4, #0x108] + cmp r1, #0 + addne sp, sp, #0x200 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r4, #0x1f4] + cmp r1, #4 + bne _022FF938 + ldr r1, _022FFAF0 ; =ov00_0231AC2C + bl GpiSetErrorString + add sp, sp, #0x200 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF938: + cmp r2, #0 + bne _022FF954 + ldr r1, _022FFAF4 ; =ov00_0231ACC8 + bl GpiSetErrorString + add sp, sp, #0x200 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF954: + cmp r5, #0 + bne _022FF970 + ldr r1, _022FFAF8 ; =ov00_0231ACE0 + bl GpiSetErrorString + add sp, sp, #0x200 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF970: + mov r1, r2 + add r0, sp, #0x100 + mov r2, #0x100 + bl strzcpy_gsi + add r0, sp, #0x100 + ldrsb r0, [r0] + cmp r0, #0 + beq _022FF9B0 + add r2, sp, #0x100 + mov r1, #0x2f +_022FF998: + ldrsb r0, [r2] + cmp r0, #0x5c + streqb r1, [r2] + ldrsb r0, [r2, #1]! + cmp r0, #0 + bne _022FF998 +_022FF9B0: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldrsb r0, [sp] + cmp r0, #0 + beq _022FF9EC + add r2, sp, #0 + mov r1, #0x2f +_022FF9D4: + ldrsb r0, [r2] + cmp r0, #0x5c + streqb r1, [r2] + ldrsb r0, [r2, #1]! + cmp r0, #0 + bne _022FF9D4 +_022FF9EC: + ldr r0, [r4, #0x23c] + cmp r6, r0 + bne _022FFA2C + add r0, sp, #0x100 + add r1, r4, #0x3b8 + bl strcmp + cmp r0, #0 + bne _022FFA2C + add r1, r4, #0xb8 + add r0, sp, #0 + add r1, r1, #0x400 + bl strcmp + cmp r0, #0 + addeq sp, sp, #0x200 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022FFA2C: + add r1, sp, #0x100 + add r0, r4, #0x3b8 + mov r2, #0x100 + str r6, [r4, #0x23c] + bl strzcpy_gsi + add r0, r4, #0xb8 + add r1, sp, #0 + add r0, r0, #0x400 + mov r2, #0x100 + bl strzcpy_gsi + ldr r2, _022FFAFC ; =ov00_0231ACF8 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r7 + mov r2, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _022FFB00 ; =ov00_0231AC78 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _022FFB04 ; =ov00_0231AD04 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r4, #0x210 + add r2, sp, #0x100 + bl GpiAppendStringToBuffer + ldr r2, _022FFB08 ; =ov00_0231AD14 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r4, #0x210 + add r2, sp, #0 + bl GpiAppendStringToBuffer + ldr r2, _022FFB0C ; =ov00_0231ACA0 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, #0 + add sp, sp, #0x200 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FFAF0: .word ov00_0231AC2C +_022FFAF4: .word ov00_0231ACC8 +_022FFAF8: .word ov00_0231ACE0 +_022FFAFC: .word ov00_0231ACF8 +_022FFB00: .word ov00_0231AC78 +_022FFB04: .word ov00_0231AD04 +_022FFB08: .word ov00_0231AD14 +_022FFB0C: .word ov00_0231ACA0 + arm_func_end GpSetStatusA + + arm_func_start GpSendBuddyMessageA +GpSendBuddyMessageA: ; 0x022FFB10 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + cmp r0, #0 + ldrne ip, [r0] + mov r3, r2 + cmpne ip, #0 + addeq sp, sp, #8 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + ldr r2, [ip, #0x108] + cmp r2, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r2, [ip, #0x1f4] + cmp r2, #4 + bne _022FFB68 + ldr r1, _022FFBA0 ; =ov00_0231AC2C + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r3, pc} +_022FFB68: + cmp r3, #0 + bne _022FFB84 + ldr r1, _022FFBA4 ; =ov00_0231AD20 + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r3, pc} +_022FFB84: + mov ip, #0 + str ip, [sp] + mov r2, #1 + str ip, [sp, #4] + bl GpiSendBuddyMessage + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FFBA0: .word ov00_0231AC2C +_022FFBA4: .word ov00_0231AD20 + arm_func_end GpSendBuddyMessageA + + arm_func_start GpGetReversBuddiesList +GpGetReversBuddiesList: ; 0x022FFBA8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + cmp r0, #0 + ldrne r4, [r0] + cmpne r4, #0 + addeq sp, sp, #0x14 + moveq r0, #2 + ldmeqia sp!, {r3, r4, pc} + ldr lr, [sp, #0x20] + cmp lr, #0 + bne _022FFBE8 + ldr r1, _022FFC54 ; =ov00_0231AC18 + bl GpiSetErrorString + add sp, sp, #0x14 + mov r0, #2 + ldmia sp!, {r3, r4, pc} +_022FFBE8: + ldr ip, [r4, #0x1f4] + cmp ip, #4 + bne _022FFC08 + ldr r1, _022FFC58 ; =ov00_0231AC2C + bl GpiSetErrorString + add sp, sp, #0x14 + mov r0, #2 + ldmia sp!, {r3, r4, pc} +_022FFC08: + ldr ip, [r4, #0x108] + cmp ip, #0 + beq _022FFC3C + ldr r2, [sp, #0x24] + add r1, sp, #8 + mov r3, #0 + str r3, [r1] + str r3, [r1, #4] + str r3, [r1, #8] + blx lr + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r3, r4, pc} +_022FFC3C: + ldr ip, [sp, #0x24] + str lr, [sp] + str ip, [sp, #4] + bl GpiOthersBuddyList + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022FFC54: .word ov00_0231AC18 +_022FFC58: .word ov00_0231AC2C + arm_func_end GpGetReversBuddiesList + + arm_func_start GpiInitialize +GpiInitialize: ; 0x022FFC5C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r4, #0 + str r4, [r7] + ldr r0, _022FFD84 ; =0x00000634 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl gsimalloc + str r0, [sp] + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _022FFD84 ; =0x00000634 + mov r1, #0 + bl memset + ldr r0, [sp] + mov r3, #0 + strb r3, [r0] + ldr r0, [sp] + mov r2, #1 + str r3, [r0, #0x5b8] + ldr r1, [sp] + add r0, sp, #0 + str r2, [r1, #0x100] + ldr r1, [sp] + str r3, [r1, #0x104] + ldr r1, [sp] + str r3, [r1, #0x108] + ldr r1, [sp] + str r3, [r1, #0x10c] + ldr r1, [sp] + str r6, [r1, #0x608] + ldr r1, [sp] + str r5, [r1, #0x60c] + ldr r1, [sp] + str r4, [r1, #0x1a4] + bl GpiInitProfiles + cmp r0, #0 + bne _022FFD14 + ldr r0, [sp] + bl gsifree + mov r0, #0 + str r0, [sp] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFD14: + ldr r0, [sp] + mov r2, #0 + str r2, [r0, #0x5c0] + mov r1, r2 +_022FFD24: + ldr r0, [sp] + add r0, r0, r2, lsl #3 + str r1, [r0, #0x1a8] + ldr r0, [sp] + add r0, r0, r2, lsl #3 + add r2, r2, #1 + str r1, [r0, #0x1ac] + cmp r2, #9 + blt _022FFD24 + add r0, sp, #0 + bl GpiReset + movs r4, r0 + beq _022FFD68 + add r0, sp, #0 + bl GpiDestroy + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFD68: + bl SocketStartUp_Ghi + bl current_time_gsi + bl srand + ldr r1, [sp] + mov r0, #0 + str r1, [r7] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FFD84: .word 0x00000634 + arm_func_end GpiInitialize + + arm_func_start GpiDestroy +GpiDestroy: ; 0x022FFD88 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r1, #1 + ldr r4, [r5] + bl GpiDisconnect + bl GsUdpEngineIsInitialized + cmp r0, #0 + beq _022FFDCC + add r0, r4, #0x220 + bl GsUdpEngineRemoveMsgHandler + bl GsUdpEngineNoMoreMsgHandlers + cmp r0, #0 + beq _022FFDCC + bl GsUdpEngineNoApp + cmp r0, #0 + beq _022FFDCC + bl GsUdpEngineShutdown +_022FFDCC: + mov r0, r5 + bl GpiStatusInfoKeysDestroy + ldr r0, [r4, #0x5c8] + bl TableFree_Gsi + mov r0, r4 + bl gsifree + mov r0, #0 + str r0, [r5] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpiDestroy + + arm_func_start GpiResetProfile +GpiResetProfile: ; 0x022FFDF0 + mov r0, #0 + str r0, [r1, #8] + str r0, [r1, #0xc] + str r0, [r1, #0x14] + str r0, [r1, #0x18] + str r0, [r1, #0x1c] + mov r0, #1 + bx lr + arm_func_end GpiResetProfile + + arm_func_start GpiReset +GpiReset: ; 0x022FFE10 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r0, [r4] + mov r2, #0 + str r0, [sp] + strb r2, [r0, #0x110] + ldr r0, [sp] + sub r1, r2, #1 + strb r2, [r0, #0x12f] + ldr r0, [sp] + strb r2, [r0, #0x144] + ldr r0, [sp] + str r1, [r0, #0x1f0] + ldr r0, [sp] + str r2, [r0, #0x1f4] + ldr r0, [sp] + str r2, [r0, #0x200] + ldr r0, [sp] + str r2, [r0, #0x204] + ldr r0, [sp] + str r2, [r0, #0x1fc] + ldr r0, [sp] + ldr r0, [r0, #0x1f8] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x1f8] + ldr r0, [sp] + str r1, [r0, #0x1f8] + ldr r0, [sp] + str r1, [r0, #0x20c] + ldr r0, [sp] + ldr r0, [r0, #0x208] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x208] + ldr r0, [sp] + str r1, [r0, #0x208] + ldr r0, [sp] + str r1, [r0, #0x218] + ldr r0, [sp] + str r1, [r0, #0x21c] + ldr r0, [sp] + str r1, [r0, #0x214] + ldr r0, [sp] + ldr r0, [r0, #0x210] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x210] + ldr r0, [sp] + str r1, [r0, #0x210] + ldr r0, [sp] + str r1, [r0, #0x5e8] + ldr r0, [sp] + str r1, [r0, #0x5ec] + ldr r0, [sp] + str r1, [r0, #0x5e4] + ldr r0, [sp] + ldr r0, [r0, #0x5e0] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x5e0] + ldr r0, [sp] + str r1, [r0, #0x5e0] + ldr r0, [sp] + str r1, [r0, #0x5f8] + ldr r0, [sp] + str r1, [r0, #0x5fc] + ldr r0, [sp] + str r1, [r0, #0x5f4] + ldr r0, [sp] + ldr r0, [r0, #0x5f0] + bl gsifree + ldr r0, [sp] + mov r2, #0 + str r2, [r0, #0x5f0] + ldr r1, [sp] + mov r0, r4 + str r2, [r1, #0x5f0] + bl GpiStatusInfoKeysDestroy + add r0, sp, #0 + bl GpiStatusInfoKeysInit + movs r5, r0 + beq _022FFF7C + add r0, sp, #0 + bl GpiDestroy + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_022FFF7C: + ldr r0, [sp] + mov r1, #2 + str r1, [r0, #0x234] + ldr r0, [sp] + ldr r1, [r0, #0x5c4] + cmp r1, #0 + beq _022FFFB0 +_022FFF98: + mov r0, r4 + bl GpiRemoveOperation + ldr r0, [sp] + ldr r1, [r0, #0x5c4] + cmp r1, #0 + bne _022FFF98 +_022FFFB0: + mov r2, #0 + str r2, [r0, #0x5c4] + ldr r3, [sp] + ldr r1, _02300028 ; =GpiResetProfile + mov r0, r4 + str r2, [r3, #0x5d0] + bl GpiProfileMap + mov r0, #0 + ldr r1, [sp] + sub r2, r0, #1 + str r0, [r1, #0x19c] + ldr r1, [sp] + str r0, [r1, #0x1a0] + ldr r1, [sp] + str r0, [r1, #0x198] + ldr r1, [sp] + str r0, [r1, #0x238] + ldr r1, [sp] + str r0, [r1, #0x5bc] + ldr r1, [sp] + str r0, [r1, #0x5d4] + ldr r1, [sp] + str r2, [r1, #0x23c] + ldr r1, [sp] + strb r0, [r1, #0x3b8] + ldr r1, [sp] + strb r0, [r1, #0x4b8] + ldr r1, [sp] + str r0, [r1, #0x630] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02300028: .word GpiResetProfile + arm_func_end GpiReset + + arm_func_start GpiProcessConnectionManager +GpiProcessConnectionManager: ; 0x0230002C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov r1, #0 + mov r4, r0 + str r1, [sp, #8] + ldr r8, [r4] + bl current_time_gsi + mov sb, r0 +_0230004C: + mov r0, r4 + add r1, r8, #0x210 + bl GpiAddLocalInfo + ldr r0, [r8, #0x218] + mov r1, #1 + cmp r0, #0 + strgt sb, [r8, #0x630] + ldr r0, _02300384 ; =ov00_0231AD34 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r8, #0x1f0] + add r3, sp, #8 + mov r0, r4 + add r2, r8, #0x210 + bl GpiSendFromBuffer + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #8 + ldr r0, _02300384 ; =ov00_0231AD34 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r8, #0x1f0] + add r3, sp, #0xc + mov r0, r4 + add r2, r8, #0x1f8 + bl GpiRecvToBuffer + cmp r0, #0 + beq _023000F8 + cmp r0, #3 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, _02300388 ; =ov00_0231AD38 + mov r0, r4 + mov r1, #5 + bl GpiSetError + mov r0, r4 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023000F8: + ldr r0, [r8, #0x1f8] + ldr r1, _0230038C ; =ov00_0231AD64 + bl strstr + movs sl, r0 + beq ov00_023002F0 + ldr fp, _02300390 ; =ov00_0231AD7C + ldr r5, _02300394 ; =ov00_0231AD94 + mov r6, #0x800 + mov r7, #0 +_0230011C: + str sb, [r8, #0x630] + strb r7, [sl] + ldr r0, [r8, #0x1f8] + sub r1, sl, r0 + str r1, [sp, #0xc] + ldr r0, [r8, #0x20c] + cmp r1, r0 + ble _02300180 + ldr r0, [r8, #0x20c] + cmp r1, #0x800 + movlt r1, r6 + add r0, r0, r1 + str r0, [r8, #0x20c] + add r1, r0, #1 + ldr r0, [r8, #0x208] + bl gsirealloc + cmp r0, #0 + bne _0230017C + ldr r1, _02300398 ; =ov00_0231AD6C + mov r0, r4 + bl GpiSetErrorString + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230017C: + str r0, [r8, #0x208] +_02300180: + ldr r2, [sp, #0xc] + ldr r0, [r8, #0x208] + ldr r1, [r8, #0x1f8] + add r2, r2, #1 + bl memcpy + ldr r0, [r8, #0x1f8] + add r1, sl, #7 + ldr r2, [r8, #0x200] + sub r0, r1, r0 + sub r0, r2, r0 + str r0, [r8, #0x200] + add r2, r0, #1 + ldr r0, [r8, #0x1f8] + bl memmove + ldr sl, [r8, #0x208] + mov r1, fp + mov r0, sl + bl strstr + cmp r0, #0 + beq _02300210 + add r0, r0, #4 + bl atoi + mov r2, r0 + mov r0, r4 + add r1, sp, #0x10 + bl GpiFindOperationByID + cmp r0, #0 + beq _023002DC + mov r0, r4 + ldr r1, [sp, #0x10] + ldr r2, [r8, #0x208] + bl GpiProcessOperation + cmp r0, #0 + beq _023002DC + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300210: + mov r1, sl + mov r0, r4 + mov r2, #1 + bl GpiCheckForError + cmp r0, #0 + addne sp, sp, #0x14 + movne r0, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr sl, [r8, #0x208] + ldr r1, _0230039C ; =ov00_0231AD84 + mov r0, sl + mov r2, #4 + bl strncmp + cmp r0, #0 + bne _02300268 + mov r1, sl + mov r0, r4 + bl GpiProcessRecvBuddyMessage + cmp r0, #0 + beq _023002DC + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300268: + ldr r1, _023003A0 ; =ov00_0231AD8C + mov r0, sl + mov r2, #4 + bl strncmp + cmp r0, #0 + beq _023002DC + mov r0, sl + mov r1, r5 + mov r2, #4 + bl strncmp + cmp r0, #0 + mov r0, sl + bne _023002B0 + mov r1, r5 + add r2, r8, #0x610 + mov r3, #0x19 + bl GpiValueForKey + b _023002DC +_023002B0: + ldr r1, _023003A4 ; =ov00_0231AD9C + mov r2, #5 + bl strncmp + cmp r0, #0 + bne _023002DC + mov r1, sl + mov r0, r4 + bl GpiProcessRecvBuddyStatusInfo + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023002DC: + ldr r0, [r8, #0x1f8] + ldr r1, _0230038C ; =ov00_0231AD64 + bl strstr + movs sl, r0 + bne _0230011C + arm_func_end GpiProcessConnectionManager + + arm_func_start ov00_023002F0 +ov00_023002F0: ; 023002F0 + ldr r0, [sp, #8] + cmp r0, #0 + ldrne r0, [r8, #0x1f4] + cmpne r0, #5 + beq _02300330 + ldr r2, _023003A8 ; =ov00_0231ADA4 + mov r0, r4 + mov r1, #7 + bl GpiSetError + mov r0, r4 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300330: + mov r0, r4 + bl GpiOperationsAreBlocking + movs r5, r0 + beq _02300348 + mov r0, #0xa + bl msleep_gsi +_02300348: + cmp r5, #0 + bne _0230004C + ldr r1, [r8, #0x630] + ldr r0, _023003AC ; =0x0001D4C0 + sub r1, sb, r1 + cmp r1, r0 + bls _02300378 + ldr r2, _023003B0 ; =ov00_0231ADCC + mov r0, r4 + add r1, r8, #0x210 + bl GpiAppendStringToBuffer + str sb, [r8, #0x630] +_02300378: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02300384: .word ov00_0231AD34 +_02300388: .word ov00_0231AD38 +_0230038C: .word ov00_0231AD64 +_02300390: .word ov00_0231AD7C +_02300394: .word ov00_0231AD94 +_02300398: .word ov00_0231AD6C +_0230039C: .word ov00_0231AD84 +_023003A0: .word ov00_0231AD8C +_023003A4: .word ov00_0231AD9C +_023003A8: .word ov00_0231ADA4 +_023003AC: .word 0x0001D4C0 +_023003B0: .word ov00_0231ADCC + arm_func_end ov00_023002F0 + + arm_func_start GpiProcess +GpiProcess: ; 0x023003B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r6, [sl] + mov sb, r1 + ldr r0, [r6, #0x1f4] + mov r7, #0 + cmp r0, #1 + bne _0230044C + mov r4, r7 + mov r5, #1 + mov fp, #0xa +_023003E0: + mov r0, sl + bl GpiCheckConnect + movs r7, r0 + bne _02300408 + cmp sb, #0 + beq _02300408 + ldr r0, [r6, #0x1f4] + cmp r0, #1 + moveq r8, r5 + beq _0230040C +_02300408: + mov r8, r4 +_0230040C: + cmp r8, #0 + beq _0230041C + mov r0, fp + bl msleep_gsi +_0230041C: + cmp r8, #0 + bne _023003E0 + cmp r7, #0 + beq _0230044C + add r1, sp, #0 + mov r0, sl + mov r2, #1 + bl GpiFindOperationByID + cmp r0, #0 + ldrne r0, [sp] + movne r1, #4 + strne r1, [r0, #0x1c] +_0230044C: + ldr r0, [r6, #0x1f4] + cmp r0, #3 + cmpne r0, #2 + cmpne r0, #5 + bne _02300488 + cmp r7, #0 + bne _02300474 + mov r0, sl + bl GpiProcessConnectionManager + mov r7, r0 +_02300474: + cmp r7, #0 + bne _02300488 + mov r0, sl + bl GpiProcessPeers + mov r7, r0 +_02300488: + cmp r7, #0 + bne _0230049C + mov r0, sl + bl GpiProcessSearches + mov r7, r0 +_0230049C: + ldr r1, [r6, #0x5c4] + str r1, [sp] + cmp r1, #0 + beq _023004E8 +_023004AC: + ldr r0, [r1, #0x1c] + cmp r0, #0 + ldreq r0, [r1, #0x20] + streq r0, [sp] + beq _023004DC + mov r0, sl + bl GpiFailedOpCallback + ldr r1, [sp] + mov r0, sl + ldr r2, [r1, #0x20] + str r2, [sp] + bl GpiRemoveOperation +_023004DC: + ldr r1, [sp] + cmp r1, #0 + bne _023004AC +_023004E8: + mov r0, sl + mov r1, sb + bl GpiProcessCallbacks + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r6, #0x5bc] + cmp r0, #0 + beq _0230051C + mov r0, sl + mov r1, #0 + bl GpiDisconnect + mov r0, sl + bl GpiReset +_0230051C: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GpiProcess + + arm_func_start GpiSendAuthBuddyRequest +GpiSendAuthBuddyRequest: ; 0x02300524 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + ldr r2, _023005B8 ; =ov00_0231ADD8 + mov r5, r1 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _023005BC ; =ov00_0231ADE4 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _023005C0 ; =ov00_0231ADF0 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, [r5] + bl GpiAppendIntToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _023005C4 ; =ov00_0231AE00 + bl GpiAppendStringToBuffer + ldr r2, [r5, #0x14] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _023005C8 ; =ov00_0231AE08 + bl GpiAppendStringToBuffer + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023005B8: .word ov00_0231ADD8 +_023005BC: .word ov00_0231ADE4 +_023005C0: .word ov00_0231ADF0 +_023005C4: .word ov00_0231AE00 +_023005C8: .word ov00_0231AE08 + arm_func_end GpiSendAuthBuddyRequest + + arm_func_start GpiProcessRecvBuddyMessage +GpiProcessRecvBuddyMessage: ; 0x023005CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x150 + sub sp, sp, #0x1000 + mov r7, r1 + mov r6, r0 + ldr r1, _023011B8 ; =ov00_0231AE10 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + ldr r4, [r6] + bl GpiValueForKey + cmp r0, #0 + bne _02300630 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300630: + add r0, sp, #0x150 + bl atoi + mov r8, r0 + ldr r1, _023011C0 ; =ov00_0231AE48 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + bne _02300688 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300688: + add r0, sp, #0x150 + bl atoi + mov sb, r0 + ldr r1, _023011C4 ; =ov00_0231AE4C + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + beq _023006BC + add r0, sp, #0x150 + bl atoi + b _023006C4 +_023006BC: + mov r0, #0 + bl time_gsi +_023006C4: + mov r5, r0 + cmp r8, #0x64 + bgt _023006FC + bge _02300BFC + cmp r8, #6 + addls pc, pc, r8, lsl #2 + b _023011A8 +_023006E0: ; jump table + b _023011A8 ; case 0 + b _02300718 ; case 1 + b _02300938 ; case 2 + b _023011A8 ; case 3 + b _02300AFC ; case 4 + b _02300828 ; case 5 + b _02300B7C ; case 6 +_023006FC: + cmp r8, #0x65 + bgt _0230070C + beq _02300FAC + b _023011A8 +_0230070C: + cmp r8, #0x66 + beq _0230113C + b _023011A8 +_02300718: + ldr r1, [r4, #0x1c0] + ldr r0, [r4, #0x1c4] + str r1, [sp, #0x38] + str r0, [sp, #0x3c] + cmp r1, #0 + beq _023011A8 + mov r0, #0xc + bl gsimalloc + movs r4, r0 + bne _0230075C + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230075C: + ldr r1, _023011CC ; =ov00_0231AE64 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + bne _023007A8 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023007A8: + add r0, sp, #0x150 + bl strlen + add r0, r0, #1 + bl gsimalloc + str r0, [r4, #8] + cmp r0, #0 + bne _023007E0 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023007E0: + add r1, sp, #0x150 + bl strcpy + str sb, [r4] + str r5, [r4, #4] + mov r2, #0 + str r2, [sp] + mov r2, #2 + add r1, sp, #0x38 + str r2, [sp, #4] + mov r0, r6 + mov r3, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300828: + ldr r1, [r4, #0x1c8] + ldr r0, [r4, #0x1cc] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + beq _023011A8 + mov r0, #0xc + bl gsimalloc + movs r4, r0 + bne _0230086C + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230086C: + ldr r1, _023011CC ; =ov00_0231AE64 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + bne _023008B8 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023008B8: + add r0, sp, #0x150 + bl strlen + add r0, r0, #1 + bl gsimalloc + str r0, [r4, #8] + cmp r0, #0 + bne _023008F0 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023008F0: + add r1, sp, #0x150 + bl strcpy + str sb, [r4] + str r5, [r4, #4] + mov r2, #0 + str r2, [sp] + mov r2, #0xb + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r6 + mov r3, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300938: + mov r0, r6 + mov r1, sb + bl GpiProfileListAdd + movs r8, r0 + bne _02300968 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300968: + ldr r1, _023011CC ; =ov00_0231AE64 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + bne _023009B4 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023009B4: + ldr r1, _023011D0 ; =ov00_0231AE6C + add r0, sp, #0x150 + bl strstr + movs r7, r0 + bne _023009F8 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023009F8: + mov r1, #0 + add r0, r7, #8 + strb r1, [r7] + bl strlen + cmp r0, #0x20 + beq _02300A40 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300A40: + ldr r0, [r8, #0x14] + bl gsifree + mov r0, #0 + str r0, [r8, #0x14] + add r0, r7, #8 + bl goastrdup + str r0, [r8, #0x14] + ldr r0, [r8, #0x18] + add r0, r0, #1 + str r0, [r8, #0x18] + ldr r1, [r4, #0x1b0] + ldr r0, [r4, #0x1b4] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + cmp r1, #0 + beq _023011A8 + ldr r0, _023011D4 ; =0x0000040C + bl gsimalloc + movs r4, r0 + bne _02300AAC + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300AAC: + ldr r2, _023011D8 ; =0x00000401 + add r1, sp, #0x150 + add r0, r4, #8 + bl strzcpy_gsi + str sb, [r4] + str r5, [r4, #4] + mov r2, #0 + str r2, [sp] + mov r2, #6 + add r1, sp, #0x10 + str r2, [sp, #4] + mov r0, r6 + mov r3, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300AFC: + ldr r1, [r4, #0x1e0] + ldr r0, [r4, #0x1e4] + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + cmp r1, #0 + beq _023011A8 + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _02300B40 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300B40: + str sb, [r3] + str r5, [r3, #4] + mov r2, #0 + str r2, [sp] + mov r2, #0xa + add r1, sp, #0x18 + str r2, [sp, #4] + mov r0, r6 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300B7C: + ldr r1, [r4, #0x1e8] + ldr r0, [r4, #0x1ec] + str r1, [sp, #0x20] + str r0, [sp, #0x24] + cmp r1, #0 + beq _023011A8 + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _02300BC0 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300BC0: + str sb, [r3] + str r5, [r3, #4] + mov r2, #0 + str r2, [sp] + mov r2, #0xc + add r1, sp, #0x20 + str r2, [sp, #4] + mov r0, r6 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300BFC: + mov r0, r6 + mov r1, sb + bl GpiProfileListAdd + movs r8, r0 + bne _02300C2C + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300C2C: + ldr r0, [r8, #8] + cmp r0, #0 + bne _02300CCC + mov r0, #0x1c + bl gsimalloc + str r0, [r8, #8] + cmp r0, #0 + bne _02300C68 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300C68: + mov r2, #7 + mov r1, #0 +_02300C70: + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r0, #2] + strb r1, [r0, #3] + add r0, r0, #4 + subs r2, r2, #1 + bne _02300C70 + ldr r0, [r8, #0xc] + cmp r0, #0 + beq _02300CB8 + ldr r1, [r0] + ldr r0, [r8, #8] + str r1, [r0] + ldr r0, [r8, #0xc] + bl GpiRemoveBuddyStatusInfo + mov r0, #0 + str r0, [r8, #0xc] + b _02300CCC +_02300CB8: + ldr r1, [r4, #0x5d0] + add r0, r1, #1 + str r0, [r4, #0x5d0] + ldr r0, [r8, #8] + str r1, [r0] +_02300CCC: + ldr r1, _023011CC ; =ov00_0231AE64 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + ldr sl, [r8, #8] + bl GpiValueForKey + cmp r0, #0 + bne _02300D1C + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300D1C: + ldr r1, _023011DC ; =ov00_0231AE78 + add r0, sp, #0x150 + add r2, sp, #0x40 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + bne _02300D68 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300D68: + add r0, sp, #0x40 + bl atoi + str r0, [sl, #4] + ldr r0, [sl, #8] + bl gsifree + mov r0, #0 + str r0, [sl, #8] + ldr r1, _023011E0 ; =ov00_0231AE7C + add r0, sp, #0x150 + add r2, sp, #0x50 + mov r3, #0x100 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x50] + add r0, sp, #0x50 + bl goastrdup + str r0, [sl, #8] + cmp r0, #0 + bne _02300DD4 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300DD4: + ldr r0, [sl, #0xc] + bl gsifree + mov r7, #0 + ldr r1, _023011E4 ; =ov00_0231AE84 + add r0, sp, #0x150 + add r2, sp, #0x50 + mov r3, #0x100 + str r7, [sl, #0xc] + bl GpiValueForKey + cmp r0, #0 + moveq r0, r7 + streqb r0, [sp, #0x50] + add r0, sp, #0x50 + bl goastrdup + str r0, [sl, #0xc] + cmp r0, #0 + bne _02300E34 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300E34: + ldr r1, _023011E8 ; =ov00_0231AE8C + add r0, sp, #0x150 + add r2, sp, #0x40 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + beq _02300EAC + add r0, sp, #0x40 + bl atoi + mov r8, r0 + add r0, sp, #0x40 + bl atoi + mov fp, r0 + add r0, sp, #0x40 + bl atoi + mov r7, r0 + add r0, sp, #0x40 + bl atoi + mov r1, r7, lsr #0x18 + mov r0, r0, lsr #8 + mov r2, fp, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r8, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 +_02300EAC: + ldr r1, _023011EC ; =ov00_0231AE94 + str r0, [sl, #0x10] + add r0, sp, #0x150 + add r2, sp, #0x40 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + beq _02300EF4 + add r0, sp, #0x40 + bl atoi + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 +_02300EF4: + ldr r1, _023011F0 ; =ov00_0231AE98 + strh r0, [sl, #0x14] + add r0, sp, #0x150 + add r2, sp, #0x40 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + beq _02300F20 + add r0, sp, #0x40 + bl atoi +_02300F20: + str r0, [sl, #0x18] + ldr r1, [r4, #0x1b8] + ldr r0, [r4, #0x1bc] + str r1, [sp, #0x28] + str r0, [sp, #0x2c] + cmp r1, #0 + beq _023011A8 + mov r0, #0xc + bl gsimalloc + movs r3, r0 + bne _02300F68 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300F68: + str sb, [r3] + ldr r0, [sl] + mov r2, #0 + str r0, [r3, #8] + str r5, [r3, #4] + str r2, [sp] + mov r2, #5 + add r1, sp, #0x28 + str r2, [sp, #4] + mov r0, r6 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300FAC: + ldr r1, _023011CC ; =ov00_0231AE64 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + bne _02300FF8 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02300FF8: + ldr r1, _023011EC ; =ov00_0231AE94 + add r0, sp, #0x150 + bl strstr + cmp r0, #0 + bne _0230103C + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230103C: + ldrsb r1, [r0, #3] + cmp r1, #0 + bne _02301078 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301078: + add r0, r0, #3 + bl atoi + mov r5, r0 + ldr r1, _023011F4 ; =ov00_0231AEA0 + add r0, sp, #0x150 + bl strstr + movs r1, r0 + moveq r0, #0 + streqb r0, [sp, #0x50] + beq _023010B0 + add r0, sp, #0x50 + add r1, r1, #3 + mov r2, #0x100 + bl strzcpy_gsi +_023010B0: + ldr r1, [r4, #0x1d0] + ldr r0, [r4, #0x1d4] + str r1, [sp, #0x30] + str r0, [sp, #0x34] + cmp r1, #0 + beq _023011A8 + mov r0, #0x108 + bl gsimalloc + movs r4, r0 + bne _023010F4 + ldr r1, _023011C8 ; =ov00_0231AE54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023010F4: + str sb, [r4] + add r1, sp, #0x50 + add r0, r4, #8 + str r5, [r4, #4] + bl strcpy + mov r2, #0 + str r2, [sp] + add r1, sp, #0x30 + str r2, [sp, #4] + mov r0, r6 + mov r3, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _023011A8 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230113C: + ldr r1, _023011CC ; =ov00_0231AE64 + add r2, sp, #0x150 + mov r0, r7 + mov r3, #0x1000 + bl GpiValueForKey + cmp r0, #0 + bne _02301188 + ldr r2, _023011BC ; =ov00_0231AE18 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x150 + add sp, sp, #0x1000 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301188: + mov r4, #0 + str r4, [sp] + ldr r3, _023011F8 ; =ov00_0231AEA4 + mov r0, r6 + mov r1, sb + mov r2, #0x67 + str r4, [sp, #4] + bl GpiSendBuddyMessage +_023011A8: + mov r0, #0 + add sp, sp, #0x150 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023011B8: .word ov00_0231AE10 +_023011BC: .word ov00_0231AE18 +_023011C0: .word ov00_0231AE48 +_023011C4: .word ov00_0231AE4C +_023011C8: .word ov00_0231AE54 +_023011CC: .word ov00_0231AE64 +_023011D0: .word ov00_0231AE6C +_023011D4: .word 0x0000040C +_023011D8: .word 0x00000401 +_023011DC: .word ov00_0231AE78 +_023011E0: .word ov00_0231AE7C +_023011E4: .word ov00_0231AE84 +_023011E8: .word ov00_0231AE8C +_023011EC: .word ov00_0231AE94 +_023011F0: .word ov00_0231AE98 +_023011F4: .word ov00_0231AEA0 +_023011F8: .word ov00_0231AEA4 + arm_func_end GpiProcessRecvBuddyMessage + + arm_func_start GpiProcessRecvBuddyStatusInfo +GpiProcessRecvBuddyStatusInfo: ; 0x023011FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + sub sp, sp, #0x400 + mov r7, r0 + mov r0, #0 + mov r6, r1 + ldr r4, [r7] + bl time_gsi + mov fp, r0 + ldr r1, _02301A08 ; =ov00_0231AEA8 + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _0230126C + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230126C: + add r0, sp, #0x14 + bl atoi + str r0, [sp, #8] + ldr r1, [sp, #8] + mov r0, r7 + bl GpiProfileListAdd + movs r8, r0 + bne _023012A8 + ldr r1, _02301A10 ; =ov00_0231AE54 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023012A8: + ldr r5, [r8, #0xc] + cmp r5, #0 + bne _02301374 + mov r0, #0x3c + bl gsimalloc + str r0, [r8, #0xc] + cmp r0, #0 + bne _023012E4 + ldr r1, _02301A10 ; =ov00_0231AE54 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023012E4: + mov r1, #0 + mov r2, #0x3c + bl memset + ldr r0, [r8, #8] + cmp r0, #0 + beq _0230131C + ldr r1, [r0] + ldr r0, [r8, #0xc] + str r1, [r0] + ldr r0, [r8, #8] + bl GpiRemoveBuddyStatus + mov r0, #0 + str r0, [r8, #8] + b _02301330 +_0230131C: + ldr r1, [r4, #0x5d0] + add r0, r1, #1 + str r0, [r4, #0x5d0] + ldr r0, [r8, #0xc] + str r1, [r0] +_02301330: + ldr r2, _02301A14 ; =GpiStatusInfoKeyFree + mov r0, #8 + mov r1, #1 + bl ArrayNew_Gsi + ldr r1, [r8, #0xc] + str r0, [r1, #0x38] + ldr r5, [r8, #0xc] + ldr r0, [r5, #0x38] + cmp r0, #0 + bne _02301374 + ldr r1, _02301A10 ; =ov00_0231AE54 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301374: + ldr r1, _02301A18 ; =ov00_0231AEB4 + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _023013C0 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023013C0: + add r0, sp, #0x14 + bl atoi + str r0, [r5, #4] + ldr r1, _02301A1C ; =ov00_0231AEBC + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301418 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301418: + add r0, sp, #0x14 + bl atoi + mov sl, r0 + add r0, sp, #0x14 + bl atoi + mov sb, r0 + add r0, sp, #0x14 + bl atoi + mov r8, r0 + add r0, sp, #0x14 + bl atoi + mov r1, sl, lsl #0x18 + mov r3, r8, lsr #0x18 + mov r0, r0, lsr #8 + and r2, r1, #0xff000000 + mov r1, sb, lsl #8 + and r3, r3, #0xff + and r0, r0, #0xff00 + orr r0, r3, r0 + and r1, r1, #0xff0000 + orr r0, r1, r0 + orr r0, r2, r0 + str r0, [r5, #0x1c] + ldr r1, _02301A20 ; =ov00_0231AEC4 + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _023014C0 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023014C0: + add r0, sp, #0x14 + bl atoi + strh r0, [r5, #0x20] + ldr r1, _02301A24 ; =ov00_0231AECC + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301518 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301518: + add r0, sp, #0x14 + bl atoi + mov sl, r0 + add r0, sp, #0x14 + bl atoi + mov sb, r0 + add r0, sp, #0x14 + bl atoi + mov r8, r0 + add r0, sp, #0x14 + bl atoi + mov r1, sl, lsl #0x18 + mov r3, r8, lsr #0x18 + mov r0, r0, lsr #8 + and r2, r1, #0xff000000 + mov r1, sb, lsl #8 + and r3, r3, #0xff + and r0, r0, #0xff00 + orr r0, r3, r0 + and r1, r1, #0xff0000 + orr r0, r1, r0 + orr r0, r2, r0 + str r0, [r5, #0x24] + ldr r1, _02301A28 ; =ov00_0231AED8 + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _023015C0 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023015C0: + add r0, sp, #0x14 + bl atoi + mov sl, r0 + add r0, sp, #0x14 + bl atoi + mov sb, r0 + add r0, sp, #0x14 + bl atoi + mov r8, r0 + add r0, sp, #0x14 + bl atoi + mov r1, sl, lsl #0x18 + mov r3, r8, lsr #0x18 + mov r0, r0, lsr #8 + and r2, r1, #0xff000000 + mov r1, sb, lsl #8 + and r3, r3, #0xff + and r0, r0, #0xff00 + orr r0, r3, r0 + and r1, r1, #0xff0000 + orr r0, r1, r0 + orr r0, r2, r0 + str r0, [r5, #0x28] + ldr r1, _02301A2C ; =ov00_0231AEE4 + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301668 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301668: + add r0, sp, #0x14 + bl atoi + strh r0, [r5, #0x2c] + ldr r1, _02301A30 ; =ov00_0231AEEC + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _023016C0 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023016C0: + add r0, sp, #0x14 + bl atoi + strh r0, [r5, #0x2e] + ldr r1, _02301A34 ; =ov00_0231AEF4 + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301718 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301718: + add r0, sp, #0x14 + bl atoi + str r0, [r5, #0x18] + ldr r0, [r5, #8] + bl gsifree + mov r0, #0 + str r0, [r5, #8] + ldr r1, _02301A38 ; =ov00_0231AF00 + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301780 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301780: + add r0, sp, #0x14 + bl goastrdup + str r0, [r5, #8] + ldr r0, [r5, #0xc] + bl gsifree + mov r0, #0 + str r0, [r5, #0xc] + ldr r1, _02301A3C ; =ov00_0231AF0C + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _023017E8 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023017E8: + add r0, sp, #0x14 + bl goastrdup + str r0, [r5, #0xc] + ldr r0, [r5, #0x10] + bl gsifree + mov r0, #0 + str r0, [r5, #0x10] + ldr r1, _02301A40 ; =ov00_0231AF18 + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301850 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301850: + add r0, sp, #0x14 + bl goastrdup + str r0, [r5, #0x10] + ldr r0, [r5, #0x14] + bl gsifree + mov r0, #0 + str r0, [r5, #0x14] + ldr r1, _02301A44 ; =ov00_0231AF24 + mov r0, r6 + add r2, sp, #0x14 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _023018B8 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023018B8: + add r0, sp, #0x14 + bl goastrdup + str r0, [r5, #0x14] + ldr r1, _02301A48 ; =ov00_0231AF30 + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301910 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301910: + add r0, sp, #0x14 + bl atoi + str r0, [r5, #0x34] + ldr r1, _02301A4C ; =ov00_0231AF3C + add r2, sp, #0x14 + mov r0, r6 + mov r3, #0x400 + bl GpiValueForKey + cmp r0, #0 + bne _02301968 + ldr r2, _02301A0C ; =ov00_0231AE18 + mov r0, r7 + mov r1, #1 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301968: + add r0, sp, #0x14 + bl atoi + str r0, [r5, #0x30] + ldr r1, [r4, #0x1b8] + ldr r0, [r4, #0x1bc] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + cmp r1, #0 + beq _023019F8 + mov r0, #0xc + bl gsimalloc + movs r3, r0 + bne _023019B8 + ldr r1, _02301A10 ; =ov00_0231AE54 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023019B8: + str fp, [r3, #4] + ldr r0, [r5] + mov r2, #0 + str r0, [r3, #8] + ldr r0, [sp, #8] + add r1, sp, #0xc + str r0, [r3] + str r2, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x14 + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023019F8: + mov r0, #0 + add sp, sp, #0x14 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02301A08: .word ov00_0231AEA8 +_02301A0C: .word ov00_0231AE18 +_02301A10: .word ov00_0231AE54 +_02301A14: .word GpiStatusInfoKeyFree +_02301A18: .word ov00_0231AEB4 +_02301A1C: .word ov00_0231AEBC +_02301A20: .word ov00_0231AEC4 +_02301A24: .word ov00_0231AECC +_02301A28: .word ov00_0231AED8 +_02301A2C: .word ov00_0231AEE4 +_02301A30: .word ov00_0231AEEC +_02301A34: .word ov00_0231AEF4 +_02301A38: .word ov00_0231AF00 +_02301A3C: .word ov00_0231AF0C +_02301A40: .word ov00_0231AF18 +_02301A44: .word ov00_0231AF24 +_02301A48: .word ov00_0231AF30 +_02301A4C: .word ov00_0231AF3C + arm_func_end GpiProcessRecvBuddyStatusInfo + + arm_func_start GpiSendServerBuddyMessage +GpiSendServerBuddyMessage: ; 0x02301A50 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0xdb0 + mov r7, r0 + mov r5, r2 + mov r6, r1 + ldr r2, _02301B14 ; =0x00000DAD + add r0, sp, #0 + mov r1, r3 + ldr r4, [r7] + bl strzcpy_gsi + ldr r2, _02301B18 ; =ov00_0231AE10 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r7 + mov r2, r5 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02301B1C ; =ov00_0231ADE4 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02301B20 ; =ov00_0231AF4C + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r2, r6 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02301B24 ; =ov00_0231AE64 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r4, #0x210 + add r2, sp, #0 + bl GpiAppendStringToBuffer + ldr r2, _02301B28 ; =ov00_0231AE08 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, #0 + add sp, sp, #0xdb0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02301B14: .word 0x00000DAD +_02301B18: .word ov00_0231AE10 +_02301B1C: .word ov00_0231ADE4 +_02301B20: .word ov00_0231AF4C +_02301B24: .word ov00_0231AE64 +_02301B28: .word ov00_0231AE08 + arm_func_end GpiSendServerBuddyMessage + + arm_func_start GpiSendBuddyMessage +GpiSendBuddyMessage: ; 0x02301B2C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GpiGetPeerByProfile + movs r4, r0 + bne _02301C0C + add r2, sp, #0 + mov r0, r8 + mov r1, r7 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + ldrne r0, [r0, #0xc] + cmpne r0, #0 + ldrneh r0, [r0, #0x20] + cmpne r0, #0 + bne _02301BAC + ldr r0, [sp, #0x20] + cmp r0, #0xb00 + addeq sp, sp, #4 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl GpiSendServerBuddyMessage + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02301BAC: + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl GpiAddPeer + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r0, [sp] + mov r1, r4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + mov r0, r8 + bne _02301BF8 + bl GpiPeerGetSig + cmp r0, #0 + beq _02301C7C + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02301BF8: + bl GpiPeerStartConnect + cmp r0, #0 + beq _02301C7C + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02301C0C: + ldr r0, [r4] + cmp r0, #0x6a + bne _02301C7C + add r2, sp, #0 + mov r0, r8 + mov r1, r7 + bl GpiGetProfile + cmp r0, #0 + beq _02301C7C + ldr r0, [sp] + ldr r1, [r0, #0xc] + cmp r1, #0 + movne r0, #0 + strneh r0, [r1, #0x20] + ldr r0, [sp, #0x20] + cmp r0, #0xb00 + addeq sp, sp, #4 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + cmp r6, #0x64 + bge _02301C7C + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl GpiSendServerBuddyMessage + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02301C7C: + ldr r1, [sp, #0x24] + cmp r1, #0 + beq _02301C90 + mov r0, r4 + bl GpiPeerAddOp +_02301C90: + mov r0, r8 + mov r1, r4 + mov r2, r6 + mov r3, r5 + bl GpiPeerAddMessage + cmp r0, #0 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end GpiSendBuddyMessage + + arm_func_start GpiBuddyHandleKeyRequest +GpiBuddyHandleKeyRequest: ; 0x02301CB4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + add r1, sp, #8 + mov r5, r0 + bl GpiSaveKeysToBuffer + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, pc} + ldr r0, [sp, #8] + mov r2, #0x69 + cmp r0, #0 + ldreq r0, _02301D4C ; =ov00_0231AF50 + streq r0, [sp, #8] + mov r0, #0xb00 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r1, [r4, #0x10] + ldr r3, [sp, #8] + mov r0, r5 + bl GpiSendBuddyMessage + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, pc} + ldr r4, [sp, #8] + ldr r1, _02301D4C ; =ov00_0231AF50 + mov r0, r4 + bl strcmp + cmp r0, #0 + beq _02301D40 + mov r0, r4 + bl gsifree + mov r0, #0 + str r0, [sp, #8] +_02301D40: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02301D4C: .word ov00_0231AF50 + arm_func_end GpiBuddyHandleKeyRequest + + arm_func_start GpiBuddyHandleKeyReply +GpiBuddyHandleKeyReply: ; 0x02301D50 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3c + sub sp, sp, #0x800 + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r1, [r1, #0x10] + add r2, sp, #0x38 + mov sl, r0 + bl GpiGetProfile + cmp r0, #0 + bne _02301D98 + ldr r1, _02302190 ; =ov00_0231AF54 + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0x3c + add sp, sp, #0x800 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301D98: + ldr r1, _02302194 ; =ov00_0231AF50 + ldr r0, [sp, #0xc] + bl strcmp + cmp r0, #0 + bne _02301E58 + ldr r0, [sp, #8] + ldr r4, [r0, #0x44] + cmp r4, #0 + beq _02301DD0 +_02301DBC: + ldr r0, [r4, #0x10] + cmp r0, #0x68 + ldrne r4, [r4, #0xc] + cmpne r4, #0 + bne _02301DBC +_02301DD0: + cmp r4, #0 + addeq sp, sp, #0x3c + addeq sp, sp, #0x800 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + cmp r0, #0x68 + bne _02302180 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02302180 + mov r0, #0x10 + bl gsimalloc + ldmib r4, {r5, r6} + mov r3, r0 + mov r2, #0 + str r2, [r3, #4] + str r2, [r3, #0xc] + ldr r0, [sp, #8] + str r2, [r3, #8] + ldr r0, [r0, #0x10] + add r1, sp, #0x30 + str r0, [r3] + str r2, [sp] + mov r0, sl + str r6, [sp, #0x30] + str r5, [sp, #0x34] + str r2, [sp, #4] + ldmia r1, {r1, r2} + bl GpiAddCallback + ldr r0, [sp, #8] + mov r1, r4 + bl GpiPeerRemoveOp + b _02302180 +_02301E58: + mov r5, #0 + add r4, sp, #0x400 + add r3, sp, #0x600 + ldr r1, [sp, #0xc] + add r4, r4, #0x3c + add r2, sp, #0x28 + add r3, r3, #0x3c + mov r0, sl + str r5, [sp, #0x2c] + str r5, [sp, #0x28] + str r5, [sp, #0x24] + str r4, [sp] + bl GpiReadKeyAndValue + add r0, sp, #0x600 + ldr r1, _02302198 ; =ov00_0231AF68 + add r0, r0, #0x3c + bl strcmp + cmp r0, #0 + beq _02301ED4 + ldr r2, _0230219C ; =ov00_0231AF70 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, r5 + bl GpiCallErrorCallback + add sp, sp, #0x3c + add sp, sp, #0x800 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301ED4: + mov r0, r4 + bl atoi + movs r8, r0 + bne _02301F90 + ldr r0, [sp, #8] + ldr r4, [r0, #0x44] + cmp r4, #0 + beq _02301F08 +_02301EF4: + ldr r0, [r4, #0x10] + cmp r0, #0x68 + ldrne r4, [r4, #0xc] + cmpne r4, #0 + bne _02301EF4 +_02301F08: + cmp r4, #0 + addeq sp, sp, #0x3c + addeq sp, sp, #0x800 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + cmp r0, #0x68 + bne _02302180 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02302180 + mov r0, #0x10 + bl gsimalloc + ldmib r4, {r5, r6} + mov r3, r0 + mov r2, #0 + str r2, [r3, #4] + str r2, [r3, #0xc] + ldr r0, [sp, #8] + str r2, [r3, #8] + ldr r0, [r0, #0x10] + add r1, sp, #0x1c + str r0, [r3] + str r2, [sp] + mov r0, sl + str r6, [sp, #0x1c] + str r5, [sp, #0x20] + str r2, [sp, #4] + ldmia r1, {r1, r2} + bl GpiAddCallback + ldr r0, [sp, #8] + mov r1, r4 + bl GpiPeerRemoveOp + b _02302180 +_02301F90: + mov r4, r8, lsl #2 + mov r0, r4 + bl gsimalloc + str r0, [sp, #0x10] + mov r0, r4 + bl gsimalloc + mov fp, r0 + cmp r8, #0 + mov sb, r5 + ble _023020D4 + add r7, sp, #0x400 + add r6, sp, #0x600 + add r5, sp, #0x23c + add r4, sp, #0x3c + add r7, r7, #0x3c + add r6, r6, #0x3c +_02301FD0: + ldr r1, [sp, #0xc] + mov r0, sl + add r2, sp, #0x28 + mov r3, r6 + str r7, [sp] + bl GpiReadKeyAndValue + mov r0, r6 + bl strlen + mov r1, #2 + str r1, [sp] + mov r2, r0 + mov r0, r6 + mov r1, r5 + add r3, sp, #0x2c + bl B64Decode + ldr r2, [sp, #0x2c] + mov r1, #0 + mov r0, r7 + strb r1, [r5, r2] + bl strlen + mov r1, #2 + str r1, [sp] + mov r2, r0 + mov r0, r7 + mov r1, r4 + add r3, sp, #0x2c + bl B64Decode + ldr r2, [sp, #0x2c] + mov r1, #0 + mov r0, r5 + strb r1, [r4, r2] + bl goastrdup + ldr r1, [sp, #0x10] + str r0, [r1, sb, lsl #2] + mov r0, r4 + bl goastrdup + str r0, [fp, sb, lsl #2] + ldr r1, [sp, #0x38] + mov r0, sl + ldr r1, [r1, #0xc] + mov r2, r5 + ldr r1, [r1, #0x38] + add r3, sp, #0x24 + bl GpiStatusInfoCheckKey + cmp r0, #0 + ldreq r0, [sp, #0x24] + cmpeq r0, #0 + mov r0, sl + bne _023020B0 + ldr r1, [sp, #0x38] + mov r2, r5 + ldr r1, [r1, #0xc] + mov r3, r4 + ldr r1, [r1, #0x38] + bl GpiStatusInfoAddKey + b _023020C8 +_023020B0: + ldr r1, [sp, #0x38] + mov r2, r5 + ldr r1, [r1, #0xc] + mov r3, r4 + ldr r1, [r1, #0x38] + bl GpiStatusInfoSetKey +_023020C8: + add sb, sb, #1 + cmp sb, r8 + blt _02301FD0 +_023020D4: + ldr r0, [sp, #8] + ldr r4, [r0, #0x44] + cmp r4, #0 + beq _023020F8 +_023020E4: + ldr r0, [r4, #0x10] + cmp r0, #0x68 + ldrne r4, [r4, #0xc] + cmpne r4, #0 + bne _023020E4 +_023020F8: + cmp r4, #0 + addeq sp, sp, #0x3c + addeq sp, sp, #0x800 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #0x10] + cmp r0, #0x68 + bne _02302180 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02302180 + mov r0, #0x10 + bl gsimalloc + ldmib r4, {r5, r6} + mov r3, r0 + ldr r0, [sp, #0x10] + str r8, [r3, #0xc] + stmib r3, {r0, fp} + ldr r0, [sp, #8] + mov r2, #0 + ldr r0, [r0, #0x10] + add r1, sp, #0x14 + str r0, [r3] + str r2, [sp] + mov r2, #0xe + mov r0, sl + str r6, [sp, #0x14] + str r5, [sp, #0x18] + str r2, [sp, #4] + ldmia r1, {r1, r2} + bl GpiAddCallback + ldr r0, [sp, #8] + mov r1, r4 + bl GpiPeerRemoveOp +_02302180: + mov r0, #0 + add sp, sp, #0x3c + add sp, sp, #0x800 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02302190: .word ov00_0231AF54 +_02302194: .word ov00_0231AF50 +_02302198: .word ov00_0231AF68 +_0230219C: .word ov00_0231AF70 + arm_func_end GpiBuddyHandleKeyReply + + arm_func_start GpiAuthBuddyRequest +GpiAuthBuddyRequest: ; 0x023021A0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + add r2, sp, #0 + ldr r5, [r4] + bl GpiGetProfile + cmp r0, #0 + bne _023021D0 + ldr r1, _02302268 ; =ov00_0231AF54 + mov r0, r4 + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_023021D0: + ldr r1, [sp] + ldr r0, [r1, #0x14] + cmp r0, #0 + bne _023021F4 + ldr r1, _02302268 ; =ov00_0231AF54 + mov r0, r4 + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_023021F4: + mov r0, r4 + bl GpiSendAuthBuddyRequest + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, [sp] + ldr r0, [r1, #0x18] + sub r0, r0, #1 + str r0, [r1, #0x18] + ldr r0, [r5, #0x100] + cmp r0, #0 + bne _02302260 + ldr r1, [sp] + ldr r0, [r1, #0x18] + cmp r0, #0 + bgt _02302260 + ldr r0, [r1, #0x14] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, [sp] + bl GpiCanFreeProfile + cmp r0, #0 + beq _02302260 + ldr r1, [sp] + mov r0, r4 + bl GpiRemoveProfile +_02302260: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02302268: .word ov00_0231AF54 + arm_func_end GpiAuthBuddyRequest + + arm_func_start GpiFixBuddyIndices +GpiFixBuddyIndices: ; 0x0230226C + ldr r3, [r1, #8] + cmp r3, #0 + beq _0230228C + ldr r0, [r3] + cmp r0, r2 + subgt r0, r0, #1 + strgt r0, [r3] + bgt _023022A8 +_0230228C: + ldr r1, [r1, #0xc] + cmp r1, #0 + beq _023022A8 + ldr r0, [r1] + cmp r0, r2 + subgt r0, r0, #1 + strgt r0, [r1] +_023022A8: + mov r0, #1 + bx lr + arm_func_end GpiFixBuddyIndices + + arm_func_start GpiDeleteBuddy +GpiDeleteBuddy: ; 0x023022B0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r2 + mov r6, r0 + add r2, sp, #0 + ldr r4, [r6] + bl GpiGetProfile + cmp r0, #0 + bne _023022EC + ldr r1, _02302504 ; =ov00_0231AF54 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #4 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, pc} +_023022EC: + cmp r5, #1 + bne _02302358 + ldr r2, _02302508 ; =ov00_0231AF94 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _0230250C ; =ov00_0231ADE4 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02302510 ; =ov00_0231AFA0 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, [sp] + ldr r2, [r2] + bl GpiAppendIntToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02302514 ; =ov00_0231AE08 + bl GpiAppendStringToBuffer +_02302358: + ldr r0, [sp] + ldr r1, [r0, #8] + cmp r1, #0 + beq _023023F4 + ldr r0, [r1, #8] + ldr r5, [r1] + bl gsifree + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #8] + str r1, [r0, #8] + ldr r0, [sp] + ldr r0, [r0, #8] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #8] + str r1, [r0, #0xc] + ldr r0, [sp] + ldr r0, [r0, #8] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [sp] + bl GpiCanFreeProfile + cmp r0, #0 + beq _023023D8 + ldr r1, [sp] + mov r0, r6 + bl GpiRemoveProfile +_023023D8: + ldr r0, [r4, #0x5d0] + ldr r1, _02302518 ; =GpiFixBuddyIndices + sub r3, r0, #1 + mov r0, r6 + mov r2, r5 + str r3, [r4, #0x5d0] + bl GpiProfileMap +_023023F4: + ldr r0, [sp] + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _023024F8 + ldr r0, [r1, #8] + ldr r5, [r1] + bl gsifree + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #8] + ldr r0, [sp] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #0xc] + ldr r0, [sp] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x10] + bl gsifree + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #0x10] + ldr r0, [sp] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x14] + bl gsifree + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #0x14] + ldr r0, [sp] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [sp] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _023024C0 + bl ArrayFree_Gsi + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + str r1, [r0, #0x38] +_023024C0: + ldr r0, [sp] + bl GpiCanFreeProfile + cmp r0, #0 + beq _023024DC + ldr r1, [sp] + mov r0, r6 + bl GpiRemoveProfile +_023024DC: + ldr r0, [r4, #0x5d0] + ldr r1, _02302518 ; =GpiFixBuddyIndices + sub r3, r0, #1 + mov r0, r6 + mov r2, r5 + str r3, [r4, #0x5d0] + bl GpiProfileMap +_023024F8: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02302504: .word ov00_0231AF54 +_02302508: .word ov00_0231AF94 +_0230250C: .word ov00_0231ADE4 +_02302510: .word ov00_0231AFA0 +_02302514: .word ov00_0231AE08 +_02302518: .word GpiFixBuddyIndices + arm_func_end GpiDeleteBuddy + + arm_func_start GpiAppendCharToBuffer +GpiAppendCharToBuffer: ; 0x0230251C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r4, r1 + ldr r5, [r4, #8] + ldr r6, [r4, #4] + mov r8, r0 + mov r7, r2 + cmp r6, r5 + ldr r0, [r4] + bne _02302568 + add r6, r6, #0x800 + add r1, r6, #1 + bl gsirealloc + cmp r0, #0 + bne _02302568 + ldr r1, _02302590 ; =ov00_0231AFB0 + mov r0, r8 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02302568: + strb r7, [r0, r5] + add r1, r5, #1 + mov r2, #0 + strb r2, [r0, r1] + ldr r1, [r4, #8] + add r1, r1, #1 + str r1, [r4, #8] + stmia r4, {r0, r6} + mov r0, r2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02302590: .word ov00_0231AFB0 + arm_func_end GpiAppendCharToBuffer + + arm_func_start GpiAppendStringToBufferLen +GpiAppendStringToBufferLen: ; 0x02302594 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + movs r8, r2 + mov sl, r0 + mov sb, r1 + mov r7, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r4, [sb, #8] + ldr r5, [sb, #4] + ldr r6, [sb] + sub r0, r5, r4 + cmp r0, r7 + bge _02302600 + cmp r7, #0x800 + movlt r0, #0x800 + movge r0, r7 + add r5, r5, r0 + mov r0, r6 + add r1, r5, #1 + bl gsirealloc + movs r6, r0 + bne _02302600 + ldr r1, _02302634 ; =ov00_0231AFB0 + mov r0, sl + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02302600: + mov r1, r8 + mov r2, r7 + add r0, r6, r4 + bl memcpy + add r1, r4, r7 + mov r0, #0 + strb r0, [r6, r1] + ldr r1, [sb, #8] + add r1, r1, r7 + str r1, [sb, #8] + str r5, [sb, #4] + str r6, [sb] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02302634: .word ov00_0231AFB0 + arm_func_end GpiAppendStringToBufferLen + + arm_func_start GpiAppendStringToBuffer +GpiAppendStringToBuffer: ; 0x02302638 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov r0, r4 + bl strlen + mov r3, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GpiAppendStringToBufferLen + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiAppendStringToBuffer + + arm_func_start GpiAppendIntToBuffer +GpiAppendIntToBuffer: ; 0x02302668 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r5, r0 + ldr r1, _0230269C ; =ov00_0231AFC0 + add r0, sp, #0 + bl OS_VsPrintf + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + bl GpiAppendStringToBuffer + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230269C: .word ov00_0231AFC0 + arm_func_end GpiAppendIntToBuffer + + arm_func_start GpiSendData +GpiSendData: ; 0x023026A0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + mov r7, r0 + mov r1, r2 + mov r2, r3 + mov r0, r8 + mov r3, #0 + ldr r6, [sp, #0x18] + ldr r5, [sp, #0x1c] + ldr r4, [sp, #0x20] + bl SocketSend + mvn r1, #0 + cmp r0, r1 + bne _0230274C + mov r0, r8 + bl GoaGetLastError + mvn r2, #5 + cmp r0, r2 + subne r1, r2, #0x14 + cmpne r0, r1 + subne r1, r2, #0x46 + cmpne r0, r1 + beq _0230273C + ldrsb r0, [r4] + cmp r0, #0x50 + ldreqsb r0, [r4, #1] + cmpeq r0, #0x52 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r2, _02302778 ; =ov00_0231AFC4 + mov r0, r7 + mov r1, #5 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #0 + bl GpiCallErrorCallback + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0230273C: + mov r0, #0 + str r0, [r5] + str r0, [r6] + b _02302770 +_0230274C: + cmp r0, #0 + strne r0, [r5] + movne r0, #0 + strne r0, [r6] + bne _02302770 + mov r0, #0 + str r0, [r5] + mov r0, #1 + str r0, [r6] +_02302770: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02302778: .word ov00_0231AFC4 + arm_func_end GpiSendData + + arm_func_start GpiSendOrBufferChar +GpiSendOrBufferChar: ; 0x0230277C + mov r0, #0 + bx lr + arm_func_end GpiSendOrBufferChar + + arm_func_start GpiSendOrBufferStringLenToPeer +GpiSendOrBufferStringLenToPeer: ; 0x02302784 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov sb, r0 + ldr r4, [sb] + movs r6, r3 + mov r5, #0 + mov r8, r1 + mov r7, r2 + addeq sp, sp, #8 + moveq r0, r5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r1, [r8, #0x34] + ldr r0, [r8, #0x38] + subs r0, r1, r0 + bne _02302850 + ldr r0, [r8, #0x3c] + bl ArrayLength_Gsi + cmp r0, #0 + bne _02302850 + ldrh r1, [r8, #0xc] + ldr r0, [r8, #8] + bl GsUdpEngineGetPeerOutBufferFreeSpace + sub r0, r0, #0x17 + cmp r6, r0 + bgt _02302814 + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrh r1, [r8, #0xc] + ldr r0, [r8, #8] + mov r3, r7 + add r2, r4, #0x220 + bl GsUdpEngineSendMessage + mov r5, r6 + mov r6, #0 + b _02302850 +_02302814: + ldrh r1, [r8, #0xc] + ldr r0, [r8, #8] + bl GsUdpEngineGetPeerOutBufferFreeSpace + cmp r0, #0x17 + bls _02302850 + sub r5, r0, #0x17 + str r5, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrh r1, [r8, #0xc] + ldr r0, [r8, #8] + mov r3, r7 + add r2, r4, #0x220 + bl GsUdpEngineSendMessage + sub r6, r6, r5 +_02302850: + cmp r6, #0 + beq _02302878 + mov r0, sb + mov r3, r6 + add r1, r8, #0x2c + add r2, r7, r5 + bl GpiAppendStringToBufferLen + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02302878: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end GpiSendOrBufferStringLenToPeer + + arm_func_start GpiSendOrBufferString +GpiSendOrBufferString: ; 0x02302884 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov r0, r4 + bl strlen + mov r3, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GpiSendOrBufferStringLenToPeer + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiSendOrBufferString + + arm_func_start GpiRecvToBuffer +GpiRecvToBuffer: ; 0x023028B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + str r0, [sp] + mvn r0, #0 + str r0, [sp, #8] + sub r0, r0, #0x4b + str r0, [sp, #0x14] + ldr r0, [sp, #8] + mov fp, r2 + sub r0, r0, #0x19 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + mov r8, #0 + sub r0, r0, #5 + ldr r5, [fp, #8] + ldmia fp, {r4, r6} + mov sl, r1 + str r3, [sp, #4] + mov sb, r8 + str r0, [sp, #0xc] +_02302904: + add r0, r5, #0x800 + cmp r0, r6 + ble _02302944 + mov r6, r0 + add r1, r0, #1 + mov r0, r4 + bl gsirealloc + movs r4, r0 + bne _02302940 + ldr r1, _023029FC ; =ov00_0231AFB0 + ldr r0, [sp] + bl GpiSetErrorString + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02302940: + stmia fp, {r4, r6} +_02302944: + mov r0, sl + add r1, r4, r5 + sub r2, r6, r5 + mov r3, #0 + bl SocketRecv + mov r7, r0 + ldr r0, [sp, #8] + cmp r7, r0 + bne _023029A4 + mov r0, sl + bl GoaGetLastError + ldr r1, [sp, #0xc] + cmp r0, r1 + ldrne r1, [sp, #0x10] + cmpne r0, r1 + ldrne r1, [sp, #0x14] + cmpne r0, r1 + beq _023029B4 + ldr r1, _02302A00 ; =ov00_0231AFEC + ldr r0, [sp] + bl GpiSetErrorString + add sp, sp, #0x18 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023029A4: + cmp r7, #0 + moveq sb, #1 + addne r5, r5, r7 + addne r8, r8, r7 +_023029B4: + mov r0, #0 + cmp r7, #0 + strb r0, [r4, r5] + blt _023029D4 + cmp sb, #0 + bne _023029D4 + cmp r8, #0x20000 + blt _02302904 +_023029D4: + str r4, [fp] + str r5, [fp, #8] + ldr r0, [sp, #4] + str r6, [fp, #4] + str r8, [r0] + ldr r1, [sp, #0x40] + mov r0, #0 + str sb, [r1] + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023029FC: .word ov00_0231AFB0 +_02302A00: .word ov00_0231AFEC + arm_func_end GpiRecvToBuffer + + arm_func_start GpiSendFromBuffer +GpiSendFromBuffer: ; 0x02302A04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov sl, r0 + mov r0, r2 + ldr fp, [r2, #8] + ldr r7, [r2, #0xc] + ldr r8, [sp, #0x44] + ldr r6, [r0] + str r2, [sp, #0xc] + mov sb, r1 + str r3, [sp, #0x10] + subs r5, fp, r7 + mov r4, #0 + addeq sp, sp, #0x1c + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02302A44: + add r0, sp, #0x18 + str r0, [sp] + add r1, r7, r4 + add r0, sp, #0x14 + str r0, [sp, #4] + add r2, r6, r1 + mov r0, sl + mov r1, sb + mov r3, r5 + str r8, [sp, #8] + bl GpiSendData + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x14] + cmp r0, #0 + subne r5, r5, r0 + addne r4, r4, r0 + cmp r0, #0 + cmpne r5, #0 + bne _02302A44 + ldr r0, [sp, #0x40] + cmp r0, #0 + beq _02302AC4 + cmp r4, #0 + ble _02302AC8 + mov r0, r6 + add r1, r6, r4 + add r2, r5, #1 + bl memmove + sub fp, fp, r4 + b _02302AC8 +_02302AC4: + add r7, r7, r4 +_02302AC8: + ldr r0, [sp, #0xc] + str fp, [r0, #8] + str r7, [r0, #0xc] + ldr r0, [sp, #0x10] + cmp r0, #0 + ldrne r1, [sp, #0x18] + strne r1, [r0] + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GpiSendFromBuffer + + arm_func_start GpiSendBufferToPeer +GpiSendBufferToPeer: ; 0x02302AF0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + str r3, [sp, #8] + ldr r3, [r3, #8] + mov sl, r1 + str r3, [sp, #0xc] + ldr r3, [sp, #8] + ldr r1, [sp, #0xc] + ldr r6, [r3, #0xc] + ldr fp, [r0] + subs r4, r1, r6 + ldr r1, [sp, #0x38] + mov r0, r3 + str r1, [sp, #0x38] + ldr r5, [r0] + mov r7, #0 + mov sb, r2 + addeq sp, sp, #0x14 + moveq r0, r7 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GsUdpEngineGetPeerOutBufferFreeSpace + sub r0, r0, #0x17 + cmp r4, r0 + bgt _02302B84 + mov r0, sl + mov r1, sb + str r4, [sp] + mov r7, #1 + add r2, fp, #0x220 + add r3, r5, r6 + str r7, [sp, #4] + bl GsUdpEngineSendMessage + mov r7, r4 + mov r4, #0 + b _02302BD4 +_02302B84: + mov r0, sl + mov r1, sb + bl GsUdpEngineGetPeerOutBufferFreeSpace + sub r8, r0, #0x17 + cmp r8, #0x17 + bls _02302BD4 + add r1, r6, r7 + add r3, r5, r1 + str r8, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, sl + mov r1, sb + add r2, fp, #0x220 + bl GsUdpEngineSendMessage + cmp r0, #8 + beq _02302BD4 + add r7, r7, r8 + subs r4, r4, r8 + bne _02302B84 +_02302BD4: + ldr r0, [sp, #0x3c] + cmp r0, #0 + beq _02302C08 + cmp r7, #0 + beq _02302C0C + mov r0, r5 + add r1, r5, r7 + add r2, r4, #1 + bl memmove + ldr r0, [sp, #0xc] + sub r0, r0, r7 + str r0, [sp, #0xc] + b _02302C0C +_02302C08: + add r6, r6, r7 +_02302C0C: + ldr r1, [sp, #0xc] + ldr r0, [sp, #8] + ldr r3, [sp, #8] + str r1, [r0, #8] + add r2, sp, #0x10 + mov r0, sl + mov r1, sb + str r6, [r3, #0xc] + bl GsUdpEngineGetPeerState + ldr r0, [sp, #0x10] + cmp r0, #3 + ldreq r0, [sp, #0x38] + moveq r1, #1 + ldrne r0, [sp, #0x38] + movne r1, #0 + str r1, [r0] + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GpiSendBufferToPeer + + arm_func_start GpiReadMessageFromBuffer +GpiReadMessageFromBuffer: ; 0x02302C58 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r5, r2 + mov r0, #0 + mov r6, r1 + str r0, [r5] + ldr r1, [r6, #8] + mov r7, r3 + cmp r1, #5 + addlt sp, sp, #0x10 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6] + mov r1, #0xa + bl strchr + movs r4, r0 + beq _02302D7C + ldr r1, _02302D88 ; =ov00_0231B018 + sub r0, r4, #5 + mov r2, #5 + bl strncmp + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + strb r0, [r4] + ldr r0, [r6] + ldr r1, _02302D8C ; =ov00_0231B020 + add r2, sp, #0 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r0, sp, #0 + bl atoi + str r0, [r7] + ldr r0, [r6] + ldr r1, _02302D90 ; =ov00_0231B024 + add r2, sp, #0 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r0, sp, #0 + bl atoi + ldr r2, [r6] + add r1, r0, #1 + sub r2, r4, r2 + ldr r3, [r6, #8] + add r2, r1, r2 + cmp r3, r2 + ble _02302D74 + ldrsb r2, [r4, r1] + cmp r2, #0 + addne sp, sp, #0x10 + movne r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + add r3, r4, #1 + ldr r2, [sp, #0x28] + str r3, [r5] + str r0, [r2] + ldr r0, [r6] + sub r0, r4, r0 + add r0, r1, r0 + add r0, r0, #1 + str r0, [r6, #0xc] + b _02302D7C +_02302D74: + mov r0, #0xa + strb r0, [r4] +_02302D7C: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02302D88: .word ov00_0231B018 +_02302D8C: .word ov00_0231B020 +_02302D90: .word ov00_0231B024 + arm_func_end GpiReadMessageFromBuffer + + arm_func_start GpiClipBufferToPosition +GpiClipBufferToPosition: ; 0x02302D94 + stmdb sp!, {r4, lr} + movs r4, r1 + ldrne r0, [r4] + cmpne r0, #0 + ldrne r1, [r4, #0xc] + cmpne r1, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #8] + subs r2, r0, r1 + str r2, [r4, #8] + beq _02302DD4 + ldr r0, [r4] + ldr r1, [r4, #0xc] + add r1, r0, r1 + bl memmove +_02302DD4: + ldr r2, [r4] + ldr r1, [r4, #8] + mov r0, #0 + strb r0, [r2, r1] + str r0, [r4, #0xc] + ldmia sp!, {r4, pc} + arm_func_end GpiClipBufferToPosition + + arm_func_start GpiCallErrorCallback +GpiCallErrorCallback: ; 0x02302DEC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r6, r2 + cmp r6, #1 + ldr r5, [r4] + moveq r0, #1 + streq r0, [r5, #0x5bc] + mov r7, r1 + ldr r1, [r5, #0x1a8] + ldr r0, [r5, #0x1ac] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0x10 + bl gsimalloc + movs r3, r0 + beq _02302E4C + str r7, [r3] + str r6, [r3, #0xc] + ldr r0, [r5, #0x5b8] + stmib r3, {r0, r5} +_02302E4C: + mov r2, #0 + str r2, [sp] + mov r2, #1 + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GpiCallErrorCallback + + arm_func_start GpiAddCallback +GpiAddCallback: ; 0x02302E74 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #0x18 + mov r5, r3 + ldr r4, [r6] + bl gsimalloc + cmp r0, #0 + bne _02302EB4 + ldr r1, _02302F14 ; =ov00_0231B02C + mov r0, r6 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_02302EB4: + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + str r1, [r0] + ldr r1, [sp, #0x20] + stmib r0, {r2, r5} + cmp r1, #0 + ldrne r1, [r1, #0x18] + ldr r2, [sp, #0x24] + moveq r1, #0 + str r1, [r0, #0x10] + mov r1, #0 + str r2, [r0, #0xc] + str r1, [r0, #0x14] + ldr r1, [r4, #0x5d8] + cmp r1, #0 + streq r0, [r4, #0x5d8] + ldr r1, [r4, #0x5dc] + cmp r1, #0 + strne r0, [r1, #0x14] + str r0, [r4, #0x5dc] + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02302F14: .word ov00_0231B02C + arm_func_end GpiAddCallback + + arm_func_start GpiCallCallback +GpiCallCallback: ; 0x02302F18 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r4, r1 + ldr r1, [r4, #8] + ldr r2, [r4, #4] + ldr r3, [r4] + mov r5, r0 + blx r3 + ldr r0, [r4, #0xc] + cmp r0, #2 + bne _02302F5C + ldr r0, [r4, #8] + ldr r0, [r0, #8] + bl gsifree + ldr r0, [r4, #8] + mov r1, #0 + str r1, [r0, #8] + b _02303194 +_02302F5C: + cmp r0, #0xb + bne _02302F80 + ldr r0, [r4, #8] + ldr r0, [r0, #8] + bl gsifree + ldr r0, [r4, #8] + mov r1, #0 + str r1, [r0, #8] + b _02303194 +_02302F80: + cmp r0, #3 + bne _02303000 + ldr r7, [r4, #8] + mov r6, #0 + ldr r0, [r7, #0x38] + cmp r0, #0 + ble _02302FDC + mov r5, r6 + mov r8, r6 +_02302FA4: + ldr r0, [r7, #0x3c] + ldr r0, [r0, r6, lsl #2] + bl gsifree + ldr r0, [r7, #0x3c] + str r5, [r0, r6, lsl #2] + ldr r0, [r7, #0x40] + ldr r0, [r0, r6, lsl #2] + bl gsifree + ldr r0, [r7, #0x40] + str r8, [r0, r6, lsl #2] + ldr r0, [r7, #0x38] + add r6, r6, #1 + cmp r6, r0 + blt _02302FA4 +_02302FDC: + ldr r0, [r7, #0x3c] + bl gsifree + mov r0, #0 + str r0, [r7, #0x3c] + ldr r0, [r7, #0x40] + bl gsifree + mov r0, #0 + str r0, [r7, #0x40] + b _02303194 +_02303000: + cmp r0, #4 + bne _02303020 + ldr r5, [r4, #8] + ldr r0, [r5, #0xc] + bl gsifree + mov r0, #0 + str r0, [r5, #0xc] + b _02303194 +_02303020: + cmp r0, #7 + bne _02303048 + ldr r5, [r4, #8] + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _02303194 + bl gsifree + mov r0, #0 + str r0, [r5, #0x10] + b _02303194 +_02303048: + cmp r0, #8 + bne _02303070 + ldr r5, [r4, #8] + ldr r0, [r5, #8] + cmp r0, #0 + beq _02303194 + bl gsifree + mov r0, #0 + str r0, [r5, #8] + b _02303194 +_02303070: + cmp r0, #9 + bne _023030C8 + ldr r6, [r4, #8] + mov r5, #0 + ldr r0, [r6, #4] + cmp r0, #0 + ble _023030B4 + mov r7, r5 +_02303090: + ldr r0, [r6, #8] + ldr r0, [r0, r5, lsl #2] + bl gsifree + ldr r0, [r6, #8] + str r7, [r0, r5, lsl #2] + ldr r0, [r6, #4] + add r5, r5, #1 + cmp r5, r0 + blt _02303090 +_023030B4: + ldr r0, [r6, #8] + bl gsifree + mov r0, #0 + str r0, [r6, #8] + b _02303194 +_023030C8: + cmp r0, #0xc + bne _023030E8 + ldr r1, [r4, #8] + mov r0, r5 + ldr r1, [r1] + mov r2, #0 + bl GpiDeleteBuddy + b _02303194 +_023030E8: + cmp r0, #0xd + bne _02303110 + ldr r5, [r4, #8] + ldr r0, [r5, #8] + cmp r0, #0 + beq _02303194 + bl gsifree + mov r0, #0 + str r0, [r5, #8] + b _02303194 +_02303110: + cmp r0, #0xe + bne _02303194 + ldr r6, [r4, #8] + ldr r0, [r6, #0xc] + cmp r0, #0 + beq _02303194 + cmp r0, #0 + mov r7, #0 + ble _02303174 + mov r5, r7 + mov r8, r7 +_0230313C: + ldr r0, [r6, #4] + ldr r0, [r0, r7, lsl #2] + bl gsifree + ldr r0, [r6, #4] + str r5, [r0, r7, lsl #2] + ldr r0, [r6, #8] + ldr r0, [r0, r7, lsl #2] + bl gsifree + ldr r0, [r6, #8] + str r8, [r0, r7, lsl #2] + ldr r0, [r6, #0xc] + add r7, r7, #1 + cmp r7, r0 + blt _0230313C +_02303174: + ldr r0, [r6, #4] + bl gsifree + mov r0, #0 + str r0, [r6, #4] + ldr r0, [r6, #8] + bl gsifree + mov r0, #0 + str r0, [r6, #8] +_02303194: + ldr r0, [r4, #8] + bl gsifree + mov r1, #0 + mov r0, r4 + str r1, [r4, #8] + bl gsifree + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end GpiCallCallback + + arm_func_start GpiProcessCallbacks +GpiProcessCallbacks: ; 0x023031B0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + movs sb, r1 + ldr r4, [sl] + beq _0230324C + ldr r5, [r4, #0x5d8] + ldr r6, [r4, #0x5dc] + mov r7, #0 + str r7, [r4, #0x5d8] + mov r1, r5 + str r7, [r4, #0x5dc] + cmp r5, #0 + beq _0230322C +_023031E4: + ldr r0, [r1, #0x10] + ldr r8, [r1, #0x14] + cmp r0, sb + ldrne r0, [r1, #0xc] + cmpne r0, #1 + bne _0230321C + mov r0, sl + cmp r7, #0 + strne r8, [r7, #0x14] + moveq r5, r8 + cmp r6, r1 + moveq r6, r7 + bl GpiCallCallback + b _02303220 +_0230321C: + mov r7, r1 +_02303220: + mov r1, r8 + cmp r8, #0 + bne _023031E4 +_0230322C: + ldr r0, [r4, #0x5d8] + cmp r0, #0 + ldrne r0, [r4, #0x5dc] + strne r5, [r0, #0x14] + streq r5, [r4, #0x5d8] + str r6, [r4, #0x5dc] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230324C: + ldr r1, [r4, #0x5d8] + cmp r1, #0 + beq _02303290 + mov r5, #0 +_0230325C: + str r5, [r4, #0x5d8] + str r5, [r4, #0x5dc] + cmp r1, #0 + beq _02303284 +_0230326C: + ldr r6, [r1, #0x14] + mov r0, sl + bl GpiCallCallback + mov r1, r6 + cmp r6, #0 + bne _0230326C +_02303284: + ldr r1, [r4, #0x5d8] + cmp r1, #0 + bne _0230325C +_02303290: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end GpiProcessCallbacks + + arm_func_start RandomString +RandomString: ; 0x02303298 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov sb, r0 + cmp r8, #0 + mov r7, #0 + ble _023032EC + ldr r6, _023032F8 ; =ov00_0231B07C + ldr r5, _023032FC ; =0x08421085 + mov r4, #0x3e +_023032BC: + bl rand + umull r1, r2, r0, r5 + sub r1, r0, r2 + add r2, r2, r1, lsr #1 + mov r2, r2, lsr #5 + umull r1, r2, r4, r2 + sub r2, r0, r1 + ldrsb r0, [r6, r2] + strb r0, [sb, r7] + add r7, r7, #1 + cmp r7, r8 + blt _023032BC +_023032EC: + mov r0, #0 + strb r0, [sb, r7] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023032F8: .word ov00_0231B07C +_023032FC: .word 0x08421085 + arm_func_end RandomString + + arm_func_start GpiStartConnect +GpiStartConnect: ; 0x02303300 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x24 + mov r7, r0 + ldr r4, [r7] + mov r6, r1 + ldr r1, _0230362C ; =ov00_0231B0BC + add r0, r4, #0x220 + mov r2, #0x10 + bl strncpy + bl GsUdpEngineIsInitialized + cmp r0, #0 + bne _0230340C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + ldr r5, _02303630 ; =0x00001964 + str r1, [sp, #0x10] + str r1, [sp, #0x14] + mov r0, r5 + mov r2, r1 + mov r3, r1 + str r1, [sp, #0x18] + bl GsUdpEngineInitialize + cmp r0, #0 + beq _023033F8 + mov sb, #0 + add r8, r5, #0x64 + b _023033B4 +_02303378: + str sb, [sp] + str sb, [sp, #4] + str sb, [sp, #8] + add r0, r5, #1 + str sb, [sp, #0xc] + mov r0, r0, lsl #0x10 + str sb, [sp, #0x10] + mov r5, r0, lsr #0x10 + str sb, [sp, #0x14] + mov r0, r5 + mov r1, sb + mov r2, sb + mov r3, sb + str sb, [sp, #0x18] + bl GsUdpEngineInitialize +_023033B4: + cmp r0, #0 + beq _023033C4 + cmp r5, r8 + blo _02303378 +_023033C4: + cmp r0, #0 + beq _023033F8 + ldr r2, _02303634 ; =ov00_0231B0C8 + mov r0, r7 + mov r1, #8 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x24 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_023033F8: + ldr r0, [r4, #0x10c] + cmp r0, #0 + addeq r0, r4, #0x200 + streqh r5, [r0, #0x30] + b _02303418 +_0230340C: + bl GsUdpEngineGetLocalPort + add r1, r4, #0x200 + strh r0, [r1, #0x30] +_02303418: + ldr r0, _02303638 ; =GpiPeerLeftCallback + ldr r1, _0230363C ; =GpiPeerPingReplyCallback + str r0, [sp] + ldr r0, _02303640 ; =GpiPeerMessageCallback + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0x220 + ldr r3, _02303644 ; =GpiPeerAcceptedCallback + mov r1, r0 + mov r2, #0 + str r7, [sp, #0xc] + bl GsUdpEngineAddMsgHandler + cmp r0, #0 + beq _0230347C + ldr r2, _02303648 ; =ov00_0231B0F0 + mov r0, r7 + mov r1, #8 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x24 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0230347C: + ldr r0, [r4, #0x10c] + mov r2, #0 + cmp r0, #0 + addne r0, r4, #0x200 + movne r1, #0 + strneh r1, [r0, #0x30] + mov r0, #2 + mov r1, #1 + bl SocketCreate + mvn r1, #0 + str r0, [r4, #0x1f0] + cmp r0, r1 + bne _023034DC + ldr r2, _0230364C ; =ov00_0231B11C + mov r0, r7 + mov r1, #5 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x24 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_023034DC: + mov r1, #0 + bl SocketSetBlocking + cmp r0, #0 + bne _02303518 + ldr r2, _02303650 ; =ov00_0231B144 + mov r0, r7 + mov r1, #5 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x24 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02303518: + add r3, sp, #0x1c + mov r2, #0 + ldr r0, _02303654 ; =ov00_0231B03C + str r2, [r3] + mov r1, #2 + str r2, [r3, #4] + strb r1, [sp, #0x1d] + bl inet_addr_gsi + mvn r1, #0 + cmp r0, r1 + bne _02303594 + ldr r0, _02303654 ; =ov00_0231B03C + bl Soc_GetHostByName + cmp r0, #0 + bne _02303580 + ldr r2, _02303658 ; =ov00_0231B178 + mov r0, r7 + mov r1, #5 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x24 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02303580: + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [sp, #0x20] + b _023035A0 +_02303594: + ldr r0, _02303654 ; =ov00_0231B03C + bl inet_addr_gsi + str r0, [sp, #0x20] +_023035A0: + ldr r0, _0230365C ; =0x0000CC74 + add r1, sp, #0x1c + strh r0, [sp, #0x1e] + ldr r0, [r4, #0x1f0] + mov r2, #8 + bl SocketConnect + mvn r1, #0 + cmp r0, r1 + bne _02303614 + ldr r0, [r4, #0x1f0] + bl GoaGetLastError + mvn r2, #5 + cmp r0, r2 + subne r1, r2, #0x14 + cmpne r0, r1 + subne r1, r2, #0x46 + cmpne r0, r1 + beq _02303614 + ldr r2, _02303660 ; =ov00_0231B1AC + mov r0, r7 + mov r1, #5 + bl GpiSetError + mov r0, r7 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x24 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02303614: + mov r0, #1 + str r0, [r6, #0x14] + str r0, [r4, #0x1f4] + mov r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230362C: .word ov00_0231B0BC +_02303630: .word 0x00001964 +_02303634: .word ov00_0231B0C8 +_02303638: .word GpiPeerLeftCallback +_0230363C: .word GpiPeerPingReplyCallback +_02303640: .word GpiPeerMessageCallback +_02303644: .word GpiPeerAcceptedCallback +_02303648: .word ov00_0231B0F0 +_0230364C: .word ov00_0231B11C +_02303650: .word ov00_0231B144 +_02303654: .word ov00_0231B03C +_02303658: .word ov00_0231B178 +_0230365C: .word 0x0000CC74 +_02303660: .word ov00_0231B1AC + arm_func_end GpiStartConnect + + arm_func_start GpiConnect +GpiConnect: ; 0x02303664 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r4, [r8] + mov r7, r1 + ldr r1, [r4, #0x1f4] + mov r6, r2 + mov r5, r3 + cmp r1, #4 + bne _0230369C + bl GpiReset + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_0230369C: + ldr r0, [r4, #0x1f4] + cmp r0, #0 + beq _023036C0 + ldr r1, _02303858 ; =ov00_0231B1D4 + mov r0, r8 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023036C0: + mov r3, #1 + mov r1, r7 + add r0, r4, #0x110 + mov r2, #0x1f + str r3, [r4, #0x10c] + bl strzcpy_gsi + add r0, r4, #0x2f + mov r1, r6 + add r0, r0, #0x100 + mov r2, #0x15 + bl strzcpy_gsi + mov r1, r5 + add r0, r4, #0x144 + mov r2, #0x33 + bl strzcpy_gsi + add r0, r4, #0x77 + ldr r1, [sp, #0x28] + add r0, r0, #0x100 + mov r2, #0x1f + bl strzcpy_gsi + add r0, r4, #0x144 + bl strlwr + mov r0, #0x308 + bl gsimalloc + movs r4, r0 + bne _02303740 + ldr r1, _0230385C ; =ov00_0231B1E8 + mov r0, r8 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02303740: + mov r1, #0 + mov r2, #0x308 + bl memset + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x2c] + str r0, [r4, #0x304] + ldrsb r0, [r1] + cmp r0, #0 + ldrne r0, [sp, #0x30] + ldrnesb r0, [r0] + cmpne r0, #0 + beq _02303790 + add r0, r4, #0xc2 + mov r2, #0x100 + bl strzcpy_gsi + add r0, r4, #0xc2 + ldr r1, [sp, #0x30] + add r0, r0, #0x100 + mov r2, #0x100 + bl strzcpy_gsi +_02303790: + ldr r1, [sp, #0x34] + cmp r1, #0 + beq _023037AC + add r0, r4, #0xc2 + add r0, r0, #0x200 + mov r2, #0x41 + bl strzcpy_gsi +_023037AC: + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x44] + str r1, [sp] + str r0, [sp, #4] + ldr r5, [sp, #0x48] + add r3, sp, #0xc + mov r0, r8 + mov r2, r4 + mov r1, #0 + str r5, [sp, #8] + bl GpiAddOperation + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0xc] + mov r0, r8 + bl GpiStartConnect + movs r4, r0 + beq _02303824 + ldr r1, [sp, #0xc] + mov r0, r8 + str r4, [r1, #0x1c] + ldr r1, [sp, #0xc] + bl GpiFailedOpCallback + mov r0, r8 + mov r1, #0 + bl GpiDisconnect + add sp, sp, #0x10 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02303824: + ldr r1, [sp, #0xc] + ldr r0, [r1, #8] + cmp r0, #0 + beq _0230384C + ldr r1, [r1, #0x18] + mov r0, r8 + bl GpiProcess + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_0230384C: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02303858: .word ov00_0231B1D4 +_0230385C: .word ov00_0231B1E8 + arm_func_end GpiConnect + + arm_func_start GpiSendLogin +GpiSendLogin: ; 0x02303860 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x294 + mov r5, r1 + mov r6, r0 + add r0, r5, #0x80 + mov r1, #0x20 + ldr r4, [r6] + bl RandomString + add r0, r5, #0x100 + ldrsb r0, [r0, #0xc2] + cmp r0, #0 + addne r0, r5, #0xc2 + addeq r0, r4, #0x77 + add r7, r0, #0x100 + mov r0, r7 + bl strlen + mov r1, r0 + mov r0, r7 + add r2, r5, #0xa1 + bl MD5Digest_Gsi + ldr r2, [r4, #0x1a4] + cmp r2, #0 + beq _023038CC + ldr r1, _02303C30 ; =ov00_0231B1F8 + add r0, sp, #0x14 + bl OS_VsPrintf + b _023038DC +_023038CC: + ldr r0, _02303C34 ; =ov00_0231B1FC + add r1, sp, #0x14 + ldrb r0, [r0] + strb r0, [r1] +_023038DC: + ldrsb r0, [r5, #0xc2] + cmp r0, #0 + addne r0, r5, #0xc2 + bne _02303934 + add r0, r4, #0x100 + ldrsb r0, [r0, #0x2f] + add r2, sp, #0x14 + cmp r0, #0 + add r0, sp, #0x40 + beq _0230391C + add r3, r4, #0x2f + ldr r1, _02303C38 ; =ov00_0231B200 + add r3, r3, #0x100 + bl OS_VsPrintf + add r0, sp, #0x40 + b _02303934 +_0230391C: + ldr r1, _02303C3C ; =ov00_0231B208 + add ip, r4, #0x144 + add r3, r4, #0x110 + str ip, [sp] + bl OS_VsPrintf + add r0, sp, #0x40 +_02303934: + str r0, [sp] + add r0, r5, #0x80 + str r0, [sp, #4] + ldr r1, _02303C40 ; =ov00_0231B210 + ldr r3, _02303C44 ; =ov00_0231B220 + add r0, sp, #0x92 + str r5, [sp, #8] + add r2, r5, #0xa1 + str r2, [sp, #0xc] + bl OS_VsPrintf + add r0, sp, #0x92 + bl strlen + mov r1, r0 + add r0, sp, #0x92 + add r2, sp, #0x1f + bl MD5Digest_Gsi + ldr r0, [r4, #0x100] + cmp r0, #0 + beq _023039B4 + add r3, sp, #0x10 + mov r0, r6 + add r1, r4, #0x110 + add r2, r4, #0x144 + bl GpiFindProfileByUser + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _023039B4 + ldr r0, [r0, #4] + str r0, [r4, #0x19c] + ldr r0, [sp, #0x10] + ldr r0, [r0] + str r0, [r4, #0x1a0] +_023039B4: + ldr r2, _02303C48 ; =ov00_0231B254 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _02303C4C ; =ov00_0231B25C + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + add r2, r5, #0x80 + bl GpiAppendStringToBuffer + ldrsb r0, [r5, #0xc2] + cmp r0, #0 + beq _02303A14 + ldr r2, _02303C50 ; =ov00_0231B268 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + add r2, r5, #0xc2 + bl GpiAppendStringToBuffer + b _02303A8C +_02303A14: + add r0, r4, #0x100 + ldrsb r0, [r0, #0x2f] + cmp r0, #0 + beq _02303A4C + ldr r2, _02303C54 ; =ov00_0231B274 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + add r2, r4, #0x2f + mov r0, r6 + add r1, r4, #0x210 + add r2, r2, #0x100 + bl GpiAppendStringToBuffer + b _02303A8C +_02303A4C: + ldr r2, _02303C58 ; =ov00_0231B284 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + add r2, r4, #0x110 + bl GpiAppendStringToBuffer + ldr r2, _02303C5C ; =ov00_0231B28C + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + add r2, r4, #0x144 + bl GpiAppendStringToBuffer +_02303A8C: + ldr r0, [r4, #0x19c] + cmp r0, #0 + beq _02303AB8 + ldr r2, _02303C60 ; =ov00_0231B290 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x19c] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer +_02303AB8: + ldr r0, [r4, #0x1a0] + cmp r0, #0 + beq _02303AE4 + ldr r2, _02303C64 ; =ov00_0231B29C + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x1a0] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer +_02303AE4: + ldr r2, _02303C68 ; =ov00_0231B2A8 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x1a4] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02303C6C ; =ov00_0231B2B4 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + add r2, sp, #0x1f + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r0, [r4, #0x10c] + cmp r0, #1 + bne _02303B40 + ldr r2, _02303C70 ; =ov00_0231B2C0 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer +_02303B40: + ldr r2, _02303C74 ; =ov00_0231B2CC + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + add r0, r4, #0x200 + ldrh r2, [r0, #0x30] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02303C78 ; =ov00_0231B2D4 + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x608] + mov r0, r6 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C7C ; =ov00_0231B2E0 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C80 ; =ov00_02328804 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C84 ; =ov00_0231B2EC + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, [r4, #0x60c] + bl GpiAppendIntToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C88 ; =ov00_0231B2FC + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + mov r2, #3 + bl GpiAppendIntToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C8C ; =ov00_0231B30C + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, [r4, #0x62c] + bl GpiAppendIntToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C90 ; =ov00_0231B314 + bl GpiAppendStringToBuffer + mov r0, r6 + add r1, r4, #0x210 + ldr r2, _02303C94 ; =ov00_0231B31C + bl GpiAppendStringToBuffer + mov r0, #0 + add sp, sp, #0x294 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02303C30: .word ov00_0231B1F8 +_02303C34: .word ov00_0231B1FC +_02303C38: .word ov00_0231B200 +_02303C3C: .word ov00_0231B208 +_02303C40: .word ov00_0231B210 +_02303C44: .word ov00_0231B220 +_02303C48: .word ov00_0231B254 +_02303C4C: .word ov00_0231B25C +_02303C50: .word ov00_0231B268 +_02303C54: .word ov00_0231B274 +_02303C58: .word ov00_0231B284 +_02303C5C: .word ov00_0231B28C +_02303C60: .word ov00_0231B290 +_02303C64: .word ov00_0231B29C +_02303C68: .word ov00_0231B2A8 +_02303C6C: .word ov00_0231B2B4 +_02303C70: .word ov00_0231B2C0 +_02303C74: .word ov00_0231B2CC +_02303C78: .word ov00_0231B2D4 +_02303C7C: .word ov00_0231B2E0 +_02303C80: .word ov00_02328804 +_02303C84: .word ov00_0231B2EC +_02303C88: .word ov00_0231B2FC +_02303C8C: .word ov00_0231B30C +_02303C90: .word ov00_0231B314 +_02303C94: .word ov00_0231B31C + arm_func_end GpiSendLogin + + arm_func_start GpiSendNewuser +GpiSendNewuser: ; 0x02303C98 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc8 + mov sl, r0 + ldr r5, [sl] + mov sb, r1 + add r0, r5, #0x77 + add r1, sp, #0 + add r0, r0, #0x100 + bl PasswordEncryptString + ldr r2, _02303EA8 ; =ov00_0231B324 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _02303EAC ; =ov00_0231B330 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r5, #0x210 + add r2, r5, #0x144 + bl GpiAppendStringToBuffer + ldr r2, _02303EB0 ; =ov00_0231B338 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r5, #0x210 + add r2, r5, #0x110 + bl GpiAppendStringToBuffer + ldr r2, _02303EB4 ; =ov00_0231B340 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r5, #0x210 + add r2, sp, #0 + bl GpiAppendStringToBuffer + ldr r2, _02303EB8 ; =ov00_0231B2D4 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r5, #0x608] + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02303EBC ; =ov00_0231B2E0 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _02303EC0 ; =ov00_02328804 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _02303EC4 ; =ov00_0231B2EC + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r5, #0x60c] + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02303EC8 ; =ov00_0231B274 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + add r2, r5, #0x2f + mov r0, sl + add r1, r5, #0x210 + add r2, r2, #0x100 + bl GpiAppendStringToBuffer + add r0, sb, #0x200 + ldrsb r0, [r0, #0xc2] + cmp r0, #0 + beq _02303E5C + add r0, sb, #0xc2 + add r0, r0, #0x200 + bl strlen + mov r7, r0 + ldr r0, _02303ECC ; =0x79707367 + bl Util_RandSeed + cmp r7, #0 + mov r6, #0 + bls _02303E20 + add r8, sp, #0x87 + mov r4, r6 + mov fp, #0xff +_02303DF0: + mov r0, r4 + mov r1, fp + bl RandRangeOverlay0 + add r1, sb, r6 + add r1, r1, #0x200 + add r6, r6, #1 + ldrsb r1, [r1, #0xc2] + mov r0, r0, lsl #0x18 + cmp r6, r7 + eor r0, r1, r0, asr #24 + strb r0, [r8], #1 + blo _02303DF0 +_02303E20: + add r0, sp, #0x87 + mov r4, #0 + add r1, sp, #0x2d + mov r2, r7 + mov r3, #1 + strb r4, [r0, r6] + bl B64Encode + ldr r2, _02303ED0 ; =ov00_0231B350 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + add r2, sp, #0x2d + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer +_02303E5C: + ldr r2, _02303ED4 ; =ov00_0231B2A8 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r5, #0x1a4] + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02303ED8 ; =ov00_0231B314 + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + ldr r2, _02303EDC ; =ov00_0231B31C + mov r0, sl + add r1, r5, #0x210 + bl GpiAppendStringToBuffer + mov r0, #0 + add sp, sp, #0xc8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02303EA8: .word ov00_0231B324 +_02303EAC: .word ov00_0231B330 +_02303EB0: .word ov00_0231B338 +_02303EB4: .word ov00_0231B340 +_02303EB8: .word ov00_0231B2D4 +_02303EBC: .word ov00_0231B2E0 +_02303EC0: .word ov00_02328804 +_02303EC4: .word ov00_0231B2EC +_02303EC8: .word ov00_0231B274 +_02303ECC: .word 0x79707367 +_02303ED0: .word ov00_0231B350 +_02303ED4: .word ov00_0231B2A8 +_02303ED8: .word ov00_0231B314 +_02303EDC: .word ov00_0231B31C + arm_func_end GpiSendNewuser + + arm_func_start GpiProcessConnect +GpiProcessConnect: ; 0x02303EE0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x2ac + mov r6, r2 + mov r8, r0 + mov r7, r1 + mov r1, r6 + mov r2, #0 + ldr r5, [r8] + bl GpiCheckForError + cmp r0, #0 + beq _02303FA0 + ldr r2, [r5, #0x5b8] + ldr r0, _02304558 ; =0x00000106 + cmp r2, r0 + bne _02303F40 + ldr r1, [r5, #0x1a0] + cmp r1, #0 + beq _02303F40 + mov r0, r8 + bl GpiRemoveProfileByID + mov r0, #0 + str r0, [r5, #0x19c] + str r0, [r5, #0x1a0] + b _02303F74 +_02303F40: + ldr r0, _0230455C ; =0x00000201 + cmp r2, r0 + bne _02303F74 + ldr r1, _02304560 ; =ov00_0231B35C + add r2, sp, #0xab + mov r0, r6 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + beq _02303F74 + add r0, sp, #0xab + bl atoi + str r0, [r5, #0x1a0] +_02303F74: + ldr r1, [r5, #0x5b8] + mov r0, r8 + mov r2, r5 + bl GpiSetError + mov r0, r8 + mov r1, #4 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02303FA0: + ldr r0, [r7, #0x14] + ldr r4, [r7, #4] + cmp r0, #1 + beq _02303FC4 + cmp r0, #2 + beq _023041AC + cmp r0, #3 + beq _0230409C + b _0230454C +_02303FC4: + ldr r1, _02304564 ; =ov00_0231B364 + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _02304008 + ldr r2, _02304568 ; =ov00_0231B36C + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304008: + ldr r1, _0230456C ; =ov00_0231B25C + mov r0, r6 + mov r2, r4 + mov r3, #0x80 + bl GpiValueForKey + cmp r0, #0 + bne _02304050 + ldr r2, _02304568 ; =ov00_0231B36C + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304050: + ldr r0, [r4, #0x304] + mov r1, r4 + cmp r0, #0 + mov r0, r8 + beq _02304080 + bl GpiSendNewuser + cmp r0, #0 + addne sp, sp, #0x2ac + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r0, #3 + str r0, [r7, #0x14] + b _0230454C +_02304080: + bl GpiSendLogin + cmp r0, #0 + addne sp, sp, #0x2ac + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r0, #2 + str r0, [r7, #0x14] + b _0230454C +_0230409C: + ldr r1, _02304570 ; =ov00_0231B39C + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _023040E0 + ldr r2, _02304568 ; =ov00_0231B36C + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_023040E0: + ldr r1, _02304574 ; =ov00_0231B290 + add r2, sp, #0xab + mov r0, r6 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _02304128 + ldr r2, _02304578 ; =ov00_0231B3A4 + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304128: + add r0, sp, #0xab + bl atoi + str r0, [r5, #0x19c] + ldr r1, _0230457C ; =ov00_0231B29C + add r2, sp, #0xab + mov r0, r6 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _0230417C + ldr r2, _02304578 ; =ov00_0231B3A4 + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_0230417C: + add r0, sp, #0xab + bl atoi + str r0, [r5, #0x1a0] + mov r0, r8 + mov r1, r4 + bl GpiSendLogin + cmp r0, #0 + addne sp, sp, #0x2ac + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r0, #2 + str r0, [r7, #0x14] + b _0230454C +_023041AC: + ldr r1, _02304580 ; =ov00_0231B3D4 + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _023041F0 + ldr r2, _02304568 ; =ov00_0231B36C + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_023041F0: + ldr r1, _02304584 ; =ov00_0231B3DC + add r2, sp, #0xab + mov r0, r6 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _02304238 + ldr r2, _02304578 ; =ov00_0231B3A4 + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304238: + add r0, sp, #0xab + bl atoi + str r0, [r5, #0x198] + ldr r1, _02304574 ; =ov00_0231B290 + add r2, sp, #0xab + mov r0, r6 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _0230428C + ldr r2, _02304578 ; =ov00_0231B3A4 + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_0230428C: + add r0, sp, #0xab + bl atoi + str r0, [r5, #0x19c] + ldr r1, _0230457C ; =ov00_0231B29C + add r2, sp, #0xab + mov r0, r6 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _023042E0 + ldr r2, _02304578 ; =ov00_0231B3A4 + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_023042E0: + add r0, sp, #0xab + bl atoi + str r0, [r5, #0x1a0] + ldr r1, _02304588 ; =ov00_0231B274 + add r2, sp, #0x23 + mov r0, r6 + mov r3, #0x15 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x23] + ldr r1, _0230458C ; =ov00_0231B3E8 + mov r0, r6 + add r2, r5, #0x610 + mov r3, #0x19 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streqb r0, [r5, #0x610] + ldr r2, [r5, #0x1a4] + cmp r2, #0 + beq _02304348 + ldr r1, _02304590 ; =ov00_0231B1F8 + add r0, sp, #0x18 + bl OS_VsPrintf + b _02304358 +_02304348: + ldr r0, _02304594 ; =ov00_0231B1FC + add r1, sp, #0x18 + ldrb r0, [r0] + strb r0, [r1] +_02304358: + ldrsb r0, [r4, #0xc2] + cmp r0, #0 + addne r0, r4, #0xc2 + bne _023043B0 + add r0, r5, #0x100 + ldrsb r0, [r0, #0x2f] + add r2, sp, #0x18 + cmp r0, #0 + add r0, sp, #0x59 + beq _02304398 + add r3, r5, #0x2f + ldr r1, _02304598 ; =ov00_0231B200 + add r3, r3, #0x100 + bl OS_VsPrintf + add r0, sp, #0x59 + b _023043B0 +_02304398: + ldr r1, _0230459C ; =ov00_0231B208 + add ip, r5, #0x144 + add r3, r5, #0x110 + str ip, [sp] + bl OS_VsPrintf + add r0, sp, #0x59 +_023043B0: + stmia sp, {r0, r4} + add r2, r4, #0x80 + str r2, [sp, #8] + add r2, r4, #0xa1 + ldr r1, _023045A0 ; =ov00_0231B210 + ldr r3, _023045A4 ; =ov00_0231B220 + add r0, sp, #0xab + str r2, [sp, #0xc] + bl OS_VsPrintf + add r0, sp, #0xab + bl strlen + mov r1, r0 + add r0, sp, #0xab + add r2, sp, #0x38 + bl MD5Digest_Gsi + ldr r1, _023045A8 ; =ov00_0231B3F0 + mov r0, r6 + add r2, sp, #0xab + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _02304434 + ldr r2, _02304578 ; =ov00_0231B3A4 + mov r0, r8 + mov r1, #1 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304434: + add r0, sp, #0x38 + add r1, sp, #0xab + mov r2, #0x20 + bl memcmp + cmp r0, #0 + beq _02304478 + ldr r2, _023045AC ; =ov00_0231B3F8 + mov r0, r8 + mov r1, #0x108 + bl GpiSetError + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x2ac + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304478: + ldr r0, [r5, #0x100] + cmp r0, #0 + beq _023044A0 + ldr r1, [r5, #0x1a0] + mov r0, r8 + bl GpiProfileListAdd + ldr r1, [r5, #0x1a0] + str r1, [r0] + ldr r1, [r5, #0x19c] + str r1, [r0, #4] +_023044A0: + mov r0, #3 + str r0, [r5, #0x1f4] + ldr r1, [r7, #0xc] + ldr r0, [r7, #0x10] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + cmp r1, #0 + beq _02304540 + mov r0, #0x20 + bl gsimalloc + movs r4, r0 + bne _023044E8 + ldr r1, _023045B0 ; =ov00_0231B1E8 + mov r0, r8 + bl GpiSetErrorString + add sp, sp, #0x2ac + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_023044E8: + mov r1, #0 + mov r2, #0x20 + bl memset + ldr r0, [r5, #0x1a0] + mov r3, #0 + str r0, [r4, #4] + add r1, sp, #0x23 + add r0, r4, #8 + mov r2, #0x15 + str r3, [r4] + bl strzcpy_gsi + add r1, sp, #0x10 + mov r0, r8 + mov r3, r4 + str r7, [sp] + mov r2, #0 + str r2, [sp, #4] + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x2ac + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02304540: + mov r0, r8 + mov r1, r7 + bl GpiRemoveOperation +_0230454C: + mov r0, #0 + add sp, sp, #0x2ac + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02304558: .word 0x00000106 +_0230455C: .word 0x00000201 +_02304560: .word ov00_0231B35C +_02304564: .word ov00_0231B364 +_02304568: .word ov00_0231B36C +_0230456C: .word ov00_0231B25C +_02304570: .word ov00_0231B39C +_02304574: .word ov00_0231B290 +_02304578: .word ov00_0231B3A4 +_0230457C: .word ov00_0231B29C +_02304580: .word ov00_0231B3D4 +_02304584: .word ov00_0231B3DC +_02304588: .word ov00_0231B274 +_0230458C: .word ov00_0231B3E8 +_02304590: .word ov00_0231B1F8 +_02304594: .word ov00_0231B1FC +_02304598: .word ov00_0231B200 +_0230459C: .word ov00_0231B208 +_023045A0: .word ov00_0231B210 +_023045A4: .word ov00_0231B220 +_023045A8: .word ov00_0231B3F0 +_023045AC: .word ov00_0231B3F8 +_023045B0: .word ov00_0231B1E8 + arm_func_end GpiProcessConnect + + arm_func_start GpiCheckConnect +GpiCheckConnect: ; 0x023045B4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5] + add r2, sp, #0 + ldr r1, [r4, #0x1f0] + bl GpiCheckSocketConnect + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, [sp] + cmp r0, #4 + bne _02304608 + ldr r1, _02304620 ; =0x00000107 + ldr r2, _02304624 ; =ov00_0231B418 + mov r0, r5 + bl GpiSetError + mov r0, r5 + mov r1, #4 + mov r2, #1 + bl GpiCallErrorCallback + mov r0, #4 + ldmia sp!, {r3, r4, r5, pc} +_02304608: + cmp r0, #0 + moveq r0, #0 + movne r0, #2 + strne r0, [r4, #0x1f4] + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02304620: .word 0x00000107 +_02304624: .word ov00_0231B418 + arm_func_end GpiCheckConnect + + arm_func_start GpiDisconnectCleanupProfile +GpiDisconnectCleanupProfile: ; 0x02304628 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r1, [r5, #8] + mov r6, r0 + cmp r1, #0 + ldr r4, [r6] + beq _0230468C + ldr r0, [r4, #0x104] + cmp r0, #0 + bne _0230468C + ldr r0, [r1, #8] + bl gsifree + ldr r0, [r5, #8] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r5, #8] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [r5, #8] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r5, #8] + bl gsifree + mov r0, #0 + str r0, [r5, #8] +_0230468C: + ldr r1, [r5, #0xc] + cmp r1, #0 + beq _02304730 + ldr r0, [r4, #0x104] + cmp r0, #0 + bne _02304730 + ldr r0, [r1, #8] + bl gsifree + ldr r0, [r5, #0xc] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [r5, #0xc] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x10] + bl gsifree + ldr r0, [r5, #0xc] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x14] + bl gsifree + ldr r0, [r5, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _02304720 + bl ArrayFree_Gsi + ldr r0, [r5, #0xc] + mov r1, #0 + str r1, [r0, #0x38] +_02304720: + ldr r0, [r5, #0xc] + bl gsifree + mov r0, #0 + str r0, [r5, #0xc] +_02304730: + ldr r0, [r5, #0x14] + bl gsifree + mov r0, #0 + str r0, [r5, #0x14] + ldr r0, [r5, #0x1c] + bl gsifree + mov r0, #0 + str r0, [r5, #0x1c] + str r0, [r5, #0x18] + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _0230477C + ldr r0, [r4, #0x104] + cmp r0, #1 + ldreq r0, [r5, #8] + cmpeq r0, #0 + ldreq r0, [r5, #0xc] + cmpeq r0, #0 + bne _02304790 +_0230477C: + mov r0, r6 + mov r1, r5 + bl GpiRemoveProfile + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02304790: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiDisconnectCleanupProfile + + arm_func_start GpiDisconnect +GpiDisconnect: ; 0x02304798 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r4, [r5] + ldr r2, [r4, #0x1f4] + cmp r2, #4 + addeq sp, sp, #0xc + ldmeqia sp!, {r3, r4, r5, r6, pc} + cmp r2, #0 + beq _0230485C + cmp r1, #0 + beq _023047FC + cmp r2, #3 + bne _023047FC + ldr r2, _02304928 ; =ov00_0231B440 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r5 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _0230492C ; =ov00_0231B31C + mov r0, r5 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer +_023047FC: + mov r1, #1 + ldr r0, _02304930 ; =ov00_0231B454 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r4, #0x1f0] + add r3, sp, #8 + mov r0, r5 + add r2, r4, #0x210 + bl GpiSendFromBuffer + ldr r0, [r4, #0x1f0] + mvn r1, #0 + cmp r0, r1 + beq _02304848 + mov r1, #2 + bl shutdown_gsi + ldr r0, [r4, #0x1f0] + bl SocketClose + mvn r0, #0 + str r0, [r4, #0x1f0] +_02304848: + mov r0, #4 + str r0, [r4, #0x1f4] + mov r0, #0 + str r0, [r4, #0x19c] + str r0, [r4, #0x1a0] +_0230485C: + ldr r0, [r4, #0x1f8] + bl gsifree + mov r0, #0 + str r0, [r4, #0x1f8] + ldr r0, [r4, #0x208] + bl gsifree + mov r0, #0 + str r0, [r4, #0x208] + ldr r0, [r4, #0x210] + bl gsifree + mov r0, #0 + str r0, [r4, #0x210] + ldr r0, [r4, #0x5e0] + bl gsifree + mov r0, #0 + str r0, [r4, #0x5e0] + ldr r0, [r4, #0x5f0] + bl gsifree + mov r0, #0 + str r0, [r4, #0x5f0] + ldr r1, [r4, #0x5c4] + cmp r1, #0 + beq _023048CC +_023048B8: + mov r0, r5 + bl GpiRemoveOperation + ldr r1, [r4, #0x5c4] + cmp r1, #0 + bne _023048B8 +_023048CC: + mov r0, #0 + str r0, [r4, #0x5c4] + ldr r6, [r4, #0x5d4] + cmp r6, #0 + beq _023048F8 +_023048E0: + mov r1, r6 + ldr r6, [r6, #0x4c] + mov r0, r5 + bl GpiDestroyPeer + cmp r6, #0 + bne _023048E0 +_023048F8: + mov r0, #0 + str r0, [r4, #0x5d4] + ldr r6, _02304934 ; =GpiDisconnectCleanupProfile + mov r4, r0 +_02304908: + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl GpiProfileMap + cmp r0, #0 + beq _02304908 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02304928: .word ov00_0231B440 +_0230492C: .word ov00_0231B31C +_02304930: .word ov00_0231B454 +_02304934: .word GpiDisconnectCleanupProfile + arm_func_end GpiDisconnect + + arm_func_start GpiIsValidDate +GpiIsValidDate: ; 0x02304938 + stmdb sp!, {r3, r4, r5, lr} + cmp r0, #0 + cmpeq r1, #0 + cmpeq r2, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #0 + cmpge r1, #0 + cmpge r2, #0 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _02304A40 +_02304970: ; jump table + b _023049A4 ; case 0 + b _023049B4 ; case 1 + b _023049D4 ; case 2 + b _023049B4 ; case 3 + b _023049C4 ; case 4 + b _023049B4 ; case 5 + b _023049C4 ; case 6 + b _023049B4 ; case 7 + b _023049B4 ; case 8 + b _023049C4 ; case 9 + b _023049B4 ; case 10 + b _023049C4 ; case 11 + b _023049B4 ; case 12 +_023049A4: + cmp r0, #0 + beq _02304A48 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_023049B4: + cmp r0, #0x1f + ble _02304A48 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_023049C4: + cmp r0, #0x1e + ble _02304A48 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_023049D4: + mov r4, r2, lsr #0x1f + rsb r3, r4, r2, lsl #30 + adds r3, r4, r3, ror #30 + bne _02304A00 + ldr ip, _02304A90 ; =0x51EB851F + mov lr, #0x64 + smull r3, r5, ip, r2 + add r5, r4, r5, asr #5 + smull r3, ip, lr, r5 + subs r5, r2, r3 + bne _02304A20 +_02304A00: + ldr lr, _02304A90 ; =0x51EB851F + mov r3, r2, lsr #0x1f + smull ip, r4, lr, r2 + add r4, r3, r4, asr #7 + mov lr, #0x190 + smull r3, ip, lr, r4 + subs r4, r2, r3 + bne _02304A30 +_02304A20: + cmp r0, #0x1d + ble _02304A48 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02304A30: + cmp r0, #0x1c + ble _02304A48 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02304A40: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02304A48: + ldr ip, _02304A94 ; =0x0000076C + cmp r2, ip + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + add r3, ip, #0xb3 + cmp r2, r3 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, pc} + bne _02304A88 + cmp r1, #6 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, pc} + bne _02304A88 + cmp r0, #6 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, pc} +_02304A88: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02304A90: .word 0x51EB851F +_02304A94: .word 0x0000076C + arm_func_end GpiIsValidDate + + arm_func_start GpiDateToInt +GpiDateToInt: ; 0x02304A98 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov lr, r1, asr #0x18 + mov ip, r1, asr #0x10 + mov r1, r1, lsl #0x10 + and r5, ip, #0xff + and r4, lr, #0xff + mov sb, r0 + mov r6, r1, lsr #0x10 + mov r8, r2 + mov r0, r4 + mov r1, r5 + mov r2, r6 + mov r7, r3 + bl GpiIsValidDate + cmp r0, #0 + bne _02304AEC + ldr r1, _02304B04 ; =ov00_0231B458 + mov r0, sb + bl GpiSetErrorString + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02304AEC: + str r4, [r8] + ldr r0, [sp, #0x20] + str r5, [r7] + str r6, [r0] + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02304B04: .word ov00_0231B458 + arm_func_end GpiDateToInt + + arm_func_start GpiInfoCacheToArg +GpiInfoCacheToArg: ; 0x02304B08 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr r1, [r5] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #8] + beq _02304B34 + add r0, r4, #8 + mov r2, #0x1f + bl strzcpy_gsi +_02304B34: + ldr r1, [r5, #4] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x27] + beq _02304B54 + add r0, r4, #0x27 + mov r2, #0x15 + bl strzcpy_gsi +_02304B54: + ldr r1, [r5, #8] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x3c] + beq _02304B74 + add r0, r4, #0x3c + mov r2, #0x33 + bl strzcpy_gsi +_02304B74: + ldr r1, [r5, #0xc] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x6f] + beq _02304B94 + add r0, r4, #0x6f + mov r2, #0x1f + bl strzcpy_gsi +_02304B94: + ldr r1, [r5, #0x10] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x8e] + beq _02304BB4 + add r0, r4, #0x8e + mov r2, #0x1f + bl strzcpy_gsi +_02304BB4: + ldr r1, [r5, #0x14] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0xad] + beq _02304BD4 + add r0, r4, #0xad + mov r2, #0x4c + bl strzcpy_gsi +_02304BD4: + ldr r3, [r5, #0x18] + add r0, r4, #0x100 + add r1, r5, #0x1c + mov r2, #0xb + str r3, [r4, #0xfc] + bl strzcpy_gsi + add r0, r4, #0xb + add r0, r0, #0x100 + add r1, r5, #0x27 + mov r2, #3 + bl strzcpy_gsi + ldr r0, [r5, #0x2c] + adds r1, r5, #0x34 + str r0, [r4, #0x110] + ldr r0, [r5, #0x30] + str r0, [r4, #0x114] + moveq r0, #0 + streqb r0, [r4, #0x118] + beq _02304C2C + add r0, r4, #0x118 + mov r2, #0x80 + bl strzcpy_gsi +_02304C2C: + ldr r0, [r5, #0xb4] + str r0, [r4, #0x198] + ldr r0, [r5, #0xb8] + str r0, [r4, #0x19c] + ldr r0, [r5, #0xbc] + str r0, [r4, #0x1a0] + ldr r0, [r5, #0xc0] + str r0, [r4, #0x1a4] + ldr r0, [r5, #0xc4] + str r0, [r4, #0x1a8] + ldr r1, [r5, #0xc8] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x1ac] + beq _02304C74 + add r0, r4, #0x1ac + mov r2, #0x33 + bl strzcpy_gsi +_02304C74: + ldr r0, [r5, #0x18] + str r0, [r4, #0xfc] + ldr r0, [r5, #0x2c] + str r0, [r4, #0x110] + ldr r0, [r5, #0x30] + str r0, [r4, #0x114] + ldr r0, [r5, #0xb4] + str r0, [r4, #0x198] + ldr r0, [r5, #0xb8] + str r0, [r4, #0x19c] + ldr r0, [r5, #0xbc] + str r0, [r4, #0x1a0] + ldr r0, [r5, #0xc0] + str r0, [r4, #0x1a4] + ldr r0, [r5, #0xc4] + str r0, [r4, #0x1a8] + ldr r0, [r5, #0xcc] + str r0, [r4, #0x1e0] + ldr r0, [r5, #0xd0] + str r0, [r4, #0x1e4] + ldr r0, [r5, #0xd4] + str r0, [r4, #0x1e8] + ldr r0, [r5, #0xd8] + str r0, [r4, #0x1ec] + ldr r0, [r5, #0xdc] + str r0, [r4, #0x1f0] + ldr r0, [r5, #0xe0] + str r0, [r4, #0x1f4] + ldr r0, [r5, #0xe4] + str r0, [r4, #0x1f8] + ldr r0, [r5, #0xe8] + str r0, [r4, #0x1fc] + ldr r0, [r5, #0xec] + str r0, [r4, #0x200] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpiInfoCacheToArg + + arm_func_start GpiProcessGetInfo +GpiProcessGetInfo: ; 0x02304D00 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x268 + mov r4, r2 + mov sl, r0 + mov fp, r1 + mov r1, r4 + mov r2, #1 + ldr r6, [sl] + bl GpiCheckForError + cmp r0, #0 + addne sp, sp, #0x268 + movne r0, #4 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230546C ; =ov00_0231B468 + mov r0, r4 + mov r2, #4 + bl strncmp + cmp r0, #0 + beq _02304D78 + ldr r2, _02305470 ; =ov00_0231B470 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x268 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02304D78: + ldr r1, _02305474 ; =ov00_0231B4A0 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + bne _02304DC0 + ldr r2, _02305470 ; =ov00_0231B470 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x268 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02304DC0: + add r0, sp, #0xec + bl atoi + mov sb, r0 + add r2, sp, #0x10 + mov r0, sl + mov r1, sb + bl GpiGetProfile + mov r0, #0 + add r7, sp, #0x178 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r5, #7 +_02304DF4: + stmia r7!, {r0, r1, r2, r3} + stmia r7!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _02304DF4 + stmia r7!, {r0, r1, r2, r3} + add r3, sp, #0xb8 + add r1, sp, #0x66 + add r2, sp, #0xcd + add r5, sp, #0x85 + add r0, sp, #0x47 + str r3, [sp, #0x17c] + add r3, sp, #0x12c + str r1, [sp, #0x184] + str r5, [sp, #0x180] + add r5, sp, #0x14 + str r0, [sp, #0x188] + str r3, [sp, #0x18c] + ldr r1, _02305478 ; =ov00_0231B4AC + mov r0, r4 + mov r3, #0x1f + str r2, [sp, #0x178] + str r5, [sp, #0x240] + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x178] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x17c] + ldr r1, _0230547C ; =ov00_0231B4B4 + mov r0, r4 + mov r3, #0x15 + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x17c] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x180] + ldr r1, _02305480 ; =ov00_0231B4C4 + mov r0, r4 + mov r3, #0x33 + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x180] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x184] + ldr r1, _02305484 ; =ov00_0231B4CC + mov r0, r4 + mov r3, #0x1f + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x184] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x188] + ldr r1, _02305488 ; =ov00_0231B4D8 + mov r0, r4 + mov r3, #0x1f + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x188] + moveq r1, #0 + streqb r1, [r0] + ldr r1, _0230548C ; =ov00_0231B4E4 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + mvneq r0, #0 + streq r0, [sp, #0x190] + beq _02304F20 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x190] +_02304F20: + ldr r2, [sp, #0x18c] + ldr r1, _02305490 ; =ov00_0231B4F0 + mov r0, r4 + mov r3, #0x4c + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x18c] + moveq r1, #0 + streqb r1, [r0] + ldr r1, _02305494 ; =ov00_0231B4FC + add r2, sp, #0x194 + mov r0, r4 + mov r3, #0xb + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + add r2, sp, #0x100 + streqb r0, [sp, #0x194] + ldr r1, _02305498 ; =ov00_0231B508 + add r2, r2, #0x9f + mov r0, r4 + mov r3, #3 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x19f] + ldr r1, _0230549C ; =ov00_0231B518 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x1a4] + beq _02304FBC + add r0, sp, #0xec + bl atof + bl _d2f + str r0, [sp, #0x1a4] +_02304FBC: + ldr r1, _023054A0 ; =ov00_0231B520 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x1a8] + beq _02304FF0 + add r0, sp, #0xec + bl atof + bl _d2f + str r0, [sp, #0x1a8] +_02304FF0: + ldr r1, _023054A4 ; =ov00_0231B528 + add r2, sp, #0x1ac + mov r0, r4 + mov r3, #0x80 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x1ac] + ldr r1, _023054A8 ; =ov00_0231B530 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + bne _02305040 + mov r0, #0 + str r0, [sp, #0x22c] + str r0, [sp, #0x230] + str r0, [sp, #0x234] + b _02305070 +_02305040: + add r0, sp, #0xec + bl atoi + add r5, sp, #0x234 + mov r1, r0 + add r2, sp, #0x22c + add r3, sp, #0x230 + mov r0, sl + str r5, [sp] + bl GpiDateToInt + cmp r0, #0 + addne sp, sp, #0x268 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02305070: + ldr r1, _023054AC ; =ov00_0231B53C + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + ldreq r0, _023054B0 ; =0x00000502 + streq r0, [sp, #0x238] + beq _023050BC + ldrsb r0, [sp, #0xec] + cmp r0, #0x30 + moveq r0, #0x500 + streq r0, [sp, #0x238] + beq _023050BC + cmp r0, #0x31 + ldreq r0, _023054B4 ; =0x00000501 + streq r0, [sp, #0x238] + ldrne r0, _023054B0 ; =0x00000502 + strne r0, [sp, #0x238] +_023050BC: + ldr r1, _023054B8 ; =ov00_0231B544 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + mvneq r0, #0 + streq r0, [sp, #0x23c] + beq _023050EC + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x23c] +_023050EC: + ldr r2, [sp, #0x240] + ldr r1, _023054BC ; =ov00_0231B54C + mov r0, r4 + mov r3, #0x33 + bl GpiValueForKey + cmp r0, #0 + ldreq r0, [sp, #0x240] + moveq r1, #0 + streqb r1, [r0] + ldr r1, _023054C0 ; =ov00_0231B554 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x244] + beq _02305140 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x244] +_02305140: + ldr r1, _023054C4 ; =ov00_0231B55C + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x248] + beq _02305170 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x248] +_02305170: + ldr r1, _023054C8 ; =ov00_0231B564 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x24c] + beq _023051A0 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x24c] +_023051A0: + ldr r1, _023054CC ; =ov00_0231B56C + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x250] + beq _023051D0 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x250] +_023051D0: + ldr r1, _023054D0 ; =ov00_0231B574 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x254] + beq _02305200 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x254] +_02305200: + ldr r1, _023054D4 ; =ov00_0231B57C + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x258] + beq _02305230 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x258] +_02305230: + ldr r1, _023054D8 ; =ov00_0231B584 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x25c] + beq _02305260 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x25c] +_02305260: + ldr r1, _023054DC ; =ov00_0231B58C + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x260] + beq _02305290 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x260] +_02305290: + ldr r1, _023054E0 ; =ov00_0231B594 + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x264] + beq _023052C0 + add r0, sp, #0xec + bl atoi + str r0, [sp, #0x264] +_023052C0: + ldr r1, _023054E4 ; =ov00_0231B59C + add r2, sp, #0xec + mov r0, r4 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + bne _02305308 + ldr r2, _02305470 ; =ov00_0231B470 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x268 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02305308: + ldr r7, [r6, #0x5d4] + ldr r8, [r6, #0x100] + cmp r7, #0 + beq _02305364 + mov r5, #0x66 + mov r4, #1 +_02305320: + ldr r0, [r7, #0x10] + cmp r0, sb + ldreq r0, [r7] + cmpeq r0, #0x65 + bne _02305358 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _02305350 + mov r0, sl + mov r1, sb + bl GpiProfileListAdd + str r0, [sp, #0x10] +_02305350: + mov r8, r4 + str r5, [r7] +_02305358: + ldr r7, [r7, #0x4c] + cmp r7, #0 + bne _02305320 +_02305364: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0230538C + ldr r0, [r6, #0x100] + cmp r0, #0 + beq _0230538C + mov r0, sl + mov r1, sb + bl GpiProfileListAdd + str r0, [sp, #0x10] +_0230538C: + cmp r8, #0 + beq _023053BC + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x1c] + bl gsifree + ldr r1, [sp, #0x10] + mov r2, #0 + add r0, sp, #0xec + str r2, [r1, #0x1c] + bl goastrdup + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] +_023053BC: + ldr r0, [r6, #0x100] + cmp r0, #0 + beq _023053D8 + ldr r1, [sp, #0x10] + add r2, sp, #0x178 + mov r0, sl + bl GpiSetInfoCache +_023053D8: + ldr r1, [fp, #0xc] + ldr r0, [fp, #0x10] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + beq _02305454 + mov r0, #0x204 + bl gsimalloc + movs r4, r0 + bne _02305418 + ldr r1, _023054E8 ; =ov00_0231B5A4 + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0x268 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02305418: + add r0, sp, #0x178 + mov r1, r4 + bl GpiInfoCacheToArg + mov r2, #0 + stmia r4, {r2, sb} + str fp, [sp] + add r1, sp, #8 + str r2, [sp, #4] + mov r0, sl + mov r3, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x268 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02305454: + mov r0, sl + mov r1, fp + bl GpiRemoveOperation + mov r0, #0 + add sp, sp, #0x268 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230546C: .word ov00_0231B468 +_02305470: .word ov00_0231B470 +_02305474: .word ov00_0231B4A0 +_02305478: .word ov00_0231B4AC +_0230547C: .word ov00_0231B4B4 +_02305480: .word ov00_0231B4C4 +_02305484: .word ov00_0231B4CC +_02305488: .word ov00_0231B4D8 +_0230548C: .word ov00_0231B4E4 +_02305490: .word ov00_0231B4F0 +_02305494: .word ov00_0231B4FC +_02305498: .word ov00_0231B508 +_0230549C: .word ov00_0231B518 +_023054A0: .word ov00_0231B520 +_023054A4: .word ov00_0231B528 +_023054A8: .word ov00_0231B530 +_023054AC: .word ov00_0231B53C +_023054B0: .word 0x00000502 +_023054B4: .word 0x00000501 +_023054B8: .word ov00_0231B544 +_023054BC: .word ov00_0231B54C +_023054C0: .word ov00_0231B554 +_023054C4: .word ov00_0231B55C +_023054C8: .word ov00_0231B564 +_023054CC: .word ov00_0231B56C +_023054D0: .word ov00_0231B574 +_023054D4: .word ov00_0231B57C +_023054D8: .word ov00_0231B584 +_023054DC: .word ov00_0231B58C +_023054E0: .word ov00_0231B594 +_023054E4: .word ov00_0231B59C +_023054E8: .word ov00_0231B5A4 + arm_func_end GpiProcessGetInfo + + arm_func_start GpiAddLocalInfo +GpiAddLocalInfo: ; 0x023054EC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + mov r5, r1 + ldr r2, [r4, #0x5e8] + cmp r2, #0 + ble _02305568 + ldr r2, _023055C4 ; =ov00_0231B5B4 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r6 + mov r1, r5 + bl GpiAppendIntToBuffer + ldr r2, [r4, #0x5e0] + mov r0, r6 + mov r1, r5 + bl GpiAppendStringToBuffer + ldr r2, _023055C8 ; =ov00_0231B5CC + mov r0, r6 + mov r1, r5 + bl GpiAppendStringToBuffer + mov r0, r6 + mov r1, r5 + ldr r2, [r4, #0x1a4] + bl GpiAppendIntToBuffer + mov r0, r6 + mov r1, r5 + ldr r2, _023055CC ; =ov00_0231B5D8 + bl GpiAppendStringToBuffer + mov r0, #0 + str r0, [r4, #0x5e8] +_02305568: + ldr r0, [r4, #0x5f8] + cmp r0, #0 + ble _023055BC + ldr r2, _023055D0 ; =ov00_0231B5E0 + mov r0, r6 + mov r1, r5 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r6 + mov r1, r5 + bl GpiAppendIntToBuffer + ldr r2, [r4, #0x5f0] + mov r0, r6 + mov r1, r5 + bl GpiAppendStringToBuffer + ldr r2, _023055CC ; =ov00_0231B5D8 + mov r0, r6 + mov r1, r5 + bl GpiAppendStringToBuffer + mov r0, #0 + str r0, [r4, #0x5f8] +_023055BC: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023055C4: .word ov00_0231B5B4 +_023055C8: .word ov00_0231B5CC +_023055CC: .word ov00_0231B5D8 +_023055D0: .word ov00_0231B5E0 + arm_func_end GpiAddLocalInfo + + arm_func_start GpiSendLocalInfo +GpiSendLocalInfo: ; 0x023055D4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + mov r5, r2 + mov r2, r1 + add r1, r4, #0x5e0 + bl GpiAppendStringToBuffer + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r2, r5 + add r1, r4, #0x5e0 + bl GpiAppendStringToBuffer + cmp r0, #0 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiSendLocalInfo + + arm_func_start GpiSendUserInfo +GpiSendUserInfo: ; 0x02305614 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + mov r5, r2 + mov r2, r1 + add r1, r4, #0x5f0 + bl GpiAppendStringToBuffer + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r2, r5 + add r1, r4, #0x5f0 + bl GpiAppendStringToBuffer + cmp r0, #0 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiSendUserInfo + + arm_func_start GpiSetInfoi +GpiSetInfoi: ; 0x02305654 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + sub r1, r1, #6 + sub r1, r1, #0x700 + mov r4, r0 + cmp r1, #0x18 + addls pc, pc, r1, lsl #2 + b _02305A98 +_02305674: ; jump table + b _023057AC ; case 0 + b _02305A98 ; case 1 + b _023056D8 ; case 2 + b _02305A98 ; case 3 + b _02305A98 ; case 4 + b _02305720 ; case 5 + b _023057D8 ; case 6 + b _02305804 ; case 7 + b _02305830 ; case 8 + b _02305A98 ; case 9 + b _02305868 ; case 10 + b _02305A98 ; case 11 + b _023058A0 ; case 12 + b _023058D8 ; case 13 + b _02305904 ; case 14 + b _02305930 ; case 15 + b _02305A98 ; case 16 + b _02305A98 ; case 17 + b _02305964 ; case 18 + b _02305990 ; case 19 + b _023059BC ; case 20 + b _023059E8 ; case 21 + b _02305A14 ; case 22 + b _02305A40 ; case 23 + b _02305A6C ; case 24 +_023056D8: + cmp r2, #0 + bge _023056F4 + ldr r1, _02305ABC ; =ov00_0231B5F4 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, pc} +_023056F4: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305AC4 ; =ov00_0231B4FC + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305720: + cmp r2, #0x500 + beq _02305744 + ldr r1, _02305AC8 ; =0x00000501 + cmp r2, r1 + beq _02305760 + add r1, r1, #1 + cmp r2, r1 + beq _0230577C + b _02305798 +_02305744: + ldr r1, _02305ACC ; =ov00_0231B53C + ldr r2, _02305AD0 ; =ov00_0231B60C + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305760: + ldr r1, _02305ACC ; =ov00_0231B53C + ldr r2, _02305AD4 ; =ov00_0231B610 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_0230577C: + ldr r1, _02305ACC ; =ov00_0231B53C + ldr r2, _02305AD8 ; =ov00_0231B614 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305798: + ldr r1, _02305ADC ; =ov00_0231B618 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, pc} +_023057AC: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305AE0 ; =ov00_0231B4E4 + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_023057D8: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305AE4 ; =ov00_0231B628 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305804: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305AE8 ; =ov00_0231B638 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305830: + mov r0, r2, asr #3 + add r2, r2, r0, lsr #28 + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + mov r2, r2, asr #4 + bl OS_VsPrintf + ldr r1, _02305AEC ; =ov00_0231B644 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305868: + mov r0, r2, asr #1 + add r2, r2, r0, lsr #30 + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + mov r2, r2, asr #2 + bl OS_VsPrintf + ldr r1, _02305AF0 ; =ov00_0231B650 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_023058A0: + mov r0, r2, asr #1 + add r2, r2, r0, lsr #30 + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + mov r2, r2, asr #2 + bl OS_VsPrintf + ldr r1, _02305AF4 ; =ov00_0231B660 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_023058D8: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305AF8 ; =ov00_0231B670 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305904: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305AFC ; =ov00_0231B680 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305930: + ldr r1, _02305AC0 ; =ov00_0231B608 + cmp r2, #0 + movne r2, #1 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B00 ; =ov00_0231B694 + add r2, sp, #0 + mov r0, r4 + bl GpiSendUserInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305964: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B04 ; =ov00_0231B554 + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305990: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B08 ; =ov00_0231B55C + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_023059BC: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B0C ; =ov00_0231B564 + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_023059E8: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B10 ; =ov00_0231B56C + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305A14: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B14 ; =ov00_0231B574 + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305A40: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B18 ; =ov00_0231B57C + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305A6C: + ldr r1, _02305AC0 ; =ov00_0231B608 + add r0, sp, #0 + bl OS_VsPrintf + ldr r1, _02305B1C ; =ov00_0231B584 + add r2, sp, #0 + mov r0, r4 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02305AB0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_02305A98: + ldr r1, _02305B20 ; =ov00_0231B6A4 + mov r0, r4 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, pc} +_02305AB0: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02305ABC: .word ov00_0231B5F4 +_02305AC0: .word ov00_0231B608 +_02305AC4: .word ov00_0231B4FC +_02305AC8: .word 0x00000501 +_02305ACC: .word ov00_0231B53C +_02305AD0: .word ov00_0231B60C +_02305AD4: .word ov00_0231B610 +_02305AD8: .word ov00_0231B614 +_02305ADC: .word ov00_0231B618 +_02305AE0: .word ov00_0231B4E4 +_02305AE4: .word ov00_0231B628 +_02305AE8: .word ov00_0231B638 +_02305AEC: .word ov00_0231B644 +_02305AF0: .word ov00_0231B650 +_02305AF4: .word ov00_0231B660 +_02305AF8: .word ov00_0231B670 +_02305AFC: .word ov00_0231B680 +_02305B00: .word ov00_0231B694 +_02305B04: .word ov00_0231B554 +_02305B08: .word ov00_0231B55C +_02305B0C: .word ov00_0231B564 +_02305B10: .word ov00_0231B56C +_02305B14: .word ov00_0231B574 +_02305B18: .word ov00_0231B57C +_02305B1C: .word ov00_0231B584 +_02305B20: .word ov00_0231B6A4 + arm_func_end GpiSetInfoi + + arm_func_start GpiSetInfos +GpiSetInfos: ; 0x02305B24 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x130 + mov r6, r0 + movs r5, r2 + ldr r4, [r6] + bne _02305B50 + ldr r1, _02306284 ; =ov00_0231B6B4 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02305B50: + sub r1, r1, #0x700 + cmp r1, #0x1e + addls pc, pc, r1, lsl #2 + b _02306260 +_02305B60: ; jump table + b _02305BDC ; case 0 + b _02305C3C ; case 1 + b _02305CA0 ; case 2 + b _02305D08 ; case 3 + b _02305D7C ; case 4 + b _02305DAC ; case 5 + b _02305F30 ; case 6 + b _02305DDC ; case 7 + b _02305E0C ; case 8 + b _02305E3C ; case 9 + b _02306260 ; case 10 + b _02305E94 ; case 11 + b _02306260 ; case 12 + b _02305F60 ; case 13 + b _02305F88 ; case 14 + b _02305FB0 ; case 15 + b _02305FE0 ; case 16 + b _02306008 ; case 17 + b _02306038 ; case 18 + b _02306260 ; case 19 + b _02306060 ; case 20 + b _02306088 ; case 21 + b _023060B0 ; case 22 + b _023060E0 ; case 23 + b _02306110 ; case 24 + b _02306140 ; case 25 + b _02306170 ; case 26 + b _023061A0 ; case 27 + b _023061D0 ; case 28 + b _02306200 ; case 29 + b _02306230 ; case 30 +_02305BDC: + ldrsb r1, [r5] + cmp r1, #0 + bne _02305BFC + ldr r1, _02306284 ; =ov00_0231B6B4 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02305BFC: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + add r1, sp, #0x2d + add r0, r4, #0x110 + mov r2, #0x1f + bl strzcpy_gsi + ldr r1, _02306288 ; =ov00_0231B4AC + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305C3C: + ldrsb r1, [r5] + cmp r1, #0 + bne _02305C5C + ldr r1, _02306284 ; =ov00_0231B6B4 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02305C5C: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x15 + bl strzcpy_gsi + add r0, r4, #0x2f + add r1, sp, #0x2d + add r0, r0, #0x100 + mov r2, #0x15 + bl strzcpy_gsi + ldr r1, _0230628C ; =ov00_0231B4B4 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305CA0: + ldrsb r1, [r5] + cmp r1, #0 + bne _02305CC0 + ldr r1, _02306284 ; =ov00_0231B6B4 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02305CC0: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x33 + bl strzcpy_gsi + add r0, sp, #0x2d + bl strlwr + add r1, sp, #0x2d + add r0, r4, #0x144 + mov r2, #0x33 + bl strzcpy_gsi + ldr r1, _02306290 ; =ov00_0231B4C4 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendUserInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305D08: + ldrsb r1, [r5] + cmp r1, #0 + bne _02305D28 + ldr r1, _02306284 ; =ov00_0231B6B4 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02305D28: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + add r0, r4, #0x77 + add r1, sp, #0x2d + add r0, r0, #0x100 + mov r2, #0x1f + bl strzcpy_gsi + add r0, r4, #0x77 + add r1, sp, #0 + add r0, r0, #0x100 + bl PasswordEncryptString + ldr r1, _02306294 ; =ov00_0231B6C4 + add r2, sp, #0 + mov r0, r6 + bl GpiSendUserInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305D7C: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + ldr r1, _02306298 ; =ov00_0231B4CC + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305DAC: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + ldr r1, _0230629C ; =ov00_0231B4D8 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305DDC: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x4c + bl strzcpy_gsi + ldr r1, _023062A0 ; =ov00_0231B4F0 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305E0C: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0xb + bl strzcpy_gsi + ldr r1, _023062A4 ; =ov00_0231B4FC + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305E3C: + mov r0, r5 + bl strlen + cmp r0, #2 + beq _02305E64 + ldr r1, _023062A8 ; =ov00_0231B6D4 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02305E64: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #3 + bl strzcpy_gsi + ldr r1, _023062AC ; =ov00_0231B508 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305E94: + ldrsb r1, [r5] + cmp r1, #0 + blt _02305EB0 + cmp r1, #0x80 + bge _02305EB0 + ldr r0, _023062B0 ; =_020AED30 + ldrb r1, [r0, r1] +_02305EB0: + mov r0, r1, lsl #0x18 + mov r0, r0, asr #0x18 + cmp r0, #0x4d + add r2, sp, #0x2d + bne _02305EDC + ldr r0, _023062B4 ; =ov00_0231B60C + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r2] + strb r0, [r2, #1] + b _02305F10 +_02305EDC: + cmp r0, #0x46 + bne _02305EFC + ldr r0, _023062B8 ; =ov00_0231B610 + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r2] + strb r0, [r2, #1] + b _02305F10 +_02305EFC: + ldr r0, _023062BC ; =ov00_0231B614 + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r2] + strb r0, [r2, #1] +_02305F10: + ldr r1, _023062C0 ; =ov00_0231B53C + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305F30: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062C4 ; =ov00_0231B4E4 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305F60: + mov r0, r5 + bl atoi + mov r2, r0 + ldr r1, _023062C8 ; =0x0000070D + mov r0, r6 + bl GpiSetInfoi + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305F88: + mov r0, r5 + bl atoi + mov r2, r0 + ldr r1, _023062CC ; =0x0000070E + mov r0, r6 + bl GpiSetInfoi + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305FB0: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062D0 ; =ov00_0231B6EC + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02305FE0: + mov r0, r5 + bl atoi + mov r2, r0 + mov r0, r6 + mov r1, #0x710 + bl GpiSetInfoi + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306008: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062D4 ; =ov00_0231B700 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306038: + mov r0, r5 + bl atoi + mov r2, r0 + ldr r1, _023062D8 ; =0x00000712 + mov r0, r6 + bl GpiSetInfoi + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306060: + mov r0, r5 + bl atoi + mov r2, r0 + ldr r1, _023062DC ; =0x00000714 + mov r0, r6 + bl GpiSetInfoi + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306088: + mov r0, r5 + bl atoi + mov r2, r0 + ldr r1, _023062E0 ; =0x00000715 + mov r0, r6 + bl GpiSetInfoi + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_023060B0: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062E4 ; =ov00_0231B714 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_023060E0: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x33 + bl strzcpy_gsi + ldr r1, _023062E8 ; =ov00_0231B54C + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306110: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062EC ; =ov00_0231B554 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306140: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062F0 ; =ov00_0231B55C + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306170: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062F4 ; =ov00_0231B564 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_023061A0: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062F8 ; =ov00_0231B56C + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_023061D0: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _023062FC ; =ov00_0231B574 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306200: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _02306300 ; =ov00_0231B57C + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306230: + add r0, sp, #0x2d + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + ldr r1, _02306304 ; =ov00_0231B584 + add r2, sp, #0x2d + mov r0, r6 + bl GpiSendLocalInfo + cmp r0, #0 + beq _02306278 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} +_02306260: + ldr r1, _02306308 ; =ov00_0231B6A4 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x130 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02306278: + mov r0, #0 + add sp, sp, #0x130 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02306284: .word ov00_0231B6B4 +_02306288: .word ov00_0231B4AC +_0230628C: .word ov00_0231B4B4 +_02306290: .word ov00_0231B4C4 +_02306294: .word ov00_0231B6C4 +_02306298: .word ov00_0231B4CC +_0230629C: .word ov00_0231B4D8 +_023062A0: .word ov00_0231B4F0 +_023062A4: .word ov00_0231B4FC +_023062A8: .word ov00_0231B6D4 +_023062AC: .word ov00_0231B508 +_023062B0: .word _020AED30 +_023062B4: .word ov00_0231B60C +_023062B8: .word ov00_0231B610 +_023062BC: .word ov00_0231B614 +_023062C0: .word ov00_0231B53C +_023062C4: .word ov00_0231B4E4 +_023062C8: .word 0x0000070D +_023062CC: .word 0x0000070E +_023062D0: .word ov00_0231B6EC +_023062D4: .word ov00_0231B700 +_023062D8: .word 0x00000712 +_023062DC: .word 0x00000714 +_023062E0: .word 0x00000715 +_023062E4: .word ov00_0231B714 +_023062E8: .word ov00_0231B54C +_023062EC: .word ov00_0231B554 +_023062F0: .word ov00_0231B55C +_023062F4: .word ov00_0231B564 +_023062F8: .word ov00_0231B56C +_023062FC: .word ov00_0231B574 +_02306300: .word ov00_0231B57C +_02306304: .word ov00_0231B584 +_02306308: .word ov00_0231B6A4 + arm_func_end GpiSetInfos + + arm_func_start GpiSendGetInfo +GpiSendGetInfo: ; 0x0230630C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r4, [r7] + mov r5, r2 + mov r6, r1 + ldr r2, _02306394 ; =ov00_0231B720 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x198] + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + ldr r2, _02306398 ; =ov00_0231B4A0 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendStringToBuffer + mov r2, r6 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + mov r0, r7 + add r1, r4, #0x210 + ldr r2, _0230639C ; =ov00_0231B738 + bl GpiAppendStringToBuffer + mov r2, r5 + mov r0, r7 + add r1, r4, #0x210 + bl GpiAppendIntToBuffer + mov r0, r7 + add r1, r4, #0x210 + ldr r2, _023063A0 ; =ov00_0231B5D8 + bl GpiAppendStringToBuffer + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02306394: .word ov00_0231B720 +_02306398: .word ov00_0231B4A0 +_0230639C: .word ov00_0231B738 +_023063A0: .word ov00_0231B5D8 + arm_func_end GpiSendGetInfo + + arm_func_start GpiGetInfo +GpiGetInfo: ; 0x023063A4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x1c + mov r8, r0 + ldr r0, [r8] + mov r4, #0 + str r4, [sp, #0x14] + ldr r0, [r0, #0x100] + cmp r2, #1 + moveq r4, #1 + cmp r0, #0 + ldr r5, [sp, #0x38] + moveq r4, #0 + cmp r5, #0 + mov r7, r1 + mov r6, r3 + cmpne r4, #0 + beq _023064C4 + add r2, sp, #0x18 + mov r0, r8 + mov r1, r7 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp, #0x18] + ldrne r0, [r0, #0x10] + cmpne r0, #0 + beq _023064C4 + mov r0, #0x204 + bl gsimalloc + movs r4, r0 + bne _02306434 + ldr r1, _02306544 ; =ov00_0231B5A4 + mov r0, r8 + bl GpiSetErrorString + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02306434: + ldr r0, [sp, #0x18] + mov r1, r4 + ldr r0, [r0, #0x10] + bl GpiInfoCacheToArg + mov r2, #0 + ldr ip, [sp, #0x3c] + stmia r4, {r2, r7} + mov r0, #1 + stmia sp, {r0, r5} + add r3, sp, #0x14 + mov r0, r8 + mov r1, #2 + str r5, [sp, #0xc] + str ip, [sp, #0x10] + str ip, [sp, #8] + bl GpiAddOperation + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r2, [sp, #0x14] + add r1, sp, #0xc + ldr r5, [r2, #0x18] + mov r0, r8 + str r2, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r3, r4 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x14] + mov r0, r8 + bl GpiRemoveOperation + b _02306518 +_023064C4: + str r6, [sp] + ldr r4, [sp, #0x3c] + str r5, [sp, #4] + add r3, sp, #0x14 + mov r0, r8 + mov r1, #2 + mov r2, #0 + str r4, [sp, #8] + bl GpiAddOperation + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x14] + mov r0, r8 + ldr r5, [r1, #0x18] + mov r1, r7 + mov r2, r5 + bl GpiSendGetInfo + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02306518: + cmp r6, #0 + beq _02306538 + mov r0, r8 + mov r1, r5 + bl GpiProcess + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02306538: + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02306544: .word ov00_0231B5A4 + arm_func_end GpiGetInfo + + arm_func_start GpiSetInfoCache +GpiSetInfoCache: ; 0x02306548 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, [r0] + mov r5, r1 + ldr r0, [r0, #0x100] + mov r4, r2 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl GpiFreeInfoCache + mov r0, #0xf0 + bl gsimalloc + movs r6, r0 + str r0, [r5, #0x10] + beq _0230660C + mov lr, r4 + mov ip, #0xf +_0230658C: + ldmia lr!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230658C + ldr r0, [r4] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1] + ldr r0, [r4, #4] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1, #4] + ldr r0, [r4, #8] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1, #8] + ldr r0, [r4, #0xc] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1, #0xc] + ldr r0, [r4, #0x10] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1, #0x10] + ldr r0, [r4, #0x14] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1, #0x14] + ldr r0, [r4, #0xc8] + bl goastrdup + ldr r1, [r5, #0x10] + str r0, [r1, #0xc8] +_0230660C: + ldr r0, [r5, #0x10] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiSetInfoCache + + arm_func_start GpiFreeInfoCache +GpiFreeInfoCache: ; 0x02306620 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x10] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r0] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0] + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0, #4] + ldr r0, [r4, #0x10] + ldr r0, [r0, #8] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r4, #0x10] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x10] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x14] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, [r4, #0x10] + ldr r0, [r0, #0xc8] + bl gsifree + ldr r0, [r4, #0x10] + mov r1, #0 + str r1, [r0, #0xc8] + ldr r0, [r4, #0x10] + bl gsifree + mov r0, #0 + str r0, [r4, #0x10] + ldmia sp!, {r4, pc} + arm_func_end GpiFreeInfoCache + + arm_func_start GpiStatusInfoKeyFree +GpiStatusInfoKeyFree: ; 0x023066EC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + bl gsifree + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #4] + bl gsifree + mov r0, #0 + str r0, [r4, #4] + ldmia sp!, {r4, pc} + arm_func_end GpiStatusInfoKeyFree + + arm_func_start GpiStatusInfoKeysInit +GpiStatusInfoKeysInit: ; 0x02306718 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r2, _02306758 ; =GpiStatusInfoKeyFree + ldr r4, [r5] + mov r0, #8 + mov r1, #1 + bl ArrayNew_Gsi + str r0, [r4, #0x3b4] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, _0230675C ; =ov00_0231B740 + mov r0, r5 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02306758: .word GpiStatusInfoKeyFree +_0230675C: .word ov00_0231B740 + arm_func_end GpiStatusInfoKeysInit + + arm_func_start GpiStatusInfoKeysDestroy +GpiStatusInfoKeysDestroy: ; 0x02306760 + stmdb sp!, {r4, lr} + ldr r4, [r0] + ldr r0, [r4, #0x3b4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl ArrayFree_Gsi + mov r0, #0 + str r0, [r4, #0x3b4] + ldmia sp!, {r4, pc} + arm_func_end GpiStatusInfoKeysDestroy + + arm_func_start GpiStatusInfoKeyCompFunc +GpiStatusInfoKeyCompFunc: ; 0x02306784 + ldr ip, _02306794 ; =strcmp + ldr r0, [r0] + ldr r1, [r1] + bx ip + .align 2, 0 +_02306794: .word strcmp + arm_func_end GpiStatusInfoKeyCompFunc + + arm_func_start GpiStatusInfoAddKey +GpiStatusInfoAddKey: ; 0x02306798 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r1 + mov r4, r3 + cmp r2, #0 + bne _023067C4 + ldr r1, _02306814 ; =ov00_0231B750 + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_023067C4: + cmp r4, #0 + bne _023067E0 + ldr r1, _02306818 ; =ov00_0231B764 + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_023067E0: + mov r0, r2 + bl goastrdup + str r0, [sp] + mov r0, r4 + bl goastrdup + str r0, [sp, #4] + ldr r2, _0230681C ; =GpiStatusInfoKeyCompFunc + add r1, sp, #0 + mov r0, r5 + bl ArrayInsertSorted_Gsi + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02306814: .word ov00_0231B750 +_02306818: .word ov00_0231B764 +_0230681C: .word GpiStatusInfoKeyCompFunc + arm_func_end GpiStatusInfoAddKey + + arm_func_start GpiStatusInfoSetKey +GpiStatusInfoSetKey: ; 0x02306820 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r1 + mov r5, r3 + cmp r2, #0 + bne _0230684C + ldr r1, _023068BC ; =ov00_0231B750 + bl GpiSetErrorString + add sp, sp, #0xc + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230684C: + mov r0, r2 + bl goastrdup + str r0, [sp, #4] + mov r4, #1 + ldr r2, _023068C0 ; =GpiStatusInfoKeyCompFunc + add r1, sp, #4 + mov r0, r6 + mov r3, #0 + str r4, [sp] + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _023068A4 + mov r0, r6 + bl ArrayNth_Gsi + mov r4, r0 + ldr r0, [r4, #4] + bl gsifree + mov r0, r5 + bl goastrdup + str r0, [r4, #4] +_023068A4: + ldr r0, [sp, #4] + bl gsifree + mov r0, #0 + str r0, [sp, #4] + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023068BC: .word ov00_0231B750 +_023068C0: .word GpiStatusInfoKeyCompFunc + arm_func_end GpiStatusInfoSetKey + + arm_func_start GpiStatusInfoCheckKey +GpiStatusInfoCheckKey: ; 0x023068C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r1 + mov r4, r3 + cmp r2, #0 + bne _023068F0 + ldr r1, _02306950 ; =ov00_0231B750 + bl GpiSetErrorString + add sp, sp, #0xc + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_023068F0: + mov r0, r2 + bl goastrdup + str r0, [sp, #4] + mov ip, #1 + ldr r2, _02306954 ; =GpiStatusInfoKeyCompFunc + add r1, sp, #4 + mov r0, r5 + mov r3, #0 + str ip, [sp] + bl ArraySearch_Gsi + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _02306938 + mov r0, r5 + bl ArrayNth_Gsi + ldr r0, [r0, #4] + str r0, [r4] +_02306938: + ldr r0, [sp, #4] + bl gsifree + mov r0, #0 + str r0, [sp, #4] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02306950: .word ov00_0231B750 +_02306954: .word GpiStatusInfoKeyCompFunc + arm_func_end GpiStatusInfoCheckKey + + arm_func_start GpiSaveKeysToBuffer +GpiSaveKeysToBuffer: ; 0x02306958 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x48 + ldr fp, [r0] + str r0, [sp] + ldr r0, [fp, #0x3b4] + str r1, [sp, #4] + mov r8, #0 + bl ArrayLength_Gsi + mov r4, r0 + ldr r1, _02306C74 ; =ov00_0231B778 + add r0, sp, #8 + mov r2, r4 + bl OS_VsPrintf + cmp r4, #0 + mov sb, r8 + ble _02306AA4 + ldr r6, _02306C78 ; =0xAAAAAAAB +_0230699C: + ldr r0, [fp, #0x3b4] + mov r1, sb + bl ArrayNth_Gsi + mov r7, r0 + ldr sl, [r7] + mov r0, sl + bl strlen + umull r1, r2, r0, r6 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + subs r2, r0, r2 + mov r0, sl + beq _02306A0C + bl strlen + mov r5, r0 + mov r0, sl + bl strlen + mov r2, r0, lsl #2 + umull r1, r0, r2, r6 + umull r1, r2, r5, r6 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + sub r2, r5, r2 + rsb r1, r2, #4 + add r5, r1, r0, lsr #1 + b _02306A1C +_02306A0C: + bl strlen + mov r1, r0, lsl #2 + umull r0, r5, r1, r6 + mov r5, r5, lsr #1 +_02306A1C: + ldr sl, [r7, #4] + mov r0, sl + bl strlen + umull r1, r2, r0, r6 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + subs r2, r0, r2 + mov r0, sl + beq _02306A7C + bl strlen + mov r7, r0 + mov r0, sl + bl strlen + mov r2, r0, lsl #2 + umull r1, r0, r2, r6 + umull r1, r2, r7, r6 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + sub r2, r7, r2 + rsb r1, r2, #4 + add r2, r1, r0, lsr #1 + b _02306A8C +_02306A7C: + bl strlen + mov r1, r0, lsl #2 + umull r0, r2, r1, r6 + mov r2, r2, lsr #1 +_02306A8C: + add r0, r5, #2 + add r0, r0, r2 + add sb, sb, #1 + cmp sb, r4 + add r8, r8, r0 + blt _0230699C +_02306AA4: + add r0, sp, #8 + bl strlen + add r0, r8, r0 + add r0, r0, #1 + bl gsimalloc + ldr r1, [sp, #4] + cmp r0, #0 + str r0, [r1] + bne _02306AE0 + ldr r1, _02306C7C ; =ov00_0231B740 + ldr r0, [sp] + bl GpiSetErrorString + add sp, sp, #0x48 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02306AE0: + add r1, sp, #8 + bl OS_VsPrintf + ldr r1, [sp, #4] + cmp r4, #0 + ldr r1, [r1] + mov sl, #0 + add r7, r1, r0 + ble _02306C68 + ldr r5, _02306C78 ; =0xAAAAAAAB +_02306B04: + ldr r0, [fp, #0x3b4] + mov r1, sl + bl ArrayNth_Gsi + mov r8, r0 + ldr r1, _02306C80 ; =ov00_0231B784 + mov r0, r7 + bl strcat + ldr r6, [r8] + add r7, r7, #1 + mov r0, r6 + bl strlen + mov r2, r0 + mov r0, r6 + mov r1, r7 + mov r3, #2 + bl B64Encode + ldr sb, [r8] + mov r0, sb + bl strlen + umull r1, r2, r0, r5 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + subs r2, r0, r2 + mov r0, sb + beq _02306BA8 + bl strlen + mov r6, r0 + mov r0, sb + bl strlen + mov r2, r0, lsl #2 + umull r1, r0, r2, r5 + umull r1, r2, r6, r5 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + sub r2, r6, r2 + rsb r1, r2, #4 + add r0, r1, r0, lsr #1 + add r7, r7, r0 + b _02306BB8 +_02306BA8: + bl strlen + mov r1, r0, lsl #2 + umull r0, r2, r1, r5 + add r7, r7, r2, lsr #1 +_02306BB8: + ldr r1, _02306C80 ; =ov00_0231B784 + mov r0, r7 + bl strcat + ldr r6, [r8, #4] + add r7, r7, #1 + mov r0, r6 + bl strlen + mov r2, r0 + mov r0, r6 + mov r1, r7 + mov r3, #2 + bl B64Encode + ldr r8, [r8, #4] + mov r0, r8 + bl strlen + umull r1, r2, r0, r5 + mov r2, r2, lsr #1 + mov r1, #3 + umull r2, r3, r1, r2 + subs r2, r0, r2 + mov r0, r8 + beq _02306C4C + bl strlen + mov r6, r0 + mov r0, r8 + bl strlen + mov r1, r0, lsl #2 + umull r0, r3, r1, r5 + umull r0, r1, r6, r5 + mov r1, r1, lsr #1 + mov r0, #3 + umull r1, r2, r0, r1 + sub r1, r6, r1 + rsb r0, r1, #4 + add r0, r0, r3, lsr #1 + add r7, r7, r0 + b _02306C5C +_02306C4C: + bl strlen + mov r1, r0, lsl #2 + umull r0, r2, r1, r5 + add r7, r7, r2, lsr #1 +_02306C5C: + add sl, sl, #1 + cmp sl, r4 + blt _02306B04 +_02306C68: + mov r0, #0 + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02306C74: .word ov00_0231B778 +_02306C78: .word 0xAAAAAAAB +_02306C7C: .word ov00_0231B740 +_02306C80: .word ov00_0231B784 + arm_func_end GpiSaveKeysToBuffer + + arm_func_start GpiFailedOpCallback +GpiFailedOpCallback: ; 0x02306C84 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r6, r1 + ldr r2, [r6, #0xc] + ldr r1, [r6, #0x10] + mov r7, r0 + str r2, [sp, #8] + str r1, [sp, #0xc] + cmp r2, #0 + ldr r4, [r7] + beq _02307028 + ldr r0, [r6] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02307028 +_02306CC0: ; jump table + b _02306CDC ; case 0 + b _02306D68 ; case 1 + b _02306E60 ; case 2 + b _02306ECC ; case 3 + b _02306F54 ; case 4 + b _02306DE4 ; case 5 + b _02306FC0 ; case 6 +_02306CDC: + mov r0, #0x20 + bl gsimalloc + movs r5, r0 + bne _02306D04 + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306D04: + mov r1, #0 + mov r2, #0x20 + bl memset + ldr r1, [r6, #0x1c] + ldr r0, _02307038 ; =0x00000201 + str r1, [r5] + ldr r1, [r4, #0x5b8] + cmp r1, r0 + bne _02306D38 + ldr r1, [r4, #0x1a0] + mov r0, #0 + str r1, [r5, #4] + str r0, [r4, #0x1a0] +_02306D38: + add r1, sp, #8 + mov r0, r7 + mov r3, r5 + str r6, [sp] + mov r2, #0 + str r2, [sp, #4] + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307028 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306D68: + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _02306D90 + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306D90: + mov r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r3] + str r6, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307028 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306DE4: + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _02306E0C + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306E0C: + mov r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r3] + str r6, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307028 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306E60: + mov r0, #0x204 + bl gsimalloc + movs r4, r0 + bne _02306E88 + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306E88: + mov r1, #0 + mov r2, #0x204 + bl memset + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r4] + mov r0, r7 + mov r3, r4 + str r6, [sp] + mov r2, #0 + str r2, [sp, #4] + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307028 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306ECC: + mov r0, #0x10 + bl gsimalloc + movs r3, r0 + bne _02306EF4 + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306EF4: + mov r2, r3 + mov r1, #4 + mov r0, #0 +_02306F00: + strb r0, [r2] + strb r0, [r2, #1] + strb r0, [r2, #2] + strb r0, [r2, #3] + add r2, r2, #4 + subs r1, r1, #1 + bne _02306F00 + ldr r0, [r6, #0x1c] + mov r2, #0 + str r0, [r3] + str r2, [r3, #0xc] + str r6, [sp] + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307028 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306F54: + mov r0, #4 + bl gsimalloc + movs r3, r0 + bne _02306F7C + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306F7C: + mov r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r3] + str r6, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307028 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306FC0: + mov r0, #4 + bl gsimalloc + movs r3, r0 + bne _02306FE8 + ldr r1, _02307034 ; =ov00_0231B788 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02306FE8: + mov r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r3] + str r6, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02307028: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02307034: .word ov00_0231B788 +_02307038: .word 0x00000201 + arm_func_end GpiFailedOpCallback + + arm_func_start GpiAddOperation +GpiAddOperation: ; 0x0230703C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r0, #0x24 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [r8] + bl gsimalloc + cmp r0, #0 + bne _02307078 + ldr r1, _023070F0 ; =ov00_0231B788 + mov r0, r8 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02307078: + str r7, [r0] + ldr r1, [sp, #0x18] + str r6, [r0, #4] + str r1, [r0, #8] + mov r1, #0 + str r1, [r0, #0x14] + cmp r7, #0 + moveq r1, #1 + streq r1, [r0, #0x18] + beq _023070C0 + ldr r2, [r4, #0x234] + add r1, r2, #1 + str r1, [r4, #0x234] + str r2, [r0, #0x18] + ldr r1, [r4, #0x234] + cmp r1, #2 + movlt r1, #2 + strlt r1, [r4, #0x234] +_023070C0: + mov r3, #0 + ldr r2, [sp, #0x1c] + str r3, [r0, #0x1c] + ldr r1, [sp, #0x20] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + ldr r1, [r4, #0x5c4] + str r1, [r0, #0x20] + str r0, [r4, #0x5c4] + str r0, [r5] + mov r0, r3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023070F0: .word ov00_0231B788 + arm_func_end GpiAddOperation + + arm_func_start GpiDestroyOperation +GpiDestroyOperation: ; 0x023070F4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldr r1, [r4] + ldr r2, [r0] + cmp r1, #3 + bne _02307150 + ldr r0, [r2, #0x238] + ldr r5, [r4, #4] + sub r0, r0, #1 + str r0, [r2, #0x238] + ldr r0, [r5, #4] + mov r1, #2 + bl shutdown_gsi + ldr r0, [r5, #4] + bl SocketClose + ldr r0, [r5, #0x18] + bl gsifree + mov r0, #0 + str r0, [r5, #0x18] + ldr r0, [r5, #8] + bl gsifree + mov r0, #0 + str r0, [r5, #8] +_02307150: + ldr r0, [r4, #4] + bl gsifree + mov r1, #0 + mov r0, r4 + str r1, [r4, #4] + bl gsifree + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpiDestroyOperation + + arm_func_start GpiRemoveOperation +GpiRemoveOperation: ; 0x0230716C + stmdb sp!, {r3, lr} + ldr r3, [r0] + mov ip, #0 + ldr r2, [r3, #0x5c4] + cmp r2, #0 + ldmeqia sp!, {r3, pc} +_02307184: + cmp r2, r1 + bne _023071A8 + cmp ip, #0 + ldreq r2, [r2, #0x20] + streq r2, [r3, #0x5c4] + ldrne r2, [r1, #0x20] + strne r2, [ip, #0x20] + bl GpiDestroyOperation + ldmia sp!, {r3, pc} +_023071A8: + mov ip, r2 + ldr r2, [r2, #0x20] + cmp r2, #0 + bne _02307184 + ldmia sp!, {r3, pc} + arm_func_end GpiRemoveOperation + + arm_func_start GpiFindOperationByID +GpiFindOperationByID: ; 0x023071BC + ldr r0, [r0] + ldr r3, [r0, #0x5c4] + cmp r3, #0 + beq _023071F4 +_023071CC: + ldr r0, [r3, #0x18] + cmp r0, r2 + bne _023071E8 + cmp r1, #0 + strne r3, [r1] + mov r0, #1 + bx lr +_023071E8: + ldr r3, [r3, #0x20] + cmp r3, #0 + bne _023071CC +_023071F4: + cmp r1, #0 + movne r0, #0 + strne r0, [r1] + mov r0, #0 + bx lr + arm_func_end GpiFindOperationByID + + arm_func_start GpiOperationsAreBlocking +GpiOperationsAreBlocking: ; 0x02307208 + ldr r0, [r0] + ldr r1, [r0, #0x5c4] + cmp r1, #0 + beq _0230723C +_02307218: + ldr r0, [r1, #8] + cmp r0, #0 + ldrne r0, [r1] + cmpne r0, #3 + movne r0, #1 + bxne lr + ldr r1, [r1, #0x20] + cmp r1, #0 + bne _02307218 +_0230723C: + mov r0, #0 + bx lr + arm_func_end GpiOperationsAreBlocking + + arm_func_start GpiProcessOperation +GpiProcessOperation: ; 0x02307244 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r3, [r4] + mov ip, #0 + cmp r3, #6 + addls pc, pc, r3, lsl #2 + b _023072C0 +_02307260: ; jump table + b _0230727C ; case 0 + b _02307288 ; case 1 + b _023072A0 ; case 2 + b _023072C0 ; case 3 + b _023072AC ; case 4 + b _02307294 ; case 5 + b _023072B8 ; case 6 +_0230727C: + bl GpiProcessConnect + mov ip, r0 + b _023072C0 +_02307288: + bl GpiProcessNewProfile + mov ip, r0 + b _023072C0 +_02307294: + bl GpiProcessDeleteProfle + mov ip, r0 + b _023072C0 +_023072A0: + bl GpiProcessGetInfo + mov ip, r0 + b _023072C0 +_023072AC: + bl GpiProcessRegisterUniqueNick + mov ip, r0 + b _023072C0 +_023072B8: + bl GpiProcessRegisterCdKey + mov ip, r0 +_023072C0: + cmp ip, #0 + strne ip, [r4, #0x1c] + mov r0, ip + ldmia sp!, {r4, pc} + arm_func_end GpiProcessOperation + + arm_func_start GpiProcessPeerInitiatingConnection +GpiProcessPeerInitiatingConnection: ; 0x023072D0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r7, r0 + ldr r4, [r7] + movs r6, r1 + addeq sp, sp, #0x14 + mov r3, #0 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r2, [r6] + cmp r2, #0x6a + cmpne r2, #0x64 + addeq sp, sp, #0x14 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, pc} + sub r2, r2, #0x65 + cmp r2, #3 + addls pc, pc, r2, lsl #2 + b _02307568 +_0230731C: ; jump table + b _02307568 ; case 0 + b _0230732C ; case 1 + b _02307340 ; case 2 + b _0230749C ; case 3 +_0230732C: + bl GpiPeerStartConnect + cmp r0, #0 + beq _02307568 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_02307340: + ldrh r1, [r6, #0xc] + ldr r0, [r6, #8] + add r2, sp, #8 + bl GsUdpEngineGetPeerState + ldr r0, [sp, #8] + cmp r0, #1 + bne _02307568 + ldr r1, [r6, #0x10] + add r2, sp, #0xc + mov r0, r7 + mov r5, #1 + bl GpiGetProfile + cmp r0, #0 + bne _02307390 + ldr r1, _023075B8 ; =ov00_0231B798 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_02307390: + ldr r2, _023075BC ; =ov00_0231B7B4 + mov r0, r7 + add r1, r6, #0x2c + bl GpiAppendStringToBuffer + ldr r2, _023075C0 ; =ov00_0231B7BC + mov r0, r7 + add r1, r6, #0x2c + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x1a0] + mov r0, r7 + add r1, r6, #0x2c + bl GpiAppendIntToBuffer + ldr r2, _023075C4 ; =ov00_0231B7C4 + mov r0, r7 + add r1, r6, #0x2c + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r6, #0x2c + add r2, r4, #0x110 + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r6, #0x2c + ldr r2, _023075C8 ; =ov00_0231B7CC + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r6, #0x2c + ldr r2, [sp, #0xc] + ldr r2, [r2, #0x1c] + bl GpiAppendStringToBuffer + mov r0, r7 + add r1, r6, #0x2c + ldr r2, _023075CC ; =ov00_0231B7D4 + bl GpiAppendStringToBuffer + ldr r2, [r4, #0x5d4] + cmp r2, #0 + beq _02307454 + ldr r3, [r6, #0x10] + mov r0, #0 +_02307428: + ldr r1, [r2, #0x10] + cmp r1, r3 + bne _02307448 + cmp r2, r6 + beq _02307448 + ldr r1, [r2] + cmp r1, #0x67 + movle r5, r0 +_02307448: + ldr r2, [r2, #0x4c] + cmp r2, #0 + bne _02307428 +_02307454: + cmp r5, #0 + beq _02307490 + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x1c] + bl gsifree + ldr r0, [sp, #0xc] + mov r1, #0 + str r1, [r0, #0x1c] + ldr r0, [sp, #0xc] + bl GpiCanFreeProfile + cmp r0, #0 + beq _02307490 + ldr r1, [sp, #0xc] + mov r0, r7 + bl GpiRemoveProfile +_02307490: + mov r0, #0x68 + str r0, [r6] + b _02307568 +_0230749C: + ldr r0, [r6, #0x1c] + cmp r0, #0 + beq _023074B4 + ldr r1, _023075CC ; =ov00_0231B7D4 + bl strstr + mov r3, r0 +_023074B4: + cmp r3, #0 + beq _02307568 + mov r0, #0 + strb r0, [r3] + ldr r4, [r6, #0x1c] + ldr r1, _023075D0 ; =ov00_0231B7DC + mov r0, r4 + mov r2, #7 + bl strncmp + cmp r0, #0 + bne _02307528 + ldr r0, [r6, #0x18] + add r0, r0, #1 + str r0, [r6, #0x18] + cmp r0, #1 + ble _0230750C + ldr r1, _023075D4 ; =ov00_0231B7E4 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_0230750C: + mov r0, r7 + mov r1, r6 + bl GpiPeerGetSig + cmp r0, #0 + beq _02307558 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_02307528: + ldr r1, _023075D8 ; =ov00_0231B808 + mov r0, r4 + mov r2, #6 + bl strncmp + cmp r0, #0 + beq _02307558 + ldr r1, _023075DC ; =ov00_0231B810 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x14 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_02307558: + mov r0, #0x69 + str r0, [r6] + mov r0, #0 + str r0, [r6, #0x24] +_02307568: + ldr r0, [r6, #0x34] + cmp r0, #0 + ble _023075AC + add r1, sp, #0x10 + mov r0, #1 + str r1, [sp] + str r0, [sp, #4] + ldrh r2, [r6, #0xc] + ldr r1, [r6, #8] + mov r0, r7 + add r3, r6, #0x2c + bl GpiSendBufferToPeer + ldr r1, [sp, #0x10] + cmp r1, #0 + cmpeq r0, #0 + movne r0, #0x6a + strne r0, [r6] +_023075AC: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_023075B8: .word ov00_0231B798 +_023075BC: .word ov00_0231B7B4 +_023075C0: .word ov00_0231B7BC +_023075C4: .word ov00_0231B7C4 +_023075C8: .word ov00_0231B7CC +_023075CC: .word ov00_0231B7D4 +_023075D0: .word ov00_0231B7DC +_023075D4: .word ov00_0231B7E4 +_023075D8: .word ov00_0231B808 +_023075DC: .word ov00_0231B810 + arm_func_end GpiProcessPeerInitiatingConnection + + arm_func_start GpiProcessPeerAcceptingConnection +GpiProcessPeerAcceptingConnection: ; 0x023075E0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x184 + mov r4, r1 + ldr r1, [r4] + mov r5, r0 + cmp r1, #0x68 + ldr r7, [r5] + addne sp, sp, #0x184 + movne r0, #3 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrh r1, [r4, #0xc] + ldr r0, [r4, #8] + add r2, sp, #0xc + bl GsUdpEngineGetPeerState + ldr r0, [sp, #0xc] + cmp r0, #3 + bne _02307638 + mov r0, #0x6a + str r0, [r4] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_02307638: + ldr r0, [r4, #0x1c] + ldr r1, _02307804 ; =ov00_0231B7D4 + bl strstr + cmp r0, #0 + beq _023077F8 + mov r1, #0 + strb r1, [r0] + ldr r6, [r4, #0x1c] + ldr r1, _02307808 ; =ov00_0231B7B4 + mov r0, r6 + mov r2, #6 + bl strncmp + cmp r0, #0 + bne _023077DC + ldr r1, _0230780C ; =ov00_0231B7BC + add r2, sp, #0x71 + mov r0, r6 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + bne _023076A0 + mov r0, #0x6a + str r0, [r4] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_023076A0: + add r0, sp, #0x71 + bl atoi + mov r6, r0 + ldr r0, [r4, #0x1c] + ldr r1, _02307810 ; =ov00_0231B7C4 + add r2, sp, #0x52 + mov r3, #0x1f + bl GpiValueForKey + cmp r0, #0 + bne _023076DC + mov r0, #0x6a + str r0, [r4] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_023076DC: + ldr r0, [r4, #0x1c] + ldr r1, _02307814 ; =ov00_0231B7CC + add r2, sp, #0x31 + mov r3, #0x21 + bl GpiValueForKey + cmp r0, #0 + bne _0230770C + mov r0, #0x6a + str r0, [r4] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_0230770C: + str r6, [sp] + add r2, r7, #0x77 + ldr r3, [r7, #0x1a0] + ldr r1, _02307818 ; =ov00_0231B830 + add r0, sp, #0x81 + add r2, r2, #0x100 + bl OS_VsPrintf + add r0, sp, #0x81 + bl strlen + mov r1, r0 + add r0, sp, #0x81 + add r2, sp, #0x10 + bl MD5Digest_Gsi + add r0, sp, #0x31 + add r1, sp, #0x10 + bl strcmp + cmp r0, #0 + beq _023077AC + ldr r2, _0230781C ; =ov00_0231B7DC + mov r0, r5 + add r1, r4, #0x2c + bl GpiAppendStringToBuffer + ldr r2, _02307804 ; =ov00_0231B7D4 + mov r0, r5 + add r1, r4, #0x2c + bl GpiAppendStringToBuffer + add r1, sp, #8 + mov r0, #1 + str r1, [sp] + str r0, [sp, #4] + ldrh r2, [r4, #0xc] + ldr r1, [r4, #8] + mov r0, r5 + add r3, r4, #0x2c + bl GpiSendBufferToPeer + mov r0, #0x6a + str r0, [r4] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_023077AC: + ldr r2, _02307820 ; =ov00_0231B808 + mov r0, r5 + add r1, r4, #0x2c + bl GpiAppendStringToBuffer + ldr r2, _02307804 ; =ov00_0231B7D4 + mov r0, r5 + add r1, r4, #0x2c + bl GpiAppendStringToBuffer + mov r0, #0x69 + str r0, [r4] + str r6, [r4, #0x10] + b _023077F0 +_023077DC: + mov r0, #0x6a + str r0, [r4] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_023077F0: + mov r0, #0 + str r0, [r4, #0x24] +_023077F8: + mov r0, #0 + add sp, sp, #0x184 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02307804: .word ov00_0231B7D4 +_02307808: .word ov00_0231B7B4 +_0230780C: .word ov00_0231B7BC +_02307810: .word ov00_0231B7C4 +_02307814: .word ov00_0231B7CC +_02307818: .word ov00_0231B830 +_0230781C: .word ov00_0231B7DC +_02307820: .word ov00_0231B808 + arm_func_end GpiProcessPeerAcceptingConnection + + arm_func_start GpiPeerSendMessages +GpiPeerSendMessages: ; 0x02307824 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0xc + movs r8, r1 + mov sb, r0 + addeq sp, sp, #0xc + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [r8, #0x34] + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [r8, #0x3c] + bl ArrayLength_Gsi + cmp r0, #0 + beq _023078F0 + mov sl, #0 + mov r7, sl + add r5, sp, #8 + mov r4, sl +_02307874: + ldr r0, [r8, #0x3c] + mov r1, r7 + bl ArrayNth_Gsi + mov r6, r0 + str r5, [sp] + str r4, [sp, #4] + ldrh r2, [r8, #0xc] + ldr r1, [r8, #8] + mov r0, sb + mov r3, r6 + bl GpiSendBufferToPeer + ldr r1, [sp, #8] + cmp r1, #0 + cmpeq r0, #0 + beq _023078C4 + mov r0, #0x6a + str r0, [r8] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_023078C4: + ldr r1, [r6, #0xc] + ldr r0, [r6, #8] + cmp r1, r0 + bne _023078F0 + ldr r0, [r8, #0x3c] + mov r1, sl + bl ArrayDeleteAt_Gsi + ldr r0, [r8, #0x3c] + bl ArrayLength_Gsi + cmp r0, #0 + bne _02307874 +_023078F0: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end GpiPeerSendMessages + + arm_func_start GpiProcessPeerConnected +GpiProcessPeerConnected: ; 0x023078FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov r7, r0 + ldr r5, [r7] + movs r6, r1 + addeq sp, sp, #0x2c + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r6, #0x34] + cmp r1, #0 + beq _0230796C + add r2, sp, #0x24 + mov r1, #1 + str r2, [sp] + str r1, [sp, #4] + ldrh r2, [r6, #0xc] + ldr r1, [r6, #8] + add r3, r6, #0x2c + bl GpiSendBufferToPeer + ldr r1, [sp, #0x24] + cmp r1, #0 + cmpeq r0, #0 + beq _0230796C + mov r0, #0x6a + str r0, [r6] + add sp, sp, #0x2c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230796C: + ldr r0, [r6, #0x34] + cmp r0, #0 + bne _023079A4 + mov r0, r7 + mov r1, r6 + bl GpiPeerSendMessages + cmp r0, #0 + addne sp, sp, #0x2c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r6] + cmp r0, #0x6a + addeq sp, sp, #0x2c + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023079A4: + ldr r0, [r6, #0x24] + cmp r0, #0 + ble _023079C4 + mov r0, #0 + bl time_gsi + add r0, r0, #0x710 + add r0, r0, #0x2000 + str r0, [r6, #0x14] +_023079C4: + mov sb, #0 + mov sl, #2 + add fp, sp, #0x1c + add r4, sp, #0x10 +_023079D4: + mov r0, r7 + add r1, r6, #0x1c + add r2, sp, #0x18 + add r3, sp, #0x14 + str r4, [sp] + bl GpiReadMessageFromBuffer + cmp r0, #0 + addne sp, sp, #0x2c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [sp, #0x18] + cmp r2, #0 + beq _02307C38 + ldr r1, [sp, #0x14] + cmp r1, #0x69 + bgt _02307A54 + cmp r1, #0x68 + blt _02307A28 + beq _02307BD4 + cmp r1, #0x69 + beq _02307BF0 + b _02307C2C +_02307A28: + cmp r1, #5 + bgt _02307A48 + cmp r1, #1 + blt _02307C2C + beq _02307A98 + cmp r1, #5 + beq _02307B1C + b _02307C2C +_02307A48: + cmp r1, #0x66 + beq _02307BB0 + b _02307C2C +_02307A54: + cmp r1, #0xc9 + bgt _02307A6C + bge _02307C0C + cmp r1, #0xc8 + beq _02307C0C + b _02307C2C +_02307A6C: + sub r0, r1, #0xca + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02307C2C +_02307A7C: ; jump table + b _02307C0C ; case 0 + b _02307C0C ; case 1 + b _02307C0C ; case 2 + b _02307C0C ; case 3 + b _02307C0C ; case 4 + b _02307C0C ; case 5 + b _02307C0C ; case 6 +_02307A98: + ldr r1, [r5, #0x1c0] + ldr r0, [r5, #0x1c4] + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + cmp r1, #0 + beq _02307C2C + mov r0, #0xc + bl gsimalloc + movs r8, r0 + bne _02307AD8 + ldr r1, _02307C70 ; =ov00_0231B838 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x2c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02307AD8: + ldr r0, [r6, #0x10] + str r0, [r8] + ldr r0, [sp, #0x18] + bl goastrdup + str r0, [r8, #8] + mov r0, #0 + bl time_gsi + str r0, [r8, #4] + mov r3, r8 + mov r0, r7 + stmia sp, {sb, sl} + ldmia fp, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307C2C + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02307B1C: + ldr r1, [r5, #0x1c8] + ldr r0, [r5, #0x1cc] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + beq _02307C2C + mov r0, #0xc + bl gsimalloc + movs r8, r0 + bne _02307B5C + ldr r1, _02307C70 ; =ov00_0231B838 + mov r0, r7 + bl GpiSetErrorString + add sp, sp, #0x2c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02307B5C: + ldr r0, [r6, #0x10] + str r0, [r8] + ldr r0, [sp, #0x18] + bl goastrdup + str r0, [r8, #8] + mov r0, #0 + bl time_gsi + str r0, [r8, #4] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r1, sp, #8 + mov r3, r8 + mov r0, r7 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _02307C2C + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02307BB0: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [r6, #0x10] + ldr r3, _02307C74 ; =ov00_0231B848 + mov r0, r7 + mov r2, #0x67 + bl GpiSendBuddyMessage + b _02307C2C +_02307BD4: + mov r0, r7 + mov r1, r6 + bl GpiBuddyHandleKeyRequest + cmp r0, #0 + beq _02307C2C + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02307BF0: + mov r0, r7 + mov r1, r6 + bl GpiBuddyHandleKeyReply + cmp r0, #0 + beq _02307C2C + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02307C0C: + str r2, [sp] + mov r2, r1 + ldr r1, [sp, #0x10] + mov r0, r7 + str r1, [sp, #4] + mov r1, r6 + ldr r3, [r6, #0x1c] + bl GpiHandleTransferMessage +_02307C2C: + mov r0, r7 + add r1, r6, #0x1c + bl GpiClipBufferToPosition +_02307C38: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _023079D4 + ldrh r1, [r6, #0xc] + ldr r0, [r6, #8] + add r2, sp, #0x28 + bl GsUdpEngineGetPeerState + ldr r0, [sp, #0x28] + cmp r0, #3 + moveq r0, #0x6a + streq r0, [r6] + mov r0, #0 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02307C70: .word ov00_0231B838 +_02307C74: .word ov00_0231B848 + arm_func_end GpiProcessPeerConnected + + arm_func_start GpiCheckTimedOutPeerOperations +GpiCheckTimedOutPeerOperations: ; 0x02307C78 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + movs r7, r1 + ldr r6, [r7, #0x44] + mov r8, r0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r5, #0x10 + mov r4, #0 + add sb, sp, #8 + b _02307D28 +_02307CA4: + ldr r0, [r6] + cmp r0, #2 + beq _02307D24 + bl current_time_gsi + ldr r1, [r6, #0x14] + cmp r0, r1 + bls _02307D24 + ldr r0, [r6, #8] + cmp r0, #0 + beq _02307D24 + ldr r0, [r6, #0x10] + cmp r0, #0x68 + bne _02307D18 + mov r0, r5 + bl gsimalloc + ldmib r6, {r1, r2} + mov r3, r0 + str r4, [r3, #4] + str r4, [r3, #0xc] + str r4, [r3, #8] + ldr r0, [r7, #0x10] + str r2, [sp, #8] + str r0, [r3] + str r4, [sp] + str r1, [sp, #0xc] + mov r0, r8 + str r4, [sp, #4] + ldmia sb, {r1, r2} + bl GpiAddCallback +_02307D18: + mov r0, r7 + mov r1, r6 + bl GpiPeerRemoveOp +_02307D24: + ldr r6, [r6, #0xc] +_02307D28: + cmp r6, #0 + ldrne r0, [r7, #0x48] + cmpne r6, r0 + bne _02307CA4 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end GpiCheckTimedOutPeerOperations + + arm_func_start GpiProcessPeer +GpiProcessPeer: ; 0x02307D40 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r2, [r5] + mov r6, r0 + cmp r2, #0x64 + mov r4, #0 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r2, #0x69 + beq _02307D88 + ldr r2, [r5, #4] + cmp r2, #0 + beq _02307D80 + bl GpiProcessPeerInitiatingConnection + mov r4, r0 + b _02307D88 +_02307D80: + bl GpiProcessPeerAcceptingConnection + mov r4, r0 +_02307D88: + cmp r4, #0 + ldreq r0, [r5] + cmpeq r0, #0x69 + bne _02307DB4 + mov r0, r6 + mov r1, r5 + bl GpiProcessPeerConnected + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl GpiCheckTimedOutPeerOperations +_02307DB4: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiProcessPeer + + arm_func_start GpiDestroyPeer +GpiDestroyPeer: ; 0x02307DBC + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r0, [r4, #0x1c] + bl gsifree + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x2c] + bl gsifree + mov r0, #0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _02307DFC + bl ArrayFree_Gsi + mov r0, #0 + str r0, [r4, #0x3c] +_02307DFC: + mov r0, r4 + bl gsifree + ldmia sp!, {r4, pc} + arm_func_end GpiDestroyPeer + + arm_func_start GpiRemovePeer +GpiRemovePeer: ; 0x02307E08 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + movs r4, r1 + ldr r1, [r5] + ldrne r2, [r1, #0x5d4] + cmpne r2, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r2, r4 + ldreq r0, [r4, #0x4c] + streq r0, [r1, #0x5d4] + beq _02307E60 + ldr r0, [r2, #0x4c] + cmp r0, r4 + beq _02307E58 +_02307E40: + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r2, r0 + ldr r0, [r0, #0x4c] + cmp r0, r4 + bne _02307E40 +_02307E58: + ldr r0, [r4, #0x4c] + str r0, [r2, #0x4c] +_02307E60: + ldr r0, [r4, #0x3c] + bl ArrayLength_Gsi + cmp r0, #0 + beq _02307EC4 + mov r6, #0 + mov r7, r6 +_02307E78: + ldr r0, [r4, #0x3c] + mov r1, r7 + bl ArrayNth_Gsi + ldr r2, [r0, #0x10] + cmp r2, #0x64 + bge _02307EA8 + ldr ip, [r0] + ldr r3, [r0, #0x14] + ldr r1, [r4, #0x10] + mov r0, r5 + add r3, ip, r3 + bl GpiSendServerBuddyMessage +_02307EA8: + ldr r0, [r4, #0x3c] + mov r1, r6 + bl ArrayDeleteAt_Gsi + ldr r0, [r4, #0x3c] + bl ArrayLength_Gsi + cmp r0, #0 + bne _02307E78 +_02307EC4: + mov r0, r5 + mov r1, r4 + bl GpiDestroyPeer + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GpiRemovePeer + + arm_func_start GpiProcessPeers +GpiProcessPeers: ; 0x02307ED4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r5, [r4] + bl GsUdpEngineThink + ldr r7, [r5, #0x5d4] + cmp r7, #0 + beq _02307F58 + mov r5, #0 +_02307EF4: + ldr r0, [r7] + ldr r6, [r7, #0x4c] + cmp r0, #0x6a + mov r0, r4 + mov r1, r7 + bne _02307F14 + bl GpiRemovePeer + b _02307F4C +_02307F14: + bl GpiProcessPeer + ldr r1, [r7] + cmp r1, #0x6a + beq _02307F40 + cmp r0, #0 + bne _02307F40 + mov r0, r5 + bl time_gsi + ldr r1, [r7, #0x14] + cmp r0, r1 + ble _02307F4C +_02307F40: + mov r0, r4 + mov r1, r7 + bl GpiRemovePeer +_02307F4C: + mov r7, r6 + cmp r6, #0 + bne _02307EF4 +_02307F58: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GpiProcessPeers + + arm_func_start GpiGetPeerByProfile +GpiGetPeerByProfile: ; 0x02307F60 + ldr r0, [r0] + ldr r0, [r0, #0x5d4] + cmp r0, #0 + beq _02307F88 +_02307F70: + ldr r2, [r0, #0x10] + cmp r2, r1 + bxeq lr + ldr r0, [r0, #0x4c] + cmp r0, #0 + bne _02307F70 +_02307F88: + mov r0, #0 + bx lr + arm_func_end GpiGetPeerByProfile + + arm_func_start GpiGetPeerByAddr +GpiGetPeerByAddr: ; 0x02307F90 + ldr r0, [r0] + cmp r1, #0 + cmpeq r2, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0, #0x5d4] + cmp r0, #0 + beq _02307FD0 +_02307FB0: + ldr r3, [r0, #8] + cmp r3, r1 + ldreqh r3, [r0, #0xc] + cmpeq r3, r2 + bxeq lr + ldr r0, [r0, #0x4c] + cmp r0, #0 + bne _02307FB0 +_02307FD0: + mov r0, #0 + bx lr + arm_func_end GpiGetPeerByAddr + + arm_func_start GpiFreeMessage +GpiFreeMessage: ; 0x02307FD8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + bl gsifree + mov r0, #0 + str r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end GpiFreeMessage + + arm_func_start GpiAddPeer +GpiAddPeer: ; 0x02307FF4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r5, [r0] + mov r0, #0x50 + mov r7, r1 + mov r6, r2 + bl gsimalloc + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, #0 + mov r2, #0x50 + bl memset + mov r0, #0x64 + stmia r4, {r0, r6} + mov r0, #0 + str r7, [r4, #0x10] + bl time_gsi + add r0, r0, #0x710 + add r0, r0, #0x2000 + str r0, [r4, #0x14] + ldr r0, [r5, #0x5d4] + ldr r2, _0230807C ; =GpiFreeMessage + str r0, [r4, #0x4c] + mov r0, #0x18 + mov r1, #0 + bl ArrayNew_Gsi + str r0, [r4, #0x3c] + str r4, [r5, #0x5d4] + mov r1, #0 + str r1, [r4, #0x44] + str r1, [r4, #0x48] + mov r0, r4 + str r1, [r4, #0x40] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230807C: .word GpiFreeMessage + arm_func_end GpiAddPeer + + arm_func_start GpiPeerGetSig +GpiPeerGetSig: ; 0x02308080 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r2, #0 + str r2, [sp] + mov r4, r1 + str r2, [sp, #4] + add r3, sp, #0xc + mov r1, #2 + mov r5, r0 + str r2, [sp, #8] + bl GpiAddOperation + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, [sp, #0xc] + ldr r1, [r4, #0x10] + ldr r2, [r0, #0x18] + mov r0, r5 + bl GpiSendGetInfo + cmp r0, #0 + moveq r0, #0x65 + streq r0, [r4] + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpiPeerGetSig + + arm_func_start GpiPeerStartConnect +GpiPeerStartConnect: ; 0x023080E4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + ldr r1, [r5, #0x10] + mov r6, r0 + add r2, sp, #4 + ldr r4, [r6] + bl GpiGetProfile + cmp r0, #0 + bne _02308124 + ldr r1, _023081D8 ; =ov00_0231B798 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_02308124: + ldr r0, [sp, #4] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _023081C4 + ldrh r1, [r0, #0x20] + ldr r0, [r0, #0x1c] + add r2, sp, #0 + bl GsUdpEngineGetPeerState + ldr r0, [sp] + cmp r0, #1 + cmpeq r0, #0 + beq _023081A4 + ldr r0, [sp, #4] + ldr r3, _023081DC ; =0x00002710 + ldr r0, [r0, #0xc] + add r2, r4, #0x220 + ldrh r1, [r0, #0x20] + ldr r0, [r0, #0x1c] + bl GsUdpEngineStartTalkingToPeer + cmp r0, #5 + beq _023081A4 + ldr r2, _023081E0 ; =ov00_0231B84C + mov r0, r6 + mov r1, #5 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #0 + bl GpiCallErrorCallback + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_023081A4: + ldr r0, [sp, #4] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x1c] + str r0, [r5, #8] + ldr r0, [sp, #4] + ldr r0, [r0, #0xc] + ldrh r0, [r0, #0x20] + strh r0, [r5, #0xc] +_023081C4: + mov r0, #0x67 + str r0, [r5] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023081D8: .word ov00_0231B798 +_023081DC: .word 0x00002710 +_023081E0: .word ov00_0231B84C + arm_func_end GpiPeerStartConnect + + arm_func_start GpiPeerAddMessage +GpiPeerAddMessage: ; 0x023081E4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + movs r4, r1 + mov r8, r0 + mov r7, r2 + mov r6, r3 + addeq sp, sp, #0x18 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r6, #0 + addeq sp, sp, #0x18 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + bl strlen + mov r5, r0 + add r1, sp, #0 + mov r3, #0 + str r3, [r1, #0x10] + ldr r2, _02308340 ; =ov00_0231B884 + mov r0, r8 + str r3, [r1] + str r3, [r1, #4] + str r3, [r1, #8] + str r3, [r1, #0xc] + str r3, [r1, #0x14] + str r7, [sp, #0x10] + bl GpiAppendStringToBuffer + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #0 + mov r0, r8 + mov r2, r7 + bl GpiAppendIntToBuffer + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r2, _02308344 ; =ov00_0231B888 + add r1, sp, #0 + mov r0, r8 + bl GpiAppendStringToBuffer + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #0 + mov r0, r8 + mov r2, r5 + bl GpiAppendIntToBuffer + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r2, _02308348 ; =ov00_0231B890 + add r1, sp, #0 + mov r0, r8 + bl GpiAppendStringToBuffer + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr ip, [sp, #8] + add r1, sp, #0 + mov r0, r8 + mov r2, r6 + mov r3, r5 + str ip, [sp, #0x14] + bl GpiAppendStringToBufferLen + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #0 + mov r0, r8 + mov r2, #0 + bl GpiAppendCharToBuffer + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl ArrayAppend_Gsi + mov r0, #0 + bl time_gsi + add r0, r0, #0x710 + add r0, r0, #0x2000 + str r0, [r4, #0x14] + mov r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02308340: .word ov00_0231B884 +_02308344: .word ov00_0231B888 +_02308348: .word ov00_0231B890 + arm_func_end GpiPeerAddMessage + + arm_func_start GpiPeerStartTransferMessage +GpiPeerStartTransferMessage: ; 0x0230834C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x48 + mov r4, r1 + cmp r3, #0 + mov r5, r0 + addeq sp, sp, #0x48 + ldr lr, [r3] + ldmib r3, {r1, ip} + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, pc} + str r1, [sp] + ldr r1, _023083A4 ; =ov00_0231B898 + add r0, sp, #8 + mov r3, lr + str ip, [sp, #4] + bl OS_VsPrintf + add r2, sp, #8 + mov r0, r5 + mov r1, r4 + bl GpiSendOrBufferString + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023083A4: .word ov00_0231B898 + arm_func_end GpiPeerStartTransferMessage + + arm_func_start GpiPeerFinishTransferMessage +GpiPeerFinishTransferMessage: ; 0x023083A8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x20 + movs r6, r1 + mov r7, r0 + mov r5, r2 + mov r4, r3 + addeq sp, sp, #0x20 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mvn r0, #0 + cmp r5, #0 + ldreq r5, _02308474 ; =ov00_0231B8AC + cmp r4, r0 + bne _023083EC + mov r0, r5 + bl strlen + mov r4, r0 +_023083EC: + ldr r1, _02308478 ; =ov00_0231B8B0 + add r0, sp, #0 + mov r2, r4 + bl OS_VsPrintf + add r2, sp, #0 + mov r0, r7 + mov r1, r6 + bl GpiSendOrBufferString + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl GpiSendOrBufferStringLenToPeer + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #0 + bl GpiSendOrBufferChar + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + bl time_gsi + add r0, r0, #0x710 + add r0, r0, #0x2000 + str r0, [r6, #0x14] + mov r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02308474: .word ov00_0231B8AC +_02308478: .word ov00_0231B8B0 + arm_func_end GpiPeerFinishTransferMessage + + arm_func_start GpiPeerLeftCallback +GpiPeerLeftCallback: ; 0x0230847C + stmdb sp!, {r3, lr} + mov ip, r0 + mov r2, r1 + mov r0, r3 + mov r1, ip + bl GpiGetPeerByAddr + cmp r0, #0 + movne r1, #0x6a + strne r1, [r0] + ldmia sp!, {r3, pc} + arm_func_end GpiPeerLeftCallback + + arm_func_start GpiPeerMessageCallback +GpiPeerMessageCallback: ; 0x023084A4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r4, [sp, #0x24] + mov r7, r0 + mov r6, r1 + mov sl, r2 + mov r0, r4 + mov r1, r7 + mov r2, r6 + mov sb, r3 + bl GpiGetPeerByAddr + movs r5, r0 + bne _023084FC + mov r0, r4 + mvn r1, #0 + mov r2, #0 + bl GpiAddPeer + movs r5, r0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, #0x68 + str r0, [r5] + str r7, [r5, #8] + strh r6, [r5, #0xc] +_023084FC: + ldr r7, [r5, #0x24] + ldr r8, [r5, #0x20] + ldr r6, [r5, #0x1c] + sub r0, r8, r7 + cmp sb, r0 + ble _02308564 + cmp sb, #0x800 + movlt r0, #0x800 + movge r0, sb + add r8, r7, r0 + mov r0, r6 + add r1, r8, #1 + bl gsirealloc + cmp r0, #0 + bne _02308560 + mov r0, r6 + bl gsifree + ldr r1, _02308598 ; =ov00_0231B838 + mov r0, r4 + bl GpiSetErrorString + mov r0, r4 + mov r1, #1 + mov r2, #0 + bl GpiCallErrorCallback + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02308560: + mov r6, r0 +_02308564: + mov r1, sl + mov r2, sb + add r0, r6, r7 + bl memcpy + str r6, [r5, #0x1c] + ldr r0, [r5, #0x24] + mov r1, #0 + add r0, r0, sb + str r0, [r5, #0x24] + str r8, [r5, #0x20] + ldr r0, [r5, #0x24] + strb r1, [r6, r0] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02308598: .word ov00_0231B838 + arm_func_end GpiPeerMessageCallback + + arm_func_start GpiPeerAcceptedCallback +GpiPeerAcceptedCallback: ; 0x0230859C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r2, r1 + mov r1, r4 + ldr r0, [sp, #8] + mov r4, r3 + bl GpiGetPeerByAddr + cmp r0, #0 + cmpne r4, #0 + movne r1, #0x6a + strne r1, [r0] + ldmia sp!, {r4, pc} + arm_func_end GpiPeerAcceptedCallback + + arm_func_start GpiPeerPingReplyCallback +GpiPeerPingReplyCallback: ; 0x023085CC + bx lr + arm_func_end GpiPeerPingReplyCallback + + arm_func_start GpiPeerAddOp +GpiPeerAddOp: ; 0x023085D0 + cmp r0, #0 + cmpne r1, #0 + bxeq lr + ldr r2, [r0, #0x40] + cmp r2, #0 + bne _023085F8 + str r1, [r0, #0x44] + str r1, [r0, #0x48] + str r1, [r0, #0x40] + bx lr +_023085F8: + ldr r3, [r0, #0x48] + ldr r2, [r0, #0x44] + cmp r2, r3 + streq r1, [r2, #0xc] + streq r1, [r0, #0x48] + strne r1, [r3, #0xc] + strne r1, [r0, #0x48] + bx lr + arm_func_end GpiPeerAddOp + + arm_func_start GpiPeerRemoveOp +GpiPeerRemoveOp: ; 0x02308618 + stmdb sp!, {r3, lr} + cmp r0, #0 + cmpne r1, #0 + ldmeqia sp!, {r3, pc} + ldr r2, [r0, #0x40] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + ldr r3, [r0, #0x44] + ldr r2, [r0, #0x48] + cmp r3, r2 + cmpeq r3, r1 + bne _0230865C + ldr r2, [r1, #0xc] + str r2, [r0, #0x48] + str r2, [r0, #0x44] + str r2, [r0, #0x40] + b _023086A0 +_0230865C: + cmp r3, r1 + bne _02308674 + ldr r2, [r3, #0xc] + str r2, [r0, #0x44] + str r2, [r0, #0x40] + b _023086A0 +_02308674: + ldr r0, [r3, #0xc] + cmp r0, r1 + beq _02308698 +_02308680: + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r3, r0 + ldr r0, [r0, #0xc] + cmp r0, r1 + bne _02308680 +_02308698: + ldr r0, [r1, #0xc] + str r0, [r3, #0xc] +_023086A0: + mov r0, r1 + bl gsifree + ldmia sp!, {r3, pc} + arm_func_end GpiPeerRemoveOp + + arm_func_start GpiProfilesTableHash +GpiProfilesTableHash: ; 0x023086AC + stmdb sp!, {r3, lr} + ldr r0, [r0] + bl _s32_div_f + mov r0, r1 + ldmia sp!, {r3, pc} + arm_func_end GpiProfilesTableHash + + arm_func_start GpiProfilesTableCompare +GpiProfilesTableCompare: ; 0x023086C0 + ldr r2, [r0] + ldr r0, [r1] + sub r0, r2, r0 + bx lr + arm_func_end GpiProfilesTableCompare + + arm_func_start GpiProfilesTableFree +GpiProfilesTableFree: ; 0x023086D0 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02308720 + ldr r0, [r0, #8] + bl gsifree + ldr r0, [r4, #8] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [r4, #8] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r4, #8] + bl gsifree + mov r0, #0 + str r0, [r4, #8] +_02308720: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _023087B8 + ldr r0, [r0, #8] + bl gsifree + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0xc] + bl gsifree + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x10] + bl gsifree + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x14] + bl gsifree + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _023087A8 + bl ArrayFree_Gsi + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x38] +_023087A8: + ldr r0, [r4, #0xc] + bl gsifree + mov r0, #0 + str r0, [r4, #0xc] +_023087B8: + mov r0, r4 + bl GpiFreeInfoCache + ldr r0, [r4, #0x14] + bl gsifree + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x1c] + bl gsifree + mov r0, #0 + str r0, [r4, #0x1c] + ldmia sp!, {r4, pc} + arm_func_end GpiProfilesTableFree + + arm_func_start GpiInitProfiles +GpiInitProfiles: ; 0x023087E4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r4, [r0] + mov r0, #0 + str r0, [r4, #0x5d0] + str r0, [r4, #0x5cc] + ldr ip, _02308830 ; =GpiProfilesTableFree + ldr r2, _02308834 ; =GpiProfilesTableHash + ldr r3, _02308838 ; =GpiProfilesTableCompare + mov r0, #0x20 + mov r1, #4 + str ip, [sp] + bl TableNew_Gsi + str r0, [r4, #0x5c8] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02308830: .word GpiProfilesTableFree +_02308834: .word GpiProfilesTableHash +_02308838: .word GpiProfilesTableCompare + arm_func_end GpiInitProfiles + + arm_func_start GpiProcessNewProfile +GpiProcessNewProfile: ; 0x0230883C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + mov r6, r2 + mov r4, r1 + mov r1, r6 + mov r2, #1 + mov r5, r0 + bl GpiCheckForError + cmp r0, #0 + addne sp, sp, #0x20 + movne r0, #4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0230898C ; =ov00_0231B8C0 + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _023088B0 + ldr r2, _02308990 ; =ov00_0231B8C8 + mov r0, r5 + mov r1, #1 + bl GpiSetError + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x20 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_023088B0: + ldr r1, _02308994 ; =ov00_0231B8F8 + add r2, sp, #0x10 + mov r0, r6 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + bne _023088F8 + ldr r2, _02308990 ; =ov00_0231B8C8 + mov r0, r5 + mov r1, #1 + bl GpiSetError + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x20 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_023088F8: + add r0, sp, #0x10 + bl atoi + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x10] + mov r6, r0 + str r2, [sp, #8] + str r1, [sp, #0xc] + cmp r2, #0 + beq _02308974 + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _02308944 + ldr r1, _02308998 ; =ov00_0231B904 + mov r0, r5 + bl GpiSetErrorString + add sp, sp, #0x20 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02308944: + str r6, [r3, #4] + mov r2, #0 + str r2, [r3] + str r4, [sp] + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r5 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} +_02308974: + mov r0, r5 + mov r1, r4 + bl GpiRemoveOperation + mov r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230898C: .word ov00_0231B8C0 +_02308990: .word ov00_0231B8C8 +_02308994: .word ov00_0231B8F8 +_02308998: .word ov00_0231B904 + arm_func_end GpiProcessNewProfile + + arm_func_start GpiProfileListAdd +GpiProfileListAdd: ; 0x0230899C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x24 + mov r6, r0 + mov r5, r1 + cmp r5, #0 + ldr r4, [r6] + addle sp, sp, #0x24 + movle r0, #0 + ldmleia sp!, {r3, r4, r5, r6, pc} + add r2, sp, #0 + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + addne sp, sp, #0x24 + ldmneia sp!, {r3, r4, r5, r6, pc} + add r3, sp, #4 + mov r0, #0 + mov r2, r3 + mov r1, r0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2, {r0, r1} + str r5, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x20] + str r0, [sp, #0x1c] + ldr r0, [r4, #0x5c8] + mov r1, r3 + bl TableEnter_Gsi + ldr r0, [r4, #0x5cc] + add r2, sp, #0 + add r3, r0, #1 + mov r0, r6 + mov r1, r5 + str r3, [r4, #0x5cc] + bl GpiGetProfile + cmp r0, #0 + ldrne r0, [sp] + moveq r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end GpiProfileListAdd + + arm_func_start GpiGetProfile +GpiGetProfile: ; 0x02308A4C + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + ldr r0, [r0] + mov r4, r2 + str r1, [sp] + ldr r0, [r0, #0x5c8] + add r1, sp, #0 + bl TableLookup_Gsi + cmp r4, #0 + strne r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + arm_func_end GpiGetProfile + + arm_func_start GpiProcessDeleteProfle +GpiProcessDeleteProfle: ; 0x02308A88 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r7, r2 + mov r5, r0 + mov r4, r1 + mov r1, r7 + mov r2, #1 + ldr r6, [r5] + bl GpiCheckForError + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #4 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, _02308B8C ; =ov00_0231B914 + mov r0, r7 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _02308B00 + ldr r2, _02308B90 ; =ov00_0231B8C8 + mov r0, r5 + mov r1, #1 + bl GpiSetError + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02308B00: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x10] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + beq _02308B74 + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _02308B40 + ldr r1, _02308B94 ; =ov00_0231B904 + mov r0, r5 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02308B40: + ldr r0, [r6, #0x1a0] + mov r2, #0 + str r0, [r3, #4] + str r2, [r3] + str r4, [sp] + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r5 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02308B74: + mov r0, r5 + mov r1, r4 + bl GpiRemoveOperation + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02308B8C: .word ov00_0231B914 +_02308B90: .word ov00_0231B8C8 +_02308B94: .word ov00_0231B904 + arm_func_end GpiProcessDeleteProfle + + arm_func_start GpiRemoveProfileByID +GpiRemoveProfileByID: ; 0x02308B98 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + add r2, sp, #0 + ldr r4, [r0] + bl GpiGetProfile + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, pc} + ldr r0, [r4, #0x5c8] + ldr r1, [sp] + bl TableRemove_Gsi + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end GpiRemoveProfileByID + + arm_func_start GpiRemoveProfile +GpiRemoveProfile: ; 0x02308BCC + ldr r0, [r0] + ldr ip, _02308BDC ; =TableRemove_Gsi + ldr r0, [r0, #0x5c8] + bx ip + .align 2, 0 +_02308BDC: .word TableRemove_Gsi + arm_func_end GpiRemoveProfile + + arm_func_start GpiCheckProfileForUser +GpiCheckProfileForUser: ; 0x02308BE0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + ldr r4, [r6, #0x10] + mov r5, r2 + cmp r4, #0 + beq _02308C38 + ldr r0, [r5] + ldr r1, [r4] + bl strcmp + cmp r0, #0 + bne _02308C38 + ldr r0, [r5, #4] + ldr r1, [r4, #8] + bl strcmp + cmp r0, #0 + bne _02308C38 + ldr r1, [r5, #8] + mov r0, #1 + str r6, [r1] + str r0, [r5, #0xc] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02308C38: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GpiCheckProfileForUser + + arm_func_start GpiFindProfileByUser +GpiFindProfileByUser: ; 0x02308C40 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + str r1, [sp] + mov ip, #0 + str r2, [sp, #4] + mov r4, r3 + ldr r1, _02308C88 ; =GpiCheckProfileForUser + add r2, sp, #0 + str ip, [sp, #0xc] + str r4, [sp, #8] + bl GpiProfileMap + ldr r0, [sp, #0xc] + cmp r0, #0 + moveq r0, #0 + streq r0, [r4] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02308C88: .word GpiCheckProfileForUser + arm_func_end GpiFindProfileByUser + + arm_func_start GpiProfileMapCallback +GpiProfileMapCallback: ; 0x02308C8C + stmdb sp!, {r3, lr} + mov ip, r0 + ldr r2, [r1, #8] + ldmia r1, {r0, r3} + mov r1, ip + blx r3 + ldmia sp!, {r3, pc} + arm_func_end GpiProfileMapCallback + + arm_func_start GpiProfileMap +GpiProfileMap: ; 0x02308CA8 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r3, [r0] + str r1, [sp, #4] + str r2, [sp, #8] + str r0, [sp] + ldr r0, [r3, #0x5c8] + ldr r1, _02308CE4 ; =GpiProfileMapCallback + add r2, sp, #0 + bl TableMapSafe2_Gsi + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02308CE4: .word GpiProfileMapCallback + arm_func_end GpiProfileMap + + arm_func_start GpiCheckForBuddy +GpiCheckForBuddy: ; 0x02308CE8 + ldr r0, [r1, #8] + cmp r0, #0 + beq _02308D0C + ldr r3, [r2] + ldr r0, [r0] + cmp r3, r0 + streq r1, [r2, #4] + moveq r0, #0 + bxeq lr +_02308D0C: + ldr r0, [r1, #0xc] + cmp r0, #0 + beq _02308D30 + ldr r3, [r2] + ldr r0, [r0] + cmp r3, r0 + streq r1, [r2, #4] + moveq r0, #0 + bxeq lr +_02308D30: + mov r0, #1 + bx lr + arm_func_end GpiCheckForBuddy + + arm_func_start GpiFindBuddy +GpiFindBuddy: ; 0x02308D38 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + str r1, [sp] + mov r3, #0 + ldr r1, _02308D64 ; =GpiCheckForBuddy + add r2, sp, #0 + str r3, [sp, #4] + bl GpiProfileMap + ldr r0, [sp, #4] + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02308D64: .word GpiCheckForBuddy + arm_func_end GpiFindBuddy + + arm_func_start GpiRemoveBuddyStatus +GpiRemoveBuddyStatus: ; 0x02308D68 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0xc] + bl gsifree + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + bl gsifree + mov r1, #0 + mov r0, r4 + str r1, [r4, #8] + bl gsifree + ldmia sp!, {r4, pc} + arm_func_end GpiRemoveBuddyStatus + + arm_func_start GpiRemoveBuddyStatusInfo +GpiRemoveBuddyStatusInfo: ; 0x02308D9C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #8] + bl gsifree + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + bl gsifree + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + bl gsifree + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x14] + bl gsifree + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x38] + bl ArrayFree_Gsi + mov r1, #0 + mov r0, r4 + str r1, [r4, #0x38] + bl gsifree + ldmia sp!, {r4, pc} + arm_func_end GpiRemoveBuddyStatusInfo + + arm_func_start GpiCanFreeProfile +GpiCanFreeProfile: ; 0x02308E00 + cmp r0, #0 + beq _02308E38 + ldr r1, [r0, #0x10] + cmp r1, #0 + ldreq r1, [r0, #8] + cmpeq r1, #0 + ldreq r1, [r0, #0xc] + cmpeq r1, #0 + ldreq r1, [r0, #0x1c] + cmpeq r1, #0 + ldreq r0, [r0, #0x14] + cmpeq r0, #0 + moveq r0, #1 + bxeq lr +_02308E38: + mov r0, #0 + bx lr + arm_func_end GpiCanFreeProfile + + arm_func_start GpiStartProfileSearch +GpiStartProfileSearch: ; 0x02308E40 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + ldr r4, [r5, #4] + mov r1, #0x1000 + mov r6, r0 + add r0, r1, #1 + str r1, [r4, #0xc] + bl gsimalloc + str r0, [r4, #8] + cmp r0, #0 + bne _02308E88 + ldr r1, _02309000 ; =ov00_0231B95C + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02308E88: + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl SocketCreate + mvn r1, #0 + str r0, [r4, #4] + cmp r0, r1 + bne _02308ED4 + ldr r2, _02309004 ; =ov00_0231B96C + mov r0, r6 + mov r1, #5 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_02308ED4: + mov r1, #0 + bl SocketSetBlocking + cmp r0, #0 + bne _02308F10 + ldr r2, _02309008 ; =ov00_0231B994 + mov r0, r6 + mov r1, #5 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_02308F10: + ldr r0, _0230900C ; =ov00_0231B91C + bl Soc_GetHostByName + cmp r0, #0 + bne _02308F4C + ldr r2, _02309010 ; =ov00_0231B9C8 + mov r0, r6 + mov r1, #5 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_02308F4C: + add r1, sp, #0 + mov r3, #0 + str r3, [r1] + mov r2, #2 + str r3, [r1, #4] + strb r2, [sp, #1] + ldr r2, [r0, #0xc] + ldr r0, _02309014 ; =0x0000CD74 + ldr r3, [r2] + mov r2, #8 + ldr r3, [r3] + str r3, [sp, #4] + strh r0, [sp, #2] + ldr r0, [r4, #4] + bl SocketConnect + mvn r1, #0 + cmp r0, r1 + bne _02308FE4 + ldr r0, [r4, #4] + bl GoaGetLastError + mvn r2, #5 + cmp r0, r2 + subne r1, r2, #0x14 + cmpne r0, r1 + subne r1, r2, #0x46 + cmpne r0, r1 + beq _02308FE4 + ldr r2, _02309018 ; =ov00_0231B9F8 + mov r0, r6 + mov r1, #5 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_02308FE4: + mov r0, #1 + str r0, [r5, #0x14] + bl current_time_gsi + str r0, [r4, #0x148] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02309000: .word ov00_0231B95C +_02309004: .word ov00_0231B96C +_02309008: .word ov00_0231B994 +_0230900C: .word ov00_0231B91C +_02309010: .word ov00_0231B9C8 +_02309014: .word 0x0000CD74 +_02309018: .word ov00_0231B9F8 + arm_func_end GpiStartProfileSearch + + arm_func_start GpiInitSearchData +GpiInitSearchData: ; 0x0230901C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r0, #0x154 + mov r6, r1 + mov r5, r2 + bl gsimalloc + movs r4, r0 + bne _02309050 + ldr r1, _023090C8 ; =ov00_0231B95C + mov r0, r7 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02309050: + mov r1, #0 + mov r2, #0x154 + bl memset + str r5, [r4] + mvn r0, #0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0xc] + str r0, [r4, #0x20] + mov r1, #0x1000 + str r0, [r4, #0x24] + add r0, r1, #1 + str r1, [r4, #0x1c] + bl gsimalloc + str r0, [r4, #0x18] + cmp r0, #0 + bne _023090B4 + ldr r1, _023090C8 ; =ov00_0231B95C + mov r0, r7 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023090B4: + mov r0, #0 + str r0, [r4, #0x140] + str r0, [r4, #0x144] + str r4, [r6] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023090C8: .word ov00_0231B95C + arm_func_end GpiInitSearchData + + arm_func_start GpiStartSearch +GpiStartSearch: ; 0x023090CC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r0 + ldr r4, [r5] + ldr ip, [sp, #0x20] + ldr lr, [r4, #0x238] + add lr, lr, #1 + str lr, [r4, #0x238] + stmia sp, {r2, r3} + mov r2, r1 + add r3, sp, #0xc + mov r1, #3 + str ip, [sp, #8] + bl GpiAddOperation + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, [sp, #0xc] + mov r0, r5 + bl GpiStartProfileSearch + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, [sp, #0xc] + ldr r0, [r1, #8] + cmp r0, #0 + beq _02309150 + ldr r1, [r1, #0x18] + mov r0, r5 + bl GpiProcess + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r3, r4, r5, pc} +_02309150: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpiStartSearch + + arm_func_start GpiProfileSearch +GpiProfileSearch: ; 0x0230915C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + movs r8, r1 + mov sb, r0 + ldrnesb r0, [r8] + mov r7, r2 + mov r6, r3 + ldr r5, [sp, #0x28] + ldr r4, [sp, #0x2c] + cmpne r0, #0 + bne _023091EC + cmp r6, #0 + ldrnesb r0, [r6] + cmpne r0, #0 + bne _023091EC + cmp r5, #0 + ldrnesb r0, [r5] + cmpne r0, #0 + bne _023091EC + cmp r4, #0 + ldrnesb r0, [r4] + cmpne r0, #0 + bne _023091EC + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _023091EC + cmp r7, #0 + ldrnesb r0, [r7] + cmpne r0, #0 + bne _023091EC + ldr r1, _02309344 ; =ov00_0231BA20 + mov r0, sb + bl GpiSetErrorString + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_023091EC: + add r1, sp, #4 + mov r0, sb + mov r2, #1 + bl GpiInitSearchData + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r8, #0 + bne _02309220 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #0x28] + b _02309234 +_02309220: + ldr r0, [sp, #4] + mov r1, r8 + add r0, r0, #0x28 + mov r2, #0x1f + bl strzcpy_gsi +_02309234: + cmp r7, #0 + bne _0230924C + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #0x47] + b _02309260 +_0230924C: + ldr r0, [sp, #4] + mov r1, r7 + add r0, r0, #0x47 + mov r2, #0x15 + bl strzcpy_gsi +_02309260: + cmp r6, #0 + bne _02309278 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #0x5c] + b _0230928C +_02309278: + ldr r0, [sp, #4] + mov r1, r6 + add r0, r0, #0x5c + mov r2, #0x33 + bl strzcpy_gsi +_0230928C: + ldr r0, [sp, #4] + add r0, r0, #0x5c + bl strlwr + cmp r5, #0 + bne _023092B0 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #0x8f] + b _023092C4 +_023092B0: + ldr r0, [sp, #4] + mov r1, r5 + add r0, r0, #0x8f + mov r2, #0x1f + bl strzcpy_gsi +_023092C4: + cmp r4, #0 + bne _023092DC + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #0xae] + b _023092F0 +_023092DC: + ldr r0, [sp, #4] + mov r1, r4 + add r0, r0, #0xae + mov r2, #0x1f + bl strzcpy_gsi +_023092F0: + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x30] + ldr r1, [sp, #4] + cmp r0, #0 + movlt r0, #0 + strlt r0, [sp, #0x34] + str r2, [r1, #0x134] + ldr r2, [sp, #0x34] + ldr r1, [sp, #4] + ldr r0, [sp, #0x40] + str r2, [r1, #0x138] + str r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #0x38] + ldr r3, [sp, #0x3c] + mov r0, sb + bl GpiStartSearch + cmp r0, #0 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02309344: .word ov00_0231BA20 + arm_func_end GpiProfileSearch + + arm_func_start GpiOthersBuddyList +GpiOthersBuddyList: ; 0x02309348 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r6, r1 + mov r5, r2 + add r1, sp, #4 + mov r2, #9 + mov r7, r0 + mov r4, r3 + bl GpiInitSearchData + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [sp, #4] + ldr r0, [sp, #0x24] + str r6, [r1, #0x14c] + ldr r1, [sp, #4] + ldr r3, [sp, #0x20] + str r5, [r1, #0x150] + str r0, [sp] + ldr r1, [sp, #4] + mov r0, r7 + mov r2, r4 + bl GpiStartSearch + cmp r0, #0 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GpiOthersBuddyList + + arm_func_start GpiProcessSearch +GpiProcessSearch: ; 0x023093B4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xcc + sub sp, sp, #0x400 + mov sl, r0 + ldr r0, [sl] + str r1, [sp, #0x1c] + ldr r1, [r1, #8] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x1c] + cmp r1, #0 + movne r4, #1 + moveq r4, #0 + ldr r6, [r0, #4] + cmp r1, #0 + bne _02309440 + bl current_time_gsi + ldr r2, [r6, #0x148] + ldr r1, _0230A144 ; =0x0000EA60 + sub r0, r0, r2 + cmp r0, r1 + bls _02309440 + ldr r1, _0230A148 ; =0x00000D02 + mov r3, #1 + ldr r2, _0230A14C ; =ov00_0231BA34 + mov r0, sl + str r3, [r6, #0x144] + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #0 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309440: + mov r1, #1 + ldr r0, _0230A150 ; =ov00_0231BA4C + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r6, #4] + add r3, sp, #0x74 + mov r0, sl + add r2, r6, #0x18 + bl GpiSendFromBuffer + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x1c] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _02309C8C + ldr r1, [r6, #4] + add r2, sp, #0x88 + mov r0, sl + bl GpiCheckSocketConnect + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x88] + cmp r0, #4 + bne _023094E0 + ldr r1, _0230A154 ; =0x00000D01 + ldr r2, _0230A158 ; =ov00_0231BA50 + mov r0, sl + bl GpiSetError + mov r0, sl + mov r1, #4 + mov r2, #0 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023094E0: + cmp r0, #3 + bne _0230B46C + ldr r0, [r6] + cmp r0, #1 + bne _023096CC + ldr r2, _0230A15C ; =ov00_0231BA7C + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A160 ; =ov00_0231BA88 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x2c] + add r1, r6, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl GpiAppendIntToBuffer + ldr r2, _0230A164 ; =ov00_0231BA94 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A168 ; =ov00_0231BAA0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x60c] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A16C ; =ov00_0231BAB0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a4] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldrsb r0, [r6, #0x28] + cmp r0, #0 + beq _023095C0 + ldr r2, _0230A170 ; =ov00_0231BABC + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x28 + bl GpiAppendStringToBuffer +_023095C0: + ldrsb r0, [r6, #0x47] + cmp r0, #0 + beq _023095EC + ldr r2, _0230A174 ; =ov00_0231BAC4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x47 + bl GpiAppendStringToBuffer +_023095EC: + ldrsb r0, [r6, #0x5c] + cmp r0, #0 + beq _02309618 + ldr r2, _0230A178 ; =ov00_0231BAD4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x5c + bl GpiAppendStringToBuffer +_02309618: + ldrsb r0, [r6, #0x8f] + cmp r0, #0 + beq _02309644 + ldr r2, _0230A17C ; =ov00_0231BADC + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x8f + bl GpiAppendStringToBuffer +_02309644: + ldrsb r0, [r6, #0xae] + cmp r0, #0 + beq _02309670 + ldr r2, _0230A180 ; =ov00_0231BAE8 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0xae + bl GpiAppendStringToBuffer +_02309670: + ldr r0, [r6, #0x134] + cmp r0, #0 + beq _0230969C + ldr r2, _0230A184 ; =ov00_0231BAF4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [r6, #0x134] + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendIntToBuffer +_0230969C: + ldr r0, [r6, #0x138] + cmp r0, #0 + ble _02309C4C + ldr r2, _0230A188 ; =ov00_0231BB00 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [r6, #0x138] + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + b _02309C4C +_023096CC: + cmp r0, #2 + bne _0230972C + ldr r2, _0230A18C ; =ov00_0231BB08 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A178 ; =ov00_0231BAD4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x5c + bl GpiAppendStringToBuffer + ldr r2, _0230A16C ; =ov00_0231BAB0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a4] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + b _02309C4C +_0230972C: + cmp r0, #3 + bne _023097DC + ldr r2, _0230A190 ; =ov00_0231BB10 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A178 ; =ov00_0231BAD4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x5c + bl GpiAppendStringToBuffer + add r0, r6, #0xcd + add r1, sp, #0x9c + bl PasswordEncryptString + ldr r2, _0230A194 ; =ov00_0231BB18 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, sp, #0x9c + bl GpiAppendStringToBuffer + ldr r2, _0230A168 ; =ov00_0231BAA0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x60c] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A16C ; =ov00_0231BAB0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a4] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + b _02309C4C +_023097DC: + cmp r0, #4 + bne _02309860 + ldr r2, _0230A198 ; =ov00_0231BB24 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A160 ; =ov00_0231BA88 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x2c] + add r1, r6, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl GpiAppendIntToBuffer + ldr r2, _0230A164 ; =ov00_0231BA94 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A19C ; =ov00_0231BB30 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [r6, #0x13c] + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + b _02309C4C +_02309860: + cmp r0, #5 + bne _0230990C + ldr r2, _0230A1A0 ; =ov00_0231BB3C + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A170 ; =ov00_0231BABC + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x28 + bl GpiAppendStringToBuffer + ldr r2, _0230A178 ; =ov00_0231BAD4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x5c + bl GpiAppendStringToBuffer + ldr r2, _0230A16C ; =ov00_0231BAB0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a4] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + add r0, r6, #0xcd + add r1, sp, #0x9c + bl PasswordEncryptString + ldr r2, _0230A194 ; =ov00_0231BB18 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, sp, #0x9c + bl GpiAppendStringToBuffer + b _02309C4C +_0230990C: + cmp r0, #6 + bne _02309A4C + ldr r2, _0230A1A4 ; =ov00_0231BB44 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A170 ; =ov00_0231BABC + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x28 + bl GpiAppendStringToBuffer + ldr r2, _0230A178 ; =ov00_0231BAD4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x5c + bl GpiAppendStringToBuffer + add r0, r6, #0xcd + add r1, sp, #0x9c + bl PasswordEncryptString + ldr r2, _0230A194 ; =ov00_0231BB18 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, sp, #0x9c + bl GpiAppendStringToBuffer + ldr r2, _0230A1A8 ; =ov00_0231BB50 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x608] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A168 ; =ov00_0231BAA0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x60c] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A174 ; =ov00_0231BAC4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x47 + bl GpiAppendStringToBuffer + ldrsb r0, [r6, #0xec] + cmp r0, #0 + beq _02309A24 + ldr r2, _0230A1AC ; =ov00_0231BB5C + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0xec + bl GpiAppendStringToBuffer +_02309A24: + ldr r2, _0230A16C ; =ov00_0231BAB0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x2c] + add r1, r6, #0x18 + ldr r2, [r0, #0x1a4] + mov r0, sl + bl GpiAppendIntToBuffer + b _02309C4C +_02309A4C: + cmp r0, #7 + bne _02309AD4 + ldr r2, _0230A1B0 ; =ov00_0231BB64 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A160 ; =ov00_0231BA88 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x2c] + add r1, r6, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl GpiAppendIntToBuffer + ldr r2, _0230A164 ; =ov00_0231BA94 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A168 ; =ov00_0231BAA0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x60c] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + b _02309C4C +_02309AD4: + cmp r0, #9 + bne _02309BF0 + ldr r2, _0230A1B4 ; =ov00_0231BB70 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A160 ; =ov00_0231BA88 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x2c] + add r1, r6, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl GpiAppendIntToBuffer + ldr r2, _0230A164 ; =ov00_0231BA94 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A1B8 ; =ov00_0231BB80 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [r6, #0x150] + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r2, _0230A1BC ; =ov00_0231BB8C + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [r6, #0x14c] + cmp r0, #0 + beq _02309BC8 + ldr r2, [r0] + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r0, [r6, #0x150] + mov r5, #1 + cmp r0, #1 + ble _02309BC8 + ldr r7, _0230A1C0 ; =ov00_0231BB94 +_02309B94: + mov r0, sl + mov r2, r7 + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r1, [r6, #0x14c] + mov r0, sl + ldr r2, [r1, r5, lsl #2] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer + ldr r0, [r6, #0x150] + add r5, r5, #1 + cmp r5, r0 + blt _02309B94 +_02309BC8: + ldr r2, _0230A168 ; =ov00_0231BAA0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x2c] + add r1, r6, #0x18 + ldr r2, [r0, #0x60c] + mov r0, sl + bl GpiAppendIntToBuffer + b _02309C4C +_02309BF0: + cmp r0, #8 + bne _02309C4C + ldr r2, _0230A1C4 ; =ov00_0231BB98 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A1C8 ; =ov00_0231BBA8 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + mov r0, sl + add r1, r6, #0x18 + add r2, r6, #0x47 + bl GpiAppendStringToBuffer + ldr r2, _0230A168 ; =ov00_0231BAA0 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, [sp, #0x2c] + mov r0, sl + ldr r2, [r2, #0x60c] + add r1, r6, #0x18 + bl GpiAppendIntToBuffer +_02309C4C: + ldr r2, _0230A1CC ; =ov00_0231BBB8 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A1D0 ; =ov00_02328804 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r2, _0230A1D4 ; =ov00_0231BBC4 + mov r0, sl + add r1, r6, #0x18 + bl GpiAppendStringToBuffer + ldr r0, [sp, #0x1c] + mov r1, #4 + str r1, [r0, #0x14] + b _0230B46C +_02309C8C: + cmp r0, #4 + bne _0230B46C + add r1, sp, #0x74 + ldr r0, _0230A150 ; =ov00_0231BA4C + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r6, #4] + add r3, sp, #0x78 + mov r0, sl + add r2, r6, #8 + bl GpiRecvToBuffer + cmp r0, #0 + beq _02309D00 + cmp r0, #3 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230A154 ; =0x00000D01 + ldr r2, _0230A1D8 ; =ov00_0231BBCC + mov r0, sl + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #0 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309D00: + ldr r0, [sp, #0x1c] + ldr r0, [r0, #8] + cmp r0, #0 + beq _02309D60 + bl current_time_gsi + ldr r2, [r6, #0x148] + ldr r1, _0230A144 ; =0x0000EA60 + sub r0, r0, r2 + cmp r0, r1 + bls _02309D60 + ldr r1, _0230A148 ; =0x00000D02 + mov r3, #1 + ldr r2, _0230A14C ; =ov00_0231BA34 + mov r0, sl + str r3, [r6, #0x144] + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #0 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309D60: + ldr r0, [r6, #8] + ldr r1, _0230A1D4 ; =ov00_0231BBC4 + bl strstr + cmp r0, #0 + beq _0230B46C + mov r0, #0 + str r0, [sp, #0x84] + ldr r0, [sp, #0x1c] + mov r1, #5 + str r1, [r0, #0x14] + ldr r1, [r6, #8] + mov r0, sl + mov r2, #1 + bl GpiCheckForError + cmp r0, #0 + beq _02309DB8 + add sp, sp, #0xcc + mov r0, #1 + str r0, [r6, #0x144] + add sp, sp, #0x400 + mov r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309DB8: + ldr r0, [r6] + cmp r0, #1 + bne _0230A214 + ldr r1, _0230A1DC ; =0x00000601 + mov r0, #0 + add r4, sp, #0x200 + str r0, [sp, #0x30] + str r0, [sp, #0x8c] + str r0, [sp, #0x90] + str r0, [sp, #0x98] + str r1, [sp, #0x94] + add r4, r4, #0xc9 + add r5, sp, #0xc9 + add fp, sp, #0x84 +_02309DF0: + str r5, [sp] + ldr r1, [r6, #8] + mov r0, sl + mov r2, fp + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230A1E0 ; =ov00_0231BBF8 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _02309E8C + str r5, [sp] + ldr r1, [r6, #8] + mov r0, sl + mov r2, fp + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230A1E4 ; =ov00_0231BC00 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _02309E80 + ldr r1, _0230A1E8 ; =ov00_0231BC08 + mov r0, r5 + bl strcmp + cmp r0, #0 + movne r0, #0x600 + strne r0, [sp, #0x94] +_02309E80: + mov r0, #1 + str r0, [sp, #0x30] + b _0230A078 +_02309E8C: + ldr r1, _0230A1EC ; =ov00_0231BC0C + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A048 + ldr r1, [sp, #0x90] + ldr r0, [sp, #0x98] + add r2, r1, #1 + mov r1, #0xac + mul r1, r2, r1 + str r2, [sp, #0x90] + bl gsirealloc + movs r7, r0 + str r7, [sp, #0x98] + bne _02309EE4 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309EE4: + ldr r0, [sp, #0x90] + mov r1, #0 + sub r2, r0, #1 + mov r0, #0xac + mul r8, r2, r0 + add sb, r7, r8 + mov r0, sb + mov r2, #0xac + bl memset + mov r0, r5 + bl atoi + str r0, [r7, r8] + mov r8, #0 +_02309F18: + ldr r7, [sp, #0x84] + mov r0, sl + str r5, [sp] + ldr r1, [r6, #8] + mov r2, fp + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230A1F4 ; =ov00_0231BC10 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _02309F6C + add r0, sb, #4 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + b _0230A03C +_02309F6C: + ldr r1, _0230A1F8 ; =ov00_0231BC18 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _02309F94 + add r0, sb, #0x23 + mov r1, r5 + mov r2, #0x15 + bl strzcpy_gsi + b _0230A03C +_02309F94: + ldr r1, _0230A1FC ; =ov00_0231BC24 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _02309FBC + add r0, sb, #0x38 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + b _0230A03C +_02309FBC: + ldr r1, _0230A200 ; =ov00_0231BC30 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _02309FE4 + add r0, sb, #0x57 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + b _0230A03C +_02309FE4: + ldr r1, _0230A204 ; =ov00_0231BC3C + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A00C + add r0, sb, #0x76 + mov r1, r5 + mov r2, #0x33 + bl strzcpy_gsi + b _0230A03C +_0230A00C: + ldr r1, _0230A1EC ; =ov00_0231BC0C + mov r0, r4 + bl strcmp + cmp r0, #0 + beq _0230A034 + ldr r1, _0230A1E0 ; =ov00_0231BBF8 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A03C +_0230A034: + str r7, [sp, #0x84] + mov r8, #1 +_0230A03C: + cmp r8, #0 + beq _02309F18 + b _0230A078 +_0230A048: + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A078: + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _02309DF0 + ldr r0, [sp, #0x1c] + ldr r4, [sp, #0x94] + ldr r3, [r0, #0xc] + ldr r2, [r0, #0x10] + str r3, [sp, #0x7c] + str r2, [sp, #0x80] + cmp r3, #0 + beq _0230A0B0 + add r1, sp, #0x8c + mov r0, sl + blx r3 +_0230A0B0: + cmp r4, #0x600 + ldreq r0, [sp, #0x94] + cmpeq r0, #0x600 + bne _0230A130 + add r0, r6, #0x8f + str r0, [sp] + add r0, r6, #0xae + str r0, [sp, #4] + ldr r1, [r6, #0x134] + mov r0, sl + str r1, [sp, #8] + ldr r3, [sp, #0x90] + ldr r2, [r6, #0x138] + add r1, r6, #0x28 + add r2, r3, r2 + str r2, [sp, #0xc] + ldr r2, [sp, #0x1c] + ldr r3, [r2, #8] + add r2, r6, #0x47 + str r3, [sp, #0x10] + ldr r3, [sp, #0x1c] + ldr r4, [r3, #0xc] + add r3, r6, #0x5c + str r4, [sp, #0x14] + ldr r4, [sp, #0x1c] + ldr r4, [r4, #0x10] + str r4, [sp, #0x18] + bl GpiProfileSearch + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A130: + ldr r0, [sp, #0x98] + bl gsifree + mov r0, #0 + str r0, [sp, #0x98] + b _0230B460 + .align 2, 0 +_0230A144: .word 0x0000EA60 +_0230A148: .word 0x00000D02 +_0230A14C: .word ov00_0231BA34 +_0230A150: .word ov00_0231BA4C +_0230A154: .word 0x00000D01 +_0230A158: .word ov00_0231BA50 +_0230A15C: .word ov00_0231BA7C +_0230A160: .word ov00_0231BA88 +_0230A164: .word ov00_0231BA94 +_0230A168: .word ov00_0231BAA0 +_0230A16C: .word ov00_0231BAB0 +_0230A170: .word ov00_0231BABC +_0230A174: .word ov00_0231BAC4 +_0230A178: .word ov00_0231BAD4 +_0230A17C: .word ov00_0231BADC +_0230A180: .word ov00_0231BAE8 +_0230A184: .word ov00_0231BAF4 +_0230A188: .word ov00_0231BB00 +_0230A18C: .word ov00_0231BB08 +_0230A190: .word ov00_0231BB10 +_0230A194: .word ov00_0231BB18 +_0230A198: .word ov00_0231BB24 +_0230A19C: .word ov00_0231BB30 +_0230A1A0: .word ov00_0231BB3C +_0230A1A4: .word ov00_0231BB44 +_0230A1A8: .word ov00_0231BB50 +_0230A1AC: .word ov00_0231BB5C +_0230A1B0: .word ov00_0231BB64 +_0230A1B4: .word ov00_0231BB70 +_0230A1B8: .word ov00_0231BB80 +_0230A1BC: .word ov00_0231BB8C +_0230A1C0: .word ov00_0231BB94 +_0230A1C4: .word ov00_0231BB98 +_0230A1C8: .word ov00_0231BBA8 +_0230A1CC: .word ov00_0231BBB8 +_0230A1D0: .word ov00_02328804 +_0230A1D4: .word ov00_0231BBC4 +_0230A1D8: .word ov00_0231BBCC +_0230A1DC: .word 0x00000601 +_0230A1E0: .word ov00_0231BBF8 +_0230A1E4: .word ov00_0231BC00 +_0230A1E8: .word ov00_0231BC08 +_0230A1EC: .word ov00_0231BC0C +_0230A1F0: .word ov00_0231B95C +_0230A1F4: .word ov00_0231BC10 +_0230A1F8: .word ov00_0231BC18 +_0230A1FC: .word ov00_0231BC24 +_0230A200: .word ov00_0231BC30 +_0230A204: .word ov00_0231BC3C +_0230A208: .word ov00_0231BC44 +_0230A20C: .word ov00_0231BC6C +_0230A210: .word ov00_0231BC70 +_0230A214: + cmp r0, #2 + bne _0230A340 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x34] + str r0, [sp, #0x38] + cmp r1, #0 + beq _0230B460 + add r0, sp, #0xc9 + str r0, [sp] + add r3, sp, #0x200 + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230A20C ; =ov00_0231BC6C + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230A2B0 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A2B0: + mov r0, #0x3c + bl gsimalloc + movs r4, r0 + bne _0230A2DC + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A2DC: + mov r0, #0 + str r0, [r4] + add r0, r4, #4 + add r1, r6, #0x5c + mov r2, #0x33 + bl strzcpy_gsi + ldrsb r0, [sp, #0xc9] + ldr r1, [sp, #0x1c] + add r2, sp, #0x34 + cmp r0, #0x30 + moveq r0, #0 + movne r0, #1 + str r0, [r4, #0x38] + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r0, sl + mov r3, r4 + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A340: + cmp r0, #3 + bne _0230A654 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + cmp r1, #0 + beq _0230B460 + mov r0, #0x44 + bl gsimalloc + movs r8, r0 + bne _0230A390 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A390: + mov r2, #0 + add r0, r8, #4 + add r1, r6, #0x5c + str r2, [r8] + bl strcpy + mov r1, #0 + str r1, [r8, #0x38] + str r1, [r8, #0x3c] + add r3, sp, #0x200 + add r0, sp, #0xc9 + str r1, [r8, #0x40] + str r0, [sp] + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230A210 ; =ov00_0231BC70 + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230A42C + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A42C: + add r4, sp, #0x200 + ldr fp, _0230A1F4 ; =ov00_0231BC10 + mov sb, #0 + add r4, r4, #0xc9 + add r7, sp, #0xc9 + add r5, sp, #0x84 +_0230A444: + str r7, [sp] + ldr r1, [r6, #8] + mov r0, sl + mov r2, r5 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r4 + mov r1, fp + bl strcmp + cmp r0, #0 + bne _0230A51C + ldr r0, [r8, #0x3c] + ldr r1, [r8, #0x38] + add r1, r1, #1 + mov r1, r1, lsl #2 + bl gsirealloc + cmp r0, #0 + bne _0230A4B8 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A4B8: + str r0, [r8, #0x3c] + mov r0, #0x1f + bl gsimalloc + cmp r0, #0 + bne _0230A4E8 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A4E8: + ldr r3, [r8, #0x3c] + ldr r2, [r8, #0x38] + mov r1, r7 + str r0, [r3, r2, lsl #2] + ldr r3, [r8, #0x3c] + ldr r0, [r8, #0x38] + mov r2, #0x1f + ldr r0, [r3, r0, lsl #2] + bl strzcpy_gsi + ldr r0, [r8, #0x38] + add r0, r0, #1 + str r0, [r8, #0x38] + b _0230A614 +_0230A51C: + ldr r1, _0230A1F8 ; =ov00_0231BC18 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A5CC + ldr r0, [r8, #0x38] + cmp r0, #0 + ble _0230A614 + mov r1, r0, lsl #2 + ldr r0, [r8, #0x40] + bl gsirealloc + cmp r0, #0 + bne _0230A56C + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A56C: + str r0, [r8, #0x40] + mov r0, #0x15 + bl gsimalloc + cmp r0, #0 + bne _0230A59C + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A59C: + ldr r3, [r8, #0x40] + ldr r2, [r8, #0x38] + mov r1, r7 + add r2, r3, r2, lsl #2 + str r0, [r2, #-4] + ldr r3, [r8, #0x40] + ldr r0, [r8, #0x38] + mov r2, #0x15 + add r0, r3, r0, lsl #2 + ldr r0, [r0, #-4] + bl strzcpy_gsi + b _0230A614 +_0230A5CC: + ldr r1, _0230B494 ; =ov00_0231BC74 + mov r0, r4 + bl strcmp + cmp r0, #0 + moveq sb, #1 + beq _0230A614 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A614: + cmp sb, #0 + beq _0230A444 + ldr r1, [sp, #0x1c] + add r2, sp, #0x3c + str r1, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r0, sl + mov r3, r8 + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A654: + cmp r0, #4 + bne _0230A8EC + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x44] + str r0, [sp, #0x48] + cmp r1, #0 + beq _0230B460 + mov r0, #0x10 + bl gsimalloc + movs fp, r0 + bne _0230A6A4 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A6A4: + ldr r1, [r6, #0x13c] + mov r0, #0 + stmia fp, {r0, r1} + str r0, [fp, #8] + add r4, sp, #0x200 + str r0, [sp, #0x20] + str r0, [fp, #0xc] + add r4, r4, #0xc9 + add r5, sp, #0xc9 +_0230A6C8: + str r5, [sp] + ldr r1, [r6, #8] + mov r0, sl + add r2, sp, #0x84 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230B498 ; =ov00_0231BC7C + mov r0, r4 + bl strcmp + cmp r0, #0 + moveq r0, #1 + streq r0, [sp, #0x20] + beq _0230A8A8 + ldr r1, _0230B49C ; =ov00_0231BC84 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A878 + ldr r0, [fp, #8] + add r2, r0, #1 + mov r0, #0x128 + mul r1, r2, r0 + str r2, [fp, #8] + ldr r0, [fp, #0xc] + bl gsirealloc + str r0, [fp, #0xc] + movs r8, r0 + bne _0230A764 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A764: + ldr r0, [fp, #8] + mov r1, #0 + sub r2, r0, #1 + mov r0, #0x128 + mul sb, r2, r0 + add r7, r8, sb + mov r0, r7 + mov r2, #0x128 + bl memset + mov r0, #1 + str r0, [r7, #0x24] + mov r0, r5 + bl atoi + str r0, [r8, sb] + mov r8, #0 +_0230A7A0: + ldr sb, [sp, #0x84] + mov r0, sl + str r5, [sp] + ldr r1, [r6, #8] + add r2, sp, #0x84 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230B4A0 ; =ov00_0231BC88 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A7F4 + add r0, r7, #0x28 + mov r1, r5 + mov r2, #0x100 + bl strzcpy_gsi + b _0230A818 +_0230A7F4: + ldr r1, _0230A1F4 ; =ov00_0231BC10 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A818 + add r0, r7, #4 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi +_0230A818: + ldr r1, _0230B4A4 ; =ov00_0231BC90 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A83C + mov r0, r5 + bl atoi + str r0, [r7, #0x24] + b _0230A86C +_0230A83C: + ldr r1, _0230B49C ; =ov00_0231BC84 + mov r0, r4 + bl strcmp + cmp r0, #0 + beq _0230A864 + ldr r1, _0230B498 ; =ov00_0231BC7C + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230A86C +_0230A864: + str sb, [sp, #0x84] + mov r8, #1 +_0230A86C: + cmp r8, #0 + beq _0230A7A0 + b _0230A8A8 +_0230A878: + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A8A8: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0230A6C8 + ldr r1, [sp, #0x1c] + add r2, sp, #0x44 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + mov r0, sl + mov r3, fp + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A8EC: + cmp r0, #5 + bne _0230AA64 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x4c] + str r0, [sp, #0x50] + cmp r1, #0 + beq _0230B460 + add r0, sp, #0xc9 + str r0, [sp] + add r3, sp, #0x200 + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230B4A8 ; =ov00_0231BC9C + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230A988 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A988: + add r0, sp, #0xc9 + bl atoi + movs r4, r0 + beq _0230A9A8 + ldr r0, [sp, #0x2c] + mov r5, #0 + str r4, [r0, #0x5b8] + b _0230AA00 +_0230A9A8: + ldr r0, [r6, #8] + ldr r1, _0230B4AC ; =ov00_0231BCA0 + add r2, sp, #0xc9 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _0230A9F4 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230A9F4: + add r0, sp, #0xc9 + bl atoi + mov r5, r0 +_0230AA00: + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _0230AA2C + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AA2C: + stmia r3, {r4, r5} + ldr r1, [sp, #0x1c] + add r2, sp, #0x4c + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r0, sl + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AA64: + cmp r0, #6 + bne _0230ABE0 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x54] + str r0, [sp, #0x58] + cmp r1, #0 + beq _0230B460 + add r0, sp, #0xc9 + str r0, [sp] + add r3, sp, #0x200 + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230B4B0 ; =ov00_0231BCA8 + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230AB00 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AB00: + add r0, sp, #0xc9 + bl atoi + movs r4, r0 + ldrne r0, [sp, #0x2c] + ldr r1, _0230B4AC ; =ov00_0231BCA0 + strne r4, [r0, #0x5b8] + ldr r0, [r6, #8] + add r2, sp, #0xc9 + mov r3, #0x200 + bl GpiValueForKey + cmp r0, #0 + bne _0230AB70 + cmp r4, #0 + bne _0230AB68 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AB68: + mov r5, #0 + b _0230AB7C +_0230AB70: + add r0, sp, #0xc9 + bl atoi + mov r5, r0 +_0230AB7C: + mov r0, #8 + bl gsimalloc + movs r3, r0 + bne _0230ABA8 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230ABA8: + stmia r3, {r4, r5} + ldr r1, [sp, #0x1c] + add r2, sp, #0x54 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r0, sl + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230ABE0: + cmp r0, #7 + bne _0230AF48 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x5c] + str r0, [sp, #0x60] + cmp r1, #0 + beq _0230B460 + mov r0, #0xc + bl gsimalloc + movs fp, r0 + bne _0230AC30 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AC30: + mov r1, #0 + str r1, [fp] + str r1, [fp, #4] + add r0, sp, #0xc9 + str r1, [fp, #8] + str r0, [sp] + add r3, sp, #0x200 + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230B4B4 ; =ov00_0231BCAC + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230ACB8 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230ACB8: + mov r0, #0 + add r4, sp, #0x200 + str r0, [sp, #0x24] + add r4, r4, #0xc9 + add r5, sp, #0xc9 +_0230ACCC: + str r5, [sp] + ldr r1, [r6, #8] + mov r0, sl + add r2, sp, #0x84 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230B4B8 ; =ov00_0231BCB4 + mov r0, r4 + bl strcmp + cmp r0, #0 + moveq r0, #1 + streq r0, [sp, #0x24] + beq _0230AF04 + ldr r1, _0230B4BC ; =ov00_0231BCBC + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230AED4 + ldr r1, [fp, #4] + ldr r0, [fp, #8] + add r2, r1, #1 + mov r1, #0xac + mul r1, r2, r1 + bl gsirealloc + cmp r0, #0 + bne _0230AD60 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AD60: + str r0, [fp, #8] + ldr r2, [fp, #4] + mov r8, r0 + mov r0, #0xac + mul sb, r2, r0 + add r7, r8, sb + mov r1, #0 + mov r0, r7 + mov r2, #0xac + bl memset + ldr r1, [fp, #4] + mov r0, r5 + add r1, r1, #1 + str r1, [fp, #4] + bl atoi + str r0, [r8, sb] + mov r8, #0 +_0230ADA4: + ldr sb, [sp, #0x84] + mov r0, sl + str r5, [sp] + ldr r1, [r6, #8] + add r2, sp, #0x84 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230A1F4 ; =ov00_0231BC10 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230ADF8 + add r0, r7, #4 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + b _0230AEC8 +_0230ADF8: + ldr r1, _0230A1F8 ; =ov00_0231BC18 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230AE20 + add r0, r7, #0x23 + mov r1, r5 + mov r2, #0x15 + bl strzcpy_gsi + b _0230AEC8 +_0230AE20: + ldr r1, _0230B4C0 ; =ov00_0231BCC0 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230AE48 + add r0, r7, #0x38 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + b _0230AEC8 +_0230AE48: + ldr r1, _0230B4C4 ; =ov00_0231BCC8 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230AE70 + add r0, r7, #0x57 + mov r1, r5 + mov r2, #0x1f + bl strzcpy_gsi + b _0230AEC8 +_0230AE70: + ldr r1, _0230A204 ; =ov00_0231BC3C + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230AE98 + add r0, r7, #0x76 + mov r1, r5 + mov r2, #0x33 + bl strzcpy_gsi + b _0230AEC8 +_0230AE98: + ldr r1, _0230B4BC ; =ov00_0231BCBC + mov r0, r4 + bl strcmp + cmp r0, #0 + beq _0230AEC0 + ldr r1, _0230B4B8 ; =ov00_0231BCB4 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230AEC8 +_0230AEC0: + str sb, [sp, #0x84] + mov r8, #1 +_0230AEC8: + cmp r8, #0 + beq _0230ADA4 + b _0230AF04 +_0230AED4: + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AF04: + ldr r0, [sp, #0x24] + cmp r0, #0 + beq _0230ACCC + ldr r1, [sp, #0x1c] + add r2, sp, #0x5c + str r1, [sp] + mov r1, #8 + str r1, [sp, #4] + mov r0, sl + mov r3, fp + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AF48: + cmp r0, #9 + bne _0230B220 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x64] + str r0, [sp, #0x68] + cmp r1, #0 + beq _0230B460 + mov r0, #0xc + bl gsimalloc + movs fp, r0 + bne _0230AF98 + ldr r1, _0230A1F0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230AF98: + mov r1, #0 + str r1, [fp] + str r1, [fp, #4] + add r0, sp, #0xc9 + str r1, [fp, #8] + str r0, [sp] + add r3, sp, #0x200 + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230B4C8 ; =ov00_0231BCD0 + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230B020 + ldr r2, _0230A208 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B020: + mov r0, #0 + add r4, sp, #0x200 + str r0, [sp, #0x28] + add r4, r4, #0xc9 + add r5, sp, #0xc9 +_0230B034: + str r5, [sp] + ldr r1, [r6, #8] + mov r0, sl + add r2, sp, #0x84 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230B4CC ; =ov00_0231BCDC + mov r0, r4 + bl strcmp + cmp r0, #0 + moveq r0, #1 + streq r0, [sp, #0x28] + beq _0230B1DC + ldr r1, _0230B4BC ; =ov00_0231BCBC + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230B1AC + ldr r1, [fp, #4] + ldr r0, [fp, #8] + add r2, r1, #1 + mov r1, #0x1c + mul r1, r2, r1 + bl gsirealloc + cmp r0, #0 + bne _0230B0C8 + ldr r1, _0230B4D0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B0C8: + str r0, [fp, #8] + ldr r3, [fp, #4] + mov r1, #0x1c + mla r7, r3, r1, r0 + mov r2, #7 + mov r1, r7 +_0230B0E0: + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r1, #2] + strb r0, [r1, #3] + add r1, r1, #4 + subs r2, r2, #1 + bne _0230B0E0 + ldr r1, [fp, #4] + mov r0, r5 + add r1, r1, #1 + str r1, [fp, #4] + bl atoi + str r0, [r7] + mov r8, #0 +_0230B11C: + ldr sb, [sp, #0x84] + mov r0, sl + str r5, [sp] + ldr r1, [r6, #8] + add r2, sp, #0x84 + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230B4D4 ; =ov00_0231BC18 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230B170 + add r0, r7, #4 + mov r1, r5 + mov r2, #0x15 + bl strzcpy_gsi + b _0230B1A0 +_0230B170: + ldr r1, _0230B4BC ; =ov00_0231BCBC + mov r0, r4 + bl strcmp + cmp r0, #0 + beq _0230B198 + ldr r1, _0230B4CC ; =ov00_0231BCDC + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230B1A0 +_0230B198: + str sb, [sp, #0x84] + mov r8, #1 +_0230B1A0: + cmp r8, #0 + beq _0230B11C + b _0230B1DC +_0230B1AC: + ldr r2, _0230B4D8 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B1DC: + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _0230B034 + ldr r1, [sp, #0x1c] + add r2, sp, #0x64 + str r1, [sp] + mov r1, #0xd + str r1, [sp, #4] + mov r0, sl + mov r3, fp + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + beq _0230B460 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B220: + cmp r0, #8 + bne _0230B460 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + str r1, [sp, #0x6c] + str r0, [sp, #0x70] + cmp r1, #0 + beq _0230B460 + mov r0, #0xc + mov r7, #0 + bl gsimalloc + movs r8, r0 + bne _0230B274 + ldr r1, _0230B4D0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B274: + mov r1, r7 + str r1, [r8] + str r1, [r8, #4] + add r0, sp, #0xc9 + str r1, [r8, #8] + str r0, [sp] + add r3, sp, #0x200 + ldr r1, [r6, #8] + add r2, sp, #0x84 + add r3, r3, #0xc9 + mov r0, sl + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x200 + ldr r1, _0230B4DC ; =ov00_0231BCE4 + add r0, r0, #0xc9 + bl strcmp + cmp r0, #0 + beq _0230B2FC + ldr r2, _0230B4D8 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B2FC: + add r0, sp, #0xc9 + bl atoi + str r0, [r8, #4] + mov r0, r0, lsl #2 + bl gsimalloc + str r0, [r8, #8] + cmp r0, #0 + bne _0230B338 + ldr r1, _0230B4D0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B338: + add r4, sp, #0x200 + mov sb, r7 + add r4, r4, #0xc9 + add r5, sp, #0xc9 + add fp, sp, #0x84 +_0230B34C: + str r5, [sp] + ldr r1, [r6, #8] + mov r0, sl + mov r2, fp + mov r3, r4 + bl GpiReadKeyAndValue + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _0230B4E0 ; =ov00_0231BC10 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _0230B3D8 + mov r0, #0x15 + bl gsimalloc + ldr r1, [r8, #8] + str r0, [r1, r7, lsl #2] + ldr r0, [r8, #8] + ldr r0, [r0, r7, lsl #2] + cmp r0, #0 + bne _0230B3C4 + ldr r1, _0230B4D0 ; =ov00_0231B95C + mov r0, sl + bl GpiSetErrorString + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B3C4: + mov r1, r5 + mov r2, #0x15 + bl strzcpy_gsi + add r7, r7, #1 + b _0230B424 +_0230B3D8: + ldr r1, _0230B4E4 ; =ov00_0231BCE8 + mov r0, r4 + bl strcmp + cmp r0, #0 + streq r7, [r8, #4] + moveq sb, #1 + beq _0230B424 + ldr r2, _0230B4D8 ; =ov00_0231BC44 + mov r0, sl + mov r1, #1 + bl GpiSetError + mov r0, sl + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0xcc + add sp, sp, #0x400 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B424: + cmp sb, #0 + beq _0230B34C + ldr r1, [sp, #0x1c] + add r2, sp, #0x6c + str r1, [sp] + mov r1, #9 + str r1, [sp, #4] + mov r0, sl + mov r3, r8 + ldmia r2, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0xcc + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230B460: + mov r0, #1 + str r0, [r6, #0x144] + mov r4, #0 +_0230B46C: + cmp r4, #0 + beq _0230B47C + mov r0, #0xa + bl msleep_gsi +_0230B47C: + cmp r4, #0 + bne _02309440 + mov r0, #0 + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230B494: .word ov00_0231BC74 +_0230B498: .word ov00_0231BC7C +_0230B49C: .word ov00_0231BC84 +_0230B4A0: .word ov00_0231BC88 +_0230B4A4: .word ov00_0231BC90 +_0230B4A8: .word ov00_0231BC9C +_0230B4AC: .word ov00_0231BCA0 +_0230B4B0: .word ov00_0231BCA8 +_0230B4B4: .word ov00_0231BCAC +_0230B4B8: .word ov00_0231BCB4 +_0230B4BC: .word ov00_0231BCBC +_0230B4C0: .word ov00_0231BCC0 +_0230B4C4: .word ov00_0231BCC8 +_0230B4C8: .word ov00_0231BCD0 +_0230B4CC: .word ov00_0231BCDC +_0230B4D0: .word ov00_0231B95C +_0230B4D4: .word ov00_0231BC18 +_0230B4D8: .word ov00_0231BC44 +_0230B4DC: .word ov00_0231BCE4 +_0230B4E0: .word ov00_0231BC10 +_0230B4E4: .word ov00_0231BCE8 + arm_func_end GpiProcessSearch + + arm_func_start GpiProcessSearches +GpiProcessSearches: ; 0x0230B4E8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + ldr r6, [r7] + mov r5, #0 + ldr r0, [r6, #0x238] + cmp r0, #0 + ble _0230B5F4 + mov r0, r0, lsl #2 + bl gsimalloc + movs r4, r0 + bne _0230B528 + ldr r1, _0230B5FC ; =ov00_0231B95C + mov r0, r7 + bl GpiSetErrorString + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0230B528: + ldr r2, [r6, #0x5c4] + cmp r2, #0 + beq _0230B57C + mov r1, #1 +_0230B538: + ldr r0, [r2] + cmp r0, #3 + bne _0230B570 + ldr r0, [r2, #0x14] + cmp r0, #5 + beq _0230B570 + ldr r0, [r2, #4] + ldr r0, [r0, #0x140] + cmp r0, #0 + bne _0230B570 + str r2, [r4, r5, lsl #2] + ldr r0, [r2, #4] + add r5, r5, #1 + str r1, [r0, #0x140] +_0230B570: + ldr r2, [r2, #0x20] + cmp r2, #0 + bne _0230B538 +_0230B57C: + cmp r5, #0 + mov r6, #0 + ble _0230B5AC +_0230B588: + ldr r1, [r4, r6, lsl #2] + mov r0, r7 + bl GpiProcessSearch + cmp r0, #0 + ldrne r1, [r4, r6, lsl #2] + add r6, r6, #1 + strne r0, [r1, #0x1c] + cmp r6, r5 + blt _0230B588 +_0230B5AC: + cmp r5, #0 + mov r6, #0 + ble _0230B5EC + mov r8, r6 +_0230B5BC: + ldr r0, [r4, r6, lsl #2] + ldr r0, [r0, #4] + str r8, [r0, #0x140] + ldr r0, [r0, #0x144] + cmp r0, #0 + beq _0230B5E0 + ldr r1, [r4, r6, lsl #2] + mov r0, r7 + bl GpiRemoveOperation +_0230B5E0: + add r6, r6, #1 + cmp r6, r5 + blt _0230B5BC +_0230B5EC: + mov r0, r4 + bl gsifree +_0230B5F4: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0230B5FC: .word ov00_0231B95C + arm_func_end GpiProcessSearches + + arm_func_start GpiSendTransferReply +GpiSendTransferReply: ; 0x0230B600 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + ldr ip, [sp, #0x30] + mov r5, r2 + mov r6, r0 + cmp ip, #0 + ldreq r0, _0230B69C ; =ov00_0231BCF0 + mov lr, r1 + mov r4, r3 + streq r0, [sp, #0x30] + mov r0, r6 + mov r1, r5 + mov r3, lr + mov r2, #0xc9 + bl GpiPeerStartTransferMessage + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0230B6A0 ; =ov00_0231BCF4 + add r0, sp, #0 + mov r3, r4 + mov r2, #1 + bl OS_VsPrintf + add r2, sp, #0 + mov r0, r6 + mov r1, r5 + bl GpiSendOrBufferString + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + ldr r2, [sp, #0x30] + mov r0, r6 + mov r1, r5 + mvn r3, #0 + bl GpiPeerFinishTransferMessage + cmp r0, #0 + moveq r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230B69C: .word ov00_0231BCF0 +_0230B6A0: .word ov00_0231BCF4 + arm_func_end GpiSendTransferReply + + arm_func_start GpiHandleTransferMessage +GpiHandleTransferMessage: ; 0x0230B6A4 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x50 + mov r4, r1 + mov r5, r0 + mov r0, r3 + ldr r1, _0230B720 ; =ov00_0231BD0C + add r2, sp, #0x10 + mov r3, #0x40 + bl GpiValueForKey + cmp r0, #0 + addeq sp, sp, #0x50 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0230B724 ; =ov00_0231BD14 + add ip, sp, #0xc + add r0, sp, #0x10 + add r2, sp, #4 + add r3, sp, #8 + str ip, [sp] + bl Std_TsScanf + cmp r0, #3 + addne sp, sp, #0x50 + ldmneia sp!, {r3, r4, r5, pc} + mov ip, #0 + add r1, sp, #4 + mov r0, r5 + mov r2, r4 + mov r3, #2 + str ip, [sp] + bl GpiSendTransferReply + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230B720: .word ov00_0231BD0C +_0230B724: .word ov00_0231BD14 + arm_func_end GpiHandleTransferMessage + + arm_func_start GpiProcessRegisterUniqueNick +GpiProcessRegisterUniqueNick: ; 0x0230B728 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r4, r2 + mov r5, r1 + mov r1, r4 + mov r2, #1 + mov r6, r0 + bl GpiCheckForError + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0230B820 ; =ov00_0231BD20 + mov r0, r4 + mov r2, #4 + bl strncmp + cmp r0, #0 + beq _0230B79C + ldr r2, _0230B824 ; =ov00_0231BD28 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0230B79C: + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + beq _0230B808 + mov r0, #4 + bl gsimalloc + movs r3, r0 + bne _0230B7DC + ldr r1, _0230B828 ; =ov00_0231BD58 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_0230B7DC: + mov r2, #0 + str r2, [r3] + str r5, [sp] + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r6 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, pc} +_0230B808: + mov r0, r6 + mov r1, r5 + bl GpiRemoveOperation + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230B820: .word ov00_0231BD20 +_0230B824: .word ov00_0231BD28 +_0230B828: .word ov00_0231BD58 + arm_func_end GpiProcessRegisterUniqueNick + + arm_func_start GpiProcessRegisterCdKey +GpiProcessRegisterCdKey: ; 0x0230B82C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r4, r2 + mov r5, r1 + mov r1, r4 + mov r2, #1 + mov r6, r0 + bl GpiCheckForError + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0230B924 ; =ov00_0231BD68 + mov r0, r4 + mov r2, #4 + bl strncmp + cmp r0, #0 + beq _0230B8A0 + ldr r2, _0230B928 ; =ov00_0231BD28 + mov r0, r6 + mov r1, #1 + bl GpiSetError + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0230B8A0: + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + str r1, [sp, #8] + str r0, [sp, #0xc] + cmp r1, #0 + beq _0230B90C + mov r0, #4 + bl gsimalloc + movs r3, r0 + bne _0230B8E0 + ldr r1, _0230B92C ; =ov00_0231BD58 + mov r0, r6 + bl GpiSetErrorString + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_0230B8E0: + mov r2, #0 + str r2, [r3] + str r5, [sp] + add r1, sp, #8 + str r2, [sp, #4] + mov r0, r6 + ldmia r1, {r1, r2} + bl GpiAddCallback + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, pc} +_0230B90C: + mov r0, r6 + mov r1, r5 + bl GpiRemoveOperation + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230B924: .word ov00_0231BD68 +_0230B928: .word ov00_0231BD28 +_0230B92C: .word ov00_0231BD58 + arm_func_end GpiProcessRegisterCdKey + + arm_func_start strzcpy_gsi +strzcpy_gsi: ; 0x0230B930 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r2 + bl strncpy + add r0, r5, r4 + mov r1, #0 + strb r1, [r0, #-1] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end strzcpy_gsi + + arm_func_start GpiCheckForError +GpiCheckForError: ; 0x0230B950 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r6, r1 + mov r7, r0 + mov r5, r2 + ldr r1, _0230BA18 ; =ov00_0231BD70 + mov r0, r6 + mov r2, #7 + ldr r4, [r7] + bl strncmp + cmp r0, #0 + bne _0230BA0C + ldr r1, _0230BA1C ; =ov00_0231BD78 + add r2, sp, #0 + mov r0, r6 + mov r3, #0x10 + bl GpiValueForKey + cmp r0, #0 + beq _0230B9A8 + add r0, sp, #0 + bl atoi + str r0, [r4, #0x5b8] +_0230B9A8: + ldr r1, _0230BA20 ; =ov00_0231BD80 + mov r0, r6 + mov r2, r4 + mov r3, #0x100 + bl GpiValueForKey + cmp r0, #0 + moveq r0, #0 + streqb r0, [r4] + cmp r5, #0 + beq _0230BA00 + ldr r1, _0230BA24 ; =ov00_0231BD8C + mov r0, r6 + bl strstr + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r7 + mov r1, #4 + bl GpiCallErrorCallback +_0230BA00: + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230BA0C: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230BA18: .word ov00_0231BD70 +_0230BA1C: .word ov00_0231BD78 +_0230BA20: .word ov00_0231BD80 +_0230BA24: .word ov00_0231BD8C + arm_func_end GpiCheckForError + + arm_func_start GpiValueForKey +GpiValueForKey: ; 0x0230BA28 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + ldrsb r6, [r8] + mov r4, r2 + mov r7, r3 + bl strstr + movs r5, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r8 + bl strlen + add r1, r5, r0 + mov r3, #0 + sub r0, r7, #1 + b _0230BA6C +_0230BA64: + strb r2, [r4, r3] + add r3, r3, #1 +_0230BA6C: + cmp r3, r0 + bge _0230BA84 + ldrsb r2, [r1, r3] + cmp r2, #0 + cmpne r2, r6 + bne _0230BA64 +_0230BA84: + mov r0, #0 + strb r0, [r4, r3] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end GpiValueForKey + + arm_func_start GpiCheckSocketConnect +GpiCheckSocketConnect: ; 0x0230BA94 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov ip, #0 + mov r4, r2 + mov r5, r0 + mov r0, r1 + add r2, sp, #4 + add r3, sp, #0 + mov r1, ip + str ip, [sp, #4] + str ip, [sp] + bl GsiSocketSelect + mvn r1, #0 + cmp r0, r1 + bne _0230BAFC + ldr r2, _0230BB54 ; =ov00_0231BD94 + mov r0, r5 + mov r1, #5 + bl GpiSetError + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r3, r4, r5, pc} +_0230BAFC: + cmp r0, #0 + ble _0230BB44 + ldr r0, [sp] + cmp r0, #0 + beq _0230BB24 + mov r0, #4 + str r0, [r4] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0230BB24: + ldr r0, [sp, #4] + cmp r0, #0 + beq _0230BB44 + mov r0, #3 + str r0, [r4] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0230BB44: + mov r0, #0 + str r0, [r4] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230BB54: .word ov00_0231BD94 + arm_func_end GpiCheckSocketConnect + + arm_func_start GpiReadKeyAndValue +GpiReadKeyAndValue: ; 0x0230BB58 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, [r2] + mov r4, r0 + ldrsb lr, [r1, ip] + add r6, r1, ip + ldr ip, [sp, #0x10] + cmp lr, #0x5c + beq _0230BB9C + ldr r2, _0230BCA0 ; =ov00_0231BDCC + mov r1, #1 + bl GpiSetError + mov r0, r4 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0230BB9C: + ldrsb lr, [r6, #1] + add r1, r6, #2 + mov r5, #0 + cmp lr, #0x5c + beq _0230BC28 + ldr r0, _0230BCA4 ; =0x000001FF +_0230BBB4: + cmp lr, #0 + bne _0230BBE4 + ldr r2, _0230BCA0 ; =ov00_0231BDCC + mov r0, r4 + mov r1, #1 + bl GpiSetError + mov r0, r4 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0230BBE4: + cmp r5, r0 + bne _0230BC14 + ldr r2, _0230BCA0 ; =ov00_0231BDCC + mov r0, r4 + mov r1, #1 + bl GpiSetError + mov r0, r4 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0230BC14: + strb lr, [r3], #1 + ldrsb lr, [r1], #1 + add r5, r5, #1 + cmp lr, #0x5c + bne _0230BBB4 +_0230BC28: + mov r5, #0 + strb r5, [r3] + ldr r0, _0230BCA4 ; =0x000001FF + b _0230BC70 +_0230BC38: + cmp r5, r0 + bne _0230BC68 + ldr r2, _0230BCA0 ; =ov00_0231BDCC + mov r0, r4 + mov r1, #1 + bl GpiSetError + mov r0, r4 + mov r1, #3 + mov r2, #1 + bl GpiCallErrorCallback + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0230BC68: + strb r3, [ip], #1 + add r5, r5, #1 +_0230BC70: + ldrsb r3, [r1], #1 + cmp r3, #0x5c + cmpne r3, #0 + bne _0230BC38 + mov r0, #0 + strb r0, [ip] + sub r1, r1, r6 + ldr r3, [r2] + sub r1, r1, #1 + add r1, r3, r1 + str r1, [r2] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230BCA0: .word ov00_0231BDCC +_0230BCA4: .word 0x000001FF + arm_func_end GpiReadKeyAndValue + + arm_func_start GpiSetError +GpiSetError: ; 0x0230BCA8 + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [r0] + mov r5, r1 + mov r1, r2 + mov r0, r4 + mov r2, #0x100 + bl strzcpy_gsi + str r5, [r4, #0x5b8] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GpiSetError + + arm_func_start GpiSetErrorString +GpiSetErrorString: ; 0x0230BCCC + ldr ip, _0230BCDC ; =strzcpy_gsi + ldr r0, [r0] + mov r2, #0x100 + bx ip + .align 2, 0 +_0230BCDC: .word strzcpy_gsi + arm_func_end GpiSetErrorString + + arm_func_start PasswordEncryptString +PasswordEncryptString: ; 0x0230BCE0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov sl, r0 + mov sb, r1 + bl strlen + mov r7, r0 + ldr r0, _0230BD64 ; =0x79707367 + bl Util_RandSeed + cmp r7, #0 + mov r6, #0 + bls _0230BD40 + add r8, sp, #0 + mov r5, r6 + mov r4, #0xff +_0230BD18: + mov r0, r5 + mov r1, r4 + bl RandRangeOverlay0 + ldrsb r1, [sl, r6] + mov r0, r0, lsl #0x18 + add r6, r6, #1 + eor r0, r1, r0, asr #24 + cmp r6, r7 + strb r0, [r8], #1 + blo _0230BD18 +_0230BD40: + add r0, sp, #0 + mov r4, #0 + mov r1, sb + mov r2, r7 + mov r3, #1 + strb r4, [r0, r6] + bl B64Encode + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0230BD64: .word 0x79707367 + arm_func_end PasswordEncryptString + + arm_func_start BucketNew +BucketNew: ; 0x0230BD68 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + movs r7, r0 + ldreq r0, _0230BDD8 ; =ov00_023289D8 + mov r6, r1 + ldreq r7, [r0] + mov r0, r6 + mov r5, r2 + mov r4, r3 + bl goastrdup + mov r3, #0 + mov r2, #1 + str r0, [sp] + add r0, sp, #0 + mov r1, r4 + str r5, [sp, #4] + str r3, [sp, #0xc] + str r2, [sp, #8] + bl DoSet_Gsi + ldr r0, [r7] + add r1, sp, #0 + bl TableEnter_Gsi + mov r0, r7 + mov r1, r6 + bl DoFind_Gsi + bl DoGet_Gsi + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0230BDD8: .word ov00_023289D8 + arm_func_end BucketNew + + arm_func_start BucketSet +BucketSet: ; 0x0230BDDC + stmdb sp!, {r4, lr} + mov r4, r2 + bl DoFind_Gsi + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #0 + mov r1, r4 + str r2, [r0, #8] + bl DoSet_Gsi + ldmia sp!, {r4, pc} + arm_func_end BucketSet + + arm_func_start BucketAdd_Gsi +BucketAdd_Gsi: ; 0x0230BE08 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl DoFind_Gsi + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r4, #4] + cmp r1, #0 + bne _0230BE58 + bl DoGet_Gsi + ldr r1, [r5] + ldr r0, [r0] + add r0, r1, r0 + bl bint + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230BE58: + cmp r1, #1 + bne _0230BE88 + bl DoGet_Gsi + mov r3, r0 + ldmia r5, {r0, r1} + ldmia r3, {r2, r3} + bl _dadd + bl bfloat + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230BE88: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl BucketConcat_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end BucketAdd_Gsi + + arm_func_start BucketSub_Gsi +BucketSub_Gsi: ; 0x0230BE9C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r2 + bl DoFind_Gsi + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r4, #4] + cmp r1, #0 + bne _0230BEE4 + bl DoGet_Gsi + ldr r1, [r0] + ldr r0, [r5] + sub r0, r1, r0 + bl bint + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, pc} +_0230BEE4: + cmp r1, #1 + bne _0230BF18 + bl DoGet_Gsi + ldr ip, [r0] + ldr r1, [r0, #4] + mov r0, ip + ldmia r5, {r2, r3} + bl _dsub + bl bfloat + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, pc} +_0230BF18: + bl DoGet_Gsi + ldmia sp!, {r3, r4, r5, pc} + arm_func_end BucketSub_Gsi + + arm_func_start BucketMult_Gsi +BucketMult_Gsi: ; 0x0230BF20 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r2 + bl DoFind_Gsi + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r4, #4] + cmp r1, #0 + bne _0230BF68 + bl DoGet_Gsi + ldr r1, [r5] + ldr r0, [r0] + mul r0, r1, r0 + bl bint + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, pc} +_0230BF68: + cmp r1, #1 + bne _0230BF98 + bl DoGet_Gsi + mov r3, r0 + ldmia r5, {r0, r1} + ldmia r3, {r2, r3} + bl _dmul + bl bfloat + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, pc} +_0230BF98: + bl DoGet_Gsi + ldmia sp!, {r3, r4, r5, pc} + arm_func_end BucketMult_Gsi + + arm_func_start BucketDiv_Gsi +BucketDiv_Gsi: ; 0x0230BFA0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r2 + bl DoFind_Gsi + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r4, #4] + cmp r1, #0 + bne _0230BFE8 + bl DoGet_Gsi + ldr r0, [r0] + ldr r1, [r5] + bl _s32_div_f + bl bint + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, pc} +_0230BFE8: + cmp r1, #1 + bne _0230C01C + bl DoGet_Gsi + ldr ip, [r0] + ldr r1, [r0, #4] + mov r0, ip + ldmia r5, {r2, r3} + bl _ddiv + bl bfloat + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, pc} +_0230C01C: + bl DoGet_Gsi + ldmia sp!, {r3, r4, r5, pc} + arm_func_end BucketDiv_Gsi + + arm_func_start BucketConcat_Gsi +BucketConcat_Gsi: ; 0x0230C024 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r2 + bl DoFind_Gsi + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl DoGet_Gsi + mov r5, r0 + bl strlen + mov r4, r0 + mov r0, r7 + bl strlen + add r0, r4, r0 + add r0, r0, #1 + bl gsimalloc + mov r4, r0 + mov r1, r5 + bl strcpy + mov r0, r4 + mov r1, r7 + bl strcat + mov r0, r6 + mov r1, r4 + bl DoSet_Gsi + mov r0, r4 + bl gsifree + mov r0, r6 + bl DoGet_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end BucketConcat_Gsi + + arm_func_start BucketAvg_Gsi +BucketAvg_Gsi: ; 0x0230C098 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r2 + bl DoFind_Gsi + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r4, #4] + cmp r1, #0 + bne _0230C0F0 + bl DoGet_Gsi + ldr r1, [r4, #8] + add r1, r1, #1 + str r1, [r4, #8] + ldr r2, [r7] + ldr r0, [r0] + mla r0, r1, r0, r2 + bl _s32_div_f + bl bint + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230C0F0: + cmp r1, #1 + bne _0230C164 + bl DoGet_Gsi + ldr r1, [r4, #8] + mov r5, r0 + add r6, r1, #1 + mov r0, r6 + str r6, [r4, #8] + bl _dflt + ldmia r5, {r2, r3} + bl _dmul + mov r2, r0 + mov r3, r1 + ldmia r7, {r0, r1} + bl _dadd + mov r5, r0 + mov r0, r6 + mov r6, r1 + bl _dflt + mov r2, r0 + mov r3, r1 + mov r0, r5 + mov r1, r6 + bl _ddiv + bl bfloat + mov r1, r0 + mov r0, r4 + bl DoSet_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230C164: + bl DoGet_Gsi + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end BucketAvg_Gsi + + arm_func_start bint +bint: ; 0x0230C16C + ldr r1, _0230C17C ; =ov00_023289D8 + str r0, [r1, #4] + ldr r0, _0230C180 ; =ov00_023289DC + bx lr + .align 2, 0 +_0230C17C: .word ov00_023289D8 +_0230C180: .word ov00_023289DC + arm_func_end bint + + arm_func_start bfloat +bfloat: ; 0x0230C184 + ldr r2, _0230C198 ; =ov00_023289D8 + str r0, [r2, #8] + ldr r0, _0230C19C ; =ov00_023289E0 + str r1, [r2, #0xc] + bx lr + .align 2, 0 +_0230C198: .word ov00_023289D8 +_0230C19C: .word ov00_023289E0 + arm_func_end bfloat + + arm_func_start DumpMap_Gsi +DumpMap_Gsi: ; 0x0230C1A0 + ldrsb r3, [r0] + mov r2, r0 + cmp r3, #0 + beq _0230C1C8 + mov r1, #0x2f +_0230C1B4: + cmp r3, #0x5c + streqb r1, [r0] + ldrsb r3, [r0, #1]! + cmp r3, #0 + bne _0230C1B4 +_0230C1C8: + mov r0, r2 + bx lr + arm_func_end DumpMap_Gsi + + arm_func_start DoSet_Gsi +DoSet_Gsi: ; 0x0230C1D0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #4] + mov r4, r1 + cmp r0, #0 + ldreq r0, [r4] + streq r0, [r5, #0xc] + beq _0230C240 + cmp r0, #1 + bne _0230C20C + ldr r1, [r4] + ldr r0, [r4, #4] + str r1, [r5, #0xc] + str r0, [r5, #0x10] + b _0230C240 +_0230C20C: + cmp r0, #2 + bne _0230C240 + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _0230C224 + bl gsifree +_0230C224: + cmp r4, #0 + moveq r0, #0 + beq _0230C23C + mov r0, r4 + bl goastrdup + bl DumpMap_Gsi +_0230C23C: + str r0, [r5, #0xc] +_0230C240: + mov r0, r5 + bl DoGet_Gsi + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DoSet_Gsi + + arm_func_start DoGet_Gsi +DoGet_Gsi: ; 0x0230C24C + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r1, [r0, #4] + cmp r1, #2 + ldreq r0, [r0, #0xc] + addne r0, r0, #0xc + bx lr + arm_func_end DoGet_Gsi + + arm_func_start DoFind_Gsi +DoFind_Gsi: ; 0x0230C26C + stmdb sp!, {lr} + sub sp, sp, #0x14 + cmp r0, #0 + ldreq r0, _0230C298 ; =ov00_023289D8 + str r1, [sp] + ldreq r0, [r0] + add r1, sp, #0 + ldr r0, [r0] + bl TableLookup_Gsi + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_0230C298: .word ov00_023289D8 + arm_func_end DoFind_Gsi + + arm_func_start CloseStatsConnection +CloseStatsConnection: ; 0x0230C29C + stmdb sp!, {r3, lr} + ldr r0, _0230C304 ; =ov00_0231BDDC + mvn r1, #0 + ldr r0, [r0, #4] + cmp r0, r1 + beq _0230C2C8 + mov r1, #2 + bl shutdown_gsi + ldr r0, _0230C304 ; =ov00_0231BDDC + ldr r0, [r0, #4] + bl SocketClose +_0230C2C8: + ldr r0, _0230C304 ; =ov00_0231BDDC + mvn r1, #0 + str r1, [r0, #4] + bl ClosePendingCallbacks + ldr r0, _0230C308 ; =ov00_023289E8 + ldr r0, [r0, #0x28] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl gsifree + ldr r0, _0230C308 ; =ov00_023289E8 + mov r1, #0 + str r1, [r0, #0x28] + str r1, [r0, #0x18] + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230C304: .word ov00_0231BDDC +_0230C308: .word ov00_023289E8 + arm_func_end CloseStatsConnection + + arm_func_start IsStatsConnected +IsStatsConnected: ; 0x0230C30C + ldr r1, _0230C328 ; =ov00_0231BDDC + mvn r0, #0 + ldr r1, [r1, #4] + cmp r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0230C328: .word ov00_0231BDDC + arm_func_end IsStatsConnected + + arm_func_start PersistThink +PersistThink: ; 0x0230C32C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _0230C474 ; =ov00_0231BDDC + mvn r1, #0 + ldr r0, [r0, #4] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _0230C478 ; =ov00_023289E8 + ldr r1, [r1, #0x2c] + cmp r1, #5 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl SocketReadable + cmp r0, #0 + beq _0230C458 + mov r7, #0 + ldr sl, _0230C478 ; =ov00_023289E8 + ldr sb, _0230C474 ; =ov00_0231BDDC + mov r8, #0x100 + mov r6, r7 + mov r4, r7 +_0230C380: + ldr r1, [sl, #0x18] + ldr r0, [sl, #8] + sub r0, r1, r0 + cmp r0, #0x80 + bge _0230C3C4 + cmp r1, #0x100 + strlt r8, [sl, #0x18] + movge r0, r1, lsl #1 + strge r0, [sl, #0x18] + ldr r1, [sl, #0x18] + ldr r0, [sl, #0x28] + add r1, r1, #1 + bl gsirealloc + str r0, [sl, #0x28] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230C3C4: + ldr r5, [sl, #8] + ldr r1, [sl, #0x28] + ldr r2, [sl, #0x18] + ldr r0, [sb, #4] + mov r3, r7 + add r1, r1, r5 + sub r2, r2, r5 + bl SocketRecv + cmp r0, #0 + bgt _0230C3F8 + bl CloseStatsConnection + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230C3F8: + ldr r1, [sl, #8] + add r1, r1, r0 + str r1, [sl, #8] + ldr r0, [sl, #0x28] + strb r6, [r0, r1] + ldr r0, [sl, #0x28] + ldr r1, [sl, #8] + bl ProcessInBuffer + ldr r1, [sl, #8] + mov r5, r0 + cmp r5, r1 + streq r4, [sl, #8] + beq _0230C448 + ldr r0, [sl, #0x28] + sub r2, r1, r5 + add r1, r0, r5 + bl memmove + ldr r0, [sl, #8] + sub r0, r0, r5 + str r0, [sl, #8] +_0230C448: + ldr r0, [sb, #4] + bl SocketReadable + cmp r0, #0 + bne _0230C380 +_0230C458: + ldr r1, _0230C474 ; =ov00_0231BDDC + mvn r0, #0 + ldr r1, [r1, #4] + cmp r1, r0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0230C474: .word ov00_0231BDDC +_0230C478: .word ov00_023289E8 + arm_func_end PersistThink + + arm_func_start xcode_buf +xcode_buf: ; 0x0230C47C + stmdb sp!, {r4, lr} + ldr r2, _0230C4C0 ; =ov00_0231BDDC + cmp r1, #0 + ldr r4, [r2] + mov lr, #0 + ldmleia sp!, {r4, pc} +_0230C494: + ldrsb ip, [r0, lr] + ldrsb r3, [r4] + eor r3, ip, r3 + strb r3, [r0, lr] + ldrsb r3, [r4, #1]! + add lr, lr, #1 + cmp r3, #0 + ldreq r4, [r2] + cmp lr, r1 + blt _0230C494 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230C4C0: .word ov00_0231BDDC + arm_func_end xcode_buf + + arm_func_start value_for_key +value_for_key: ; 0x0230C4C4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x100 + ldr lr, _0230C588 ; =ov00_02318660 + add ip, sp, #0 + mov r4, r0 + mov r3, #0x80 +_0230C4DC: + ldrb r2, [lr] + ldrb r0, [lr, #1] + add lr, lr, #2 + strb r2, [ip] + strb r0, [ip, #1] + add ip, ip, #2 + subs r3, r3, #1 + bne _0230C4DC + ldr r2, _0230C58C ; =ov00_023289E8 + add r0, sp, #0 + ldr r3, [r2, #0x20] + eor r3, r3, #1 + str r3, [r2, #0x20] + bl strcat + ldr r1, _0230C590 ; =ov00_0231BE4C + add r0, sp, #0 + bl strcat + add r1, sp, #0 + mov r0, r4 + bl strstr + movs r4, r0 + addeq sp, sp, #0x100 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, sp, #0 + bl strlen + ldr r1, _0230C58C ; =ov00_023289E8 + ldr r2, _0230C594 ; =ov00_02328C18 + ldr r1, [r1, #0x20] + add r3, r4, r0 + add r0, r2, r1, lsl #8 + mov r2, r0 + b _0230C568 +_0230C560: + ldrsb r1, [r3], #1 + strb r1, [r2], #1 +_0230C568: + ldrsb r1, [r3] + cmp r1, #0 + cmpne r1, #0x5c + bne _0230C560 + mov r1, #0 + strb r1, [r2] + add sp, sp, #0x100 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230C588: .word ov00_02318660 +_0230C58C: .word ov00_023289E8 +_0230C590: .word ov00_0231BE4C +_0230C594: .word ov00_02328C18 + arm_func_end value_for_key + + arm_func_start value_for_key_safe +value_for_key_safe: ; 0x0230C598 + stmdb sp!, {r3, lr} + bl value_for_key + cmp r0, #0 + ldreq r0, _0230C5AC ; =ov00_0231BE48 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230C5AC: .word ov00_0231BE48 + arm_func_end value_for_key_safe + + arm_func_start SocketReadable +SocketReadable: ; 0x0230C5B0 + ldr ip, _0230C5B8 ; =CanReceiveOnSocket + bx ip + .align 2, 0 +_0230C5B8: .word CanReceiveOnSocket + arm_func_end SocketReadable + + arm_func_start FindFinal +FindFinal: ; 0x0230C5BC + sub r3, r1, #6 + mov r2, r0 + cmp r3, #0 + ble _0230C61C +_0230C5CC: + ldrsb r1, [r2] + cmp r1, #0x5c + ldreqsb r1, [r2, #1] + cmpeq r1, #0x66 + ldreqsb r1, [r2, #2] + cmpeq r1, #0x69 + ldreqsb r1, [r2, #3] + cmpeq r1, #0x6e + ldreqsb r1, [r2, #4] + cmpeq r1, #0x61 + ldreqsb r1, [r2, #5] + cmpeq r1, #0x6c + ldreqsb r1, [r2, #6] + cmpeq r1, #0x5c + moveq r0, r2 + bxeq lr + add r2, r2, #1 + sub r1, r2, r0 + cmp r1, r3 + blt _0230C5CC +_0230C61C: + mov r0, #0 + bx lr + arm_func_end FindFinal + + arm_func_start FindRequest +FindRequest: ; 0x0230C624 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r3, _0230C6A4 ; =ov00_023289E8 + mov r7, r0 + ldr r0, [r3, #0x14] + mov r6, r1 + cmp r0, #0 + mov r5, r2 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, #0 + bl ArrayLength_Gsi + cmp r0, #0 + ble _0230C69C + ldr r8, _0230C6A4 ; =ov00_023289E8 +_0230C65C: + ldr r0, [r8, #0x14] + mov r1, r4 + bl ArrayNth_Gsi + ldr r1, [r0] + cmp r1, r7 + ldreq r1, [r0, #4] + cmpeq r1, r6 + ldreq r0, [r0, #8] + cmpeq r0, r5 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r8, #0x14] + add r4, r4, #1 + bl ArrayLength_Gsi + cmp r4, r0 + blt _0230C65C +_0230C69C: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0230C6A4: .word ov00_023289E8 + arm_func_end FindRequest + + arm_func_start ProcessPlayerAuth +ProcessPlayerAuth: ; 0x0230C6A8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _0230C748 ; =ov00_0231BE50 + mov r6, r0 + bl value_for_key_safe + bl atoi + mov r5, r0 + ldr r1, _0230C74C ; =ov00_0231BE58 + mov r0, r6 + bl value_for_key_safe + bl atoi + mov r4, r0 + ldr r1, _0230C750 ; =ov00_0231BE5C + mov r0, r6 + bl value_for_key_safe + mov r6, r0 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl FindRequest + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, _0230C754 ; =ov00_023289E8 + mov r1, r4 + ldr r0, [r0, #0x14] + bl ArrayNth_Gsi + cmp r5, #0 + movgt r1, #1 + str r5, [r0, #8] + mov r2, #0 + movle r1, #0 + mov r0, r4 + mov r3, r6 + str r2, [sp] + bl CallReqCallback + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0230C748: .word ov00_0231BE50 +_0230C74C: .word ov00_0231BE58 +_0230C750: .word ov00_0231BE5C +_0230C754: .word ov00_023289E8 + arm_func_end ProcessPlayerAuth + + arm_func_start ProcessGetPid +ProcessGetPid: ; 0x0230C758 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0230C7D8 ; =ov00_0231BE64 + mov r5, r0 + bl value_for_key_safe + bl atoi + mov r4, r0 + ldr r1, _0230C7DC ; =ov00_0231BE58 + mov r0, r5 + bl value_for_key_safe + bl atoi + mov r1, r0 + mov r0, #3 + mov r2, #0 + bl FindRequest + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0230C7E0 ; =ov00_023289E8 + mov r1, r5 + ldr r0, [r0, #0x14] + bl ArrayNth_Gsi + cmp r4, #0 + movgt r1, #1 + mov r2, #0 + str r4, [r0, #8] + movle r1, #0 + mov r0, r5 + mov r3, r2 + str r2, [sp] + bl CallReqCallback + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230C7D8: .word ov00_0231BE64 +_0230C7DC: .word ov00_0231BE58 +_0230C7E0: .word ov00_023289E8 + arm_func_end ProcessGetPid + + arm_func_start ProcessGetData +ProcessGetData: ; 0x0230C7E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + ldr r1, _0230C8AC ; =ov00_0231BE6C + mov r4, r0 + bl value_for_key_safe + bl atoi + mov r7, r0 + ldr r1, _0230C8B0 ; =ov00_0231BE58 + mov r0, r4 + bl value_for_key_safe + bl atoi + mov r6, r0 + ldr r1, _0230C8B4 ; =ov00_0231BE74 + mov r0, r4 + bl value_for_key_safe + bl atoi + mov r5, r0 + ldr r1, _0230C8B8 ; =ov00_0231BE78 + mov r0, r4 + bl value_for_key_safe + bl atoi + mov r8, r0 + mov r1, r6 + mov r2, r5 + mov r0, #1 + bl FindRequest + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldr r1, _0230C8BC ; =ov00_0231BE7C + mov r0, r4 + bl value_for_key_safe + bl atoi + mov r6, r0 + ldr r1, _0230C8C0 ; =ov00_0231BE84 + mov r0, r4 + bl strstr + cmp r0, #0 + ldreq r3, _0230C8C4 ; =ov00_0231BE48 + moveq r6, #0 + addne r3, r0, #6 + mov r0, r5 + mov r1, r7 + mov r2, r8 + str r6, [sp] + bl CallReqCallback + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0230C8AC: .word ov00_0231BE6C +_0230C8B0: .word ov00_0231BE58 +_0230C8B4: .word ov00_0231BE74 +_0230C8B8: .word ov00_0231BE78 +_0230C8BC: .word ov00_0231BE7C +_0230C8C0: .word ov00_0231BE84 +_0230C8C4: .word ov00_0231BE48 + arm_func_end ProcessGetData + + arm_func_start ProcessSetData +ProcessSetData: ; 0x0230C8C8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _0230C950 ; =ov00_0231BE8C + mov r7, r0 + bl value_for_key_safe + bl atoi + mov r6, r0 + ldr r1, _0230C954 ; =ov00_0231BE74 + mov r0, r7 + bl value_for_key_safe + bl atoi + mov r5, r0 + ldr r1, _0230C958 ; =ov00_0231BE58 + mov r0, r7 + bl value_for_key_safe + bl atoi + mov r4, r0 + ldr r1, _0230C95C ; =ov00_0231BE78 + mov r0, r7 + bl value_for_key_safe + bl atoi + mov r1, r4 + mov r4, r0 + mov r2, r5 + mov r0, #2 + bl FindRequest + mvn r1, #0 + cmp r0, r1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r3, #0 + mov r1, r6 + mov r2, r4 + str r3, [sp] + bl CallReqCallback + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230C950: .word ov00_0231BE8C +_0230C954: .word ov00_0231BE74 +_0230C958: .word ov00_0231BE58 +_0230C95C: .word ov00_0231BE78 + arm_func_end ProcessSetData + + arm_func_start ProcessStatement +ProcessStatement: ; 0x0230C960 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldr r1, _0230CA38 ; =ov00_0231BE94 + mov r5, r0 + mov r3, #0 + mov r2, #8 + strb r3, [r5, r4] + bl strncmp + cmp r0, #0 + bne _0230C998 + mov r0, r5 + mov r1, r4 + bl ProcessPlayerAuth + ldmia sp!, {r3, r4, r5, pc} +_0230C998: + ldr r1, _0230CA3C ; =ov00_0231BEA0 + mov r0, r5 + mov r2, #9 + bl strncmp + cmp r0, #0 + bne _0230C9C0 + mov r0, r5 + mov r1, r4 + bl ProcessGetPid + ldmia sp!, {r3, r4, r5, pc} +_0230C9C0: + ldr r1, _0230CA3C ; =ov00_0231BEA0 + mov r0, r5 + mov r2, #9 + bl strncmp + cmp r0, #0 + bne _0230C9E8 + mov r0, r5 + mov r1, r4 + bl ProcessGetPid + ldmia sp!, {r3, r4, r5, pc} +_0230C9E8: + ldr r1, _0230CA40 ; =ov00_0231BEAC + mov r0, r5 + mov r2, #8 + bl strncmp + cmp r0, #0 + bne _0230CA10 + mov r0, r5 + mov r1, r4 + bl ProcessGetData + ldmia sp!, {r3, r4, r5, pc} +_0230CA10: + ldr r1, _0230CA44 ; =ov00_0231BEB8 + mov r0, r5 + mov r2, #8 + bl strncmp + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl ProcessSetData + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230CA38: .word ov00_0231BE94 +_0230CA3C: .word ov00_0231BEA0 +_0230CA40: .word ov00_0231BEAC +_0230CA44: .word ov00_0231BEB8 + arm_func_end ProcessStatement + + arm_func_start ProcessInBuffer +ProcessInBuffer: ; 0x0230CA48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r1 + mov sl, r0 + mov r7, sb + bl FindFinal + mov r6, r0 + ldr r5, _0230CAC8 ; =ov00_0231BE28 + ldr r4, _0230CACC ; =ov00_0231BDDC + b _0230CAB0 +_0230CA6C: + sub r8, r6, sl + mov r0, sl + mov r1, r8 + str r5, [r4] + bl xcode_buf + mov r0, sl + mov r1, r8 + bl ProcessStatement + add r0, r8, #7 + sub sb, sb, r0 + cmp sb, #0 + add sl, r6, #7 + ble _0230CAB0 + mov r0, sl + mov r1, sb + bl FindFinal + mov r6, r0 +_0230CAB0: + cmp sb, #0 + ble _0230CAC0 + cmp r6, #0 + bne _0230CA6C +_0230CAC0: + sub r0, r7, sb + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0230CAC8: .word ov00_0231BE28 +_0230CACC: .word ov00_0231BDDC + arm_func_end ProcessInBuffer + + arm_func_start CallReqCallback +CallReqCallback: ; 0x0230CAD0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + addmi sp, sp, #0x14 + ldmmiia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0230CBD0 ; =ov00_023289E8 + ldr r0, [r0, #0x14] + bl ArrayLength_Gsi + cmp r7, r0 + addge sp, sp, #0x14 + ldmgeia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0230CBD0 ; =ov00_023289E8 + mov r1, r7 + ldr r0, [r0, #0x14] + bl ArrayNth_Gsi + mov r3, r0 + ldr ip, [r3, #0x18] + cmp ip, #0 + beq _0230CBB8 + ldr r0, [r3] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230CBB8 +_0230CB38: ; jump table + b _0230CB48 ; case 0 + b _0230CB64 ; case 1 + b _0230CB8C ; case 2 + b _0230CBA8 ; case 3 +_0230CB48: + ldr r0, [r3, #0x14] + mov r2, r6 + str r0, [sp] + ldmib r3, {r0, r1} + mov r3, r4 + blx ip + b _0230CBB8 +_0230CB64: + str r6, [sp] + str r5, [sp, #4] + ldr r0, [sp, #0x28] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r3, #0x14] + str r0, [sp, #0x10] + ldmib r3, {r0, r1, r2, r3} + blx ip + b _0230CBB8 +_0230CB8C: + str r6, [sp] + str r5, [sp, #4] + ldr r0, [r3, #0x14] + str r0, [sp, #8] + ldmib r3, {r0, r1, r2, r3} + blx ip + b _0230CBB8 +_0230CBA8: + ldmib r3, {r0, r1} + ldr r3, [r3, #0x14] + mov r2, r6 + blx ip +_0230CBB8: + ldr r0, _0230CBD0 ; =ov00_023289E8 + mov r1, r7 + ldr r0, [r0, #0x14] + bl ArrayDeleteAt_Gsi + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0230CBD0: .word ov00_023289E8 + arm_func_end CallReqCallback + + arm_func_start ClosePendingCallbacks +ClosePendingCallbacks: ; 0x0230CBD4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x24 + ldr r0, _0230CCB8 ; =ov00_023289E8 + ldr r0, [r0, #0x14] + cmp r0, #0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + bl ArrayLength_Gsi + subs r4, r0, #1 + bmi _0230CC98 + ldr r5, _0230CCBC ; =ov00_023184D0 + add r3, sp, #4 + mov r2, #8 +_0230CC08: + ldrb r1, [r5] + ldrb r0, [r5, #1] + add r5, r5, #2 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + bne _0230CC08 + ldr sb, _0230CCC0 ; =ov00_0231BE38 + ldr r5, _0230CCC4 ; =ov00_0231BDDC + add r8, sp, #0x14 + mov r7, #0xf + mov r6, #0 +_0230CC3C: + add ip, sp, #4 + add r3, sp, #0x14 + mov r2, #8 +_0230CC48: + ldrb r1, [ip] + ldrb r0, [ip, #1] + add ip, ip, #2 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + bne _0230CC48 + mov r0, r8 + mov r1, r7 + str sb, [r5] + bl xcode_buf + mov r0, r4 + mov r1, r6 + mov r2, r6 + mov r3, r8 + str r6, [sp] + bl CallReqCallback + subs r4, r4, #1 + bpl _0230CC3C +_0230CC98: + ldr r0, _0230CCB8 ; =ov00_023289E8 + ldr r0, [r0, #0x14] + bl ArrayFree_Gsi + ldr r0, _0230CCB8 ; =ov00_023289E8 + mov r1, #0 + str r1, [r0, #0x14] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230CCB8: .word ov00_023289E8 +_0230CCBC: .word ov00_023184D0 +_0230CCC0: .word ov00_0231BE38 +_0230CCC4: .word ov00_0231BDDC + arm_func_end ClosePendingCallbacks + + arm_func_start GetTeamIndex_Gsi +GetTeamIndex_Gsi: ; 0x0230CCC8 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldreq r0, _0230CCF4 ; =ov00_023289E8 + ldreq r0, [r0, #0xc] + cmp r0, #0 + moveq r0, r1 + ldmeqia sp!, {r3, pc} + ldr r0, [r0, #0x20] + bl ArrayNth_Gsi + ldr r0, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CCF4: .word ov00_023289E8 + arm_func_end GetTeamIndex_Gsi + + arm_func_start GetPlayerIndex_Gsi +GetPlayerIndex_Gsi: ; 0x0230CCF8 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldreq r0, _0230CD24 ; =ov00_023289E8 + ldreq r0, [r0, #0xc] + cmp r0, #0 + moveq r0, r1 + ldmeqia sp!, {r3, pc} + ldr r0, [r0, #0x1c] + bl ArrayNth_Gsi + ldr r0, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CD24: .word ov00_023289E8 + arm_func_end GetPlayerIndex_Gsi + + arm_func_start ServerOpInt +ServerOpInt: ; 0x0230CD28 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + ldreq r0, _0230CD8C ; =ov00_023289E8 + mov r4, r1 + ldreq r5, [r0, #0xc] + mov r3, r2 + cmp r5, #0 + addeq r0, sp, #0x1c + beq _0230CD7C + ldr r0, [r5, #0xc] + add r2, sp, #0x1c + mov r1, r4 + blx r3 + cmp r0, #0 + bne _0230CD7C + ldr r0, [r5, #0xc] + add r3, sp, #0x1c + mov r1, r4 + mov r2, #0 + bl BucketNew +_0230CD7C: + ldr r0, [r0] + ldmia sp!, {r3, r4, r5, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_0230CD8C: .word ov00_023289E8 + arm_func_end ServerOpInt + + arm_func_start ServerOpFloat +ServerOpFloat: ; 0x0230CD90 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + ldreq r0, _0230CDFC ; =ov00_023289E8 + mov r4, r1 + ldreq r5, [r0, #0xc] + mov r3, r2 + cmp r5, #0 + addeq r0, sp, #0x1c + beq _0230CDE4 + ldr r0, [r5, #0xc] + add r2, sp, #0x1c + mov r1, r4 + blx r3 + cmp r0, #0 + bne _0230CDE4 + ldr r0, [r5, #0xc] + add r3, sp, #0x1c + mov r1, r4 + mov r2, #1 + bl BucketNew +_0230CDE4: + ldr r2, [r0] + ldr r1, [r0, #4] + mov r0, r2 + ldmia sp!, {r3, r4, r5, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_0230CDFC: .word ov00_023289E8 + arm_func_end ServerOpFloat + + arm_func_start ServerOpString +ServerOpString: ; 0x0230CE00 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + ldreq r0, _0230CE58 ; =ov00_023289E8 + mov r5, r1 + ldreq r6, [r0, #0xc] + mov r4, r3 + cmp r6, #0 + mov ip, r2 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6, #0xc] + mov r1, r5 + mov r2, r4 + blx ip + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r6, #0xc] + mov r1, r5 + mov r3, r4 + mov r2, #2 + bl BucketNew + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230CE58: .word ov00_023289E8 + arm_func_end ServerOpString + + arm_func_start TeamOpInt +TeamOpInt: ; 0x0230CE5C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x44 + mov r6, r1 + ldr r1, [sp, #0x58] + mov r7, r0 + mov r5, r2 + mov r4, r3 + bl GetTeamIndex_Gsi + mov r3, r0 + ldr r1, _0230CEB4 ; =ov00_0231BEC4 + add r0, sp, #4 + mov r2, r6 + bl OS_VsPrintf + ldr ip, [sp, #0x58] + mov r0, r7 + mov r2, r5 + mov r3, r4 + add r1, sp, #4 + str ip, [sp] + bl ServerOpInt + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0230CEB4: .word ov00_0231BEC4 + arm_func_end TeamOpInt + + arm_func_start TeamOpFloat +TeamOpFloat: ; 0x0230CEB8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x48 + mov r7, r1 + ldr r1, [sp, #0x64] + mov r8, r0 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x60] + bl GetTeamIndex_Gsi + mov r3, r0 + ldr r1, _0230CF14 ; =ov00_0231BEC4 + add r0, sp, #8 + mov r2, r7 + bl OS_VsPrintf + ldr ip, [sp, #0x64] + mov r3, r5 + mov r0, r8 + mov r2, r6 + add r1, sp, #8 + stmia sp, {r4, ip} + bl ServerOpFloat + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0230CF14: .word ov00_0231BEC4 + arm_func_end TeamOpFloat + + arm_func_start TeamOpString +TeamOpString: ; 0x0230CF18 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x44 + mov r6, r1 + ldr r1, [sp, #0x58] + mov r7, r0 + mov r5, r2 + mov r4, r3 + bl GetTeamIndex_Gsi + mov r3, r0 + ldr r1, _0230CF70 ; =ov00_0231BEC4 + add r0, sp, #4 + mov r2, r6 + bl OS_VsPrintf + ldr ip, [sp, #0x58] + mov r0, r7 + mov r2, r5 + mov r3, r4 + add r1, sp, #4 + str ip, [sp] + bl ServerOpString + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0230CF70: .word ov00_0231BEC4 + arm_func_end TeamOpString + + arm_func_start PlayerOpInt +PlayerOpInt: ; 0x0230CF74 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x44 + mov r6, r1 + ldr r1, [sp, #0x58] + mov r7, r0 + mov r5, r2 + mov r4, r3 + bl GetPlayerIndex_Gsi + mov r3, r0 + ldr r1, _0230CFCC ; =ov00_0231BECC + add r0, sp, #4 + mov r2, r6 + bl OS_VsPrintf + ldr ip, [sp, #0x58] + mov r0, r7 + mov r2, r5 + mov r3, r4 + add r1, sp, #4 + str ip, [sp] + bl ServerOpInt + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0230CFCC: .word ov00_0231BECC + arm_func_end PlayerOpInt + + arm_func_start PlayerOpFloat +PlayerOpFloat: ; 0x0230CFD0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x48 + mov r7, r1 + ldr r1, [sp, #0x64] + mov r8, r0 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x60] + bl GetPlayerIndex_Gsi + mov r3, r0 + ldr r1, _0230D02C ; =ov00_0231BECC + add r0, sp, #8 + arm_func_end PlayerOpFloat + + arm_func_start ov00_0230D000 +ov00_0230D000: ; 0x0230D000 + mov r2, r7 + bl OS_VsPrintf + ldr ip, [sp, #0x64] + mov r3, r5 + mov r0, r8 + mov r2, r6 + add r1, sp, #8 + stmia sp, {r4, ip} + bl ServerOpFloat + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0230D02C: .word ov00_0231BECC + arm_func_end ov00_0230D000 + + arm_func_start PlayerOpString +PlayerOpString: ; 0x0230D030 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x44 + mov r6, r1 + ldr r1, [sp, #0x58] + mov r7, r0 + mov r5, r2 + mov r4, r3 + bl GetPlayerIndex_Gsi + mov r3, r0 + ldr r1, _0230D088 ; =ov00_0231BECC + add r0, sp, #4 + mov r2, r6 + bl OS_VsPrintf + ldr ip, [sp, #0x58] + mov r0, r7 + mov r2, r5 + mov r3, r4 + add r1, sp, #4 + str ip, [sp] + bl ServerOpString + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0230D088: .word ov00_0231BECC + arm_func_end PlayerOpString + + arm_func_start Gti2VerifyChallenge +Gti2VerifyChallenge: ; 0x0230D08C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldrb r5, [r0] + mov lr, #0 + mov r4, #1 + and r6, r5, #1 + mov r3, lr + mov ip, r4 + mov r1, lr + mov r2, r4 +_0230D0B0: + add r7, r0, r4 + ldrb sl, [r7, #-1] + cmp sl, r5 + eor sl, r4, sl + movlo r8, ip + and sl, sl, #1 + movhs r8, r3 + cmp r5, #0x4f + movlo sb, r2 + eor sl, lr, sl + movhs sb, r1 + eor sl, r6, sl + eor sb, sl, sb + eors lr, sb, r8 + beq _0230D0F8 + ldrb r8, [r7] + tst r8, #1 + beq _0230D10C +_0230D0F8: + cmp lr, #0 + ldreqb r7, [r7] + andeq r7, r7, #1 + cmpeq r7, #1 + bne _0230D114 +_0230D10C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230D114: + add r4, r4, #1 + cmp r4, #0x20 + blt _0230D0B0 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end Gti2VerifyChallenge + + arm_func_start Gti2GetChallenge +Gti2GetChallenge: ; 0x0230D128 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl current_time_gsi + bl srand + bl rand + ldr r5, _0230D21C ; =0x2C0B02C1 + mov r1, r0, lsr #0x1f + smull r2, r4, r5, r0 + mov r8, #0 + mov r7, #1 + add r4, r1, r4, asr #4 + mov r3, #0x5d + smull r1, r2, r3, r4 + sub r4, r0, r1 + add r0, r4, #0x21 + strb r0, [sl] + mov fp, r8 + mov r6, r7 + mov r4, r3 +_0230D174: + add sb, sl, r7 + ldrb r3, [sb, #-1] + ldrb r0, [sl] + cmp r3, r0 + eor r3, r7, r3 + movlo r1, r6 + and r3, r3, #1 + movhs r1, fp + cmp r0, #0x4f + movlo r2, #1 + and r0, r0, #1 + eor r3, r8, r3 + movhs r2, #0 + eor r0, r0, r3 + eor r0, r0, r2 + eor r8, r0, r1 + bl rand + smull r2, r3, r5, r0 + mov r1, r0, lsr #0x1f + add r3, r1, r3, asr #4 + smull r1, r2, r4, r3 + sub r3, r0, r1 + add r0, r3, #0x21 + cmp r8, #0 + strb r0, [sb] + beq _0230D1E8 + ldrb r0, [sb] + tst r0, #1 + beq _0230D1FC +_0230D1E8: + cmp r8, #0 + ldreqb r0, [sb] + andeq r0, r0, #1 + cmpeq r0, #1 + bne _0230D208 +_0230D1FC: + ldrb r0, [sb] + add r0, r0, #1 + strb r0, [sb] +_0230D208: + add r7, r7, #1 + cmp r7, #0x20 + blt _0230D174 + mov r0, sl + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230D21C: .word 0x2C0B02C1 + arm_func_end Gti2GetChallenge + + arm_func_start Gti2GetResponse +Gti2GetResponse: ; 0x0230D220 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r5, r0 + ldr r0, _0230D320 ; =ov00_0231BED4 + mov r4, r1 + bl strlen + mov r7, r0 + mov r0, r4 + bl Gti2VerifyChallenge + mov sl, #0 + mov fp, r0 + mov r8, sl +_0230D24C: + cmp fp, #0 + cmpne sl, #0 + cmpne sl, #0xd + bne _0230D284 + bl rand + ldr r1, _0230D324 ; =0x2C0B02C1 + mov r2, r0, lsr #0x1f + smull r3, r6, r1, r0 + add r6, r2, r6, asr #4 + mov r1, #0x5d + smull r2, r3, r1, r6 + sub r6, r0, r2 + add r0, r6, #0x21 + b _0230D300 +_0230D284: + cmp sl, #1 + cmpne sl, #0xe + ldreqsb r6, [r4, sl] + addne r0, r4, sl + ldrb sb, [r4, sl] + ldrnesb r6, [r0, #-1] + mov r1, r7 + add r0, sl, sb + bl _s32_div_f + mul r0, r6, r8 + mov r6, r1 + mov r1, r7 + bl _s32_div_f + ldr r0, _0230D320 ; =ov00_0231BED4 + ldrsb r3, [r0, r6] + ldrsb r2, [r0, r1] + mla r0, sl, sb, r3 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #27 + add r0, r1, r0, ror #27 + ldrb r0, [r4, r0] + eor r0, r0, r2 + bl abs + ldr r1, _0230D324 ; =0x2C0B02C1 + smull r2, r3, r1, r0 + mov r1, r0, lsr #0x1f + add r3, r1, r3, asr #4 + mov r1, #0x5d + smull r2, r3, r1, r3 + sub r3, r0, r2 + add r0, r3, #0x21 +_0230D300: + strb r0, [r5, sl] + add r0, r8, #0x47 + add sl, sl, #1 + cmp sl, #0x20 + add r8, r0, #0x4600 + blt _0230D24C + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230D320: .word ov00_0231BED4 +_0230D324: .word 0x2C0B02C1 + arm_func_end Gti2GetResponse + + arm_func_start Gti2CheckResponse +Gti2CheckResponse: ; 0x0230D328 + mov ip, #0 +_0230D32C: + cmp ip, #0 + cmpne ip, #0xd + ldrneb r3, [r0, ip] + ldrneb r2, [r1, ip] + cmpne r3, r2 + movne r0, #0 + bxne lr + add ip, ip, #1 + cmp ip, #0x20 + blt _0230D32C + mov r0, #1 + bx lr + arm_func_end Gti2CheckResponse + + arm_func_start Gti2AllocateBuffer +Gti2AllocateBuffer: ; 0x0230D35C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl gsimalloc + str r0, [r5] + cmp r0, #0 + moveq r0, #0 + strne r4, [r5, #4] + movne r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Gti2AllocateBuffer diff --git a/asm/overlay_11_022E96F4.s b/asm/overlay_11_022E96F4.s index 01f4fed4..154394e9 100644 --- a/asm/overlay_11_022E96F4.s +++ b/asm/overlay_11_022E96F4.s @@ -267,12047 +267,3 @@ _022E9A6C: .word ov11_02388FC0 _022E9A70: .word ov11_02389018 _022E9A74: .word ov11_023890A0 arm_func_end ov11_022E99E0 - - arm_func_start ov11_022E9A78 -ov11_022E9A78: ; 0x022E9A78 - ldr ip, _022E9A88 ; =sub_0200B908 - mov r1, r0 - ldr r0, _022E9A8C ; =ov11_023890E4 - bx ip - .align 2, 0 -_022E9A88: .word sub_0200B908 -_022E9A8C: .word ov11_023890E4 - arm_func_end ov11_022E9A78 - - arm_func_start ov11_022E9A90 -ov11_022E9A90: ; 0x022E9A90 - ldr ip, _022E9AA0 ; =sub_0200B908 - mov r1, r0 - ldr r0, _022E9AA4 ; =ov11_023890A0 - bx ip - .align 2, 0 -_022E9AA0: .word sub_0200B908 -_022E9AA4: .word ov11_023890A0 - arm_func_end ov11_022E9A90 - - arm_func_start ov11_022E9AA8 -ov11_022E9AA8: ; 0x022E9AA8 - ldr ip, _022E9AB8 ; =sub_0200B918 - mov r1, r0 - ldr r0, _022E9ABC ; =ov11_023890E4 - bx ip - .align 2, 0 -_022E9AB8: .word sub_0200B918 -_022E9ABC: .word ov11_023890E4 - arm_func_end ov11_022E9AA8 - - arm_func_start ov11_022E9AC0 -ov11_022E9AC0: ; 0x022E9AC0 - ldr ip, _022E9AD0 ; =sub_0200B918 - mov r1, r0 - ldr r0, _022E9AD4 ; =ov11_023890A0 - bx ip - .align 2, 0 -_022E9AD0: .word sub_0200B918 -_022E9AD4: .word ov11_023890A0 - arm_func_end ov11_022E9AC0 - - arm_func_start ov11_022E9AD8 -ov11_022E9AD8: ; 0x022E9AD8 - ldr r1, _022E9AEC ; =ov11_02388FC0 - mov r2, #1 - strb r2, [r1] - str r0, [r1, #0xc] - bx lr - .align 2, 0 -_022E9AEC: .word ov11_02388FC0 - arm_func_end ov11_022E9AD8 - - arm_func_start ov11_022E9AF0 -ov11_022E9AF0: ; 0x022E9AF0 - ldr r2, _022E9B08 ; =ov11_02388FC0 - mov r3, #1 - strb r3, [r2, #2] - strb r1, [r2, #3] - str r0, [r2, #0xc] - bx lr - .align 2, 0 -_022E9B08: .word ov11_02388FC0 - arm_func_end ov11_022E9AF0 - - arm_func_start ov11_022E9B0C -ov11_022E9B0C: ; 0x022E9B0C - ldr ip, _022E9B1C ; =sub_0200BB60 - mov r1, r0 - ldr r0, _022E9B20 ; =ov11_0238905C - bx ip - .align 2, 0 -_022E9B1C: .word sub_0200BB60 -_022E9B20: .word ov11_0238905C - arm_func_end ov11_022E9B0C - - arm_func_start ov11_022E9B24 -ov11_022E9B24: ; 0x022E9B24 - ldr ip, _022E9B38 ; =sub_0200BB74 - mov r2, r0 - ldr r0, _022E9B3C ; =ov11_0238905C - mov r1, #1 - bx ip - .align 2, 0 -_022E9B38: .word sub_0200BB74 -_022E9B3C: .word ov11_0238905C - arm_func_end ov11_022E9B24 - - arm_func_start ov11_022E9B40 -ov11_022E9B40: ; 0x022E9B40 - ldr ip, _022E9B54 ; =sub_0200BB74 - mov r2, r0 - ldr r0, _022E9B58 ; =ov11_0238905C - mov r1, #2 - bx ip - .align 2, 0 -_022E9B54: .word sub_0200BB74 -_022E9B58: .word ov11_0238905C - arm_func_end ov11_022E9B40 - - arm_func_start ov11_022E9B5C -ov11_022E9B5C: ; 0x022E9B5C - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9B80 ; =ov11_0238905C - mov r1, lr - mov r2, ip - bl sub_0200BBF8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9B80: .word ov11_0238905C - arm_func_end ov11_022E9B5C - - arm_func_start ov11_022E9B84 -ov11_022E9B84: ; 0x022E9B84 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #2 - bl sub_02002878 - cmp r0, #0 - ldreq r0, _022E9BC8 ; =ov11_02388FC0 - moveq r1, #1 - streq r1, [r0, #8] - streq r4, [r0, #4] - beq _022E9BC0 - ldr r0, _022E9BCC ; =ov11_02389128 - mov r1, r4 - bl sub_0200BB60 - ldr r0, _022E9BC8 ; =ov11_02388FC0 - mov r1, #1 -_022E9BC0: - strb r1, [r0, #1] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E9BC8: .word ov11_02388FC0 -_022E9BCC: .word ov11_02389128 - arm_func_end ov11_022E9B84 - - arm_func_start ov11_022E9BD0 -ov11_022E9BD0: ; 0x022E9BD0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #2 - bl sub_02002878 - cmp r0, #0 - ldreq r0, _022E9C18 ; =ov11_02388FC0 - moveq r1, #2 - streq r1, [r0, #8] - streq r4, [r0, #4] - beq _022E9C0C - ldr r0, _022E9C1C ; =ov11_02389128 - mov r2, r4 - mov r1, #1 - bl sub_0200BB74 - ldr r0, _022E9C18 ; =ov11_02388FC0 -_022E9C0C: - mov r1, #1 - strb r1, [r0, #1] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E9C18: .word ov11_02388FC0 -_022E9C1C: .word ov11_02389128 - arm_func_end ov11_022E9BD0 - - arm_func_start ov11_022E9C20 -ov11_022E9C20: ; 0x022E9C20 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #2 - bl sub_02002878 - cmp r0, #0 - ldreq r0, _022E9C68 ; =ov11_02388FC0 - moveq r1, #3 - streq r1, [r0, #8] - streq r4, [r0, #4] - beq _022E9C5C - ldr r0, _022E9C6C ; =ov11_02389128 - mov r2, r4 - mov r1, #2 - bl sub_0200BB74 - ldr r0, _022E9C68 ; =ov11_02388FC0 -_022E9C5C: - mov r1, #1 - strb r1, [r0, #1] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E9C68: .word ov11_02388FC0 -_022E9C6C: .word ov11_02389128 - arm_func_end ov11_022E9C20 - - arm_func_start ov11_022E9C70 -ov11_022E9C70: ; 0x022E9C70 - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9C94 ; =ov11_02389128 - mov r1, lr - mov r2, ip - bl sub_0200BBF8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9C94: .word ov11_02389128 - arm_func_end ov11_022E9C70 - - arm_func_start ov11_022E9C98 -ov11_022E9C98: ; 0x022E9C98 - ldr ip, _022E9CA8 ; =sub_0200BB60 - mov r1, r0 - ldr r0, _022E9CAC ; =ov11_02389018 - bx ip - .align 2, 0 -_022E9CA8: .word sub_0200BB60 -_022E9CAC: .word ov11_02389018 - arm_func_end ov11_022E9C98 - - arm_func_start ov11_022E9CB0 -ov11_022E9CB0: ; 0x022E9CB0 - ldr ip, _022E9CC4 ; =sub_0200BB74 - mov r2, r0 - ldr r0, _022E9CC8 ; =ov11_02389018 - mov r1, #1 - bx ip - .align 2, 0 -_022E9CC4: .word sub_0200BB74 -_022E9CC8: .word ov11_02389018 - arm_func_end ov11_022E9CB0 - - arm_func_start ov11_022E9CCC -ov11_022E9CCC: ; 0x022E9CCC - ldr ip, _022E9CE0 ; =sub_0200BB74 - mov r2, r0 - ldr r0, _022E9CE4 ; =ov11_02389018 - mov r1, #2 - bx ip - .align 2, 0 -_022E9CE0: .word sub_0200BB74 -_022E9CE4: .word ov11_02389018 - arm_func_end ov11_022E9CCC - - arm_func_start ov11_022E9CE8 -ov11_022E9CE8: ; 0x022E9CE8 - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9D0C ; =ov11_02389018 - mov r1, lr - mov r2, ip - bl sub_0200BBF8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9D0C: .word ov11_02389018 - arm_func_end ov11_022E9CE8 - - arm_func_start ov11_022E9D10 -ov11_022E9D10: ; 0x022E9D10 - stmdb sp!, {r3, lr} - mov r2, r0 - ldr r0, _022E9D40 ; =ov11_02389018 - ldrsh r1, [r0, #0x14] - cmp r1, #0 - ble _022E9D34 - mov r1, #2 - bl sub_0200BB74 - ldmia sp!, {r3, pc} -_022E9D34: - mov r1, #1 - bl sub_0200BB74 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9D40: .word ov11_02389018 - arm_func_end ov11_022E9D10 - - arm_func_start ov11_022E9D44 -ov11_022E9D44: ; 0x022E9D44 - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9D68 ; =ov11_023890E4 - mov r1, lr - mov r2, ip - bl sub_0200BC60 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9D68: .word ov11_023890E4 - arm_func_end ov11_022E9D44 - - arm_func_start ov11_022E9D6C -ov11_022E9D6C: ; 0x022E9D6C - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9D90 ; =ov11_023890E4 - mov r1, lr - mov r2, ip - bl sub_0200BCB0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9D90: .word ov11_023890E4 - arm_func_end ov11_022E9D6C - - arm_func_start ov11_022E9D94 -ov11_022E9D94: ; 0x022E9D94 - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9DB8 ; =ov11_023890A0 - mov r1, lr - mov r2, ip - bl sub_0200BC60 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9DB8: .word ov11_023890A0 - arm_func_end ov11_022E9D94 - - arm_func_start ov11_022E9DBC -ov11_022E9DBC: ; 0x022E9DBC - stmdb sp!, {r3, lr} - mov lr, r0 - mov ip, r1 - mov r3, r2 - ldr r0, _022E9DE0 ; =ov11_023890A0 - mov r1, lr - mov r2, ip - bl sub_0200BCB0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9DE0: .word ov11_023890A0 - arm_func_end ov11_022E9DBC - - arm_func_start ov11_022E9DE4 -ov11_022E9DE4: ; 0x022E9DE4 - stmdb sp!, {r4, r5, r6, lr} - mov r3, #0x44 - mul r4, r0, r3 - mov r6, r2 - ldr r2, _022E9E24 ; =ov11_02388FD4 - mov r0, r0, lsl #1 - ldr r5, _022E9E28 ; =ov11_0238916C - strh r1, [r2, r0] - add r0, r5, r4 - mov r1, #1 - mov r2, #0 - bl sub_0200BB74 - mov r1, r6 - add r0, r5, r4 - bl sub_0200BB60 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E9E24: .word ov11_02388FD4 -_022E9E28: .word ov11_0238916C - arm_func_end ov11_022E9DE4 - - arm_func_start ov11_022E9E2C -ov11_022E9E2C: ; 0x022E9E2C - stmdb sp!, {r4, r5, r6, lr} - mov r3, #0x44 - mul r4, r0, r3 - ldr r3, _022E9E6C ; =ov11_02388FD4 - mov r0, r0, lsl #1 - ldr r5, _022E9E70 ; =ov11_0238916C - strh r1, [r3, r0] - mov r6, r2 - add r0, r5, r4 - mov r1, #0 - bl sub_0200BB60 - mov r2, r6 - add r0, r5, r4 - mov r1, #1 - bl sub_0200BB74 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E9E6C: .word ov11_02388FD4 -_022E9E70: .word ov11_0238916C - arm_func_end ov11_022E9E2C - - arm_func_start ov11_022E9E74 -ov11_022E9E74: ; 0x022E9E74 - stmdb sp!, {r4, r5, r6, lr} - mov r3, #0x44 - mul r4, r0, r3 - mov r6, r2 - ldr r2, _022E9EB4 ; =ov11_02388FD4 - mov r0, r0, lsl #1 - ldr r5, _022E9EB8 ; =ov11_0238916C - strh r1, [r2, r0] - add r0, r5, r4 - mov r1, #1 - mov r2, #0 - bl sub_0200BB74 - mov r1, r6 - add r0, r5, r4 - bl sub_0200BB88 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E9EB4: .word ov11_02388FD4 -_022E9EB8: .word ov11_0238916C - arm_func_end ov11_022E9E74 - - arm_func_start ov11_022E9EBC -ov11_022E9EBC: ; 0x022E9EBC - stmdb sp!, {r3, lr} - ldr ip, _022E9EF4 ; =ov11_0238916C - mov r3, #0x44 - mov lr, r0, lsl #1 - mla r0, r3, r0, ip - sub r2, r2, #0x100 - mov r2, r2, lsl #0x10 - ldr r3, _022E9EF8 ; =ov11_02388FD4 - mov r2, r2, asr #0x10 - strh r1, [r3, lr] - mov r3, r2 - mov r1, #0 - bl sub_0200BBF8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9EF4: .word ov11_0238916C -_022E9EF8: .word ov11_02388FD4 - arm_func_end ov11_022E9EBC - - arm_func_start ov11_022E9EFC -ov11_022E9EFC: ; 0x022E9EFC - stmdb sp!, {r3, lr} - ldr r0, _022E9F3C ; =ov11_02388FC0 - ldrb r1, [r0] - cmp r1, #0 - ldreqb r0, [r0, #2] - cmpeq r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, _022E9F40 ; =ov11_023890E4 - bl sub_0200BD14 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, _022E9F44 ; =ov11_0238905C - bl sub_0200BD14 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9F3C: .word ov11_02388FC0 -_022E9F40: .word ov11_023890E4 -_022E9F44: .word ov11_0238905C - arm_func_end ov11_022E9EFC - - arm_func_start ov11_022E9F48 -ov11_022E9F48: ; 0x022E9F48 - stmdb sp!, {r3, lr} - mov r0, #2 - bl sub_02002878 - cmp r0, #0 - ldreq r0, _022E9F70 ; =ov11_02388FC0 - ldreqb r0, [r0, #1] - ldmeqia sp!, {r3, pc} - ldr r0, _022E9F74 ; =ov11_02389128 - bl sub_0200BD14 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9F70: .word ov11_02388FC0 -_022E9F74: .word ov11_02389128 - arm_func_end ov11_022E9F48 - - arm_func_start IsScreenFadeInProgress -IsScreenFadeInProgress: ; 0x022E9F78 - stmdb sp!, {r3, lr} - ldr r0, _022E9F9C ; =ov11_023890A0 - bl sub_0200BD14 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, _022E9FA0 ; =ov11_02389018 - bl sub_0200BD14 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9F9C: .word ov11_023890A0 -_022E9FA0: .word ov11_02389018 - arm_func_end IsScreenFadeInProgress - - arm_func_start ov11_022E9FA4 -ov11_022E9FA4: ; 0x022E9FA4 - ldr r1, _022E9FC4 ; =ov11_02388FD4 - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022E9FC4: .word ov11_02388FD4 - arm_func_end ov11_022E9FA4 - - arm_func_start ov11_022E9FC8 -ov11_022E9FC8: ; 0x022E9FC8 - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _022E9FE0 - ldr r0, _022E9FEC ; =ov11_02389128 - bl GetFadeStatus - ldmia sp!, {r3, pc} -_022E9FE0: - ldr r0, _022E9FF0 ; =ov11_02389018 - bl GetFadeStatus - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9FEC: .word ov11_02389128 -_022E9FF0: .word ov11_02389018 - arm_func_end ov11_022E9FC8 - - arm_func_start ov11_022E9FF4 -ov11_022E9FF4: ; 0x022E9FF4 - ldr r0, _022EA000 ; =ov11_0238905C - ldrsh r0, [r0, #0x14] - bx lr - .align 2, 0 -_022EA000: .word ov11_0238905C - arm_func_end ov11_022E9FF4 - - arm_func_start ov11_022EA004 -ov11_022EA004: ; 0x022EA004 - ldr r0, _022EA010 ; =ov11_02389128 - ldrsh r0, [r0, #0x14] - bx lr - .align 2, 0 -_022EA010: .word ov11_02389128 - arm_func_end ov11_022EA004 - - arm_func_start ov11_022EA014 -ov11_022EA014: ; 0x022EA014 - ldr r0, _022EA020 ; =ov11_02389018 - ldrsh r0, [r0, #0x14] - bx lr - .align 2, 0 -_022EA020: .word ov11_02389018 - arm_func_end ov11_022EA014 - - arm_func_start ov11_022EA024 -ov11_022EA024: ; 0x022EA024 - stmdb sp!, {r3, lr} - ldr r0, _022EA0B4 ; =ov11_02388FC0 - ldr r1, [r0, #8] - cmp r1, #0 - beq _022EA0A0 - cmp r1, #1 - beq _022EA054 - cmp r1, #2 - beq _022EA064 - cmp r1, #3 - beq _022EA078 - b _022EA088 -_022EA054: - ldr r1, [r0, #4] - ldr r0, _022EA0B8 ; =ov11_02389128 - bl sub_0200BB60 - b _022EA088 -_022EA064: - ldr r2, [r0, #4] - ldr r0, _022EA0B8 ; =ov11_02389128 - mov r1, #1 - bl sub_0200BB74 - b _022EA088 -_022EA078: - ldr r2, [r0, #4] - ldr r0, _022EA0B8 ; =ov11_02389128 - mov r1, #2 - bl sub_0200BB74 -_022EA088: - ldr r0, _022EA0B4 ; =ov11_02388FC0 - mov r1, #0 - str r1, [r0, #8] - mov r1, #1 - strb r1, [r0, #1] - ldmia sp!, {r3, pc} -_022EA0A0: - ldr r0, _022EA0B8 ; =ov11_02389128 - bl sub_0200BD14 - ldr r1, _022EA0B4 ; =ov11_02388FC0 - strb r0, [r1, #1] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EA0B4: .word ov11_02388FC0 -_022EA0B8: .word ov11_02389128 - arm_func_end ov11_022EA024 - - arm_func_start ov11_022EA0BC -ov11_022EA0BC: ; 0x022EA0BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _022EA7EC ; =ov11_023890E4 - mov r4, #1 - bl sub_0200BD50 - ldr r0, _022EA7F0 ; =ov11_023890A0 - bl sub_0200BD50 - ldr r0, _022EA7F4 ; =ov11_02388FC0 - ldrb r1, [r0, #2] - cmp r1, #0 - beq _022EA300 - ldr r0, _022EA7F8 ; =ov11_0238905C - bl HandleFadesVeneer - cmp r0, #0 - ldr r0, _022EA7F8 ; =ov11_0238905C - movne r4, #0 - ldrsh r0, [r0, #0x14] - bl ov11_022EA80C - ldr r0, _022EA7FC ; =ov11_02389128 - bl GetFadeStatus - cmp r0, #0 - bne _022EA12C - ldr r1, _022EA7F4 ; =ov11_02388FC0 - ldr r0, _022EA7FC ; =ov11_02389128 - ldr r2, [r1, #0xc] - mov r1, #1 - bl sub_0200BB74 - mov r4, #0 - b _022EA1B4 -_022EA12C: - ldr r0, _022EA7FC ; =ov11_02389128 - bl HandleFadesVeneer - cmp r0, #0 - movne r4, #0 - bne _022EA1B4 - ldr r0, _022EA7FC ; =ov11_02389128 - bl GetFadeStatus - cmp r0, #2 - bne _022EA1B4 - ldr r0, _022EA7F4 ; =ov11_02388FC0 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA1B4 - mov r0, #0 - mov r1, r0 - bl sub_02009194 - mov r0, #1 - mov r1, #0 - bl sub_02009194 - mov r0, #2 - mov r1, #0 - bl sub_02009194 - mov r0, #3 - mov r1, #0 - bl sub_02009194 - mov r0, #4 - mov r1, #0 - bl sub_02009194 - ldr r0, _022EA7FC ; =ov11_02389128 - mov r1, #1 - ldr r2, _022EA7F4 ; =ov11_02388FC0 - ldr r2, [r2, #0xc] - bl sub_0200BB74 - mov r4, #0 -_022EA1B4: - ldr r0, _022EA7FC ; =ov11_02389128 - ldrsh r0, [r0, #0x14] - bl ov11_022EA8A0 - ldr r0, _022EA800 ; =ov11_02389018 - bl GetFadeStatus - cmp r0, #0 - bne _022EA1EC - ldr r1, _022EA7F4 ; =ov11_02388FC0 - ldr r0, _022EA800 ; =ov11_02389018 - ldr r2, [r1, #0xc] - mov r1, #1 - bl sub_0200BB74 - mov r4, #0 - b _022EA264 -_022EA1EC: - ldr r0, _022EA800 ; =ov11_02389018 - bl HandleFadesVeneer - cmp r0, #0 - movne r4, #0 - bne _022EA264 - ldr r0, _022EA800 ; =ov11_02389018 - bl GetFadeStatus - cmp r0, #2 - bne _022EA264 - mov r0, #0 - mov r1, #1 - bl sub_02009194 - mov r0, #1 - mov r1, r0 - bl sub_02009194 - mov r0, #2 - mov r1, #1 - bl sub_02009194 - mov r0, #3 - mov r1, #1 - bl sub_02009194 - mov r0, #4 - mov r1, #1 - bl sub_02009194 - ldr r0, _022EA800 ; =ov11_02389018 - mov r1, #1 - ldr r2, _022EA7F4 ; =ov11_02388FC0 - ldr r2, [r2, #0xc] - bl sub_0200BB74 - mov r4, #0 -_022EA264: - ldr r0, _022EA800 ; =ov11_02389018 - ldrsh r0, [r0, #0x14] - bl ov11_022EA8D4 - cmp r4, #0 - beq _022EA3D4 - ldr r2, _022EA7F4 ; =ov11_02388FC0 - mov r0, #0 - strb r0, [r2, #2] - mov r1, r0 - strb r0, [r2] - bl sub_020091B0 - mov r0, #1 - mov r1, #0 - bl sub_020091B0 - mov r0, #2 - mov r1, #0 - bl sub_020091B0 - mov r0, #3 - mov r1, #0 - bl sub_020091B0 - mov r0, #4 - mov r1, #0 - bl sub_020091B0 - mov r0, #0 - mov r1, #1 - bl sub_020091B0 - mov r0, #1 - mov r1, r0 - bl sub_020091B0 - mov r0, #2 - mov r1, #1 - bl sub_020091B0 - mov r0, #3 - mov r1, #1 - bl sub_020091B0 - mov r0, #4 - mov r1, #1 - bl sub_020091B0 - b _022EA3D4 -_022EA300: - ldrb r0, [r0] - cmp r0, #0 - beq _022EA398 - ldr r0, _022EA7F8 ; =ov11_0238905C - bl HandleFadesVeneer - cmp r0, #0 - ldr r0, _022EA7F8 ; =ov11_0238905C - movne r4, #0 - ldrsh r0, [r0, #0x14] - bl ov11_022EA80C - ldr r0, _022EA7FC ; =ov11_02389128 - bl GetFadeStatus - cmp r0, #0 - bne _022EA354 - ldr r1, _022EA7F4 ; =ov11_02388FC0 - ldr r0, _022EA7FC ; =ov11_02389128 - ldr r2, [r1, #0xc] - mov r1, #1 - bl sub_0200BB74 - mov r4, #0 - b _022EA364 -_022EA354: - ldr r0, _022EA7FC ; =ov11_02389128 - bl HandleFadesVeneer - cmp r0, #0 - movne r4, #0 -_022EA364: - ldr r0, _022EA7FC ; =ov11_02389128 - ldrsh r0, [r0, #0x14] - bl ov11_022EA8A0 - ldr r0, _022EA800 ; =ov11_02389018 - bl HandleFadesVeneer - ldr r0, _022EA800 ; =ov11_02389018 - ldrsh r0, [r0, #0x14] - bl ov11_022EA8D4 - cmp r4, #0 - ldrne r0, _022EA7F4 ; =ov11_02388FC0 - movne r1, #0 - strneb r1, [r0] - b _022EA3D4 -_022EA398: - ldr r0, _022EA7F8 ; =ov11_0238905C - bl HandleFadesVeneer - ldr r0, _022EA7F8 ; =ov11_0238905C - ldrsh r0, [r0, #0x14] - bl ov11_022EA80C - ldr r0, _022EA7FC ; =ov11_02389128 - bl HandleFadesVeneer - ldr r0, _022EA7FC ; =ov11_02389128 - ldrsh r0, [r0, #0x14] - bl ov11_022EA8A0 - ldr r0, _022EA800 ; =ov11_02389018 - bl HandleFadesVeneer - ldr r0, _022EA800 ; =ov11_02389018 - ldrsh r0, [r0, #0x14] - bl ov11_022EA8D4 -_022EA3D4: - mov r8, #0 - mov fp, #0x44 - ldr r5, _022EA804 ; =ov11_0238916C - ldr r6, _022EA808 ; =ov11_02388FD4 - mov r4, r8 - mov sl, fp -_022EA3EC: - mov r0, r8, lsl #1 - ldrh r0, [r6, r0] - cmp r0, #0 - beq _022EA7DC - mla r7, r8, sl, r5 - mov r0, r7 - bl HandleFadesVeneer - cmp r0, #0 - beq _022EA6B8 - and sb, r8, #0xff - mla r0, sb, fp, r5 - ldrsh r0, [r0, #0x14] - add r0, r0, #0x100 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #0xff - movgt r7, #0x80 - bgt _022EA444 - cmp r0, #0 - movlt r7, #0 - addge r0, r0, r0, lsr #31 - movge r7, r0, asr #1 -_022EA444: - mov r0, #2 - and r1, r8, #0xff - bl sub_020091B0 - mov r0, #3 - and r1, r8, #0xff - bl sub_020091B0 - and r0, r8, #0xff - bl sub_02009120 - mov r0, sb, lsl #1 - ldrh r0, [r6, r0] - cmp r0, #0xa - addls pc, pc, r0, lsl #2 - b _022EA7DC -_022EA478: ; jump table - b _022EA7DC ; case 0 - b _022EA4A4 ; case 1 - b _022EA4F4 ; case 2 - b _022EA4A4 ; case 3 - b _022EA4F4 ; case 4 - b _022EA544 ; case 5 - b _022EA594 ; case 6 - b _022EA5DC ; case 7 - b _022EA624 ; case 8 - b _022EA66C ; case 9 - b _022EA66C ; case 10 -_022EA4A4: - mov r0, #2 - mov r1, #1 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #3 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - rsb r1, r7, #0x80 - mov r0, r7, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA4F4: - mov r0, #3 - mov r1, #1 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #2 - mov r1, r0 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - rsb r1, r7, #0x80 - mov r0, r7, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA544: - mov r0, #2 - mov r1, r0 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #3 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - rsb r1, r7, #0x80 - mov r0, r7, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA594: - mov r0, #2 - mov r1, #1 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #3 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0x80 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA5DC: - mov r0, #3 - mov r1, #1 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #2 - mov r1, r0 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0x80 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA624: - mov r0, #2 - mov r1, r0 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #3 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0x80 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA66C: - mov r0, #2 - mov r1, #1 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #3 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - mov r0, #4 - mov r1, #2 - and r2, r8, #0xff - bl sub_02009454 - add r0, r7, r7, lsr #31 - mov r0, r0, lsl #0xf - mov r0, r0, asr #0x10 - mov r1, #0x80 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7DC -_022EA6B8: - mov r0, r8, lsl #1 - ldrh r0, [r6, r0] - cmp r0, #0xa - addls pc, pc, r0, lsl #2 - b _022EA7CC -_022EA6CC: ; jump table - b _022EA7CC ; case 0 - b _022EA6F8 ; case 1 - b _022EA758 ; case 2 - b _022EA710 ; case 3 - b _022EA770 ; case 4 - b _022EA7D4 ; case 5 - b _022EA734 ; case 6 - b _022EA794 ; case 7 - b _022EA7D4 ; case 8 - b _022EA7B8 ; case 9 - b _022EA7D4 ; case 10 -_022EA6F8: - and r0, r8, #0xff - bl ov11_022EF53C - mov r0, #3 - and r1, r8, #0xff - bl sub_02009194 - b _022EA7D4 -_022EA710: - and r0, r8, #0xff - bl ov11_022EF53C - ldrsh r0, [r7, #0x14] - cmp r0, #0 - bge _022EA7D4 - mov r0, #2 - and r1, r8, #0xff - bl sub_02009194 - b _022EA7D4 -_022EA734: - ldrsh r0, [r7, #0x14] - cmp r0, #0 - bge _022EA7D4 - and r0, r8, #0xff - bl ov11_022EF53C - mov r0, #2 - and r1, r8, #0xff - bl sub_02009194 - b _022EA7D4 -_022EA758: - and r0, r8, #0xff - bl ov11_022EF53C - mov r0, #2 - and r1, r8, #0xff - bl sub_02009194 - b _022EA7D4 -_022EA770: - and r0, r8, #0xff - bl ov11_022EF53C - ldrsh r0, [r7, #0x14] - cmp r0, #0 - bge _022EA7D4 - mov r0, #3 - and r1, r8, #0xff - bl sub_02009194 - b _022EA7D4 -_022EA794: - ldrsh r0, [r7, #0x14] - cmp r0, #0 - bge _022EA7D4 - and r0, r8, #0xff - bl ov11_022EF53C - mov r0, #3 - and r1, r8, #0xff - bl sub_02009194 - b _022EA7D4 -_022EA7B8: - mov r0, #0 - mov r1, #0x80 - and r2, r8, #0xff - bl sub_020094C4 - b _022EA7D4 -_022EA7CC: - and r0, r8, #0xff - bl ov11_022EF53C -_022EA7D4: - mov r0, r8, lsl #1 - strh r4, [r6, r0] -_022EA7DC: - add r8, r8, #1 - cmp r8, #2 - blt _022EA3EC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EA7EC: .word ov11_023890E4 -_022EA7F0: .word ov11_023890A0 -_022EA7F4: .word ov11_02388FC0 -_022EA7F8: .word ov11_0238905C -_022EA7FC: .word ov11_02389128 -_022EA800: .word ov11_02389018 -_022EA804: .word ov11_0238916C -_022EA808: .word ov11_02388FD4 - arm_func_end ov11_022EA0BC - - arm_func_start ov11_022EA80C -ov11_022EA80C: ; 0x022EA80C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - bl Debug_GetDebugFlag - cmp r0, #0 - ldrne r0, _022EA89C ; =ov11_02388FD8 - movne r1, #0 - strneb r1, [r0, #0x2f] - ldmneia sp!, {r4, pc} - cmp r4, #0 - ble _022EA864 - ldr r0, _022EA89C ; =ov11_02388FD8 - mov r1, #0xff - strb r1, [r0, #0x2c] - strb r1, [r0, #0x2d] - strb r1, [r0, #0x2e] - cmp r4, #0x100 - strgeb r1, [r0, #0x2f] - strltb r4, [r0, #0x2f] - ldr r0, _022EA89C ; =ov11_02388FD8 - bl sub_0201F2A0 - ldmia sp!, {r4, pc} -_022EA864: - ldmgeia sp!, {r4, pc} - ldr r1, _022EA89C ; =ov11_02388FD8 - mov r2, #0 - strb r2, [r1, #0x2c] - sub r0, r2, #0x100 - strb r2, [r1, #0x2d] - cmp r4, r0 - movle r0, #0xff - strb r2, [r1, #0x2e] - rsbgt r0, r4, #0 - strb r0, [r1, #0x2f] - ldr r0, _022EA89C ; =ov11_02388FD8 - bl sub_0201F2A0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EA89C: .word ov11_02388FD8 - arm_func_end ov11_022EA80C - - arm_func_start ov11_022EA8A0 -ov11_022EA8A0: ; 0x022EA8A0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - bl Debug_GetDebugFlag - cmp r0, #0 - mov r0, #0 - beq _022EA8C8 - mov r1, r0 - bl sub_02008F3C - ldmia sp!, {r4, pc} -_022EA8C8: - mov r1, r4 - bl sub_02008F3C - ldmia sp!, {r4, pc} - arm_func_end ov11_022EA8A0 - - arm_func_start ov11_022EA8D4 -ov11_022EA8D4: ; 0x022EA8D4 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - bl Debug_GetDebugFlag - cmp r0, #0 - mov r0, #1 - beq _022EA8FC - mov r1, #0 - bl sub_02008F3C - ldmia sp!, {r4, pc} -_022EA8FC: - mov r1, r4 - bl sub_02008F3C - ldmia sp!, {r4, pc} - arm_func_end ov11_022EA8D4 - - arm_func_start ov11_022EA908 -ov11_022EA908: ; 0x022EA908 - ldr r0, _022EA918 ; =ov11_023891F4 - mov r1, #0 - str r1, [r0] - bx lr - .align 2, 0 -_022EA918: .word ov11_023891F4 - arm_func_end ov11_022EA908 - - arm_func_start ov11_022EA91C -ov11_022EA91C: ; 0x022EA91C - bx lr - arm_func_end ov11_022EA91C - - arm_func_start ov11_022EA920 -ov11_022EA920: ; 0x022EA920 - cmp r0, #0xa - beq _022EA938 - cmp r0, #0xb - ldreq r1, _022EA950 ; =ov11_023891F4 - streq r0, [r1] - bx lr -_022EA938: - ldr r0, _022EA950 ; =ov11_023891F4 - ldr r1, [r0] - cmp r1, #0xb - moveq r1, #0 - streq r1, [r0] - bx lr - .align 2, 0 -_022EA950: .word ov11_023891F4 - arm_func_end ov11_022EA920 - - arm_func_start ov11_022EA954 -ov11_022EA954: ; 0x022EA954 - mov r2, #0 - str r2, [r0] - str r2, [r0, #4] - sub r1, r2, #1 - str r1, [r0, #8] - str r2, [r0, #0xc] - str r2, [r0, #0x10] - str r2, [r0, #0x1c] - bx lr - arm_func_end ov11_022EA954 - - arm_func_start ov11_022EA978 -ov11_022EA978: ; 0x022EA978 - mov r2, #0 - str r2, [r0] - sub r1, r2, #1 - str r1, [r0, #8] - str r2, [r0, #0xc] - bx lr - arm_func_end ov11_022EA978 - - arm_func_start ov11_022EA990 -ov11_022EA990: ; 0x022EA990 - stmdb sp!, {r4, lr} - sub r2, r1, #0xa - mov r4, r0 - cmp r2, #1 - ldmlsia sp!, {r4, pc} - cmp r1, #6 - bne _022EA9BC - bl ov11_022EA954 - mov r0, #6 - str r0, [r4] - ldmia sp!, {r4, pc} -_022EA9BC: - ldr r0, [r4, #4] - cmp r0, r1 - ldmeqia sp!, {r4, pc} - str r1, [r4, #4] - mvn r0, #0 - str r0, [r4, #8] - mov r0, #0 - str r0, [r4, #0xc] - bl KeyWaitInit - ldmia sp!, {r4, pc} - arm_func_end ov11_022EA990 - - arm_func_start ov11_022EA9E4 -ov11_022EA9E4: ; 0x022EA9E4 - stmdb sp!, {r4, lr} - ldr r1, _022EAA20 ; =ov11_023891F4 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0xb - moveq r0, #0xb - ldmeqia sp!, {r4, pc} - bl ov11_022F75C0 - cmp r0, #0 - movne r0, #0xb - ldmneia sp!, {r4, pc} - ldr r0, [r4, #4] - cmp r0, #0 - ldreq r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022EAA20: .word ov11_023891F4 - arm_func_end ov11_022EA9E4 - - arm_func_start ov11_022EAA24 -ov11_022EAA24: ; 0x022EAA24 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x38 - mov r6, r3 - mvn r4, #0 - ldr r3, _022EAF5C ; =ov11_023891F4 - str r4, [r6] - ldr r3, [r3] - mov sb, r0 - cmp r3, #0xb - mov r8, r1 - mov r7, r2 - ldr r5, [sp, #0x58] - moveq r0, #5 - beq _022EAF54 - ldr r1, [sb] - cmp r1, #5 - bne _022EAA74 - bl ov11_022EA954 - mov r0, #5 - str r0, [sb] -_022EAA74: - ldr r4, [sb, #4] - cmp r4, #0 - ldreq r4, [sb] - cmp r4, #1 - beq _022EAA9C - cmp r4, #6 - beq _022EAE9C - cmp r4, #7 - beq _022EAF2C - b _022EAF40 -_022EAA9C: - bl ov11_022F9074 - cmp r0, #0 - mov r0, #0 - beq _022EAE8C - add r1, sp, #6 - bl GetHeldButtons - add r1, sp, #4 - mov r0, #0 - bl GetPressedButtons - bl ov11_0230D000 - cmp r0, #0 - beq _022EAAEC - bl ov11_0230D220 - cmp r0, #0 - beq _022EAB00 - mov r0, #0 - str r0, [r8] - sub r1, r0, #1 - strb r1, [r7] - b _022EAF54 -_022EAAEC: - mov r0, #0 - str r0, [r8] - sub r1, r0, #1 - strb r1, [r7] - b _022EAF54 -_022EAB00: - ldrh r0, [sp, #6] - tst r0, #2 - movne r0, #0 - mvneq r0, #0 - str r0, [sb, #8] - ldrh r0, [sp, #4] - tst r0, #0x400 - beq _022EAB38 - mov r0, #0x12 - str r0, [r8] - sub r0, r0, #0x13 - strb r0, [r7] - mov r0, #6 - b _022EAF54 -_022EAB38: - tst r0, #1 - movne r0, #0xa - strne r0, [r8] - bne _022EAB84 - tst r0, #0x100 - movne r0, #9 - strne r0, [r8] - bne _022EAB84 - ldr r0, [sb, #8] - cmp r0, #0 - moveq r0, #5 - streq r0, [r8] - beq _022EAB84 - bl GetSpeedOption - cmp r0, #0 - movne r0, #4 - strne r0, [r8] - moveq r0, #3 - streq r0, [r8] -_022EAB84: - ldrh r0, [sp, #6] - bl ov11_022EAF70 - strb r0, [r7] - bl IsTouchScreenUseAnywhere - cmp r0, #0 - beq _022EAE7C - ldrsb r1, [r7] - mvn r0, #0 - cmp r1, r0 - bne _022EAE6C - ldr r0, [r8] - sub r0, r0, #3 - cmp r0, #2 - bhi _022EAE5C - add r0, sp, #0x14 - bl GetReleasedStylus - ldrh r0, [sp, #0x14] - tst r0, #0x10 - bne _022EABE0 - tst r0, #0x400 - bne _022EABE0 - tst r0, #0x20 - beq _022EAC0C -_022EABE0: - add r0, sp, #0xc - add r1, sp, #0x28 - bl ov11_022FBBC8 - add r0, sp, #0 - add r1, sp, #0xc - bl ov11_022FBC0C - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x10] - str r2, [r5] - str r1, [r5, #4] - b _022EAC48 -_022EAC0C: - tst r0, #1 - moveq r0, #0 - streqb r0, [sp] - mvneq r0, #0 - beq _022EAC48 - add r0, sp, #0xc - add r1, sp, #0x18 - bl ov11_022FBBC8 - add r0, sp, #0 - add r1, sp, #0xc - bl ov11_022FBC0C - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x10] - str r2, [r5] - str r1, [r5, #4] -_022EAC48: - mov r1, r0, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - bhi _022EAC64 - ldrb r1, [sp] - cmp r1, #0 - mvneq r0, #0 -_022EAC64: - ldrh r1, [sp, #0x14] - tst r1, #0x20 - beq _022EACE0 - sub r1, r0, #2 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - movls r0, #9 - strls r0, [r8] - bls _022EAE94 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _022EACBC - mov r0, #0xb - str r0, [r8] - sub r0, r0, #0xc - strb r0, [r7] - mov r0, #2 - b _022EAF54 -_022EACBC: - mov r0, #0x11 - str r0, [sb, #0x10] - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x10] - mov r0, #1 - str r2, [sb, #0x14] - str r1, [sb, #0x18] - str r0, [sb, #0x1c] - b _022EAE94 -_022EACE0: - tst r1, #0x10 - bne _022EACF0 - tst r1, #0x400 - beq _022EAD78 -_022EACF0: - cmp r0, #2 - bne _022EAD10 - mov r0, #0x12 - str r0, [r8] - sub r0, r0, #0x13 - strb r0, [r7] - mov r0, #6 - b _022EAF54 -_022EAD10: - cmp r0, #3 - moveq r0, #9 - streq r0, [r8] - beq _022EAE94 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _022EAD48 - mov r0, #0xb - str r0, [r8] - sub r0, r0, #0xc - strb r0, [r7] - mov r0, #2 - b _022EAF54 -_022EAD48: - bl GetSpeedOption - cmp r0, #0 - movne r0, #0x10 - moveq r0, #0xf - str r0, [sb, #0x10] - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x10] - mov r0, #1 - str r2, [sb, #0x14] - str r1, [sb, #0x18] - str r0, [sb, #0x1c] - b _022EAE94 -_022EAD78: - tst r1, #0x200 - beq _022EAD98 - mov r0, #0xe - str r0, [r8] - sub r0, r0, #0xf - strb r0, [r7] - mov r0, #3 - b _022EAF54 -_022EAD98: - tst r1, #0x80 - beq _022EADB8 - mov r0, #5 - str r0, [r8] - sub r0, r0, #6 - strb r0, [r7] - mov r0, #3 - b _022EAF54 -_022EADB8: - tst r1, #0x40 - beq _022EAE10 - tst r1, #0x100 - bne _022EADD4 - mvn r1, #0 - cmp r0, r1 - bne _022EAE00 -_022EADD4: - ldr r0, [r8] - cmp r0, #5 - moveq r0, #0xe - streq r0, [r8] - beq _022EAE00 - bl GetSpeedOption - cmp r0, #0 - movne r0, #0xd - strne r0, [r8] - moveq r0, #0xc - streq r0, [r8] -_022EAE00: - mvn r0, #0 - strb r0, [r7] - mov r0, #3 - b _022EAF54 -_022EAE10: - ldr r0, [sb, #0x10] - cmp r0, #0 - beq _022EAE94 - str r0, [r8] - mvn r0, #0 - strb r0, [r7] - ldr r1, [sb, #0x14] - ldr r0, [sb, #0x18] - str r1, [r5] - str r0, [r5, #4] - ldr r0, [sb, #0x1c] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - str r0, [r6] - mov r0, #0 - str r0, [sb, #0x1c] - mov r0, #4 - b _022EAF54 -_022EAE5C: - mov r0, #0 - str r0, [sb, #0x10] - str r0, [sb, #0x1c] - b _022EAE94 -_022EAE6C: - mov r0, #0 - str r0, [sb, #0x10] - str r0, [sb, #0x1c] - b _022EAE94 -_022EAE7C: - mov r0, #0 - str r0, [sb, #0x10] - str r0, [sb, #0x1c] - b _022EAE94 -_022EAE8C: - str r0, [sb, #0x10] - str r0, [sb, #0x1c] -_022EAE94: - ldr r0, [sb] - b _022EAF54 -_022EAE9C: - add r0, sp, #8 - bl ov11_0230114C - cmp r0, #0 - beq _022EAF40 - bl KeyWaitInit - mov r0, sb - bl ov11_022EA978 - mov r0, #1 - str r0, [sb] - ldr r0, [sp, #8] - cmp r0, #6 - bne _022EAF10 - mov r1, #5 - mov r0, sb - str r1, [sb] - bl ov11_022EA978 - mov r1, #1 - add r0, sp, #2 - str r1, [sb] - bl sub_0206C0FC - ldrsh r0, [sp, #2] - mov r1, #0 - bl ov11_022F7188 - mov r0, #1 - str r0, [r8] - sub r0, r0, #2 - strb r0, [r7] - ldr r0, [sb] - b _022EAF54 -_022EAF10: - mov r0, sb - bl ov11_022EA978 - mov r1, #1 - mov r0, #2 - str r1, [sb] - bl UnlockScriptingLock - b _022EAF40 -_022EAF2C: - mov r0, sb - bl ov11_022EA978 - mov r0, #1 - str r0, [sb] - b _022EAF54 -_022EAF40: - mov r0, #0 - str r0, [r8] - sub r1, r0, #1 - mov r0, r4 - strb r1, [r7] -_022EAF54: - add sp, sp, #0x38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EAF5C: .word ov11_023891F4 - arm_func_end ov11_022EAA24 - - arm_func_start ov11_022EAF60 -ov11_022EAF60: ; 0x022EAF60 - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0x1c] - bx lr - arm_func_end ov11_022EAF60 - - arm_func_start ov11_022EAF70 -ov11_022EAF70: ; 0x022EAF70 - tst r0, #0x40 - beq _022EAF94 - tst r0, #0x10 - movne r0, #3 - bxne lr - tst r0, #0x20 - movne r0, #5 - moveq r0, #4 - bx lr -_022EAF94: - tst r0, #0x80 - beq _022EAFB8 - tst r0, #0x10 - movne r0, #1 - bxne lr - tst r0, #0x20 - movne r0, #7 - moveq r0, #0 - bx lr -_022EAFB8: - tst r0, #0x10 - movne r0, #2 - bxne lr - tst r0, #0x20 - movne r0, #6 - mvneq r0, #0 - bx lr - arm_func_end ov11_022EAF70 - - arm_func_start ov11_022EAFD4 -ov11_022EAFD4: ; 0x022EAFD4 - stmdb sp!, {r4, lr} - mov r4, #0 -_022EAFDC: - mov r0, r4 - bl ov11_022EAFF8 - add r4, r4, #1 - cmp r4, #2 - blt _022EAFDC - ldmia sp!, {r4, pc} - arm_func_end ov11_022EAFD4 - - arm_func_start ov11_022EAFF4 -ov11_022EAFF4: ; 0x022EAFF4 - bx lr - arm_func_end ov11_022EAFF4 - - arm_func_start ov11_022EAFF8 -ov11_022EAFF8: ; 0x022EAFF8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r3, _022EB07C ; =ov11_023891F8 - ldr r2, _022EB080 ; =ov11_02320BBC - mov r1, #0x54 - ldr ip, [r2, #0x1c] - ldr lr, [r2, #0x18] - mla r4, r0, r1, r3 - str lr, [sp] - str ip, [sp, #4] - ldr r3, [r2, #0x20] - ldr r1, [r2, #0x24] - add r2, sp, #0 - str r3, [r4, #0x48] - str r1, [r4, #0x4c] - mov r1, #0 - strb r1, [r4, #0x50] - bl ov11_022EB0E4 - mov r1, #0 - str r1, [r4, #8] - str r1, [r4, #0xc] - str r1, [r4, #0x10] - str r1, [r4, #0x14] - sub r0, r1, #1 - str r0, [r4, #4] - str r1, [r4, #0x30] - str r1, [r4, #0x34] - str r1, [r4, #0x38] - str r1, [r4, #0x3c] - str r1, [r4, #0x40] - str r1, [r4, #0x44] - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EB07C: .word ov11_023891F8 -_022EB080: .word ov11_02320BBC - arm_func_end ov11_022EAFF8 - - arm_func_start ov11_022EB084 -ov11_022EB084: ; 0x022EB084 - stmdb sp!, {r3, lr} - ldr lr, _022EB0BC ; =ov11_023891F8 - mov ip, #0x54 - mla ip, r0, ip, lr - ldr r0, [ip, #0x30] - cmp r0, r1 - strne r1, [ip, #0x30] - movne r0, #0 - strne r0, [ip, #0x3c] - strne r0, [ip, #0x40] - strne r0, [ip, #0x44] - str r2, [ip, #0x34] - str r3, [ip, #0x38] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB0BC: .word ov11_023891F8 - arm_func_end ov11_022EB084 - - arm_func_start ov11_022EB0C0 -ov11_022EB0C0: ; 0x022EB0C0 - mov r2, #0x54 - mul r2, r0, r2 - ldr r3, _022EB0E0 ; =ov11_023891F8 - mov r0, #0 - str r1, [r3, r2] - add r1, r3, r2 - str r0, [r1, #8] - bx lr - .align 2, 0 -_022EB0E0: .word ov11_023891F8 - arm_func_end ov11_022EB0C0 - - arm_func_start ov11_022EB0E4 -ov11_022EB0E4: ; 0x022EB0E4 - mov r3, #0x54 - mul r3, r0, r3 - ldr ip, _022EB124 ; =ov11_023891F8 - mov r0, #0 - str r1, [ip, r3] - add r3, ip, r3 - str r0, [r3, #8] - ldr r1, [r3, #0x18] - ldr r0, [r3, #0x1c] - str r1, [r3, #0x20] - str r0, [r3, #0x24] - ldr r1, [r2] - ldr r0, [r2, #4] - str r1, [r3, #0x28] - str r0, [r3, #0x2c] - bx lr - .align 2, 0 -_022EB124: .word ov11_023891F8 - arm_func_end ov11_022EB0E4 - - arm_func_start ov11_022EB128 -ov11_022EB128: ; 0x022EB128 - mov r3, #0x54 - mul r3, r0, r3 - ldr ip, _022EB14C ; =ov11_023891F8 - mov r0, #0 - str r1, [ip, r3] - add r1, ip, r3 - str r0, [r1, #8] - str r2, [r1, #4] - bx lr - .align 2, 0 -_022EB14C: .word ov11_023891F8 - arm_func_end ov11_022EB128 - - arm_func_start ov11_022EB150 -ov11_022EB150: ; 0x022EB150 - stmdb sp!, {r3, lr} - mov ip, #0x54 - mul ip, r0, ip - ldr lr, _022EB198 ; =ov11_023891F8 - mov r0, #1 - str r1, [lr, ip] - add ip, lr, ip - str r0, [ip, #8] - str r3, [ip, #0xc] - ldr r1, [ip, #0x18] - ldr r0, [ip, #0x1c] - str r1, [ip, #0x20] - str r0, [ip, #0x24] - ldr r1, [r2] - ldr r0, [r2, #4] - str r1, [ip, #0x28] - str r0, [ip, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB198: .word ov11_023891F8 - arm_func_end ov11_022EB150 - - arm_func_start ov11_022EB19C -ov11_022EB19C: ; 0x022EB19C - stmdb sp!, {r3, lr} - mov ip, #0x54 - mul ip, r0, ip - ldr lr, _022EB1C8 ; =ov11_023891F8 - mov r0, #1 - str r1, [lr, ip] - add r1, lr, ip - str r0, [r1, #8] - str r3, [r1, #0xc] - str r2, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB1C8: .word ov11_023891F8 - arm_func_end ov11_022EB19C - - arm_func_start ov11_022EB1CC -ov11_022EB1CC: ; 0x022EB1CC - stmdb sp!, {r3, lr} - mov ip, #0x54 - mul ip, r0, ip - ldr lr, _022EB204 ; =ov11_023891F8 - mov r0, #2 - str r1, [lr, ip] - add ip, lr, ip - str r0, [ip, #8] - str r3, [ip, #0xc] - ldr r1, [r2] - ldr r0, [r2, #4] - str r1, [ip, #0x28] - str r0, [ip, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB204: .word ov11_023891F8 - arm_func_end ov11_022EB1CC - - arm_func_start ov11_022EB208 -ov11_022EB208: ; 0x022EB208 - stmdb sp!, {r3, lr} - mov ip, #0x54 - mul ip, r0, ip - ldr lr, _022EB234 ; =ov11_023891F8 - mov r0, #2 - str r1, [lr, ip] - add r1, lr, ip - str r0, [r1, #8] - str r3, [r1, #0xc] - str r2, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB234: .word ov11_023891F8 - arm_func_end ov11_022EB208 - - arm_func_start ov11_022EB238 -ov11_022EB238: ; 0x022EB238 - stmdb sp!, {r3, lr} - mov ip, #0x54 - mul ip, r0, ip - ldr lr, _022EB270 ; =ov11_023891F8 - mov r0, #3 - str r1, [lr, ip] - add ip, lr, ip - str r0, [ip, #8] - str r3, [ip, #0x10] - ldr r1, [r2] - ldr r0, [r2, #4] - str r1, [ip, #0x28] - str r0, [ip, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB270: .word ov11_023891F8 - arm_func_end ov11_022EB238 - - arm_func_start ov11_022EB274 -ov11_022EB274: ; 0x022EB274 - stmdb sp!, {r3, lr} - mov ip, #0x54 - mul ip, r0, ip - ldr lr, _022EB2A0 ; =ov11_023891F8 - mov r0, #3 - str r1, [lr, ip] - add r1, lr, ip - str r0, [r1, #8] - str r3, [r1, #0x10] - str r2, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB2A0: .word ov11_023891F8 - arm_func_end ov11_022EB274 - - arm_func_start ov11_022EB2A4 -ov11_022EB2A4: ; 0x022EB2A4 - mov r1, #0x54 - mul r1, r0, r1 - ldr r0, _022EB2C8 ; =ov11_023891F8 - ldr r0, [r0, r1] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022EB2C8: .word ov11_023891F8 - arm_func_end ov11_022EB2A4 - - arm_func_start ov11_022EB2CC -ov11_022EB2CC: ; 0x022EB2CC - ldr r2, _022EB2F0 ; =ov11_023891F8 - mov r1, #0x54 - mla r1, r0, r1, r2 - ldr r0, [r1, #8] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022EB2F0: .word ov11_023891F8 - arm_func_end ov11_022EB2CC - - arm_func_start ov11_022EB2F4 -ov11_022EB2F4: ; 0x022EB2F4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r1 - cmp r0, #1 - mov r5, #0 - bne _022EB350 - bl ov11_02310D44 - cmp r0, #0 - beq _022EB330 - add r0, sp, #8 - add r1, sp, #0 - bl ov11_02310DE0 - cmp r0, #0 - movne r5, #1 - b _022EB350 -_022EB330: - bl ov11_0230ED28 - cmp r0, #0 - beq _022EB350 - add r0, sp, #8 - add r1, sp, #0 - bl ov11_0230F28C - cmp r0, #0 - movne r5, #1 -_022EB350: - cmp r5, #0 - bne _022EB36C - add r0, sp, #8 - add r1, sp, #0 - bl ov11_022F1F3C - cmp r0, #0 - movne r5, #1 -_022EB36C: - cmp r5, #0 - beq _022EB3BC - ldr r1, [sp, #8] - ldr r0, [r4] - cmp r0, r1 - strlt r1, [r4] - ldr r1, [sp] - ldr r0, [r4] - cmp r0, r1 - strgt r1, [r4] - ldr r1, [sp, #0xc] - ldr r0, [r4, #4] - cmp r0, r1 - strlt r1, [r4, #4] - ldr r1, [sp, #4] - ldr r0, [r4, #4] - cmp r0, r1 - strgt r1, [r4, #4] - mov r0, #1 - b _022EB3C0 -_022EB3BC: - mov r0, #0 -_022EB3C0: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov11_022EB2F4 - - arm_func_start ov11_022EB3C8 -ov11_022EB3C8: ; 0x022EB3C8 - ldr r3, _022EB3EC ; =ov11_023891F8 - mov r2, #0x54 - mla r3, r0, r2, r3 - ldr r2, [r3, #0x48] - ldr r0, [r3, #0x4c] - str r2, [r1] - str r0, [r1, #4] - ldrb r0, [r3, #0x50] - bx lr - .align 2, 0 -_022EB3EC: .word ov11_023891F8 - arm_func_end ov11_022EB3C8 - - arm_func_start ov11_022EB3F0 -ov11_022EB3F0: ; 0x022EB3F0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5c - ldr r0, _022EB840 ; =ov11_02320BBC - ldr r8, _022EB844 ; =ov11_023891F8 - ldr r7, [r0, #0x10] - ldr r6, [r0, #0x14] - ldr r5, [r0, #8] - ldr sl, [r0, #0xc] - ldr fp, [r0] - ldr r0, [r0, #4] - mvn r4, #1 - str r0, [sp, #4] - str r0, [sp, #0x28] - add r0, r4, #1 - str r7, [sp, #0x34] - str r6, [sp, #0x38] - str r5, [sp, #0x2c] - str sl, [sp, #0x30] - str fp, [sp, #0x24] - mov sb, #0 - str r8, [sp, #0xc] - str r8, [sp, #0x10] - str r8, [sp, #0x14] - str r0, [sp, #0x20] - str r0, [sp, #0x1c] - str r0, [sp, #0x18] -_022EB458: - ldr r0, [r8] - cmp r0, #5 - bne _022EB4A8 - cmp sb, #1 - bne _022EB4A0 - ldr r0, [sp, #0xc] - ldrb r0, [r0, #0x50] - cmp r0, #0 - beq _022EB4A8 - ldr r0, [sp, #0x10] - ldr r1, [r0, #0x48] - ldr r0, [sp, #0x14] - ldr r0, [r0, #0x4c] - str r1, [r8, #0x48] - str r0, [r8, #0x4c] - mov r0, #1 - strb r0, [r8, #0x50] - b _022EB828 -_022EB4A0: - mov r0, #1 - str r0, [r8] -_022EB4A8: - ldr r0, [r8] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _022EB560 -_022EB4B8: ; jump table - b _022EB560 ; case 0 - b _022EB560 ; case 1 - b _022EB4D4 ; case 2 - b _022EB4FC ; case 3 - b _022EB524 ; case 4 - b _022EB560 ; case 5 - b _022EB54C ; case 6 -_022EB4D4: - ldr r0, [r8, #4] - add r1, r8, #0x28 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov11_022F90F4 - ldr r1, [sp, #0x18] - cmp r0, r1 - moveq r0, #1 - streq r0, [r8] - b _022EB560 -_022EB4FC: - ldr r0, [r8, #4] - add r1, r8, #0x28 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov11_022FCCC4 - ldr r1, [sp, #0x1c] - cmp r0, r1 - moveq r0, #1 - streq r0, [r8] - b _022EB560 -_022EB524: - ldr r0, [r8, #4] - add r1, r8, #0x28 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov11_022FE3B0 - ldr r1, [sp, #0x20] - cmp r0, r1 - moveq r0, #1 - streq r0, [r8] - b _022EB560 -_022EB54C: - add r0, r8, #0x28 - bl ov11_0230F25C - cmp r0, #0 - moveq r0, #1 - streq r0, [r8] -_022EB560: - ldr r0, [r8, #8] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _022EB6C4 -_022EB570: ; jump table - b _022EB6C4 ; case 0 - b _022EB584 ; case 1 - b _022EB5F4 ; case 2 - b _022EB650 ; case 3 - b _022EB670 ; case 4 -_022EB584: - str r7, [sp, #0x54] - str r6, [sp, #0x58] - ldr r2, [r8, #0x28] - ldr r1, [r8, #0x18] - add r0, sp, #0x54 - sub r1, r2, r1 - str r1, [sp, #0x54] - ldr r2, [r8, #0x2c] - ldr r1, [r8, #0x1c] - sub r1, r2, r1 - str r1, [sp, #0x58] - ldr r1, [r8, #0xc] - bl ClampComponentAbs - ldr r1, [sp, #0x54] - cmp r1, #0 - ldreq r0, [sp, #0x58] - cmpeq r0, #0 - moveq r0, #0 - streq r0, [r8, #8] - beq _022EB6D4 - ldr r0, [r8, #0x18] - add r0, r0, r1 - str r0, [r8, #0x18] - ldr r1, [r8, #0x1c] - ldr r0, [sp, #0x58] - add r0, r1, r0 - str r0, [r8, #0x1c] - b _022EB6D4 -_022EB5F4: - str r5, [sp, #0x4c] - str sl, [sp, #0x50] - ldr r2, [r8, #0x28] - ldr r1, [r8, #0x18] - add r0, sp, #0x4c - sub r1, r2, r1 - str r1, [sp, #0x4c] - ldr r2, [r8, #0x2c] - ldr r1, [r8, #0x1c] - sub r1, r2, r1 - str r1, [sp, #0x50] - bl EuclideanNorm__020050B0 - str r0, [sp, #8] - ldr r0, [r8, #0xc] - bl _fflt - mov r1, r0 - ldr r0, [sp, #8] - bl _fdiv - bl _ffix - str r0, [r8, #0x10] - cmp r0, #0 - movle r0, #1 - strle r0, [r8, #0x10] -_022EB650: - ldr r1, [r8, #0x18] - ldr r0, [r8, #0x1c] - str r1, [r8, #0x20] - str r0, [r8, #0x24] - mov r0, #0 - str r0, [r8, #0x14] - mov r0, #4 - str r0, [r8, #8] -_022EB670: - ldr r1, [r8, #0x10] - add r0, sp, #0x44 - sub r1, r1, #1 - str r1, [r8, #0x10] - ldr r2, [r8, #0x14] - add r1, r8, #0x20 - add r2, r2, #1 - str r2, [r8, #0x14] - str r2, [sp] - ldr r3, [r8, #0x10] - add r2, r8, #0x28 - bl sub_0200514C - ldr r1, [sp, #0x44] - ldr r0, [sp, #0x48] - str r1, [r8, #0x18] - str r0, [r8, #0x1c] - ldr r0, [r8, #0x10] - cmp r0, #0 - movle r0, #0 - strle r0, [r8, #8] - b _022EB6D4 -_022EB6C4: - ldr r1, [r8, #0x28] - ldr r0, [r8, #0x2c] - str r1, [r8, #0x18] - str r0, [r8, #0x1c] -_022EB6D4: - ldr r0, [r8, #0x30] - cmp r0, #1 - beq _022EB6EC - cmp r0, #2 - beq _022EB734 - b _022EB79C -_022EB6EC: - ldr r0, [r8, #0x3c] - sub r0, r0, #1 - str r0, [r8, #0x3c] - cmp r0, #0 - bgt _022EB7A8 - mov r0, #4 - str r0, [r8, #0x3c] - mov r0, r4 - mov r1, #2 - bl RandRange - mov r0, r0, lsl #0xa - str r0, [r8, #0x40] - mov r0, r4 - mov r1, #2 - bl RandRange - mov r0, r0, lsl #0xa - str r0, [r8, #0x44] - b _022EB7A8 -_022EB734: - ldr r0, [r8, #0x3c] - sub r0, r0, #1 - str r0, [r8, #0x3c] - cmp r0, #0 - bgt _022EB7A8 - ldr r1, [r8, #0x38] - mov r0, r4 - str r1, [r8, #0x3c] - mov r1, #2 - bl RandRange - ldr r2, [r8, #0x34] - mov r1, #2 - mul r0, r2, r0 - mov r0, r0, lsl #8 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r8, #0x40] - mov r0, r4 - bl RandRange - ldr r1, [r8, #0x34] - mul r0, r1, r0 - mov r0, r0, lsl #8 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r8, #0x44] - b _022EB7A8 -_022EB79C: - mov r0, #0 - str r0, [r8, #0x40] - str r0, [r8, #0x44] -_022EB7A8: - ldr r0, [sp, #4] - str fp, [sp, #0x3c] - str r0, [sp, #0x40] - ldr r2, [r8, #0x18] - ldr r1, [r8, #0x40] - mov r0, sb - add r1, r2, r1 - sub r1, r1, #0x80 - str r1, [sp, #0x3c] - ldr r3, [r8, #0x1c] - ldr r2, [r8, #0x44] - add r1, sp, #0x3c - add r2, r3, r2 - sub r2, r2, #0xb80 - str r2, [sp, #0x40] - bl ov11_022EB2F4 - cmp r0, #0 - beq _022EB828 - ldr r0, [sp, #0x3c] - sub r1, r0, #0x8000 - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - str r0, [r8, #0x48] - ldr r0, [sp, #0x40] - sub r1, r0, #0x6000 - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - str r0, [r8, #0x4c] - mov r0, #1 - strb r0, [r8, #0x50] -_022EB828: - add sb, sb, #1 - cmp sb, #2 - add r8, r8, #0x54 - blt _022EB458 - add sp, sp, #0x5c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EB840: .word ov11_02320BBC -_022EB844: .word ov11_023891F8 - arm_func_end ov11_022EB3F0 - - arm_func_start ov11_022EB848 -ov11_022EB848: ; 0x022EB848 - stmdb sp!, {r3, lr} - mov r0, #0xe8 - mov r1, #6 - bl MemAlloc - ldr r1, _022EB97C ; =ov11_02324CBC - mov r2, #6 - str r0, [r1] - str r2, [sp] - ldr r0, [r1] - ldr r2, _022EB980 ; =0x04000018 - ldr r3, _022EB984 ; =0x0600E000 - mov r1, #1 - bl sub_0200B2C4 - mov r1, #6 - ldr r0, _022EB97C ; =ov11_02324CBC - str r1, [sp] - ldr r0, [r0] - ldr r2, _022EB988 ; =0x0400001C - ldr r3, _022EB98C ; =0x0600F000 - add r0, r0, #0x1c - mov r1, #1 - bl sub_0200B2C4 - mov r1, #6 - ldr r0, _022EB97C ; =ov11_02324CBC - str r1, [sp] - ldr r0, [r0] - mov r1, #0 - add r0, r0, #0x70 - mov r2, #0x100 - mov r3, #0x5000000 - bl sub_0200A124 - ldr r0, _022EB97C ; =ov11_02324CBC - mov r1, #6 - ldr r3, [r0] - mov r2, #0 - str r1, [sp] - add r0, r3, #0x98 - add r1, r3, #0x70 - mov r3, #0x100 - bl sub_0200A478 - mov r0, #6 - str r0, [sp] - ldr r0, _022EB97C ; =ov11_02324CBC - mov r1, #1 - ldr r0, [r0] - ldr r2, _022EB990 ; =0x04001018 - add r0, r0, #0x38 - ldr r3, _022EB994 ; =0x0620E000 - bl sub_0200B2C4 - mov r0, #6 - str r0, [sp] - ldr r0, _022EB97C ; =ov11_02324CBC - mov r1, #1 - ldr r0, [r0] - ldr r2, _022EB998 ; =0x0400101C - add r0, r0, #0x54 - ldr r3, _022EB99C ; =0x0620F000 - bl sub_0200B2C4 - mov r0, #6 - str r0, [sp] - ldr r0, _022EB97C ; =ov11_02324CBC - mov r1, #0 - ldr r0, [r0] - mov r2, #0x100 - add r0, r0, #0x84 - ldr r3, _022EB9A0 ; =0x05000400 - bl sub_0200A124 - ldr r0, _022EB97C ; =ov11_02324CBC - mov r1, #6 - ldr r3, [r0] - mov r2, #0 - str r1, [sp] - add r0, r3, #0xc0 - add r1, r3, #0x84 - mov r3, #0x100 - bl sub_0200A478 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EB97C: .word ov11_02324CBC -_022EB980: .word 0x04000018 -_022EB984: .word 0x0600E000 -_022EB988: .word 0x0400001C -_022EB98C: .word 0x0600F000 -_022EB990: .word 0x04001018 -_022EB994: .word 0x0620E000 -_022EB998: .word 0x0400101C -_022EB99C: .word 0x0620F000 -_022EB9A0: .word 0x05000400 - arm_func_end ov11_022EB848 - - arm_func_start ov11_022EB9A4 -ov11_022EB9A4: ; 0x022EB9A4 - stmdb sp!, {r3, lr} - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x98 - bl sub_0200A4C4 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x70 - bl sub_0200A158 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - bl sub_0200B314 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x1c - bl sub_0200B314 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0xc0 - bl sub_0200A4C4 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x84 - bl sub_0200A158 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x38 - bl sub_0200B314 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x54 - bl sub_0200B314 - ldr r0, _022EBA40 ; =ov11_02324CBC - ldr r0, [r0] - bl MemFree - ldr r0, _022EBA40 ; =ov11_02324CBC - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EBA40: .word ov11_02324CBC - arm_func_end ov11_022EB9A4 - - arm_func_start ov11_022EBA44 -ov11_022EBA44: ; 0x022EBA44 - stmdb sp!, {r3, lr} - mov r0, #1 - bl ov10_022BDB54 - ldr r1, _022EBA94 ; =ov11_02324CBC - ldr r0, _022EBA98 ; =0x06010000 - ldr r1, [r1] - mov r3, #0 - add r2, r1, #0x98 - bl ov10_022BDB60 - ldr r1, _022EBA94 ; =ov11_02324CBC - ldr r0, _022EBA9C ; =0x06210000 - ldr r2, [r1] - mov r3, #1 - add r1, r2, #0x38 - add r2, r2, #0xc0 - bl ov10_022BDB60 - mov r0, #0x10000 - mov r1, #0xa - bl ov10_022BDBA4 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EBA94: .word ov11_02324CBC -_022EBA98: .word 0x06010000 -_022EBA9C: .word 0x06210000 - arm_func_end ov11_022EBA44 - - arm_func_start ov11_022EBAA0 -ov11_022EBAA0: ; 0x022EBAA0 - ldr r3, _022EBAE4 ; =ov11_02324CBC - ldr ip, [r3] - cmp ip, #0 - moveq r3, #0 - streq r3, [r0] - streq r3, [r1] - streq r3, [r2] - bxeq lr - add ip, ip, #0x38 - str ip, [r0] - ldr r0, [r3] - add r0, r0, #0x54 - str r0, [r1] - ldr r0, [r3] - add r0, r0, #0xc0 - str r0, [r2] - bx lr - .align 2, 0 -_022EBAE4: .word ov11_02324CBC - arm_func_end ov11_022EBAA0 - - arm_func_start ov11_022EBAE8 -ov11_022EBAE8: ; 0x022EBAE8 - stmdb sp!, {r3, lr} - ldr r0, _022EBB10 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x98 - bl ov11_022E9A78 - ldr r0, _022EBB10 ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0xc0 - bl ov11_022E9A90 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EBB10: .word ov11_02324CBC - arm_func_end ov11_022EBAE8 - - arm_func_start ov11_022EBB14 -ov11_022EBB14: ; 0x022EBB14 - stmdb sp!, {r3, lr} - ldr r0, _022EBB3C ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0x98 - bl ov11_022E9AA8 - ldr r0, _022EBB3C ; =ov11_02324CBC - ldr r0, [r0] - add r0, r0, #0xc0 - bl ov11_022E9AC0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EBB3C: .word ov11_02324CBC - arm_func_end ov11_022EBB14 - - - .rodata - .global ov11_02316A3C -ov11_02316A3C: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316A44 -ov11_02316A44: - .byte 0x00, 0x00, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x8A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x2D, 0x03, 0x00, 0x00 - .global ov11_02316A60 -ov11_02316A60: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x63, 0x09, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x34, 0x03, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x2C, 0x03, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x89, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x86, 0x01, 0x00, 0x00 - .word ov11_02316C04 - .byte 0x92, 0x03, 0x00, 0x00 - .global SCRIPT_COMMAND_PARSING_DATA -SCRIPT_COMMAND_PARSING_DATA: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global SCRIPT_OP_CODE_NAMES -SCRIPT_OP_CODE_NAMES: - .byte 0x45, 0x6E, 0x64, 0x00 - .global ov11_02316AFC -ov11_02316AFC: - .byte 0x48, 0x6F, 0x6C, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B04 -ov11_02316B04: - .byte 0x6E, 0x75, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B0C -ov11_02316B0C: - .byte 0x15, 0x16, 0x17, 0x18, 0x19, 0x00, 0x00, 0x00 - .global ov11_02316B14 -ov11_02316B14: - .byte 0x4C, 0x6F, 0x63, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B1C -ov11_02316B1C: - .byte 0x57, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B24 -ov11_02316B24: - .byte 0x4A, 0x75, 0x6D, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B2C -ov11_02316B2C: - .byte 0x43, 0x61, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B34 -ov11_02316B34: - .byte 0x43, 0x61, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316B3C -ov11_02316B3C: - .byte 0x6C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 - .global ov11_02316B44 -ov11_02316B44: - .byte 0x46, 0x6C, 0x61, 0x73, 0x68, 0x00, 0x00, 0x00 - .global ov11_02316B4C -ov11_02316B4C: - .byte 0x54, 0x75, 0x72, 0x6E, 0x33, 0x00, 0x00, 0x00 - .global ov11_02316B54 -ov11_02316B54: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x00 - .global ov11_02316B5C -ov11_02316B5C: - .byte 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x00, 0x00 - .global ov11_02316B64 -ov11_02316B64: - .byte 0x57, 0x61, 0x69, 0x74, 0x4D, 0x65, 0x00, 0x00 - .global ov11_02316B6C -ov11_02316B6C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x00, 0x00 - .global ov11_02316B74 -ov11_02316B74: - .byte 0x55, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x00, 0x00 - .global ov11_02316B7C -ov11_02316B7C: - .byte 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_02316B84 -ov11_02316B84: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x65, 0x00, 0x00 - .global ov11_02316B8C -ov11_02316B8C: - .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x00 - .global ov11_02316B94 -ov11_02316B94: - .byte 0x44, 0x65, 0x73, 0x74, 0x72, 0x6F, 0x79, 0x00 - .global ov11_02316B9C -ov11_02316B9C: - .byte 0x73, 0x65, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00 - .global ov11_02316BA4 -ov11_02316BA4: - .byte 0x6D, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x00 - .global ov11_02316BAC -ov11_02316BAC: - .byte 0x6D, 0x65, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00 - .global ov11_02316BB4 -ov11_02316BB4: - .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x67, 0x6D, 0x00 - .global ov11_02316BBC -ov11_02316BBC: - .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x53, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316BC8 -ov11_02316BC8: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x54, 0x75, 0x72, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316BD4 -ov11_02316BD4: - .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x67, 0x6D, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02316BE0 -ov11_02316BE0: - .byte 0x62, 0x67, 0x6D, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316BEC -ov11_02316BEC: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316BF8 -ov11_02316BF8: - .byte 0x43, 0x61, 0x73, 0x65 - .byte 0x4D, 0x65, 0x6E, 0x75, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316C04 -ov11_02316C04: - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2E, 0x63 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02316C10 -ov11_02316C10: - .byte 0x43, 0x61, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316C1C -ov11_02316C1C: - .byte 0x62, 0x67, 0x6D, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316C28 -ov11_02316C28: - .byte 0x53, 0x65, 0x74, 0x42 - .byte 0x6C, 0x69, 0x6E, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316C34 -ov11_02316C34: - .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x50, 0x6C, 0x61 - .byte 0x79, 0x00, 0x00, 0x00 - .global ov11_02316C40 -ov11_02316C40: - .byte 0x70, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x65, 0x72, 0x00, 0x00, 0x00 - .global ov11_02316C4C -ov11_02316C4C: - .byte 0x53, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x00, 0x00 - .global ov11_02316C58 -ov11_02316C58: - .byte 0x43, 0x61, 0x73, 0x65 - .byte 0x56, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00 - .global ov11_02316C64 -ov11_02316C64: - .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x53, 0x74, 0x6F - .byte 0x70, 0x00, 0x00, 0x00 - .global ov11_02316C70 -ov11_02316C70: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x42, 0x69, 0x74, 0x00, 0x00, 0x00 - .global ov11_02316C7C -ov11_02316C7C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x75, 0x6D, 0x00, 0x00, 0x00 - .global ov11_02316C88 -ov11_02316C88: - .byte 0x43, 0x61, 0x6E, 0x63 - .byte 0x65, 0x6C, 0x43, 0x75, 0x74, 0x00, 0x00, 0x00 - .global ov11_02316C94 -ov11_02316C94: - .byte 0x43, 0x61, 0x73, 0x65, 0x4D, 0x65, 0x6E, 0x75 - .byte 0x32, 0x00, 0x00, 0x00 - .global ov11_02316CA0 -ov11_02316CA0: - .byte 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 - .global ov11_02316CAC -ov11_02316CAC: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x45, 0x64, 0x69, 0x74, 0x00, 0x00 - .global ov11_02316CB8 -ov11_02316CB8: - .byte 0x57, 0x61, 0x69, 0x74 - .byte 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00 - .global ov11_02316CC4 -ov11_02316CC4: - .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x50 - .byte 0x61, 0x6E, 0x00, 0x00 - .global ov11_02316CD0 -ov11_02316CD0: - .byte 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x13, 0x14, 0x21, 0x12, 0x22, 0x23, 0x00 - .global ov11_02316CDC -ov11_02316CDC: - .byte 0x57, 0x61, 0x69, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_02316CE8 -ov11_02316CE8: - .byte 0x66, 0x6C, 0x61, 0x67 - .byte 0x5F, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x00, 0x00 - .global ov11_02316CF4 -ov11_02316CF4: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x48, 0x65, 0x69, 0x67 - .byte 0x68, 0x74, 0x00, 0x00 - .global ov11_02316D00 -ov11_02316D00: - .byte 0x73, 0x6F, 0x75, 0x6E, 0x64, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00, 0x00 - .global ov11_02316D0C -ov11_02316D0C: - .byte 0x73, 0x65, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00 - .global ov11_02316D18 -ov11_02316D18: - .byte 0x4A, 0x75, 0x6D, 0x70 - .byte 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_02316D24 -ov11_02316D24: - .byte 0x43, 0x61, 0x6C, 0x6C, 0x43, 0x6F, 0x6D, 0x6D - .byte 0x6F, 0x6E, 0x00, 0x00 - .global ov11_02316D30 -ov11_02316D30: - .byte 0x57, 0x61, 0x69, 0x74, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00 - .global ov11_02316D3C -ov11_02316D3C: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x00 - .global ov11_02316D48 -ov11_02316D48: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x00 - .global ov11_02316D54 -ov11_02316D54: - .byte 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x54 - .byte 0x65, 0x78, 0x74, 0x00 - .global ov11_02316D60 -ov11_02316D60: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x44, 0x65, 0x62, 0x75, 0x67, 0x00 - .global ov11_02316D6C -ov11_02316D6C: - .byte 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 - .global ov11_02316D78 -ov11_02316D78: - .byte 0x53, 0x77, 0x69, 0x74 - .byte 0x63, 0x68, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 - .global ov11_02316D84 -ov11_02316D84: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x56, 0x61 - .byte 0x6C, 0x75, 0x65, 0x00 - .global ov11_02316D90 -ov11_02316D90: - .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x46, 0x75, 0x6C, 0x6C, 0x00 - .global ov11_02316D9C -ov11_02316D9C: - .byte 0x62, 0x67, 0x6D, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00 - .global ov11_02316DA8 -ov11_02316DA8: - .byte 0x53, 0x6C, 0x69, 0x64 - .byte 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00 - .global ov11_02316DB4 -ov11_02316DB4: - .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74 - .byte 0x69, 0x6F, 0x6E, 0x00 - .global ov11_02316DC0 -ov11_02316DC0: - .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x00 - .global ov11_02316DCC -ov11_02316DCC: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316DDC -ov11_02316DDC: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316DEC -ov11_02316DEC: - .byte 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316DFC -ov11_02316DFC: - .byte 0x52, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E0C -ov11_02316E0C: - .byte 0x53, 0x61, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E1C -ov11_02316E1C: - .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E2C -ov11_02316E2C: - .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E3C -ov11_02316E3C: - .byte 0x73, 0x65, 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x50, 0x61, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E4C -ov11_02316E4C: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4D, 0x65, 0x6E, 0x75, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E5C -ov11_02316E5C: - .byte 0x45, 0x6E, 0x64, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E6C -ov11_02316E6C: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E7C -ov11_02316E7C: - .byte 0x53, 0x65, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E8C -ov11_02316E8C: - .byte 0x43, 0x61, 0x73, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316E9C -ov11_02316E9C: - .byte 0x43, 0x61, 0x73, 0x65, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316EAC -ov11_02316EAC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x54, 0x61, 0x6C, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316EBC -ov11_02316EBC: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x43, 0x61, 0x6C, 0x63, 0x42, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316ECC -ov11_02316ECC: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316EDC -ov11_02316EDC: - .byte 0x53, 0x65, 0x74, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316EEC -ov11_02316EEC: - .byte 0x4C, 0x6F, 0x61, 0x64, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316EFC -ov11_02316EFC: - .byte 0x53, 0x65, 0x74, 0x4D, 0x6F, 0x76, 0x65, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316F0C -ov11_02316F0C: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4D, 0x61, 0x69, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02316F1C -ov11_02316F1C: - .byte 0x53, 0x74, 0x6F, 0x70, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316F2C -ov11_02316F2C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316F3C -ov11_02316F3C: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316F4C -ov11_02316F4C: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316F5C -ov11_02316F5C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x6F, 0x64, 0x65, 0x00, 0x00, 0x00 - .global ov11_02316F6C -ov11_02316F6C: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316F7C -ov11_02316F7C: - .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00, 0x00, 0x00 - .global ov11_02316F8C -ov11_02316F8C: - .byte 0x54, 0x75, 0x72, 0x6E, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316F9C -ov11_02316F9C: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316FAC -ov11_02316FAC: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316FBC -ov11_02316FBC: - .byte 0x57, 0x61, 0x69, 0x74, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316FCC -ov11_02316FCC: - .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x67, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x00, 0x00, 0x00 - .global ov11_02316FDC -ov11_02316FDC: - .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 - .global ov11_02316FEC -ov11_02316FEC: - .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02316FFC -ov11_02316FFC: - .byte 0x57, 0x61, 0x69, 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 - .global ov11_0231700C -ov11_0231700C: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x00, 0x00 - .global ov11_0231701C -ov11_0231701C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00 - .global ov11_0231702C -ov11_0231702C: - .byte 0x73, 0x6F, 0x75, 0x6E, 0x64, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00, 0x00 - .global ov11_0231703C -ov11_0231703C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_0231704C -ov11_0231704C: - .byte 0x57, 0x61, 0x69, 0x74, 0x4D, 0x6F, 0x76, 0x65, 0x43, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x00, 0x00 - .global ov11_0231705C -ov11_0231705C: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x46, 0x61, 0x64, 0x65, 0x00, 0x00 - .global ov11_0231706C -ov11_0231706C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x49, 0x6E, 0x00, 0x00 - .global ov11_0231707C -ov11_0231707C: - .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_0231708C -ov11_0231708C: - .byte 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x00, 0x00 - .global ov11_0231709C -ov11_0231709C: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00 - .global ov11_023170AC -ov11_023170AC: - .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00 - .global ov11_023170BC -ov11_023170BC: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_023170CC -ov11_023170CC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4E, 0x6F, 0x74, 0x69, 0x63, 0x65, 0x00, 0x00 - .global ov11_023170DC -ov11_023170DC: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x00 - .global ov11_023170EC -ov11_023170EC: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00 - .global ov11_023170FC -ov11_023170FC: - .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_0231710C -ov11_0231710C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00 - .global ov11_0231711C -ov11_0231711C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00 - .global ov11_0231712C -ov11_0231712C: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x43, 0x61, 0x6C, 0x63, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00 - .global ov11_0231713C -ov11_0231713C: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00, 0x00 - .global ov11_0231714C -ov11_0231714C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x00, 0x00 - .global ov11_0231715C -ov11_0231715C: - .byte 0x62, 0x67, 0x6D, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00 - .global ov11_0231716C -ov11_0231716C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00 - .global ov11_0231717C -ov11_0231717C: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_0231718C -ov11_0231718C: - .byte 0x57, 0x61, 0x69, 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_0231719C -ov11_0231719C: - .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00 - .global ov11_023171AC -ov11_023171AC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4B, 0x65, 0x79, 0x57, 0x61, 0x69, 0x74, 0x00 - .global ov11_023171BC -ov11_023171BC: - .byte 0x57, 0x61, 0x69, 0x74, 0x4D, 0x6F, 0x76, 0x65, 0x43, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x00 - .global ov11_023171CC -ov11_023171CC: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x46, 0x61, 0x64, 0x65, 0x00 - .global ov11_023171DC -ov11_023171DC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x00 - .global ov11_023171EC -ov11_023171EC: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00 - .global ov11_023171FC -ov11_023171FC: - .byte 0x50, 0x75, 0x72, 0x73, 0x75, 0x65, 0x54, 0x75, 0x72, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 - .global ov11_0231720C -ov11_0231720C: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_0231721C -ov11_0231721C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x32, 0x00 - .global ov11_0231722C -ov11_0231722C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x00 - .global ov11_0231723C -ov11_0231723C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 - .global ov11_0231724C -ov11_0231724C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x4F, 0x75, 0x74, 0x00 - .global ov11_0231725C -ov11_0231725C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_0231726C -ov11_0231726C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00 - .global ov11_0231727C -ov11_0231727C: - .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00 - .global ov11_0231728C -ov11_0231728C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x49, 0x6E, 0x00 - .global ov11_0231729C -ov11_0231729C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x00 - .global ov11_023172AC -ov11_023172AC: - .byte 0x73, 0x65, 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00 - .global ov11_023172BC -ov11_023172BC: - .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x46, 0x6C, 0x61, 0x67, 0x00 - .global ov11_023172CC -ov11_023172CC: - .byte 0x53, 0x65, 0x74, 0x48, 0x69, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00 - .global ov11_023172DC -ov11_023172DC: - .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x32, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 - .global ov11_023172EC -ov11_023172EC: - .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 - .global ov11_023172FC -ov11_023172FC: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x4F, 0x75, 0x74, 0x00 - .global ov11_0231730C -ov11_0231730C: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x6F, 0x72 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02317320 -ov11_02317320: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 - .byte 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317334 -ov11_02317334: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46 - .byte 0x61, 0x64, 0x65, 0x49, 0x6E, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317348 -ov11_02317348: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231735C -ov11_0231735C: - .byte 0x50, 0x75, 0x72, 0x73, 0x75, 0x65, 0x54, 0x75, 0x72, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02317370 -ov11_02317370: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 - .byte 0x4D, 0x6F, 0x64, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317384 -ov11_02317384: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 - .byte 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317398 -ov11_02317398: - .byte 0x62, 0x67, 0x6D, 0x5F - .byte 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_023173AC -ov11_023173AC: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x4F, 0x75, 0x74 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_023173C0 -ov11_023173C0: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74 - .byte 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_023173D4 -ov11_023173D4: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x53 - .byte 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_023173E8 -ov11_023173E8: - .byte 0x63, 0x61, 0x6D, 0x65 - .byte 0x72, 0x61, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00, 0x00, 0x00 - .global ov11_023173FC -ov11_023173FC: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02317410 -ov11_02317410: - .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C - .byte 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317424 -ov11_02317424: - .byte 0x57, 0x61, 0x69, 0x74, 0x45, 0x6E, 0x64, 0x41 - .byte 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317438 -ov11_02317438: - .byte 0x57, 0x61, 0x69, 0x74 - .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231744C -ov11_0231744C: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02317460 -ov11_02317460: - .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69 - .byte 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317474 -ov11_02317474: - .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x53, 0x65, 0x74 - .byte 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317488 -ov11_02317488: - .byte 0x6D, 0x61, 0x69, 0x6E - .byte 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231749C -ov11_0231749C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4E, 0x6F - .byte 0x77, 0x00, 0x00, 0x00 - .global ov11_023174B0 -ov11_023174B0: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F - .byte 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 - .global ov11_023174C4 -ov11_023174C4: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x63, 0x72, 0x65 - .byte 0x65, 0x6E, 0x46, 0x61, 0x64, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 - .global ov11_023174D8 -ov11_023174D8: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 - .global ov11_023174EC -ov11_023174EC: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x50, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63 - .byte 0x65, 0x00, 0x00, 0x00 - .global ov11_02317500 -ov11_02317500: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F - .byte 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 - .global ov11_02317514 -ov11_02317514: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63 - .byte 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 - .global ov11_02317528 -ov11_02317528: - .byte 0x62, 0x61, 0x63, 0x6B - .byte 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00, 0x00 - .global ov11_0231753C -ov11_0231753C: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4D, 0x6F, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x75 - .byte 0x65, 0x00, 0x00, 0x00 - .global ov11_02317550 -ov11_02317550: - .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x69, 0x74, 0x41, 0x74, 0x74, 0x72 - .byte 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00 - .global ov11_02317564 -ov11_02317564: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x4E, 0x61, 0x72, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02317578 -ov11_02317578: - .byte 0x73, 0x63, 0x72, 0x65 - .byte 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00 - .global ov11_0231758C -ov11_0231758C: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x4D, 0x6F, 0x64 - .byte 0x65, 0x00, 0x00, 0x00 - .global ov11_023175A0 -ov11_023175A0: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 - .byte 0x41, 0x72, 0x72, 0x6F, 0x77, 0x00, 0x00, 0x00 - .global ov11_023175B4 -ov11_023175B4: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69 - .byte 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 - .global ov11_023175C8 -ov11_023175C8: - .byte 0x73, 0x63, 0x72, 0x65 - .byte 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 - .global ov11_023175DC -ov11_023175DC: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x41, 0x6C - .byte 0x6C, 0x00, 0x00, 0x00 - .global ov11_023175F0 -ov11_023175F0: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 - .byte 0x4C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x00, 0x00 - .global ov11_02317604 -ov11_02317604: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D - .byte 0x6F, 0x76, 0x65, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00, 0x00 - .global ov11_02317618 -ov11_02317618: - .byte 0x63, 0x61, 0x6D, 0x65 - .byte 0x72, 0x61, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00 - .global ov11_0231762C -ov11_0231762C: - .byte 0x54, 0x75, 0x72, 0x6E, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72 - .byte 0x6B, 0x00, 0x00, 0x00 - .global ov11_02317640 -ov11_02317640: - .byte 0x53, 0x65, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E - .byte 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 - .global ov11_02317654 -ov11_02317654: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 - .global ov11_02317668 -ov11_02317668: - .byte 0x63, 0x61, 0x6D, 0x65 - .byte 0x72, 0x61, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00, 0x00 - .global ov11_0231767C -ov11_0231767C: - .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65 - .byte 0x74, 0x00, 0x00, 0x00 - .global ov11_02317690 -ov11_02317690: - .byte 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6C, 0x79, 0x41, 0x74, 0x74, 0x72 - .byte 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00 - .global ov11_023176A4 -ov11_023176A4: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x43, 0x61, 0x6C - .byte 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00 - .global ov11_023176B8 -ov11_023176B8: - .byte 0x57, 0x61, 0x69, 0x74 - .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 - .global ov11_023176CC -ov11_023176CC: - .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x53, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6C, 0x65, 0x44, 0x61, 0x74 - .byte 0x61, 0x00, 0x00, 0x00 - .global ov11_023176E0 -ov11_023176E0: - .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x44, 0x75 - .byte 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_023176F4 -ov11_023176F4: - .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x43, 0x68, 0x61 - .byte 0x6E, 0x67, 0x65, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00, 0x00, 0x00 - .global ov11_02317708 -ov11_02317708: - .byte 0x53, 0x6C, 0x69, 0x64 - .byte 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 - .global ov11_0231771C -ov11_0231771C: - .byte 0x57, 0x61, 0x69, 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x50, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x65 - .byte 0x72, 0x00, 0x00, 0x00 - .global ov11_02317730 -ov11_02317730: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F - .byte 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00 - .global ov11_02317744 -ov11_02317744: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x45, 0x6D, 0x70, 0x74, 0x79, 0x41, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x00 - .global ov11_02317758 -ov11_02317758: - .byte 0x6D, 0x65, 0x73, 0x73 - .byte 0x61, 0x67, 0x65, 0x5F, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x00 - .global ov11_0231776C -ov11_0231776C: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4D, 0x65 - .byte 0x6E, 0x75, 0x00, 0x00 - .global ov11_02317780 -ov11_02317780: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x77, 0x69, 0x74 - .byte 0x63, 0x68, 0x54, 0x61, 0x6C, 0x6B, 0x00, 0x00 - .global ov11_02317794 -ov11_02317794: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x50, 0x6F, 0x73 - .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00 - .global ov11_023177A8 -ov11_023177A8: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00 - .global ov11_023177BC -ov11_023177BC: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x52, 0x65, 0x6D, 0x6F - .byte 0x76, 0x65, 0x00, 0x00 - .global ov11_023177D0 -ov11_023177D0: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E - .byte 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00 - .global ov11_023177E4 -ov11_023177E4: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70 - .byte 0x5F, 0x42, 0x6C, 0x69, 0x6E, 0x6B, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 - .global ov11_023177F8 -ov11_023177F8: - .byte 0x62, 0x61, 0x63, 0x6B - .byte 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_0231780C -ov11_0231780C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x43, 0x68, 0x61, 0x6E - .byte 0x67, 0x65, 0x00, 0x00 - .global ov11_02317820 -ov11_02317820: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65 - .byte 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00 - .global ov11_02317834 -ov11_02317834: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57 - .byte 0x68, 0x69, 0x74, 0x65, 0x4F, 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00, 0x00 - .global ov11_02317848 -ov11_02317848: - .byte 0x73, 0x63, 0x72, 0x65 - .byte 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00 - .global ov11_0231785C -ov11_0231785C: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74, 0x43, 0x61, 0x6D, 0x65 - .byte 0x72, 0x61, 0x00, 0x00 - .global ov11_02317870 -ov11_02317870: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65 - .byte 0x4F, 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00, 0x00 - .global ov11_02317884 -ov11_02317884: - .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72 - .byte 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 - .global ov11_02317898 -ov11_02317898: - .byte 0x73, 0x63, 0x72, 0x65 - .byte 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x41, 0x6C, 0x6C, 0x00, 0x00 - .global ov11_023178AC -ov11_023178AC: - .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x75 - .byte 0x72, 0x6E, 0x00, 0x00 - .global ov11_023178C0 -ov11_023178C0: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x32 - .byte 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00 - .global ov11_023178D4 -ov11_023178D4: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D - .byte 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00 - .global ov11_023178E8 -ov11_023178E8: - .byte 0x54, 0x75, 0x72, 0x6E - .byte 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00 - .global ov11_023178FC -ov11_023178FC: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75 - .byte 0x6C, 0x74, 0x00, 0x00 - .global ov11_02317910 -ov11_02317910: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65 - .byte 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00 - .global ov11_02317924 -ov11_02317924: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00 - .global ov11_02317938 -ov11_02317938: - .byte 0x53, 0x65, 0x74, 0x4F - .byte 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00 - .global ov11_0231794C -ov11_0231794C: - .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x49, 0x6E, 0x69, 0x74, 0x69 - .byte 0x61, 0x6C, 0x00, 0x00 - .global ov11_02317960 -ov11_02317960: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69 - .byte 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 - .global ov11_02317974 -ov11_02317974: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x52, 0x65, 0x73 - .byte 0x65, 0x74, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00, 0x00 - .global ov11_02317988 -ov11_02317988: - .byte 0x53, 0x6C, 0x69, 0x64 - .byte 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 - .global ov11_0231799C -ov11_0231799C: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76 - .byte 0x65, 0x73, 0x00, 0x00 - .global ov11_023179B0 -ov11_023179B0: - .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x54, 0x72 - .byte 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x00, 0x00 - .global ov11_023179C4 -ov11_023179C4: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x4F, 0x6E, 0x6C, 0x79, 0x00 - .global ov11_023179D8 -ov11_023179D8: - .byte 0x6D, 0x65, 0x73, 0x73 - .byte 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x61, 0x69, 0x74, 0x4D, 0x6F, 0x64, 0x65, 0x00 - .global ov11_023179EC -ov11_023179EC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x54 - .byte 0x61, 0x6C, 0x6B, 0x00 - .global ov11_02317A00 -ov11_02317A00: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x77, 0x69, 0x74 - .byte 0x63, 0x68, 0x4D, 0x65, 0x6E, 0x75, 0x32, 0x00 - .global ov11_02317A14 -ov11_02317A14: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x50, 0x6F, 0x73 - .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 - .global ov11_02317A28 -ov11_02317A28: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 - .global ov11_02317A3C -ov11_02317A3C: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x53, 0x74, 0x61, 0x74 - .byte 0x69, 0x6F, 0x6E, 0x00 - .global ov11_02317A50 -ov11_02317A50: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F - .byte 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x00 - .global ov11_02317A64 -ov11_02317A64: - .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x70 - .byte 0x6C, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00 - .global ov11_02317A78 -ov11_02317A78: - .byte 0x53, 0x77, 0x69, 0x74 - .byte 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 - .global ov11_02317A8C -ov11_02317A8C: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x43, 0x61, 0x6D - .byte 0x65, 0x72, 0x61, 0x00 - .global ov11_02317AA0 -ov11_02317AA0: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x4F, 0x66, 0x66 - .byte 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 - .global ov11_02317AB4 -ov11_02317AB4: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 - .byte 0x54, 0x69, 0x74, 0x6C, 0x65, 0x42, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00 - .global ov11_02317AC8 -ov11_02317AC8: - .byte 0x62, 0x61, 0x63, 0x6B - .byte 0x32, 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 - .global ov11_02317ADC -ov11_02317ADC: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4C, 0x65 - .byte 0x76, 0x65, 0x6C, 0x00 - .global ov11_02317AF0 -ov11_02317AF0: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x6C, 0x75, 0x73 - .byte 0x68, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00 - .global ov11_02317B04 -ov11_02317B04: - .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72 - .byte 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 - .global ov11_02317B18 -ov11_02317B18: - .byte 0x73, 0x63, 0x72, 0x65 - .byte 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00 - .global ov11_02317B2C -ov11_02317B2C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x41, 0x66 - .byte 0x74, 0x65, 0x72, 0x00 - .global ov11_02317B40 -ov11_02317B40: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74 - .byte 0x65, 0x4F, 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00 - .global ov11_02317B54 -ov11_02317B54: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D - .byte 0x6F, 0x76, 0x65, 0x32, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00 - .global ov11_02317B68 -ov11_02317B68: - .byte 0x77, 0x6F, 0x72, 0x6C - .byte 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 - .global ov11_02317B7C -ov11_02317B7C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x44, 0x65, 0x66, 0x61 - .byte 0x75, 0x6C, 0x74, 0x00 - .global ov11_02317B90 -ov11_02317B90: - .byte 0x54, 0x75, 0x72, 0x6E, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F - .byte 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x32, 0x00 - .global ov11_02317BA4 -ov11_02317BA4: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00 - .global ov11_02317BB8 -ov11_02317BB8: - .byte 0x63, 0x61, 0x6D, 0x65 - .byte 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00 - .global ov11_02317BCC -ov11_02317BCC: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x44, 0x65, 0x66, 0x61 - .byte 0x75, 0x6C, 0x74, 0x00 - .global ov11_02317BE0 -ov11_02317BE0: - .byte 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x52, 0x65, 0x63, 0x6F, 0x76, 0x65 - .byte 0x72, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00 - .global ov11_02317BF4 -ov11_02317BF4: - .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x50, 0x72 - .byte 0x69, 0x6E, 0x74, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00 - .global ov11_02317C08 -ov11_02317C08: - .byte 0x53, 0x6C, 0x69, 0x64 - .byte 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 - .global ov11_02317C1C -ov11_02317C1C: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x4D - .byte 0x6F, 0x64, 0x65, 0x00 - .global ov11_02317C30 -ov11_02317C30: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x50, 0x65, 0x72, 0x66 - .byte 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63, 0x65, 0x00 - .global ov11_02317C44 -ov11_02317C44: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x33, 0x50, 0x6F - .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 - .global ov11_02317C58 -ov11_02317C58: - .byte 0x6D, 0x61, 0x69, 0x6E - .byte 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x41, 0x64, 0x76, 0x65, 0x6E, 0x74, 0x75, 0x72, 0x65, 0x00 - .global ov11_02317C6C -ov11_02317C6C: - .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x69, 0x6E, 0x69 - .byte 0x6E, 0x67, 0x32, 0x00 - .global ov11_02317C80 -ov11_02317C80: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F - .byte 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 - .global ov11_02317C94 -ov11_02317C94: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x45, 0x78, 0x70, 0x6C, 0x61, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_02317CA8 -ov11_02317CA8: - .byte 0x57, 0x61, 0x69, 0x74 - .byte 0x4C, 0x6F, 0x63, 0x6B, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_02317CBC -ov11_02317CBC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x45 - .byte 0x6D, 0x70, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317CD4 -ov11_02317CD4: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69 - .byte 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317CEC -ov11_02317CEC: - .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x62, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x41, 0x63 - .byte 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D04 -ov11_02317D04: - .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x4F, 0x75, 0x74 - .byte 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D1C -ov11_02317D1C: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C - .byte 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D34 -ov11_02317D34: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70 - .byte 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x4C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D4C -ov11_02317D4C: - .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x41 - .byte 0x72, 0x72, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D64 -ov11_02317D64: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46 - .byte 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D7C -ov11_02317D7C: - .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69 - .byte 0x76, 0x65, 0x73, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317D94 -ov11_02317D94: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63 - .byte 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x42, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317DAC -ov11_02317DAC: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69 - .byte 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317DC4 -ov11_02317DC4: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317DDC -ov11_02317DDC: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x44, 0x65, 0x66 - .byte 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317DF4 -ov11_02317DF4: - .byte 0x53, 0x65, 0x74, 0x46, 0x75, 0x6E, 0x63, 0x74 - .byte 0x69, 0x6F, 0x6E, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E0C -ov11_02317E0C: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x41, 0x64, 0x76, 0x65, 0x6E, 0x74, 0x75, 0x72 - .byte 0x65, 0x4C, 0x6F, 0x67, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E24 -ov11_02317E24: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F - .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E3C -ov11_02317E3C: - .byte 0x57, 0x61, 0x69, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x65, 0x72, 0x66, 0x6F - .byte 0x72, 0x6D, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E54 -ov11_02317E54: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x33, 0x50, 0x6F - .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E6C -ov11_02317E6C: - .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x63, 0x75, 0x65 - .byte 0x55, 0x73, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E84 -ov11_02317E84: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x45, 0x6E, 0x66, 0x6F, 0x72, 0x63, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02317E9C -ov11_02317E9C: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65 - .byte 0x73, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00 - .global ov11_02317EB4 -ov11_02317EB4: - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69 - .byte 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x32, 0x00, 0x00, 0x00 - .global ov11_02317ECC -ov11_02317ECC: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x42 - .byte 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x00, 0x00 - .global ov11_02317EE4 -ov11_02317EE4: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 - .byte 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 - .global ov11_02317EFC -ov11_02317EFC: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6E - .byte 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 - .global ov11_02317F14 -ov11_02317F14: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F - .byte 0x46, 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 - .global ov11_02317F2C -ov11_02317F2C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x4D, 0x79, 0x50, 0x6F, 0x73 - .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02317F44 -ov11_02317F44: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x53, 0x65, 0x74, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02317F5C -ov11_02317F5C: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x52 - .byte 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00 - .global ov11_02317F74 -ov11_02317F74: - .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74 - .byte 0x65, 0x72, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x00, 0x00, 0x00 - .global ov11_02317F8C -ov11_02317F8C: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72 - .byte 0x6B, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00 - .global ov11_02317FA4 -ov11_02317FA4: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x49, 0x6D, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00 - .global ov11_02317FBC -ov11_02317FBC: - .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x41, 0x74, 0x74 - .byte 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00 - .global ov11_02317FD4 -ov11_02317FD4: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 - .byte 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00 - .global ov11_02317FEC -ov11_02317FEC: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72 - .byte 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 - .global ov11_02318004 -ov11_02318004: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63 - .byte 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4E, 0x6F, 0x77, 0x41, 0x66, 0x74, 0x65, 0x72, 0x00, 0x00 - .global ov11_0231801C -ov11_0231801C: - .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x43, 0x68, 0x61 - .byte 0x6E, 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00 - .global ov11_02318034 -ov11_02318034: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D - .byte 0x6F, 0x76, 0x65, 0x32, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_0231804C -ov11_0231804C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x50, 0x6F - .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_02318064 -ov11_02318064: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x53 - .byte 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 - .global ov11_0231807C -ov11_0231807C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x4D, 0x79, 0x50, 0x6F - .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_02318094 -ov11_02318094: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73 - .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00 - .global ov11_023180AC -ov11_023180AC: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x50 - .byte 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_023180C4 -ov11_023180C4: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4D, 0x6F, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x75, 0x65, 0x00 - .global ov11_023180DC -ov11_023180DC: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x4C, 0x6F, 0x61, 0x64 - .byte 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_023180F4 -ov11_023180F4: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 - .byte 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64, 0x00 - .global ov11_0231810C -ov11_0231810C: - .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4E, 0x6F - .byte 0x77, 0x42, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x00 - .global ov11_02318124 -ov11_02318124: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D - .byte 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 - .global ov11_0231813C -ov11_0231813C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x4D, 0x79, 0x50 - .byte 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_02318154 -ov11_02318154: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00 - .global ov11_0231816C -ov11_0231816C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74 - .byte 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 - .global ov11_02318184 -ov11_02318184: - .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74 - .byte 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00 - .global ov11_0231819C -ov11_0231819C: - .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x52, 0x65, 0x73, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F - .byte 0x6E, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00 - .global ov11_023181B4 -ov11_023181B4: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x6E, 0x74, 0x65, 0x72 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_023181D0 -ov11_023181D0: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F - .byte 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00 - .global ov11_023181EC -ov11_023181EC: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x52, 0x65, 0x6D, 0x6F - .byte 0x76, 0x65, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318208 -ov11_02318208: - .byte 0x62, 0x61, 0x63, 0x6B - .byte 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66 - .byte 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318224 -ov11_02318224: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 - .byte 0x74, 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02318240 -ov11_02318240: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x32 - .byte 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231825C -ov11_0231825C: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69 - .byte 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318278 -ov11_02318278: - .byte 0x77, 0x6F, 0x72, 0x6C - .byte 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50 - .byte 0x6C, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318294 -ov11_02318294: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F - .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_023182B0 -ov11_023182B0: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F - .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 - .global ov11_023182CC -ov11_023182CC: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63 - .byte 0x75, 0x74, 0x65, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_023182E8 -ov11_023182E8: - .byte 0x4D, 0x6F, 0x76, 0x65 - .byte 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52 - .byte 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00, 0x00 - .global ov11_02318304 -ov11_02318304: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x78, 0x70, 0x6F, 0x72 - .byte 0x74, 0x00, 0x00, 0x00 - .global ov11_02318320 -ov11_02318320: - .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F - .byte 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00, 0x00 - .global ov11_0231833C -ov11_0231833C: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x53, 0x70, 0x65, 0x63 - .byte 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 - .global ov11_02318358 -ov11_02318358: - .byte 0x73, 0x75, 0x70, 0x65 - .byte 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x43 - .byte 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00 - .global ov11_02318374 -ov11_02318374: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 - .byte 0x74, 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66, 0x66, 0x73, 0x65 - .byte 0x74, 0x00, 0x00, 0x00 - .global ov11_02318390 -ov11_02318390: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65 - .byte 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 - .global ov11_023183AC -ov11_023183AC: - .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73 - .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 - .global ov11_023183C8 -ov11_023183C8: - .byte 0x73, 0x75, 0x70, 0x65 - .byte 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53 - .byte 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 - .global ov11_023183E4 -ov11_023183E4: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x32, 0x5F, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69 - .byte 0x6E, 0x67, 0x00, 0x00 - .global ov11_02318400 -ov11_02318400: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74 - .byte 0x68, 0x65, 0x72, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64, 0x00, 0x00 - .global ov11_0231841C -ov11_0231841C: - .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66 - .byte 0x66, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00 - .global ov11_02318438 -ov11_02318438: - .byte 0x53, 0x6C, 0x69, 0x64 - .byte 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74 - .byte 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00 - .global ov11_02318454 -ov11_02318454: - .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F - .byte 0x46, 0x61, 0x63, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73 - .byte 0x65, 0x74, 0x00, 0x00 - .global ov11_02318470 -ov11_02318470: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F - .byte 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x49, 0x6E, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x00 - .global ov11_0231848C -ov11_0231848C: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x53 - .byte 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 - .global ov11_023184A8 -ov11_023184A8: - .byte 0x62, 0x61, 0x63, 0x6B - .byte 0x32, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x72, 0x6F - .byte 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64, 0x00 - .global ov11_023184C4 -ov11_023184C4: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E - .byte 0x67, 0x53, 0x75, 0x62, 0x00, 0x00, 0x00, 0x00 - .global ov11_023184E4 -ov11_023184E4: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x78, 0x70, 0x6F, 0x72 - .byte 0x74, 0x53, 0x75, 0x62, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318504 -ov11_02318504: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 - .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x45, 0x70, 0x69, 0x73, 0x6F, 0x64, 0x65, 0x42, 0x61 - .byte 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318524 -ov11_02318524: - .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 - .byte 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66 - .byte 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02318544 -ov11_02318544: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69 - .byte 0x6F, 0x6E, 0x53, 0x75, 0x62, 0x00, 0x00, 0x00 - .global ov11_02318564 -ov11_02318564: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 - .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x45, 0x70, 0x69, 0x73, 0x6F, 0x64, 0x65, 0x42, 0x61 - .byte 0x6E, 0x6E, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00 - .global ov11_02318584 -ov11_02318584: - .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 - .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x45, 0x70, 0x69, 0x73, 0x6F, 0x64, 0x65, 0x42, 0x61 - .byte 0x6E, 0x6E, 0x65, 0x72, 0x33, 0x00, 0x00, 0x00 - .global ov11_023185A4 -ov11_023185A4: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 - .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69 - .byte 0x6F, 0x6E, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_023185C8 -ov11_023185C8: - .byte 0x53, 0x65, 0x74, 0x75 - .byte 0x70, 0x4F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65 - .byte 0x41, 0x6E, 0x64, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov11_023185EC -ov11_023185EC: - .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63 - .byte 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E - .byte 0x53, 0x75, 0x62, 0x00 - .global SCRIPT_OP_CODES -SCRIPT_OP_CODES: - .byte 0x00, 0xFF, 0x00, 0x00 - .global ov11_02318614 -ov11_02318614: - .word ov11_02316B04 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317528 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023177F8 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318208 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023180F4 - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_023170DC - .byte 0x06, 0x05, 0x00, 0x00 - .word ov11_0231721C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231703C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317ECC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023170EC - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_02318504 - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_02318564 - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_02318584 - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_02317AB4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231722C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317EE4 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231848C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318400 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317AC8 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318374 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318224 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231701C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231723C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023171EC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316F5C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317FD4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317384 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317FEC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318524 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023184A8 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316D9C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316C1C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231715C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316BE0 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317398 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316E1C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316C34 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231727C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316C64 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023176F4 - .byte 0x03, 0xFF, 0x01, 0x00 - .word ov11_02316B6C - .byte 0x03, 0xFF, 0x01, 0x00 - .word ov11_02316C70 - .byte 0x02, 0xFF, 0x01, 0x00 - .word ov11_02316D60 - .byte 0x02, 0xFF, 0x01, 0x00 - .word ov11_02316CAC - .byte 0x02, 0xFF, 0x01, 0x00 - .word ov11_023173FC - .byte 0x03, 0xFF, 0x01, 0x00 - .word ov11_023174EC - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_0231749C - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_02318004 - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_0231810C - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_02317B2C - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_02317D94 - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_02316C7C - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_02316D84 - .byte 0x04, 0xFF, 0x01, 0x00 - .word ov11_0231710C - .byte 0x02, 0xFF, 0x01, 0x00 - .word ov11_0231725C - .byte 0x01, 0xFF, 0x01, 0x00 - .word ov11_02316B2C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316D24 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317B54 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02318034 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023178C0 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02318240 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02318240 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317B7C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231804C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023178D4 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_0231825C - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_0231825C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023178FC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317F2C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317604 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02318124 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02318124 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317618 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023173D4 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317DAC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023173E8 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02318064 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317DC4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231813C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317BA4 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02318390 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02318390 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317DDC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02318154 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317BB8 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_023183AC - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_023183AC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317BCC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231807C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317910 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02318294 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02318294 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317924 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317654 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317F44 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317668 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_0231816C - .byte 0x00, 0xFF, 0x01, 0x00 - .word ov11_02316C88 - .byte 0x01, 0xFF, 0x01, 0x00 - .word ov11_02317BE0 - .byte 0x02, 0xFF, 0x01, 0x00 - .word ov11_02316B34 - .byte 0x02, 0x00, 0x01, 0x00 - .word ov11_02316BF8 - .byte 0x02, 0xFF, 0x01, 0x00 - .word ov11_02316C94 - .byte 0x03, 0xFF, 0x01, 0x00 - .word ov11_02316E9C - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_02316C10 - .byte 0x03, 0xFF, 0x01, 0x00 - .word ov11_02316C58 - .byte 0x03, 0xFF, 0x01, 0x00 - .word ov11_02316E8C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316E2C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316DC0 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023172BC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317BF4 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_02316D54 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316B94 - .byte 0x00, 0xFF, 0x00, 0x00 - .word SCRIPT_OP_CODE_NAMES - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316E5C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316FDC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316FEC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316EBC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231712C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023176A4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316CE8 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316ECC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316BEC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_0231819C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317974 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317E0C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317C1C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317F5C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317C30 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231744C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316B44 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316AFC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317460 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316BBC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023176CC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317474 - .byte 0x01, 0xFF, 0x01, 0x00 - .word ov11_02316B24 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316D18 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B3C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316EEC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B14 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317C58 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023176E0 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317488 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317F74 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317E6C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023179B0 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317C6C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231719C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316BA4 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316BAC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_0231700C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317E84 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_02317C94 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318454 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_02317FA4 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023171AC - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_02316F0C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316E4C - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_0231753C - .byte 0x02, 0x01, 0x00, 0x00 - .word ov11_02317564 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_023170CC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317744 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317758 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231730C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023171DC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317CBC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023179C4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023180AC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023179D8 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023179EC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231776C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317A00 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023180C4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317780 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_02316EAC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316F3C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317794 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_023174D8 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_023174D8 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317A14 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317A14 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023182E8 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316F9C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023177A8 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317500 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02317500 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317A28 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317A28 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02318320 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316F4C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316CF4 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316E6C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023175B4 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317E9C - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317348 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02317348 - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_02317CD4 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_023177D0 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023177D0 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316D48 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316BC8 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B7C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316D6C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316C40 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231708C - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_023171FC - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_0231735C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023170AC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317FBC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317550 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317D04 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317A64 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316DFC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316B5C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316E0C - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317578 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317D64 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316F2C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317334 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231716C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023174B0 - .byte 0x08, 0xFF, 0x00, 0x00 - .word ov11_0231780C - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_0231706C - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_023172FC - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317820 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317EFC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231714C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023175C8 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231724C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317834 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317848 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317F14 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231711C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023175DC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231726C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317870 - .byte 0x08, 0xFF, 0x00, 0x00 - .word ov11_02317AF0 - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_0231728C - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_023173AC - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317B18 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_0231801C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231729C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317898 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023173C0 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317B40 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316E3C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023172AC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316D0C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B8C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316D90 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316CC4 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316F7C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B9C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316EDC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316DEC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316C28 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316E7C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317640 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316CA0 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317DF4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316C4C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023172CC - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_02316EFC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317938 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316DB4 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_0231794C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317410 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_023172EC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231767C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02318184 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317690 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023185C8 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231717C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317C08 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317960 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02317960 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317E24 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317E24 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231841C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023170BC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317C44 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317988 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02317988 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317E54 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317E54 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02318438 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316DA8 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316FAC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231799C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02318094 - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317708 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_02317708 - .byte 0x06, 0xFF, 0x00, 0x00 - .word ov11_02317F8C - .byte 0xFF, 0xFF, 0x00, 0x00 - .word ov11_02317C80 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317C80 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231702C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316D00 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316F1C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317730 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02318470 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023182B0 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023184C4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023182CC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023181B4 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023183C8 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023185A4 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023185EC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02318544 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02318304 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023184E4 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023180DC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023177BC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023181D0 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023181EC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231833C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317A3C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02318358 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317A50 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023183E4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B54 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231720C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317D1C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317EB4 - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02317A78 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231758C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316D78 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316DDC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231713C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317ADC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316DCC - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02316D3C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231709C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_0231707C - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317B04 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_02317D7C - .byte 0x08, 0xFF, 0x00, 0x00 - .word ov11_02317884 - .byte 0x03, 0xFF, 0x00, 0x00 - .word ov11_023178AC - .byte 0x04, 0xFF, 0x00, 0x00 - .word ov11_02316B4C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316F8C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_023178E8 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02317B90 - .byte 0x05, 0xFF, 0x00, 0x00 - .word ov11_0231762C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B74 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B1C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316FBC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023170FC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023172DC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316BB4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316BD4 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316FCC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316CDC - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317424 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317438 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023176B8 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317E3C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316D30 - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316FFC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231718C - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_0231771C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317CA8 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B64 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_0231704C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023171BC - .byte 0x02, 0xFF, 0x00, 0x00 - .word ov11_02316CB8 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_0231705C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023174C4 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_023171CC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02316B84 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317514 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02316F6C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317CEC - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023177E4 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317D34 - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317D4C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317A8C - .byte 0x00, 0xFF, 0x00, 0x00 - .word ov11_02317AA0 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023175A0 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_0231785C - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_023175F0 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317320 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov11_02317B68 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02318278 - .byte 0x01, 0xFF, 0x00, 0x00 - .word ov11_02317370 - .global OVERLAY11_DEBUG_STRINGS -OVERLAY11_DEBUG_STRINGS: - .byte 0x65, 0x78, 0x65, 0x63 - .byte 0x75, 0x74, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20 - .byte 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x42, 0x00 - .global ov11_02319224 -ov11_02319224: - .byte 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20 - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F - .byte 0x72, 0x20, 0x43, 0x00 - .global ov11_02319240 -ov11_02319240: - .byte 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x25, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319260 -ov11_02319260: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x5F, 0x43 - .byte 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x4D, 0x45, 0x4E, 0x55, 0x20, 0x72, 0x65, 0x73, 0x75 - .byte 0x6C, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov11_02319284 -ov11_02319284: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61 - .byte 0x74, 0x61, 0x5F, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x50, 0x72, 0x6F, 0x63, 0x65 - .byte 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 - .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 - .global ov11_023192B4 -ov11_023192B4: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61 - .byte 0x74, 0x61, 0x5F, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x50, 0x72, 0x6F, 0x63, 0x65 - .byte 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74 - .byte 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_023192E8 -ov11_023192E8: - .byte 0x4D, 0x45, 0x53, 0x53 - .byte 0x41, 0x47, 0x45, 0x20, 0x4B, 0x45, 0x59, 0x20, 0x57, 0x41, 0x49, 0x54, 0x20, 0x69, 0x73, 0x20 - .byte 0x62, 0x75, 0x73, 0x79, 0x31, 0x00, 0x00, 0x00 - .global ov11_02319304 -ov11_02319304: - .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20 - .byte 0x4B, 0x45, 0x59, 0x20, 0x57, 0x41, 0x49, 0x54, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73, 0x79 - .byte 0x32, 0x00, 0x00, 0x00 - .global ov11_02319320 -ov11_02319320: - .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x43, 0x4C, 0x4F, 0x53 - .byte 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73, 0x79, 0x31, 0x00, 0x00 - .global ov11_02319338 -ov11_02319338: - .byte 0x4D, 0x45, 0x53, 0x53 - .byte 0x41, 0x47, 0x45, 0x20, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73 - .byte 0x79, 0x32, 0x00, 0x00 - .global ov11_02319350 -ov11_02319350: - .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x43, 0x4C, 0x4F, 0x53 - .byte 0x45, 0x20, 0x45, 0x4E, 0x46, 0x4F, 0x52, 0x43, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73 - .byte 0x79, 0x00, 0x00, 0x00 - .global ov11_02319370 -ov11_02319370: - .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62 - .byte 0x75, 0x73, 0x79, 0x00 - .global ov11_02319380 -ov11_02319380: - .byte 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x20, 0x4D, 0x45, 0x53, 0x53, 0x41 - .byte 0x47, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73, 0x79, 0x00, 0x00 - .global ov11_02319398 -ov11_02319398: - .byte 0x53, 0x57, 0x49, 0x54 - .byte 0x43, 0x48, 0x20, 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x73, 0x65, 0x74, 0x00, 0x00 - .global ov11_023193AC -ov11_023193AC: - .byte 0x6D, 0x65, 0x6E, 0x75, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_023193BC -ov11_023193BC: - .byte 0x63, 0x61, 0x73, 0x65, 0x20, 0x6D, 0x65, 0x6E, 0x75, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x25 - .byte 0x33, 0x64, 0x20, 0x25, 0x30, 0x34, 0x78, 0x00 - .global ov11_023193D4 -ov11_023193D4: - .byte 0x54, 0x41, 0x42, 0x4C, 0x45, 0x44, 0x41, 0x54 - .byte 0x2F, 0x69, 0x74, 0x65, 0x6D, 0x25, 0x30, 0x32, 0x64, 0x2E, 0x64, 0x61, 0x74, 0x00, 0x00, 0x00 - .global ov11_023193EC -ov11_023193EC: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x5F, 0x43, 0x6F, 0x6D, 0x6D, 0x61 - .byte 0x6E, 0x64, 0x5F, 0x4D, 0x45, 0x4E, 0x55, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20 - .byte 0x25, 0x64, 0x00, 0x00 - .global ov11_02319410 -ov11_02319410: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x5F, 0x43 - .byte 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x4D, 0x45, 0x4E, 0x55, 0x20, 0x69, 0x6E, 0x69, 0x74 - .byte 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00 - .global ov11_02319438 -ov11_02319438: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x25, 0x33 - .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00, 0x00 - .global ov11_02319458 -ov11_02319458: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x32, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x25 - .byte 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00 - .global ov11_02319478 -ov11_02319478: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x25, 0x33 - .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00, 0x00 - .global ov11_02319498 -ov11_02319498: - .byte 0x73, 0x77, 0x69, 0x74 - .byte 0x63, 0x68, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x25, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_023194B0 -ov11_023194B0: - .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x72, 0x65, 0x71, 0x75 - .byte 0x65, 0x73, 0x74, 0x00 - .global ov11_023194C0 -ov11_023194C0: - .byte 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4C, 0x20, 0x4D, 0x45, 0x53, 0x53 - .byte 0x41, 0x47, 0x45, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00 - .global ov11_023194D8 -ov11_023194D8: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x25, 0x33, 0x64, 0x5B - .byte 0x25, 0x33, 0x64, 0x5D, 0x00, 0x00, 0x00, 0x00 - .global ov11_023194F4 -ov11_023194F4: - .byte 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65 - .byte 0x20, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x00, 0x00 - .global ov11_02319504 -ov11_02319504: - .byte 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65 - .byte 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319518 -ov11_02319518: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x63, 0x61, 0x73, 0x65, 0x20, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x20 - .byte 0x25, 0x30, 0x34, 0x78, 0x20, 0x25, 0x73, 0x00 - .global ov11_02319534 -ov11_02319534: - .byte 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x6D - .byte 0x65, 0x6E, 0x75, 0x20, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x25, 0x33, 0x64, 0x20, 0x6E, 0x75, 0x6D - .byte 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319554 -ov11_02319554: - .byte 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x6E, 0x65 - .byte 0x6C, 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_0231956C -ov11_0231956C: - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6A - .byte 0x75, 0x6D, 0x70, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_0231958C -ov11_0231958C: - .byte 0x20, 0x20, 0x20, 0x20, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F - .byte 0x6E, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 - .global ov11_023195AC -ov11_023195AC: - .byte 0x20, 0x20, 0x20, 0x20, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F - .byte 0x6E, 0x20, 0x73, 0x65, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 - .global ov11_023195C8 -ov11_023195C8: - .byte 0x45, 0x78, 0x65, 0x63 - .byte 0x75, 0x74, 0x65, 0x20, 0x6C, 0x69, 0x76, 0x65, 0x73, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 - .byte 0x64, 0x20, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x00 - .global ov11_023195EC -ov11_023195EC: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x75, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x25, 0x33 - .byte 0x64, 0x00, 0x00, 0x00 - .global ov11_02319600 -ov11_02319600: - .byte 0x5F, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x61, 0x73, 0x65, 0x50 - .byte 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov11_02319618 -ov11_02319618: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x43, 0x41, 0x53, 0x45, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319628 -ov11_02319628: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x43, 0x41, 0x53, 0x45, 0x20, 0x4A, 0x55, 0x4D, 0x50, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 - .byte 0x64, 0x00, 0x00, 0x00 - .global ov11_02319640 -ov11_02319640: - .byte 0x20, 0x20, 0x20, 0x20, 0x43, 0x41, 0x53, 0x45, 0x5F, 0x56, 0x41, 0x4C - .byte 0x55, 0x45, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 - .global ov11_02319658 -ov11_02319658: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x43, 0x41, 0x53, 0x45, 0x5F, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4C, 0x45, 0x20, 0x25, 0x33 - .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 - .global ov11_02319674 -ov11_02319674: - .byte 0x20, 0x20, 0x20, 0x20, 0x43, 0x41, 0x53, 0x45 - .byte 0x20, 0x4F, 0x55, 0x54, 0x20, 0x25, 0x31, 0x30, 0x73, 0x5B, 0x25, 0x30, 0x34, 0x78, 0x5D, 0x00 - .global ov11_0231968C -ov11_0231968C: - .byte 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319694 -ov11_02319694: - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6C - .byte 0x6F, 0x61, 0x64, 0x20, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x5B - .byte 0x25, 0x73, 0x5D, 0x00 - .global ov11_023196B0 -ov11_023196B0: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x25, 0x73 - .byte 0x2E, 0x73, 0x73, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov11_023196C4 -ov11_023196C4: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25 - .byte 0x73, 0x2F, 0x25, 0x73, 0x2E, 0x73, 0x73, 0x61, 0x00, 0x00, 0x00, 0x00 - .global ov11_023196D8 -ov11_023196D8: - .byte 0x53, 0x43, 0x52, 0x49 - .byte 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x73, 0x73, 0x65, 0x00 - .global ov11_023196EC -ov11_023196EC: - .byte 0x73, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x68, 0x61, 0x6E - .byte 0x67, 0x65, 0x72, 0x20, 0x25, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65 - .byte 0x20, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00, 0x00 - .global ov11_02319714 -ov11_02319714: - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6C - .byte 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 - .byte 0x64, 0x00, 0x00, 0x00 - .global ov11_02319730 -ov11_02319730: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x25, 0x73 - .byte 0x2E, 0x73, 0x73, 0x62, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319744 -ov11_02319744: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25 - .byte 0x73, 0x2F, 0x25, 0x73, 0x25, 0x30, 0x32, 0x64, 0x2E, 0x73, 0x73, 0x62, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231975C -ov11_0231975C: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x25 - .byte 0x30, 0x32, 0x64, 0x2E, 0x73, 0x73, 0x62, 0x00 - .global ov11_02319774 -ov11_02319774: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x53 - .byte 0x30, 0x30, 0x50, 0x30, 0x31, 0x41, 0x2F, 0x25, 0x73, 0x2E, 0x73, 0x73, 0x62, 0x00, 0x00, 0x00 - .global ov11_0231978C -ov11_0231978C: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72 - .byte 0x65, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F - .byte 0x6E, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_023197B4 -ov11_023197B4: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74 - .byte 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6C, 0x6F - .byte 0x61, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov11_023197D8 -ov11_023197D8: - .byte 0x53, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72 - .byte 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x25, 0x64, 0x20, 0x25 - .byte 0x73, 0x00, 0x00, 0x00 - .global ov11_02319800 -ov11_02319800: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F - .byte 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x61 - .byte 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x00 - .global ov11_02319828 -ov11_02319828: - .byte 0x53, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72 - .byte 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x25, 0x64, 0x00, 0x00 - .global ov11_0231984C -ov11_0231984C: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F - .byte 0x61, 0x64, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231986C -ov11_0231986C: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F - .byte 0x61, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x20, 0x25, 0x64, 0x00 - .global ov11_02319888 -ov11_02319888: - .byte 0x53, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x61 - .byte 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x20, 0x25, 0x64, 0x00, 0x00 - .global ov11_023198AC -ov11_023198AC: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F - .byte 0x61, 0x64, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x25 - .byte 0x73, 0x00, 0x00, 0x00 - .global ov11_023198D0 -ov11_023198D0: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F - .byte 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x25, 0x64, 0x20, 0x25 - .byte 0x64, 0x00, 0x00, 0x00 - .global ov11_023198F0 -ov11_023198F0: - .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F - .byte 0x6E, 0x5F, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x41, 0x6C, 0x6C, 0x00 - .global ov11_02319908 -ov11_02319908: - .byte 0x73, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61 - .byte 0x6D, 0x65, 0x20, 0x5B, 0x25, 0x73, 0x5D, 0x00 - .global ov11_02319924 -ov11_02319924: - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6D - .byte 0x65, 0x6E, 0x75, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_0231993C -ov11_0231993C: - .byte 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x20, 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x20, 0x54 - .byte 0x48, 0x41, 0x4E, 0x4B, 0x53, 0x20, 0x49, 0x4E, 0x49, 0x54, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64 - .byte 0x0A, 0x00, 0x00, 0x00 - .global ov11_02319960 -ov11_02319960: - .byte 0x20, 0x20, 0x20, 0x20, 0x5B, 0x25, 0x32, 0x64, 0x5D, 0x20, 0x64, 0x75 - .byte 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x20, 0x25, 0x32, 0x64, 0x20, 0x20, 0x20, 0x6B, 0x69, 0x6E, 0x64 - .byte 0x20, 0x25, 0x32, 0x64, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x32, 0x64, 0x20, 0x20 - .byte 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x32, 0x64, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75 - .byte 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20 - .byte 0x25, 0x33, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov11_023199B4 -ov11_023199B4: - .byte 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x20 - .byte 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x20, 0x54, 0x48, 0x41, 0x4E, 0x4B, 0x53, 0x20, 0x52, 0x45 - .byte 0x46, 0x52, 0x45, 0x53, 0x48, 0x0A, 0x00, 0x00 - .global ov11_023199D4 -ov11_023199D4: - .byte 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x20 - .byte 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x20, 0x54, 0x48, 0x41, 0x4E, 0x4B, 0x53, 0x20, 0x41, 0x43 - .byte 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73 - .byte 0x75, 0x6C, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74 - .byte 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x25, 0x33, 0x64 - .byte 0x0A, 0x00, 0x00, 0x00 - .global ov11_02319A20 -ov11_02319A20: - .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6D, 0x65, 0x6E, 0x75, 0x20 - .byte 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov11_02319A38 -ov11_02319A38: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319A48 -ov11_02319A48: - .byte 0x73, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65 - .byte 0x73, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_02319A68 -ov11_02319A68: - .byte 0x74, 0x61, 0x73, 0x6B - .byte 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x20, 0x63, 0x68, 0x61 - .byte 0x6C, 0x6C, 0x65, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x25, 0x64, 0x20 - .byte 0x25, 0x64, 0x0A, 0x00 - .global ov11_02319A90 -ov11_02319A90: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319A98 -ov11_02319A98: - .byte 0x73, 0x63, 0x72, 0x69 - .byte 0x70, 0x74, 0x20, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x73, 0x75, 0x62, 0x20, 0x63, 0x61 - .byte 0x6C, 0x6C, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 - .global ov11_02319AB4 -ov11_02319AB4: - .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x43 - .byte 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x2F, 0x75, 0x6E, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x2E, 0x73 - .byte 0x73, 0x62, 0x00, 0x00 - .global ov11_02319AD0 -ov11_02319AD0: - .byte 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70 - .byte 0x74, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global C_ROUTINE_NAMES -C_ROUTINE_NAMES: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x35, 0x00 - .global ov11_02319AF4 -ov11_02319AF4: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x32, 0x00 - .global ov11_02319AFC -ov11_02319AFC: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x34, 0x00 - .global ov11_02319B04 -ov11_02319B04: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x33, 0x00 - .global ov11_02319B0C -ov11_02319B0C: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x31, 0x00 - .global ov11_02319B14 -ov11_02319B14: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x36, 0x00 - .global ov11_02319B1C -ov11_02319B1C: - .byte 0x4D, 0x41, 0x50, 0x5F, 0x54, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319B28 -ov11_02319B28: - .byte 0x45, 0x4E, 0x44, 0x5F - .byte 0x54, 0x41, 0x4C, 0x4B, 0x00, 0x00, 0x00, 0x00 - .global ov11_02319B34 -ov11_02319B34: - .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x55, 0x4E, 0x49 - .byte 0x54, 0x00, 0x00, 0x00 - .global ov11_02319B40 -ov11_02319B40: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00 - .global ov11_02319B4C -ov11_02319B4C: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x59, 0x00, 0x00, 0x00 - .global ov11_02319B58 -ov11_02319B58: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x36, 0x00, 0x00 - .global ov11_02319B64 -ov11_02319B64: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 - .byte 0x31, 0x33, 0x00, 0x00 - .global ov11_02319B70 -ov11_02319B70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x39, 0x00, 0x00 - .global ov11_02319B7C -ov11_02319B7C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x32, 0x34, 0x00, 0x00 - .global ov11_02319B88 -ov11_02319B88: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x32, 0x00, 0x00 - .global ov11_02319B94 -ov11_02319B94: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x53, 0x4C, 0x45 - .byte 0x45, 0x50, 0x00, 0x00 - .global ov11_02319BA0 -ov11_02319BA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x38, 0x00, 0x00 - .global ov11_02319BAC -ov11_02319BAC: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x30, 0x00, 0x00 - .global ov11_02319BB8 -ov11_02319BB8: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x30, 0x37, 0x00, 0x00 - .global ov11_02319BC4 -ov11_02319BC4: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 - .byte 0x30, 0x34, 0x00, 0x00 - .global ov11_02319BD0 -ov11_02319BD0: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x54, 0x59, 0x50, 0x45, 0x31, 0x00, 0x00 - .global ov11_02319BDC -ov11_02319BDC: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x54, 0x59, 0x50, 0x45, 0x32, 0x00, 0x00 - .global ov11_02319BE8 -ov11_02319BE8: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x34, 0x00, 0x00 - .global ov11_02319BF4 -ov11_02319BF4: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x50, 0x41, 0x55 - .byte 0x53, 0x45, 0x00, 0x00 - .global ov11_02319C00 -ov11_02319C00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x35, 0x00, 0x00 - .global ov11_02319C0C -ov11_02319C0C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x37, 0x00, 0x00 - .global ov11_02319C18 -ov11_02319C18: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x35, 0x00, 0x00 - .global ov11_02319C24 -ov11_02319C24: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 - .byte 0x30, 0x33, 0x00, 0x00 - .global ov11_02319C30 -ov11_02319C30: - .byte 0x54, 0x49, 0x54, 0x4C, 0x45, 0x5F, 0x54, 0x45, 0x53, 0x54, 0x00, 0x00 - .global ov11_02319C3C -ov11_02319C3C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x38, 0x00, 0x00 - .global ov11_02319C48 -ov11_02319C48: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x32, 0x30, 0x00, 0x00 - .global ov11_02319C54 -ov11_02319C54: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 - .byte 0x32, 0x33, 0x00, 0x00 - .global ov11_02319C60 -ov11_02319C60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x31, 0x00, 0x00 - .global ov11_02319C6C -ov11_02319C6C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x32, 0x32, 0x00, 0x00 - .global ov11_02319C78 -ov11_02319C78: - .byte 0x52, 0x45, 0x53, 0x43 - .byte 0x55, 0x45, 0x5F, 0x53, 0x45, 0x54, 0x00, 0x00 - .global ov11_02319C84 -ov11_02319C84: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 - .byte 0x31, 0x31, 0x00, 0x00 - .global ov11_02319C90 -ov11_02319C90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x32, 0x00, 0x00 - .global ov11_02319C9C -ov11_02319C9C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x36, 0x00, 0x00 - .global ov11_02319CA8 -ov11_02319CA8: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x54, 0x47, 0x32, 0x31, 0x00, 0x00 - .global ov11_02319CB4 -ov11_02319CB4: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 - .byte 0x30, 0x39, 0x00, 0x00 - .global ov11_02319CC0 -ov11_02319CC0: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x45, 0x00 - .global ov11_02319CCC -ov11_02319CCC: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x00 - .global ov11_02319CD8 -ov11_02319CD8: - .byte 0x44, 0x45, 0x4D, 0x4F - .byte 0x5F, 0x43, 0x41, 0x4E, 0x43, 0x45, 0x4C, 0x00 - .global ov11_02319CE4 -ov11_02319CE4: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x45, 0x4E - .byte 0x54, 0x45, 0x52, 0x00 - .global ov11_02319CF0 -ov11_02319CF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x4B, 0x49, 0x00 - .global ov11_02319CFC -ov11_02319CFC: - .byte 0x42, 0x55, 0x42, 0x42, 0x4C, 0x45, 0x5F, 0x54, 0x45, 0x53, 0x54, 0x00 - .global ov11_02319D08 -ov11_02319D08: - .byte 0x4C, 0x49, 0x56, 0x45 - .byte 0x53, 0x5F, 0x52, 0x45, 0x50, 0x4C, 0x59, 0x00 - .global ov11_02319D14 -ov11_02319D14: - .byte 0x57, 0x41, 0x4B, 0x45, 0x55, 0x50, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_02319D20 -ov11_02319D20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D30 -ov11_02319D30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D40 -ov11_02319D40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D50 -ov11_02319D50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D60 -ov11_02319D60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D70 -ov11_02319D70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D80 -ov11_02319D80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319D90 -ov11_02319D90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319DA0 -ov11_02319DA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319DB0 -ov11_02319DB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x34, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319DC0 -ov11_02319DC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319DD0 -ov11_02319DD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319DE0 -ov11_02319DE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319DF0 -ov11_02319DF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E00 -ov11_02319E00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E10 -ov11_02319E10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E20 -ov11_02319E20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E30 -ov11_02319E30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E40 -ov11_02319E40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E50 -ov11_02319E50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E60 -ov11_02319E60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E70 -ov11_02319E70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E80 -ov11_02319E80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319E90 -ov11_02319E90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319EA0 -ov11_02319EA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319EB0 -ov11_02319EB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319EC0 -ov11_02319EC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319ED0 -ov11_02319ED0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319EE0 -ov11_02319EE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319EF0 -ov11_02319EF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F00 -ov11_02319F00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F10 -ov11_02319F10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x33, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F20 -ov11_02319F20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F30 -ov11_02319F30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F40 -ov11_02319F40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F50 -ov11_02319F50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F60 -ov11_02319F60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F70 -ov11_02319F70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x57, 0x41, 0x4B, 0x45, 0x55, 0x50 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F80 -ov11_02319F80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319F90 -ov11_02319F90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319FA0 -ov11_02319FA0: - .byte 0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x5F, 0x45, 0x4E, 0x54, 0x45, 0x52 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319FB0 -ov11_02319FB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319FC0 -ov11_02319FC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319FD0 -ov11_02319FD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319FE0 -ov11_02319FE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02319FF0 -ov11_02319FF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A000 -ov11_0231A000: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A010 -ov11_0231A010: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A020 -ov11_0231A020: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A030 -ov11_0231A030: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A040 -ov11_0231A040: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A050 -ov11_0231A050: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A060 -ov11_0231A060: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A070 -ov11_0231A070: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A080 -ov11_0231A080: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x33, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A090 -ov11_0231A090: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A0A0 -ov11_0231A0A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A0B0 -ov11_0231A0B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A0C0 -ov11_0231A0C0: - .byte 0x52, 0x45, 0x53, 0x43, 0x55, 0x45, 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A0D0 -ov11_0231A0D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A0E0 -ov11_0231A0E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x34, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A0F0 -ov11_0231A0F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A100 -ov11_0231A100: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A110 -ov11_0231A110: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A120 -ov11_0231A120: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A130 -ov11_0231A130: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A140 -ov11_0231A140: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A150 -ov11_0231A150: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A160 -ov11_0231A160: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A170 -ov11_0231A170: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A180 -ov11_0231A180: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A190 -ov11_0231A190: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A1A0 -ov11_0231A1A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A1B0 -ov11_0231A1B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A1C0 -ov11_0231A1C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A1D0 -ov11_0231A1D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A1E0 -ov11_0231A1E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A1F0 -ov11_0231A1F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A200 -ov11_0231A200: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A210 -ov11_0231A210: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A220 -ov11_0231A220: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A230 -ov11_0231A230: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A240 -ov11_0231A240: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A250 -ov11_0231A250: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A260 -ov11_0231A260: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A270 -ov11_0231A270: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A280 -ov11_0231A280: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A290 -ov11_0231A290: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A2A0 -ov11_0231A2A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A2B0 -ov11_0231A2B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A2C0 -ov11_0231A2C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A2D0 -ov11_0231A2D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A2E0 -ov11_0231A2E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A2F0 -ov11_0231A2F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A300 -ov11_0231A300: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A310 -ov11_0231A310: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A320 -ov11_0231A320: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A330 -ov11_0231A330: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A340 -ov11_0231A340: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A350 -ov11_0231A350: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A360 -ov11_0231A360: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A370 -ov11_0231A370: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A380 -ov11_0231A380: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A390 -ov11_0231A390: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A3A0 -ov11_0231A3A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A3B0 -ov11_0231A3B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A3C0 -ov11_0231A3C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A3D0 -ov11_0231A3D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A3E0 -ov11_0231A3E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A3F0 -ov11_0231A3F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A400 -ov11_0231A400: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A410 -ov11_0231A410: - .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x5F, 0x45, 0x56, 0x45, 0x4E, 0x54 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A420 -ov11_0231A420: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A430 -ov11_0231A430: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A440 -ov11_0231A440: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A450 -ov11_0231A450: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A460 -ov11_0231A460: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A470 -ov11_0231A470: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A480 -ov11_0231A480: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A490 -ov11_0231A490: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A4A0 -ov11_0231A4A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A4B0 -ov11_0231A4B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A4C0 -ov11_0231A4C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A4D0 -ov11_0231A4D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A4E0 -ov11_0231A4E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A4F0 -ov11_0231A4F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A500 -ov11_0231A500: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A510 -ov11_0231A510: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A520 -ov11_0231A520: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A530 -ov11_0231A530: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A540 -ov11_0231A540: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A550 -ov11_0231A550: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A560 -ov11_0231A560: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A570 -ov11_0231A570: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A580 -ov11_0231A580: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A590 -ov11_0231A590: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A5A0 -ov11_0231A5A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A5B0 -ov11_0231A5B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A5C0 -ov11_0231A5C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A5D0 -ov11_0231A5D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A5E0 -ov11_0231A5E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A5F0 -ov11_0231A5F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A600 -ov11_0231A600: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A610 -ov11_0231A610: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A620 -ov11_0231A620: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A630 -ov11_0231A630: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A640 -ov11_0231A640: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A650 -ov11_0231A650: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A660 -ov11_0231A660: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A670 -ov11_0231A670: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A680 -ov11_0231A680: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A690 -ov11_0231A690: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A6A0 -ov11_0231A6A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A6B0 -ov11_0231A6B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A6C0 -ov11_0231A6C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A6D0 -ov11_0231A6D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A6E0 -ov11_0231A6E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A6F0 -ov11_0231A6F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A700 -ov11_0231A700: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x33, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A710 -ov11_0231A710: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A720 -ov11_0231A720: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A730 -ov11_0231A730: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A740 -ov11_0231A740: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x33, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A750 -ov11_0231A750: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A760 -ov11_0231A760: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A770 -ov11_0231A770: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A780 -ov11_0231A780: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A790 -ov11_0231A790: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A7A0 -ov11_0231A7A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A7B0 -ov11_0231A7B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A7C0 -ov11_0231A7C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A7D0 -ov11_0231A7D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A7E0 -ov11_0231A7E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A7F0 -ov11_0231A7F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A800 -ov11_0231A800: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A810 -ov11_0231A810: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A820 -ov11_0231A820: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A830 -ov11_0231A830: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A840 -ov11_0231A840: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A850 -ov11_0231A850: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A860 -ov11_0231A860: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A870 -ov11_0231A870: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A880 -ov11_0231A880: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A890 -ov11_0231A890: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A8A0 -ov11_0231A8A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x30, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A8B0 -ov11_0231A8B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A8C0 -ov11_0231A8C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A8D0 -ov11_0231A8D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A8E0 -ov11_0231A8E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A8F0 -ov11_0231A8F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A900 -ov11_0231A900: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A910 -ov11_0231A910: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A920 -ov11_0231A920: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A930 -ov11_0231A930: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A940 -ov11_0231A940: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A950 -ov11_0231A950: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A960 -ov11_0231A960: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A970 -ov11_0231A970: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A980 -ov11_0231A980: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A990 -ov11_0231A990: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A9A0 -ov11_0231A9A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A9B0 -ov11_0231A9B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A9C0 -ov11_0231A9C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A9D0 -ov11_0231A9D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A9E0 -ov11_0231A9E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231A9F0 -ov11_0231A9F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA00 -ov11_0231AA00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA10 -ov11_0231AA10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA20 -ov11_0231AA20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA30 -ov11_0231AA30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA40 -ov11_0231AA40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA50 -ov11_0231AA50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA60 -ov11_0231AA60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA70 -ov11_0231AA70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA80 -ov11_0231AA80: - .byte 0x48, 0x41, 0x5F, 0x4D, 0x49, 0x48, 0x41, 0x52, 0x49, 0x42, 0x41, 0x4E - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AA90 -ov11_0231AA90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AAA0 -ov11_0231AAA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AAB0 -ov11_0231AAB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AAC0 -ov11_0231AAC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AAD0 -ov11_0231AAD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AAE0 -ov11_0231AAE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AAF0 -ov11_0231AAF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB00 -ov11_0231AB00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB10 -ov11_0231AB10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB20 -ov11_0231AB20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB30 -ov11_0231AB30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB40 -ov11_0231AB40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB50 -ov11_0231AB50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB60 -ov11_0231AB60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB70 -ov11_0231AB70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB80 -ov11_0231AB80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AB90 -ov11_0231AB90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ABA0 -ov11_0231ABA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ABB0 -ov11_0231ABB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ABC0 -ov11_0231ABC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ABD0 -ov11_0231ABD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ABE0 -ov11_0231ABE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x43, 0x48, 0x4F - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ABF0 -ov11_0231ABF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC00 -ov11_0231AC00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC10 -ov11_0231AC10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC20 -ov11_0231AC20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC30 -ov11_0231AC30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC40 -ov11_0231AC40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC50 -ov11_0231AC50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC60 -ov11_0231AC60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC70 -ov11_0231AC70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC80 -ov11_0231AC80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AC90 -ov11_0231AC90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ACA0 -ov11_0231ACA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ACB0 -ov11_0231ACB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ACC0 -ov11_0231ACC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ACD0 -ov11_0231ACD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ACE0 -ov11_0231ACE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ACF0 -ov11_0231ACF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD00 -ov11_0231AD00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD10 -ov11_0231AD10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD20 -ov11_0231AD20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD30 -ov11_0231AD30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD40 -ov11_0231AD40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD50 -ov11_0231AD50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD60 -ov11_0231AD60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD70 -ov11_0231AD70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD80 -ov11_0231AD80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AD90 -ov11_0231AD90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ADA0 -ov11_0231ADA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ADB0 -ov11_0231ADB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ADC0 -ov11_0231ADC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ADD0 -ov11_0231ADD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ADE0 -ov11_0231ADE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ADF0 -ov11_0231ADF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE00 -ov11_0231AE00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE10 -ov11_0231AE10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE20 -ov11_0231AE20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE30 -ov11_0231AE30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE40 -ov11_0231AE40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE50 -ov11_0231AE50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE60 -ov11_0231AE60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE70 -ov11_0231AE70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE80 -ov11_0231AE80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AE90 -ov11_0231AE90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AEA0 -ov11_0231AEA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AEB0 -ov11_0231AEB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AEC0 -ov11_0231AEC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AED0 -ov11_0231AED0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AEE0 -ov11_0231AEE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AEF0 -ov11_0231AEF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF00 -ov11_0231AF00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF10 -ov11_0231AF10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF20 -ov11_0231AF20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF30 -ov11_0231AF30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x31, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF40 -ov11_0231AF40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF50 -ov11_0231AF50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF60 -ov11_0231AF60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF70 -ov11_0231AF70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF80 -ov11_0231AF80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AF90 -ov11_0231AF90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AFA0 -ov11_0231AFA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AFB0 -ov11_0231AFB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AFC0 -ov11_0231AFC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AFD0 -ov11_0231AFD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AFE0 -ov11_0231AFE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231AFF0 -ov11_0231AFF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B000 -ov11_0231B000: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B010 -ov11_0231B010: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B020 -ov11_0231B020: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B030 -ov11_0231B030: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B040 -ov11_0231B040: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B050 -ov11_0231B050: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B060 -ov11_0231B060: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B070 -ov11_0231B070: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B080 -ov11_0231B080: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B090 -ov11_0231B090: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B0A0 -ov11_0231B0A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B0B0 -ov11_0231B0B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B0C0 -ov11_0231B0C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B0D0 -ov11_0231B0D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B0E0 -ov11_0231B0E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B0F0 -ov11_0231B0F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B100 -ov11_0231B100: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B110 -ov11_0231B110: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B120 -ov11_0231B120: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B130 -ov11_0231B130: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B140 -ov11_0231B140: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B150 -ov11_0231B150: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B160 -ov11_0231B160: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B170 -ov11_0231B170: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B180 -ov11_0231B180: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B190 -ov11_0231B190: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B1A0 -ov11_0231B1A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B1B0 -ov11_0231B1B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B1C0 -ov11_0231B1C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B1D0 -ov11_0231B1D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B1E0 -ov11_0231B1E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B1F0 -ov11_0231B1F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B200 -ov11_0231B200: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B210 -ov11_0231B210: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B220 -ov11_0231B220: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B230 -ov11_0231B230: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B240 -ov11_0231B240: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B250 -ov11_0231B250: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B260 -ov11_0231B260: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B270 -ov11_0231B270: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B280 -ov11_0231B280: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B290 -ov11_0231B290: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B2A0 -ov11_0231B2A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B2B0 -ov11_0231B2B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B2C0 -ov11_0231B2C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B2D0 -ov11_0231B2D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B2E0 -ov11_0231B2E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B2F0 -ov11_0231B2F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B300 -ov11_0231B300: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B310 -ov11_0231B310: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B320 -ov11_0231B320: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B330 -ov11_0231B330: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B340 -ov11_0231B340: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B350 -ov11_0231B350: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B360 -ov11_0231B360: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B370 -ov11_0231B370: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B380 -ov11_0231B380: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B390 -ov11_0231B390: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B3A0 -ov11_0231B3A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B3B0 -ov11_0231B3B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B3C0 -ov11_0231B3C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B3D0 -ov11_0231B3D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B3E0 -ov11_0231B3E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B3F0 -ov11_0231B3F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B400 -ov11_0231B400: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B410 -ov11_0231B410: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B420 -ov11_0231B420: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B430 -ov11_0231B430: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B440 -ov11_0231B440: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B450 -ov11_0231B450: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B460 -ov11_0231B460: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B470 -ov11_0231B470: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B480 -ov11_0231B480: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B490 -ov11_0231B490: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B4A0 -ov11_0231B4A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B4B0 -ov11_0231B4B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B4C0 -ov11_0231B4C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B4D0 -ov11_0231B4D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B4E0 -ov11_0231B4E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B4F0 -ov11_0231B4F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B500 -ov11_0231B500: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B510 -ov11_0231B510: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B520 -ov11_0231B520: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B530 -ov11_0231B530: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B540 -ov11_0231B540: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B550 -ov11_0231B550: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B560 -ov11_0231B560: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B570 -ov11_0231B570: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B580 -ov11_0231B580: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B590 -ov11_0231B590: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B5A0 -ov11_0231B5A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B5B0 -ov11_0231B5B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B5C0 -ov11_0231B5C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B5D0 -ov11_0231B5D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B5E0 -ov11_0231B5E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B5F0 -ov11_0231B5F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B600 -ov11_0231B600: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B610 -ov11_0231B610: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B620 -ov11_0231B620: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B630 -ov11_0231B630: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B640 -ov11_0231B640: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B650 -ov11_0231B650: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B660 -ov11_0231B660: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B670 -ov11_0231B670: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B680 -ov11_0231B680: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B690 -ov11_0231B690: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B6A0 -ov11_0231B6A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B6B0 -ov11_0231B6B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B6C0 -ov11_0231B6C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B6D0 -ov11_0231B6D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B6E0 -ov11_0231B6E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B6F0 -ov11_0231B6F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B700 -ov11_0231B700: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B710 -ov11_0231B710: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B720 -ov11_0231B720: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B730 -ov11_0231B730: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B740 -ov11_0231B740: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B750 -ov11_0231B750: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B760 -ov11_0231B760: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B770 -ov11_0231B770: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B780 -ov11_0231B780: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B790 -ov11_0231B790: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B7A0 -ov11_0231B7A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B7B0 -ov11_0231B7B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B7C0 -ov11_0231B7C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B7D0 -ov11_0231B7D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B7E0 -ov11_0231B7E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B7F0 -ov11_0231B7F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B800 -ov11_0231B800: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B810 -ov11_0231B810: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B820 -ov11_0231B820: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B830 -ov11_0231B830: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B840 -ov11_0231B840: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B850 -ov11_0231B850: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B860 -ov11_0231B860: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B870 -ov11_0231B870: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B880 -ov11_0231B880: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B890 -ov11_0231B890: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B8A0 -ov11_0231B8A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B8B0 -ov11_0231B8B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B8C0 -ov11_0231B8C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B8D0 -ov11_0231B8D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B8E0 -ov11_0231B8E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B8F0 -ov11_0231B8F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B900 -ov11_0231B900: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B910 -ov11_0231B910: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B920 -ov11_0231B920: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B930 -ov11_0231B930: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B940 -ov11_0231B940: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B950 -ov11_0231B950: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B960 -ov11_0231B960: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B970 -ov11_0231B970: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B980 -ov11_0231B980: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B990 -ov11_0231B990: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B9A0 -ov11_0231B9A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B9B0 -ov11_0231B9B0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B9C0 -ov11_0231B9C0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B9D0 -ov11_0231B9D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B9E0 -ov11_0231B9E0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231B9F0 -ov11_0231B9F0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA00 -ov11_0231BA00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA10 -ov11_0231BA10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA20 -ov11_0231BA20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA30 -ov11_0231BA30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA40 -ov11_0231BA40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA50 -ov11_0231BA50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA60 -ov11_0231BA60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA70 -ov11_0231BA70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA80 -ov11_0231BA80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231BA90 -ov11_0231BA90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x35 - .byte 0x41, 0x00, 0x00, 0x00 - .global ov11_0231BAA0 -ov11_0231BAA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x35 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BAB0 -ov11_0231BAB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x32 - .byte 0x41, 0x00, 0x00, 0x00 - .global ov11_0231BAC0 -ov11_0231BAC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x32 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BAD0 -ov11_0231BAD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x34 - .byte 0x41, 0x00, 0x00, 0x00 - .global ov11_0231BAE0 -ov11_0231BAE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x34 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BAF0 -ov11_0231BAF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x45, 0x4E, 0x44, 0x5F, 0x30 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov11_0231BB00 -ov11_0231BB00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x45, 0x4E, 0x44, 0x5F, 0x30 - .byte 0x32, 0x00, 0x00, 0x00 - .global ov11_0231BB10 -ov11_0231BB10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F - .byte 0x4C, 0x00, 0x00, 0x00 - .global ov11_0231BB20 -ov11_0231BB20: - .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41 - .byte 0x4C, 0x00, 0x00, 0x00 - .global ov11_0231BB30 -ov11_0231BB30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4F - .byte 0x4E, 0x00, 0x00, 0x00 - .global ov11_0231BB40 -ov11_0231BB40: - .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F - .byte 0x4C, 0x00, 0x00, 0x00 - .global ov11_0231BB50 -ov11_0231BB50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x41, 0x5F, 0x30 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov11_0231BB60 -ov11_0231BB60: - .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x5F, 0x43, 0x41, 0x4D, 0x45, 0x52 - .byte 0x41, 0x00, 0x00, 0x00 - .global ov11_0231BB70 -ov11_0231BB70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x53, 0x41, 0x4D - .byte 0x45, 0x00, 0x00, 0x00 - .global ov11_0231BB80 -ov11_0231BB80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x37 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BB90 -ov11_0231BB90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x31 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BBA0 -ov11_0231BBA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x37 - .byte 0x41, 0x00, 0x00, 0x00 - .global ov11_0231BBB0 -ov11_0231BBB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x37 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BBC0 -ov11_0231BBC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x33 - .byte 0x41, 0x00, 0x00, 0x00 - .global ov11_0231BBD0 -ov11_0231BBD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x33 - .byte 0x42, 0x00, 0x00, 0x00 - .global ov11_0231BBE0 -ov11_0231BBE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x46, 0x52 - .byte 0x45, 0x45, 0x00, 0x00 - .global ov11_0231BBF0 -ov11_0231BBF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x39 - .byte 0x5F, 0x32, 0x00, 0x00 - .global ov11_0231BC00 -ov11_0231BC00: - .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x57, 0x4F, 0x52, 0x4C, 0x44, 0x5F, 0x4D - .byte 0x41, 0x50, 0x00, 0x00 - .global ov11_0231BC10 -ov11_0231BC10: - .byte 0x42, 0x4F, 0x53, 0x53, 0x5F, 0x57, 0x49, 0x50, 0x45, 0x5F, 0x46, 0x55 - .byte 0x4E, 0x43, 0x00, 0x00 - .global ov11_0231BC20 -ov11_0231BC20: - .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x41, 0x54, 0x54, 0x45, 0x4E, 0x44, 0x41 - .byte 0x4E, 0x54, 0x00, 0x00 - .global ov11_0231BC30 -ov11_0231BC30: - .byte 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x42, 0x41, 0x53, 0x45, 0x5F, 0x46, 0x55 - .byte 0x4E, 0x43, 0x00, 0x00 - .global ov11_0231BC40 -ov11_0231BC40: - .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x5F, 0x4D, 0x45, 0x53, 0x53, 0x41 - .byte 0x47, 0x45, 0x00, 0x00 - .global ov11_0231BC50 -ov11_0231BC50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F - .byte 0x4B, 0x49, 0x00, 0x00 - .global ov11_0231BC60 -ov11_0231BC60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x53, 0x41, 0x4D - .byte 0x45, 0x58, 0x00, 0x00 - .global ov11_0231BC70 -ov11_0231BC70: - .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x41, 0x44, 0x56, 0x45, 0x4E, 0x54, 0x55 - .byte 0x52, 0x45, 0x00, 0x00 - .global ov11_0231BC80 -ov11_0231BC80: - .byte 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4E, 0x5F, 0x49, 0x4E - .byte 0x49, 0x54, 0x00, 0x00 - .global ov11_0231BC90 -ov11_0231BC90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x31, 0x30 - .byte 0x5F, 0x31, 0x32, 0x00 - .global ov11_0231BCA0 -ov11_0231BCA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x38 - .byte 0x5F, 0x30, 0x39, 0x00 - .global ov11_0231BCB0 -ov11_0231BCB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BCC0 -ov11_0231BCC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x4D, 0x41 - .byte 0x50, 0x49, 0x4E, 0x00 - .global ov11_0231BCD0 -ov11_0231BCD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x31, 0x30 - .byte 0x5F, 0x31, 0x32, 0x00 - .global ov11_0231BCE0 -ov11_0231BCE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BCF0 -ov11_0231BCF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x33 - .byte 0x5F, 0x30, 0x35, 0x00 - .global ov11_0231BD00 -ov11_0231BD00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x34 - .byte 0x5F, 0x30, 0x35, 0x00 - .global ov11_0231BD10 -ov11_0231BD10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x35 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BD20 -ov11_0231BD20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x33 - .byte 0x5F, 0x31, 0x34, 0x00 - .global ov11_0231BD30 -ov11_0231BD30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BD40 -ov11_0231BD40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BD50 -ov11_0231BD50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x34, 0x00 - .global ov11_0231BD60 -ov11_0231BD60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x37 - .byte 0x5F, 0x30, 0x39, 0x00 - .global ov11_0231BD70 -ov11_0231BD70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x33, 0x00 - .global ov11_0231BD80 -ov11_0231BD80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BD90 -ov11_0231BD90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x39 - .byte 0x5F, 0x31, 0x30, 0x00 - .global ov11_0231BDA0 -ov11_0231BDA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BDB0 -ov11_0231BDB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x39 - .byte 0x5F, 0x31, 0x30, 0x00 - .global ov11_0231BDC0 -ov11_0231BDC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x33, 0x00 - .global ov11_0231BDD0 -ov11_0231BDD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x35, 0x00 - .global ov11_0231BDE0 -ov11_0231BDE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BDF0 -ov11_0231BDF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x36, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x38, 0x00 - .global ov11_0231BE00 -ov11_0231BE00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x39 - .byte 0x5F, 0x31, 0x30, 0x00 - .global ov11_0231BE10 -ov11_0231BE10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x39 - .byte 0x5F, 0x31, 0x30, 0x00 - .global ov11_0231BE20 -ov11_0231BE20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BE30 -ov11_0231BE30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x35 - .byte 0x5F, 0x31, 0x36, 0x00 - .global ov11_0231BE40 -ov11_0231BE40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x37 - .byte 0x5F, 0x32, 0x30, 0x00 - .global ov11_0231BE50 -ov11_0231BE50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BE60 -ov11_0231BE60: - .byte 0x57, 0x41, 0x49, 0x54, 0x5F, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231BE70 -ov11_0231BE70: - .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231BE80 -ov11_0231BE80: - .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x48, 0x41, 0x50, 0x50, 0x59, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231BE90 -ov11_0231BE90: - .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x41, 0x4E, 0x47, 0x52, 0x59, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231BEA0 -ov11_0231BEA0: - .byte 0x53, 0x54, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x5F, 0x43, 0x4F, 0x4E, 0x54 - .byte 0x52, 0x4F, 0x4C, 0x00 - .global ov11_0231BEB0 -ov11_0231BEB0: - .byte 0x48, 0x45, 0x41, 0x44, 0x5F, 0x53, 0x48, 0x41, 0x4B, 0x45, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231BEC0 -ov11_0231BEC0: - .byte 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x53, 0x4C, 0x45, 0x45, 0x50, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231BED0 -ov11_0231BED0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54 - .byte 0x49, 0x4F, 0x4E, 0x00 - .global ov11_0231BEE0 -ov11_0231BEE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x56, 0x4F, 0x4C, 0x55, 0x54 - .byte 0x49, 0x4F, 0x4E, 0x00 - .global ov11_0231BEF0 -ov11_0231BEF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x34 - .byte 0x5F, 0x30, 0x35, 0x00 - .global ov11_0231BF00 -ov11_0231BF00: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BF10 -ov11_0231BF10: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x37 - .byte 0x5F, 0x30, 0x38, 0x00 - .global ov11_0231BF20 -ov11_0231BF20: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x35 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231BF30 -ov11_0231BF30: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F - .byte 0x53, 0x48, 0x55, 0x00 - .global ov11_0231BF40 -ov11_0231BF40: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x43, 0x48, 0x4F - .byte 0x5F, 0x44, 0x4F, 0x00 - .global ov11_0231BF50 -ov11_0231BF50: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x34 - .byte 0x5F, 0x30, 0x36, 0x00 - .global ov11_0231BF60 -ov11_0231BF60: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F - .byte 0x4B, 0x49, 0x58, 0x00 - .global ov11_0231BF70 -ov11_0231BF70: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x34, 0x00 - .global ov11_0231BF80 -ov11_0231BF80: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BF90 -ov11_0231BF90: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x37 - .byte 0x5F, 0x30, 0x38, 0x00 - .global ov11_0231BFA0 -ov11_0231BFA0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231BFB0 -ov11_0231BFB0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x33 - .byte 0x5F, 0x30, 0x34, 0x00 - .global ov11_0231BFC0 -ov11_0231BFC0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x39 - .byte 0x5F, 0x31, 0x30, 0x00 - .global ov11_0231BFD0 -ov11_0231BFD0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x35 - .byte 0x5F, 0x30, 0x36, 0x00 - .global ov11_0231BFE0 -ov11_0231BFE0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x34 - .byte 0x5F, 0x31, 0x35, 0x00 - .global ov11_0231BFF0 -ov11_0231BFF0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x31, 0x30 - .byte 0x5F, 0x31, 0x33, 0x00 - .global ov11_0231C000 -ov11_0231C000: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x38 - .byte 0x5F, 0x31, 0x39, 0x00 - .global ov11_0231C010 -ov11_0231C010: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x34, 0x5F, 0x30, 0x32 - .byte 0x5F, 0x30, 0x33, 0x00 - .global ov11_0231C020 -ov11_0231C020: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231C030 -ov11_0231C030: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x39, 0x00 - .global ov11_0231C040 -ov11_0231C040: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231C050 -ov11_0231C050: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x37 - .byte 0x5F, 0x31, 0x32, 0x00 - .global ov11_0231C060 -ov11_0231C060: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x31 - .byte 0x5F, 0x30, 0x32, 0x00 - .global ov11_0231C070 -ov11_0231C070: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x35 - .byte 0x5F, 0x30, 0x36, 0x00 - .global ov11_0231C080 -ov11_0231C080: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231C090 -ov11_0231C090: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x31, 0x31 - .byte 0x5F, 0x31, 0x32, 0x00 - .global ov11_0231C0A0 -ov11_0231C0A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x36 - .byte 0x5F, 0x30, 0x37, 0x00 - .global ov11_0231C0B0 -ov11_0231C0B0: - .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x50 - .byte 0x41, 0x52, 0x54, 0x59, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C0C4 -ov11_0231C0C4: - .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F - .byte 0x55, 0x4E, 0x44, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C0D8 -ov11_0231C0D8: - .byte 0x45, 0x58, 0x50, 0x4C - .byte 0x41, 0x4E, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C0EC -ov11_0231C0EC: - .byte 0x48, 0x41, 0x4E, 0x59, 0x4F, 0x55, 0x5F, 0x53, 0x41, 0x56, 0x45, 0x5F, 0x46, 0x55, 0x4E, 0x43 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C100 -ov11_0231C100: - .byte 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F - .byte 0x44, 0x49, 0x56, 0x45, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C114 -ov11_0231C114: - .byte 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5F, 0x4D - .byte 0x4F, 0x56, 0x45, 0x5F, 0x57, 0x41, 0x56, 0x45, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C128 -ov11_0231C128: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F, 0x53, 0x48, 0x55, 0x58, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C13C -ov11_0231C13C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x35, 0x5F, 0x30, 0x37, 0x41 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C150 -ov11_0231C150: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x46, 0x52 - .byte 0x45, 0x45, 0x5F, 0x41, 0x45, 0x00, 0x00, 0x00 - .global ov11_0231C164 -ov11_0231C164: - .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x4D, 0x4F - .byte 0x56, 0x45, 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00, 0x00, 0x00 - .global ov11_0231C178 -ov11_0231C178: - .byte 0x4C, 0x49, 0x56, 0x45 - .byte 0x53, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x00, 0x00, 0x00 - .global ov11_0231C18C -ov11_0231C18C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x4E, 0x45, 0x58 - .byte 0x54, 0x00, 0x00, 0x00 - .global ov11_0231C1A0 -ov11_0231C1A0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F - .byte 0x4B, 0x49, 0x5F, 0x44, 0x4F, 0x00, 0x00, 0x00 - .global ov11_0231C1B4 -ov11_0231C1B4: - .byte 0x47, 0x4F, 0x54, 0x4F, 0x5F, 0x46, 0x52, 0x45 - .byte 0x45, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00, 0x00 - .global ov11_0231C1C8 -ov11_0231C1C8: - .byte 0x4D, 0x4F, 0x56, 0x45 - .byte 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x43, 0x41, 0x4D, 0x45, 0x52, 0x41, 0x00, 0x00, 0x00 - .global ov11_0231C1DC -ov11_0231C1DC: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x4D, 0x41, 0x50, 0x49, 0x4E, 0x5F - .byte 0x41, 0x45, 0x00, 0x00 - .global ov11_0231C1F0 -ov11_0231C1F0: - .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x52, 0x45, 0x50, 0x4C, 0x59, 0x5F - .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00, 0x00 - .global ov11_0231C204 -ov11_0231C204: - .byte 0x4F, 0x42, 0x4A, 0x45, 0x43, 0x54, 0x5F, 0x4D - .byte 0x4F, 0x56, 0x45, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x00, 0x00 - .global ov11_0231C218 -ov11_0231C218: - .byte 0x57, 0x41, 0x4B, 0x45 - .byte 0x55, 0x50, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00 - .global ov11_0231C22C -ov11_0231C22C: - .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x53, 0x55, 0x52, 0x50, 0x52, 0x49, 0x53, 0x45, 0x5F, 0x46, 0x55 - .byte 0x4E, 0x43, 0x00, 0x00 - .global ov11_0231C240 -ov11_0231C240: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 - .byte 0x5F, 0x46, 0x49, 0x52, 0x53, 0x54, 0x00, 0x00 - .global ov11_0231C254 -ov11_0231C254: - .byte 0x46, 0x41, 0x44, 0x45, 0x5F, 0x4F, 0x55, 0x54 - .byte 0x5F, 0x41, 0x4C, 0x4C, 0x5F, 0x41, 0x46, 0x54, 0x45, 0x52, 0x00, 0x00 - .global ov11_0231C268 -ov11_0231C268: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x41, 0x46, 0x54, 0x45, 0x52, 0x00, 0x00 - .global ov11_0231C27C -ov11_0231C27C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F, 0x53, 0x48, 0x55, 0x5F - .byte 0x44, 0x4F, 0x00, 0x00 - .global ov11_0231C290 -ov11_0231C290: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F - .byte 0x4B, 0x49, 0x5F, 0x44, 0x4F, 0x58, 0x00, 0x00 - .global ov11_0231C2A4 -ov11_0231C2A4: - .byte 0x47, 0x4F, 0x54, 0x4F, 0x5F, 0x44, 0x45, 0x42 - .byte 0x55, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 - .global ov11_0231C2B8 -ov11_0231C2B8: - .byte 0x53, 0x45, 0x54, 0x55 - .byte 0x50, 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x43, 0x41, 0x4D, 0x45, 0x52, 0x41, 0x00, 0x00 - .global ov11_0231C2CC -ov11_0231C2CC: - .byte 0x4F, 0x42, 0x4A, 0x45, 0x43, 0x54, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x4E, 0x4F, 0x52, 0x4D - .byte 0x41, 0x4C, 0x00, 0x00 - .global ov11_0231C2E0 -ov11_0231C2E0: - .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x46, 0x52, 0x45, 0x45, 0x5F, 0x44 - .byte 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 - .global ov11_0231C2F4 -ov11_0231C2F4: - .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x44, 0x45 - .byte 0x42, 0x55, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00 - .global ov11_0231C308 -ov11_0231C308: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x30, 0x43, 0x48, 0x4F, 0x55, 0x52, 0x45, 0x49, 0x00 - .global ov11_0231C31C -ov11_0231C31C: - .byte 0x4F, 0x42, 0x4A, 0x45, 0x43, 0x54, 0x5F, 0x52, 0x45, 0x50, 0x4C, 0x59, 0x5F, 0x4E, 0x4F, 0x52 - .byte 0x4D, 0x41, 0x4C, 0x00 - .global ov11_0231C330 -ov11_0231C330: - .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x41, 0x43, 0x54, 0x49, 0x4E, 0x47 - .byte 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00 - .global ov11_0231C344 -ov11_0231C344: - .byte 0x46, 0x41, 0x44, 0x45, 0x5F, 0x4F, 0x55, 0x54 - .byte 0x5F, 0x41, 0x4C, 0x4C, 0x5F, 0x42, 0x45, 0x46, 0x4F, 0x52, 0x45, 0x00 - .global ov11_0231C358 -ov11_0231C358: - .byte 0x47, 0x4F, 0x54, 0x4F - .byte 0x5F, 0x52, 0x45, 0x53, 0x43, 0x55, 0x45, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00 - .global ov11_0231C36C -ov11_0231C36C: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x53, 0x45, 0x43 - .byte 0x4F, 0x4E, 0x44, 0x00 - .global ov11_0231C380 -ov11_0231C380: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 - .byte 0x5F, 0x52, 0x45, 0x53, 0x55, 0x4D, 0x45, 0x00 - .global ov11_0231C394 -ov11_0231C394: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41 - .byte 0x5F, 0x59, 0x55, 0x5F, 0x53, 0x48, 0x55, 0x5F, 0x44, 0x4F, 0x58, 0x00 - .global ov11_0231C3A8 -ov11_0231C3A8: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x30, 0x59, 0x41, 0x52, 0x41, 0x52, 0x45, 0x54, 0x41 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C3C0 -ov11_0231C3C0: - .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47 - .byte 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C3D8 -ov11_0231C3D8: - .byte 0x4E, 0x4F, 0x52, 0x4D - .byte 0x41, 0x4C, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x54, 0x41, 0x4C, 0x4B - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C3F0 -ov11_0231C3F0: - .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x50, 0x41, 0x52, 0x54, 0x4E, 0x45, 0x52 - .byte 0x5F, 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C408 -ov11_0231C408: - .byte 0x47, 0x4F, 0x54, 0x4F - .byte 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C420 -ov11_0231C420: - .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x52, 0x45, 0x53, 0x43, 0x55, 0x45 - .byte 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C438 -ov11_0231C438: - .byte 0x47, 0x45, 0x54, 0x4F - .byte 0x55, 0x54, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5F, 0x52, 0x45, 0x54, 0x55, 0x52 - .byte 0x4E, 0x00, 0x00, 0x00 - .global ov11_0231C450 -ov11_0231C450: - .byte 0x50, 0x45, 0x52, 0x46, 0x4F, 0x52, 0x4D, 0x45, 0x52, 0x5F, 0x4D, 0x4F - .byte 0x56, 0x45, 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00, 0x00, 0x00 - .global ov11_0231C468 -ov11_0231C468: - .byte 0x50, 0x45, 0x52, 0x46 - .byte 0x4F, 0x52, 0x4D, 0x45, 0x52, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47 - .byte 0x45, 0x00, 0x00, 0x00 - .global ov11_0231C480 -ov11_0231C480: - .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F - .byte 0x44, 0x4F, 0x57, 0x4E, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00 - .global ov11_0231C498 -ov11_0231C498: - .byte 0x47, 0x4F, 0x54, 0x4F - .byte 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x41, 0x52, 0x49, 0x4F, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F - .byte 0x4E, 0x00, 0x00, 0x00 - .global ov11_0231C4B0 -ov11_0231C4B0: - .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F - .byte 0x4C, 0x45, 0x46, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00 - .global ov11_0231C4C8 -ov11_0231C4C8: - .byte 0x53, 0x4F, 0x52, 0x41 - .byte 0x4E, 0x4F, 0x49, 0x54, 0x41, 0x44, 0x41, 0x4B, 0x49, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x53, 0x45 - .byte 0x54, 0x00, 0x00, 0x00 - .global ov11_0231C4E0 -ov11_0231C4E0: - .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F - .byte 0x46, 0x41, 0x53, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00 - .global ov11_0231C4F8 -ov11_0231C4F8: - .byte 0x47, 0x4F, 0x54, 0x4F - .byte 0x5F, 0x54, 0x52, 0x41, 0x49, 0x4E, 0x49, 0x4E, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F - .byte 0x4E, 0x00, 0x00, 0x00 - .global ov11_0231C510 -ov11_0231C510: - .byte 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x42, 0x41, 0x53, 0x45, 0x5F, 0x46, 0x55 - .byte 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00 - .global ov11_0231C528 -ov11_0231C528: - .byte 0x45, 0x4E, 0x54, 0x45 - .byte 0x52, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F - .byte 0x4E, 0x00, 0x00, 0x00 - .global ov11_0231C540 -ov11_0231C540: - .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45 - .byte 0x53, 0x54, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 - .global ov11_0231C558 -ov11_0231C558: - .byte 0x4C, 0x4F, 0x4F, 0x4B - .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5F, 0x46, 0x55 - .byte 0x4E, 0x43, 0x00, 0x00 - .global ov11_0231C570 -ov11_0231C570: - .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x48, 0x41, 0x50, 0x50, 0x59, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00 - .global ov11_0231C588 -ov11_0231C588: - .byte 0x4A, 0x55, 0x4D, 0x50 - .byte 0x5F, 0x41, 0x4E, 0x47, 0x52, 0x59, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49 - .byte 0x45, 0x53, 0x00, 0x00 - .global ov11_0231C5A0 -ov11_0231C5A0: - .byte 0x48, 0x45, 0x41, 0x44, 0x5F, 0x53, 0x48, 0x41, 0x4B, 0x45, 0x5F, 0x46 - .byte 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00 - .global ov11_0231C5B8 -ov11_0231C5B8: - .byte 0x49, 0x4E, 0x49, 0x54 - .byte 0x5F, 0x53, 0x4C, 0x45, 0x45, 0x50, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49 - .byte 0x45, 0x53, 0x00, 0x00 - .global ov11_0231C5D0 -ov11_0231C5D0: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 - .byte 0x5F, 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00 - .global ov11_0231C5E8 -ov11_0231C5E8: - .byte 0x45, 0x4E, 0x54, 0x45 - .byte 0x52, 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x41, 0x52, 0x49, 0x4F, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45 - .byte 0x4F, 0x4E, 0x00, 0x00 - .global ov11_0231C600 -ov11_0231C600: - .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x54, 0x52, 0x41, 0x49, 0x4E, 0x49 - .byte 0x4E, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 - .global ov11_0231C618 -ov11_0231C618: - .byte 0x47, 0x45, 0x54, 0x4F - .byte 0x55, 0x54, 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x41, 0x52, 0x49, 0x4F, 0x5F, 0x44, 0x55, 0x4E, 0x47 - .byte 0x45, 0x4F, 0x4E, 0x00 - .global ov11_0231C630 -ov11_0231C630: - .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45 - .byte 0x53, 0x54, 0x5F, 0x43, 0x4F, 0x4E, 0x51, 0x55, 0x45, 0x53, 0x54, 0x00 - .global ov11_0231C648 -ov11_0231C648: - .byte 0x47, 0x45, 0x54, 0x4F - .byte 0x55, 0x54, 0x5F, 0x54, 0x52, 0x41, 0x49, 0x4E, 0x49, 0x4E, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47 - .byte 0x45, 0x4F, 0x4E, 0x00 - .global ov11_0231C660 -ov11_0231C660: - .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F - .byte 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00 - .global ov11_0231C678 -ov11_0231C678: - .byte 0x45, 0x58, 0x50, 0x4C - .byte 0x41, 0x4E, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52 - .byte 0x49, 0x45, 0x53, 0x00 - .global ov11_0231C690 -ov11_0231C690: - .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5F, 0x43, 0x4C, 0x4F, 0x53 - .byte 0x45, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231C6A8 -ov11_0231C6A8: - .byte 0x44, 0x45, 0x42, 0x55 - .byte 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x5F, 0x42 - .byte 0x49, 0x50, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C6C4 -ov11_0231C6C4: - .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x53, 0x55, 0x52 - .byte 0x50, 0x52, 0x49, 0x53, 0x45, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45 - .byte 0x53, 0x00, 0x00, 0x00 - .global ov11_0231C6E0 -ov11_0231C6E0: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53 - .byte 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x5F, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x00, 0x00, 0x00 - .global ov11_0231C6FC -ov11_0231C6FC: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49 - .byte 0x4E, 0x47, 0x5F, 0x43, 0x48, 0x41, 0x52, 0x4D, 0x53, 0x00, 0x00, 0x00 - .global ov11_0231C718 -ov11_0231C718: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x4E, 0x45, 0x58, 0x54, 0x5F, 0x44, 0x41 - .byte 0x59, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00 - .global ov11_0231C734 -ov11_0231C734: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C - .byte 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x5F, 0x50, 0x55, 0x50, 0x55, 0x52 - .byte 0x49, 0x4E, 0x00, 0x00 - .global ov11_0231C750 -ov11_0231C750: - .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 - .byte 0x5F, 0x4E, 0x45, 0x58, 0x54, 0x5F, 0x44, 0x41, 0x59, 0x32, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00 - .global ov11_0231C76C -ov11_0231C76C: - .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49 - .byte 0x4E, 0x47, 0x5F, 0x4B, 0x49, 0x4D, 0x41, 0x57, 0x41, 0x52, 0x49, 0x00 - .global ov11_0231C788 -ov11_0231C788: - .byte 0x4C, 0x4F, 0x4F, 0x4B - .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x44, 0x4F, 0x57, 0x4E, 0x5F, 0x46, 0x55, 0x4E - .byte 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C7A8 -ov11_0231C7A8: - .byte 0x4C, 0x4F, 0x4F, 0x4B - .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x4C, 0x45, 0x46, 0x54, 0x5F, 0x46, 0x55, 0x4E - .byte 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C7C8 -ov11_0231C7C8: - .byte 0x4C, 0x4F, 0x4F, 0x4B - .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x46, 0x41, 0x53, 0x54, 0x5F, 0x46, 0x55, 0x4E - .byte 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C7E8 -ov11_0231C7E8: - .byte 0x45, 0x56, 0x45, 0x4E - .byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4C - .byte 0x5F, 0x45, 0x50, 0x49, 0x53, 0x4F, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231C808 -ov11_0231C808: - .byte 0x4C, 0x4F, 0x4F, 0x4B - .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5F, 0x46, 0x55 - .byte 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00 - .global C_ROUTINES -C_ROUTINES: - .byte 0x00, 0x00, 0x04, 0x00 - .word ov11_02319B28 - .byte 0x01, 0x00, 0x04, 0x00 - .word ov11_0231BE60 - .byte 0x02, 0x00, 0x04, 0x00 - .word ov11_0231C3D8 - .byte 0x03, 0x00, 0x04, 0x00 - .word ov11_0231C1F0 - .byte 0x04, 0x00, 0x04, 0x00 - .word ov11_02319D08 - .byte 0x05, 0x00, 0x04, 0x00 - .word ov11_0231C31C - .byte 0x06, 0x00, 0x04, 0x00 - .word ov11_0231C330 - .byte 0x07, 0x00, 0x04, 0x00 - .word ov11_0231BE70 - .byte 0x08, 0x00, 0x04, 0x00 - .word ov11_02319B34 - .byte 0x09, 0x00, 0x04, 0x00 - .word ov11_0231BC70 - .byte 0x0A, 0x00, 0x04, 0x00 - .word ov11_0231BC20 - .byte 0x0B, 0x00, 0x04, 0x00 - .word ov11_0231C3F0 - .byte 0x0C, 0x00, 0x05, 0x00 - .word ov11_0231C164 - .byte 0x0D, 0x00, 0x05, 0x00 - .word ov11_0231C178 - .byte 0x0E, 0x00, 0x05, 0x00 - .word ov11_0231C0B0 - .byte 0x0F, 0x00, 0x05, 0x00 - .word ov11_0231C2CC - .byte 0x10, 0x00, 0x05, 0x00 - .word ov11_0231C204 - .byte 0x11, 0x00, 0x05, 0x00 - .word ov11_0231C450 - .byte 0x12, 0x00, 0x05, 0x00 - .word ov11_0231C468 - .byte 0x13, 0x00, 0x05, 0x00 - .word ov11_02319B40 - .byte 0x14, 0x00, 0x05, 0x00 - .word ov11_02319BF4 - .byte 0x15, 0x00, 0x05, 0x00 - .word ov11_02319B4C - .byte 0x16, 0x00, 0x05, 0x00 - .word ov11_02319B94 - .byte 0x17, 0x00, 0x05, 0x00 - .word ov11_02319CCC - .byte 0x18, 0x00, 0x05, 0x00 - .word ov11_02319BD0 - .byte 0x19, 0x00, 0x05, 0x00 - .word ov11_02319BDC - .byte 0x1A, 0x00, 0x09, 0x00 - .word ov11_02319D14 - .byte 0x1B, 0x00, 0x09, 0x00 - .word ov11_0231C218 - .byte 0x1C, 0x00, 0x09, 0x00 - .word ov11_0231C0C4 - .byte 0x1D, 0x00, 0x09, 0x00 - .word ov11_0231C660 - .byte 0x1E, 0x00, 0x09, 0x00 - .word ov11_0231C480 - .byte 0x1F, 0x00, 0x09, 0x00 - .word ov11_0231C788 - .byte 0x20, 0x00, 0x09, 0x00 - .word ov11_0231C558 - .byte 0x21, 0x00, 0x09, 0x00 - .word ov11_0231C808 - .byte 0x22, 0x00, 0x09, 0x00 - .word ov11_0231C4B0 - .byte 0x23, 0x00, 0x09, 0x00 - .word ov11_0231C7A8 - .byte 0x24, 0x00, 0x09, 0x00 - .word ov11_0231BE80 - .byte 0x25, 0x00, 0x09, 0x00 - .word ov11_0231C570 - .byte 0x26, 0x00, 0x09, 0x00 - .word ov11_0231C22C - .byte 0x27, 0x00, 0x09, 0x00 - .word ov11_0231C6C4 - .byte 0x28, 0x00, 0x09, 0x00 - .word ov11_0231BE90 - .byte 0x29, 0x00, 0x09, 0x00 - .word ov11_0231C588 - .byte 0x2A, 0x00, 0x09, 0x00 - .word ov11_0231C4E0 - .byte 0x2B, 0x00, 0x09, 0x00 - .word ov11_0231C7C8 - .byte 0x2C, 0x00, 0x09, 0x00 - .word ov11_0231BEB0 - .byte 0x2D, 0x00, 0x09, 0x00 - .word ov11_0231C5A0 - .byte 0x2E, 0x00, 0x09, 0x00 - .word ov11_0231C0D8 - .byte 0x2F, 0x00, 0x09, 0x00 - .word ov11_0231C678 - .byte 0x30, 0x00, 0x08, 0x00 - .word ov11_0231BEC0 - .byte 0x31, 0x00, 0x08, 0x00 - .word ov11_0231C5B8 - .byte 0x32, 0x00, 0x08, 0x00 - .word ov11_0231BC30 - .byte 0x33, 0x00, 0x08, 0x00 - .word ov11_0231C510 - .byte 0x34, 0x00, 0x07, 0x00 - .word ov11_0231C0EC - .byte 0x35, 0x00, 0x07, 0x00 - .word ov11_0231BC40 - .byte 0x36, 0x00, 0x07, 0x00 - .word ov11_0231A410 - .byte 0x37, 0x00, 0x07, 0x00 - .word ov11_0231BB60 - .byte 0x38, 0x00, 0x07, 0x00 - .word ov11_0231BED0 - .byte 0x39, 0x00, 0x07, 0x00 - .word ov11_0231BEE0 - .byte 0x3A, 0x00, 0x09, 0x00 - .word ov11_0231C100 - .byte 0x3B, 0x00, 0x09, 0x00 - .word ov11_0231C114 - .byte 0x3C, 0x00, 0x07, 0x00 - .word ov11_0231AD00 - .byte 0x3D, 0x00, 0x07, 0x00 - .word ov11_0231C18C - .byte 0x3E, 0x00, 0x07, 0x00 - .word ov11_0231C5D0 - .byte 0x3F, 0x00, 0x07, 0x00 - .word ov11_0231C718 - .byte 0x40, 0x00, 0x07, 0x00 - .word ov11_0231C750 - .byte 0x41, 0x00, 0x07, 0x00 - .word ov11_0231C240 - .byte 0x42, 0x00, 0x07, 0x00 - .word ov11_0231C36C - .byte 0x43, 0x00, 0x07, 0x00 - .word ov11_0231C268 - .byte 0x44, 0x00, 0x07, 0x00 - .word ov11_0231C380 - .byte 0x45, 0x00, 0x07, 0x00 - .word ov11_0231C7E8 - .byte 0x46, 0x00, 0x07, 0x00 - .word ov11_0231A250 - .byte 0x47, 0x00, 0x07, 0x00 - .word ov11_02319CC0 - .byte 0x48, 0x00, 0x07, 0x00 - .word ov11_02319CD8 - .byte 0x49, 0x00, 0x07, 0x00 - .word ov11_0231C6A8 - .byte 0x4A, 0x00, 0x07, 0x00 - .word ov11_0231C734 - .byte 0x4B, 0x00, 0x07, 0x00 - .word ov11_0231C6E0 - .byte 0x4C, 0x00, 0x07, 0x00 - .word ov11_0231C6FC - .byte 0x4D, 0x00, 0x07, 0x00 - .word ov11_0231C76C - .byte 0x4E, 0x00, 0x0A, 0x00 - .word ov11_02319B0C - .byte 0x4F, 0x00, 0x0A, 0x00 - .word ov11_02319AF4 - .byte 0x50, 0x00, 0x0A, 0x00 - .word ov11_02319B04 - .byte 0x51, 0x00, 0x0A, 0x00 - .word ov11_02319AFC - .byte 0x52, 0x00, 0x0A, 0x00 - .word C_ROUTINE_NAMES - .byte 0x53, 0x00, 0x0A, 0x00 - .word ov11_02319B14 - .byte 0x54, 0x00, 0x0A, 0x00 - .word ov11_0231BB50 - .byte 0x55, 0x00, 0x0A, 0x00 - .word ov11_0231BC50 - .byte 0x56, 0x00, 0x0A, 0x00 - .word ov11_0231C1A0 - .byte 0x57, 0x00, 0x0A, 0x00 - .word ov11_0231BF30 - .byte 0x58, 0x00, 0x0A, 0x00 - .word ov11_0231C27C - .byte 0x59, 0x00, 0x0A, 0x00 - .word ov11_0231ABE0 - .byte 0x5A, 0x00, 0x0A, 0x00 - .word ov11_0231BF40 - .byte 0x5B, 0x00, 0x0A, 0x00 - .word ov11_02319CF0 - .byte 0x5C, 0x00, 0x0A, 0x00 - .word ov11_0231BF60 - .byte 0x5D, 0x00, 0x0A, 0x00 - .word ov11_0231C290 - .byte 0x5E, 0x00, 0x0A, 0x00 - .word ov11_0231C128 - .byte 0x5F, 0x00, 0x0A, 0x00 - .word ov11_0231C394 - .byte 0x60, 0x00, 0x0A, 0x00 - .word ov11_0231BB70 - .byte 0x61, 0x00, 0x0A, 0x00 - .word ov11_0231AA80 - .byte 0x62, 0x00, 0x0A, 0x00 - .word ov11_0231BC60 - .byte 0x63, 0x00, 0x0A, 0x00 - .word ov11_0231A930 - .byte 0x64, 0x00, 0x0A, 0x00 - .word ov11_0231A340 - .byte 0x65, 0x00, 0x0A, 0x00 - .word ov11_0231A360 - .byte 0x66, 0x00, 0x0A, 0x00 - .word ov11_0231AD40 - .byte 0x67, 0x00, 0x0A, 0x00 - .word ov11_0231A390 - .byte 0x68, 0x00, 0x0A, 0x00 - .word ov11_0231AD90 - .byte 0x69, 0x00, 0x0A, 0x00 - .word ov11_0231A3C0 - .byte 0x6A, 0x00, 0x0A, 0x00 - .word ov11_0231A310 - .byte 0x6B, 0x00, 0x0A, 0x00 - .word ov11_0231A370 - .byte 0x6C, 0x00, 0x0A, 0x00 - .word ov11_0231AA00 - .byte 0x6D, 0x00, 0x0A, 0x00 - .word ov11_0231BA00 - .byte 0x6E, 0x00, 0x0A, 0x00 - .word ov11_0231A440 - .byte 0x6F, 0x00, 0x0A, 0x00 - .word ov11_0231BF80 - .byte 0x70, 0x00, 0x0A, 0x00 - .word ov11_0231A270 - .byte 0x71, 0x00, 0x0A, 0x00 - .word ov11_0231A290 - .byte 0x72, 0x00, 0x0A, 0x00 - .word ov11_0231A2A0 - .byte 0x73, 0x00, 0x0A, 0x00 - .word ov11_0231A4B0 - .byte 0x74, 0x00, 0x0A, 0x00 - .word ov11_0231BF90 - .byte 0x75, 0x00, 0x0A, 0x00 - .word ov11_0231BFA0 - .byte 0x76, 0x00, 0x0A, 0x00 - .word ov11_0231BFB0 - .byte 0x77, 0x00, 0x0A, 0x00 - .word ov11_0231C13C - .byte 0x78, 0x00, 0x0A, 0x00 - .word ov11_0231BB80 - .byte 0x79, 0x00, 0x0A, 0x00 - .word ov11_0231BFC0 - .byte 0x7A, 0x00, 0x0A, 0x00 - .word ov11_0231BB90 - .byte 0x7B, 0x00, 0x0A, 0x00 - .word ov11_02319EA0 - .byte 0x7C, 0x00, 0x0A, 0x00 - .word ov11_02319E80 - .byte 0x7D, 0x00, 0x0A, 0x00 - .word ov11_0231AAA0 - .byte 0x7E, 0x00, 0x0A, 0x00 - .word ov11_0231BFD0 - .byte 0x7F, 0x00, 0x0A, 0x00 - .word ov11_0231BBA0 - .byte 0x80, 0x00, 0x0A, 0x00 - .word ov11_0231BBB0 - .byte 0x81, 0x00, 0x0A, 0x00 - .word ov11_0231A090 - .byte 0x82, 0x00, 0x0A, 0x00 - .word ov11_0231BFF0 - .byte 0x83, 0x00, 0x0A, 0x00 - .word ov11_0231A0E0 - .byte 0x84, 0x00, 0x0A, 0x00 - .word ov11_0231C010 - .byte 0x85, 0x00, 0x0A, 0x00 - .word ov11_0231C020 - .byte 0x86, 0x00, 0x0A, 0x00 - .word ov11_0231ABB0 - .byte 0x87, 0x00, 0x0A, 0x00 - .word ov11_02319EE0 - .byte 0x88, 0x00, 0x0A, 0x00 - .word ov11_0231A120 - .byte 0x89, 0x00, 0x0A, 0x00 - .word ov11_0231C030 - .byte 0x8A, 0x00, 0x0A, 0x00 - .word ov11_0231AB90 - .byte 0x8B, 0x00, 0x0A, 0x00 - .word ov11_0231A160 - .byte 0x8C, 0x00, 0x0A, 0x00 - .word ov11_02319DA0 - .byte 0x8D, 0x00, 0x0A, 0x00 - .word ov11_02319D90 - .byte 0x8E, 0x00, 0x0A, 0x00 - .word ov11_02319D50 - .byte 0x8F, 0x00, 0x0A, 0x00 - .word ov11_0231C040 - .byte 0x90, 0x00, 0x0A, 0x00 - .word ov11_0231A1A0 - .byte 0x91, 0x00, 0x0A, 0x00 - .word ov11_0231A1C0 - .byte 0x92, 0x00, 0x0A, 0x00 - .word ov11_0231AB80 - .byte 0x93, 0x00, 0x0A, 0x00 - .word ov11_02319DF0 - .byte 0x94, 0x00, 0x0A, 0x00 - .word ov11_0231C050 - .byte 0x95, 0x00, 0x0A, 0x00 - .word ov11_0231A330 - .byte 0x96, 0x00, 0x0A, 0x00 - .word ov11_0231ACF0 - .byte 0x97, 0x00, 0x0A, 0x00 - .word ov11_0231C060 - .byte 0x98, 0x00, 0x0A, 0x00 - .word ov11_0231AE30 - .byte 0x99, 0x00, 0x0A, 0x00 - .word ov11_0231A220 - .byte 0x9A, 0x00, 0x0A, 0x00 - .word ov11_0231C070 - .byte 0x9B, 0x00, 0x0A, 0x00 - .word ov11_0231A260 - .byte 0x9C, 0x00, 0x0A, 0x00 - .word ov11_0231AB60 - .byte 0x9D, 0x00, 0x0A, 0x00 - .word ov11_02319E60 - .byte 0x9E, 0x00, 0x0A, 0x00 - .word ov11_02319D40 - .byte 0x9F, 0x00, 0x0A, 0x00 - .word ov11_02319E70 - .byte 0xA0, 0x00, 0x0A, 0x00 - .word ov11_0231AFA0 - .byte 0xA1, 0x00, 0x0A, 0x00 - .word ov11_0231BA30 - .byte 0xA2, 0x00, 0x0A, 0x00 - .word ov11_0231AA40 - .byte 0xA3, 0x00, 0x0A, 0x00 - .word ov11_0231AAC0 - .byte 0xA4, 0x00, 0x0A, 0x00 - .word ov11_0231A380 - .byte 0xA5, 0x00, 0x0A, 0x00 - .word ov11_0231A320 - .byte 0xA6, 0x00, 0x0A, 0x00 - .word ov11_0231B1F0 - .byte 0xA7, 0x00, 0x0A, 0x00 - .word ov11_0231C080 - .byte 0xA8, 0x00, 0x0A, 0x00 - .word ov11_0231BA70 - .byte 0xA9, 0x00, 0x0A, 0x00 - .word ov11_0231A2F0 - .byte 0xAA, 0x00, 0x0A, 0x00 - .word ov11_0231B310 - .byte 0xAB, 0x00, 0x0A, 0x00 - .word ov11_02319F30 - .byte 0xAC, 0x00, 0x0A, 0x00 - .word ov11_0231A1F0 - .byte 0xAD, 0x00, 0x0A, 0x00 - .word ov11_0231B430 - .byte 0xAE, 0x00, 0x0A, 0x00 - .word ov11_0231B440 - .byte 0xAF, 0x00, 0x0A, 0x00 - .word ov11_02319EF0 - .byte 0xB0, 0x00, 0x0A, 0x00 - .word ov11_02319DD0 - .byte 0xB1, 0x00, 0x0A, 0x00 - .word ov11_02319D20 - .byte 0xB2, 0x00, 0x0A, 0x00 - .word ov11_0231C090 - .byte 0xB3, 0x00, 0x0A, 0x00 - .word ov11_02319E00 - .byte 0xB4, 0x00, 0x0A, 0x00 - .word ov11_02319F00 - .byte 0xB5, 0x00, 0x0A, 0x00 - .word ov11_0231BA80 - .byte 0xB6, 0x00, 0x0A, 0x00 - .word ov11_0231B630 - .byte 0xB7, 0x00, 0x0A, 0x00 - .word ov11_0231BA60 - .byte 0xB8, 0x00, 0x0A, 0x00 - .word ov11_0231C0A0 - .byte 0xB9, 0x00, 0x0A, 0x00 - .word ov11_0231BA40 - .byte 0xBA, 0x00, 0x0A, 0x00 - .word ov11_0231B7F0 - .byte 0xBB, 0x00, 0x0A, 0x00 - .word ov11_0231BBC0 - .byte 0xBC, 0x00, 0x0A, 0x00 - .word ov11_0231BBD0 - .byte 0xBD, 0x00, 0x0A, 0x00 - .word ov11_0231B880 - .byte 0xBE, 0x00, 0x0A, 0x00 - .word ov11_0231B950 - .byte 0xBF, 0x00, 0x0A, 0x00 - .word ov11_0231B9E0 - .byte 0xC0, 0x00, 0x0A, 0x00 - .word ov11_0231B9D0 - .byte 0xC1, 0x00, 0x0A, 0x00 - .word ov11_0231B9C0 - .byte 0xC2, 0x00, 0x0A, 0x00 - .word ov11_0231B9B0 - .byte 0xC3, 0x00, 0x0A, 0x00 - .word ov11_0231BC90 - .byte 0xC4, 0x00, 0x0A, 0x00 - .word ov11_0231B990 - .byte 0xC5, 0x00, 0x0A, 0x00 - .word ov11_0231A9B0 - .byte 0xC6, 0x00, 0x0A, 0x00 - .word ov11_0231A1D0 - .byte 0xC7, 0x00, 0x0A, 0x00 - .word ov11_0231B960 - .byte 0xC8, 0x00, 0x0A, 0x00 - .word ov11_0231BA90 - .byte 0xC9, 0x00, 0x0A, 0x00 - .word ov11_0231BAA0 - .byte 0xCA, 0x00, 0x0A, 0x00 - .word ov11_0231B930 - .byte 0xCB, 0x00, 0x0A, 0x00 - .word ov11_0231B920 - .byte 0xCC, 0x00, 0x0A, 0x00 - .word ov11_0231B910 - .byte 0xCD, 0x00, 0x0A, 0x00 - .word ov11_0231B900 - .byte 0xCE, 0x00, 0x0A, 0x00 - .word ov11_0231B8F0 - .byte 0xCF, 0x00, 0x0A, 0x00 - .word ov11_0231BAB0 - .byte 0xD0, 0x00, 0x0A, 0x00 - .word ov11_0231BAC0 - .byte 0xD1, 0x00, 0x0A, 0x00 - .word ov11_0231B8C0 - .byte 0xD2, 0x00, 0x0A, 0x00 - .word ov11_0231B8B0 - .byte 0xD3, 0x00, 0x0A, 0x00 - .word ov11_0231B8A0 - .byte 0xD4, 0x00, 0x0A, 0x00 - .word ov11_0231B890 - .byte 0xD5, 0x00, 0x0A, 0x00 - .word ov11_0231A190 - .byte 0xD6, 0x00, 0x0A, 0x00 - .word ov11_0231BCA0 - .byte 0xD7, 0x00, 0x0A, 0x00 - .word ov11_0231B860 - .byte 0xD8, 0x00, 0x0A, 0x00 - .word ov11_0231B850 - .byte 0xD9, 0x00, 0x0A, 0x00 - .word ov11_0231B840 - .byte 0xDA, 0x00, 0x0A, 0x00 - .word ov11_0231B830 - .byte 0xDB, 0x00, 0x0A, 0x00 - .word ov11_0231B820 - .byte 0xDC, 0x00, 0x0A, 0x00 - .word ov11_0231B810 - .byte 0xDD, 0x00, 0x0A, 0x00 - .word ov11_0231A8F0 - .byte 0xDE, 0x00, 0x0A, 0x00 - .word ov11_0231A170 - .byte 0xDF, 0x00, 0x0A, 0x00 - .word ov11_0231B7E0 - .byte 0xE0, 0x00, 0x0A, 0x00 - .word ov11_0231BCD0 - .byte 0xE1, 0x00, 0x0A, 0x00 - .word ov11_0231B7C0 - .byte 0xE2, 0x00, 0x0A, 0x00 - .word ov11_0231B7B0 - .byte 0xE3, 0x00, 0x0A, 0x00 - .word ov11_0231B7A0 - .byte 0xE4, 0x00, 0x0A, 0x00 - .word ov11_0231B790 - .byte 0xE5, 0x00, 0x0A, 0x00 - .word ov11_0231B780 - .byte 0xE6, 0x00, 0x0A, 0x00 - .word ov11_0231BCE0 - .byte 0xE7, 0x00, 0x0A, 0x00 - .word ov11_0231B760 - .byte 0xE8, 0x00, 0x0A, 0x00 - .word ov11_0231B750 - .byte 0xE9, 0x00, 0x0A, 0x00 - .word ov11_0231BCF0 - .byte 0xEA, 0x00, 0x0A, 0x00 - .word ov11_0231A890 - .byte 0xEB, 0x00, 0x0A, 0x00 - .word ov11_0231B720 - .byte 0xEC, 0x00, 0x0A, 0x00 - .word ov11_0231B710 - .byte 0xED, 0x00, 0x0A, 0x00 - .word ov11_0231B700 - .byte 0xEE, 0x00, 0x0A, 0x00 - .word ov11_0231B6F0 - .byte 0xEF, 0x00, 0x0A, 0x00 - .word ov11_0231BD00 - .byte 0xF0, 0x00, 0x0A, 0x00 - .word ov11_0231A860 - .byte 0xF1, 0x00, 0x0A, 0x00 - .word ov11_0231B6C0 - .byte 0xF2, 0x00, 0x0A, 0x00 - .word ov11_0231B6B0 - .byte 0xF3, 0x00, 0x0A, 0x00 - .word ov11_0231B6A0 - .byte 0xF4, 0x00, 0x0A, 0x00 - .word ov11_0231B690 - .byte 0xF5, 0x00, 0x0A, 0x00 - .word ov11_0231B680 - .byte 0xF6, 0x00, 0x0A, 0x00 - .word ov11_0231B670 - .byte 0xF7, 0x00, 0x0A, 0x00 - .word ov11_0231BD20 - .byte 0xF8, 0x00, 0x0A, 0x00 - .word ov11_0231BD30 - .byte 0xF9, 0x00, 0x0A, 0x00 - .word ov11_0231B640 - .byte 0xFA, 0x00, 0x0A, 0x00 - .word ov11_0231A810 - .byte 0xFB, 0x00, 0x0A, 0x00 - .word ov11_0231B620 - .byte 0xFC, 0x00, 0x0A, 0x00 - .word ov11_0231BD40 - .byte 0xFD, 0x00, 0x0A, 0x00 - .word ov11_0231B600 - .byte 0xFE, 0x00, 0x0A, 0x00 - .word ov11_0231A7F0 - .byte 0xFF, 0x00, 0x0A, 0x00 - .word ov11_0231B5E0 - .byte 0x00, 0x01, 0x0A, 0x00 - .word ov11_0231BD50 - .byte 0x01, 0x01, 0x0A, 0x00 - .word ov11_0231B5C0 - .byte 0x02, 0x01, 0x0A, 0x00 - .word ov11_0231B5B0 - .byte 0x03, 0x01, 0x0A, 0x00 - .word ov11_0231BD60 - .byte 0x04, 0x01, 0x0A, 0x00 - .word ov11_0231BD70 - .byte 0x05, 0x01, 0x0A, 0x00 - .word ov11_0231B580 - .byte 0x06, 0x01, 0x0A, 0x00 - .word ov11_0231A7B0 - .byte 0x07, 0x01, 0x0A, 0x00 - .word ov11_0231B560 - .byte 0x08, 0x01, 0x0A, 0x00 - .word ov11_0231BD80 - .byte 0x09, 0x01, 0x0A, 0x00 - .word ov11_0231B540 - .byte 0x0A, 0x01, 0x0A, 0x00 - .word ov11_0231B530 - .byte 0x0B, 0x01, 0x0A, 0x00 - .word ov11_0231B520 - .byte 0x0C, 0x01, 0x0A, 0x00 - .word ov11_0231B510 - .byte 0x0D, 0x01, 0x0A, 0x00 - .word ov11_0231B500 - .byte 0x0E, 0x01, 0x0A, 0x00 - .word ov11_0231A770 - .byte 0x0F, 0x01, 0x0A, 0x00 - .word ov11_0231BD90 - .byte 0x10, 0x01, 0x0A, 0x00 - .word ov11_0231A760 - .byte 0x11, 0x01, 0x0A, 0x00 - .word ov11_0231BDA0 - .byte 0x12, 0x01, 0x0A, 0x00 - .word ov11_0231B4B0 - .byte 0x13, 0x01, 0x0A, 0x00 - .word ov11_0231BAD0 - .byte 0x14, 0x01, 0x0A, 0x00 - .word ov11_0231BAE0 - .byte 0x15, 0x01, 0x0A, 0x00 - .word ov11_0231B480 - .byte 0x16, 0x01, 0x0A, 0x00 - .word ov11_0231B470 - .byte 0x17, 0x01, 0x0A, 0x00 - .word ov11_0231B460 - .byte 0x18, 0x01, 0x0A, 0x00 - .word ov11_0231B450 - .byte 0x19, 0x01, 0x0A, 0x00 - .word ov11_0231BDB0 - .byte 0x1A, 0x01, 0x0A, 0x00 - .word ov11_0231BDC0 - .byte 0x1B, 0x01, 0x0A, 0x00 - .word ov11_0231B420 - .byte 0x1C, 0x01, 0x0A, 0x00 - .word ov11_0231B410 - .byte 0x1D, 0x01, 0x0A, 0x00 - .word ov11_0231B400 - .byte 0x1E, 0x01, 0x0A, 0x00 - .word ov11_0231A6F0 - .byte 0x1F, 0x01, 0x0A, 0x00 - .word ov11_0231B3E0 - .byte 0x20, 0x01, 0x0A, 0x00 - .word ov11_0231B3D0 - .byte 0x21, 0x01, 0x0A, 0x00 - .word ov11_0231B3C0 - .byte 0x22, 0x01, 0x0A, 0x00 - .word ov11_0231B3B0 - .byte 0x23, 0x01, 0x0A, 0x00 - .word ov11_0231BDD0 - .byte 0x24, 0x01, 0x0A, 0x00 - .word ov11_0231B390 - .byte 0x25, 0x01, 0x0A, 0x00 - .word ov11_0231B380 - .byte 0x26, 0x01, 0x0A, 0x00 - .word ov11_0231A6B0 - .byte 0x27, 0x01, 0x0A, 0x00 - .word ov11_0231B360 - .byte 0x28, 0x01, 0x0A, 0x00 - .word ov11_0231B350 - .byte 0x29, 0x01, 0x0A, 0x00 - .word ov11_0231B340 - .byte 0x2A, 0x01, 0x0A, 0x00 - .word ov11_0231B330 - .byte 0x2B, 0x01, 0x0A, 0x00 - .word ov11_0231BDF0 - .byte 0x2C, 0x01, 0x0A, 0x00 - .word ov11_0231A680 - .byte 0x2D, 0x01, 0x0A, 0x00 - .word ov11_0231B300 - .byte 0x2E, 0x01, 0x0A, 0x00 - .word ov11_0231A670 - .byte 0x2F, 0x01, 0x0A, 0x00 - .word ov11_0231B2E0 - .byte 0x30, 0x01, 0x0A, 0x00 - .word ov11_0231B2D0 - .byte 0x31, 0x01, 0x0A, 0x00 - .word ov11_0231B2C0 - .byte 0x32, 0x01, 0x0A, 0x00 - .word ov11_0231B2B0 - .byte 0x33, 0x01, 0x0A, 0x00 - .word ov11_0231B2A0 - .byte 0x34, 0x01, 0x0A, 0x00 - .word ov11_0231BE10 - .byte 0x35, 0x01, 0x0A, 0x00 - .word ov11_0231B280 - .byte 0x36, 0x01, 0x0A, 0x00 - .word ov11_0231A630 - .byte 0x37, 0x01, 0x0A, 0x00 - .word ov11_0231B260 - .byte 0x38, 0x01, 0x0A, 0x00 - .word ov11_0231B250 - .byte 0x39, 0x01, 0x0A, 0x00 - .word ov11_0231B240 - .byte 0x3A, 0x01, 0x0A, 0x00 - .word ov11_0231A610 - .byte 0x3B, 0x01, 0x0A, 0x00 - .word ov11_0231B220 - .byte 0x3C, 0x01, 0x0A, 0x00 - .word ov11_0231B210 - .byte 0x3D, 0x01, 0x0A, 0x00 - .word ov11_0231B200 - .byte 0x3E, 0x01, 0x0A, 0x00 - .word ov11_0231A5F0 - .byte 0x3F, 0x01, 0x0A, 0x00 - .word ov11_0231B1E0 - .byte 0x40, 0x01, 0x0A, 0x00 - .word ov11_0231B1D0 - .byte 0x41, 0x01, 0x0A, 0x00 - .word ov11_0231B1C0 - .byte 0x42, 0x01, 0x0A, 0x00 - .word ov11_0231B1B0 - .byte 0x43, 0x01, 0x0A, 0x00 - .word ov11_0231B1A0 - .byte 0x44, 0x01, 0x0A, 0x00 - .word ov11_0231B190 - .byte 0x45, 0x01, 0x0A, 0x00 - .word ov11_0231B180 - .byte 0x46, 0x01, 0x0A, 0x00 - .word ov11_0231A5B0 - .byte 0x47, 0x01, 0x0A, 0x00 - .word ov11_0231B160 - .byte 0x48, 0x01, 0x0A, 0x00 - .word ov11_0231B150 - .byte 0x49, 0x01, 0x0A, 0x00 - .word ov11_0231B140 - .byte 0x4A, 0x01, 0x0A, 0x00 - .word ov11_0231B130 - .byte 0x4B, 0x01, 0x0A, 0x00 - .word ov11_0231B120 - .byte 0x4C, 0x01, 0x0A, 0x00 - .word ov11_0231B110 - .byte 0x4D, 0x01, 0x0A, 0x00 - .word ov11_0231B100 - .byte 0x4E, 0x01, 0x0A, 0x00 - .word ov11_0231B0F0 - .byte 0x4F, 0x01, 0x0A, 0x00 - .word ov11_0231B0E0 - .byte 0x50, 0x01, 0x0A, 0x00 - .word ov11_0231BE40 - .byte 0x51, 0x01, 0x0A, 0x00 - .word ov11_0231B0C0 - .byte 0x52, 0x01, 0x0A, 0x00 - .word ov11_0231B0B0 - .byte 0x53, 0x01, 0x0A, 0x00 - .word ov11_0231B0A0 - .byte 0x54, 0x01, 0x0A, 0x00 - .word ov11_0231B090 - .byte 0x55, 0x01, 0x0A, 0x00 - .word ov11_0231B080 - .byte 0x56, 0x01, 0x0A, 0x00 - .word ov11_0231B070 - .byte 0x57, 0x01, 0x0A, 0x00 - .word ov11_0231B060 - .byte 0x58, 0x01, 0x0A, 0x00 - .word ov11_0231BE50 - .byte 0x59, 0x01, 0x0A, 0x00 - .word ov11_0231B040 - .byte 0x5A, 0x01, 0x0A, 0x00 - .word ov11_0231A510 - .byte 0x5B, 0x01, 0x0A, 0x00 - .word ov11_0231B020 - .byte 0x5C, 0x01, 0x0A, 0x00 - .word ov11_0231B010 - .byte 0x5D, 0x01, 0x0A, 0x00 - .word ov11_0231B000 - .byte 0x5E, 0x01, 0x0A, 0x00 - .word ov11_0231AFF0 - .byte 0x5F, 0x01, 0x0A, 0x00 - .word ov11_0231AFE0 - .byte 0x60, 0x01, 0x0A, 0x00 - .word ov11_0231AE00 - .byte 0x61, 0x01, 0x0A, 0x00 - .word ov11_0231AE40 - .byte 0x62, 0x01, 0x0A, 0x00 - .word ov11_0231A3B0 - .byte 0x63, 0x01, 0x0A, 0x00 - .word ov11_0231ADE0 - .byte 0x64, 0x01, 0x0A, 0x00 - .word ov11_0231AEB0 - .byte 0x65, 0x01, 0x0A, 0x00 - .word ov11_0231AB50 - .byte 0x66, 0x01, 0x0A, 0x00 - .word ov11_0231A420 - .byte 0x67, 0x01, 0x0A, 0x00 - .word ov11_02319E90 - .byte 0x68, 0x01, 0x0A, 0x00 - .word ov11_02319D70 - .byte 0x69, 0x01, 0x0A, 0x00 - .word ov11_0231AF40 - .byte 0x6A, 0x01, 0x0A, 0x00 - .word ov11_0231AF30 - .byte 0x6B, 0x01, 0x0A, 0x00 - .word ov11_0231AF20 - .byte 0x6C, 0x01, 0x0A, 0x00 - .word ov11_0231AF10 - .byte 0x6D, 0x01, 0x0A, 0x00 - .word ov11_0231A820 - .byte 0x6E, 0x01, 0x0A, 0x00 - .word ov11_0231A460 - .byte 0x6F, 0x01, 0x0A, 0x00 - .word ov11_0231AF60 - .byte 0x70, 0x01, 0x0A, 0x00 - .word ov11_0231AF00 - .byte 0x71, 0x01, 0x0A, 0x00 - .word ov11_0231A450 - .byte 0x72, 0x01, 0x0A, 0x00 - .word ov11_0231A3D0 - .byte 0x73, 0x01, 0x0A, 0x00 - .word ov11_0231A200 - .byte 0x74, 0x01, 0x0A, 0x00 - .word ov11_0231A4E0 - .byte 0x75, 0x01, 0x0A, 0x00 - .word ov11_0231A100 - .byte 0x76, 0x01, 0x0A, 0x00 - .word ov11_0231AAE0 - .byte 0x77, 0x01, 0x0A, 0x00 - .word ov11_0231AF70 - .byte 0x78, 0x01, 0x0A, 0x00 - .word ov11_0231A400 - .byte 0x79, 0x01, 0x0A, 0x00 - .word ov11_0231AA30 - .byte 0x7A, 0x01, 0x0A, 0x00 - .word ov11_02319EB0 - .byte 0x7B, 0x01, 0x0A, 0x00 - .word ov11_0231A3E0 - .byte 0x7C, 0x01, 0x0A, 0x00 - .word ov11_0231ADA0 - .byte 0x7D, 0x01, 0x0A, 0x00 - .word ov11_0231AD30 - .byte 0x7E, 0x01, 0x0A, 0x00 - .word ov11_0231A3F0 - .byte 0x7F, 0x01, 0x0A, 0x00 - .word ov11_0231AE20 - .byte 0x80, 0x01, 0x0A, 0x00 - .word ov11_0231AD10 - .byte 0x81, 0x01, 0x0A, 0x00 - .word ov11_0231ADC0 - .byte 0x82, 0x01, 0x0A, 0x00 - .word ov11_0231AD20 - .byte 0x83, 0x01, 0x0A, 0x00 - .word ov11_0231BEF0 - .byte 0x84, 0x01, 0x0A, 0x00 - .word ov11_0231A040 - .byte 0x85, 0x01, 0x0A, 0x00 - .word ov11_0231BF10 - .byte 0x86, 0x01, 0x0A, 0x00 - .word ov11_0231A2C0 - .byte 0x87, 0x01, 0x0A, 0x00 - .word ov11_0231AD60 - .byte 0x88, 0x01, 0x0A, 0x00 - .word ov11_0231AD50 - .byte 0x89, 0x01, 0x0A, 0x00 - .word ov11_0231AE10 - .byte 0x8A, 0x01, 0x0A, 0x00 - .word ov11_0231AB00 - .byte 0x8B, 0x01, 0x0A, 0x00 - .word ov11_0231A0A0 - .byte 0x8C, 0x01, 0x0A, 0x00 - .word ov11_0231BF50 - .byte 0x8D, 0x01, 0x0A, 0x00 - .word ov11_0231B9F0 - .byte 0x8E, 0x01, 0x0A, 0x00 - .word ov11_0231AC40 - .byte 0x8F, 0x01, 0x0A, 0x00 - .word ov11_0231AA50 - .byte 0x90, 0x01, 0x0A, 0x00 - .word ov11_0231ACE0 - .byte 0x91, 0x01, 0x0A, 0x00 - .word ov11_0231ACC0 - .byte 0x92, 0x01, 0x0A, 0x00 - .word ov11_0231ACB0 - .byte 0x93, 0x01, 0x0A, 0x00 - .word ov11_0231ACA0 - .byte 0x94, 0x01, 0x0A, 0x00 - .word ov11_0231BF70 - .byte 0x95, 0x01, 0x0A, 0x00 - .word ov11_0231AC80 - .byte 0x96, 0x01, 0x0A, 0x00 - .word ov11_0231AC70 - .byte 0x97, 0x01, 0x0A, 0x00 - .word ov11_0231A280 - .byte 0x98, 0x01, 0x0A, 0x00 - .word ov11_0231AC50 - .byte 0x99, 0x01, 0x0A, 0x00 - .word ov11_0231A210 - .byte 0x9A, 0x01, 0x0A, 0x00 - .word ov11_02319F40 - .byte 0x9B, 0x01, 0x0A, 0x00 - .word ov11_02319FC0 - .byte 0x9C, 0x01, 0x0A, 0x00 - .word ov11_0231A2E0 - .byte 0x9D, 0x01, 0x0A, 0x00 - .word ov11_0231AA90 - .byte 0x9E, 0x01, 0x0A, 0x00 - .word ov11_0231BFE0 - .byte 0x9F, 0x01, 0x0A, 0x00 - .word ov11_0231A740 - .byte 0xA0, 0x01, 0x0A, 0x00 - .word ov11_02319E10 - .byte 0xA1, 0x01, 0x0A, 0x00 - .word ov11_0231ABC0 - .byte 0xA2, 0x01, 0x0A, 0x00 - .word ov11_02319E30 - .byte 0xA3, 0x01, 0x0A, 0x00 - .word ov11_0231ABA0 - .byte 0xA4, 0x01, 0x0A, 0x00 - .word ov11_02319D60 - .byte 0xA5, 0x01, 0x0A, 0x00 - .word ov11_0231AB20 - .byte 0xA6, 0x01, 0x0A, 0x00 - .word ov11_0231AB30 - .byte 0xA7, 0x01, 0x0A, 0x00 - .word ov11_0231A960 - .byte 0xA8, 0x01, 0x0A, 0x00 - .word ov11_0231ABF0 - .byte 0xA9, 0x01, 0x0A, 0x00 - .word ov11_02319E40 - .byte 0xAA, 0x01, 0x0A, 0x00 - .word ov11_0231ADF0 - .byte 0xAB, 0x01, 0x0A, 0x00 - .word ov11_0231BA10 - .byte 0xAC, 0x01, 0x0A, 0x00 - .word ov11_02319F20 - .byte 0xAD, 0x01, 0x0A, 0x00 - .word ov11_0231AEA0 - .byte 0xAE, 0x01, 0x0A, 0x00 - .word ov11_0231AEF0 - .byte 0xAF, 0x01, 0x0A, 0x00 - .word ov11_0231AFB0 - .byte 0xB0, 0x01, 0x0A, 0x00 - .word ov11_0231AFC0 - .byte 0xB1, 0x01, 0x0A, 0x00 - .word ov11_0231B170 - .byte 0xB2, 0x01, 0x0A, 0x00 - .word ov11_0231B230 - .byte 0xB3, 0x01, 0x0A, 0x00 - .word ov11_0231AAD0 - .byte 0xB4, 0x01, 0x0A, 0x00 - .word ov11_0231B370 - .byte 0xB5, 0x01, 0x0A, 0x00 - .word ov11_0231B3F0 - .byte 0xB6, 0x01, 0x0A, 0x00 - .word ov11_0231B4D0 - .byte 0xB7, 0x01, 0x0A, 0x00 - .word ov11_0231B550 - .byte 0xB8, 0x01, 0x0A, 0x00 - .word ov11_0231B570 - .byte 0xB9, 0x01, 0x0A, 0x00 - .word ov11_0231B5F0 - .byte 0xBA, 0x01, 0x0A, 0x00 - .word ov11_0231B6D0 - .byte 0xBB, 0x01, 0x0A, 0x00 - .word ov11_0231BA50 - .byte 0xBC, 0x01, 0x0A, 0x00 - .word ov11_0231B800 - .byte 0xBD, 0x01, 0x0A, 0x00 - .word ov11_0231B870 - .byte 0xBE, 0x01, 0x0A, 0x00 - .word ov11_0231B970 - .byte 0xBF, 0x01, 0x0A, 0x00 - .word ov11_0231A9E0 - .byte 0xC0, 0x01, 0x0A, 0x00 - .word ov11_0231A9D0 - .byte 0xC1, 0x01, 0x0A, 0x00 - .word ov11_0231B9A0 - .byte 0xC2, 0x01, 0x0A, 0x00 - .word ov11_02319DE0 - .byte 0xC3, 0x01, 0x0A, 0x00 - .word ov11_0231A9A0 - .byte 0xC4, 0x01, 0x0A, 0x00 - .word ov11_0231B940 - .byte 0xC5, 0x01, 0x0A, 0x00 - .word ov11_0231A980 - .byte 0xC6, 0x01, 0x0A, 0x00 - .word ov11_0231A970 - .byte 0xC7, 0x01, 0x0A, 0x00 - .word ov11_0231B8D0 - .byte 0xC8, 0x01, 0x0A, 0x00 - .word ov11_0231A950 - .byte 0xC9, 0x01, 0x0A, 0x00 - .word ov11_0231A940 - .byte 0xCA, 0x01, 0x0A, 0x00 - .word ov11_02319DC0 - .byte 0xCB, 0x01, 0x0A, 0x00 - .word ov11_0231A920 - .byte 0xCC, 0x01, 0x0A, 0x00 - .word ov11_0231A910 - .byte 0xCD, 0x01, 0x0A, 0x00 - .word ov11_0231A900 - .byte 0xCE, 0x01, 0x0A, 0x00 - .word ov11_02319DB0 - .byte 0xCF, 0x01, 0x0A, 0x00 - .word ov11_0231B7D0 - .byte 0xD0, 0x01, 0x0A, 0x00 - .word ov11_0231A8D0 - .byte 0xD1, 0x01, 0x0A, 0x00 - .word ov11_0231A8C0 - .byte 0xD2, 0x01, 0x0A, 0x00 - .word ov11_0231A8B0 - .byte 0xD3, 0x01, 0x0A, 0x00 - .word ov11_0231A8A0 - .byte 0xD4, 0x01, 0x0A, 0x00 - .word ov11_0231B740 - .byte 0xD5, 0x01, 0x0A, 0x00 - .word ov11_0231A880 - .byte 0xD6, 0x01, 0x0A, 0x00 - .word ov11_0231A870 - .byte 0xD7, 0x01, 0x0A, 0x00 - .word ov11_0231B6E0 - .byte 0xD8, 0x01, 0x0A, 0x00 - .word ov11_0231BD10 - .byte 0xD9, 0x01, 0x0A, 0x00 - .word ov11_0231A840 - .byte 0xDA, 0x01, 0x0A, 0x00 - .word ov11_0231A830 - .byte 0xDB, 0x01, 0x0A, 0x00 - .word ov11_0231C3A8 - .byte 0xDC, 0x01, 0x0A, 0x00 - .word ov11_0231C308 - .byte 0xDD, 0x01, 0x0A, 0x00 - .word ov11_0231B610 - .byte 0xDE, 0x01, 0x0A, 0x00 - .word ov11_0231A0F0 - .byte 0xDF, 0x01, 0x0A, 0x00 - .word ov11_0231B5D0 - .byte 0xE0, 0x01, 0x0A, 0x00 - .word ov11_0231A7D0 - .byte 0xE1, 0x01, 0x0A, 0x00 - .word ov11_0231A7C0 - .byte 0xE2, 0x01, 0x0A, 0x00 - .word ov11_0231A0D0 - .byte 0xE3, 0x01, 0x0A, 0x00 - .word ov11_0231BBF0 - .byte 0xE4, 0x01, 0x0A, 0x00 - .word ov11_0231A790 - .byte 0xE5, 0x01, 0x0A, 0x00 - .word ov11_0231A780 - .byte 0xE6, 0x01, 0x0A, 0x00 - .word ov11_0231A0B0 - .byte 0xE7, 0x01, 0x0A, 0x00 - .word ov11_0231B4E0 - .byte 0xE8, 0x01, 0x0A, 0x00 - .word ov11_0231B4C0 - .byte 0xE9, 0x01, 0x0A, 0x00 - .word ov11_0231B490 - .byte 0xEA, 0x01, 0x0A, 0x00 - .word ov11_0231A730 - .byte 0xEB, 0x01, 0x0A, 0x00 - .word ov11_0231A720 - .byte 0xEC, 0x01, 0x0A, 0x00 - .word ov11_0231A080 - .byte 0xED, 0x01, 0x0A, 0x00 - .word ov11_0231A700 - .byte 0xEE, 0x01, 0x0A, 0x00 - .word ov11_0231A070 - .byte 0xEF, 0x01, 0x0A, 0x00 - .word ov11_0231A6E0 - .byte 0xF0, 0x01, 0x0A, 0x00 - .word ov11_0231A6D0 - .byte 0xF1, 0x01, 0x0A, 0x00 - .word ov11_0231B3A0 - .byte 0xF2, 0x01, 0x0A, 0x00 - .word ov11_0231A050 - .byte 0xF3, 0x01, 0x0A, 0x00 - .word ov11_0231BDE0 - .byte 0xF4, 0x01, 0x0A, 0x00 - .word ov11_0231A690 - .byte 0xF5, 0x01, 0x0A, 0x00 - .word ov11_0231BE00 - .byte 0xF6, 0x01, 0x0A, 0x00 - .word ov11_0231A030 - .byte 0xF7, 0x01, 0x0A, 0x00 - .word ov11_0231A660 - .byte 0xF8, 0x01, 0x0A, 0x00 - .word ov11_0231A650 - .byte 0xF9, 0x01, 0x0A, 0x00 - .word ov11_0231B290 - .byte 0xFA, 0x01, 0x0A, 0x00 - .word ov11_0231A010 - .byte 0xFB, 0x01, 0x0A, 0x00 - .word ov11_0231BE20 - .byte 0xFC, 0x01, 0x0A, 0x00 - .word ov11_0231A000 - .byte 0xFD, 0x01, 0x0A, 0x00 - .word ov11_0231A600 - .byte 0xFE, 0x01, 0x0A, 0x00 - .word ov11_02319FF0 - .byte 0xFF, 0x01, 0x0A, 0x00 - .word ov11_0231A5E0 - .byte 0x00, 0x02, 0x0A, 0x00 - .word ov11_0231A5D0 - .byte 0x01, 0x02, 0x0A, 0x00 - .word ov11_0231A5C0 - .byte 0x02, 0x02, 0x0A, 0x00 - .word ov11_02319FD0 - .byte 0x03, 0x02, 0x0A, 0x00 - .word ov11_0231BE30 - .byte 0x04, 0x02, 0x0A, 0x00 - .word ov11_0231A590 - .byte 0x05, 0x02, 0x0A, 0x00 - .word ov11_0231A580 - .byte 0x06, 0x02, 0x0A, 0x00 - .word ov11_0231A570 - .byte 0x07, 0x02, 0x0A, 0x00 - .word ov11_0231B0D0 - .byte 0x08, 0x02, 0x0A, 0x00 - .word ov11_0231A550 - .byte 0x09, 0x02, 0x0A, 0x00 - .word ov11_0231A540 - .byte 0x0A, 0x02, 0x0A, 0x00 - .word ov11_0231A530 - .byte 0x0B, 0x02, 0x0A, 0x00 - .word ov11_0231B050 - .byte 0x0C, 0x02, 0x0A, 0x00 - .word ov11_02319F50 - .byte 0x0D, 0x02, 0x0A, 0x00 - .word ov11_0231A500 - .byte 0x0E, 0x02, 0x0A, 0x00 - .word ov11_0231A4F0 - .byte 0x0F, 0x02, 0x0A, 0x00 - .word ov11_0231ADD0 - .byte 0x10, 0x02, 0x0A, 0x00 - .word ov11_0231AC20 - .byte 0x11, 0x02, 0x0A, 0x00 - .word ov11_0231A4C0 - .byte 0x12, 0x02, 0x0A, 0x00 - .word ov11_0231AE60 - .byte 0x13, 0x02, 0x0A, 0x00 - .word ov11_0231B660 - .byte 0x14, 0x02, 0x0A, 0x00 - .word ov11_0231A490 - .byte 0x15, 0x02, 0x0A, 0x00 - .word ov11_0231A480 - .byte 0x16, 0x02, 0x0A, 0x00 - .word ov11_0231AEC0 - .byte 0x17, 0x02, 0x0A, 0x00 - .word ov11_0231AED0 - .byte 0x18, 0x02, 0x0A, 0x00 - .word ov11_0231A4D0 - .byte 0x19, 0x02, 0x0A, 0x00 - .word ov11_0231A430 - .byte 0x1A, 0x02, 0x0A, 0x00 - .word ov11_0231AE80 - .byte 0x1B, 0x02, 0x0A, 0x00 - .word ov11_0231A230 - .byte 0x1C, 0x02, 0x0A, 0x00 - .word ov11_02319D80 - .byte 0x1D, 0x02, 0x0A, 0x00 - .word ov11_0231A300 - .byte 0x1E, 0x02, 0x0A, 0x00 - .word ov11_0231B980 - .byte 0x1F, 0x02, 0x0A, 0x00 - .word ov11_0231AF80 - .byte 0x20, 0x02, 0x0A, 0x00 - .word ov11_0231ADB0 - .byte 0x21, 0x02, 0x0A, 0x00 - .word ov11_0231BF00 - .byte 0x22, 0x02, 0x0A, 0x00 - .word ov11_0231AD70 - .byte 0x23, 0x02, 0x0A, 0x00 - .word ov11_0231A3A0 - .byte 0x24, 0x02, 0x0A, 0x00 - .word ov11_0231BF20 - .byte 0x25, 0x02, 0x0A, 0x00 - .word ov11_0231ABD0 - .byte 0x26, 0x02, 0x0A, 0x00 - .word ov11_0231AA60 - .byte 0x27, 0x02, 0x0A, 0x00 - .word ov11_0231AA70 - .byte 0x28, 0x02, 0x0A, 0x00 - .word ov11_0231A9F0 - .byte 0x29, 0x02, 0x0A, 0x00 - .word ov11_0231AC90 - .byte 0x2A, 0x02, 0x0A, 0x00 - .word ov11_0231AA20 - .byte 0x2B, 0x02, 0x0A, 0x00 - .word ov11_0231AC60 - .byte 0x2C, 0x02, 0x0A, 0x00 - .word ov11_0231A2D0 - .byte 0x2D, 0x02, 0x0A, 0x00 - .word ov11_02319F80 - .byte 0x2E, 0x02, 0x0A, 0x00 - .word ov11_0231AAB0 - .byte 0x2F, 0x02, 0x0A, 0x00 - .word ov11_0231C000 - .byte 0x30, 0x02, 0x0A, 0x00 - .word ov11_0231AAF0 - .byte 0x31, 0x02, 0x0A, 0x00 - .word ov11_0231AB10 - .byte 0x32, 0x02, 0x0A, 0x00 - .word ov11_0231AB40 - .byte 0x33, 0x02, 0x0A, 0x00 - .word ov11_0231AB70 - .byte 0x34, 0x02, 0x0A, 0x00 - .word ov11_0231AC00 - .byte 0x35, 0x02, 0x0A, 0x00 - .word ov11_0231AE50 - .byte 0x36, 0x02, 0x0A, 0x00 - .word ov11_0231AF50 - .byte 0x37, 0x02, 0x0A, 0x00 - .word ov11_0231B030 - .byte 0x38, 0x02, 0x0A, 0x00 - .word ov11_0231B270 - .byte 0x39, 0x02, 0x0A, 0x00 - .word ov11_0231B2F0 - .byte 0x3A, 0x02, 0x0A, 0x00 - .word ov11_0231B4F0 - .byte 0x3B, 0x02, 0x0A, 0x00 - .word ov11_0231B590 - .byte 0x3C, 0x02, 0x0A, 0x00 - .word ov11_0231B730 - .byte 0x3D, 0x02, 0x0A, 0x00 - .word ov11_0231B770 - .byte 0x3E, 0x02, 0x0A, 0x00 - .word ov11_0231BA20 - .byte 0x3F, 0x02, 0x0A, 0x00 - .word ov11_0231A1E0 - .byte 0x40, 0x02, 0x0A, 0x00 - .word ov11_0231A9C0 - .byte 0x41, 0x02, 0x0A, 0x00 - .word ov11_0231A990 - .byte 0x42, 0x02, 0x0A, 0x00 - .word ov11_0231A1B0 - .byte 0x43, 0x02, 0x0A, 0x00 - .word ov11_0231B8E0 - .byte 0x44, 0x02, 0x0A, 0x00 - .word ov11_0231BCB0 - .byte 0x45, 0x02, 0x0A, 0x00 - .word ov11_0231A180 - .byte 0x46, 0x02, 0x0A, 0x00 - .word ov11_02319D30 - .byte 0x47, 0x02, 0x0A, 0x00 - .word ov11_0231A8E0 - .byte 0x48, 0x02, 0x0A, 0x00 - .word ov11_0231A150 - .byte 0x49, 0x02, 0x0A, 0x00 - .word ov11_0231A140 - .byte 0x4A, 0x02, 0x0A, 0x00 - .word ov11_0231A130 - .byte 0x4B, 0x02, 0x0A, 0x00 - .word ov11_0231A850 - .byte 0x4C, 0x02, 0x0A, 0x00 - .word ov11_0231A110 - .byte 0x4D, 0x02, 0x0A, 0x00 - .word ov11_0231B650 - .byte 0x4E, 0x02, 0x0A, 0x00 - .word ov11_0231A800 - .byte 0x4F, 0x02, 0x0A, 0x00 - .word ov11_0231A7E0 - .byte 0x50, 0x02, 0x0A, 0x00 - .word ov11_0231B5A0 - .byte 0x51, 0x02, 0x0A, 0x00 - .word ov11_0231A7A0 - .byte 0x52, 0x02, 0x0A, 0x00 - .word ov11_02319E20 - .byte 0x53, 0x02, 0x0A, 0x00 - .word ov11_0231A750 - .byte 0x54, 0x02, 0x0A, 0x00 - .word ov11_0231B4A0 - .byte 0x55, 0x02, 0x0A, 0x00 - .word ov11_0231A710 - .byte 0x56, 0x02, 0x0A, 0x00 - .word ov11_02319E50 - .byte 0x57, 0x02, 0x0A, 0x00 - .word ov11_0231A060 - .byte 0x58, 0x02, 0x0A, 0x00 - .word ov11_0231A6C0 - .byte 0x59, 0x02, 0x0A, 0x00 - .word ov11_0231A6A0 - .byte 0x5A, 0x02, 0x0A, 0x00 - .word ov11_0231B320 - .byte 0x5B, 0x02, 0x0A, 0x00 - .word ov11_0231A020 - .byte 0x5C, 0x02, 0x0A, 0x00 - .word ov11_0231A640 - .byte 0x5D, 0x02, 0x0A, 0x00 - .word ov11_0231A620 - .byte 0x5E, 0x02, 0x0A, 0x00 - .word ov11_02319EC0 - .byte 0x5F, 0x02, 0x0A, 0x00 - .word ov11_02319FE0 - .byte 0x60, 0x02, 0x0A, 0x00 - .word ov11_02319F10 - .byte 0x61, 0x02, 0x0A, 0x00 - .word ov11_0231A5A0 - .byte 0x62, 0x02, 0x0A, 0x00 - .word ov11_02319FB0 - .byte 0x63, 0x02, 0x0A, 0x00 - .word ov11_0231A560 - .byte 0x64, 0x02, 0x0A, 0x00 - .word ov11_02319F90 - .byte 0x65, 0x02, 0x0A, 0x00 - .word ov11_0231A520 - .byte 0x66, 0x02, 0x0A, 0x00 - .word ov11_02319F60 - .byte 0x67, 0x02, 0x0A, 0x00 - .word ov11_0231AFD0 - .byte 0x68, 0x02, 0x0A, 0x00 - .word ov11_0231AE90 - .byte 0x69, 0x02, 0x0A, 0x00 - .word ov11_0231A4A0 - .byte 0x6A, 0x02, 0x0A, 0x00 - .word ov11_0231A470 - .byte 0x6B, 0x02, 0x0A, 0x00 - .word ov11_0231AEE0 - .byte 0x6C, 0x02, 0x0A, 0x00 - .word ov11_0231AE70 - .byte 0x6D, 0x02, 0x0A, 0x00 - .word ov11_0231A240 - .byte 0x6E, 0x02, 0x0A, 0x00 - .word ov11_0231A2B0 - .byte 0x6F, 0x02, 0x0A, 0x00 - .word ov11_02319ED0 - .byte 0x70, 0x02, 0x0A, 0x00 - .word ov11_0231AD80 - .byte 0x71, 0x02, 0x0A, 0x00 - .word ov11_0231AF90 - .byte 0x72, 0x02, 0x0A, 0x00 - .word ov11_0231A350 - .byte 0x73, 0x02, 0x0A, 0x00 - .word ov11_0231ACD0 - .byte 0x74, 0x02, 0x0A, 0x00 - .word ov11_0231AA10 - .byte 0x75, 0x02, 0x0A, 0x00 - .word ov11_0231AC30 - .byte 0x76, 0x02, 0x0A, 0x00 - .word ov11_0231AC10 - .byte 0x77, 0x02, 0x0A, 0x00 - .word ov11_02319C60 - .byte 0x78, 0x02, 0x0A, 0x00 - .word ov11_02319C90 - .byte 0x79, 0x02, 0x0A, 0x00 - .word ov11_02319C24 - .byte 0x7A, 0x02, 0x0A, 0x00 - .word ov11_02319BC4 - .byte 0x7B, 0x02, 0x0A, 0x00 - .word ov11_02319C00 - .byte 0x7C, 0x02, 0x0A, 0x00 - .word ov11_02319C9C - .byte 0x7D, 0x02, 0x0A, 0x00 - .word ov11_02319BB8 - .byte 0x7E, 0x02, 0x0A, 0x00 - .word ov11_02319C3C - .byte 0x7F, 0x02, 0x0A, 0x00 - .word ov11_02319CB4 - .byte 0x80, 0x02, 0x0A, 0x00 - .word ov11_02319BAC - .byte 0x81, 0x02, 0x0A, 0x00 - .word ov11_02319C84 - .byte 0x82, 0x02, 0x0A, 0x00 - .word ov11_02319B88 - .byte 0x83, 0x02, 0x0A, 0x00 - .word ov11_02319B64 - .byte 0x84, 0x02, 0x0A, 0x00 - .word ov11_02319BE8 - .byte 0x85, 0x02, 0x0A, 0x00 - .word ov11_02319C18 - .byte 0x86, 0x02, 0x0A, 0x00 - .word ov11_02319B58 - .byte 0x87, 0x02, 0x0A, 0x00 - .word ov11_02319C0C - .byte 0x88, 0x02, 0x0A, 0x00 - .word ov11_02319BA0 - .byte 0x89, 0x02, 0x0A, 0x00 - .word ov11_02319B70 - .byte 0x8A, 0x02, 0x0A, 0x00 - .word ov11_02319C48 - .byte 0x8B, 0x02, 0x0A, 0x00 - .word ov11_02319CA8 - .byte 0x8C, 0x02, 0x0A, 0x00 - .word ov11_02319C6C - .byte 0x8D, 0x02, 0x0A, 0x00 - .word ov11_02319C54 - .byte 0x8E, 0x02, 0x0A, 0x00 - .word ov11_02319B7C - .byte 0x8F, 0x02, 0x0A, 0x00 - .word ov11_0231BAF0 - .byte 0x90, 0x02, 0x0A, 0x00 - .word ov11_0231BB00 - .byte 0x91, 0x02, 0x01, 0x00 - .word ov11_02319FA0 - .byte 0x92, 0x02, 0x01, 0x00 - .word ov11_02319CE4 - .byte 0x93, 0x02, 0x02, 0x00 - .word ov11_0231BB20 - .byte 0x94, 0x02, 0x01, 0x00 - .word ov11_0231C498 - .byte 0x95, 0x02, 0x01, 0x00 - .word ov11_0231C408 - .byte 0x96, 0x02, 0x01, 0x00 - .word ov11_0231C4F8 - .byte 0x97, 0x02, 0x01, 0x00 - .word ov11_0231C358 - .byte 0x98, 0x02, 0x01, 0x00 - .word ov11_0231C1B4 - .byte 0x99, 0x02, 0x01, 0x00 - .word ov11_0231C2A4 - .byte 0x9A, 0x02, 0x01, 0x00 - .word ov11_0231C5E8 - .byte 0x9B, 0x02, 0x01, 0x00 - .word ov11_0231C528 - .byte 0x9C, 0x02, 0x01, 0x00 - .word ov11_0231C600 - .byte 0x9D, 0x02, 0x01, 0x00 - .word ov11_0231C420 - .byte 0x9E, 0x02, 0x01, 0x00 - .word ov11_0231C2E0 - .byte 0x9F, 0x02, 0x01, 0x00 - .word ov11_0231C2F4 - .byte 0xA0, 0x02, 0x02, 0x00 - .word ov11_0231C618 - .byte 0xA1, 0x02, 0x02, 0x00 - .word ov11_0231C540 - .byte 0xA2, 0x02, 0x02, 0x00 - .word ov11_0231C438 - .byte 0xA3, 0x02, 0x02, 0x00 - .word ov11_0231C630 - .byte 0xA4, 0x02, 0x02, 0x00 - .word ov11_0231C648 - .byte 0xA5, 0x02, 0x02, 0x00 - .word ov11_0231C3C0 - .byte 0xA6, 0x02, 0x07, 0x00 - .word ov11_0231BC00 - .byte 0xA7, 0x02, 0x07, 0x00 - .word ov11_0231BB10 - .byte 0xA8, 0x02, 0x07, 0x00 - .word ov11_02319F70 - .byte 0xA9, 0x02, 0x07, 0x00 - .word ov11_0231BB30 - .byte 0xAA, 0x02, 0x08, 0x00 - .word ov11_0231BEA0 - .byte 0xAB, 0x02, 0x01, 0x00 - .word ov11_0231BB40 - .byte 0xAC, 0x02, 0x07, 0x00 - .word ov11_0231C2B8 - .byte 0xAD, 0x02, 0x05, 0x00 - .word ov11_0231C1C8 - .byte 0xAE, 0x02, 0x04, 0x00 - .word ov11_0231C690 - .byte 0xAF, 0x02, 0x07, 0x00 - .word ov11_0231BCC0 - .byte 0xB0, 0x02, 0x07, 0x00 - .word ov11_0231BBE0 - .byte 0xB1, 0x02, 0x07, 0x00 - .word ov11_0231C1DC - .byte 0xB2, 0x02, 0x07, 0x00 - .word ov11_0231C150 - .byte 0xB3, 0x02, 0x07, 0x00 - .word ov11_0231BC10 - .byte 0xB4, 0x02, 0x07, 0x00 - .word ov11_0231C344 - .byte 0xB5, 0x02, 0x07, 0x00 - .word ov11_0231C254 - .byte 0xB6, 0x02, 0x07, 0x00 - .word ov11_0231BC80 - .byte 0xB7, 0x02, 0x07, 0x00 - .word ov11_02319C78 - .byte 0xB8, 0x02, 0x07, 0x00 - .word ov11_0231A0C0 - .byte 0xB9, 0x02, 0x07, 0x00 - .word ov11_0231C4C8 - .byte 0xBA, 0x02, 0x0A, 0x00 - .word ov11_02319C30 - .byte 0xBB, 0x02, 0x0A, 0x00 - .word ov11_02319CFC - .byte 0xBC, 0x02, 0x0A, 0x00 - .word ov11_02319B1C - .global GROUND_WEATHER_TABLE -GROUND_WEATHER_TABLE: -#if defined(EUROPE) -#define GROUND_WEATHER_OFFSET 0x1C -#elif defined(JAPAN) -#define GROUND_WEATHER_OFFSET 5 -#else -#define GROUND_WEATHER_OFFSET 0 -#endif - .byte 0x00, 0x00, 0x13, 0x01, 0x01, 0x00, 0xB0 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB1 + GROUND_WEATHER_OFFSET, 0x01 - .byte 0x02, 0x00, 0xB2 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB3 + GROUND_WEATHER_OFFSET, 0x01, 0x02, 0x00, 0xB4 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB5 + GROUND_WEATHER_OFFSET, 0x01 - .byte 0x02, 0x00, 0xB6 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB7 + GROUND_WEATHER_OFFSET, 0x01, 0x02, 0x00, 0xB8 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB9 + GROUND_WEATHER_OFFSET, 0x01 - .byte 0x02, 0x00, 0xBA + GROUND_WEATHER_OFFSET, 0x01 - .global GROUND_WAN_FILES_TABLE -GROUND_WAN_FILES_TABLE: - .byte 0x64, 0x33, 0x30, 0x70, 0x33, 0x33, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE4C -ov11_0231DE4C: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x34, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE58 -ov11_0231DE58: - .byte 0x64, 0x36, 0x33, 0x70 - .byte 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE64 -ov11_0231DE64: - .byte 0x64, 0x36, 0x33, 0x70, 0x34, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE70 -ov11_0231DE70: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE7C -ov11_0231DE7C: - .byte 0x67, 0x30, 0x31, 0x70, 0x31, 0x30, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE88 -ov11_0231DE88: - .byte 0x67, 0x30, 0x31, 0x70 - .byte 0x30, 0x39, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DE94 -ov11_0231DE94: - .byte 0x76, 0x33, 0x37, 0x70, 0x30, 0x32, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DEA0 -ov11_0231DEA0: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DEAC -ov11_0231DEAC: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DEB8 -ov11_0231DEB8: - .byte 0x64, 0x35, 0x37, 0x70 - .byte 0x34, 0x33, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DEC4 -ov11_0231DEC4: - .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x33, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DED0 -ov11_0231DED0: - .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 -#ifndef EUROPE - .global ov11_0231DEDC -ov11_0231DEDC: - .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 -#endif - .global ov11_0231DEE8 -ov11_0231DEE8: - .byte 0x70, 0x31, 0x37, 0x70 - .byte 0x30, 0x32, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DEF4 -ov11_0231DEF4: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x35, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF00 -ov11_0231DF00: - .byte 0x70, 0x32, 0x36, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF0C -ov11_0231DF0C: - .byte 0x64, 0x35, 0x36, 0x70, 0x31, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF18 -ov11_0231DF18: - .byte 0x64, 0x35, 0x36, 0x70 - .byte 0x31, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF24 -ov11_0231DF24: - .byte 0x64, 0x35, 0x36, 0x70, 0x31, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF30 -ov11_0231DF30: - .byte 0x76, 0x33, 0x39, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF3C -ov11_0231DF3C: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF48 -ov11_0231DF48: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x31, 0x30, 0x62, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF54 -ov11_0231DF54: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF60 -ov11_0231DF60: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF6C -ov11_0231DF6C: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF78 -ov11_0231DF78: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x31, 0x30, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF84 -ov11_0231DF84: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF90 -ov11_0231DF90: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DF9C -ov11_0231DF9C: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFA8 -ov11_0231DFA8: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x31, 0x30, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFB4 -ov11_0231DFB4: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFC0 -ov11_0231DFC0: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFCC -ov11_0231DFCC: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFD8 -ov11_0231DFD8: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x31, 0x30, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFE4 -ov11_0231DFE4: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFF0 -ov11_0231DFF0: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231DFFC -ov11_0231DFFC: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E008 -ov11_0231E008: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x38, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E014 -ov11_0231E014: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E020 -ov11_0231E020: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E02C -ov11_0231E02C: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E038 -ov11_0231E038: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x38, 0x63, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E044 -ov11_0231E044: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E050 -ov11_0231E050: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E05C -ov11_0231E05C: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E068 -ov11_0231E068: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x38, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E074 -ov11_0231E074: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E080 -ov11_0231E080: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E08C -ov11_0231E08C: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E098 -ov11_0231E098: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x38, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0A4 -ov11_0231E0A4: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0B0 -ov11_0231E0B0: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0BC -ov11_0231E0BC: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0C8 -ov11_0231E0C8: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x37, 0x64, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0D4 -ov11_0231E0D4: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0E0 -ov11_0231E0E0: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0EC -ov11_0231E0EC: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E0F8 -ov11_0231E0F8: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x37, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E104 -ov11_0231E104: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E110 -ov11_0231E110: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E11C -ov11_0231E11C: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E128 -ov11_0231E128: - .byte 0x76, 0x33, 0x38, 0x70 - .byte 0x30, 0x37, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E134 -ov11_0231E134: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E140 -ov11_0231E140: - .byte 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E14C -ov11_0231E14C: - .byte 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E158 -ov11_0231E158: - .byte 0x73, 0x31, 0x38, 0x70 - .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E164 -ov11_0231E164: - .byte 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E170 -ov11_0231E170: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E17C -ov11_0231E17C: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E188 -ov11_0231E188: - .byte 0x73, 0x31, 0x37, 0x70 - .byte 0x30, 0x32, 0x62, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E194 -ov11_0231E194: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1A0 -ov11_0231E1A0: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1AC -ov11_0231E1AC: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1B8 -ov11_0231E1B8: - .byte 0x73, 0x31, 0x37, 0x70 - .byte 0x30, 0x32, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1C4 -ov11_0231E1C4: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x39 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1D0 -ov11_0231E1D0: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1DC -ov11_0231E1DC: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1E8 -ov11_0231E1E8: - .byte 0x73, 0x31, 0x37, 0x70 - .byte 0x30, 0x32, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E1F4 -ov11_0231E1F4: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E200 -ov11_0231E200: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E20C -ov11_0231E20C: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E218 -ov11_0231E218: - .byte 0x73, 0x31, 0x37, 0x70 - .byte 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E224 -ov11_0231E224: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E230 -ov11_0231E230: - .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E23C -ov11_0231E23C: - .byte 0x64, 0x35, 0x35, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E248 -ov11_0231E248: - .byte 0x64, 0x35, 0x33, 0x70 - .byte 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E254 -ov11_0231E254: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x37 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E260 -ov11_0231E260: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E26C -ov11_0231E26C: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E278 -ov11_0231E278: - .byte 0x64, 0x35, 0x32, 0x70 - .byte 0x33, 0x32, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E284 -ov11_0231E284: - .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E290 -ov11_0231E290: - .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E29C -ov11_0231E29C: - .byte 0x64, 0x35, 0x33, 0x70, 0x34, 0x31, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2A8 -ov11_0231E2A8: - .byte 0x64, 0x35, 0x32, 0x70 - .byte 0x33, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2B4 -ov11_0231E2B4: - .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2C0 -ov11_0231E2C0: - .byte 0x76, 0x33, 0x37, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2CC -ov11_0231E2CC: - .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2D8 -ov11_0231E2D8: - .byte 0x64, 0x35, 0x36, 0x70 - .byte 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2E4 -ov11_0231E2E4: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2F0 -ov11_0231E2F0: - .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E2FC -ov11_0231E2FC: - .byte 0x73, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E308 -ov11_0231E308: - .byte 0x64, 0x35, 0x37, 0x70 - .byte 0x34, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E314 -ov11_0231E314: - .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x32, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E320 -ov11_0231E320: - .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E32C -ov11_0231E32C: - .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E338 -ov11_0231E338: - .byte 0x76, 0x33, 0x39, 0x70 - .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E344 -ov11_0231E344: - .byte 0x76, 0x33, 0x39, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E350 -ov11_0231E350: - .byte 0x70, 0x32, 0x36, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E35C -ov11_0231E35C: - .byte 0x70, 0x32, 0x36, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E368 -ov11_0231E368: - .byte 0x70, 0x32, 0x36, 0x70 - .byte 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E374 -ov11_0231E374: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E380 -ov11_0231E380: - .byte 0x73, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E38C -ov11_0231E38C: - .byte 0x64, 0x35, 0x32, 0x70, 0x31, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E398 -ov11_0231E398: - .byte 0x64, 0x35, 0x32, 0x70 - .byte 0x31, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3A4 -ov11_0231E3A4: - .byte 0x64, 0x35, 0x32, 0x70, 0x31, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3B0 -ov11_0231E3B0: - .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3BC -ov11_0231E3BC: - .byte 0x64, 0x35, 0x31, 0x70, 0x34, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3C8 -ov11_0231E3C8: - .byte 0x64, 0x35, 0x31, 0x70 - .byte 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3D4 -ov11_0231E3D4: - .byte 0x64, 0x35, 0x31, 0x70, 0x34, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3E0 -ov11_0231E3E0: - .byte 0x70, 0x32, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3EC -ov11_0231E3EC: - .byte 0x64, 0x35, 0x31, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E3F8 -ov11_0231E3F8: - .byte 0x64, 0x37, 0x33, 0x70 - .byte 0x34, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E404 -ov11_0231E404: - .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E410 -ov11_0231E410: - .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E41C -ov11_0231E41C: - .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E428 -ov11_0231E428: - .byte 0x64, 0x37, 0x33, 0x70 - .byte 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E434 -ov11_0231E434: - .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E440 -ov11_0231E440: - .byte 0x64, 0x35, 0x30, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E44C -ov11_0231E44C: - .byte 0x64, 0x30, 0x31, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E458 -ov11_0231E458: - .byte 0x64, 0x37, 0x33, 0x70 - .byte 0x32, 0x38, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E464 -ov11_0231E464: - .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E470 -ov11_0231E470: - .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E47C -ov11_0231E47C: - .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E488 -ov11_0231E488: - .byte 0x64, 0x37, 0x33, 0x70 - .byte 0x32, 0x38, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E494 -ov11_0231E494: - .byte 0x76, 0x33, 0x37, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4A0 -ov11_0231E4A0: - .byte 0x73, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4AC -ov11_0231E4AC: - .byte 0x73, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4B8 -ov11_0231E4B8: - .byte 0x73, 0x31, 0x34, 0x70 - .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4C4 -ov11_0231E4C4: - .byte 0x73, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4D0 -ov11_0231E4D0: - .byte 0x70, 0x30, 0x31, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4DC -ov11_0231E4DC: - .byte 0x70, 0x31, 0x37, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4E8 -ov11_0231E4E8: - .byte 0x64, 0x37, 0x33, 0x70 - .byte 0x32, 0x38, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E4F4 -ov11_0231E4F4: - .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E500 -ov11_0231E500: - .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E50C -ov11_0231E50C: - .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 -#ifndef EUROPE - .global ov11_0231E518 -ov11_0231E518: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 -#endif - .global ov11_0231E524 -ov11_0231E524: - .byte 0x70, 0x32, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E530 -ov11_0231E530: - .byte 0x70, 0x32, 0x31, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E53C -ov11_0231E53C: - .byte 0x70, 0x32, 0x31, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E548 -ov11_0231E548: - .byte 0x70, 0x32, 0x30, 0x70 - .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E554 -ov11_0231E554: - .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E560 -ov11_0231E560: - .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E56C -ov11_0231E56C: - .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E578 -ov11_0231E578: - .byte 0x70, 0x31, 0x38, 0x70 - .byte 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E584 -ov11_0231E584: - .byte 0x70, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E590 -ov11_0231E590: - .byte 0x70, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E59C -ov11_0231E59C: - .byte 0x70, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5A8 -ov11_0231E5A8: - .byte 0x64, 0x34, 0x35, 0x70 - .byte 0x33, 0x31, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5B4 -ov11_0231E5B4: - .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5C0 -ov11_0231E5C0: - .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5CC -ov11_0231E5CC: - .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5D8 -ov11_0231E5D8: - .byte 0x64, 0x34, 0x35, 0x70 - .byte 0x33, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5E4 -ov11_0231E5E4: - .byte 0x70, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5F0 -ov11_0231E5F0: - .byte 0x70, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E5FC -ov11_0231E5FC: - .byte 0x70, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E608 -ov11_0231E608: - .byte 0x70, 0x31, 0x35, 0x70 - .byte 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E614 -ov11_0231E614: - .byte 0x67, 0x30, 0x31, 0x70, 0x31, 0x30, 0x63, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E620 -ov11_0231E620: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x38, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E62C -ov11_0231E62C: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x35, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E638 -ov11_0231E638: - .byte 0x73, 0x31, 0x33, 0x70 - .byte 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E644 -ov11_0231E644: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x33, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E650 -ov11_0231E650: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E65C -ov11_0231E65C: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E668 -ov11_0231E668: - .byte 0x73, 0x31, 0x33, 0x70 - .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E674 -ov11_0231E674: - .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E680 -ov11_0231E680: - .byte 0x76, 0x32, 0x36, 0x70, 0x31, 0x30, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E68C -ov11_0231E68C: - .byte 0x76, 0x32, 0x36, 0x70, 0x30, 0x37, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E698 -ov11_0231E698: - .byte 0x76, 0x32, 0x36, 0x70 - .byte 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6A4 -ov11_0231E6A4: - .byte 0x76, 0x32, 0x36, 0x70, 0x30, 0x34, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6B0 -ov11_0231E6B0: - .byte 0x76, 0x32, 0x36, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6BC -ov11_0231E6BC: - .byte 0x76, 0x32, 0x35, 0x70, 0x30, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6C8 -ov11_0231E6C8: - .byte 0x76, 0x32, 0x35, 0x70 - .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6D4 -ov11_0231E6D4: - .byte 0x76, 0x32, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6E0 -ov11_0231E6E0: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6EC -ov11_0231E6EC: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E6F8 -ov11_0231E6F8: - .byte 0x76, 0x32, 0x34, 0x70 - .byte 0x30, 0x35, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E704 -ov11_0231E704: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E710 -ov11_0231E710: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E71C -ov11_0231E71C: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E728 -ov11_0231E728: - .byte 0x76, 0x32, 0x34, 0x70 - .byte 0x30, 0x34, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E734 -ov11_0231E734: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x34, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E740 -ov11_0231E740: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E74C -ov11_0231E74C: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x33, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E758 -ov11_0231E758: - .byte 0x76, 0x32, 0x34, 0x70 - .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E764 -ov11_0231E764: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E770 -ov11_0231E770: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E77C -ov11_0231E77C: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E788 -ov11_0231E788: - .byte 0x76, 0x32, 0x34, 0x70 - .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E794 -ov11_0231E794: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x31, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7A0 -ov11_0231E7A0: - .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7AC -ov11_0231E7AC: - .byte 0x76, 0x32, 0x33, 0x70, 0x30, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7B8 -ov11_0231E7B8: - .byte 0x76, 0x32, 0x33, 0x70 - .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7C4 -ov11_0231E7C4: - .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x33, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7D0 -ov11_0231E7D0: - .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7DC -ov11_0231E7DC: - .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7E8 -ov11_0231E7E8: - .byte 0x76, 0x32, 0x32, 0x70 - .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E7F4 -ov11_0231E7F4: - .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E800 -ov11_0231E800: - .byte 0x76, 0x32, 0x31, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E80C -ov11_0231E80C: - .byte 0x76, 0x31, 0x39, 0x70, 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E818 -ov11_0231E818: - .byte 0x76, 0x31, 0x39, 0x70 - .byte 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E824 -ov11_0231E824: - .byte 0x76, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E830 -ov11_0231E830: - .byte 0x76, 0x31, 0x35, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E83C -ov11_0231E83C: - .byte 0x76, 0x31, 0x35, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E848 -ov11_0231E848: - .byte 0x76, 0x31, 0x35, 0x70 - .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E854 -ov11_0231E854: - .byte 0x76, 0x31, 0x35, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E860 -ov11_0231E860: - .byte 0x76, 0x31, 0x34, 0x70, 0x30, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E86C -ov11_0231E86C: - .byte 0x76, 0x31, 0x34, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E878 -ov11_0231E878: - .byte 0x76, 0x31, 0x34, 0x70 - .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E884 -ov11_0231E884: - .byte 0x76, 0x31, 0x34, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E890 -ov11_0231E890: - .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E89C -ov11_0231E89C: - .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8A8 -ov11_0231E8A8: - .byte 0x76, 0x31, 0x32, 0x70 - .byte 0x30, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8B4 -ov11_0231E8B4: - .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8C0 -ov11_0231E8C0: - .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8CC -ov11_0231E8CC: - .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8D8 -ov11_0231E8D8: - .byte 0x76, 0x31, 0x32, 0x70 - .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8E4 -ov11_0231E8E4: - .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8F0 -ov11_0231E8F0: - .byte 0x76, 0x31, 0x30, 0x70, 0x30, 0x33, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E8FC -ov11_0231E8FC: - .byte 0x76, 0x31, 0x30, 0x70, 0x30, 0x31, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E908 -ov11_0231E908: - .byte 0x76, 0x31, 0x30, 0x70 - .byte 0x30, 0x31, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E914 -ov11_0231E914: - .byte 0x76, 0x31, 0x30, 0x70, 0x30, 0x31, 0x63, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E920 -ov11_0231E920: - .byte 0x76, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E92C -ov11_0231E92C: - .byte 0x76, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E938 -ov11_0231E938: - .byte 0x76, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E944 -ov11_0231E944: - .byte 0x76, 0x30, 0x34, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E950 -ov11_0231E950: - .byte 0x76, 0x30, 0x33, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E95C -ov11_0231E95C: - .byte 0x76, 0x30, 0x33, 0x70, 0x30, 0x36, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E968 -ov11_0231E968: - .byte 0x76, 0x30, 0x33, 0x70 - .byte 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E974 -ov11_0231E974: - .byte 0x76, 0x30, 0x33, 0x70, 0x30, 0x33, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E980 -ov11_0231E980: - .byte 0x76, 0x30, 0x33, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E98C -ov11_0231E98C: - .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x37, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E998 -ov11_0231E998: - .byte 0x76, 0x30, 0x31, 0x70 - .byte 0x30, 0x35, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9A4 -ov11_0231E9A4: - .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x35, 0x62, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9B0 -ov11_0231E9B0: - .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x35, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9BC -ov11_0231E9BC: - .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9C8 -ov11_0231E9C8: - .byte 0x74, 0x30, 0x31, 0x70 - .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9D4 -ov11_0231E9D4: - .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9E0 -ov11_0231E9E0: - .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9EC -ov11_0231E9EC: - .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231E9F8 -ov11_0231E9F8: - .byte 0x74, 0x30, 0x31, 0x70 - .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA04 -ov11_0231EA04: - .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA10 -ov11_0231EA10: - .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA1C -ov11_0231EA1C: - .byte 0x73, 0x30, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA28 -ov11_0231EA28: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA34 -ov11_0231EA34: - .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA40 -ov11_0231EA40: - .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 -#ifdef EUROPE - .global ov11_0231F414 -ov11_0231F414: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x65, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F420 -ov11_0231F420: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x64, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F42C -ov11_0231F42C: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x63, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F438 -ov11_0231F438: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x62, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F444 -ov11_0231F444: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x61, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F450 -ov11_0231F450: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x65, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F45C -ov11_0231F45C: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x64, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F468 -ov11_0231F468: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x63, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F474 -ov11_0231F474: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x62, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F480 -ov11_0231F480: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x61, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F48C -ov11_0231F48C: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x65, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F498 -ov11_0231F498: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x64, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4A4 -ov11_0231F4A4: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x63, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4B0 -ov11_0231F4B0: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x62, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4BC -ov11_0231F4BC: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4C8 -ov11_0231F4C8: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x65, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4D4 -ov11_0231F4D4: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x64, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4E0 -ov11_0231F4E0: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x63, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231F4EC -ov11_0231F4EC: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x62, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 -#else - .global ov11_0231EA4C -ov11_0231EA4C: - .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA58 -ov11_0231EA58: - .byte 0x73, 0x30, 0x35, 0x70 - .byte 0x30, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA64 -ov11_0231EA64: - .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 -#endif - .global ov11_0231EA70 -ov11_0231EA70: - .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA7C -ov11_0231EA7C: - .byte 0x73, 0x30, 0x31, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA88 -ov11_0231EA88: - .byte 0x73, 0x30, 0x31, 0x70 - .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EA94 -ov11_0231EA94: - .byte 0x73, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAA0 -ov11_0231EAA0: - .byte 0x70, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAAC -ov11_0231EAAC: - .byte 0x70, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAB8 -ov11_0231EAB8: - .byte 0x70, 0x31, 0x31, 0x70 - .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAC4 -ov11_0231EAC4: - .byte 0x70, 0x31, 0x31, 0x70, 0x30, 0x31, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAD0 -ov11_0231EAD0: - .byte 0x70, 0x30, 0x39, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EADC -ov11_0231EADC: - .byte 0x70, 0x30, 0x39, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAE8 -ov11_0231EAE8: - .byte 0x70, 0x30, 0x35, 0x70 - .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EAF4 -ov11_0231EAF4: - .byte 0x70, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB00 -ov11_0231EB00: - .byte 0x70, 0x30, 0x35, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB0C -ov11_0231EB0C: - .byte 0x70, 0x30, 0x33, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB18 -ov11_0231EB18: - .byte 0x70, 0x30, 0x33, 0x70 - .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB24 -ov11_0231EB24: - .byte 0x70, 0x30, 0x33, 0x70, 0x30, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB30 -ov11_0231EB30: - .byte 0x70, 0x30, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB3C -ov11_0231EB3C: - .byte 0x70, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB48 -ov11_0231EB48: - .byte 0x68, 0x30, 0x32, 0x70 - .byte 0x39, 0x39, 0x63, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB54 -ov11_0231EB54: - .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x63, 0x35 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB60 -ov11_0231EB60: - .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB6C -ov11_0231EB6C: - .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB78 -ov11_0231EB78: - .byte 0x68, 0x30, 0x32, 0x70 - .byte 0x39, 0x39, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB84 -ov11_0231EB84: - .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB90 -ov11_0231EB90: - .byte 0x68, 0x30, 0x31, 0x70, 0x39, 0x39, 0x64, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EB9C -ov11_0231EB9C: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x37, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBA8 -ov11_0231EBA8: - .byte 0x67, 0x30, 0x31, 0x70 - .byte 0x30, 0x36, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBB4 -ov11_0231EBB4: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x35, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBC0 -ov11_0231EBC0: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBCC -ov11_0231EBCC: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBD8 -ov11_0231EBD8: - .byte 0x67, 0x30, 0x31, 0x70 - .byte 0x30, 0x31, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBE4 -ov11_0231EBE4: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x63, 0x33 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBF0 -ov11_0231EBF0: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EBFC -ov11_0231EBFC: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC08 -ov11_0231EC08: - .byte 0x67, 0x30, 0x31, 0x70 - .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC14 -ov11_0231EC14: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC20 -ov11_0231EC20: - .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC2C -ov11_0231EC2C: - .byte 0x64, 0x37, 0x39, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC38 -ov11_0231EC38: - .byte 0x64, 0x33, 0x39, 0x70 - .byte 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC44 -ov11_0231EC44: - .byte 0x64, 0x33, 0x34, 0x70, 0x34, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC50 -ov11_0231EC50: - .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC5C -ov11_0231EC5C: - .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC68 -ov11_0231EC68: - .byte 0x64, 0x33, 0x32, 0x70 - .byte 0x34, 0x34, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC74 -ov11_0231EC74: - .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC80 -ov11_0231EC80: - .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC8C -ov11_0231EC8C: - .byte 0x64, 0x33, 0x32, 0x70, 0x31, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EC98 -ov11_0231EC98: - .byte 0x64, 0x33, 0x32, 0x70 - .byte 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECA4 -ov11_0231ECA4: - .byte 0x64, 0x33, 0x31, 0x70, 0x33, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECB0 -ov11_0231ECB0: - .byte 0x64, 0x33, 0x30, 0x70, 0x33, 0x33, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECBC -ov11_0231ECBC: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECC8 -ov11_0231ECC8: - .byte 0x64, 0x32, 0x38, 0x70 - .byte 0x33, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECD4 -ov11_0231ECD4: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECE0 -ov11_0231ECE0: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECEC -ov11_0231ECEC: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ECF8 -ov11_0231ECF8: - .byte 0x64, 0x32, 0x38, 0x70 - .byte 0x33, 0x33, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED04 -ov11_0231ED04: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED10 -ov11_0231ED10: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED1C -ov11_0231ED1C: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED28 -ov11_0231ED28: - .byte 0x64, 0x32, 0x38, 0x70 - .byte 0x33, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED34 -ov11_0231ED34: - .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x32, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED40 -ov11_0231ED40: - .byte 0x64, 0x32, 0x31, 0x70, 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED4C -ov11_0231ED4C: - .byte 0x64, 0x32, 0x31, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED58 -ov11_0231ED58: - .byte 0x64, 0x31, 0x36, 0x70 - .byte 0x33, 0x31, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED64 -ov11_0231ED64: - .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x38 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED70 -ov11_0231ED70: - .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED7C -ov11_0231ED7C: - .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED88 -ov11_0231ED88: - .byte 0x64, 0x31, 0x36, 0x70 - .byte 0x33, 0x31, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231ED94 -ov11_0231ED94: - .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x34 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDA0 -ov11_0231EDA0: - .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDAC -ov11_0231EDAC: - .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDB8 -ov11_0231EDB8: - .byte 0x64, 0x31, 0x36, 0x70 - .byte 0x33, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDC4 -ov11_0231EDC4: - .byte 0x64, 0x31, 0x32, 0x70, 0x34, 0x31, 0x61, 0x32 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDD0 -ov11_0231EDD0: - .byte 0x64, 0x31, 0x32, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDDC -ov11_0231EDDC: - .byte 0x64, 0x30, 0x39, 0x70, 0x31, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDE8 -ov11_0231EDE8: - .byte 0x64, 0x30, 0x39, 0x70 - .byte 0x31, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EDF4 -ov11_0231EDF4: - .byte 0x64, 0x30, 0x39, 0x70, 0x31, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE00 -ov11_0231EE00: - .byte 0x64, 0x30, 0x38, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE0C -ov11_0231EE0C: - .byte 0x64, 0x30, 0x35, 0x70, 0x33, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE18 -ov11_0231EE18: - .byte 0x64, 0x30, 0x34, 0x70 - .byte 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE24 -ov11_0231EE24: - .byte 0x64, 0x30, 0x32, 0x70, 0x33, 0x31, 0x61, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE30 -ov11_0231EE30: - .byte 0x64, 0x30, 0x31, 0x70, 0x31, 0x31, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE3C -ov11_0231EE3C: - .byte 0x64, 0x30, 0x31, 0x70, 0x31, 0x31, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 - .global ov11_0231EE48 -ov11_0231EE48: - .byte 0x64, 0x30, 0x31, 0x70 - .byte 0x31, 0x31, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 - .global OBJECTS -OBJECTS: - .byte 0x0E, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE48 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE3C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE3C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE3C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE3C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE30 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE24 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE0C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE0C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE0C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EE00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDF4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDF4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDE8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDE8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDE8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDDC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDDC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDDC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDD0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDC4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDAC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDA0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDA0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EDA0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED94 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED94 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED94 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED88 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED88 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED88 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED7C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED7C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED7C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED70 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED70 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED70 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED64 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED64 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED64 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED58 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED58 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED58 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED4C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED4C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED4C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED40 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED34 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED28 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED1C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED10 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ED04 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECF8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECEC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECE0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECD4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECC8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECBC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECBC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECBC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECB0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECB0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECB0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231ECA4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x02, 0x01 - .word ov11_0231EC98 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC8C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC80 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC74 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC68 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC5C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC50 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC44 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC38 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC2C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC2C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC20 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC14 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EC08 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBFC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBF0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBE4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBD8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBCC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBCC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBCC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBCC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBC0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBB4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EBA8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB9C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB9C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB9C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB90 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x01 - .word ov11_0231EB84 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x01 - .word ov11_0231EB84 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x02, 0x01 - .word ov11_0231EB84 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x01 - .word ov11_0231EB78 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB6C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB6C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB6C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB60 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB54 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB48 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB3C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB30 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB30 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB30 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB30 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB24 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB18 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB0C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EB00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAF4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAF4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAF4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAE8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAE8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAE8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EADC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EADC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EADC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAD0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAC4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAAC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EAA0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA94 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA88 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA7C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA70 -#ifdef EUROPE - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4EC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4E0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4D4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4C8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4BC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4B0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F4A4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F498 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231F48C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231F480 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231F474 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231F468 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231F45C - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231F450 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231F444 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231F438 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231F42C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231F420 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231F414 -#else - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA64 - .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231EA58 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA4C -#endif - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA40 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA34 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA28 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA28 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA1C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA10 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231EA04 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9EC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9E0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9D4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9C8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9BC - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E9A4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E998 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E98C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E98C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E980 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E980 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E974 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E968 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E968 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E968 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E968 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E95C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E95C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E95C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E95C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E950 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E944 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E938 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E92C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E920 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E914 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E914 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E914 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E914 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E914 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E914 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E908 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E908 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E908 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E908 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E908 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E908 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8FC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8FC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8FC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8FC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8FC - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8FC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8F0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8E4 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8D8 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8CC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8C0 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8B4 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E8A8 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E89C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E890 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E884 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E878 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E86C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E860 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E854 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E854 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E854 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E854 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E854 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E854 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E848 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E848 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E848 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E848 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E848 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E848 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E83C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E830 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E824 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E824 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E824 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E818 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E80C - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E80C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E80C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E800 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7F4 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7E8 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7E8 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7E8 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7E8 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7DC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7C4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7B8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7AC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7AC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7AC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E7A0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E794 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E788 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E77C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E77C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E770 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E764 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E764 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E758 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E758 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E74C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E740 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E734 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E728 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E71C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E710 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E704 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E704 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6EC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6EC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6E0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6D4 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6C8 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6C8 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6C8 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6C8 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6C8 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6BC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6BC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6BC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6BC - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6BC - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6B0 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6B0 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6B0 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E6A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E698 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E698 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E698 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E68C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E68C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E68C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E680 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E674 - .byte 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x01 - .word ov11_0231E668 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E65C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E650 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E644 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E644 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E638 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E62C - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E62C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E620 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E614 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E608 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E5FC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E5F0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 - .word ov11_0231E5E4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E5D8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E5CC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E5C0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E5B4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E5A8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E59C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E590 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E584 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E578 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E56C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E560 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E554 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E548 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E548 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E53C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E530 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E524 -#ifndef EUROPE - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E518 -#endif - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E50C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E500 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4F4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4E8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4DC - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .word ov11_0231E4D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4C4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4B8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4AC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E4A0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E494 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E488 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E47C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E470 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E464 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E458 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E44C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E440 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E434 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E428 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E41C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E410 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E404 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3EC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3E0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3E0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3D4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3C8 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .word ov11_0231E3BC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3A4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3A4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E3A4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E398 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E398 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E38C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E38C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E380 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E374 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E368 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E35C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E350 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E344 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E338 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E32C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E32C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E32C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E320 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E320 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E314 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E314 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E308 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E308 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2FC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2F0 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2E4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2D8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2CC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2C0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2B4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E2A8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E29C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E290 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E284 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E278 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E26C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E260 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E254 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E248 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E23C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E23C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E230 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E224 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E218 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E20C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E200 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1F4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1E8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1DC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1C4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1AC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E1A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E194 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E188 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E17C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E170 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E164 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E158 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E14C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E140 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E134 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E128 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E11C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E110 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E104 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0EC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0E0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0D4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0C8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0BC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0B0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E0A4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E098 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E08C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E080 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E074 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E068 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E05C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E050 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E044 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E038 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E02C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E020 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E014 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231E008 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFFC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFF0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFE4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFD8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFCC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFB4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DFA8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF9C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF90 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF84 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF78 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF6C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF60 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF54 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF48 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF3C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF30 - .byte 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .word ov11_0231DF30 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF24 - .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .word ov11_0231DF18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .word ov11_0231DF18 - .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .word ov11_0231DF0C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00 - .word ov11_0231DF0C - .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .word ov11_0231DF0C - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DF00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEF4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEE8 -#ifndef EUROPE - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEDC -#endif - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DED0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DED0 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEC4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEC4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEC4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEC4 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEB8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEB8 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEAC - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DEA0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE94 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE94 - .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE88 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE7C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE70 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE64 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE58 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .word ov11_0231DE4C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00 - .word GROUND_WAN_FILES_TABLE - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02320858 -ov11_02320858: - .byte 0x01, 0x01, 0x01, 0x00 - .byte 0x01, 0x01, 0x01, 0x00, 0x02, 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01 - .global RECRUITMENT_TABLE_LOCATIONS -RECRUITMENT_TABLE_LOCATIONS: - .byte 0x39, 0x37, 0x3B, 0x4C, 0x10, 0x17, 0x1A, 0x2B - .byte 0x42, 0x3D, 0x52, 0x45, 0x4E, 0x50, 0x50, 0x56, 0xF1, 0x35, 0xF2, 0x54, 0x4A, 0xF3, 0x00, 0x00 - .global RECRUITMENT_TABLE_LEVELS -RECRUITMENT_TABLE_LEVELS: - .byte 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x30, 0x00 - .byte 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x35, 0x00, 0x2B, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2E, 0x00 - .byte 0x28, 0x00, 0x28, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x31, 0x00, 0x37, 0x00 - .global RECRUITMENT_TABLE_SPECIES -RECRUITMENT_TABLE_SPECIES: - .byte 0x99, 0x01, 0x9A, 0x01 - .byte 0x9B, 0x01, 0x9F, 0x01, 0x0A, 0x02, 0x0B, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x10, 0x02 - .byte 0x11, 0x02, 0x15, 0x02, 0x90, 0x00, 0x0F, 0x02, 0x67, 0x04, 0x97, 0x00, 0x14, 0x02, 0x13, 0x02 - .byte 0x12, 0x02, 0xA0, 0x01, 0x9E, 0x01, 0x16, 0x02 - .global ov11_02320904 -ov11_02320904: - .byte 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x73, 0x03 - .byte 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x5C, 0x02, 0x02, 0x00, 0x19, 0x00, 0x02, 0x00, 0x71, 0x02 - .byte 0x03, 0x00, 0x9E, 0x00, 0x03, 0x00, 0xF6, 0x02, 0x04, 0x00, 0xAC, 0x01, 0x04, 0x00, 0x04, 0x04 - .byte 0x05, 0x00, 0xA9, 0x01, 0x05, 0x00, 0x01, 0x04, 0x06, 0x00, 0x9B, 0x00, 0x06, 0x00, 0xF3, 0x02 - .byte 0x07, 0x00, 0x48, 0x01, 0x07, 0x00, 0xA0, 0x03, 0x08, 0x00, 0x34, 0x00, 0x08, 0x00, 0x8C, 0x02 - .byte 0x09, 0x00, 0x98, 0x00, 0x09, 0x00, 0xF0, 0x02, 0x0A, 0x00, 0xE8, 0x01, 0x0A, 0x00, 0x40, 0x04 - .byte 0x0B, 0x00, 0x01, 0x00, 0x0B, 0x00, 0x59, 0x02, 0x0C, 0x00, 0x07, 0x00, 0x0C, 0x00, 0x5F, 0x02 - .byte 0x0D, 0x00, 0x18, 0x01, 0x0D, 0x00, 0x70, 0x03, 0x0E, 0x00, 0x1E, 0x01, 0x0E, 0x00, 0x76, 0x03 - .byte 0x0F, 0x00, 0xA6, 0x01, 0x0F, 0x00, 0xFE, 0x03, 0x10, 0x00, 0x25, 0x00, 0x10, 0x00, 0x7D, 0x02 - .byte 0x11, 0x00, 0x85, 0x00, 0x11, 0x00, 0xDD, 0x02, 0x12, 0x00, 0x02, 0x01, 0x12, 0x00, 0x5A, 0x03 - .byte 0x13, 0x00, 0xB6, 0x01, 0x13, 0x00, 0x0E, 0x04, 0x14, 0x00, 0xE9, 0x01, 0x14, 0x00, 0x41, 0x04 - .byte 0xFF, 0xFF, 0x00, 0x00 - .global ov11_023209B0 -ov11_023209B0: - .byte 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74 - .byte 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x25, 0x64, 0x5B, 0x25, 0x64, 0x5D, 0x0A, 0x00, 0x00, 0x00 - .global ov11_023209CC -ov11_023209CC: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x71, 0x75, 0x69, 0x74, 0x20 - .byte 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x00, 0x00 - .global ov11_023209EC -ov11_023209EC: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72 - .byte 0x6E, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x0A, 0x00, 0x00 - .global ov11_02320A08 -ov11_02320A08: - .byte 0x57, 0x4F, 0x52, 0x4C - .byte 0x44, 0x20, 0x4D, 0x41, 0x50, 0x20, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x65, 0x76 - .byte 0x65, 0x6E, 0x74, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00 - .global ov11_02320A28 -ov11_02320A28: - .byte 0x47, 0x45, 0x54, 0x4F - .byte 0x55, 0x54, 0x20, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64 - .byte 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov11_02320A44 -ov11_02320A44: - .byte 0x6D, 0x61, 0x70, 0x20, 0x63, 0x68, 0x61, 0x6E - .byte 0x67, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x25, 0x64 - .byte 0x0A, 0x00, 0x00, 0x00 - .global ov11_02320A60 -ov11_02320A60: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x20, 0x43, 0x41, 0x4E, 0x43, 0x45, 0x4C, 0x0A - .byte 0x00, 0x00, 0x00, 0x00 - .global ov11_02320A70 -ov11_02320A70: - .byte 0x44, 0x45, 0x4D, 0x4F, 0x20, 0x45, 0x4E, 0x44, 0x0A, 0x00, 0x00, 0x00 - .global ov11_02320A7C -ov11_02320A7C: - .byte 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x25 - .byte 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00 - .global ov11_02320A94 -ov11_02320A94: - .byte 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x44, 0x55 - .byte 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov11_02320AAC -ov11_02320AAC: - .byte 0x52, 0x45, 0x43, 0x4F, 0x56, 0x45, 0x52, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov11_02320AB8 -ov11_02320AB8: - .byte 0x47, 0x41, 0x4D, 0x45 - .byte 0x20, 0x43, 0x41, 0x4E, 0x43, 0x45, 0x4C, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov11_02320AC8 -ov11_02320AC8: - .byte 0x47, 0x41, 0x4D, 0x45 - .byte 0x20, 0x45, 0x4E, 0x44, 0x0A, 0x00, 0x00, 0x00 - .global ov11_02320AD4 -ov11_02320AD4: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61 - .byte 0x69, 0x6E, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x64, 0x61, 0x79, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov11_02320AEC -ov11_02320AEC: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x4E, 0x65, 0x78, 0x74, 0x44 - .byte 0x61, 0x79, 0x20, 0x73, 0x68, 0x6F, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x33, 0x64 - .byte 0x0A, 0x00, 0x00, 0x00 - .global ov11_02320B10 -ov11_02320B10: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x67 - .byte 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33 - .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 - .global ov11_02320B34 -ov11_02320B34: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61 - .byte 0x69, 0x6E, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65 - .byte 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 - .global ov11_02320B58 -ov11_02320B58: - .byte 0x47, 0x72, 0x6F, 0x75 - .byte 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20 - .byte 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_02320B78 -ov11_02320B78: - .byte 0x47, 0x72, 0x6F, 0x75 - .byte 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63 - .byte 0x65, 0x6C, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 - .global ov11_02320B9C -ov11_02320B9C: - .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x65, 0x64, 0x69, 0x74, 0x20 - .byte 0x65, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 - .global ov11_02320BBC -ov11_02320BBC: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - diff --git a/asm/overlay_11_022E9B84.s b/asm/overlay_11_022E9B84.s new file mode 100644 index 00000000..28a2309d --- /dev/null +++ b/asm/overlay_11_022E9B84.s @@ -0,0 +1,11931 @@ + .include "asm/macros.inc" + .include "overlay_11_022E9B84.inc" + + .text + + arm_func_start ov11_022E9B84 +ov11_022E9B84: ; 0x022E9B84 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #2 + bl sub_02002878 + cmp r0, #0 + ldreq r0, _022E9BC8 ; =ov11_02388FC0 + moveq r1, #1 + streq r1, [r0, #8] + streq r4, [r0, #4] + beq _022E9BC0 + ldr r0, _022E9BCC ; =ov11_02389128 + mov r1, r4 + bl sub_0200BB60 + ldr r0, _022E9BC8 ; =ov11_02388FC0 + mov r1, #1 +_022E9BC0: + strb r1, [r0, #1] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E9BC8: .word ov11_02388FC0 +_022E9BCC: .word ov11_02389128 + arm_func_end ov11_022E9B84 + + arm_func_start ov11_022E9BD0 +ov11_022E9BD0: ; 0x022E9BD0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #2 + bl sub_02002878 + cmp r0, #0 + ldreq r0, _022E9C18 ; =ov11_02388FC0 + moveq r1, #2 + streq r1, [r0, #8] + streq r4, [r0, #4] + beq _022E9C0C + ldr r0, _022E9C1C ; =ov11_02389128 + mov r2, r4 + mov r1, #1 + bl sub_0200BB74 + ldr r0, _022E9C18 ; =ov11_02388FC0 +_022E9C0C: + mov r1, #1 + strb r1, [r0, #1] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E9C18: .word ov11_02388FC0 +_022E9C1C: .word ov11_02389128 + arm_func_end ov11_022E9BD0 + + arm_func_start ov11_022E9C20 +ov11_022E9C20: ; 0x022E9C20 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #2 + bl sub_02002878 + cmp r0, #0 + ldreq r0, _022E9C68 ; =ov11_02388FC0 + moveq r1, #3 + streq r1, [r0, #8] + streq r4, [r0, #4] + beq _022E9C5C + ldr r0, _022E9C6C ; =ov11_02389128 + mov r2, r4 + mov r1, #2 + bl sub_0200BB74 + ldr r0, _022E9C68 ; =ov11_02388FC0 +_022E9C5C: + mov r1, #1 + strb r1, [r0, #1] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E9C68: .word ov11_02388FC0 +_022E9C6C: .word ov11_02389128 + arm_func_end ov11_022E9C20 + + arm_func_start ov11_022E9C70 +ov11_022E9C70: ; 0x022E9C70 + stmdb sp!, {r3, lr} + mov lr, r0 + mov ip, r1 + mov r3, r2 + ldr r0, _022E9C94 ; =ov11_02389128 + mov r1, lr + mov r2, ip + bl sub_0200BBF8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9C94: .word ov11_02389128 + arm_func_end ov11_022E9C70 + + arm_func_start ov11_022E9C98 +ov11_022E9C98: ; 0x022E9C98 + ldr ip, _022E9CA8 ; =sub_0200BB60 + mov r1, r0 + ldr r0, _022E9CAC ; =ov11_02389018 + bx ip + .align 2, 0 +_022E9CA8: .word sub_0200BB60 +_022E9CAC: .word ov11_02389018 + arm_func_end ov11_022E9C98 + + arm_func_start ov11_022E9CB0 +ov11_022E9CB0: ; 0x022E9CB0 + ldr ip, _022E9CC4 ; =sub_0200BB74 + mov r2, r0 + ldr r0, _022E9CC8 ; =ov11_02389018 + mov r1, #1 + bx ip + .align 2, 0 +_022E9CC4: .word sub_0200BB74 +_022E9CC8: .word ov11_02389018 + arm_func_end ov11_022E9CB0 + + arm_func_start ov11_022E9CCC +ov11_022E9CCC: ; 0x022E9CCC + ldr ip, _022E9CE0 ; =sub_0200BB74 + mov r2, r0 + ldr r0, _022E9CE4 ; =ov11_02389018 + mov r1, #2 + bx ip + .align 2, 0 +_022E9CE0: .word sub_0200BB74 +_022E9CE4: .word ov11_02389018 + arm_func_end ov11_022E9CCC + + arm_func_start ov11_022E9CE8 +ov11_022E9CE8: ; 0x022E9CE8 + stmdb sp!, {r3, lr} + mov lr, r0 + mov ip, r1 + mov r3, r2 + ldr r0, _022E9D0C ; =ov11_02389018 + mov r1, lr + mov r2, ip + bl sub_0200BBF8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9D0C: .word ov11_02389018 + arm_func_end ov11_022E9CE8 + + arm_func_start ov11_022E9D10 +ov11_022E9D10: ; 0x022E9D10 + stmdb sp!, {r3, lr} + mov r2, r0 + ldr r0, _022E9D40 ; =ov11_02389018 + ldrsh r1, [r0, #0x14] + cmp r1, #0 + ble _022E9D34 + mov r1, #2 + bl sub_0200BB74 + ldmia sp!, {r3, pc} +_022E9D34: + mov r1, #1 + bl sub_0200BB74 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9D40: .word ov11_02389018 + arm_func_end ov11_022E9D10 + + arm_func_start ov11_022E9D44 +ov11_022E9D44: ; 0x022E9D44 + stmdb sp!, {r3, lr} + mov lr, r0 + mov ip, r1 + mov r3, r2 + ldr r0, _022E9D68 ; =ov11_023890E4 + mov r1, lr + mov r2, ip + bl sub_0200BC60 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9D68: .word ov11_023890E4 + arm_func_end ov11_022E9D44 + + arm_func_start ov11_022E9D6C +ov11_022E9D6C: ; 0x022E9D6C + stmdb sp!, {r3, lr} + mov lr, r0 + mov ip, r1 + mov r3, r2 + ldr r0, _022E9D90 ; =ov11_023890E4 + mov r1, lr + mov r2, ip + bl sub_0200BCB0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9D90: .word ov11_023890E4 + arm_func_end ov11_022E9D6C + + arm_func_start ov11_022E9D94 +ov11_022E9D94: ; 0x022E9D94 + stmdb sp!, {r3, lr} + mov lr, r0 + mov ip, r1 + mov r3, r2 + ldr r0, _022E9DB8 ; =ov11_023890A0 + mov r1, lr + mov r2, ip + bl sub_0200BC60 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9DB8: .word ov11_023890A0 + arm_func_end ov11_022E9D94 + + arm_func_start ov11_022E9DBC +ov11_022E9DBC: ; 0x022E9DBC + stmdb sp!, {r3, lr} + mov lr, r0 + mov ip, r1 + mov r3, r2 + ldr r0, _022E9DE0 ; =ov11_023890A0 + mov r1, lr + mov r2, ip + bl sub_0200BCB0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9DE0: .word ov11_023890A0 + arm_func_end ov11_022E9DBC + + arm_func_start ov11_022E9DE4 +ov11_022E9DE4: ; 0x022E9DE4 + stmdb sp!, {r4, r5, r6, lr} + mov r3, #0x44 + mul r4, r0, r3 + mov r6, r2 + ldr r2, _022E9E24 ; =ov11_02388FD4 + mov r0, r0, lsl #1 + ldr r5, _022E9E28 ; =ov11_0238916C + strh r1, [r2, r0] + add r0, r5, r4 + mov r1, #1 + mov r2, #0 + bl sub_0200BB74 + mov r1, r6 + add r0, r5, r4 + bl sub_0200BB60 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E9E24: .word ov11_02388FD4 +_022E9E28: .word ov11_0238916C + arm_func_end ov11_022E9DE4 + + arm_func_start ov11_022E9E2C +ov11_022E9E2C: ; 0x022E9E2C + stmdb sp!, {r4, r5, r6, lr} + mov r3, #0x44 + mul r4, r0, r3 + ldr r3, _022E9E6C ; =ov11_02388FD4 + mov r0, r0, lsl #1 + ldr r5, _022E9E70 ; =ov11_0238916C + strh r1, [r3, r0] + mov r6, r2 + add r0, r5, r4 + mov r1, #0 + bl sub_0200BB60 + mov r2, r6 + add r0, r5, r4 + mov r1, #1 + bl sub_0200BB74 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E9E6C: .word ov11_02388FD4 +_022E9E70: .word ov11_0238916C + arm_func_end ov11_022E9E2C + + arm_func_start ov11_022E9E74 +ov11_022E9E74: ; 0x022E9E74 + stmdb sp!, {r4, r5, r6, lr} + mov r3, #0x44 + mul r4, r0, r3 + mov r6, r2 + ldr r2, _022E9EB4 ; =ov11_02388FD4 + mov r0, r0, lsl #1 + ldr r5, _022E9EB8 ; =ov11_0238916C + strh r1, [r2, r0] + add r0, r5, r4 + mov r1, #1 + mov r2, #0 + bl sub_0200BB74 + mov r1, r6 + add r0, r5, r4 + bl sub_0200BB88 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E9EB4: .word ov11_02388FD4 +_022E9EB8: .word ov11_0238916C + arm_func_end ov11_022E9E74 + + arm_func_start ov11_022E9EBC +ov11_022E9EBC: ; 0x022E9EBC + stmdb sp!, {r3, lr} + ldr ip, _022E9EF4 ; =ov11_0238916C + mov r3, #0x44 + mov lr, r0, lsl #1 + mla r0, r3, r0, ip + sub r2, r2, #0x100 + mov r2, r2, lsl #0x10 + ldr r3, _022E9EF8 ; =ov11_02388FD4 + mov r2, r2, asr #0x10 + strh r1, [r3, lr] + mov r3, r2 + mov r1, #0 + bl sub_0200BBF8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9EF4: .word ov11_0238916C +_022E9EF8: .word ov11_02388FD4 + arm_func_end ov11_022E9EBC + + arm_func_start ov11_022E9EFC +ov11_022E9EFC: ; 0x022E9EFC + stmdb sp!, {r3, lr} + ldr r0, _022E9F3C ; =ov11_02388FC0 + ldrb r1, [r0] + cmp r1, #0 + ldreqb r0, [r0, #2] + cmpeq r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, _022E9F40 ; =ov11_023890E4 + bl sub_0200BD14 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, _022E9F44 ; =ov11_0238905C + bl sub_0200BD14 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9F3C: .word ov11_02388FC0 +_022E9F40: .word ov11_023890E4 +_022E9F44: .word ov11_0238905C + arm_func_end ov11_022E9EFC + + arm_func_start ov11_022E9F48 +ov11_022E9F48: ; 0x022E9F48 + stmdb sp!, {r3, lr} + mov r0, #2 + bl sub_02002878 + cmp r0, #0 + ldreq r0, _022E9F70 ; =ov11_02388FC0 + ldreqb r0, [r0, #1] + ldmeqia sp!, {r3, pc} + ldr r0, _022E9F74 ; =ov11_02389128 + bl sub_0200BD14 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9F70: .word ov11_02388FC0 +_022E9F74: .word ov11_02389128 + arm_func_end ov11_022E9F48 + + arm_func_start IsScreenFadeInProgress +IsScreenFadeInProgress: ; 0x022E9F78 + stmdb sp!, {r3, lr} + ldr r0, _022E9F9C ; =ov11_023890A0 + bl sub_0200BD14 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, _022E9FA0 ; =ov11_02389018 + bl sub_0200BD14 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9F9C: .word ov11_023890A0 +_022E9FA0: .word ov11_02389018 + arm_func_end IsScreenFadeInProgress + + arm_func_start ov11_022E9FA4 +ov11_022E9FA4: ; 0x022E9FA4 + ldr r1, _022E9FC4 ; =ov11_02388FD4 + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022E9FC4: .word ov11_02388FD4 + arm_func_end ov11_022E9FA4 + + arm_func_start ov11_022E9FC8 +ov11_022E9FC8: ; 0x022E9FC8 + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _022E9FE0 + ldr r0, _022E9FEC ; =ov11_02389128 + bl GetFadeStatus + ldmia sp!, {r3, pc} +_022E9FE0: + ldr r0, _022E9FF0 ; =ov11_02389018 + bl GetFadeStatus + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9FEC: .word ov11_02389128 +_022E9FF0: .word ov11_02389018 + arm_func_end ov11_022E9FC8 + + arm_func_start ov11_022E9FF4 +ov11_022E9FF4: ; 0x022E9FF4 + ldr r0, _022EA000 ; =ov11_0238905C + ldrsh r0, [r0, #0x14] + bx lr + .align 2, 0 +_022EA000: .word ov11_0238905C + arm_func_end ov11_022E9FF4 + + arm_func_start ov11_022EA004 +ov11_022EA004: ; 0x022EA004 + ldr r0, _022EA010 ; =ov11_02389128 + ldrsh r0, [r0, #0x14] + bx lr + .align 2, 0 +_022EA010: .word ov11_02389128 + arm_func_end ov11_022EA004 + + arm_func_start ov11_022EA014 +ov11_022EA014: ; 0x022EA014 + ldr r0, _022EA020 ; =ov11_02389018 + ldrsh r0, [r0, #0x14] + bx lr + .align 2, 0 +_022EA020: .word ov11_02389018 + arm_func_end ov11_022EA014 + + arm_func_start ov11_022EA024 +ov11_022EA024: ; 0x022EA024 + stmdb sp!, {r3, lr} + ldr r0, _022EA0B4 ; =ov11_02388FC0 + ldr r1, [r0, #8] + cmp r1, #0 + beq _022EA0A0 + cmp r1, #1 + beq _022EA054 + cmp r1, #2 + beq _022EA064 + cmp r1, #3 + beq _022EA078 + b _022EA088 +_022EA054: + ldr r1, [r0, #4] + ldr r0, _022EA0B8 ; =ov11_02389128 + bl sub_0200BB60 + b _022EA088 +_022EA064: + ldr r2, [r0, #4] + ldr r0, _022EA0B8 ; =ov11_02389128 + mov r1, #1 + bl sub_0200BB74 + b _022EA088 +_022EA078: + ldr r2, [r0, #4] + ldr r0, _022EA0B8 ; =ov11_02389128 + mov r1, #2 + bl sub_0200BB74 +_022EA088: + ldr r0, _022EA0B4 ; =ov11_02388FC0 + mov r1, #0 + str r1, [r0, #8] + mov r1, #1 + strb r1, [r0, #1] + ldmia sp!, {r3, pc} +_022EA0A0: + ldr r0, _022EA0B8 ; =ov11_02389128 + bl sub_0200BD14 + ldr r1, _022EA0B4 ; =ov11_02388FC0 + strb r0, [r1, #1] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EA0B4: .word ov11_02388FC0 +_022EA0B8: .word ov11_02389128 + arm_func_end ov11_022EA024 + + arm_func_start ov11_022EA0BC +ov11_022EA0BC: ; 0x022EA0BC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _022EA7EC ; =ov11_023890E4 + mov r4, #1 + bl sub_0200BD50 + ldr r0, _022EA7F0 ; =ov11_023890A0 + bl sub_0200BD50 + ldr r0, _022EA7F4 ; =ov11_02388FC0 + ldrb r1, [r0, #2] + cmp r1, #0 + beq _022EA300 + ldr r0, _022EA7F8 ; =ov11_0238905C + bl HandleFadesVeneer + cmp r0, #0 + ldr r0, _022EA7F8 ; =ov11_0238905C + movne r4, #0 + ldrsh r0, [r0, #0x14] + bl ov11_022EA80C + ldr r0, _022EA7FC ; =ov11_02389128 + bl GetFadeStatus + cmp r0, #0 + bne _022EA12C + ldr r1, _022EA7F4 ; =ov11_02388FC0 + ldr r0, _022EA7FC ; =ov11_02389128 + ldr r2, [r1, #0xc] + mov r1, #1 + bl sub_0200BB74 + mov r4, #0 + b _022EA1B4 +_022EA12C: + ldr r0, _022EA7FC ; =ov11_02389128 + bl HandleFadesVeneer + cmp r0, #0 + movne r4, #0 + bne _022EA1B4 + ldr r0, _022EA7FC ; =ov11_02389128 + bl GetFadeStatus + cmp r0, #2 + bne _022EA1B4 + ldr r0, _022EA7F4 ; =ov11_02388FC0 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA1B4 + mov r0, #0 + mov r1, r0 + bl sub_02009194 + mov r0, #1 + mov r1, #0 + bl sub_02009194 + mov r0, #2 + mov r1, #0 + bl sub_02009194 + mov r0, #3 + mov r1, #0 + bl sub_02009194 + mov r0, #4 + mov r1, #0 + bl sub_02009194 + ldr r0, _022EA7FC ; =ov11_02389128 + mov r1, #1 + ldr r2, _022EA7F4 ; =ov11_02388FC0 + ldr r2, [r2, #0xc] + bl sub_0200BB74 + mov r4, #0 +_022EA1B4: + ldr r0, _022EA7FC ; =ov11_02389128 + ldrsh r0, [r0, #0x14] + bl ov11_022EA8A0 + ldr r0, _022EA800 ; =ov11_02389018 + bl GetFadeStatus + cmp r0, #0 + bne _022EA1EC + ldr r1, _022EA7F4 ; =ov11_02388FC0 + ldr r0, _022EA800 ; =ov11_02389018 + ldr r2, [r1, #0xc] + mov r1, #1 + bl sub_0200BB74 + mov r4, #0 + b _022EA264 +_022EA1EC: + ldr r0, _022EA800 ; =ov11_02389018 + bl HandleFadesVeneer + cmp r0, #0 + movne r4, #0 + bne _022EA264 + ldr r0, _022EA800 ; =ov11_02389018 + bl GetFadeStatus + cmp r0, #2 + bne _022EA264 + mov r0, #0 + mov r1, #1 + bl sub_02009194 + mov r0, #1 + mov r1, r0 + bl sub_02009194 + mov r0, #2 + mov r1, #1 + bl sub_02009194 + mov r0, #3 + mov r1, #1 + bl sub_02009194 + mov r0, #4 + mov r1, #1 + bl sub_02009194 + ldr r0, _022EA800 ; =ov11_02389018 + mov r1, #1 + ldr r2, _022EA7F4 ; =ov11_02388FC0 + ldr r2, [r2, #0xc] + bl sub_0200BB74 + mov r4, #0 +_022EA264: + ldr r0, _022EA800 ; =ov11_02389018 + ldrsh r0, [r0, #0x14] + bl ov11_022EA8D4 + cmp r4, #0 + beq _022EA3D4 + ldr r2, _022EA7F4 ; =ov11_02388FC0 + mov r0, #0 + strb r0, [r2, #2] + mov r1, r0 + strb r0, [r2] + bl sub_020091B0 + mov r0, #1 + mov r1, #0 + bl sub_020091B0 + mov r0, #2 + mov r1, #0 + bl sub_020091B0 + mov r0, #3 + mov r1, #0 + bl sub_020091B0 + mov r0, #4 + mov r1, #0 + bl sub_020091B0 + mov r0, #0 + mov r1, #1 + bl sub_020091B0 + mov r0, #1 + mov r1, r0 + bl sub_020091B0 + mov r0, #2 + mov r1, #1 + bl sub_020091B0 + mov r0, #3 + mov r1, #1 + bl sub_020091B0 + mov r0, #4 + mov r1, #1 + bl sub_020091B0 + b _022EA3D4 +_022EA300: + ldrb r0, [r0] + cmp r0, #0 + beq _022EA398 + ldr r0, _022EA7F8 ; =ov11_0238905C + bl HandleFadesVeneer + cmp r0, #0 + ldr r0, _022EA7F8 ; =ov11_0238905C + movne r4, #0 + ldrsh r0, [r0, #0x14] + bl ov11_022EA80C + ldr r0, _022EA7FC ; =ov11_02389128 + bl GetFadeStatus + cmp r0, #0 + bne _022EA354 + ldr r1, _022EA7F4 ; =ov11_02388FC0 + ldr r0, _022EA7FC ; =ov11_02389128 + ldr r2, [r1, #0xc] + mov r1, #1 + bl sub_0200BB74 + mov r4, #0 + b _022EA364 +_022EA354: + ldr r0, _022EA7FC ; =ov11_02389128 + bl HandleFadesVeneer + cmp r0, #0 + movne r4, #0 +_022EA364: + ldr r0, _022EA7FC ; =ov11_02389128 + ldrsh r0, [r0, #0x14] + bl ov11_022EA8A0 + ldr r0, _022EA800 ; =ov11_02389018 + bl HandleFadesVeneer + ldr r0, _022EA800 ; =ov11_02389018 + ldrsh r0, [r0, #0x14] + bl ov11_022EA8D4 + cmp r4, #0 + ldrne r0, _022EA7F4 ; =ov11_02388FC0 + movne r1, #0 + strneb r1, [r0] + b _022EA3D4 +_022EA398: + ldr r0, _022EA7F8 ; =ov11_0238905C + bl HandleFadesVeneer + ldr r0, _022EA7F8 ; =ov11_0238905C + ldrsh r0, [r0, #0x14] + bl ov11_022EA80C + ldr r0, _022EA7FC ; =ov11_02389128 + bl HandleFadesVeneer + ldr r0, _022EA7FC ; =ov11_02389128 + ldrsh r0, [r0, #0x14] + bl ov11_022EA8A0 + ldr r0, _022EA800 ; =ov11_02389018 + bl HandleFadesVeneer + ldr r0, _022EA800 ; =ov11_02389018 + ldrsh r0, [r0, #0x14] + bl ov11_022EA8D4 +_022EA3D4: + mov r8, #0 + mov fp, #0x44 + ldr r5, _022EA804 ; =ov11_0238916C + ldr r6, _022EA808 ; =ov11_02388FD4 + mov r4, r8 + mov sl, fp +_022EA3EC: + mov r0, r8, lsl #1 + ldrh r0, [r6, r0] + cmp r0, #0 + beq _022EA7DC + mla r7, r8, sl, r5 + mov r0, r7 + bl HandleFadesVeneer + cmp r0, #0 + beq _022EA6B8 + and sb, r8, #0xff + mla r0, sb, fp, r5 + ldrsh r0, [r0, #0x14] + add r0, r0, #0x100 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #0xff + movgt r7, #0x80 + bgt _022EA444 + cmp r0, #0 + movlt r7, #0 + addge r0, r0, r0, lsr #31 + movge r7, r0, asr #1 +_022EA444: + mov r0, #2 + and r1, r8, #0xff + bl sub_020091B0 + mov r0, #3 + and r1, r8, #0xff + bl sub_020091B0 + and r0, r8, #0xff + bl sub_02009120 + mov r0, sb, lsl #1 + ldrh r0, [r6, r0] + cmp r0, #0xa + addls pc, pc, r0, lsl #2 + b _022EA7DC +_022EA478: ; jump table + b _022EA7DC ; case 0 + b _022EA4A4 ; case 1 + b _022EA4F4 ; case 2 + b _022EA4A4 ; case 3 + b _022EA4F4 ; case 4 + b _022EA544 ; case 5 + b _022EA594 ; case 6 + b _022EA5DC ; case 7 + b _022EA624 ; case 8 + b _022EA66C ; case 9 + b _022EA66C ; case 10 +_022EA4A4: + mov r0, #2 + mov r1, #1 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #3 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + rsb r1, r7, #0x80 + mov r0, r7, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA4F4: + mov r0, #3 + mov r1, #1 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #2 + mov r1, r0 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + rsb r1, r7, #0x80 + mov r0, r7, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA544: + mov r0, #2 + mov r1, r0 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #3 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + rsb r1, r7, #0x80 + mov r0, r7, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA594: + mov r0, #2 + mov r1, #1 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #3 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0x80 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA5DC: + mov r0, #3 + mov r1, #1 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #2 + mov r1, r0 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0x80 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA624: + mov r0, #2 + mov r1, r0 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #3 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0x80 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA66C: + mov r0, #2 + mov r1, #1 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #3 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + mov r0, #4 + mov r1, #2 + and r2, r8, #0xff + bl sub_02009454 + add r0, r7, r7, lsr #31 + mov r0, r0, lsl #0xf + mov r0, r0, asr #0x10 + mov r1, #0x80 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7DC +_022EA6B8: + mov r0, r8, lsl #1 + ldrh r0, [r6, r0] + cmp r0, #0xa + addls pc, pc, r0, lsl #2 + b _022EA7CC +_022EA6CC: ; jump table + b _022EA7CC ; case 0 + b _022EA6F8 ; case 1 + b _022EA758 ; case 2 + b _022EA710 ; case 3 + b _022EA770 ; case 4 + b _022EA7D4 ; case 5 + b _022EA734 ; case 6 + b _022EA794 ; case 7 + b _022EA7D4 ; case 8 + b _022EA7B8 ; case 9 + b _022EA7D4 ; case 10 +_022EA6F8: + and r0, r8, #0xff + bl ov11_022EF53C + mov r0, #3 + and r1, r8, #0xff + bl sub_02009194 + b _022EA7D4 +_022EA710: + and r0, r8, #0xff + bl ov11_022EF53C + ldrsh r0, [r7, #0x14] + cmp r0, #0 + bge _022EA7D4 + mov r0, #2 + and r1, r8, #0xff + bl sub_02009194 + b _022EA7D4 +_022EA734: + ldrsh r0, [r7, #0x14] + cmp r0, #0 + bge _022EA7D4 + and r0, r8, #0xff + bl ov11_022EF53C + mov r0, #2 + and r1, r8, #0xff + bl sub_02009194 + b _022EA7D4 +_022EA758: + and r0, r8, #0xff + bl ov11_022EF53C + mov r0, #2 + and r1, r8, #0xff + bl sub_02009194 + b _022EA7D4 +_022EA770: + and r0, r8, #0xff + bl ov11_022EF53C + ldrsh r0, [r7, #0x14] + cmp r0, #0 + bge _022EA7D4 + mov r0, #3 + and r1, r8, #0xff + bl sub_02009194 + b _022EA7D4 +_022EA794: + ldrsh r0, [r7, #0x14] + cmp r0, #0 + bge _022EA7D4 + and r0, r8, #0xff + bl ov11_022EF53C + mov r0, #3 + and r1, r8, #0xff + bl sub_02009194 + b _022EA7D4 +_022EA7B8: + mov r0, #0 + mov r1, #0x80 + and r2, r8, #0xff + bl sub_020094C4 + b _022EA7D4 +_022EA7CC: + and r0, r8, #0xff + bl ov11_022EF53C +_022EA7D4: + mov r0, r8, lsl #1 + strh r4, [r6, r0] +_022EA7DC: + add r8, r8, #1 + cmp r8, #2 + blt _022EA3EC + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EA7EC: .word ov11_023890E4 +_022EA7F0: .word ov11_023890A0 +_022EA7F4: .word ov11_02388FC0 +_022EA7F8: .word ov11_0238905C +_022EA7FC: .word ov11_02389128 +_022EA800: .word ov11_02389018 +_022EA804: .word ov11_0238916C +_022EA808: .word ov11_02388FD4 + arm_func_end ov11_022EA0BC + + arm_func_start ov11_022EA80C +ov11_022EA80C: ; 0x022EA80C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + bl Debug_GetDebugFlag + cmp r0, #0 + ldrne r0, _022EA89C ; =ov11_02388FD8 + movne r1, #0 + strneb r1, [r0, #0x2f] + ldmneia sp!, {r4, pc} + cmp r4, #0 + ble _022EA864 + ldr r0, _022EA89C ; =ov11_02388FD8 + mov r1, #0xff + strb r1, [r0, #0x2c] + strb r1, [r0, #0x2d] + strb r1, [r0, #0x2e] + cmp r4, #0x100 + strgeb r1, [r0, #0x2f] + strltb r4, [r0, #0x2f] + ldr r0, _022EA89C ; =ov11_02388FD8 + bl sub_0201F2A0 + ldmia sp!, {r4, pc} +_022EA864: + ldmgeia sp!, {r4, pc} + ldr r1, _022EA89C ; =ov11_02388FD8 + mov r2, #0 + strb r2, [r1, #0x2c] + sub r0, r2, #0x100 + strb r2, [r1, #0x2d] + cmp r4, r0 + movle r0, #0xff + strb r2, [r1, #0x2e] + rsbgt r0, r4, #0 + strb r0, [r1, #0x2f] + ldr r0, _022EA89C ; =ov11_02388FD8 + bl sub_0201F2A0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EA89C: .word ov11_02388FD8 + arm_func_end ov11_022EA80C + + arm_func_start ov11_022EA8A0 +ov11_022EA8A0: ; 0x022EA8A0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + bl Debug_GetDebugFlag + cmp r0, #0 + mov r0, #0 + beq _022EA8C8 + mov r1, r0 + bl sub_02008F3C + ldmia sp!, {r4, pc} +_022EA8C8: + mov r1, r4 + bl sub_02008F3C + ldmia sp!, {r4, pc} + arm_func_end ov11_022EA8A0 + + arm_func_start ov11_022EA8D4 +ov11_022EA8D4: ; 0x022EA8D4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + bl Debug_GetDebugFlag + cmp r0, #0 + mov r0, #1 + beq _022EA8FC + mov r1, #0 + bl sub_02008F3C + ldmia sp!, {r4, pc} +_022EA8FC: + mov r1, r4 + bl sub_02008F3C + ldmia sp!, {r4, pc} + arm_func_end ov11_022EA8D4 + + arm_func_start ov11_022EA908 +ov11_022EA908: ; 0x022EA908 + ldr r0, _022EA918 ; =ov11_023891F4 + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_022EA918: .word ov11_023891F4 + arm_func_end ov11_022EA908 + + arm_func_start ov11_022EA91C +ov11_022EA91C: ; 0x022EA91C + bx lr + arm_func_end ov11_022EA91C + + arm_func_start ov11_022EA920 +ov11_022EA920: ; 0x022EA920 + cmp r0, #0xa + beq _022EA938 + cmp r0, #0xb + ldreq r1, _022EA950 ; =ov11_023891F4 + streq r0, [r1] + bx lr +_022EA938: + ldr r0, _022EA950 ; =ov11_023891F4 + ldr r1, [r0] + cmp r1, #0xb + moveq r1, #0 + streq r1, [r0] + bx lr + .align 2, 0 +_022EA950: .word ov11_023891F4 + arm_func_end ov11_022EA920 + + arm_func_start ov11_022EA954 +ov11_022EA954: ; 0x022EA954 + mov r2, #0 + str r2, [r0] + str r2, [r0, #4] + sub r1, r2, #1 + str r1, [r0, #8] + str r2, [r0, #0xc] + str r2, [r0, #0x10] + str r2, [r0, #0x1c] + bx lr + arm_func_end ov11_022EA954 + + arm_func_start ov11_022EA978 +ov11_022EA978: ; 0x022EA978 + mov r2, #0 + str r2, [r0] + sub r1, r2, #1 + str r1, [r0, #8] + str r2, [r0, #0xc] + bx lr + arm_func_end ov11_022EA978 + + arm_func_start ov11_022EA990 +ov11_022EA990: ; 0x022EA990 + stmdb sp!, {r4, lr} + sub r2, r1, #0xa + mov r4, r0 + cmp r2, #1 + ldmlsia sp!, {r4, pc} + cmp r1, #6 + bne _022EA9BC + bl ov11_022EA954 + mov r0, #6 + str r0, [r4] + ldmia sp!, {r4, pc} +_022EA9BC: + ldr r0, [r4, #4] + cmp r0, r1 + ldmeqia sp!, {r4, pc} + str r1, [r4, #4] + mvn r0, #0 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + bl KeyWaitInit + ldmia sp!, {r4, pc} + arm_func_end ov11_022EA990 + + arm_func_start ov11_022EA9E4 +ov11_022EA9E4: ; 0x022EA9E4 + stmdb sp!, {r4, lr} + ldr r1, _022EAA20 ; =ov11_023891F4 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0xb + moveq r0, #0xb + ldmeqia sp!, {r4, pc} + bl ov11_022F75C0 + cmp r0, #0 + movne r0, #0xb + ldmneia sp!, {r4, pc} + ldr r0, [r4, #4] + cmp r0, #0 + ldreq r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022EAA20: .word ov11_023891F4 + arm_func_end ov11_022EA9E4 + + arm_func_start ov11_022EAA24 +ov11_022EAA24: ; 0x022EAA24 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x38 + mov r6, r3 + mvn r4, #0 + ldr r3, _022EAF5C ; =ov11_023891F4 + str r4, [r6] + ldr r3, [r3] + mov sb, r0 + cmp r3, #0xb + mov r8, r1 + mov r7, r2 + ldr r5, [sp, #0x58] + moveq r0, #5 + beq _022EAF54 + ldr r1, [sb] + cmp r1, #5 + bne _022EAA74 + bl ov11_022EA954 + mov r0, #5 + str r0, [sb] +_022EAA74: + ldr r4, [sb, #4] + cmp r4, #0 + ldreq r4, [sb] + cmp r4, #1 + beq _022EAA9C + cmp r4, #6 + beq _022EAE9C + cmp r4, #7 + beq _022EAF2C + b _022EAF40 +_022EAA9C: + bl ov11_022F9074 + cmp r0, #0 + mov r0, #0 + beq _022EAE8C + add r1, sp, #6 + bl GetHeldButtons + add r1, sp, #4 + mov r0, #0 + bl GetPressedButtons + bl ov11_0230D000 + cmp r0, #0 + beq _022EAAEC + bl ov11_0230D220 + cmp r0, #0 + beq _022EAB00 + mov r0, #0 + str r0, [r8] + sub r1, r0, #1 + strb r1, [r7] + b _022EAF54 +_022EAAEC: + mov r0, #0 + str r0, [r8] + sub r1, r0, #1 + strb r1, [r7] + b _022EAF54 +_022EAB00: + ldrh r0, [sp, #6] + tst r0, #2 + movne r0, #0 + mvneq r0, #0 + str r0, [sb, #8] + ldrh r0, [sp, #4] + tst r0, #0x400 + beq _022EAB38 + mov r0, #0x12 + str r0, [r8] + sub r0, r0, #0x13 + strb r0, [r7] + mov r0, #6 + b _022EAF54 +_022EAB38: + tst r0, #1 + movne r0, #0xa + strne r0, [r8] + bne _022EAB84 + tst r0, #0x100 + movne r0, #9 + strne r0, [r8] + bne _022EAB84 + ldr r0, [sb, #8] + cmp r0, #0 + moveq r0, #5 + streq r0, [r8] + beq _022EAB84 + bl GetSpeedOption + cmp r0, #0 + movne r0, #4 + strne r0, [r8] + moveq r0, #3 + streq r0, [r8] +_022EAB84: + ldrh r0, [sp, #6] + bl ov11_022EAF70 + strb r0, [r7] + bl IsTouchScreenUseAnywhere + cmp r0, #0 + beq _022EAE7C + ldrsb r1, [r7] + mvn r0, #0 + cmp r1, r0 + bne _022EAE6C + ldr r0, [r8] + sub r0, r0, #3 + cmp r0, #2 + bhi _022EAE5C + add r0, sp, #0x14 + bl GetReleasedStylus + ldrh r0, [sp, #0x14] + tst r0, #0x10 + bne _022EABE0 + tst r0, #0x400 + bne _022EABE0 + tst r0, #0x20 + beq _022EAC0C +_022EABE0: + add r0, sp, #0xc + add r1, sp, #0x28 + bl ov11_022FBBC8 + add r0, sp, #0 + add r1, sp, #0xc + bl ov11_022FBC0C + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x10] + str r2, [r5] + str r1, [r5, #4] + b _022EAC48 +_022EAC0C: + tst r0, #1 + moveq r0, #0 + streqb r0, [sp] + mvneq r0, #0 + beq _022EAC48 + add r0, sp, #0xc + add r1, sp, #0x18 + bl ov11_022FBBC8 + add r0, sp, #0 + add r1, sp, #0xc + bl ov11_022FBC0C + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x10] + str r2, [r5] + str r1, [r5, #4] +_022EAC48: + mov r1, r0, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #1 + bhi _022EAC64 + ldrb r1, [sp] + cmp r1, #0 + mvneq r0, #0 +_022EAC64: + ldrh r1, [sp, #0x14] + tst r1, #0x20 + beq _022EACE0 + sub r1, r0, #2 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #1 + movls r0, #9 + strls r0, [r8] + bls _022EAE94 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _022EACBC + mov r0, #0xb + str r0, [r8] + sub r0, r0, #0xc + strb r0, [r7] + mov r0, #2 + b _022EAF54 +_022EACBC: + mov r0, #0x11 + str r0, [sb, #0x10] + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x10] + mov r0, #1 + str r2, [sb, #0x14] + str r1, [sb, #0x18] + str r0, [sb, #0x1c] + b _022EAE94 +_022EACE0: + tst r1, #0x10 + bne _022EACF0 + tst r1, #0x400 + beq _022EAD78 +_022EACF0: + cmp r0, #2 + bne _022EAD10 + mov r0, #0x12 + str r0, [r8] + sub r0, r0, #0x13 + strb r0, [r7] + mov r0, #6 + b _022EAF54 +_022EAD10: + cmp r0, #3 + moveq r0, #9 + streq r0, [r8] + beq _022EAE94 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _022EAD48 + mov r0, #0xb + str r0, [r8] + sub r0, r0, #0xc + strb r0, [r7] + mov r0, #2 + b _022EAF54 +_022EAD48: + bl GetSpeedOption + cmp r0, #0 + movne r0, #0x10 + moveq r0, #0xf + str r0, [sb, #0x10] + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x10] + mov r0, #1 + str r2, [sb, #0x14] + str r1, [sb, #0x18] + str r0, [sb, #0x1c] + b _022EAE94 +_022EAD78: + tst r1, #0x200 + beq _022EAD98 + mov r0, #0xe + str r0, [r8] + sub r0, r0, #0xf + strb r0, [r7] + mov r0, #3 + b _022EAF54 +_022EAD98: + tst r1, #0x80 + beq _022EADB8 + mov r0, #5 + str r0, [r8] + sub r0, r0, #6 + strb r0, [r7] + mov r0, #3 + b _022EAF54 +_022EADB8: + tst r1, #0x40 + beq _022EAE10 + tst r1, #0x100 + bne _022EADD4 + mvn r1, #0 + cmp r0, r1 + bne _022EAE00 +_022EADD4: + ldr r0, [r8] + cmp r0, #5 + moveq r0, #0xe + streq r0, [r8] + beq _022EAE00 + bl GetSpeedOption + cmp r0, #0 + movne r0, #0xd + strne r0, [r8] + moveq r0, #0xc + streq r0, [r8] +_022EAE00: + mvn r0, #0 + strb r0, [r7] + mov r0, #3 + b _022EAF54 +_022EAE10: + ldr r0, [sb, #0x10] + cmp r0, #0 + beq _022EAE94 + str r0, [r8] + mvn r0, #0 + strb r0, [r7] + ldr r1, [sb, #0x14] + ldr r0, [sb, #0x18] + str r1, [r5] + str r0, [r5, #4] + ldr r0, [sb, #0x1c] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + str r0, [r6] + mov r0, #0 + str r0, [sb, #0x1c] + mov r0, #4 + b _022EAF54 +_022EAE5C: + mov r0, #0 + str r0, [sb, #0x10] + str r0, [sb, #0x1c] + b _022EAE94 +_022EAE6C: + mov r0, #0 + str r0, [sb, #0x10] + str r0, [sb, #0x1c] + b _022EAE94 +_022EAE7C: + mov r0, #0 + str r0, [sb, #0x10] + str r0, [sb, #0x1c] + b _022EAE94 +_022EAE8C: + str r0, [sb, #0x10] + str r0, [sb, #0x1c] +_022EAE94: + ldr r0, [sb] + b _022EAF54 +_022EAE9C: + add r0, sp, #8 + bl ov11_0230114C + cmp r0, #0 + beq _022EAF40 + bl KeyWaitInit + mov r0, sb + bl ov11_022EA978 + mov r0, #1 + str r0, [sb] + ldr r0, [sp, #8] + cmp r0, #6 + bne _022EAF10 + mov r1, #5 + mov r0, sb + str r1, [sb] + bl ov11_022EA978 + mov r1, #1 + add r0, sp, #2 + str r1, [sb] + bl sub_0206C0FC + ldrsh r0, [sp, #2] + mov r1, #0 + bl ov11_022F7188 + mov r0, #1 + str r0, [r8] + sub r0, r0, #2 + strb r0, [r7] + ldr r0, [sb] + b _022EAF54 +_022EAF10: + mov r0, sb + bl ov11_022EA978 + mov r1, #1 + mov r0, #2 + str r1, [sb] + bl UnlockScriptingLock + b _022EAF40 +_022EAF2C: + mov r0, sb + bl ov11_022EA978 + mov r0, #1 + str r0, [sb] + b _022EAF54 +_022EAF40: + mov r0, #0 + str r0, [r8] + sub r1, r0, #1 + mov r0, r4 + strb r1, [r7] +_022EAF54: + add sp, sp, #0x38 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EAF5C: .word ov11_023891F4 + arm_func_end ov11_022EAA24 + + arm_func_start ov11_022EAF60 +ov11_022EAF60: ; 0x022EAF60 + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x1c] + bx lr + arm_func_end ov11_022EAF60 + + arm_func_start ov11_022EAF70 +ov11_022EAF70: ; 0x022EAF70 + tst r0, #0x40 + beq _022EAF94 + tst r0, #0x10 + movne r0, #3 + bxne lr + tst r0, #0x20 + movne r0, #5 + moveq r0, #4 + bx lr +_022EAF94: + tst r0, #0x80 + beq _022EAFB8 + tst r0, #0x10 + movne r0, #1 + bxne lr + tst r0, #0x20 + movne r0, #7 + moveq r0, #0 + bx lr +_022EAFB8: + tst r0, #0x10 + movne r0, #2 + bxne lr + tst r0, #0x20 + movne r0, #6 + mvneq r0, #0 + bx lr + arm_func_end ov11_022EAF70 + + arm_func_start ov11_022EAFD4 +ov11_022EAFD4: ; 0x022EAFD4 + stmdb sp!, {r4, lr} + mov r4, #0 +_022EAFDC: + mov r0, r4 + bl ov11_022EAFF8 + add r4, r4, #1 + cmp r4, #2 + blt _022EAFDC + ldmia sp!, {r4, pc} + arm_func_end ov11_022EAFD4 + + arm_func_start ov11_022EAFF4 +ov11_022EAFF4: ; 0x022EAFF4 + bx lr + arm_func_end ov11_022EAFF4 + + arm_func_start ov11_022EAFF8 +ov11_022EAFF8: ; 0x022EAFF8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r3, _022EB07C ; =ov11_023891F8 + ldr r2, _022EB080 ; =ov11_02320BBC + mov r1, #0x54 + ldr ip, [r2, #0x1c] + ldr lr, [r2, #0x18] + mla r4, r0, r1, r3 + str lr, [sp] + str ip, [sp, #4] + ldr r3, [r2, #0x20] + ldr r1, [r2, #0x24] + add r2, sp, #0 + str r3, [r4, #0x48] + str r1, [r4, #0x4c] + mov r1, #0 + strb r1, [r4, #0x50] + bl ov11_022EB0E4 + mov r1, #0 + str r1, [r4, #8] + str r1, [r4, #0xc] + str r1, [r4, #0x10] + str r1, [r4, #0x14] + sub r0, r1, #1 + str r0, [r4, #4] + str r1, [r4, #0x30] + str r1, [r4, #0x34] + str r1, [r4, #0x38] + str r1, [r4, #0x3c] + str r1, [r4, #0x40] + str r1, [r4, #0x44] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EB07C: .word ov11_023891F8 +_022EB080: .word ov11_02320BBC + arm_func_end ov11_022EAFF8 + + arm_func_start ov11_022EB084 +ov11_022EB084: ; 0x022EB084 + stmdb sp!, {r3, lr} + ldr lr, _022EB0BC ; =ov11_023891F8 + mov ip, #0x54 + mla ip, r0, ip, lr + ldr r0, [ip, #0x30] + cmp r0, r1 + strne r1, [ip, #0x30] + movne r0, #0 + strne r0, [ip, #0x3c] + strne r0, [ip, #0x40] + strne r0, [ip, #0x44] + str r2, [ip, #0x34] + str r3, [ip, #0x38] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB0BC: .word ov11_023891F8 + arm_func_end ov11_022EB084 + + arm_func_start ov11_022EB0C0 +ov11_022EB0C0: ; 0x022EB0C0 + mov r2, #0x54 + mul r2, r0, r2 + ldr r3, _022EB0E0 ; =ov11_023891F8 + mov r0, #0 + str r1, [r3, r2] + add r1, r3, r2 + str r0, [r1, #8] + bx lr + .align 2, 0 +_022EB0E0: .word ov11_023891F8 + arm_func_end ov11_022EB0C0 + + arm_func_start ov11_022EB0E4 +ov11_022EB0E4: ; 0x022EB0E4 + mov r3, #0x54 + mul r3, r0, r3 + ldr ip, _022EB124 ; =ov11_023891F8 + mov r0, #0 + str r1, [ip, r3] + add r3, ip, r3 + str r0, [r3, #8] + ldr r1, [r3, #0x18] + ldr r0, [r3, #0x1c] + str r1, [r3, #0x20] + str r0, [r3, #0x24] + ldr r1, [r2] + ldr r0, [r2, #4] + str r1, [r3, #0x28] + str r0, [r3, #0x2c] + bx lr + .align 2, 0 +_022EB124: .word ov11_023891F8 + arm_func_end ov11_022EB0E4 + + arm_func_start ov11_022EB128 +ov11_022EB128: ; 0x022EB128 + mov r3, #0x54 + mul r3, r0, r3 + ldr ip, _022EB14C ; =ov11_023891F8 + mov r0, #0 + str r1, [ip, r3] + add r1, ip, r3 + str r0, [r1, #8] + str r2, [r1, #4] + bx lr + .align 2, 0 +_022EB14C: .word ov11_023891F8 + arm_func_end ov11_022EB128 + + arm_func_start ov11_022EB150 +ov11_022EB150: ; 0x022EB150 + stmdb sp!, {r3, lr} + mov ip, #0x54 + mul ip, r0, ip + ldr lr, _022EB198 ; =ov11_023891F8 + mov r0, #1 + str r1, [lr, ip] + add ip, lr, ip + str r0, [ip, #8] + str r3, [ip, #0xc] + ldr r1, [ip, #0x18] + ldr r0, [ip, #0x1c] + str r1, [ip, #0x20] + str r0, [ip, #0x24] + ldr r1, [r2] + ldr r0, [r2, #4] + str r1, [ip, #0x28] + str r0, [ip, #0x2c] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB198: .word ov11_023891F8 + arm_func_end ov11_022EB150 + + arm_func_start ov11_022EB19C +ov11_022EB19C: ; 0x022EB19C + stmdb sp!, {r3, lr} + mov ip, #0x54 + mul ip, r0, ip + ldr lr, _022EB1C8 ; =ov11_023891F8 + mov r0, #1 + str r1, [lr, ip] + add r1, lr, ip + str r0, [r1, #8] + str r3, [r1, #0xc] + str r2, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB1C8: .word ov11_023891F8 + arm_func_end ov11_022EB19C + + arm_func_start ov11_022EB1CC +ov11_022EB1CC: ; 0x022EB1CC + stmdb sp!, {r3, lr} + mov ip, #0x54 + mul ip, r0, ip + ldr lr, _022EB204 ; =ov11_023891F8 + mov r0, #2 + str r1, [lr, ip] + add ip, lr, ip + str r0, [ip, #8] + str r3, [ip, #0xc] + ldr r1, [r2] + ldr r0, [r2, #4] + str r1, [ip, #0x28] + str r0, [ip, #0x2c] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB204: .word ov11_023891F8 + arm_func_end ov11_022EB1CC + + arm_func_start ov11_022EB208 +ov11_022EB208: ; 0x022EB208 + stmdb sp!, {r3, lr} + mov ip, #0x54 + mul ip, r0, ip + ldr lr, _022EB234 ; =ov11_023891F8 + mov r0, #2 + str r1, [lr, ip] + add r1, lr, ip + str r0, [r1, #8] + str r3, [r1, #0xc] + str r2, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB234: .word ov11_023891F8 + arm_func_end ov11_022EB208 + + arm_func_start ov11_022EB238 +ov11_022EB238: ; 0x022EB238 + stmdb sp!, {r3, lr} + mov ip, #0x54 + mul ip, r0, ip + ldr lr, _022EB270 ; =ov11_023891F8 + mov r0, #3 + str r1, [lr, ip] + add ip, lr, ip + str r0, [ip, #8] + str r3, [ip, #0x10] + ldr r1, [r2] + ldr r0, [r2, #4] + str r1, [ip, #0x28] + str r0, [ip, #0x2c] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB270: .word ov11_023891F8 + arm_func_end ov11_022EB238 + + arm_func_start ov11_022EB274 +ov11_022EB274: ; 0x022EB274 + stmdb sp!, {r3, lr} + mov ip, #0x54 + mul ip, r0, ip + ldr lr, _022EB2A0 ; =ov11_023891F8 + mov r0, #3 + str r1, [lr, ip] + add r1, lr, ip + str r0, [r1, #8] + str r3, [r1, #0x10] + str r2, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB2A0: .word ov11_023891F8 + arm_func_end ov11_022EB274 + + arm_func_start ov11_022EB2A4 +ov11_022EB2A4: ; 0x022EB2A4 + mov r1, #0x54 + mul r1, r0, r1 + ldr r0, _022EB2C8 ; =ov11_023891F8 + ldr r0, [r0, r1] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022EB2C8: .word ov11_023891F8 + arm_func_end ov11_022EB2A4 + + arm_func_start ov11_022EB2CC +ov11_022EB2CC: ; 0x022EB2CC + ldr r2, _022EB2F0 ; =ov11_023891F8 + mov r1, #0x54 + mla r1, r0, r1, r2 + ldr r0, [r1, #8] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022EB2F0: .word ov11_023891F8 + arm_func_end ov11_022EB2CC + + arm_func_start ov11_022EB2F4 +ov11_022EB2F4: ; 0x022EB2F4 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r4, r1 + cmp r0, #1 + mov r5, #0 + bne _022EB350 + bl ov11_02310D44 + cmp r0, #0 + beq _022EB330 + add r0, sp, #8 + add r1, sp, #0 + bl ov11_02310DE0 + cmp r0, #0 + movne r5, #1 + b _022EB350 +_022EB330: + bl ov11_0230ED28 + cmp r0, #0 + beq _022EB350 + add r0, sp, #8 + add r1, sp, #0 + bl ov11_0230F28C + cmp r0, #0 + movne r5, #1 +_022EB350: + cmp r5, #0 + bne _022EB36C + add r0, sp, #8 + add r1, sp, #0 + bl ov11_022F1F3C + cmp r0, #0 + movne r5, #1 +_022EB36C: + cmp r5, #0 + beq _022EB3BC + ldr r1, [sp, #8] + ldr r0, [r4] + cmp r0, r1 + strlt r1, [r4] + ldr r1, [sp] + ldr r0, [r4] + cmp r0, r1 + strgt r1, [r4] + ldr r1, [sp, #0xc] + ldr r0, [r4, #4] + cmp r0, r1 + strlt r1, [r4, #4] + ldr r1, [sp, #4] + ldr r0, [r4, #4] + cmp r0, r1 + strgt r1, [r4, #4] + mov r0, #1 + b _022EB3C0 +_022EB3BC: + mov r0, #0 +_022EB3C0: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov11_022EB2F4 + + arm_func_start ov11_022EB3C8 +ov11_022EB3C8: ; 0x022EB3C8 + ldr r3, _022EB3EC ; =ov11_023891F8 + mov r2, #0x54 + mla r3, r0, r2, r3 + ldr r2, [r3, #0x48] + ldr r0, [r3, #0x4c] + str r2, [r1] + str r0, [r1, #4] + ldrb r0, [r3, #0x50] + bx lr + .align 2, 0 +_022EB3EC: .word ov11_023891F8 + arm_func_end ov11_022EB3C8 + + arm_func_start ov11_022EB3F0 +ov11_022EB3F0: ; 0x022EB3F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x5c + ldr r0, _022EB840 ; =ov11_02320BBC + ldr r8, _022EB844 ; =ov11_023891F8 + ldr r7, [r0, #0x10] + ldr r6, [r0, #0x14] + ldr r5, [r0, #8] + ldr sl, [r0, #0xc] + ldr fp, [r0] + ldr r0, [r0, #4] + mvn r4, #1 + str r0, [sp, #4] + str r0, [sp, #0x28] + add r0, r4, #1 + str r7, [sp, #0x34] + str r6, [sp, #0x38] + str r5, [sp, #0x2c] + str sl, [sp, #0x30] + str fp, [sp, #0x24] + mov sb, #0 + str r8, [sp, #0xc] + str r8, [sp, #0x10] + str r8, [sp, #0x14] + str r0, [sp, #0x20] + str r0, [sp, #0x1c] + str r0, [sp, #0x18] +_022EB458: + ldr r0, [r8] + cmp r0, #5 + bne _022EB4A8 + cmp sb, #1 + bne _022EB4A0 + ldr r0, [sp, #0xc] + ldrb r0, [r0, #0x50] + cmp r0, #0 + beq _022EB4A8 + ldr r0, [sp, #0x10] + ldr r1, [r0, #0x48] + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x4c] + str r1, [r8, #0x48] + str r0, [r8, #0x4c] + mov r0, #1 + strb r0, [r8, #0x50] + b _022EB828 +_022EB4A0: + mov r0, #1 + str r0, [r8] +_022EB4A8: + ldr r0, [r8] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _022EB560 +_022EB4B8: ; jump table + b _022EB560 ; case 0 + b _022EB560 ; case 1 + b _022EB4D4 ; case 2 + b _022EB4FC ; case 3 + b _022EB524 ; case 4 + b _022EB560 ; case 5 + b _022EB54C ; case 6 +_022EB4D4: + ldr r0, [r8, #4] + add r1, r8, #0x28 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov11_022F90F4 + ldr r1, [sp, #0x18] + cmp r0, r1 + moveq r0, #1 + streq r0, [r8] + b _022EB560 +_022EB4FC: + ldr r0, [r8, #4] + add r1, r8, #0x28 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov11_022FCCC4 + ldr r1, [sp, #0x1c] + cmp r0, r1 + moveq r0, #1 + streq r0, [r8] + b _022EB560 +_022EB524: + ldr r0, [r8, #4] + add r1, r8, #0x28 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov11_022FE3B0 + ldr r1, [sp, #0x20] + cmp r0, r1 + moveq r0, #1 + streq r0, [r8] + b _022EB560 +_022EB54C: + add r0, r8, #0x28 + bl ov11_0230F25C + cmp r0, #0 + moveq r0, #1 + streq r0, [r8] +_022EB560: + ldr r0, [r8, #8] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _022EB6C4 +_022EB570: ; jump table + b _022EB6C4 ; case 0 + b _022EB584 ; case 1 + b _022EB5F4 ; case 2 + b _022EB650 ; case 3 + b _022EB670 ; case 4 +_022EB584: + str r7, [sp, #0x54] + str r6, [sp, #0x58] + ldr r2, [r8, #0x28] + ldr r1, [r8, #0x18] + add r0, sp, #0x54 + sub r1, r2, r1 + str r1, [sp, #0x54] + ldr r2, [r8, #0x2c] + ldr r1, [r8, #0x1c] + sub r1, r2, r1 + str r1, [sp, #0x58] + ldr r1, [r8, #0xc] + bl ClampComponentAbs + ldr r1, [sp, #0x54] + cmp r1, #0 + ldreq r0, [sp, #0x58] + cmpeq r0, #0 + moveq r0, #0 + streq r0, [r8, #8] + beq _022EB6D4 + ldr r0, [r8, #0x18] + add r0, r0, r1 + str r0, [r8, #0x18] + ldr r1, [r8, #0x1c] + ldr r0, [sp, #0x58] + add r0, r1, r0 + str r0, [r8, #0x1c] + b _022EB6D4 +_022EB5F4: + str r5, [sp, #0x4c] + str sl, [sp, #0x50] + ldr r2, [r8, #0x28] + ldr r1, [r8, #0x18] + add r0, sp, #0x4c + sub r1, r2, r1 + str r1, [sp, #0x4c] + ldr r2, [r8, #0x2c] + ldr r1, [r8, #0x1c] + sub r1, r2, r1 + str r1, [sp, #0x50] + bl EuclideanNorm__020050B0 + str r0, [sp, #8] + ldr r0, [r8, #0xc] + bl _fflt + mov r1, r0 + ldr r0, [sp, #8] + bl _fdiv + bl _ffix + str r0, [r8, #0x10] + cmp r0, #0 + movle r0, #1 + strle r0, [r8, #0x10] +_022EB650: + ldr r1, [r8, #0x18] + ldr r0, [r8, #0x1c] + str r1, [r8, #0x20] + str r0, [r8, #0x24] + mov r0, #0 + str r0, [r8, #0x14] + mov r0, #4 + str r0, [r8, #8] +_022EB670: + ldr r1, [r8, #0x10] + add r0, sp, #0x44 + sub r1, r1, #1 + str r1, [r8, #0x10] + ldr r2, [r8, #0x14] + add r1, r8, #0x20 + add r2, r2, #1 + str r2, [r8, #0x14] + str r2, [sp] + ldr r3, [r8, #0x10] + add r2, r8, #0x28 + bl sub_0200514C + ldr r1, [sp, #0x44] + ldr r0, [sp, #0x48] + str r1, [r8, #0x18] + str r0, [r8, #0x1c] + ldr r0, [r8, #0x10] + cmp r0, #0 + movle r0, #0 + strle r0, [r8, #8] + b _022EB6D4 +_022EB6C4: + ldr r1, [r8, #0x28] + ldr r0, [r8, #0x2c] + str r1, [r8, #0x18] + str r0, [r8, #0x1c] +_022EB6D4: + ldr r0, [r8, #0x30] + cmp r0, #1 + beq _022EB6EC + cmp r0, #2 + beq _022EB734 + b _022EB79C +_022EB6EC: + ldr r0, [r8, #0x3c] + sub r0, r0, #1 + str r0, [r8, #0x3c] + cmp r0, #0 + bgt _022EB7A8 + mov r0, #4 + str r0, [r8, #0x3c] + mov r0, r4 + mov r1, #2 + bl RandRange + mov r0, r0, lsl #0xa + str r0, [r8, #0x40] + mov r0, r4 + mov r1, #2 + bl RandRange + mov r0, r0, lsl #0xa + str r0, [r8, #0x44] + b _022EB7A8 +_022EB734: + ldr r0, [r8, #0x3c] + sub r0, r0, #1 + str r0, [r8, #0x3c] + cmp r0, #0 + bgt _022EB7A8 + ldr r1, [r8, #0x38] + mov r0, r4 + str r1, [r8, #0x3c] + mov r1, #2 + bl RandRange + ldr r2, [r8, #0x34] + mov r1, #2 + mul r0, r2, r0 + mov r0, r0, lsl #8 + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r8, #0x40] + mov r0, r4 + bl RandRange + ldr r1, [r8, #0x34] + mul r0, r1, r0 + mov r0, r0, lsl #8 + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r8, #0x44] + b _022EB7A8 +_022EB79C: + mov r0, #0 + str r0, [r8, #0x40] + str r0, [r8, #0x44] +_022EB7A8: + ldr r0, [sp, #4] + str fp, [sp, #0x3c] + str r0, [sp, #0x40] + ldr r2, [r8, #0x18] + ldr r1, [r8, #0x40] + mov r0, sb + add r1, r2, r1 + sub r1, r1, #0x80 + str r1, [sp, #0x3c] + ldr r3, [r8, #0x1c] + ldr r2, [r8, #0x44] + add r1, sp, #0x3c + add r2, r3, r2 + sub r2, r2, #0xb80 + str r2, [sp, #0x40] + bl ov11_022EB2F4 + cmp r0, #0 + beq _022EB828 + ldr r0, [sp, #0x3c] + sub r1, r0, #0x8000 + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + str r0, [r8, #0x48] + ldr r0, [sp, #0x40] + sub r1, r0, #0x6000 + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + str r0, [r8, #0x4c] + mov r0, #1 + strb r0, [r8, #0x50] +_022EB828: + add sb, sb, #1 + cmp sb, #2 + add r8, r8, #0x54 + blt _022EB458 + add sp, sp, #0x5c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EB840: .word ov11_02320BBC +_022EB844: .word ov11_023891F8 + arm_func_end ov11_022EB3F0 + + arm_func_start ov11_022EB848 +ov11_022EB848: ; 0x022EB848 + stmdb sp!, {r3, lr} + mov r0, #0xe8 + mov r1, #6 + bl MemAlloc + ldr r1, _022EB97C ; =ov11_02324CBC + mov r2, #6 + str r0, [r1] + str r2, [sp] + ldr r0, [r1] + ldr r2, _022EB980 ; =0x04000018 + ldr r3, _022EB984 ; =0x0600E000 + mov r1, #1 + bl sub_0200B2C4 + mov r1, #6 + ldr r0, _022EB97C ; =ov11_02324CBC + str r1, [sp] + ldr r0, [r0] + ldr r2, _022EB988 ; =0x0400001C + ldr r3, _022EB98C ; =0x0600F000 + add r0, r0, #0x1c + mov r1, #1 + bl sub_0200B2C4 + mov r1, #6 + ldr r0, _022EB97C ; =ov11_02324CBC + str r1, [sp] + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x70 + mov r2, #0x100 + mov r3, #0x5000000 + bl sub_0200A124 + ldr r0, _022EB97C ; =ov11_02324CBC + mov r1, #6 + ldr r3, [r0] + mov r2, #0 + str r1, [sp] + add r0, r3, #0x98 + add r1, r3, #0x70 + mov r3, #0x100 + bl sub_0200A478 + mov r0, #6 + str r0, [sp] + ldr r0, _022EB97C ; =ov11_02324CBC + mov r1, #1 + ldr r0, [r0] + ldr r2, _022EB990 ; =0x04001018 + add r0, r0, #0x38 + ldr r3, _022EB994 ; =0x0620E000 + bl sub_0200B2C4 + mov r0, #6 + str r0, [sp] + ldr r0, _022EB97C ; =ov11_02324CBC + mov r1, #1 + ldr r0, [r0] + ldr r2, _022EB998 ; =0x0400101C + add r0, r0, #0x54 + ldr r3, _022EB99C ; =0x0620F000 + bl sub_0200B2C4 + mov r0, #6 + str r0, [sp] + ldr r0, _022EB97C ; =ov11_02324CBC + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + add r0, r0, #0x84 + ldr r3, _022EB9A0 ; =0x05000400 + bl sub_0200A124 + ldr r0, _022EB97C ; =ov11_02324CBC + mov r1, #6 + ldr r3, [r0] + mov r2, #0 + str r1, [sp] + add r0, r3, #0xc0 + add r1, r3, #0x84 + mov r3, #0x100 + bl sub_0200A478 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EB97C: .word ov11_02324CBC +_022EB980: .word 0x04000018 +_022EB984: .word 0x0600E000 +_022EB988: .word 0x0400001C +_022EB98C: .word 0x0600F000 +_022EB990: .word 0x04001018 +_022EB994: .word 0x0620E000 +_022EB998: .word 0x0400101C +_022EB99C: .word 0x0620F000 +_022EB9A0: .word 0x05000400 + arm_func_end ov11_022EB848 + + arm_func_start ov11_022EB9A4 +ov11_022EB9A4: ; 0x022EB9A4 + stmdb sp!, {r3, lr} + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x98 + bl sub_0200A4C4 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x70 + bl sub_0200A158 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + bl sub_0200B314 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x1c + bl sub_0200B314 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0xc0 + bl sub_0200A4C4 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x84 + bl sub_0200A158 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x38 + bl sub_0200B314 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x54 + bl sub_0200B314 + ldr r0, _022EBA40 ; =ov11_02324CBC + ldr r0, [r0] + bl MemFree + ldr r0, _022EBA40 ; =ov11_02324CBC + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EBA40: .word ov11_02324CBC + arm_func_end ov11_022EB9A4 + + arm_func_start ov11_022EBA44 +ov11_022EBA44: ; 0x022EBA44 + stmdb sp!, {r3, lr} + mov r0, #1 + bl ov10_022BDB54 + ldr r1, _022EBA94 ; =ov11_02324CBC + ldr r0, _022EBA98 ; =0x06010000 + ldr r1, [r1] + mov r3, #0 + add r2, r1, #0x98 + bl ov10_022BDB60 + ldr r1, _022EBA94 ; =ov11_02324CBC + ldr r0, _022EBA9C ; =0x06210000 + ldr r2, [r1] + mov r3, #1 + add r1, r2, #0x38 + add r2, r2, #0xc0 + bl ov10_022BDB60 + mov r0, #0x10000 + mov r1, #0xa + bl ov10_022BDBA4 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EBA94: .word ov11_02324CBC +_022EBA98: .word 0x06010000 +_022EBA9C: .word 0x06210000 + arm_func_end ov11_022EBA44 + + arm_func_start ov11_022EBAA0 +ov11_022EBAA0: ; 0x022EBAA0 + ldr r3, _022EBAE4 ; =ov11_02324CBC + ldr ip, [r3] + cmp ip, #0 + moveq r3, #0 + streq r3, [r0] + streq r3, [r1] + streq r3, [r2] + bxeq lr + add ip, ip, #0x38 + str ip, [r0] + ldr r0, [r3] + add r0, r0, #0x54 + str r0, [r1] + ldr r0, [r3] + add r0, r0, #0xc0 + str r0, [r2] + bx lr + .align 2, 0 +_022EBAE4: .word ov11_02324CBC + arm_func_end ov11_022EBAA0 + + arm_func_start ov11_022EBAE8 +ov11_022EBAE8: ; 0x022EBAE8 + stmdb sp!, {r3, lr} + ldr r0, _022EBB10 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x98 + bl ov11_022E9A78 + ldr r0, _022EBB10 ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0xc0 + bl ov11_022E9A90 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EBB10: .word ov11_02324CBC + arm_func_end ov11_022EBAE8 + + arm_func_start ov11_022EBB14 +ov11_022EBB14: ; 0x022EBB14 + stmdb sp!, {r3, lr} + ldr r0, _022EBB3C ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0x98 + bl ov11_022E9AA8 + ldr r0, _022EBB3C ; =ov11_02324CBC + ldr r0, [r0] + add r0, r0, #0xc0 + bl ov11_022E9AC0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EBB3C: .word ov11_02324CBC + arm_func_end ov11_022EBB14 + + + .rodata + .global ov11_02316A3C +ov11_02316A3C: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316A44 +ov11_02316A44: + .byte 0x00, 0x00, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x8A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x2D, 0x03, 0x00, 0x00 + .global ov11_02316A60 +ov11_02316A60: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x63, 0x09, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x34, 0x03, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x2C, 0x03, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x89, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x86, 0x01, 0x00, 0x00 + .word ov11_02316C04 + .byte 0x92, 0x03, 0x00, 0x00 + .global SCRIPT_COMMAND_PARSING_DATA +SCRIPT_COMMAND_PARSING_DATA: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global SCRIPT_OP_CODE_NAMES +SCRIPT_OP_CODE_NAMES: + .byte 0x45, 0x6E, 0x64, 0x00 + .global ov11_02316AFC +ov11_02316AFC: + .byte 0x48, 0x6F, 0x6C, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B04 +ov11_02316B04: + .byte 0x6E, 0x75, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B0C +ov11_02316B0C: + .byte 0x15, 0x16, 0x17, 0x18, 0x19, 0x00, 0x00, 0x00 + .global ov11_02316B14 +ov11_02316B14: + .byte 0x4C, 0x6F, 0x63, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B1C +ov11_02316B1C: + .byte 0x57, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B24 +ov11_02316B24: + .byte 0x4A, 0x75, 0x6D, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B2C +ov11_02316B2C: + .byte 0x43, 0x61, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B34 +ov11_02316B34: + .byte 0x43, 0x61, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316B3C +ov11_02316B3C: + .byte 0x6C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 + .global ov11_02316B44 +ov11_02316B44: + .byte 0x46, 0x6C, 0x61, 0x73, 0x68, 0x00, 0x00, 0x00 + .global ov11_02316B4C +ov11_02316B4C: + .byte 0x54, 0x75, 0x72, 0x6E, 0x33, 0x00, 0x00, 0x00 + .global ov11_02316B54 +ov11_02316B54: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x00 + .global ov11_02316B5C +ov11_02316B5C: + .byte 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x00, 0x00 + .global ov11_02316B64 +ov11_02316B64: + .byte 0x57, 0x61, 0x69, 0x74, 0x4D, 0x65, 0x00, 0x00 + .global ov11_02316B6C +ov11_02316B6C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x00, 0x00 + .global ov11_02316B74 +ov11_02316B74: + .byte 0x55, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x00, 0x00 + .global ov11_02316B7C +ov11_02316B7C: + .byte 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_02316B84 +ov11_02316B84: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x65, 0x00, 0x00 + .global ov11_02316B8C +ov11_02316B8C: + .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x00 + .global ov11_02316B94 +ov11_02316B94: + .byte 0x44, 0x65, 0x73, 0x74, 0x72, 0x6F, 0x79, 0x00 + .global ov11_02316B9C +ov11_02316B9C: + .byte 0x73, 0x65, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00 + .global ov11_02316BA4 +ov11_02316BA4: + .byte 0x6D, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x00 + .global ov11_02316BAC +ov11_02316BAC: + .byte 0x6D, 0x65, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00 + .global ov11_02316BB4 +ov11_02316BB4: + .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x67, 0x6D, 0x00 + .global ov11_02316BBC +ov11_02316BBC: + .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x53, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316BC8 +ov11_02316BC8: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x54, 0x75, 0x72, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316BD4 +ov11_02316BD4: + .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x67, 0x6D, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02316BE0 +ov11_02316BE0: + .byte 0x62, 0x67, 0x6D, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316BEC +ov11_02316BEC: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316BF8 +ov11_02316BF8: + .byte 0x43, 0x61, 0x73, 0x65 + .byte 0x4D, 0x65, 0x6E, 0x75, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316C04 +ov11_02316C04: + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2E, 0x63 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02316C10 +ov11_02316C10: + .byte 0x43, 0x61, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316C1C +ov11_02316C1C: + .byte 0x62, 0x67, 0x6D, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316C28 +ov11_02316C28: + .byte 0x53, 0x65, 0x74, 0x42 + .byte 0x6C, 0x69, 0x6E, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316C34 +ov11_02316C34: + .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x50, 0x6C, 0x61 + .byte 0x79, 0x00, 0x00, 0x00 + .global ov11_02316C40 +ov11_02316C40: + .byte 0x70, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x65, 0x72, 0x00, 0x00, 0x00 + .global ov11_02316C4C +ov11_02316C4C: + .byte 0x53, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x00, 0x00 + .global ov11_02316C58 +ov11_02316C58: + .byte 0x43, 0x61, 0x73, 0x65 + .byte 0x56, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00 + .global ov11_02316C64 +ov11_02316C64: + .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x53, 0x74, 0x6F + .byte 0x70, 0x00, 0x00, 0x00 + .global ov11_02316C70 +ov11_02316C70: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x42, 0x69, 0x74, 0x00, 0x00, 0x00 + .global ov11_02316C7C +ov11_02316C7C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x75, 0x6D, 0x00, 0x00, 0x00 + .global ov11_02316C88 +ov11_02316C88: + .byte 0x43, 0x61, 0x6E, 0x63 + .byte 0x65, 0x6C, 0x43, 0x75, 0x74, 0x00, 0x00, 0x00 + .global ov11_02316C94 +ov11_02316C94: + .byte 0x43, 0x61, 0x73, 0x65, 0x4D, 0x65, 0x6E, 0x75 + .byte 0x32, 0x00, 0x00, 0x00 + .global ov11_02316CA0 +ov11_02316CA0: + .byte 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 + .global ov11_02316CAC +ov11_02316CAC: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x45, 0x64, 0x69, 0x74, 0x00, 0x00 + .global ov11_02316CB8 +ov11_02316CB8: + .byte 0x57, 0x61, 0x69, 0x74 + .byte 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00 + .global ov11_02316CC4 +ov11_02316CC4: + .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x50 + .byte 0x61, 0x6E, 0x00, 0x00 + .global ov11_02316CD0 +ov11_02316CD0: + .byte 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x13, 0x14, 0x21, 0x12, 0x22, 0x23, 0x00 + .global ov11_02316CDC +ov11_02316CDC: + .byte 0x57, 0x61, 0x69, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_02316CE8 +ov11_02316CE8: + .byte 0x66, 0x6C, 0x61, 0x67 + .byte 0x5F, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x00, 0x00 + .global ov11_02316CF4 +ov11_02316CF4: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x48, 0x65, 0x69, 0x67 + .byte 0x68, 0x74, 0x00, 0x00 + .global ov11_02316D00 +ov11_02316D00: + .byte 0x73, 0x6F, 0x75, 0x6E, 0x64, 0x5F, 0x53, 0x74, 0x6F, 0x70, 0x00, 0x00 + .global ov11_02316D0C +ov11_02316D0C: + .byte 0x73, 0x65, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00 + .global ov11_02316D18 +ov11_02316D18: + .byte 0x4A, 0x75, 0x6D, 0x70 + .byte 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_02316D24 +ov11_02316D24: + .byte 0x43, 0x61, 0x6C, 0x6C, 0x43, 0x6F, 0x6D, 0x6D + .byte 0x6F, 0x6E, 0x00, 0x00 + .global ov11_02316D30 +ov11_02316D30: + .byte 0x57, 0x61, 0x69, 0x74, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00 + .global ov11_02316D3C +ov11_02316D3C: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x00 + .global ov11_02316D48 +ov11_02316D48: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x00 + .global ov11_02316D54 +ov11_02316D54: + .byte 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x54 + .byte 0x65, 0x78, 0x74, 0x00 + .global ov11_02316D60 +ov11_02316D60: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x44, 0x65, 0x62, 0x75, 0x67, 0x00 + .global ov11_02316D6C +ov11_02316D6C: + .byte 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 + .global ov11_02316D78 +ov11_02316D78: + .byte 0x53, 0x77, 0x69, 0x74 + .byte 0x63, 0x68, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 + .global ov11_02316D84 +ov11_02316D84: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x56, 0x61 + .byte 0x6C, 0x75, 0x65, 0x00 + .global ov11_02316D90 +ov11_02316D90: + .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x46, 0x75, 0x6C, 0x6C, 0x00 + .global ov11_02316D9C +ov11_02316D9C: + .byte 0x62, 0x67, 0x6D, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00 + .global ov11_02316DA8 +ov11_02316DA8: + .byte 0x53, 0x6C, 0x69, 0x64 + .byte 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00 + .global ov11_02316DB4 +ov11_02316DB4: + .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74 + .byte 0x69, 0x6F, 0x6E, 0x00 + .global ov11_02316DC0 +ov11_02316DC0: + .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x00 + .global ov11_02316DCC +ov11_02316DCC: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316DDC +ov11_02316DDC: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316DEC +ov11_02316DEC: + .byte 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316DFC +ov11_02316DFC: + .byte 0x52, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E0C +ov11_02316E0C: + .byte 0x53, 0x61, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E1C +ov11_02316E1C: + .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E2C +ov11_02316E2C: + .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E3C +ov11_02316E3C: + .byte 0x73, 0x65, 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x50, 0x61, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E4C +ov11_02316E4C: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4D, 0x65, 0x6E, 0x75, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E5C +ov11_02316E5C: + .byte 0x45, 0x6E, 0x64, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E6C +ov11_02316E6C: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E7C +ov11_02316E7C: + .byte 0x53, 0x65, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E8C +ov11_02316E8C: + .byte 0x43, 0x61, 0x73, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316E9C +ov11_02316E9C: + .byte 0x43, 0x61, 0x73, 0x65, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316EAC +ov11_02316EAC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x54, 0x61, 0x6C, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316EBC +ov11_02316EBC: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x43, 0x61, 0x6C, 0x63, 0x42, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316ECC +ov11_02316ECC: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316EDC +ov11_02316EDC: + .byte 0x53, 0x65, 0x74, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316EEC +ov11_02316EEC: + .byte 0x4C, 0x6F, 0x61, 0x64, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316EFC +ov11_02316EFC: + .byte 0x53, 0x65, 0x74, 0x4D, 0x6F, 0x76, 0x65, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316F0C +ov11_02316F0C: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4D, 0x61, 0x69, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02316F1C +ov11_02316F1C: + .byte 0x53, 0x74, 0x6F, 0x70, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316F2C +ov11_02316F2C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316F3C +ov11_02316F3C: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316F4C +ov11_02316F4C: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316F5C +ov11_02316F5C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x6F, 0x64, 0x65, 0x00, 0x00, 0x00 + .global ov11_02316F6C +ov11_02316F6C: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316F7C +ov11_02316F7C: + .byte 0x73, 0x65, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00, 0x00, 0x00 + .global ov11_02316F8C +ov11_02316F8C: + .byte 0x54, 0x75, 0x72, 0x6E, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316F9C +ov11_02316F9C: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316FAC +ov11_02316FAC: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316FBC +ov11_02316FBC: + .byte 0x57, 0x61, 0x69, 0x74, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316FCC +ov11_02316FCC: + .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x67, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x00, 0x00, 0x00 + .global ov11_02316FDC +ov11_02316FDC: + .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 + .global ov11_02316FEC +ov11_02316FEC: + .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02316FFC +ov11_02316FFC: + .byte 0x57, 0x61, 0x69, 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 + .global ov11_0231700C +ov11_0231700C: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x00, 0x00 + .global ov11_0231701C +ov11_0231701C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00 + .global ov11_0231702C +ov11_0231702C: + .byte 0x73, 0x6F, 0x75, 0x6E, 0x64, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00, 0x00 + .global ov11_0231703C +ov11_0231703C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_0231704C +ov11_0231704C: + .byte 0x57, 0x61, 0x69, 0x74, 0x4D, 0x6F, 0x76, 0x65, 0x43, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x00, 0x00 + .global ov11_0231705C +ov11_0231705C: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x46, 0x61, 0x64, 0x65, 0x00, 0x00 + .global ov11_0231706C +ov11_0231706C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x49, 0x6E, 0x00, 0x00 + .global ov11_0231707C +ov11_0231707C: + .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_0231708C +ov11_0231708C: + .byte 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x00, 0x00 + .global ov11_0231709C +ov11_0231709C: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00 + .global ov11_023170AC +ov11_023170AC: + .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00 + .global ov11_023170BC +ov11_023170BC: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_023170CC +ov11_023170CC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4E, 0x6F, 0x74, 0x69, 0x63, 0x65, 0x00, 0x00 + .global ov11_023170DC +ov11_023170DC: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x00 + .global ov11_023170EC +ov11_023170EC: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00 + .global ov11_023170FC +ov11_023170FC: + .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_0231710C +ov11_0231710C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00 + .global ov11_0231711C +ov11_0231711C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00 + .global ov11_0231712C +ov11_0231712C: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x43, 0x61, 0x6C, 0x63, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00 + .global ov11_0231713C +ov11_0231713C: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00, 0x00 + .global ov11_0231714C +ov11_0231714C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x00, 0x00 + .global ov11_0231715C +ov11_0231715C: + .byte 0x62, 0x67, 0x6D, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00, 0x00 + .global ov11_0231716C +ov11_0231716C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00 + .global ov11_0231717C +ov11_0231717C: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_0231718C +ov11_0231718C: + .byte 0x57, 0x61, 0x69, 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_0231719C +ov11_0231719C: + .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00 + .global ov11_023171AC +ov11_023171AC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4B, 0x65, 0x79, 0x57, 0x61, 0x69, 0x74, 0x00 + .global ov11_023171BC +ov11_023171BC: + .byte 0x57, 0x61, 0x69, 0x74, 0x4D, 0x6F, 0x76, 0x65, 0x43, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x00 + .global ov11_023171CC +ov11_023171CC: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x46, 0x61, 0x64, 0x65, 0x00 + .global ov11_023171DC +ov11_023171DC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x00 + .global ov11_023171EC +ov11_023171EC: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00 + .global ov11_023171FC +ov11_023171FC: + .byte 0x50, 0x75, 0x72, 0x73, 0x75, 0x65, 0x54, 0x75, 0x72, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 + .global ov11_0231720C +ov11_0231720C: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_0231721C +ov11_0231721C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x32, 0x00 + .global ov11_0231722C +ov11_0231722C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x00 + .global ov11_0231723C +ov11_0231723C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 + .global ov11_0231724C +ov11_0231724C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x4F, 0x75, 0x74, 0x00 + .global ov11_0231725C +ov11_0231725C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_0231726C +ov11_0231726C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F, 0x75, 0x74, 0x00 + .global ov11_0231727C +ov11_0231727C: + .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x50, 0x6C, 0x61, 0x79, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x00 + .global ov11_0231728C +ov11_0231728C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x49, 0x6E, 0x00 + .global ov11_0231729C +ov11_0231729C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x00 + .global ov11_023172AC +ov11_023172AC: + .byte 0x73, 0x65, 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00 + .global ov11_023172BC +ov11_023172BC: + .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x46, 0x6C, 0x61, 0x67, 0x00 + .global ov11_023172CC +ov11_023172CC: + .byte 0x53, 0x65, 0x74, 0x48, 0x69, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00 + .global ov11_023172DC +ov11_023172DC: + .byte 0x57, 0x61, 0x69, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x32, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 + .global ov11_023172EC +ov11_023172EC: + .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 + .global ov11_023172FC +ov11_023172FC: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x4F, 0x75, 0x74, 0x00 + .global ov11_0231730C +ov11_0231730C: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x6F, 0x72 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02317320 +ov11_02317320: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 + .byte 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317334 +ov11_02317334: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46 + .byte 0x61, 0x64, 0x65, 0x49, 0x6E, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317348 +ov11_02317348: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231735C +ov11_0231735C: + .byte 0x50, 0x75, 0x72, 0x73, 0x75, 0x65, 0x54, 0x75, 0x72, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02317370 +ov11_02317370: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 + .byte 0x4D, 0x6F, 0x64, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317384 +ov11_02317384: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 + .byte 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317398 +ov11_02317398: + .byte 0x62, 0x67, 0x6D, 0x5F + .byte 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_023173AC +ov11_023173AC: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x4F, 0x75, 0x74 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_023173C0 +ov11_023173C0: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74 + .byte 0x65, 0x4F, 0x75, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_023173D4 +ov11_023173D4: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x53 + .byte 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_023173E8 +ov11_023173E8: + .byte 0x63, 0x61, 0x6D, 0x65 + .byte 0x72, 0x61, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00, 0x00, 0x00 + .global ov11_023173FC +ov11_023173FC: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02317410 +ov11_02317410: + .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C + .byte 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317424 +ov11_02317424: + .byte 0x57, 0x61, 0x69, 0x74, 0x45, 0x6E, 0x64, 0x41 + .byte 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317438 +ov11_02317438: + .byte 0x57, 0x61, 0x69, 0x74 + .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231744C +ov11_0231744C: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02317460 +ov11_02317460: + .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x47, 0x65, 0x74, 0x56, 0x61, 0x72, 0x69 + .byte 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317474 +ov11_02317474: + .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x53, 0x65, 0x74 + .byte 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317488 +ov11_02317488: + .byte 0x6D, 0x61, 0x69, 0x6E + .byte 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231749C +ov11_0231749C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4E, 0x6F + .byte 0x77, 0x00, 0x00, 0x00 + .global ov11_023174B0 +ov11_023174B0: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x4F + .byte 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 + .global ov11_023174C4 +ov11_023174C4: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x63, 0x72, 0x65 + .byte 0x65, 0x6E, 0x46, 0x61, 0x64, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 + .global ov11_023174D8 +ov11_023174D8: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 + .global ov11_023174EC +ov11_023174EC: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x50, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63 + .byte 0x65, 0x00, 0x00, 0x00 + .global ov11_02317500 +ov11_02317500: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F + .byte 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 + .global ov11_02317514 +ov11_02317514: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63 + .byte 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 + .global ov11_02317528 +ov11_02317528: + .byte 0x62, 0x61, 0x63, 0x6B + .byte 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00, 0x00 + .global ov11_0231753C +ov11_0231753C: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x4D, 0x6F, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x75 + .byte 0x65, 0x00, 0x00, 0x00 + .global ov11_02317550 +ov11_02317550: + .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x69, 0x74, 0x41, 0x74, 0x74, 0x72 + .byte 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00 + .global ov11_02317564 +ov11_02317564: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x4E, 0x61, 0x72, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02317578 +ov11_02317578: + .byte 0x73, 0x63, 0x72, 0x65 + .byte 0x65, 0x6E, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00 + .global ov11_0231758C +ov11_0231758C: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x4D, 0x6F, 0x64 + .byte 0x65, 0x00, 0x00, 0x00 + .global ov11_023175A0 +ov11_023175A0: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 + .byte 0x41, 0x72, 0x72, 0x6F, 0x77, 0x00, 0x00, 0x00 + .global ov11_023175B4 +ov11_023175B4: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69 + .byte 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 + .global ov11_023175C8 +ov11_023175C8: + .byte 0x73, 0x63, 0x72, 0x65 + .byte 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 + .global ov11_023175DC +ov11_023175DC: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x49, 0x6E, 0x41, 0x6C + .byte 0x6C, 0x00, 0x00, 0x00 + .global ov11_023175F0 +ov11_023175F0: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74 + .byte 0x4C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x00, 0x00 + .global ov11_02317604 +ov11_02317604: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D + .byte 0x6F, 0x76, 0x65, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00, 0x00 + .global ov11_02317618 +ov11_02317618: + .byte 0x63, 0x61, 0x6D, 0x65 + .byte 0x72, 0x61, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00 + .global ov11_0231762C +ov11_0231762C: + .byte 0x54, 0x75, 0x72, 0x6E, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72 + .byte 0x6B, 0x00, 0x00, 0x00 + .global ov11_02317640 +ov11_02317640: + .byte 0x53, 0x65, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E + .byte 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00 + .global ov11_02317654 +ov11_02317654: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x53, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 + .global ov11_02317668 +ov11_02317668: + .byte 0x63, 0x61, 0x6D, 0x65 + .byte 0x72, 0x61, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00, 0x00 + .global ov11_0231767C +ov11_0231767C: + .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65 + .byte 0x74, 0x00, 0x00, 0x00 + .global ov11_02317690 +ov11_02317690: + .byte 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6C, 0x79, 0x41, 0x74, 0x74, 0x72 + .byte 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00 + .global ov11_023176A4 +ov11_023176A4: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x43, 0x61, 0x6C + .byte 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00 + .global ov11_023176B8 +ov11_023176B8: + .byte 0x57, 0x61, 0x69, 0x74 + .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 + .global ov11_023176CC +ov11_023176CC: + .byte 0x69, 0x74, 0x65, 0x6D, 0x5F, 0x53, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6C, 0x65, 0x44, 0x61, 0x74 + .byte 0x61, 0x00, 0x00, 0x00 + .global ov11_023176E0 +ov11_023176E0: + .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x44, 0x75 + .byte 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_023176F4 +ov11_023176F4: + .byte 0x62, 0x67, 0x6D, 0x32, 0x5F, 0x43, 0x68, 0x61 + .byte 0x6E, 0x67, 0x65, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x00, 0x00, 0x00 + .global ov11_02317708 +ov11_02317708: + .byte 0x53, 0x6C, 0x69, 0x64 + .byte 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 + .global ov11_0231771C +ov11_0231771C: + .byte 0x57, 0x61, 0x69, 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x50, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x65 + .byte 0x72, 0x00, 0x00, 0x00 + .global ov11_02317730 +ov11_02317730: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F + .byte 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00 + .global ov11_02317744 +ov11_02317744: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x45, 0x6D, 0x70, 0x74, 0x79, 0x41, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x00 + .global ov11_02317758 +ov11_02317758: + .byte 0x6D, 0x65, 0x73, 0x73 + .byte 0x61, 0x67, 0x65, 0x5F, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x00 + .global ov11_0231776C +ov11_0231776C: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4D, 0x65 + .byte 0x6E, 0x75, 0x00, 0x00 + .global ov11_02317780 +ov11_02317780: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x77, 0x69, 0x74 + .byte 0x63, 0x68, 0x54, 0x61, 0x6C, 0x6B, 0x00, 0x00 + .global ov11_02317794 +ov11_02317794: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x50, 0x6F, 0x73 + .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00 + .global ov11_023177A8 +ov11_023177A8: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00 + .global ov11_023177BC +ov11_023177BC: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x52, 0x65, 0x6D, 0x6F + .byte 0x76, 0x65, 0x00, 0x00 + .global ov11_023177D0 +ov11_023177D0: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E + .byte 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00 + .global ov11_023177E4 +ov11_023177E4: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70 + .byte 0x5F, 0x42, 0x6C, 0x69, 0x6E, 0x6B, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 + .global ov11_023177F8 +ov11_023177F8: + .byte 0x62, 0x61, 0x63, 0x6B + .byte 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_0231780C +ov11_0231780C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x43, 0x68, 0x61, 0x6E + .byte 0x67, 0x65, 0x00, 0x00 + .global ov11_02317820 +ov11_02317820: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65 + .byte 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00 + .global ov11_02317834 +ov11_02317834: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57 + .byte 0x68, 0x69, 0x74, 0x65, 0x4F, 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00, 0x00 + .global ov11_02317848 +ov11_02317848: + .byte 0x73, 0x63, 0x72, 0x65 + .byte 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x00 + .global ov11_0231785C +ov11_0231785C: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74, 0x43, 0x61, 0x6D, 0x65 + .byte 0x72, 0x61, 0x00, 0x00 + .global ov11_02317870 +ov11_02317870: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x61, 0x64, 0x65 + .byte 0x4F, 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00, 0x00 + .global ov11_02317884 +ov11_02317884: + .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72 + .byte 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 + .global ov11_02317898 +ov11_02317898: + .byte 0x73, 0x63, 0x72, 0x65 + .byte 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x49, 0x6E, 0x41, 0x6C, 0x6C, 0x00, 0x00 + .global ov11_023178AC +ov11_023178AC: + .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x75 + .byte 0x72, 0x6E, 0x00, 0x00 + .global ov11_023178C0 +ov11_023178C0: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x32 + .byte 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00 + .global ov11_023178D4 +ov11_023178D4: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D + .byte 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00 + .global ov11_023178E8 +ov11_023178E8: + .byte 0x54, 0x75, 0x72, 0x6E + .byte 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00, 0x00 + .global ov11_023178FC +ov11_023178FC: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75 + .byte 0x6C, 0x74, 0x00, 0x00 + .global ov11_02317910 +ov11_02317910: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65 + .byte 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00, 0x00 + .global ov11_02317924 +ov11_02317924: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00 + .global ov11_02317938 +ov11_02317938: + .byte 0x53, 0x65, 0x74, 0x4F + .byte 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00 + .global ov11_0231794C +ov11_0231794C: + .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x49, 0x6E, 0x69, 0x74, 0x69 + .byte 0x61, 0x6C, 0x00, 0x00 + .global ov11_02317960 +ov11_02317960: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69 + .byte 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 + .global ov11_02317974 +ov11_02317974: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x52, 0x65, 0x73 + .byte 0x65, 0x74, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00, 0x00 + .global ov11_02317988 +ov11_02317988: + .byte 0x53, 0x6C, 0x69, 0x64 + .byte 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 + .global ov11_0231799C +ov11_0231799C: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76 + .byte 0x65, 0x73, 0x00, 0x00 + .global ov11_023179B0 +ov11_023179B0: + .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x54, 0x72 + .byte 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x00, 0x00 + .global ov11_023179C4 +ov11_023179C4: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x4F, 0x6E, 0x6C, 0x79, 0x00 + .global ov11_023179D8 +ov11_023179D8: + .byte 0x6D, 0x65, 0x73, 0x73 + .byte 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x61, 0x69, 0x74, 0x4D, 0x6F, 0x64, 0x65, 0x00 + .global ov11_023179EC +ov11_023179EC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x54 + .byte 0x61, 0x6C, 0x6B, 0x00 + .global ov11_02317A00 +ov11_02317A00: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x77, 0x69, 0x74 + .byte 0x63, 0x68, 0x4D, 0x65, 0x6E, 0x75, 0x32, 0x00 + .global ov11_02317A14 +ov11_02317A14: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x50, 0x6F, 0x73 + .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 + .global ov11_02317A28 +ov11_02317A28: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 + .global ov11_02317A3C +ov11_02317A3C: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x53, 0x74, 0x61, 0x74 + .byte 0x69, 0x6F, 0x6E, 0x00 + .global ov11_02317A50 +ov11_02317A50: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F + .byte 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x00 + .global ov11_02317A64 +ov11_02317A64: + .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x70 + .byte 0x6C, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00 + .global ov11_02317A78 +ov11_02317A78: + .byte 0x53, 0x77, 0x69, 0x74 + .byte 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 + .global ov11_02317A8C +ov11_02317A8C: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x43, 0x61, 0x6D + .byte 0x65, 0x72, 0x61, 0x00 + .global ov11_02317AA0 +ov11_02317AA0: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x4F, 0x66, 0x66 + .byte 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 + .global ov11_02317AB4 +ov11_02317AB4: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 + .byte 0x54, 0x69, 0x74, 0x6C, 0x65, 0x42, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00 + .global ov11_02317AC8 +ov11_02317AC8: + .byte 0x62, 0x61, 0x63, 0x6B + .byte 0x32, 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00 + .global ov11_02317ADC +ov11_02317ADC: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4C, 0x65 + .byte 0x76, 0x65, 0x6C, 0x00 + .global ov11_02317AF0 +ov11_02317AF0: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x46, 0x6C, 0x75, 0x73 + .byte 0x68, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00 + .global ov11_02317B04 +ov11_02317B04: + .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72 + .byte 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 + .global ov11_02317B18 +ov11_02317B18: + .byte 0x73, 0x63, 0x72, 0x65 + .byte 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x00 + .global ov11_02317B2C +ov11_02317B2C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x41, 0x66 + .byte 0x74, 0x65, 0x72, 0x00 + .global ov11_02317B40 +ov11_02317B40: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74 + .byte 0x65, 0x4F, 0x75, 0x74, 0x41, 0x6C, 0x6C, 0x00 + .global ov11_02317B54 +ov11_02317B54: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D + .byte 0x6F, 0x76, 0x65, 0x32, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00 + .global ov11_02317B68 +ov11_02317B68: + .byte 0x77, 0x6F, 0x72, 0x6C + .byte 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 + .global ov11_02317B7C +ov11_02317B7C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x44, 0x65, 0x66, 0x61 + .byte 0x75, 0x6C, 0x74, 0x00 + .global ov11_02317B90 +ov11_02317B90: + .byte 0x54, 0x75, 0x72, 0x6E, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F + .byte 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x32, 0x00 + .global ov11_02317BA4 +ov11_02317BA4: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00 + .global ov11_02317BB8 +ov11_02317BB8: + .byte 0x63, 0x61, 0x6D, 0x65 + .byte 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x73, 0x65, 0x6C, 0x66, 0x00 + .global ov11_02317BCC +ov11_02317BCC: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x44, 0x65, 0x66, 0x61 + .byte 0x75, 0x6C, 0x74, 0x00 + .global ov11_02317BE0 +ov11_02317BE0: + .byte 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x52, 0x65, 0x63, 0x6F, 0x76, 0x65 + .byte 0x72, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00 + .global ov11_02317BF4 +ov11_02317BF4: + .byte 0x64, 0x65, 0x62, 0x75, 0x67, 0x5F, 0x50, 0x72 + .byte 0x69, 0x6E, 0x74, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x00 + .global ov11_02317C08 +ov11_02317C08: + .byte 0x53, 0x6C, 0x69, 0x64 + .byte 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 + .global ov11_02317C1C +ov11_02317C1C: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x4D + .byte 0x6F, 0x64, 0x65, 0x00 + .global ov11_02317C30 +ov11_02317C30: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x50, 0x65, 0x72, 0x66 + .byte 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63, 0x65, 0x00 + .global ov11_02317C44 +ov11_02317C44: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x33, 0x50, 0x6F + .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x00 + .global ov11_02317C58 +ov11_02317C58: + .byte 0x6D, 0x61, 0x69, 0x6E + .byte 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x41, 0x64, 0x76, 0x65, 0x6E, 0x74, 0x75, 0x72, 0x65, 0x00 + .global ov11_02317C6C +ov11_02317C6C: + .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x69, 0x6E, 0x69 + .byte 0x6E, 0x67, 0x32, 0x00 + .global ov11_02317C80 +ov11_02317C80: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F + .byte 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 + .global ov11_02317C94 +ov11_02317C94: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x45, 0x78, 0x70, 0x6C, 0x61, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_02317CA8 +ov11_02317CA8: + .byte 0x57, 0x61, 0x69, 0x74 + .byte 0x4C, 0x6F, 0x63, 0x6B, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_02317CBC +ov11_02317CBC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x45 + .byte 0x6D, 0x70, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317CD4 +ov11_02317CD4: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69 + .byte 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317CEC +ov11_02317CEC: + .byte 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x62, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x41, 0x63 + .byte 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D04 +ov11_02317D04: + .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x4F, 0x75, 0x74 + .byte 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D1C +ov11_02317D1C: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C + .byte 0x69, 0x76, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D34 +ov11_02317D34: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70 + .byte 0x5F, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x4C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D4C +ov11_02317D4C: + .byte 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x41 + .byte 0x72, 0x72, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D64 +ov11_02317D64: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x46 + .byte 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D7C +ov11_02317D7C: + .byte 0x54, 0x75, 0x72, 0x6E, 0x32, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69 + .byte 0x76, 0x65, 0x73, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317D94 +ov11_02317D94: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63 + .byte 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x42, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317DAC +ov11_02317DAC: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69 + .byte 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317DC4 +ov11_02317DC4: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317DDC +ov11_02317DDC: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x44, 0x65, 0x66 + .byte 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317DF4 +ov11_02317DF4: + .byte 0x53, 0x65, 0x74, 0x46, 0x75, 0x6E, 0x63, 0x74 + .byte 0x69, 0x6F, 0x6E, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E0C +ov11_02317E0C: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x41, 0x64, 0x76, 0x65, 0x6E, 0x74, 0x75, 0x72 + .byte 0x65, 0x4C, 0x6F, 0x67, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E24 +ov11_02317E24: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F + .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E3C +ov11_02317E3C: + .byte 0x57, 0x61, 0x69, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x65, 0x72, 0x66, 0x6F + .byte 0x72, 0x6D, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E54 +ov11_02317E54: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x33, 0x50, 0x6F + .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E6C +ov11_02317E6C: + .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x63, 0x75, 0x65 + .byte 0x55, 0x73, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E84 +ov11_02317E84: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x45, 0x6E, 0x66, 0x6F, 0x72, 0x63, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02317E9C +ov11_02317E9C: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65 + .byte 0x73, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00 + .global ov11_02317EB4 +ov11_02317EB4: + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x44, 0x69 + .byte 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x32, 0x00, 0x00, 0x00 + .global ov11_02317ECC +ov11_02317ECC: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x42 + .byte 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x00, 0x00 + .global ov11_02317EE4 +ov11_02317EE4: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 + .byte 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00 + .global ov11_02317EFC +ov11_02317EFC: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6E + .byte 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 + .global ov11_02317F14 +ov11_02317F14: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F + .byte 0x46, 0x61, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00, 0x00 + .global ov11_02317F2C +ov11_02317F2C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x4D, 0x79, 0x50, 0x6F, 0x73 + .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02317F44 +ov11_02317F44: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x53, 0x65, 0x74, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02317F5C +ov11_02317F5C: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x53, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x52 + .byte 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00 + .global ov11_02317F74 +ov11_02317F74: + .byte 0x6D, 0x61, 0x69, 0x6E, 0x5F, 0x45, 0x6E, 0x74 + .byte 0x65, 0x72, 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x00, 0x00, 0x00 + .global ov11_02317F8C +ov11_02317F8C: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72 + .byte 0x6B, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00 + .global ov11_02317FA4 +ov11_02317FA4: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x49, 0x6D, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x00 + .global ov11_02317FBC +ov11_02317FBC: + .byte 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x41, 0x74, 0x74 + .byte 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x00, 0x00 + .global ov11_02317FD4 +ov11_02317FD4: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 + .byte 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00 + .global ov11_02317FEC +ov11_02317FEC: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72 + .byte 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x00, 0x00 + .global ov11_02318004 +ov11_02318004: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63 + .byte 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4E, 0x6F, 0x77, 0x41, 0x66, 0x74, 0x65, 0x72, 0x00, 0x00 + .global ov11_0231801C +ov11_0231801C: + .byte 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x32, 0x5F, 0x57, 0x68, 0x69, 0x74, 0x65, 0x43, 0x68, 0x61 + .byte 0x6E, 0x67, 0x65, 0x41, 0x6C, 0x6C, 0x00, 0x00 + .global ov11_02318034 +ov11_02318034: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D + .byte 0x6F, 0x76, 0x65, 0x32, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_0231804C +ov11_0231804C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x50, 0x6F + .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_02318064 +ov11_02318064: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x53 + .byte 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00 + .global ov11_0231807C +ov11_0231807C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x4D, 0x79, 0x50, 0x6F + .byte 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_02318094 +ov11_02318094: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x50, 0x6F, 0x73 + .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4C, 0x69, 0x76, 0x65, 0x73, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x00 + .global ov11_023180AC +ov11_023180AC: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x50 + .byte 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_023180C4 +ov11_023180C4: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4D, 0x6F, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x75, 0x65, 0x00 + .global ov11_023180DC +ov11_023180DC: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x4C, 0x6F, 0x61, 0x64 + .byte 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_023180F4 +ov11_023180F4: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 + .byte 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64, 0x00 + .global ov11_0231810C +ov11_0231810C: + .byte 0x42, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6E, 0x61, 0x72, 0x69, 0x6F, 0x4E, 0x6F + .byte 0x77, 0x42, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x00 + .global ov11_02318124 +ov11_02318124: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D + .byte 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 + .global ov11_0231813C +ov11_0231813C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x32, 0x4D, 0x79, 0x50 + .byte 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_02318154 +ov11_02318154: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x4D, 0x79, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00 + .global ov11_0231816C +ov11_0231816C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74 + .byte 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00 + .global ov11_02318184 +ov11_02318184: + .byte 0x53, 0x65, 0x74, 0x50, 0x6F, 0x73, 0x69, 0x74 + .byte 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00 + .global ov11_0231819C +ov11_0231819C: + .byte 0x66, 0x6C, 0x61, 0x67, 0x5F, 0x52, 0x65, 0x73, 0x65, 0x74, 0x44, 0x75, 0x6E, 0x67, 0x65, 0x6F + .byte 0x6E, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00 + .global ov11_023181B4 +ov11_023181B4: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x6E, 0x74, 0x65, 0x72 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_023181D0 +ov11_023181D0: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F + .byte 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00 + .global ov11_023181EC +ov11_023181EC: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x52, 0x65, 0x6D, 0x6F + .byte 0x76, 0x65, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318208 +ov11_02318208: + .byte 0x62, 0x61, 0x63, 0x6B + .byte 0x5F, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66 + .byte 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318224 +ov11_02318224: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 + .byte 0x74, 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02318240 +ov11_02318240: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x32 + .byte 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231825C +ov11_0231825C: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69 + .byte 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318278 +ov11_02318278: + .byte 0x77, 0x6F, 0x72, 0x6C + .byte 0x64, 0x6D, 0x61, 0x70, 0x5F, 0x53, 0x65, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50 + .byte 0x6C, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318294 +ov11_02318294: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F + .byte 0x4D, 0x6F, 0x76, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_023182B0 +ov11_023182B0: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F + .byte 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 + .global ov11_023182CC +ov11_023182CC: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63 + .byte 0x75, 0x74, 0x65, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_023182E8 +ov11_023182E8: + .byte 0x4D, 0x6F, 0x76, 0x65 + .byte 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52 + .byte 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00, 0x00 + .global ov11_02318304 +ov11_02318304: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x78, 0x70, 0x6F, 0x72 + .byte 0x74, 0x00, 0x00, 0x00 + .global ov11_02318320 +ov11_02318320: + .byte 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F + .byte 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00, 0x00 + .global ov11_0231833C +ov11_0231833C: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x53, 0x70, 0x65, 0x63 + .byte 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00 + .global ov11_02318358 +ov11_02318358: + .byte 0x73, 0x75, 0x70, 0x65 + .byte 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x43 + .byte 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00 + .global ov11_02318374 +ov11_02318374: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 + .byte 0x74, 0x42, 0x61, 0x63, 0x6B, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66, 0x66, 0x73, 0x65 + .byte 0x74, 0x00, 0x00, 0x00 + .global ov11_02318390 +ov11_02318390: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65 + .byte 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 + .global ov11_023183AC +ov11_023183AC: + .byte 0x63, 0x61, 0x6D, 0x65, 0x72, 0x61, 0x32, 0x5F, 0x4D, 0x6F, 0x76, 0x65, 0x33, 0x50, 0x6F, 0x73 + .byte 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00 + .global ov11_023183C8 +ov11_023183C8: + .byte 0x73, 0x75, 0x70, 0x65 + .byte 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53 + .byte 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00 + .global ov11_023183E4 +ov11_023183E4: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x32, 0x5F, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x41, 0x63, 0x74, 0x69 + .byte 0x6E, 0x67, 0x00, 0x00 + .global ov11_02318400 +ov11_02318400: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74 + .byte 0x68, 0x65, 0x72, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64, 0x00, 0x00 + .global ov11_0231841C +ov11_0231841C: + .byte 0x53, 0x6C, 0x69, 0x64, 0x65, 0x32, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66 + .byte 0x66, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00 + .global ov11_02318438 +ov11_02318438: + .byte 0x53, 0x6C, 0x69, 0x64 + .byte 0x65, 0x33, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74 + .byte 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x00, 0x00 + .global ov11_02318454 +ov11_02318454: + .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5F + .byte 0x46, 0x61, 0x63, 0x65, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x4F, 0x66, 0x66, 0x73 + .byte 0x65, 0x74, 0x00, 0x00 + .global ov11_02318470 +ov11_02318470: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F + .byte 0x41, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x49, 0x6E, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x00 + .global ov11_0231848C +ov11_0231848C: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x53 + .byte 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00 + .global ov11_023184A8 +ov11_023184A8: + .byte 0x62, 0x61, 0x63, 0x6B + .byte 0x32, 0x5F, 0x53, 0x65, 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x72, 0x6F + .byte 0x6C, 0x6C, 0x53, 0x70, 0x65, 0x65, 0x64, 0x00 + .global ov11_023184C4 +ov11_023184C4: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6E + .byte 0x67, 0x53, 0x75, 0x62, 0x00, 0x00, 0x00, 0x00 + .global ov11_023184E4 +ov11_023184E4: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x78, 0x70, 0x6F, 0x72 + .byte 0x74, 0x53, 0x75, 0x62, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318504 +ov11_02318504: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 + .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x45, 0x70, 0x69, 0x73, 0x6F, 0x64, 0x65, 0x42, 0x61 + .byte 0x6E, 0x6E, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318524 +ov11_02318524: + .byte 0x62, 0x61, 0x63, 0x6B, 0x32, 0x5F, 0x53, 0x65 + .byte 0x74, 0x57, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x4F, 0x66 + .byte 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02318544 +ov11_02318544: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69 + .byte 0x6F, 0x6E, 0x53, 0x75, 0x62, 0x00, 0x00, 0x00 + .global ov11_02318564 +ov11_02318564: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 + .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x45, 0x70, 0x69, 0x73, 0x6F, 0x64, 0x65, 0x42, 0x61 + .byte 0x6E, 0x6E, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00 + .global ov11_02318584 +ov11_02318584: + .byte 0x62, 0x61, 0x63, 0x6B, 0x5F, 0x53, 0x65, 0x74 + .byte 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x45, 0x70, 0x69, 0x73, 0x6F, 0x64, 0x65, 0x42, 0x61 + .byte 0x6E, 0x6E, 0x65, 0x72, 0x33, 0x00, 0x00, 0x00 + .global ov11_023185A4 +ov11_023185A4: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73 + .byte 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69 + .byte 0x6F, 0x6E, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_023185C8 +ov11_023185C8: + .byte 0x53, 0x65, 0x74, 0x75 + .byte 0x70, 0x4F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65 + .byte 0x41, 0x6E, 0x64, 0x41, 0x6E, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov11_023185EC +ov11_023185EC: + .byte 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x45, 0x78, 0x65, 0x63 + .byte 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E + .byte 0x53, 0x75, 0x62, 0x00 + .global SCRIPT_OP_CODES +SCRIPT_OP_CODES: + .byte 0x00, 0xFF, 0x00, 0x00 + .global ov11_02318614 +ov11_02318614: + .word ov11_02316B04 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317528 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023177F8 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318208 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023180F4 + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_023170DC + .byte 0x06, 0x05, 0x00, 0x00 + .word ov11_0231721C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231703C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317ECC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023170EC + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_02318504 + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_02318564 + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_02318584 + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_02317AB4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231722C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317EE4 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231848C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318400 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317AC8 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318374 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318224 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231701C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231723C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023171EC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316F5C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317FD4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317384 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317FEC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318524 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023184A8 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316D9C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316C1C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231715C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316BE0 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317398 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316E1C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316C34 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231727C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316C64 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023176F4 + .byte 0x03, 0xFF, 0x01, 0x00 + .word ov11_02316B6C + .byte 0x03, 0xFF, 0x01, 0x00 + .word ov11_02316C70 + .byte 0x02, 0xFF, 0x01, 0x00 + .word ov11_02316D60 + .byte 0x02, 0xFF, 0x01, 0x00 + .word ov11_02316CAC + .byte 0x02, 0xFF, 0x01, 0x00 + .word ov11_023173FC + .byte 0x03, 0xFF, 0x01, 0x00 + .word ov11_023174EC + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_0231749C + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_02318004 + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_0231810C + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_02317B2C + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_02317D94 + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_02316C7C + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_02316D84 + .byte 0x04, 0xFF, 0x01, 0x00 + .word ov11_0231710C + .byte 0x02, 0xFF, 0x01, 0x00 + .word ov11_0231725C + .byte 0x01, 0xFF, 0x01, 0x00 + .word ov11_02316B2C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316D24 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317B54 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02318034 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023178C0 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02318240 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02318240 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317B7C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231804C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023178D4 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_0231825C + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_0231825C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023178FC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317F2C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317604 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02318124 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02318124 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317618 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023173D4 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317DAC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023173E8 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02318064 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317DC4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231813C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317BA4 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02318390 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02318390 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317DDC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02318154 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317BB8 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_023183AC + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_023183AC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317BCC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231807C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317910 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02318294 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02318294 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317924 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317654 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317F44 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317668 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_0231816C + .byte 0x00, 0xFF, 0x01, 0x00 + .word ov11_02316C88 + .byte 0x01, 0xFF, 0x01, 0x00 + .word ov11_02317BE0 + .byte 0x02, 0xFF, 0x01, 0x00 + .word ov11_02316B34 + .byte 0x02, 0x00, 0x01, 0x00 + .word ov11_02316BF8 + .byte 0x02, 0xFF, 0x01, 0x00 + .word ov11_02316C94 + .byte 0x03, 0xFF, 0x01, 0x00 + .word ov11_02316E9C + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_02316C10 + .byte 0x03, 0xFF, 0x01, 0x00 + .word ov11_02316C58 + .byte 0x03, 0xFF, 0x01, 0x00 + .word ov11_02316E8C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316E2C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316DC0 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023172BC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317BF4 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_02316D54 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316B94 + .byte 0x00, 0xFF, 0x00, 0x00 + .word SCRIPT_OP_CODE_NAMES + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316E5C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316FDC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316FEC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316EBC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231712C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023176A4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316CE8 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316ECC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316BEC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_0231819C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317974 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317E0C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317C1C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317F5C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317C30 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231744C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316B44 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316AFC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317460 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316BBC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023176CC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317474 + .byte 0x01, 0xFF, 0x01, 0x00 + .word ov11_02316B24 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316D18 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B3C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316EEC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B14 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317C58 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023176E0 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317488 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317F74 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317E6C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023179B0 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317C6C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231719C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316BA4 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316BAC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_0231700C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317E84 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_02317C94 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318454 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_02317FA4 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023171AC + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_02316F0C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316E4C + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_0231753C + .byte 0x02, 0x01, 0x00, 0x00 + .word ov11_02317564 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_023170CC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317744 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317758 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231730C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023171DC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317CBC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023179C4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023180AC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023179D8 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023179EC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231776C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317A00 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023180C4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317780 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_02316EAC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316F3C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317794 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_023174D8 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_023174D8 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317A14 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317A14 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023182E8 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316F9C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023177A8 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317500 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02317500 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317A28 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317A28 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02318320 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316F4C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316CF4 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316E6C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023175B4 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317E9C + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317348 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02317348 + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_02317CD4 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_023177D0 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023177D0 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316D48 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316BC8 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B7C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316D6C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316C40 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231708C + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_023171FC + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_0231735C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023170AC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317FBC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317550 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317D04 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317A64 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316DFC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316B5C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316E0C + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317578 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317D64 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316F2C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317334 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231716C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023174B0 + .byte 0x08, 0xFF, 0x00, 0x00 + .word ov11_0231780C + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_0231706C + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_023172FC + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317820 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317EFC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231714C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023175C8 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231724C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317834 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317848 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317F14 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231711C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023175DC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231726C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317870 + .byte 0x08, 0xFF, 0x00, 0x00 + .word ov11_02317AF0 + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_0231728C + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_023173AC + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317B18 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_0231801C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231729C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317898 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023173C0 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317B40 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316E3C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023172AC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316D0C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B8C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316D90 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316CC4 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316F7C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B9C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316EDC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316DEC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316C28 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316E7C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317640 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316CA0 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317DF4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316C4C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023172CC + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_02316EFC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317938 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316DB4 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_0231794C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317410 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_023172EC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231767C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02318184 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317690 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023185C8 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231717C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317C08 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317960 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02317960 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317E24 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317E24 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231841C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023170BC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317C44 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317988 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02317988 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317E54 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317E54 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02318438 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316DA8 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316FAC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231799C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02318094 + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317708 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_02317708 + .byte 0x06, 0xFF, 0x00, 0x00 + .word ov11_02317F8C + .byte 0xFF, 0xFF, 0x00, 0x00 + .word ov11_02317C80 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317C80 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231702C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316D00 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316F1C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317730 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02318470 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023182B0 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023184C4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023182CC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023181B4 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023183C8 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023185A4 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023185EC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02318544 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02318304 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023184E4 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023180DC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023177BC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023181D0 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023181EC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231833C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317A3C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02318358 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317A50 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023183E4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B54 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231720C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317D1C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317EB4 + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02317A78 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231758C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316D78 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316DDC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231713C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317ADC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316DCC + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02316D3C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231709C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_0231707C + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317B04 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_02317D7C + .byte 0x08, 0xFF, 0x00, 0x00 + .word ov11_02317884 + .byte 0x03, 0xFF, 0x00, 0x00 + .word ov11_023178AC + .byte 0x04, 0xFF, 0x00, 0x00 + .word ov11_02316B4C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316F8C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_023178E8 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02317B90 + .byte 0x05, 0xFF, 0x00, 0x00 + .word ov11_0231762C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B74 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B1C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316FBC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023170FC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023172DC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316BB4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316BD4 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316FCC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316CDC + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317424 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317438 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023176B8 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317E3C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316D30 + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316FFC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231718C + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_0231771C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317CA8 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B64 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_0231704C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023171BC + .byte 0x02, 0xFF, 0x00, 0x00 + .word ov11_02316CB8 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_0231705C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023174C4 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_023171CC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02316B84 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317514 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02316F6C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317CEC + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023177E4 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317D34 + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317D4C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317A8C + .byte 0x00, 0xFF, 0x00, 0x00 + .word ov11_02317AA0 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023175A0 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_0231785C + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_023175F0 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317320 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov11_02317B68 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02318278 + .byte 0x01, 0xFF, 0x00, 0x00 + .word ov11_02317370 + .global OVERLAY11_DEBUG_STRINGS +OVERLAY11_DEBUG_STRINGS: + .byte 0x65, 0x78, 0x65, 0x63 + .byte 0x75, 0x74, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20 + .byte 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x42, 0x00 + .global ov11_02319224 +ov11_02319224: + .byte 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20 + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F + .byte 0x72, 0x20, 0x43, 0x00 + .global ov11_02319240 +ov11_02319240: + .byte 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x25, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319260 +ov11_02319260: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x5F, 0x43 + .byte 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x4D, 0x45, 0x4E, 0x55, 0x20, 0x72, 0x65, 0x73, 0x75 + .byte 0x6C, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov11_02319284 +ov11_02319284: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61 + .byte 0x74, 0x61, 0x5F, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x50, 0x72, 0x6F, 0x63, 0x65 + .byte 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 + .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 + .global ov11_023192B4 +ov11_023192B4: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61 + .byte 0x74, 0x61, 0x5F, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x50, 0x72, 0x6F, 0x63, 0x65 + .byte 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74 + .byte 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_023192E8 +ov11_023192E8: + .byte 0x4D, 0x45, 0x53, 0x53 + .byte 0x41, 0x47, 0x45, 0x20, 0x4B, 0x45, 0x59, 0x20, 0x57, 0x41, 0x49, 0x54, 0x20, 0x69, 0x73, 0x20 + .byte 0x62, 0x75, 0x73, 0x79, 0x31, 0x00, 0x00, 0x00 + .global ov11_02319304 +ov11_02319304: + .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20 + .byte 0x4B, 0x45, 0x59, 0x20, 0x57, 0x41, 0x49, 0x54, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73, 0x79 + .byte 0x32, 0x00, 0x00, 0x00 + .global ov11_02319320 +ov11_02319320: + .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x43, 0x4C, 0x4F, 0x53 + .byte 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73, 0x79, 0x31, 0x00, 0x00 + .global ov11_02319338 +ov11_02319338: + .byte 0x4D, 0x45, 0x53, 0x53 + .byte 0x41, 0x47, 0x45, 0x20, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73 + .byte 0x79, 0x32, 0x00, 0x00 + .global ov11_02319350 +ov11_02319350: + .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x43, 0x4C, 0x4F, 0x53 + .byte 0x45, 0x20, 0x45, 0x4E, 0x46, 0x4F, 0x52, 0x43, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73 + .byte 0x79, 0x00, 0x00, 0x00 + .global ov11_02319370 +ov11_02319370: + .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62 + .byte 0x75, 0x73, 0x79, 0x00 + .global ov11_02319380 +ov11_02319380: + .byte 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x20, 0x4D, 0x45, 0x53, 0x53, 0x41 + .byte 0x47, 0x45, 0x20, 0x69, 0x73, 0x20, 0x62, 0x75, 0x73, 0x79, 0x00, 0x00 + .global ov11_02319398 +ov11_02319398: + .byte 0x53, 0x57, 0x49, 0x54 + .byte 0x43, 0x48, 0x20, 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x73, 0x65, 0x74, 0x00, 0x00 + .global ov11_023193AC +ov11_023193AC: + .byte 0x6D, 0x65, 0x6E, 0x75, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_023193BC +ov11_023193BC: + .byte 0x63, 0x61, 0x73, 0x65, 0x20, 0x6D, 0x65, 0x6E, 0x75, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x25 + .byte 0x33, 0x64, 0x20, 0x25, 0x30, 0x34, 0x78, 0x00 + .global ov11_023193D4 +ov11_023193D4: + .byte 0x54, 0x41, 0x42, 0x4C, 0x45, 0x44, 0x41, 0x54 + .byte 0x2F, 0x69, 0x74, 0x65, 0x6D, 0x25, 0x30, 0x32, 0x64, 0x2E, 0x64, 0x61, 0x74, 0x00, 0x00, 0x00 + .global ov11_023193EC +ov11_023193EC: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x5F, 0x43, 0x6F, 0x6D, 0x6D, 0x61 + .byte 0x6E, 0x64, 0x5F, 0x4D, 0x45, 0x4E, 0x55, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20 + .byte 0x25, 0x64, 0x00, 0x00 + .global ov11_02319410 +ov11_02319410: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x5F, 0x43 + .byte 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x5F, 0x4D, 0x45, 0x4E, 0x55, 0x20, 0x69, 0x6E, 0x69, 0x74 + .byte 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00 + .global ov11_02319438 +ov11_02319438: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x25, 0x33 + .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00, 0x00 + .global ov11_02319458 +ov11_02319458: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x32, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x25 + .byte 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00 + .global ov11_02319478 +ov11_02319478: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x25, 0x33 + .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00, 0x00 + .global ov11_02319498 +ov11_02319498: + .byte 0x73, 0x77, 0x69, 0x74 + .byte 0x63, 0x68, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x25, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_023194B0 +ov11_023194B0: + .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x20, 0x72, 0x65, 0x71, 0x75 + .byte 0x65, 0x73, 0x74, 0x00 + .global ov11_023194C0 +ov11_023194C0: + .byte 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4C, 0x20, 0x4D, 0x45, 0x53, 0x53 + .byte 0x41, 0x47, 0x45, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00 + .global ov11_023194D8 +ov11_023194D8: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x25, 0x33, 0x64, 0x5B + .byte 0x25, 0x33, 0x64, 0x5D, 0x00, 0x00, 0x00, 0x00 + .global ov11_023194F4 +ov11_023194F4: + .byte 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65 + .byte 0x20, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x00, 0x00 + .global ov11_02319504 +ov11_02319504: + .byte 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65 + .byte 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319518 +ov11_02319518: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x63, 0x61, 0x73, 0x65, 0x20, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x20 + .byte 0x25, 0x30, 0x34, 0x78, 0x20, 0x25, 0x73, 0x00 + .global ov11_02319534 +ov11_02319534: + .byte 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x6D + .byte 0x65, 0x6E, 0x75, 0x20, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x25, 0x33, 0x64, 0x20, 0x6E, 0x75, 0x6D + .byte 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319554 +ov11_02319554: + .byte 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x6E, 0x65 + .byte 0x6C, 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_0231956C +ov11_0231956C: + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6A + .byte 0x75, 0x6D, 0x70, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_0231958C +ov11_0231958C: + .byte 0x20, 0x20, 0x20, 0x20, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F + .byte 0x6E, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 + .global ov11_023195AC +ov11_023195AC: + .byte 0x20, 0x20, 0x20, 0x20, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F + .byte 0x6E, 0x20, 0x73, 0x65, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 + .global ov11_023195C8 +ov11_023195C8: + .byte 0x45, 0x78, 0x65, 0x63 + .byte 0x75, 0x74, 0x65, 0x20, 0x6C, 0x69, 0x76, 0x65, 0x73, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 + .byte 0x64, 0x20, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x00 + .global ov11_023195EC +ov11_023195EC: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x75, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x25, 0x33 + .byte 0x64, 0x00, 0x00, 0x00 + .global ov11_02319600 +ov11_02319600: + .byte 0x5F, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x61, 0x73, 0x65, 0x50 + .byte 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov11_02319618 +ov11_02319618: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x43, 0x41, 0x53, 0x45, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319628 +ov11_02319628: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x43, 0x41, 0x53, 0x45, 0x20, 0x4A, 0x55, 0x4D, 0x50, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 + .byte 0x64, 0x00, 0x00, 0x00 + .global ov11_02319640 +ov11_02319640: + .byte 0x20, 0x20, 0x20, 0x20, 0x43, 0x41, 0x53, 0x45, 0x5F, 0x56, 0x41, 0x4C + .byte 0x55, 0x45, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 + .global ov11_02319658 +ov11_02319658: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x43, 0x41, 0x53, 0x45, 0x5F, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4C, 0x45, 0x20, 0x25, 0x33 + .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 + .global ov11_02319674 +ov11_02319674: + .byte 0x20, 0x20, 0x20, 0x20, 0x43, 0x41, 0x53, 0x45 + .byte 0x20, 0x4F, 0x55, 0x54, 0x20, 0x25, 0x31, 0x30, 0x73, 0x5B, 0x25, 0x30, 0x34, 0x78, 0x5D, 0x00 + .global ov11_0231968C +ov11_0231968C: + .byte 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319694 +ov11_02319694: + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6C + .byte 0x6F, 0x61, 0x64, 0x20, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x5B + .byte 0x25, 0x73, 0x5D, 0x00 + .global ov11_023196B0 +ov11_023196B0: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x25, 0x73 + .byte 0x2E, 0x73, 0x73, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov11_023196C4 +ov11_023196C4: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25 + .byte 0x73, 0x2F, 0x25, 0x73, 0x2E, 0x73, 0x73, 0x61, 0x00, 0x00, 0x00, 0x00 + .global ov11_023196D8 +ov11_023196D8: + .byte 0x53, 0x43, 0x52, 0x49 + .byte 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x73, 0x73, 0x65, 0x00 + .global ov11_023196EC +ov11_023196EC: + .byte 0x73, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x68, 0x61, 0x6E + .byte 0x67, 0x65, 0x72, 0x20, 0x25, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65 + .byte 0x20, 0x5B, 0x25, 0x73, 0x5D, 0x00, 0x00, 0x00 + .global ov11_02319714 +ov11_02319714: + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6C + .byte 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33 + .byte 0x64, 0x00, 0x00, 0x00 + .global ov11_02319730 +ov11_02319730: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x25, 0x73 + .byte 0x2E, 0x73, 0x73, 0x62, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319744 +ov11_02319744: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25 + .byte 0x73, 0x2F, 0x25, 0x73, 0x25, 0x30, 0x32, 0x64, 0x2E, 0x73, 0x73, 0x62, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231975C +ov11_0231975C: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x25, 0x73, 0x2F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x25 + .byte 0x30, 0x32, 0x64, 0x2E, 0x73, 0x73, 0x62, 0x00 + .global ov11_02319774 +ov11_02319774: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x53 + .byte 0x30, 0x30, 0x50, 0x30, 0x31, 0x41, 0x2F, 0x25, 0x73, 0x2E, 0x73, 0x73, 0x62, 0x00, 0x00, 0x00 + .global ov11_0231978C +ov11_0231978C: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72 + .byte 0x65, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F + .byte 0x6E, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_023197B4 +ov11_023197B4: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74 + .byte 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6C, 0x6F + .byte 0x61, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov11_023197D8 +ov11_023197D8: + .byte 0x53, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72 + .byte 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x25, 0x64, 0x20, 0x25 + .byte 0x73, 0x00, 0x00, 0x00 + .global ov11_02319800 +ov11_02319800: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F + .byte 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x61 + .byte 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x00 + .global ov11_02319828 +ov11_02319828: + .byte 0x53, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72 + .byte 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x25, 0x64, 0x00, 0x00 + .global ov11_0231984C +ov11_0231984C: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F + .byte 0x61, 0x64, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231986C +ov11_0231986C: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F + .byte 0x61, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x20, 0x25, 0x64, 0x00 + .global ov11_02319888 +ov11_02319888: + .byte 0x53, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x61 + .byte 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x20, 0x25, 0x64, 0x00, 0x00 + .global ov11_023198AC +ov11_023198AC: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 0x6F + .byte 0x61, 0x64, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x25 + .byte 0x73, 0x00, 0x00, 0x00 + .global ov11_023198D0 +ov11_023198D0: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F + .byte 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x74, 0x61, 0x6C, 0x6B, 0x20, 0x25, 0x64, 0x20, 0x25 + .byte 0x64, 0x00, 0x00, 0x00 + .global ov11_023198F0 +ov11_023198F0: + .byte 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F + .byte 0x6E, 0x5F, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x41, 0x6C, 0x6C, 0x00 + .global ov11_02319908 +ov11_02319908: + .byte 0x73, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61 + .byte 0x6D, 0x65, 0x20, 0x5B, 0x25, 0x73, 0x5D, 0x00 + .global ov11_02319924 +ov11_02319924: + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6D + .byte 0x65, 0x6E, 0x75, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_0231993C +ov11_0231993C: + .byte 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x20, 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x20, 0x54 + .byte 0x48, 0x41, 0x4E, 0x4B, 0x53, 0x20, 0x49, 0x4E, 0x49, 0x54, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64 + .byte 0x0A, 0x00, 0x00, 0x00 + .global ov11_02319960 +ov11_02319960: + .byte 0x20, 0x20, 0x20, 0x20, 0x5B, 0x25, 0x32, 0x64, 0x5D, 0x20, 0x64, 0x75 + .byte 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x20, 0x25, 0x32, 0x64, 0x20, 0x20, 0x20, 0x6B, 0x69, 0x6E, 0x64 + .byte 0x20, 0x25, 0x32, 0x64, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x32, 0x64, 0x20, 0x20 + .byte 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x32, 0x64, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75 + .byte 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20 + .byte 0x25, 0x33, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov11_023199B4 +ov11_023199B4: + .byte 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x20 + .byte 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x20, 0x54, 0x48, 0x41, 0x4E, 0x4B, 0x53, 0x20, 0x52, 0x45 + .byte 0x46, 0x52, 0x45, 0x53, 0x48, 0x0A, 0x00, 0x00 + .global ov11_023199D4 +ov11_023199D4: + .byte 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x20 + .byte 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x20, 0x54, 0x48, 0x41, 0x4E, 0x4B, 0x53, 0x20, 0x41, 0x43 + .byte 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x5B, 0x25, 0x33, 0x64, 0x5D, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73 + .byte 0x75, 0x6C, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74 + .byte 0x20, 0x25, 0x33, 0x64, 0x20, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x25, 0x33, 0x64 + .byte 0x0A, 0x00, 0x00, 0x00 + .global ov11_02319A20 +ov11_02319A20: + .byte 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6D, 0x65, 0x6E, 0x75, 0x20 + .byte 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov11_02319A38 +ov11_02319A38: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319A48 +ov11_02319A48: + .byte 0x73, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65 + .byte 0x73, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_02319A68 +ov11_02319A68: + .byte 0x74, 0x61, 0x73, 0x6B + .byte 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x20, 0x63, 0x68, 0x61 + .byte 0x6C, 0x6C, 0x65, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x25, 0x64, 0x20 + .byte 0x25, 0x64, 0x0A, 0x00 + .global ov11_02319A90 +ov11_02319A90: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319A98 +ov11_02319A98: + .byte 0x73, 0x63, 0x72, 0x69 + .byte 0x70, 0x74, 0x20, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x73, 0x75, 0x62, 0x20, 0x63, 0x61 + .byte 0x6C, 0x6C, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 + .global ov11_02319AB4 +ov11_02319AB4: + .byte 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x2F, 0x43 + .byte 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x2F, 0x75, 0x6E, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x2E, 0x73 + .byte 0x73, 0x62, 0x00, 0x00 + .global ov11_02319AD0 +ov11_02319AD0: + .byte 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70 + .byte 0x74, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global C_ROUTINE_NAMES +C_ROUTINE_NAMES: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x35, 0x00 + .global ov11_02319AF4 +ov11_02319AF4: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x32, 0x00 + .global ov11_02319AFC +ov11_02319AFC: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x34, 0x00 + .global ov11_02319B04 +ov11_02319B04: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x33, 0x00 + .global ov11_02319B0C +ov11_02319B0C: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x31, 0x00 + .global ov11_02319B14 +ov11_02319B14: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x5F, 0x30, 0x36, 0x00 + .global ov11_02319B1C +ov11_02319B1C: + .byte 0x4D, 0x41, 0x50, 0x5F, 0x54, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319B28 +ov11_02319B28: + .byte 0x45, 0x4E, 0x44, 0x5F + .byte 0x54, 0x41, 0x4C, 0x4B, 0x00, 0x00, 0x00, 0x00 + .global ov11_02319B34 +ov11_02319B34: + .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x55, 0x4E, 0x49 + .byte 0x54, 0x00, 0x00, 0x00 + .global ov11_02319B40 +ov11_02319B40: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00 + .global ov11_02319B4C +ov11_02319B4C: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x59, 0x00, 0x00, 0x00 + .global ov11_02319B58 +ov11_02319B58: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x36, 0x00, 0x00 + .global ov11_02319B64 +ov11_02319B64: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 + .byte 0x31, 0x33, 0x00, 0x00 + .global ov11_02319B70 +ov11_02319B70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x39, 0x00, 0x00 + .global ov11_02319B7C +ov11_02319B7C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x32, 0x34, 0x00, 0x00 + .global ov11_02319B88 +ov11_02319B88: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x32, 0x00, 0x00 + .global ov11_02319B94 +ov11_02319B94: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x53, 0x4C, 0x45 + .byte 0x45, 0x50, 0x00, 0x00 + .global ov11_02319BA0 +ov11_02319BA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x38, 0x00, 0x00 + .global ov11_02319BAC +ov11_02319BAC: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x30, 0x00, 0x00 + .global ov11_02319BB8 +ov11_02319BB8: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x30, 0x37, 0x00, 0x00 + .global ov11_02319BC4 +ov11_02319BC4: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 + .byte 0x30, 0x34, 0x00, 0x00 + .global ov11_02319BD0 +ov11_02319BD0: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x54, 0x59, 0x50, 0x45, 0x31, 0x00, 0x00 + .global ov11_02319BDC +ov11_02319BDC: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x54, 0x59, 0x50, 0x45, 0x32, 0x00, 0x00 + .global ov11_02319BE8 +ov11_02319BE8: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x34, 0x00, 0x00 + .global ov11_02319BF4 +ov11_02319BF4: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x50, 0x41, 0x55 + .byte 0x53, 0x45, 0x00, 0x00 + .global ov11_02319C00 +ov11_02319C00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x35, 0x00, 0x00 + .global ov11_02319C0C +ov11_02319C0C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x31, 0x37, 0x00, 0x00 + .global ov11_02319C18 +ov11_02319C18: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x31, 0x35, 0x00, 0x00 + .global ov11_02319C24 +ov11_02319C24: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 + .byte 0x30, 0x33, 0x00, 0x00 + .global ov11_02319C30 +ov11_02319C30: + .byte 0x54, 0x49, 0x54, 0x4C, 0x45, 0x5F, 0x54, 0x45, 0x53, 0x54, 0x00, 0x00 + .global ov11_02319C3C +ov11_02319C3C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x38, 0x00, 0x00 + .global ov11_02319C48 +ov11_02319C48: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x32, 0x30, 0x00, 0x00 + .global ov11_02319C54 +ov11_02319C54: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 + .byte 0x32, 0x33, 0x00, 0x00 + .global ov11_02319C60 +ov11_02319C60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x31, 0x00, 0x00 + .global ov11_02319C6C +ov11_02319C6C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x32, 0x32, 0x00, 0x00 + .global ov11_02319C78 +ov11_02319C78: + .byte 0x52, 0x45, 0x53, 0x43 + .byte 0x55, 0x45, 0x5F, 0x53, 0x45, 0x54, 0x00, 0x00 + .global ov11_02319C84 +ov11_02319C84: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 + .byte 0x31, 0x31, 0x00, 0x00 + .global ov11_02319C90 +ov11_02319C90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x32, 0x00, 0x00 + .global ov11_02319C9C +ov11_02319C9C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47, 0x30, 0x36, 0x00, 0x00 + .global ov11_02319CA8 +ov11_02319CA8: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x54, 0x47, 0x32, 0x31, 0x00, 0x00 + .global ov11_02319CB4 +ov11_02319CB4: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x54, 0x47 + .byte 0x30, 0x39, 0x00, 0x00 + .global ov11_02319CC0 +ov11_02319CC0: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x45, 0x00 + .global ov11_02319CCC +ov11_02319CCC: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x52, 0x41, 0x4E, 0x44, 0x4F, 0x4D, 0x00 + .global ov11_02319CD8 +ov11_02319CD8: + .byte 0x44, 0x45, 0x4D, 0x4F + .byte 0x5F, 0x43, 0x41, 0x4E, 0x43, 0x45, 0x4C, 0x00 + .global ov11_02319CE4 +ov11_02319CE4: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x45, 0x4E + .byte 0x54, 0x45, 0x52, 0x00 + .global ov11_02319CF0 +ov11_02319CF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x4B, 0x49, 0x00 + .global ov11_02319CFC +ov11_02319CFC: + .byte 0x42, 0x55, 0x42, 0x42, 0x4C, 0x45, 0x5F, 0x54, 0x45, 0x53, 0x54, 0x00 + .global ov11_02319D08 +ov11_02319D08: + .byte 0x4C, 0x49, 0x56, 0x45 + .byte 0x53, 0x5F, 0x52, 0x45, 0x50, 0x4C, 0x59, 0x00 + .global ov11_02319D14 +ov11_02319D14: + .byte 0x57, 0x41, 0x4B, 0x45, 0x55, 0x50, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_02319D20 +ov11_02319D20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D30 +ov11_02319D30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D40 +ov11_02319D40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D50 +ov11_02319D50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D60 +ov11_02319D60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D70 +ov11_02319D70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D80 +ov11_02319D80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319D90 +ov11_02319D90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319DA0 +ov11_02319DA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319DB0 +ov11_02319DB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x34, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319DC0 +ov11_02319DC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319DD0 +ov11_02319DD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319DE0 +ov11_02319DE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319DF0 +ov11_02319DF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E00 +ov11_02319E00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E10 +ov11_02319E10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E20 +ov11_02319E20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E30 +ov11_02319E30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E40 +ov11_02319E40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E50 +ov11_02319E50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E60 +ov11_02319E60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E70 +ov11_02319E70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E80 +ov11_02319E80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319E90 +ov11_02319E90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319EA0 +ov11_02319EA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319EB0 +ov11_02319EB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319EC0 +ov11_02319EC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319ED0 +ov11_02319ED0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319EE0 +ov11_02319EE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319EF0 +ov11_02319EF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F00 +ov11_02319F00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F10 +ov11_02319F10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x33, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F20 +ov11_02319F20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F30 +ov11_02319F30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F40 +ov11_02319F40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F50 +ov11_02319F50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F60 +ov11_02319F60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F70 +ov11_02319F70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x57, 0x41, 0x4B, 0x45, 0x55, 0x50 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F80 +ov11_02319F80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319F90 +ov11_02319F90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319FA0 +ov11_02319FA0: + .byte 0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x5F, 0x45, 0x4E, 0x54, 0x45, 0x52 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319FB0 +ov11_02319FB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319FC0 +ov11_02319FC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319FD0 +ov11_02319FD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319FE0 +ov11_02319FE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02319FF0 +ov11_02319FF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A000 +ov11_0231A000: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A010 +ov11_0231A010: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A020 +ov11_0231A020: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A030 +ov11_0231A030: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A040 +ov11_0231A040: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A050 +ov11_0231A050: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A060 +ov11_0231A060: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A070 +ov11_0231A070: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A080 +ov11_0231A080: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x33, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A090 +ov11_0231A090: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A0A0 +ov11_0231A0A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A0B0 +ov11_0231A0B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A0C0 +ov11_0231A0C0: + .byte 0x52, 0x45, 0x53, 0x43, 0x55, 0x45, 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A0D0 +ov11_0231A0D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A0E0 +ov11_0231A0E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x34, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A0F0 +ov11_0231A0F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A100 +ov11_0231A100: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A110 +ov11_0231A110: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A120 +ov11_0231A120: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A130 +ov11_0231A130: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A140 +ov11_0231A140: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A150 +ov11_0231A150: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A160 +ov11_0231A160: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A170 +ov11_0231A170: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A180 +ov11_0231A180: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A190 +ov11_0231A190: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A1A0 +ov11_0231A1A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A1B0 +ov11_0231A1B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A1C0 +ov11_0231A1C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A1D0 +ov11_0231A1D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A1E0 +ov11_0231A1E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A1F0 +ov11_0231A1F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A200 +ov11_0231A200: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A210 +ov11_0231A210: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A220 +ov11_0231A220: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A230 +ov11_0231A230: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A240 +ov11_0231A240: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A250 +ov11_0231A250: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A260 +ov11_0231A260: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A270 +ov11_0231A270: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A280 +ov11_0231A280: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A290 +ov11_0231A290: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A2A0 +ov11_0231A2A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A2B0 +ov11_0231A2B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A2C0 +ov11_0231A2C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A2D0 +ov11_0231A2D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A2E0 +ov11_0231A2E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A2F0 +ov11_0231A2F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A300 +ov11_0231A300: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A310 +ov11_0231A310: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A320 +ov11_0231A320: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A330 +ov11_0231A330: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A340 +ov11_0231A340: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A350 +ov11_0231A350: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A360 +ov11_0231A360: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A370 +ov11_0231A370: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A380 +ov11_0231A380: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A390 +ov11_0231A390: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A3A0 +ov11_0231A3A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A3B0 +ov11_0231A3B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A3C0 +ov11_0231A3C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A3D0 +ov11_0231A3D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A3E0 +ov11_0231A3E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A3F0 +ov11_0231A3F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A400 +ov11_0231A400: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A410 +ov11_0231A410: + .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x5F, 0x45, 0x56, 0x45, 0x4E, 0x54 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A420 +ov11_0231A420: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A430 +ov11_0231A430: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A440 +ov11_0231A440: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A450 +ov11_0231A450: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A460 +ov11_0231A460: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A470 +ov11_0231A470: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A480 +ov11_0231A480: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A490 +ov11_0231A490: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A4A0 +ov11_0231A4A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A4B0 +ov11_0231A4B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A4C0 +ov11_0231A4C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A4D0 +ov11_0231A4D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A4E0 +ov11_0231A4E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A4F0 +ov11_0231A4F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A500 +ov11_0231A500: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A510 +ov11_0231A510: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A520 +ov11_0231A520: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A530 +ov11_0231A530: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A540 +ov11_0231A540: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A550 +ov11_0231A550: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A560 +ov11_0231A560: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A570 +ov11_0231A570: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A580 +ov11_0231A580: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A590 +ov11_0231A590: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A5A0 +ov11_0231A5A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A5B0 +ov11_0231A5B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A5C0 +ov11_0231A5C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A5D0 +ov11_0231A5D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A5E0 +ov11_0231A5E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A5F0 +ov11_0231A5F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A600 +ov11_0231A600: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A610 +ov11_0231A610: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A620 +ov11_0231A620: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A630 +ov11_0231A630: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A640 +ov11_0231A640: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A650 +ov11_0231A650: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A660 +ov11_0231A660: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A670 +ov11_0231A670: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A680 +ov11_0231A680: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A690 +ov11_0231A690: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A6A0 +ov11_0231A6A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A6B0 +ov11_0231A6B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A6C0 +ov11_0231A6C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A6D0 +ov11_0231A6D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A6E0 +ov11_0231A6E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A6F0 +ov11_0231A6F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A700 +ov11_0231A700: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x33, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A710 +ov11_0231A710: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A720 +ov11_0231A720: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A730 +ov11_0231A730: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A740 +ov11_0231A740: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x33, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A750 +ov11_0231A750: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A760 +ov11_0231A760: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A770 +ov11_0231A770: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A780 +ov11_0231A780: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A790 +ov11_0231A790: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A7A0 +ov11_0231A7A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A7B0 +ov11_0231A7B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A7C0 +ov11_0231A7C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A7D0 +ov11_0231A7D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A7E0 +ov11_0231A7E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A7F0 +ov11_0231A7F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A800 +ov11_0231A800: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A810 +ov11_0231A810: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A820 +ov11_0231A820: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A830 +ov11_0231A830: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A840 +ov11_0231A840: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A850 +ov11_0231A850: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A860 +ov11_0231A860: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A870 +ov11_0231A870: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A880 +ov11_0231A880: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A890 +ov11_0231A890: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A8A0 +ov11_0231A8A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x30, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A8B0 +ov11_0231A8B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A8C0 +ov11_0231A8C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A8D0 +ov11_0231A8D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A8E0 +ov11_0231A8E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A8F0 +ov11_0231A8F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A900 +ov11_0231A900: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A910 +ov11_0231A910: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A920 +ov11_0231A920: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A930 +ov11_0231A930: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A940 +ov11_0231A940: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A950 +ov11_0231A950: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A960 +ov11_0231A960: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A970 +ov11_0231A970: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A980 +ov11_0231A980: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A990 +ov11_0231A990: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A9A0 +ov11_0231A9A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A9B0 +ov11_0231A9B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A9C0 +ov11_0231A9C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A9D0 +ov11_0231A9D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A9E0 +ov11_0231A9E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231A9F0 +ov11_0231A9F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA00 +ov11_0231AA00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA10 +ov11_0231AA10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA20 +ov11_0231AA20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA30 +ov11_0231AA30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA40 +ov11_0231AA40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA50 +ov11_0231AA50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA60 +ov11_0231AA60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA70 +ov11_0231AA70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA80 +ov11_0231AA80: + .byte 0x48, 0x41, 0x5F, 0x4D, 0x49, 0x48, 0x41, 0x52, 0x49, 0x42, 0x41, 0x4E + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AA90 +ov11_0231AA90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AAA0 +ov11_0231AAA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AAB0 +ov11_0231AAB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AAC0 +ov11_0231AAC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AAD0 +ov11_0231AAD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AAE0 +ov11_0231AAE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AAF0 +ov11_0231AAF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB00 +ov11_0231AB00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB10 +ov11_0231AB10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB20 +ov11_0231AB20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB30 +ov11_0231AB30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB40 +ov11_0231AB40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB50 +ov11_0231AB50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB60 +ov11_0231AB60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB70 +ov11_0231AB70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB80 +ov11_0231AB80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AB90 +ov11_0231AB90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x36, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ABA0 +ov11_0231ABA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ABB0 +ov11_0231ABB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ABC0 +ov11_0231ABC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x30, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ABD0 +ov11_0231ABD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ABE0 +ov11_0231ABE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x43, 0x48, 0x4F + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ABF0 +ov11_0231ABF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC00 +ov11_0231AC00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC10 +ov11_0231AC10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC20 +ov11_0231AC20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC30 +ov11_0231AC30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC40 +ov11_0231AC40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC50 +ov11_0231AC50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC60 +ov11_0231AC60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC70 +ov11_0231AC70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC80 +ov11_0231AC80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AC90 +ov11_0231AC90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ACA0 +ov11_0231ACA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ACB0 +ov11_0231ACB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ACC0 +ov11_0231ACC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ACD0 +ov11_0231ACD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ACE0 +ov11_0231ACE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ACF0 +ov11_0231ACF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD00 +ov11_0231AD00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD10 +ov11_0231AD10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD20 +ov11_0231AD20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD30 +ov11_0231AD30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD40 +ov11_0231AD40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD50 +ov11_0231AD50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD60 +ov11_0231AD60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD70 +ov11_0231AD70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD80 +ov11_0231AD80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AD90 +ov11_0231AD90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ADA0 +ov11_0231ADA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ADB0 +ov11_0231ADB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ADC0 +ov11_0231ADC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ADD0 +ov11_0231ADD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ADE0 +ov11_0231ADE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ADF0 +ov11_0231ADF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE00 +ov11_0231AE00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE10 +ov11_0231AE10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE20 +ov11_0231AE20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE30 +ov11_0231AE30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE40 +ov11_0231AE40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE50 +ov11_0231AE50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE60 +ov11_0231AE60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE70 +ov11_0231AE70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE80 +ov11_0231AE80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AE90 +ov11_0231AE90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AEA0 +ov11_0231AEA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AEB0 +ov11_0231AEB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AEC0 +ov11_0231AEC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AED0 +ov11_0231AED0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AEE0 +ov11_0231AEE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AEF0 +ov11_0231AEF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF00 +ov11_0231AF00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF10 +ov11_0231AF10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF20 +ov11_0231AF20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF30 +ov11_0231AF30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x31, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF40 +ov11_0231AF40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x32, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF50 +ov11_0231AF50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF60 +ov11_0231AF60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF70 +ov11_0231AF70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x31, 0x32, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF80 +ov11_0231AF80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AF90 +ov11_0231AF90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AFA0 +ov11_0231AFA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AFB0 +ov11_0231AFB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AFC0 +ov11_0231AFC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AFD0 +ov11_0231AFD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x39, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AFE0 +ov11_0231AFE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231AFF0 +ov11_0231AFF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B000 +ov11_0231B000: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B010 +ov11_0231B010: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B020 +ov11_0231B020: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B030 +ov11_0231B030: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B040 +ov11_0231B040: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B050 +ov11_0231B050: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B060 +ov11_0231B060: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B070 +ov11_0231B070: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B080 +ov11_0231B080: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B090 +ov11_0231B090: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B0A0 +ov11_0231B0A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B0B0 +ov11_0231B0B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B0C0 +ov11_0231B0C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B0D0 +ov11_0231B0D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B0E0 +ov11_0231B0E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B0F0 +ov11_0231B0F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B100 +ov11_0231B100: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B110 +ov11_0231B110: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B120 +ov11_0231B120: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B130 +ov11_0231B130: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B140 +ov11_0231B140: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B150 +ov11_0231B150: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B160 +ov11_0231B160: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B170 +ov11_0231B170: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B180 +ov11_0231B180: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B190 +ov11_0231B190: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B1A0 +ov11_0231B1A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B1B0 +ov11_0231B1B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B1C0 +ov11_0231B1C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B1D0 +ov11_0231B1D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B1E0 +ov11_0231B1E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B1F0 +ov11_0231B1F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B200 +ov11_0231B200: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B210 +ov11_0231B210: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B220 +ov11_0231B220: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B230 +ov11_0231B230: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B240 +ov11_0231B240: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B250 +ov11_0231B250: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B260 +ov11_0231B260: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x32, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B270 +ov11_0231B270: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B280 +ov11_0231B280: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B290 +ov11_0231B290: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B2A0 +ov11_0231B2A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B2B0 +ov11_0231B2B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B2C0 +ov11_0231B2C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B2D0 +ov11_0231B2D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B2E0 +ov11_0231B2E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B2F0 +ov11_0231B2F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x32, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B300 +ov11_0231B300: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B310 +ov11_0231B310: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B320 +ov11_0231B320: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x32, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B330 +ov11_0231B330: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B340 +ov11_0231B340: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B350 +ov11_0231B350: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B360 +ov11_0231B360: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B370 +ov11_0231B370: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B380 +ov11_0231B380: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B390 +ov11_0231B390: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B3A0 +ov11_0231B3A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B3B0 +ov11_0231B3B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B3C0 +ov11_0231B3C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B3D0 +ov11_0231B3D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B3E0 +ov11_0231B3E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B3F0 +ov11_0231B3F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B400 +ov11_0231B400: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B410 +ov11_0231B410: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B420 +ov11_0231B420: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B430 +ov11_0231B430: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B440 +ov11_0231B440: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B450 +ov11_0231B450: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B460 +ov11_0231B460: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B470 +ov11_0231B470: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B480 +ov11_0231B480: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B490 +ov11_0231B490: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B4A0 +ov11_0231B4A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B4B0 +ov11_0231B4B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B4C0 +ov11_0231B4C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B4D0 +ov11_0231B4D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B4E0 +ov11_0231B4E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x32, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B4F0 +ov11_0231B4F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B500 +ov11_0231B500: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B510 +ov11_0231B510: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B520 +ov11_0231B520: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B530 +ov11_0231B530: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B540 +ov11_0231B540: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B550 +ov11_0231B550: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B560 +ov11_0231B560: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B570 +ov11_0231B570: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B580 +ov11_0231B580: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B590 +ov11_0231B590: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B5A0 +ov11_0231B5A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B5B0 +ov11_0231B5B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B5C0 +ov11_0231B5C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B5D0 +ov11_0231B5D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B5E0 +ov11_0231B5E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B5F0 +ov11_0231B5F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x31, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B600 +ov11_0231B600: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B610 +ov11_0231B610: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B620 +ov11_0231B620: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B630 +ov11_0231B630: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B640 +ov11_0231B640: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B650 +ov11_0231B650: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B660 +ov11_0231B660: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B670 +ov11_0231B670: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B680 +ov11_0231B680: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B690 +ov11_0231B690: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B6A0 +ov11_0231B6A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B6B0 +ov11_0231B6B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B6C0 +ov11_0231B6C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B6D0 +ov11_0231B6D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B6E0 +ov11_0231B6E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B6F0 +ov11_0231B6F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B700 +ov11_0231B700: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B710 +ov11_0231B710: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B720 +ov11_0231B720: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B730 +ov11_0231B730: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B740 +ov11_0231B740: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B750 +ov11_0231B750: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B760 +ov11_0231B760: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B770 +ov11_0231B770: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B780 +ov11_0231B780: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B790 +ov11_0231B790: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B7A0 +ov11_0231B7A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B7B0 +ov11_0231B7B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B7C0 +ov11_0231B7C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B7D0 +ov11_0231B7D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x32, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B7E0 +ov11_0231B7E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B7F0 +ov11_0231B7F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B800 +ov11_0231B800: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B810 +ov11_0231B810: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B820 +ov11_0231B820: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B830 +ov11_0231B830: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B840 +ov11_0231B840: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B850 +ov11_0231B850: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B860 +ov11_0231B860: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B870 +ov11_0231B870: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B880 +ov11_0231B880: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B890 +ov11_0231B890: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B8A0 +ov11_0231B8A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B8B0 +ov11_0231B8B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B8C0 +ov11_0231B8C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B8D0 +ov11_0231B8D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B8E0 +ov11_0231B8E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B8F0 +ov11_0231B8F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B900 +ov11_0231B900: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B910 +ov11_0231B910: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B920 +ov11_0231B920: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B930 +ov11_0231B930: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B940 +ov11_0231B940: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x33, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B950 +ov11_0231B950: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B960 +ov11_0231B960: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B970 +ov11_0231B970: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B980 +ov11_0231B980: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x34, 0x5F, 0x32, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B990 +ov11_0231B990: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B9A0 +ov11_0231B9A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B9B0 +ov11_0231B9B0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B9C0 +ov11_0231B9C0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B9D0 +ov11_0231B9D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B9E0 +ov11_0231B9E0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231B9F0 +ov11_0231B9F0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA00 +ov11_0231BA00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA10 +ov11_0231BA10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA20 +ov11_0231BA20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x33, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA30 +ov11_0231BA30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x31, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA40 +ov11_0231BA40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA50 +ov11_0231BA50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x33, 0x31, 0x5F, 0x32, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA60 +ov11_0231BA60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA70 +ov11_0231BA70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x30, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA80 +ov11_0231BA80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231BA90 +ov11_0231BA90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x35 + .byte 0x41, 0x00, 0x00, 0x00 + .global ov11_0231BAA0 +ov11_0231BAA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x33, 0x5F, 0x30, 0x35 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BAB0 +ov11_0231BAB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x32 + .byte 0x41, 0x00, 0x00, 0x00 + .global ov11_0231BAC0 +ov11_0231BAC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x32 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BAD0 +ov11_0231BAD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x34 + .byte 0x41, 0x00, 0x00, 0x00 + .global ov11_0231BAE0 +ov11_0231BAE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x34 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BAF0 +ov11_0231BAF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x45, 0x4E, 0x44, 0x5F, 0x30 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov11_0231BB00 +ov11_0231BB00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x45, 0x4E, 0x44, 0x5F, 0x30 + .byte 0x32, 0x00, 0x00, 0x00 + .global ov11_0231BB10 +ov11_0231BB10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F + .byte 0x4C, 0x00, 0x00, 0x00 + .global ov11_0231BB20 +ov11_0231BB20: + .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41 + .byte 0x4C, 0x00, 0x00, 0x00 + .global ov11_0231BB30 +ov11_0231BB30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4F + .byte 0x4E, 0x00, 0x00, 0x00 + .global ov11_0231BB40 +ov11_0231BB40: + .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F + .byte 0x4C, 0x00, 0x00, 0x00 + .global ov11_0231BB50 +ov11_0231BB50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x30, 0x41, 0x5F, 0x30 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov11_0231BB60 +ov11_0231BB60: + .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x5F, 0x43, 0x41, 0x4D, 0x45, 0x52 + .byte 0x41, 0x00, 0x00, 0x00 + .global ov11_0231BB70 +ov11_0231BB70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x53, 0x41, 0x4D + .byte 0x45, 0x00, 0x00, 0x00 + .global ov11_0231BB80 +ov11_0231BB80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x37 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BB90 +ov11_0231BB90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x31 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BBA0 +ov11_0231BBA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x37 + .byte 0x41, 0x00, 0x00, 0x00 + .global ov11_0231BBB0 +ov11_0231BBB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x37 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BBC0 +ov11_0231BBC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x33 + .byte 0x41, 0x00, 0x00, 0x00 + .global ov11_0231BBD0 +ov11_0231BBD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x30, 0x33 + .byte 0x42, 0x00, 0x00, 0x00 + .global ov11_0231BBE0 +ov11_0231BBE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x46, 0x52 + .byte 0x45, 0x45, 0x00, 0x00 + .global ov11_0231BBF0 +ov11_0231BBF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x39 + .byte 0x5F, 0x32, 0x00, 0x00 + .global ov11_0231BC00 +ov11_0231BC00: + .byte 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x57, 0x4F, 0x52, 0x4C, 0x44, 0x5F, 0x4D + .byte 0x41, 0x50, 0x00, 0x00 + .global ov11_0231BC10 +ov11_0231BC10: + .byte 0x42, 0x4F, 0x53, 0x53, 0x5F, 0x57, 0x49, 0x50, 0x45, 0x5F, 0x46, 0x55 + .byte 0x4E, 0x43, 0x00, 0x00 + .global ov11_0231BC20 +ov11_0231BC20: + .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x41, 0x54, 0x54, 0x45, 0x4E, 0x44, 0x41 + .byte 0x4E, 0x54, 0x00, 0x00 + .global ov11_0231BC30 +ov11_0231BC30: + .byte 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x42, 0x41, 0x53, 0x45, 0x5F, 0x46, 0x55 + .byte 0x4E, 0x43, 0x00, 0x00 + .global ov11_0231BC40 +ov11_0231BC40: + .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x5F, 0x4D, 0x45, 0x53, 0x53, 0x41 + .byte 0x47, 0x45, 0x00, 0x00 + .global ov11_0231BC50 +ov11_0231BC50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F + .byte 0x4B, 0x49, 0x00, 0x00 + .global ov11_0231BC60 +ov11_0231BC60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x53, 0x41, 0x4D + .byte 0x45, 0x58, 0x00, 0x00 + .global ov11_0231BC70 +ov11_0231BC70: + .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x41, 0x44, 0x56, 0x45, 0x4E, 0x54, 0x55 + .byte 0x52, 0x45, 0x00, 0x00 + .global ov11_0231BC80 +ov11_0231BC80: + .byte 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4E, 0x5F, 0x49, 0x4E + .byte 0x49, 0x54, 0x00, 0x00 + .global ov11_0231BC90 +ov11_0231BC90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x32, 0x5F, 0x31, 0x30 + .byte 0x5F, 0x31, 0x32, 0x00 + .global ov11_0231BCA0 +ov11_0231BCA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x34, 0x5F, 0x30, 0x38 + .byte 0x5F, 0x30, 0x39, 0x00 + .global ov11_0231BCB0 +ov11_0231BCB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x38, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BCC0 +ov11_0231BCC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x4D, 0x41 + .byte 0x50, 0x49, 0x4E, 0x00 + .global ov11_0231BCD0 +ov11_0231BCD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x35, 0x5F, 0x31, 0x30 + .byte 0x5F, 0x31, 0x32, 0x00 + .global ov11_0231BCE0 +ov11_0231BCE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x36, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BCF0 +ov11_0231BCF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x37, 0x5F, 0x30, 0x33 + .byte 0x5F, 0x30, 0x35, 0x00 + .global ov11_0231BD00 +ov11_0231BD00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x30, 0x34 + .byte 0x5F, 0x30, 0x35, 0x00 + .global ov11_0231BD10 +ov11_0231BD10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x30, 0x35 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BD20 +ov11_0231BD20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x38, 0x5F, 0x31, 0x33 + .byte 0x5F, 0x31, 0x34, 0x00 + .global ov11_0231BD30 +ov11_0231BD30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BD40 +ov11_0231BD40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x39, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BD50 +ov11_0231BD50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x34, 0x00 + .global ov11_0231BD60 +ov11_0231BD60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x30, 0x5F, 0x30, 0x37 + .byte 0x5F, 0x30, 0x39, 0x00 + .global ov11_0231BD70 +ov11_0231BD70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x31, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x33, 0x00 + .global ov11_0231BD80 +ov11_0231BD80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BD90 +ov11_0231BD90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x32, 0x5F, 0x30, 0x39 + .byte 0x5F, 0x31, 0x30, 0x00 + .global ov11_0231BDA0 +ov11_0231BDA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BDB0 +ov11_0231BDB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x33, 0x5F, 0x30, 0x39 + .byte 0x5F, 0x31, 0x30, 0x00 + .global ov11_0231BDC0 +ov11_0231BDC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x34, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x33, 0x00 + .global ov11_0231BDD0 +ov11_0231BDD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x35, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x35, 0x00 + .global ov11_0231BDE0 +ov11_0231BDE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BDF0 +ov11_0231BDF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x32, 0x36, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x38, 0x00 + .global ov11_0231BE00 +ov11_0231BE00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x32, 0x5F, 0x30, 0x39 + .byte 0x5F, 0x31, 0x30, 0x00 + .global ov11_0231BE10 +ov11_0231BE10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x31, 0x5F, 0x30, 0x39 + .byte 0x5F, 0x31, 0x30, 0x00 + .global ov11_0231BE20 +ov11_0231BE20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BE30 +ov11_0231BE30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x33, 0x5F, 0x31, 0x35 + .byte 0x5F, 0x31, 0x36, 0x00 + .global ov11_0231BE40 +ov11_0231BE40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x33, 0x5F, 0x31, 0x37 + .byte 0x5F, 0x32, 0x30, 0x00 + .global ov11_0231BE50 +ov11_0231BE50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x30, 0x34, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BE60 +ov11_0231BE60: + .byte 0x57, 0x41, 0x49, 0x54, 0x5F, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231BE70 +ov11_0231BE70: + .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231BE80 +ov11_0231BE80: + .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x48, 0x41, 0x50, 0x50, 0x59, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231BE90 +ov11_0231BE90: + .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x41, 0x4E, 0x47, 0x52, 0x59, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231BEA0 +ov11_0231BEA0: + .byte 0x53, 0x54, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x5F, 0x43, 0x4F, 0x4E, 0x54 + .byte 0x52, 0x4F, 0x4C, 0x00 + .global ov11_0231BEB0 +ov11_0231BEB0: + .byte 0x48, 0x45, 0x41, 0x44, 0x5F, 0x53, 0x48, 0x41, 0x4B, 0x45, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231BEC0 +ov11_0231BEC0: + .byte 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x53, 0x4C, 0x45, 0x45, 0x50, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231BED0 +ov11_0231BED0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54 + .byte 0x49, 0x4F, 0x4E, 0x00 + .global ov11_0231BEE0 +ov11_0231BEE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x56, 0x4F, 0x4C, 0x55, 0x54 + .byte 0x49, 0x4F, 0x4E, 0x00 + .global ov11_0231BEF0 +ov11_0231BEF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x34 + .byte 0x5F, 0x30, 0x35, 0x00 + .global ov11_0231BF00 +ov11_0231BF00: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BF10 +ov11_0231BF10: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x30, 0x5F, 0x30, 0x37 + .byte 0x5F, 0x30, 0x38, 0x00 + .global ov11_0231BF20 +ov11_0231BF20: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x30, 0x35 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231BF30 +ov11_0231BF30: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F + .byte 0x53, 0x48, 0x55, 0x00 + .global ov11_0231BF40 +ov11_0231BF40: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x43, 0x48, 0x4F + .byte 0x5F, 0x44, 0x4F, 0x00 + .global ov11_0231BF50 +ov11_0231BF50: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x31, 0x5F, 0x30, 0x34 + .byte 0x5F, 0x30, 0x36, 0x00 + .global ov11_0231BF60 +ov11_0231BF60: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F + .byte 0x4B, 0x49, 0x58, 0x00 + .global ov11_0231BF70 +ov11_0231BF70: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x34, 0x00 + .global ov11_0231BF80 +ov11_0231BF80: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BF90 +ov11_0231BF90: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x31, 0x5F, 0x30, 0x37 + .byte 0x5F, 0x30, 0x38, 0x00 + .global ov11_0231BFA0 +ov11_0231BFA0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231BFB0 +ov11_0231BFB0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x33 + .byte 0x5F, 0x30, 0x34, 0x00 + .global ov11_0231BFC0 +ov11_0231BFC0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x39 + .byte 0x5F, 0x31, 0x30, 0x00 + .global ov11_0231BFD0 +ov11_0231BFD0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x30, 0x35 + .byte 0x5F, 0x30, 0x36, 0x00 + .global ov11_0231BFE0 +ov11_0231BFE0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x53, 0x32, 0x32, 0x5F, 0x31, 0x34 + .byte 0x5F, 0x31, 0x35, 0x00 + .global ov11_0231BFF0 +ov11_0231BFF0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x33, 0x5F, 0x31, 0x30 + .byte 0x5F, 0x31, 0x33, 0x00 + .global ov11_0231C000 +ov11_0231C000: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4E, 0x30, 0x36, 0x5F, 0x31, 0x38 + .byte 0x5F, 0x31, 0x39, 0x00 + .global ov11_0231C010 +ov11_0231C010: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x34, 0x5F, 0x30, 0x32 + .byte 0x5F, 0x30, 0x33, 0x00 + .global ov11_0231C020 +ov11_0231C020: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231C030 +ov11_0231C030: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x35, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x39, 0x00 + .global ov11_0231C040 +ov11_0231C040: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231C050 +ov11_0231C050: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x37, 0x5F, 0x30, 0x37 + .byte 0x5F, 0x31, 0x32, 0x00 + .global ov11_0231C060 +ov11_0231C060: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x31 + .byte 0x5F, 0x30, 0x32, 0x00 + .global ov11_0231C070 +ov11_0231C070: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x38, 0x5F, 0x30, 0x35 + .byte 0x5F, 0x30, 0x36, 0x00 + .global ov11_0231C080 +ov11_0231C080: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x39, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231C090 +ov11_0231C090: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x30, 0x5F, 0x31, 0x31 + .byte 0x5F, 0x31, 0x32, 0x00 + .global ov11_0231C0A0 +ov11_0231C0A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x31, 0x31, 0x5F, 0x30, 0x36 + .byte 0x5F, 0x30, 0x37, 0x00 + .global ov11_0231C0B0 +ov11_0231C0B0: + .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x50 + .byte 0x41, 0x52, 0x54, 0x59, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C0C4 +ov11_0231C0C4: + .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F + .byte 0x55, 0x4E, 0x44, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C0D8 +ov11_0231C0D8: + .byte 0x45, 0x58, 0x50, 0x4C + .byte 0x41, 0x4E, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C0EC +ov11_0231C0EC: + .byte 0x48, 0x41, 0x4E, 0x59, 0x4F, 0x55, 0x5F, 0x53, 0x41, 0x56, 0x45, 0x5F, 0x46, 0x55, 0x4E, 0x43 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C100 +ov11_0231C100: + .byte 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F + .byte 0x44, 0x49, 0x56, 0x45, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C114 +ov11_0231C114: + .byte 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5F, 0x4D + .byte 0x4F, 0x56, 0x45, 0x5F, 0x57, 0x41, 0x56, 0x45, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C128 +ov11_0231C128: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F, 0x53, 0x48, 0x55, 0x58, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C13C +ov11_0231C13C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x4D, 0x30, 0x32, 0x5F, 0x30, 0x35, 0x5F, 0x30, 0x37, 0x41 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C150 +ov11_0231C150: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x46, 0x52 + .byte 0x45, 0x45, 0x5F, 0x41, 0x45, 0x00, 0x00, 0x00 + .global ov11_0231C164 +ov11_0231C164: + .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x4D, 0x4F + .byte 0x56, 0x45, 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00, 0x00, 0x00 + .global ov11_0231C178 +ov11_0231C178: + .byte 0x4C, 0x49, 0x56, 0x45 + .byte 0x53, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x00, 0x00, 0x00 + .global ov11_0231C18C +ov11_0231C18C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x4E, 0x45, 0x58 + .byte 0x54, 0x00, 0x00, 0x00 + .global ov11_0231C1A0 +ov11_0231C1A0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F + .byte 0x4B, 0x49, 0x5F, 0x44, 0x4F, 0x00, 0x00, 0x00 + .global ov11_0231C1B4 +ov11_0231C1B4: + .byte 0x47, 0x4F, 0x54, 0x4F, 0x5F, 0x46, 0x52, 0x45 + .byte 0x45, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00, 0x00 + .global ov11_0231C1C8 +ov11_0231C1C8: + .byte 0x4D, 0x4F, 0x56, 0x45 + .byte 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x43, 0x41, 0x4D, 0x45, 0x52, 0x41, 0x00, 0x00, 0x00 + .global ov11_0231C1DC +ov11_0231C1DC: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x4D, 0x41, 0x50, 0x49, 0x4E, 0x5F + .byte 0x41, 0x45, 0x00, 0x00 + .global ov11_0231C1F0 +ov11_0231C1F0: + .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x52, 0x45, 0x50, 0x4C, 0x59, 0x5F + .byte 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00, 0x00 + .global ov11_0231C204 +ov11_0231C204: + .byte 0x4F, 0x42, 0x4A, 0x45, 0x43, 0x54, 0x5F, 0x4D + .byte 0x4F, 0x56, 0x45, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x00, 0x00 + .global ov11_0231C218 +ov11_0231C218: + .byte 0x57, 0x41, 0x4B, 0x45 + .byte 0x55, 0x50, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00 + .global ov11_0231C22C +ov11_0231C22C: + .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x53, 0x55, 0x52, 0x50, 0x52, 0x49, 0x53, 0x45, 0x5F, 0x46, 0x55 + .byte 0x4E, 0x43, 0x00, 0x00 + .global ov11_0231C240 +ov11_0231C240: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 + .byte 0x5F, 0x46, 0x49, 0x52, 0x53, 0x54, 0x00, 0x00 + .global ov11_0231C254 +ov11_0231C254: + .byte 0x46, 0x41, 0x44, 0x45, 0x5F, 0x4F, 0x55, 0x54 + .byte 0x5F, 0x41, 0x4C, 0x4C, 0x5F, 0x41, 0x46, 0x54, 0x45, 0x52, 0x00, 0x00 + .global ov11_0231C268 +ov11_0231C268: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x41, 0x46, 0x54, 0x45, 0x52, 0x00, 0x00 + .global ov11_0231C27C +ov11_0231C27C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F, 0x53, 0x48, 0x55, 0x5F + .byte 0x44, 0x4F, 0x00, 0x00 + .global ov11_0231C290 +ov11_0231C290: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41, 0x5F, 0x59, 0x55, 0x5F + .byte 0x4B, 0x49, 0x5F, 0x44, 0x4F, 0x58, 0x00, 0x00 + .global ov11_0231C2A4 +ov11_0231C2A4: + .byte 0x47, 0x4F, 0x54, 0x4F, 0x5F, 0x44, 0x45, 0x42 + .byte 0x55, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 + .global ov11_0231C2B8 +ov11_0231C2B8: + .byte 0x53, 0x45, 0x54, 0x55 + .byte 0x50, 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x43, 0x41, 0x4D, 0x45, 0x52, 0x41, 0x00, 0x00 + .global ov11_0231C2CC +ov11_0231C2CC: + .byte 0x4F, 0x42, 0x4A, 0x45, 0x43, 0x54, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x4E, 0x4F, 0x52, 0x4D + .byte 0x41, 0x4C, 0x00, 0x00 + .global ov11_0231C2E0 +ov11_0231C2E0: + .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x46, 0x52, 0x45, 0x45, 0x5F, 0x44 + .byte 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 + .global ov11_0231C2F4 +ov11_0231C2F4: + .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x44, 0x45 + .byte 0x42, 0x55, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00 + .global ov11_0231C308 +ov11_0231C308: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x30, 0x43, 0x48, 0x4F, 0x55, 0x52, 0x45, 0x49, 0x00 + .global ov11_0231C31C +ov11_0231C31C: + .byte 0x4F, 0x42, 0x4A, 0x45, 0x43, 0x54, 0x5F, 0x52, 0x45, 0x50, 0x4C, 0x59, 0x5F, 0x4E, 0x4F, 0x52 + .byte 0x4D, 0x41, 0x4C, 0x00 + .global ov11_0231C330 +ov11_0231C330: + .byte 0x4C, 0x49, 0x56, 0x45, 0x53, 0x5F, 0x41, 0x43, 0x54, 0x49, 0x4E, 0x47 + .byte 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00 + .global ov11_0231C344 +ov11_0231C344: + .byte 0x46, 0x41, 0x44, 0x45, 0x5F, 0x4F, 0x55, 0x54 + .byte 0x5F, 0x41, 0x4C, 0x4C, 0x5F, 0x42, 0x45, 0x46, 0x4F, 0x52, 0x45, 0x00 + .global ov11_0231C358 +ov11_0231C358: + .byte 0x47, 0x4F, 0x54, 0x4F + .byte 0x5F, 0x52, 0x45, 0x53, 0x43, 0x55, 0x45, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00 + .global ov11_0231C36C +ov11_0231C36C: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x53, 0x45, 0x43 + .byte 0x4F, 0x4E, 0x44, 0x00 + .global ov11_0231C380 +ov11_0231C380: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 + .byte 0x5F, 0x52, 0x45, 0x53, 0x55, 0x4D, 0x45, 0x00 + .global ov11_0231C394 +ov11_0231C394: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x48, 0x41 + .byte 0x5F, 0x59, 0x55, 0x5F, 0x53, 0x48, 0x55, 0x5F, 0x44, 0x4F, 0x58, 0x00 + .global ov11_0231C3A8 +ov11_0231C3A8: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x4E, 0x30, 0x31, 0x5F, 0x31, 0x30, 0x59, 0x41, 0x52, 0x41, 0x52, 0x45, 0x54, 0x41 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C3C0 +ov11_0231C3C0: + .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x44, 0x45, 0x42, 0x55, 0x47 + .byte 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C3D8 +ov11_0231C3D8: + .byte 0x4E, 0x4F, 0x52, 0x4D + .byte 0x41, 0x4C, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x45, 0x4E, 0x44, 0x5F, 0x54, 0x41, 0x4C, 0x4B + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C3F0 +ov11_0231C3F0: + .byte 0x54, 0x41, 0x4C, 0x4B, 0x5F, 0x50, 0x41, 0x52, 0x54, 0x4E, 0x45, 0x52 + .byte 0x5F, 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C408 +ov11_0231C408: + .byte 0x47, 0x4F, 0x54, 0x4F + .byte 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C420 +ov11_0231C420: + .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x52, 0x45, 0x53, 0x43, 0x55, 0x45 + .byte 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C438 +ov11_0231C438: + .byte 0x47, 0x45, 0x54, 0x4F + .byte 0x55, 0x54, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5F, 0x52, 0x45, 0x54, 0x55, 0x52 + .byte 0x4E, 0x00, 0x00, 0x00 + .global ov11_0231C450 +ov11_0231C450: + .byte 0x50, 0x45, 0x52, 0x46, 0x4F, 0x52, 0x4D, 0x45, 0x52, 0x5F, 0x4D, 0x4F + .byte 0x56, 0x45, 0x5F, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0x4C, 0x00, 0x00, 0x00 + .global ov11_0231C468 +ov11_0231C468: + .byte 0x50, 0x45, 0x52, 0x46 + .byte 0x4F, 0x52, 0x4D, 0x45, 0x52, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47 + .byte 0x45, 0x00, 0x00, 0x00 + .global ov11_0231C480 +ov11_0231C480: + .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F + .byte 0x44, 0x4F, 0x57, 0x4E, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00 + .global ov11_0231C498 +ov11_0231C498: + .byte 0x47, 0x4F, 0x54, 0x4F + .byte 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x41, 0x52, 0x49, 0x4F, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F + .byte 0x4E, 0x00, 0x00, 0x00 + .global ov11_0231C4B0 +ov11_0231C4B0: + .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F + .byte 0x4C, 0x45, 0x46, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00 + .global ov11_0231C4C8 +ov11_0231C4C8: + .byte 0x53, 0x4F, 0x52, 0x41 + .byte 0x4E, 0x4F, 0x49, 0x54, 0x41, 0x44, 0x41, 0x4B, 0x49, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x53, 0x45 + .byte 0x54, 0x00, 0x00, 0x00 + .global ov11_0231C4E0 +ov11_0231C4E0: + .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F + .byte 0x46, 0x41, 0x53, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00, 0x00 + .global ov11_0231C4F8 +ov11_0231C4F8: + .byte 0x47, 0x4F, 0x54, 0x4F + .byte 0x5F, 0x54, 0x52, 0x41, 0x49, 0x4E, 0x49, 0x4E, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F + .byte 0x4E, 0x00, 0x00, 0x00 + .global ov11_0231C510 +ov11_0231C510: + .byte 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x42, 0x41, 0x53, 0x45, 0x5F, 0x46, 0x55 + .byte 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00 + .global ov11_0231C528 +ov11_0231C528: + .byte 0x45, 0x4E, 0x54, 0x45 + .byte 0x52, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F + .byte 0x4E, 0x00, 0x00, 0x00 + .global ov11_0231C540 +ov11_0231C540: + .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45 + .byte 0x53, 0x54, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 + .global ov11_0231C558 +ov11_0231C558: + .byte 0x4C, 0x4F, 0x4F, 0x4B + .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5F, 0x46, 0x55 + .byte 0x4E, 0x43, 0x00, 0x00 + .global ov11_0231C570 +ov11_0231C570: + .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x48, 0x41, 0x50, 0x50, 0x59, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00 + .global ov11_0231C588 +ov11_0231C588: + .byte 0x4A, 0x55, 0x4D, 0x50 + .byte 0x5F, 0x41, 0x4E, 0x47, 0x52, 0x59, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49 + .byte 0x45, 0x53, 0x00, 0x00 + .global ov11_0231C5A0 +ov11_0231C5A0: + .byte 0x48, 0x45, 0x41, 0x44, 0x5F, 0x53, 0x48, 0x41, 0x4B, 0x45, 0x5F, 0x46 + .byte 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00 + .global ov11_0231C5B8 +ov11_0231C5B8: + .byte 0x49, 0x4E, 0x49, 0x54 + .byte 0x5F, 0x53, 0x4C, 0x45, 0x45, 0x50, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49 + .byte 0x45, 0x53, 0x00, 0x00 + .global ov11_0231C5D0 +ov11_0231C5D0: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 + .byte 0x5F, 0x49, 0x4E, 0x49, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00 + .global ov11_0231C5E8 +ov11_0231C5E8: + .byte 0x45, 0x4E, 0x54, 0x45 + .byte 0x52, 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x41, 0x52, 0x49, 0x4F, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45 + .byte 0x4F, 0x4E, 0x00, 0x00 + .global ov11_0231C600 +ov11_0231C600: + .byte 0x45, 0x4E, 0x54, 0x45, 0x52, 0x5F, 0x54, 0x52, 0x41, 0x49, 0x4E, 0x49 + .byte 0x4E, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x00, 0x00 + .global ov11_0231C618 +ov11_0231C618: + .byte 0x47, 0x45, 0x54, 0x4F + .byte 0x55, 0x54, 0x5F, 0x53, 0x43, 0x45, 0x4E, 0x41, 0x52, 0x49, 0x4F, 0x5F, 0x44, 0x55, 0x4E, 0x47 + .byte 0x45, 0x4F, 0x4E, 0x00 + .global ov11_0231C630 +ov11_0231C630: + .byte 0x47, 0x45, 0x54, 0x4F, 0x55, 0x54, 0x5F, 0x52, 0x45, 0x51, 0x55, 0x45 + .byte 0x53, 0x54, 0x5F, 0x43, 0x4F, 0x4E, 0x51, 0x55, 0x45, 0x53, 0x54, 0x00 + .global ov11_0231C648 +ov11_0231C648: + .byte 0x47, 0x45, 0x54, 0x4F + .byte 0x55, 0x54, 0x5F, 0x54, 0x52, 0x41, 0x49, 0x4E, 0x49, 0x4E, 0x47, 0x5F, 0x44, 0x55, 0x4E, 0x47 + .byte 0x45, 0x4F, 0x4E, 0x00 + .global ov11_0231C660 +ov11_0231C660: + .byte 0x4C, 0x4F, 0x4F, 0x4B, 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F + .byte 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00 + .global ov11_0231C678 +ov11_0231C678: + .byte 0x45, 0x58, 0x50, 0x4C + .byte 0x41, 0x4E, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52 + .byte 0x49, 0x45, 0x53, 0x00 + .global ov11_0231C690 +ov11_0231C690: + .byte 0x4D, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5F, 0x43, 0x4C, 0x4F, 0x53 + .byte 0x45, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231C6A8 +ov11_0231C6A8: + .byte 0x44, 0x45, 0x42, 0x55 + .byte 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x5F, 0x42 + .byte 0x49, 0x50, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C6C4 +ov11_0231C6C4: + .byte 0x4A, 0x55, 0x4D, 0x50, 0x5F, 0x53, 0x55, 0x52 + .byte 0x50, 0x52, 0x49, 0x53, 0x45, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45 + .byte 0x53, 0x00, 0x00, 0x00 + .global ov11_0231C6E0 +ov11_0231C6E0: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53 + .byte 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x5F, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x00, 0x00, 0x00 + .global ov11_0231C6FC +ov11_0231C6FC: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49 + .byte 0x4E, 0x47, 0x5F, 0x43, 0x48, 0x41, 0x52, 0x4D, 0x53, 0x00, 0x00, 0x00 + .global ov11_0231C718 +ov11_0231C718: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x4E, 0x45, 0x58, 0x54, 0x5F, 0x44, 0x41 + .byte 0x59, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00, 0x00 + .global ov11_0231C734 +ov11_0231C734: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C + .byte 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x5F, 0x50, 0x55, 0x50, 0x55, 0x52 + .byte 0x49, 0x4E, 0x00, 0x00 + .global ov11_0231C750 +ov11_0231C750: + .byte 0x45, 0x56, 0x45, 0x4E, 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45 + .byte 0x5F, 0x4E, 0x45, 0x58, 0x54, 0x5F, 0x44, 0x41, 0x59, 0x32, 0x5F, 0x46, 0x55, 0x4E, 0x43, 0x00 + .global ov11_0231C76C +ov11_0231C76C: + .byte 0x44, 0x45, 0x42, 0x55, 0x47, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49 + .byte 0x4E, 0x47, 0x5F, 0x4B, 0x49, 0x4D, 0x41, 0x57, 0x41, 0x52, 0x49, 0x00 + .global ov11_0231C788 +ov11_0231C788: + .byte 0x4C, 0x4F, 0x4F, 0x4B + .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x44, 0x4F, 0x57, 0x4E, 0x5F, 0x46, 0x55, 0x4E + .byte 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C7A8 +ov11_0231C7A8: + .byte 0x4C, 0x4F, 0x4F, 0x4B + .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x4C, 0x45, 0x46, 0x54, 0x5F, 0x46, 0x55, 0x4E + .byte 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C7C8 +ov11_0231C7C8: + .byte 0x4C, 0x4F, 0x4F, 0x4B + .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x46, 0x41, 0x53, 0x54, 0x5F, 0x46, 0x55, 0x4E + .byte 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C7E8 +ov11_0231C7E8: + .byte 0x45, 0x56, 0x45, 0x4E + .byte 0x54, 0x5F, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x5F, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4C + .byte 0x5F, 0x45, 0x50, 0x49, 0x53, 0x4F, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231C808 +ov11_0231C808: + .byte 0x4C, 0x4F, 0x4F, 0x4B + .byte 0x5F, 0x41, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x5F, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5F, 0x46, 0x55 + .byte 0x4E, 0x43, 0x5F, 0x53, 0x45, 0x52, 0x49, 0x45, 0x53, 0x00, 0x00, 0x00 + .global C_ROUTINES +C_ROUTINES: + .byte 0x00, 0x00, 0x04, 0x00 + .word ov11_02319B28 + .byte 0x01, 0x00, 0x04, 0x00 + .word ov11_0231BE60 + .byte 0x02, 0x00, 0x04, 0x00 + .word ov11_0231C3D8 + .byte 0x03, 0x00, 0x04, 0x00 + .word ov11_0231C1F0 + .byte 0x04, 0x00, 0x04, 0x00 + .word ov11_02319D08 + .byte 0x05, 0x00, 0x04, 0x00 + .word ov11_0231C31C + .byte 0x06, 0x00, 0x04, 0x00 + .word ov11_0231C330 + .byte 0x07, 0x00, 0x04, 0x00 + .word ov11_0231BE70 + .byte 0x08, 0x00, 0x04, 0x00 + .word ov11_02319B34 + .byte 0x09, 0x00, 0x04, 0x00 + .word ov11_0231BC70 + .byte 0x0A, 0x00, 0x04, 0x00 + .word ov11_0231BC20 + .byte 0x0B, 0x00, 0x04, 0x00 + .word ov11_0231C3F0 + .byte 0x0C, 0x00, 0x05, 0x00 + .word ov11_0231C164 + .byte 0x0D, 0x00, 0x05, 0x00 + .word ov11_0231C178 + .byte 0x0E, 0x00, 0x05, 0x00 + .word ov11_0231C0B0 + .byte 0x0F, 0x00, 0x05, 0x00 + .word ov11_0231C2CC + .byte 0x10, 0x00, 0x05, 0x00 + .word ov11_0231C204 + .byte 0x11, 0x00, 0x05, 0x00 + .word ov11_0231C450 + .byte 0x12, 0x00, 0x05, 0x00 + .word ov11_0231C468 + .byte 0x13, 0x00, 0x05, 0x00 + .word ov11_02319B40 + .byte 0x14, 0x00, 0x05, 0x00 + .word ov11_02319BF4 + .byte 0x15, 0x00, 0x05, 0x00 + .word ov11_02319B4C + .byte 0x16, 0x00, 0x05, 0x00 + .word ov11_02319B94 + .byte 0x17, 0x00, 0x05, 0x00 + .word ov11_02319CCC + .byte 0x18, 0x00, 0x05, 0x00 + .word ov11_02319BD0 + .byte 0x19, 0x00, 0x05, 0x00 + .word ov11_02319BDC + .byte 0x1A, 0x00, 0x09, 0x00 + .word ov11_02319D14 + .byte 0x1B, 0x00, 0x09, 0x00 + .word ov11_0231C218 + .byte 0x1C, 0x00, 0x09, 0x00 + .word ov11_0231C0C4 + .byte 0x1D, 0x00, 0x09, 0x00 + .word ov11_0231C660 + .byte 0x1E, 0x00, 0x09, 0x00 + .word ov11_0231C480 + .byte 0x1F, 0x00, 0x09, 0x00 + .word ov11_0231C788 + .byte 0x20, 0x00, 0x09, 0x00 + .word ov11_0231C558 + .byte 0x21, 0x00, 0x09, 0x00 + .word ov11_0231C808 + .byte 0x22, 0x00, 0x09, 0x00 + .word ov11_0231C4B0 + .byte 0x23, 0x00, 0x09, 0x00 + .word ov11_0231C7A8 + .byte 0x24, 0x00, 0x09, 0x00 + .word ov11_0231BE80 + .byte 0x25, 0x00, 0x09, 0x00 + .word ov11_0231C570 + .byte 0x26, 0x00, 0x09, 0x00 + .word ov11_0231C22C + .byte 0x27, 0x00, 0x09, 0x00 + .word ov11_0231C6C4 + .byte 0x28, 0x00, 0x09, 0x00 + .word ov11_0231BE90 + .byte 0x29, 0x00, 0x09, 0x00 + .word ov11_0231C588 + .byte 0x2A, 0x00, 0x09, 0x00 + .word ov11_0231C4E0 + .byte 0x2B, 0x00, 0x09, 0x00 + .word ov11_0231C7C8 + .byte 0x2C, 0x00, 0x09, 0x00 + .word ov11_0231BEB0 + .byte 0x2D, 0x00, 0x09, 0x00 + .word ov11_0231C5A0 + .byte 0x2E, 0x00, 0x09, 0x00 + .word ov11_0231C0D8 + .byte 0x2F, 0x00, 0x09, 0x00 + .word ov11_0231C678 + .byte 0x30, 0x00, 0x08, 0x00 + .word ov11_0231BEC0 + .byte 0x31, 0x00, 0x08, 0x00 + .word ov11_0231C5B8 + .byte 0x32, 0x00, 0x08, 0x00 + .word ov11_0231BC30 + .byte 0x33, 0x00, 0x08, 0x00 + .word ov11_0231C510 + .byte 0x34, 0x00, 0x07, 0x00 + .word ov11_0231C0EC + .byte 0x35, 0x00, 0x07, 0x00 + .word ov11_0231BC40 + .byte 0x36, 0x00, 0x07, 0x00 + .word ov11_0231A410 + .byte 0x37, 0x00, 0x07, 0x00 + .word ov11_0231BB60 + .byte 0x38, 0x00, 0x07, 0x00 + .word ov11_0231BED0 + .byte 0x39, 0x00, 0x07, 0x00 + .word ov11_0231BEE0 + .byte 0x3A, 0x00, 0x09, 0x00 + .word ov11_0231C100 + .byte 0x3B, 0x00, 0x09, 0x00 + .word ov11_0231C114 + .byte 0x3C, 0x00, 0x07, 0x00 + .word ov11_0231AD00 + .byte 0x3D, 0x00, 0x07, 0x00 + .word ov11_0231C18C + .byte 0x3E, 0x00, 0x07, 0x00 + .word ov11_0231C5D0 + .byte 0x3F, 0x00, 0x07, 0x00 + .word ov11_0231C718 + .byte 0x40, 0x00, 0x07, 0x00 + .word ov11_0231C750 + .byte 0x41, 0x00, 0x07, 0x00 + .word ov11_0231C240 + .byte 0x42, 0x00, 0x07, 0x00 + .word ov11_0231C36C + .byte 0x43, 0x00, 0x07, 0x00 + .word ov11_0231C268 + .byte 0x44, 0x00, 0x07, 0x00 + .word ov11_0231C380 + .byte 0x45, 0x00, 0x07, 0x00 + .word ov11_0231C7E8 + .byte 0x46, 0x00, 0x07, 0x00 + .word ov11_0231A250 + .byte 0x47, 0x00, 0x07, 0x00 + .word ov11_02319CC0 + .byte 0x48, 0x00, 0x07, 0x00 + .word ov11_02319CD8 + .byte 0x49, 0x00, 0x07, 0x00 + .word ov11_0231C6A8 + .byte 0x4A, 0x00, 0x07, 0x00 + .word ov11_0231C734 + .byte 0x4B, 0x00, 0x07, 0x00 + .word ov11_0231C6E0 + .byte 0x4C, 0x00, 0x07, 0x00 + .word ov11_0231C6FC + .byte 0x4D, 0x00, 0x07, 0x00 + .word ov11_0231C76C + .byte 0x4E, 0x00, 0x0A, 0x00 + .word ov11_02319B0C + .byte 0x4F, 0x00, 0x0A, 0x00 + .word ov11_02319AF4 + .byte 0x50, 0x00, 0x0A, 0x00 + .word ov11_02319B04 + .byte 0x51, 0x00, 0x0A, 0x00 + .word ov11_02319AFC + .byte 0x52, 0x00, 0x0A, 0x00 + .word C_ROUTINE_NAMES + .byte 0x53, 0x00, 0x0A, 0x00 + .word ov11_02319B14 + .byte 0x54, 0x00, 0x0A, 0x00 + .word ov11_0231BB50 + .byte 0x55, 0x00, 0x0A, 0x00 + .word ov11_0231BC50 + .byte 0x56, 0x00, 0x0A, 0x00 + .word ov11_0231C1A0 + .byte 0x57, 0x00, 0x0A, 0x00 + .word ov11_0231BF30 + .byte 0x58, 0x00, 0x0A, 0x00 + .word ov11_0231C27C + .byte 0x59, 0x00, 0x0A, 0x00 + .word ov11_0231ABE0 + .byte 0x5A, 0x00, 0x0A, 0x00 + .word ov11_0231BF40 + .byte 0x5B, 0x00, 0x0A, 0x00 + .word ov11_02319CF0 + .byte 0x5C, 0x00, 0x0A, 0x00 + .word ov11_0231BF60 + .byte 0x5D, 0x00, 0x0A, 0x00 + .word ov11_0231C290 + .byte 0x5E, 0x00, 0x0A, 0x00 + .word ov11_0231C128 + .byte 0x5F, 0x00, 0x0A, 0x00 + .word ov11_0231C394 + .byte 0x60, 0x00, 0x0A, 0x00 + .word ov11_0231BB70 + .byte 0x61, 0x00, 0x0A, 0x00 + .word ov11_0231AA80 + .byte 0x62, 0x00, 0x0A, 0x00 + .word ov11_0231BC60 + .byte 0x63, 0x00, 0x0A, 0x00 + .word ov11_0231A930 + .byte 0x64, 0x00, 0x0A, 0x00 + .word ov11_0231A340 + .byte 0x65, 0x00, 0x0A, 0x00 + .word ov11_0231A360 + .byte 0x66, 0x00, 0x0A, 0x00 + .word ov11_0231AD40 + .byte 0x67, 0x00, 0x0A, 0x00 + .word ov11_0231A390 + .byte 0x68, 0x00, 0x0A, 0x00 + .word ov11_0231AD90 + .byte 0x69, 0x00, 0x0A, 0x00 + .word ov11_0231A3C0 + .byte 0x6A, 0x00, 0x0A, 0x00 + .word ov11_0231A310 + .byte 0x6B, 0x00, 0x0A, 0x00 + .word ov11_0231A370 + .byte 0x6C, 0x00, 0x0A, 0x00 + .word ov11_0231AA00 + .byte 0x6D, 0x00, 0x0A, 0x00 + .word ov11_0231BA00 + .byte 0x6E, 0x00, 0x0A, 0x00 + .word ov11_0231A440 + .byte 0x6F, 0x00, 0x0A, 0x00 + .word ov11_0231BF80 + .byte 0x70, 0x00, 0x0A, 0x00 + .word ov11_0231A270 + .byte 0x71, 0x00, 0x0A, 0x00 + .word ov11_0231A290 + .byte 0x72, 0x00, 0x0A, 0x00 + .word ov11_0231A2A0 + .byte 0x73, 0x00, 0x0A, 0x00 + .word ov11_0231A4B0 + .byte 0x74, 0x00, 0x0A, 0x00 + .word ov11_0231BF90 + .byte 0x75, 0x00, 0x0A, 0x00 + .word ov11_0231BFA0 + .byte 0x76, 0x00, 0x0A, 0x00 + .word ov11_0231BFB0 + .byte 0x77, 0x00, 0x0A, 0x00 + .word ov11_0231C13C + .byte 0x78, 0x00, 0x0A, 0x00 + .word ov11_0231BB80 + .byte 0x79, 0x00, 0x0A, 0x00 + .word ov11_0231BFC0 + .byte 0x7A, 0x00, 0x0A, 0x00 + .word ov11_0231BB90 + .byte 0x7B, 0x00, 0x0A, 0x00 + .word ov11_02319EA0 + .byte 0x7C, 0x00, 0x0A, 0x00 + .word ov11_02319E80 + .byte 0x7D, 0x00, 0x0A, 0x00 + .word ov11_0231AAA0 + .byte 0x7E, 0x00, 0x0A, 0x00 + .word ov11_0231BFD0 + .byte 0x7F, 0x00, 0x0A, 0x00 + .word ov11_0231BBA0 + .byte 0x80, 0x00, 0x0A, 0x00 + .word ov11_0231BBB0 + .byte 0x81, 0x00, 0x0A, 0x00 + .word ov11_0231A090 + .byte 0x82, 0x00, 0x0A, 0x00 + .word ov11_0231BFF0 + .byte 0x83, 0x00, 0x0A, 0x00 + .word ov11_0231A0E0 + .byte 0x84, 0x00, 0x0A, 0x00 + .word ov11_0231C010 + .byte 0x85, 0x00, 0x0A, 0x00 + .word ov11_0231C020 + .byte 0x86, 0x00, 0x0A, 0x00 + .word ov11_0231ABB0 + .byte 0x87, 0x00, 0x0A, 0x00 + .word ov11_02319EE0 + .byte 0x88, 0x00, 0x0A, 0x00 + .word ov11_0231A120 + .byte 0x89, 0x00, 0x0A, 0x00 + .word ov11_0231C030 + .byte 0x8A, 0x00, 0x0A, 0x00 + .word ov11_0231AB90 + .byte 0x8B, 0x00, 0x0A, 0x00 + .word ov11_0231A160 + .byte 0x8C, 0x00, 0x0A, 0x00 + .word ov11_02319DA0 + .byte 0x8D, 0x00, 0x0A, 0x00 + .word ov11_02319D90 + .byte 0x8E, 0x00, 0x0A, 0x00 + .word ov11_02319D50 + .byte 0x8F, 0x00, 0x0A, 0x00 + .word ov11_0231C040 + .byte 0x90, 0x00, 0x0A, 0x00 + .word ov11_0231A1A0 + .byte 0x91, 0x00, 0x0A, 0x00 + .word ov11_0231A1C0 + .byte 0x92, 0x00, 0x0A, 0x00 + .word ov11_0231AB80 + .byte 0x93, 0x00, 0x0A, 0x00 + .word ov11_02319DF0 + .byte 0x94, 0x00, 0x0A, 0x00 + .word ov11_0231C050 + .byte 0x95, 0x00, 0x0A, 0x00 + .word ov11_0231A330 + .byte 0x96, 0x00, 0x0A, 0x00 + .word ov11_0231ACF0 + .byte 0x97, 0x00, 0x0A, 0x00 + .word ov11_0231C060 + .byte 0x98, 0x00, 0x0A, 0x00 + .word ov11_0231AE30 + .byte 0x99, 0x00, 0x0A, 0x00 + .word ov11_0231A220 + .byte 0x9A, 0x00, 0x0A, 0x00 + .word ov11_0231C070 + .byte 0x9B, 0x00, 0x0A, 0x00 + .word ov11_0231A260 + .byte 0x9C, 0x00, 0x0A, 0x00 + .word ov11_0231AB60 + .byte 0x9D, 0x00, 0x0A, 0x00 + .word ov11_02319E60 + .byte 0x9E, 0x00, 0x0A, 0x00 + .word ov11_02319D40 + .byte 0x9F, 0x00, 0x0A, 0x00 + .word ov11_02319E70 + .byte 0xA0, 0x00, 0x0A, 0x00 + .word ov11_0231AFA0 + .byte 0xA1, 0x00, 0x0A, 0x00 + .word ov11_0231BA30 + .byte 0xA2, 0x00, 0x0A, 0x00 + .word ov11_0231AA40 + .byte 0xA3, 0x00, 0x0A, 0x00 + .word ov11_0231AAC0 + .byte 0xA4, 0x00, 0x0A, 0x00 + .word ov11_0231A380 + .byte 0xA5, 0x00, 0x0A, 0x00 + .word ov11_0231A320 + .byte 0xA6, 0x00, 0x0A, 0x00 + .word ov11_0231B1F0 + .byte 0xA7, 0x00, 0x0A, 0x00 + .word ov11_0231C080 + .byte 0xA8, 0x00, 0x0A, 0x00 + .word ov11_0231BA70 + .byte 0xA9, 0x00, 0x0A, 0x00 + .word ov11_0231A2F0 + .byte 0xAA, 0x00, 0x0A, 0x00 + .word ov11_0231B310 + .byte 0xAB, 0x00, 0x0A, 0x00 + .word ov11_02319F30 + .byte 0xAC, 0x00, 0x0A, 0x00 + .word ov11_0231A1F0 + .byte 0xAD, 0x00, 0x0A, 0x00 + .word ov11_0231B430 + .byte 0xAE, 0x00, 0x0A, 0x00 + .word ov11_0231B440 + .byte 0xAF, 0x00, 0x0A, 0x00 + .word ov11_02319EF0 + .byte 0xB0, 0x00, 0x0A, 0x00 + .word ov11_02319DD0 + .byte 0xB1, 0x00, 0x0A, 0x00 + .word ov11_02319D20 + .byte 0xB2, 0x00, 0x0A, 0x00 + .word ov11_0231C090 + .byte 0xB3, 0x00, 0x0A, 0x00 + .word ov11_02319E00 + .byte 0xB4, 0x00, 0x0A, 0x00 + .word ov11_02319F00 + .byte 0xB5, 0x00, 0x0A, 0x00 + .word ov11_0231BA80 + .byte 0xB6, 0x00, 0x0A, 0x00 + .word ov11_0231B630 + .byte 0xB7, 0x00, 0x0A, 0x00 + .word ov11_0231BA60 + .byte 0xB8, 0x00, 0x0A, 0x00 + .word ov11_0231C0A0 + .byte 0xB9, 0x00, 0x0A, 0x00 + .word ov11_0231BA40 + .byte 0xBA, 0x00, 0x0A, 0x00 + .word ov11_0231B7F0 + .byte 0xBB, 0x00, 0x0A, 0x00 + .word ov11_0231BBC0 + .byte 0xBC, 0x00, 0x0A, 0x00 + .word ov11_0231BBD0 + .byte 0xBD, 0x00, 0x0A, 0x00 + .word ov11_0231B880 + .byte 0xBE, 0x00, 0x0A, 0x00 + .word ov11_0231B950 + .byte 0xBF, 0x00, 0x0A, 0x00 + .word ov11_0231B9E0 + .byte 0xC0, 0x00, 0x0A, 0x00 + .word ov11_0231B9D0 + .byte 0xC1, 0x00, 0x0A, 0x00 + .word ov11_0231B9C0 + .byte 0xC2, 0x00, 0x0A, 0x00 + .word ov11_0231B9B0 + .byte 0xC3, 0x00, 0x0A, 0x00 + .word ov11_0231BC90 + .byte 0xC4, 0x00, 0x0A, 0x00 + .word ov11_0231B990 + .byte 0xC5, 0x00, 0x0A, 0x00 + .word ov11_0231A9B0 + .byte 0xC6, 0x00, 0x0A, 0x00 + .word ov11_0231A1D0 + .byte 0xC7, 0x00, 0x0A, 0x00 + .word ov11_0231B960 + .byte 0xC8, 0x00, 0x0A, 0x00 + .word ov11_0231BA90 + .byte 0xC9, 0x00, 0x0A, 0x00 + .word ov11_0231BAA0 + .byte 0xCA, 0x00, 0x0A, 0x00 + .word ov11_0231B930 + .byte 0xCB, 0x00, 0x0A, 0x00 + .word ov11_0231B920 + .byte 0xCC, 0x00, 0x0A, 0x00 + .word ov11_0231B910 + .byte 0xCD, 0x00, 0x0A, 0x00 + .word ov11_0231B900 + .byte 0xCE, 0x00, 0x0A, 0x00 + .word ov11_0231B8F0 + .byte 0xCF, 0x00, 0x0A, 0x00 + .word ov11_0231BAB0 + .byte 0xD0, 0x00, 0x0A, 0x00 + .word ov11_0231BAC0 + .byte 0xD1, 0x00, 0x0A, 0x00 + .word ov11_0231B8C0 + .byte 0xD2, 0x00, 0x0A, 0x00 + .word ov11_0231B8B0 + .byte 0xD3, 0x00, 0x0A, 0x00 + .word ov11_0231B8A0 + .byte 0xD4, 0x00, 0x0A, 0x00 + .word ov11_0231B890 + .byte 0xD5, 0x00, 0x0A, 0x00 + .word ov11_0231A190 + .byte 0xD6, 0x00, 0x0A, 0x00 + .word ov11_0231BCA0 + .byte 0xD7, 0x00, 0x0A, 0x00 + .word ov11_0231B860 + .byte 0xD8, 0x00, 0x0A, 0x00 + .word ov11_0231B850 + .byte 0xD9, 0x00, 0x0A, 0x00 + .word ov11_0231B840 + .byte 0xDA, 0x00, 0x0A, 0x00 + .word ov11_0231B830 + .byte 0xDB, 0x00, 0x0A, 0x00 + .word ov11_0231B820 + .byte 0xDC, 0x00, 0x0A, 0x00 + .word ov11_0231B810 + .byte 0xDD, 0x00, 0x0A, 0x00 + .word ov11_0231A8F0 + .byte 0xDE, 0x00, 0x0A, 0x00 + .word ov11_0231A170 + .byte 0xDF, 0x00, 0x0A, 0x00 + .word ov11_0231B7E0 + .byte 0xE0, 0x00, 0x0A, 0x00 + .word ov11_0231BCD0 + .byte 0xE1, 0x00, 0x0A, 0x00 + .word ov11_0231B7C0 + .byte 0xE2, 0x00, 0x0A, 0x00 + .word ov11_0231B7B0 + .byte 0xE3, 0x00, 0x0A, 0x00 + .word ov11_0231B7A0 + .byte 0xE4, 0x00, 0x0A, 0x00 + .word ov11_0231B790 + .byte 0xE5, 0x00, 0x0A, 0x00 + .word ov11_0231B780 + .byte 0xE6, 0x00, 0x0A, 0x00 + .word ov11_0231BCE0 + .byte 0xE7, 0x00, 0x0A, 0x00 + .word ov11_0231B760 + .byte 0xE8, 0x00, 0x0A, 0x00 + .word ov11_0231B750 + .byte 0xE9, 0x00, 0x0A, 0x00 + .word ov11_0231BCF0 + .byte 0xEA, 0x00, 0x0A, 0x00 + .word ov11_0231A890 + .byte 0xEB, 0x00, 0x0A, 0x00 + .word ov11_0231B720 + .byte 0xEC, 0x00, 0x0A, 0x00 + .word ov11_0231B710 + .byte 0xED, 0x00, 0x0A, 0x00 + .word ov11_0231B700 + .byte 0xEE, 0x00, 0x0A, 0x00 + .word ov11_0231B6F0 + .byte 0xEF, 0x00, 0x0A, 0x00 + .word ov11_0231BD00 + .byte 0xF0, 0x00, 0x0A, 0x00 + .word ov11_0231A860 + .byte 0xF1, 0x00, 0x0A, 0x00 + .word ov11_0231B6C0 + .byte 0xF2, 0x00, 0x0A, 0x00 + .word ov11_0231B6B0 + .byte 0xF3, 0x00, 0x0A, 0x00 + .word ov11_0231B6A0 + .byte 0xF4, 0x00, 0x0A, 0x00 + .word ov11_0231B690 + .byte 0xF5, 0x00, 0x0A, 0x00 + .word ov11_0231B680 + .byte 0xF6, 0x00, 0x0A, 0x00 + .word ov11_0231B670 + .byte 0xF7, 0x00, 0x0A, 0x00 + .word ov11_0231BD20 + .byte 0xF8, 0x00, 0x0A, 0x00 + .word ov11_0231BD30 + .byte 0xF9, 0x00, 0x0A, 0x00 + .word ov11_0231B640 + .byte 0xFA, 0x00, 0x0A, 0x00 + .word ov11_0231A810 + .byte 0xFB, 0x00, 0x0A, 0x00 + .word ov11_0231B620 + .byte 0xFC, 0x00, 0x0A, 0x00 + .word ov11_0231BD40 + .byte 0xFD, 0x00, 0x0A, 0x00 + .word ov11_0231B600 + .byte 0xFE, 0x00, 0x0A, 0x00 + .word ov11_0231A7F0 + .byte 0xFF, 0x00, 0x0A, 0x00 + .word ov11_0231B5E0 + .byte 0x00, 0x01, 0x0A, 0x00 + .word ov11_0231BD50 + .byte 0x01, 0x01, 0x0A, 0x00 + .word ov11_0231B5C0 + .byte 0x02, 0x01, 0x0A, 0x00 + .word ov11_0231B5B0 + .byte 0x03, 0x01, 0x0A, 0x00 + .word ov11_0231BD60 + .byte 0x04, 0x01, 0x0A, 0x00 + .word ov11_0231BD70 + .byte 0x05, 0x01, 0x0A, 0x00 + .word ov11_0231B580 + .byte 0x06, 0x01, 0x0A, 0x00 + .word ov11_0231A7B0 + .byte 0x07, 0x01, 0x0A, 0x00 + .word ov11_0231B560 + .byte 0x08, 0x01, 0x0A, 0x00 + .word ov11_0231BD80 + .byte 0x09, 0x01, 0x0A, 0x00 + .word ov11_0231B540 + .byte 0x0A, 0x01, 0x0A, 0x00 + .word ov11_0231B530 + .byte 0x0B, 0x01, 0x0A, 0x00 + .word ov11_0231B520 + .byte 0x0C, 0x01, 0x0A, 0x00 + .word ov11_0231B510 + .byte 0x0D, 0x01, 0x0A, 0x00 + .word ov11_0231B500 + .byte 0x0E, 0x01, 0x0A, 0x00 + .word ov11_0231A770 + .byte 0x0F, 0x01, 0x0A, 0x00 + .word ov11_0231BD90 + .byte 0x10, 0x01, 0x0A, 0x00 + .word ov11_0231A760 + .byte 0x11, 0x01, 0x0A, 0x00 + .word ov11_0231BDA0 + .byte 0x12, 0x01, 0x0A, 0x00 + .word ov11_0231B4B0 + .byte 0x13, 0x01, 0x0A, 0x00 + .word ov11_0231BAD0 + .byte 0x14, 0x01, 0x0A, 0x00 + .word ov11_0231BAE0 + .byte 0x15, 0x01, 0x0A, 0x00 + .word ov11_0231B480 + .byte 0x16, 0x01, 0x0A, 0x00 + .word ov11_0231B470 + .byte 0x17, 0x01, 0x0A, 0x00 + .word ov11_0231B460 + .byte 0x18, 0x01, 0x0A, 0x00 + .word ov11_0231B450 + .byte 0x19, 0x01, 0x0A, 0x00 + .word ov11_0231BDB0 + .byte 0x1A, 0x01, 0x0A, 0x00 + .word ov11_0231BDC0 + .byte 0x1B, 0x01, 0x0A, 0x00 + .word ov11_0231B420 + .byte 0x1C, 0x01, 0x0A, 0x00 + .word ov11_0231B410 + .byte 0x1D, 0x01, 0x0A, 0x00 + .word ov11_0231B400 + .byte 0x1E, 0x01, 0x0A, 0x00 + .word ov11_0231A6F0 + .byte 0x1F, 0x01, 0x0A, 0x00 + .word ov11_0231B3E0 + .byte 0x20, 0x01, 0x0A, 0x00 + .word ov11_0231B3D0 + .byte 0x21, 0x01, 0x0A, 0x00 + .word ov11_0231B3C0 + .byte 0x22, 0x01, 0x0A, 0x00 + .word ov11_0231B3B0 + .byte 0x23, 0x01, 0x0A, 0x00 + .word ov11_0231BDD0 + .byte 0x24, 0x01, 0x0A, 0x00 + .word ov11_0231B390 + .byte 0x25, 0x01, 0x0A, 0x00 + .word ov11_0231B380 + .byte 0x26, 0x01, 0x0A, 0x00 + .word ov11_0231A6B0 + .byte 0x27, 0x01, 0x0A, 0x00 + .word ov11_0231B360 + .byte 0x28, 0x01, 0x0A, 0x00 + .word ov11_0231B350 + .byte 0x29, 0x01, 0x0A, 0x00 + .word ov11_0231B340 + .byte 0x2A, 0x01, 0x0A, 0x00 + .word ov11_0231B330 + .byte 0x2B, 0x01, 0x0A, 0x00 + .word ov11_0231BDF0 + .byte 0x2C, 0x01, 0x0A, 0x00 + .word ov11_0231A680 + .byte 0x2D, 0x01, 0x0A, 0x00 + .word ov11_0231B300 + .byte 0x2E, 0x01, 0x0A, 0x00 + .word ov11_0231A670 + .byte 0x2F, 0x01, 0x0A, 0x00 + .word ov11_0231B2E0 + .byte 0x30, 0x01, 0x0A, 0x00 + .word ov11_0231B2D0 + .byte 0x31, 0x01, 0x0A, 0x00 + .word ov11_0231B2C0 + .byte 0x32, 0x01, 0x0A, 0x00 + .word ov11_0231B2B0 + .byte 0x33, 0x01, 0x0A, 0x00 + .word ov11_0231B2A0 + .byte 0x34, 0x01, 0x0A, 0x00 + .word ov11_0231BE10 + .byte 0x35, 0x01, 0x0A, 0x00 + .word ov11_0231B280 + .byte 0x36, 0x01, 0x0A, 0x00 + .word ov11_0231A630 + .byte 0x37, 0x01, 0x0A, 0x00 + .word ov11_0231B260 + .byte 0x38, 0x01, 0x0A, 0x00 + .word ov11_0231B250 + .byte 0x39, 0x01, 0x0A, 0x00 + .word ov11_0231B240 + .byte 0x3A, 0x01, 0x0A, 0x00 + .word ov11_0231A610 + .byte 0x3B, 0x01, 0x0A, 0x00 + .word ov11_0231B220 + .byte 0x3C, 0x01, 0x0A, 0x00 + .word ov11_0231B210 + .byte 0x3D, 0x01, 0x0A, 0x00 + .word ov11_0231B200 + .byte 0x3E, 0x01, 0x0A, 0x00 + .word ov11_0231A5F0 + .byte 0x3F, 0x01, 0x0A, 0x00 + .word ov11_0231B1E0 + .byte 0x40, 0x01, 0x0A, 0x00 + .word ov11_0231B1D0 + .byte 0x41, 0x01, 0x0A, 0x00 + .word ov11_0231B1C0 + .byte 0x42, 0x01, 0x0A, 0x00 + .word ov11_0231B1B0 + .byte 0x43, 0x01, 0x0A, 0x00 + .word ov11_0231B1A0 + .byte 0x44, 0x01, 0x0A, 0x00 + .word ov11_0231B190 + .byte 0x45, 0x01, 0x0A, 0x00 + .word ov11_0231B180 + .byte 0x46, 0x01, 0x0A, 0x00 + .word ov11_0231A5B0 + .byte 0x47, 0x01, 0x0A, 0x00 + .word ov11_0231B160 + .byte 0x48, 0x01, 0x0A, 0x00 + .word ov11_0231B150 + .byte 0x49, 0x01, 0x0A, 0x00 + .word ov11_0231B140 + .byte 0x4A, 0x01, 0x0A, 0x00 + .word ov11_0231B130 + .byte 0x4B, 0x01, 0x0A, 0x00 + .word ov11_0231B120 + .byte 0x4C, 0x01, 0x0A, 0x00 + .word ov11_0231B110 + .byte 0x4D, 0x01, 0x0A, 0x00 + .word ov11_0231B100 + .byte 0x4E, 0x01, 0x0A, 0x00 + .word ov11_0231B0F0 + .byte 0x4F, 0x01, 0x0A, 0x00 + .word ov11_0231B0E0 + .byte 0x50, 0x01, 0x0A, 0x00 + .word ov11_0231BE40 + .byte 0x51, 0x01, 0x0A, 0x00 + .word ov11_0231B0C0 + .byte 0x52, 0x01, 0x0A, 0x00 + .word ov11_0231B0B0 + .byte 0x53, 0x01, 0x0A, 0x00 + .word ov11_0231B0A0 + .byte 0x54, 0x01, 0x0A, 0x00 + .word ov11_0231B090 + .byte 0x55, 0x01, 0x0A, 0x00 + .word ov11_0231B080 + .byte 0x56, 0x01, 0x0A, 0x00 + .word ov11_0231B070 + .byte 0x57, 0x01, 0x0A, 0x00 + .word ov11_0231B060 + .byte 0x58, 0x01, 0x0A, 0x00 + .word ov11_0231BE50 + .byte 0x59, 0x01, 0x0A, 0x00 + .word ov11_0231B040 + .byte 0x5A, 0x01, 0x0A, 0x00 + .word ov11_0231A510 + .byte 0x5B, 0x01, 0x0A, 0x00 + .word ov11_0231B020 + .byte 0x5C, 0x01, 0x0A, 0x00 + .word ov11_0231B010 + .byte 0x5D, 0x01, 0x0A, 0x00 + .word ov11_0231B000 + .byte 0x5E, 0x01, 0x0A, 0x00 + .word ov11_0231AFF0 + .byte 0x5F, 0x01, 0x0A, 0x00 + .word ov11_0231AFE0 + .byte 0x60, 0x01, 0x0A, 0x00 + .word ov11_0231AE00 + .byte 0x61, 0x01, 0x0A, 0x00 + .word ov11_0231AE40 + .byte 0x62, 0x01, 0x0A, 0x00 + .word ov11_0231A3B0 + .byte 0x63, 0x01, 0x0A, 0x00 + .word ov11_0231ADE0 + .byte 0x64, 0x01, 0x0A, 0x00 + .word ov11_0231AEB0 + .byte 0x65, 0x01, 0x0A, 0x00 + .word ov11_0231AB50 + .byte 0x66, 0x01, 0x0A, 0x00 + .word ov11_0231A420 + .byte 0x67, 0x01, 0x0A, 0x00 + .word ov11_02319E90 + .byte 0x68, 0x01, 0x0A, 0x00 + .word ov11_02319D70 + .byte 0x69, 0x01, 0x0A, 0x00 + .word ov11_0231AF40 + .byte 0x6A, 0x01, 0x0A, 0x00 + .word ov11_0231AF30 + .byte 0x6B, 0x01, 0x0A, 0x00 + .word ov11_0231AF20 + .byte 0x6C, 0x01, 0x0A, 0x00 + .word ov11_0231AF10 + .byte 0x6D, 0x01, 0x0A, 0x00 + .word ov11_0231A820 + .byte 0x6E, 0x01, 0x0A, 0x00 + .word ov11_0231A460 + .byte 0x6F, 0x01, 0x0A, 0x00 + .word ov11_0231AF60 + .byte 0x70, 0x01, 0x0A, 0x00 + .word ov11_0231AF00 + .byte 0x71, 0x01, 0x0A, 0x00 + .word ov11_0231A450 + .byte 0x72, 0x01, 0x0A, 0x00 + .word ov11_0231A3D0 + .byte 0x73, 0x01, 0x0A, 0x00 + .word ov11_0231A200 + .byte 0x74, 0x01, 0x0A, 0x00 + .word ov11_0231A4E0 + .byte 0x75, 0x01, 0x0A, 0x00 + .word ov11_0231A100 + .byte 0x76, 0x01, 0x0A, 0x00 + .word ov11_0231AAE0 + .byte 0x77, 0x01, 0x0A, 0x00 + .word ov11_0231AF70 + .byte 0x78, 0x01, 0x0A, 0x00 + .word ov11_0231A400 + .byte 0x79, 0x01, 0x0A, 0x00 + .word ov11_0231AA30 + .byte 0x7A, 0x01, 0x0A, 0x00 + .word ov11_02319EB0 + .byte 0x7B, 0x01, 0x0A, 0x00 + .word ov11_0231A3E0 + .byte 0x7C, 0x01, 0x0A, 0x00 + .word ov11_0231ADA0 + .byte 0x7D, 0x01, 0x0A, 0x00 + .word ov11_0231AD30 + .byte 0x7E, 0x01, 0x0A, 0x00 + .word ov11_0231A3F0 + .byte 0x7F, 0x01, 0x0A, 0x00 + .word ov11_0231AE20 + .byte 0x80, 0x01, 0x0A, 0x00 + .word ov11_0231AD10 + .byte 0x81, 0x01, 0x0A, 0x00 + .word ov11_0231ADC0 + .byte 0x82, 0x01, 0x0A, 0x00 + .word ov11_0231AD20 + .byte 0x83, 0x01, 0x0A, 0x00 + .word ov11_0231BEF0 + .byte 0x84, 0x01, 0x0A, 0x00 + .word ov11_0231A040 + .byte 0x85, 0x01, 0x0A, 0x00 + .word ov11_0231BF10 + .byte 0x86, 0x01, 0x0A, 0x00 + .word ov11_0231A2C0 + .byte 0x87, 0x01, 0x0A, 0x00 + .word ov11_0231AD60 + .byte 0x88, 0x01, 0x0A, 0x00 + .word ov11_0231AD50 + .byte 0x89, 0x01, 0x0A, 0x00 + .word ov11_0231AE10 + .byte 0x8A, 0x01, 0x0A, 0x00 + .word ov11_0231AB00 + .byte 0x8B, 0x01, 0x0A, 0x00 + .word ov11_0231A0A0 + .byte 0x8C, 0x01, 0x0A, 0x00 + .word ov11_0231BF50 + .byte 0x8D, 0x01, 0x0A, 0x00 + .word ov11_0231B9F0 + .byte 0x8E, 0x01, 0x0A, 0x00 + .word ov11_0231AC40 + .byte 0x8F, 0x01, 0x0A, 0x00 + .word ov11_0231AA50 + .byte 0x90, 0x01, 0x0A, 0x00 + .word ov11_0231ACE0 + .byte 0x91, 0x01, 0x0A, 0x00 + .word ov11_0231ACC0 + .byte 0x92, 0x01, 0x0A, 0x00 + .word ov11_0231ACB0 + .byte 0x93, 0x01, 0x0A, 0x00 + .word ov11_0231ACA0 + .byte 0x94, 0x01, 0x0A, 0x00 + .word ov11_0231BF70 + .byte 0x95, 0x01, 0x0A, 0x00 + .word ov11_0231AC80 + .byte 0x96, 0x01, 0x0A, 0x00 + .word ov11_0231AC70 + .byte 0x97, 0x01, 0x0A, 0x00 + .word ov11_0231A280 + .byte 0x98, 0x01, 0x0A, 0x00 + .word ov11_0231AC50 + .byte 0x99, 0x01, 0x0A, 0x00 + .word ov11_0231A210 + .byte 0x9A, 0x01, 0x0A, 0x00 + .word ov11_02319F40 + .byte 0x9B, 0x01, 0x0A, 0x00 + .word ov11_02319FC0 + .byte 0x9C, 0x01, 0x0A, 0x00 + .word ov11_0231A2E0 + .byte 0x9D, 0x01, 0x0A, 0x00 + .word ov11_0231AA90 + .byte 0x9E, 0x01, 0x0A, 0x00 + .word ov11_0231BFE0 + .byte 0x9F, 0x01, 0x0A, 0x00 + .word ov11_0231A740 + .byte 0xA0, 0x01, 0x0A, 0x00 + .word ov11_02319E10 + .byte 0xA1, 0x01, 0x0A, 0x00 + .word ov11_0231ABC0 + .byte 0xA2, 0x01, 0x0A, 0x00 + .word ov11_02319E30 + .byte 0xA3, 0x01, 0x0A, 0x00 + .word ov11_0231ABA0 + .byte 0xA4, 0x01, 0x0A, 0x00 + .word ov11_02319D60 + .byte 0xA5, 0x01, 0x0A, 0x00 + .word ov11_0231AB20 + .byte 0xA6, 0x01, 0x0A, 0x00 + .word ov11_0231AB30 + .byte 0xA7, 0x01, 0x0A, 0x00 + .word ov11_0231A960 + .byte 0xA8, 0x01, 0x0A, 0x00 + .word ov11_0231ABF0 + .byte 0xA9, 0x01, 0x0A, 0x00 + .word ov11_02319E40 + .byte 0xAA, 0x01, 0x0A, 0x00 + .word ov11_0231ADF0 + .byte 0xAB, 0x01, 0x0A, 0x00 + .word ov11_0231BA10 + .byte 0xAC, 0x01, 0x0A, 0x00 + .word ov11_02319F20 + .byte 0xAD, 0x01, 0x0A, 0x00 + .word ov11_0231AEA0 + .byte 0xAE, 0x01, 0x0A, 0x00 + .word ov11_0231AEF0 + .byte 0xAF, 0x01, 0x0A, 0x00 + .word ov11_0231AFB0 + .byte 0xB0, 0x01, 0x0A, 0x00 + .word ov11_0231AFC0 + .byte 0xB1, 0x01, 0x0A, 0x00 + .word ov11_0231B170 + .byte 0xB2, 0x01, 0x0A, 0x00 + .word ov11_0231B230 + .byte 0xB3, 0x01, 0x0A, 0x00 + .word ov11_0231AAD0 + .byte 0xB4, 0x01, 0x0A, 0x00 + .word ov11_0231B370 + .byte 0xB5, 0x01, 0x0A, 0x00 + .word ov11_0231B3F0 + .byte 0xB6, 0x01, 0x0A, 0x00 + .word ov11_0231B4D0 + .byte 0xB7, 0x01, 0x0A, 0x00 + .word ov11_0231B550 + .byte 0xB8, 0x01, 0x0A, 0x00 + .word ov11_0231B570 + .byte 0xB9, 0x01, 0x0A, 0x00 + .word ov11_0231B5F0 + .byte 0xBA, 0x01, 0x0A, 0x00 + .word ov11_0231B6D0 + .byte 0xBB, 0x01, 0x0A, 0x00 + .word ov11_0231BA50 + .byte 0xBC, 0x01, 0x0A, 0x00 + .word ov11_0231B800 + .byte 0xBD, 0x01, 0x0A, 0x00 + .word ov11_0231B870 + .byte 0xBE, 0x01, 0x0A, 0x00 + .word ov11_0231B970 + .byte 0xBF, 0x01, 0x0A, 0x00 + .word ov11_0231A9E0 + .byte 0xC0, 0x01, 0x0A, 0x00 + .word ov11_0231A9D0 + .byte 0xC1, 0x01, 0x0A, 0x00 + .word ov11_0231B9A0 + .byte 0xC2, 0x01, 0x0A, 0x00 + .word ov11_02319DE0 + .byte 0xC3, 0x01, 0x0A, 0x00 + .word ov11_0231A9A0 + .byte 0xC4, 0x01, 0x0A, 0x00 + .word ov11_0231B940 + .byte 0xC5, 0x01, 0x0A, 0x00 + .word ov11_0231A980 + .byte 0xC6, 0x01, 0x0A, 0x00 + .word ov11_0231A970 + .byte 0xC7, 0x01, 0x0A, 0x00 + .word ov11_0231B8D0 + .byte 0xC8, 0x01, 0x0A, 0x00 + .word ov11_0231A950 + .byte 0xC9, 0x01, 0x0A, 0x00 + .word ov11_0231A940 + .byte 0xCA, 0x01, 0x0A, 0x00 + .word ov11_02319DC0 + .byte 0xCB, 0x01, 0x0A, 0x00 + .word ov11_0231A920 + .byte 0xCC, 0x01, 0x0A, 0x00 + .word ov11_0231A910 + .byte 0xCD, 0x01, 0x0A, 0x00 + .word ov11_0231A900 + .byte 0xCE, 0x01, 0x0A, 0x00 + .word ov11_02319DB0 + .byte 0xCF, 0x01, 0x0A, 0x00 + .word ov11_0231B7D0 + .byte 0xD0, 0x01, 0x0A, 0x00 + .word ov11_0231A8D0 + .byte 0xD1, 0x01, 0x0A, 0x00 + .word ov11_0231A8C0 + .byte 0xD2, 0x01, 0x0A, 0x00 + .word ov11_0231A8B0 + .byte 0xD3, 0x01, 0x0A, 0x00 + .word ov11_0231A8A0 + .byte 0xD4, 0x01, 0x0A, 0x00 + .word ov11_0231B740 + .byte 0xD5, 0x01, 0x0A, 0x00 + .word ov11_0231A880 + .byte 0xD6, 0x01, 0x0A, 0x00 + .word ov11_0231A870 + .byte 0xD7, 0x01, 0x0A, 0x00 + .word ov11_0231B6E0 + .byte 0xD8, 0x01, 0x0A, 0x00 + .word ov11_0231BD10 + .byte 0xD9, 0x01, 0x0A, 0x00 + .word ov11_0231A840 + .byte 0xDA, 0x01, 0x0A, 0x00 + .word ov11_0231A830 + .byte 0xDB, 0x01, 0x0A, 0x00 + .word ov11_0231C3A8 + .byte 0xDC, 0x01, 0x0A, 0x00 + .word ov11_0231C308 + .byte 0xDD, 0x01, 0x0A, 0x00 + .word ov11_0231B610 + .byte 0xDE, 0x01, 0x0A, 0x00 + .word ov11_0231A0F0 + .byte 0xDF, 0x01, 0x0A, 0x00 + .word ov11_0231B5D0 + .byte 0xE0, 0x01, 0x0A, 0x00 + .word ov11_0231A7D0 + .byte 0xE1, 0x01, 0x0A, 0x00 + .word ov11_0231A7C0 + .byte 0xE2, 0x01, 0x0A, 0x00 + .word ov11_0231A0D0 + .byte 0xE3, 0x01, 0x0A, 0x00 + .word ov11_0231BBF0 + .byte 0xE4, 0x01, 0x0A, 0x00 + .word ov11_0231A790 + .byte 0xE5, 0x01, 0x0A, 0x00 + .word ov11_0231A780 + .byte 0xE6, 0x01, 0x0A, 0x00 + .word ov11_0231A0B0 + .byte 0xE7, 0x01, 0x0A, 0x00 + .word ov11_0231B4E0 + .byte 0xE8, 0x01, 0x0A, 0x00 + .word ov11_0231B4C0 + .byte 0xE9, 0x01, 0x0A, 0x00 + .word ov11_0231B490 + .byte 0xEA, 0x01, 0x0A, 0x00 + .word ov11_0231A730 + .byte 0xEB, 0x01, 0x0A, 0x00 + .word ov11_0231A720 + .byte 0xEC, 0x01, 0x0A, 0x00 + .word ov11_0231A080 + .byte 0xED, 0x01, 0x0A, 0x00 + .word ov11_0231A700 + .byte 0xEE, 0x01, 0x0A, 0x00 + .word ov11_0231A070 + .byte 0xEF, 0x01, 0x0A, 0x00 + .word ov11_0231A6E0 + .byte 0xF0, 0x01, 0x0A, 0x00 + .word ov11_0231A6D0 + .byte 0xF1, 0x01, 0x0A, 0x00 + .word ov11_0231B3A0 + .byte 0xF2, 0x01, 0x0A, 0x00 + .word ov11_0231A050 + .byte 0xF3, 0x01, 0x0A, 0x00 + .word ov11_0231BDE0 + .byte 0xF4, 0x01, 0x0A, 0x00 + .word ov11_0231A690 + .byte 0xF5, 0x01, 0x0A, 0x00 + .word ov11_0231BE00 + .byte 0xF6, 0x01, 0x0A, 0x00 + .word ov11_0231A030 + .byte 0xF7, 0x01, 0x0A, 0x00 + .word ov11_0231A660 + .byte 0xF8, 0x01, 0x0A, 0x00 + .word ov11_0231A650 + .byte 0xF9, 0x01, 0x0A, 0x00 + .word ov11_0231B290 + .byte 0xFA, 0x01, 0x0A, 0x00 + .word ov11_0231A010 + .byte 0xFB, 0x01, 0x0A, 0x00 + .word ov11_0231BE20 + .byte 0xFC, 0x01, 0x0A, 0x00 + .word ov11_0231A000 + .byte 0xFD, 0x01, 0x0A, 0x00 + .word ov11_0231A600 + .byte 0xFE, 0x01, 0x0A, 0x00 + .word ov11_02319FF0 + .byte 0xFF, 0x01, 0x0A, 0x00 + .word ov11_0231A5E0 + .byte 0x00, 0x02, 0x0A, 0x00 + .word ov11_0231A5D0 + .byte 0x01, 0x02, 0x0A, 0x00 + .word ov11_0231A5C0 + .byte 0x02, 0x02, 0x0A, 0x00 + .word ov11_02319FD0 + .byte 0x03, 0x02, 0x0A, 0x00 + .word ov11_0231BE30 + .byte 0x04, 0x02, 0x0A, 0x00 + .word ov11_0231A590 + .byte 0x05, 0x02, 0x0A, 0x00 + .word ov11_0231A580 + .byte 0x06, 0x02, 0x0A, 0x00 + .word ov11_0231A570 + .byte 0x07, 0x02, 0x0A, 0x00 + .word ov11_0231B0D0 + .byte 0x08, 0x02, 0x0A, 0x00 + .word ov11_0231A550 + .byte 0x09, 0x02, 0x0A, 0x00 + .word ov11_0231A540 + .byte 0x0A, 0x02, 0x0A, 0x00 + .word ov11_0231A530 + .byte 0x0B, 0x02, 0x0A, 0x00 + .word ov11_0231B050 + .byte 0x0C, 0x02, 0x0A, 0x00 + .word ov11_02319F50 + .byte 0x0D, 0x02, 0x0A, 0x00 + .word ov11_0231A500 + .byte 0x0E, 0x02, 0x0A, 0x00 + .word ov11_0231A4F0 + .byte 0x0F, 0x02, 0x0A, 0x00 + .word ov11_0231ADD0 + .byte 0x10, 0x02, 0x0A, 0x00 + .word ov11_0231AC20 + .byte 0x11, 0x02, 0x0A, 0x00 + .word ov11_0231A4C0 + .byte 0x12, 0x02, 0x0A, 0x00 + .word ov11_0231AE60 + .byte 0x13, 0x02, 0x0A, 0x00 + .word ov11_0231B660 + .byte 0x14, 0x02, 0x0A, 0x00 + .word ov11_0231A490 + .byte 0x15, 0x02, 0x0A, 0x00 + .word ov11_0231A480 + .byte 0x16, 0x02, 0x0A, 0x00 + .word ov11_0231AEC0 + .byte 0x17, 0x02, 0x0A, 0x00 + .word ov11_0231AED0 + .byte 0x18, 0x02, 0x0A, 0x00 + .word ov11_0231A4D0 + .byte 0x19, 0x02, 0x0A, 0x00 + .word ov11_0231A430 + .byte 0x1A, 0x02, 0x0A, 0x00 + .word ov11_0231AE80 + .byte 0x1B, 0x02, 0x0A, 0x00 + .word ov11_0231A230 + .byte 0x1C, 0x02, 0x0A, 0x00 + .word ov11_02319D80 + .byte 0x1D, 0x02, 0x0A, 0x00 + .word ov11_0231A300 + .byte 0x1E, 0x02, 0x0A, 0x00 + .word ov11_0231B980 + .byte 0x1F, 0x02, 0x0A, 0x00 + .word ov11_0231AF80 + .byte 0x20, 0x02, 0x0A, 0x00 + .word ov11_0231ADB0 + .byte 0x21, 0x02, 0x0A, 0x00 + .word ov11_0231BF00 + .byte 0x22, 0x02, 0x0A, 0x00 + .word ov11_0231AD70 + .byte 0x23, 0x02, 0x0A, 0x00 + .word ov11_0231A3A0 + .byte 0x24, 0x02, 0x0A, 0x00 + .word ov11_0231BF20 + .byte 0x25, 0x02, 0x0A, 0x00 + .word ov11_0231ABD0 + .byte 0x26, 0x02, 0x0A, 0x00 + .word ov11_0231AA60 + .byte 0x27, 0x02, 0x0A, 0x00 + .word ov11_0231AA70 + .byte 0x28, 0x02, 0x0A, 0x00 + .word ov11_0231A9F0 + .byte 0x29, 0x02, 0x0A, 0x00 + .word ov11_0231AC90 + .byte 0x2A, 0x02, 0x0A, 0x00 + .word ov11_0231AA20 + .byte 0x2B, 0x02, 0x0A, 0x00 + .word ov11_0231AC60 + .byte 0x2C, 0x02, 0x0A, 0x00 + .word ov11_0231A2D0 + .byte 0x2D, 0x02, 0x0A, 0x00 + .word ov11_02319F80 + .byte 0x2E, 0x02, 0x0A, 0x00 + .word ov11_0231AAB0 + .byte 0x2F, 0x02, 0x0A, 0x00 + .word ov11_0231C000 + .byte 0x30, 0x02, 0x0A, 0x00 + .word ov11_0231AAF0 + .byte 0x31, 0x02, 0x0A, 0x00 + .word ov11_0231AB10 + .byte 0x32, 0x02, 0x0A, 0x00 + .word ov11_0231AB40 + .byte 0x33, 0x02, 0x0A, 0x00 + .word ov11_0231AB70 + .byte 0x34, 0x02, 0x0A, 0x00 + .word ov11_0231AC00 + .byte 0x35, 0x02, 0x0A, 0x00 + .word ov11_0231AE50 + .byte 0x36, 0x02, 0x0A, 0x00 + .word ov11_0231AF50 + .byte 0x37, 0x02, 0x0A, 0x00 + .word ov11_0231B030 + .byte 0x38, 0x02, 0x0A, 0x00 + .word ov11_0231B270 + .byte 0x39, 0x02, 0x0A, 0x00 + .word ov11_0231B2F0 + .byte 0x3A, 0x02, 0x0A, 0x00 + .word ov11_0231B4F0 + .byte 0x3B, 0x02, 0x0A, 0x00 + .word ov11_0231B590 + .byte 0x3C, 0x02, 0x0A, 0x00 + .word ov11_0231B730 + .byte 0x3D, 0x02, 0x0A, 0x00 + .word ov11_0231B770 + .byte 0x3E, 0x02, 0x0A, 0x00 + .word ov11_0231BA20 + .byte 0x3F, 0x02, 0x0A, 0x00 + .word ov11_0231A1E0 + .byte 0x40, 0x02, 0x0A, 0x00 + .word ov11_0231A9C0 + .byte 0x41, 0x02, 0x0A, 0x00 + .word ov11_0231A990 + .byte 0x42, 0x02, 0x0A, 0x00 + .word ov11_0231A1B0 + .byte 0x43, 0x02, 0x0A, 0x00 + .word ov11_0231B8E0 + .byte 0x44, 0x02, 0x0A, 0x00 + .word ov11_0231BCB0 + .byte 0x45, 0x02, 0x0A, 0x00 + .word ov11_0231A180 + .byte 0x46, 0x02, 0x0A, 0x00 + .word ov11_02319D30 + .byte 0x47, 0x02, 0x0A, 0x00 + .word ov11_0231A8E0 + .byte 0x48, 0x02, 0x0A, 0x00 + .word ov11_0231A150 + .byte 0x49, 0x02, 0x0A, 0x00 + .word ov11_0231A140 + .byte 0x4A, 0x02, 0x0A, 0x00 + .word ov11_0231A130 + .byte 0x4B, 0x02, 0x0A, 0x00 + .word ov11_0231A850 + .byte 0x4C, 0x02, 0x0A, 0x00 + .word ov11_0231A110 + .byte 0x4D, 0x02, 0x0A, 0x00 + .word ov11_0231B650 + .byte 0x4E, 0x02, 0x0A, 0x00 + .word ov11_0231A800 + .byte 0x4F, 0x02, 0x0A, 0x00 + .word ov11_0231A7E0 + .byte 0x50, 0x02, 0x0A, 0x00 + .word ov11_0231B5A0 + .byte 0x51, 0x02, 0x0A, 0x00 + .word ov11_0231A7A0 + .byte 0x52, 0x02, 0x0A, 0x00 + .word ov11_02319E20 + .byte 0x53, 0x02, 0x0A, 0x00 + .word ov11_0231A750 + .byte 0x54, 0x02, 0x0A, 0x00 + .word ov11_0231B4A0 + .byte 0x55, 0x02, 0x0A, 0x00 + .word ov11_0231A710 + .byte 0x56, 0x02, 0x0A, 0x00 + .word ov11_02319E50 + .byte 0x57, 0x02, 0x0A, 0x00 + .word ov11_0231A060 + .byte 0x58, 0x02, 0x0A, 0x00 + .word ov11_0231A6C0 + .byte 0x59, 0x02, 0x0A, 0x00 + .word ov11_0231A6A0 + .byte 0x5A, 0x02, 0x0A, 0x00 + .word ov11_0231B320 + .byte 0x5B, 0x02, 0x0A, 0x00 + .word ov11_0231A020 + .byte 0x5C, 0x02, 0x0A, 0x00 + .word ov11_0231A640 + .byte 0x5D, 0x02, 0x0A, 0x00 + .word ov11_0231A620 + .byte 0x5E, 0x02, 0x0A, 0x00 + .word ov11_02319EC0 + .byte 0x5F, 0x02, 0x0A, 0x00 + .word ov11_02319FE0 + .byte 0x60, 0x02, 0x0A, 0x00 + .word ov11_02319F10 + .byte 0x61, 0x02, 0x0A, 0x00 + .word ov11_0231A5A0 + .byte 0x62, 0x02, 0x0A, 0x00 + .word ov11_02319FB0 + .byte 0x63, 0x02, 0x0A, 0x00 + .word ov11_0231A560 + .byte 0x64, 0x02, 0x0A, 0x00 + .word ov11_02319F90 + .byte 0x65, 0x02, 0x0A, 0x00 + .word ov11_0231A520 + .byte 0x66, 0x02, 0x0A, 0x00 + .word ov11_02319F60 + .byte 0x67, 0x02, 0x0A, 0x00 + .word ov11_0231AFD0 + .byte 0x68, 0x02, 0x0A, 0x00 + .word ov11_0231AE90 + .byte 0x69, 0x02, 0x0A, 0x00 + .word ov11_0231A4A0 + .byte 0x6A, 0x02, 0x0A, 0x00 + .word ov11_0231A470 + .byte 0x6B, 0x02, 0x0A, 0x00 + .word ov11_0231AEE0 + .byte 0x6C, 0x02, 0x0A, 0x00 + .word ov11_0231AE70 + .byte 0x6D, 0x02, 0x0A, 0x00 + .word ov11_0231A240 + .byte 0x6E, 0x02, 0x0A, 0x00 + .word ov11_0231A2B0 + .byte 0x6F, 0x02, 0x0A, 0x00 + .word ov11_02319ED0 + .byte 0x70, 0x02, 0x0A, 0x00 + .word ov11_0231AD80 + .byte 0x71, 0x02, 0x0A, 0x00 + .word ov11_0231AF90 + .byte 0x72, 0x02, 0x0A, 0x00 + .word ov11_0231A350 + .byte 0x73, 0x02, 0x0A, 0x00 + .word ov11_0231ACD0 + .byte 0x74, 0x02, 0x0A, 0x00 + .word ov11_0231AA10 + .byte 0x75, 0x02, 0x0A, 0x00 + .word ov11_0231AC30 + .byte 0x76, 0x02, 0x0A, 0x00 + .word ov11_0231AC10 + .byte 0x77, 0x02, 0x0A, 0x00 + .word ov11_02319C60 + .byte 0x78, 0x02, 0x0A, 0x00 + .word ov11_02319C90 + .byte 0x79, 0x02, 0x0A, 0x00 + .word ov11_02319C24 + .byte 0x7A, 0x02, 0x0A, 0x00 + .word ov11_02319BC4 + .byte 0x7B, 0x02, 0x0A, 0x00 + .word ov11_02319C00 + .byte 0x7C, 0x02, 0x0A, 0x00 + .word ov11_02319C9C + .byte 0x7D, 0x02, 0x0A, 0x00 + .word ov11_02319BB8 + .byte 0x7E, 0x02, 0x0A, 0x00 + .word ov11_02319C3C + .byte 0x7F, 0x02, 0x0A, 0x00 + .word ov11_02319CB4 + .byte 0x80, 0x02, 0x0A, 0x00 + .word ov11_02319BAC + .byte 0x81, 0x02, 0x0A, 0x00 + .word ov11_02319C84 + .byte 0x82, 0x02, 0x0A, 0x00 + .word ov11_02319B88 + .byte 0x83, 0x02, 0x0A, 0x00 + .word ov11_02319B64 + .byte 0x84, 0x02, 0x0A, 0x00 + .word ov11_02319BE8 + .byte 0x85, 0x02, 0x0A, 0x00 + .word ov11_02319C18 + .byte 0x86, 0x02, 0x0A, 0x00 + .word ov11_02319B58 + .byte 0x87, 0x02, 0x0A, 0x00 + .word ov11_02319C0C + .byte 0x88, 0x02, 0x0A, 0x00 + .word ov11_02319BA0 + .byte 0x89, 0x02, 0x0A, 0x00 + .word ov11_02319B70 + .byte 0x8A, 0x02, 0x0A, 0x00 + .word ov11_02319C48 + .byte 0x8B, 0x02, 0x0A, 0x00 + .word ov11_02319CA8 + .byte 0x8C, 0x02, 0x0A, 0x00 + .word ov11_02319C6C + .byte 0x8D, 0x02, 0x0A, 0x00 + .word ov11_02319C54 + .byte 0x8E, 0x02, 0x0A, 0x00 + .word ov11_02319B7C + .byte 0x8F, 0x02, 0x0A, 0x00 + .word ov11_0231BAF0 + .byte 0x90, 0x02, 0x0A, 0x00 + .word ov11_0231BB00 + .byte 0x91, 0x02, 0x01, 0x00 + .word ov11_02319FA0 + .byte 0x92, 0x02, 0x01, 0x00 + .word ov11_02319CE4 + .byte 0x93, 0x02, 0x02, 0x00 + .word ov11_0231BB20 + .byte 0x94, 0x02, 0x01, 0x00 + .word ov11_0231C498 + .byte 0x95, 0x02, 0x01, 0x00 + .word ov11_0231C408 + .byte 0x96, 0x02, 0x01, 0x00 + .word ov11_0231C4F8 + .byte 0x97, 0x02, 0x01, 0x00 + .word ov11_0231C358 + .byte 0x98, 0x02, 0x01, 0x00 + .word ov11_0231C1B4 + .byte 0x99, 0x02, 0x01, 0x00 + .word ov11_0231C2A4 + .byte 0x9A, 0x02, 0x01, 0x00 + .word ov11_0231C5E8 + .byte 0x9B, 0x02, 0x01, 0x00 + .word ov11_0231C528 + .byte 0x9C, 0x02, 0x01, 0x00 + .word ov11_0231C600 + .byte 0x9D, 0x02, 0x01, 0x00 + .word ov11_0231C420 + .byte 0x9E, 0x02, 0x01, 0x00 + .word ov11_0231C2E0 + .byte 0x9F, 0x02, 0x01, 0x00 + .word ov11_0231C2F4 + .byte 0xA0, 0x02, 0x02, 0x00 + .word ov11_0231C618 + .byte 0xA1, 0x02, 0x02, 0x00 + .word ov11_0231C540 + .byte 0xA2, 0x02, 0x02, 0x00 + .word ov11_0231C438 + .byte 0xA3, 0x02, 0x02, 0x00 + .word ov11_0231C630 + .byte 0xA4, 0x02, 0x02, 0x00 + .word ov11_0231C648 + .byte 0xA5, 0x02, 0x02, 0x00 + .word ov11_0231C3C0 + .byte 0xA6, 0x02, 0x07, 0x00 + .word ov11_0231BC00 + .byte 0xA7, 0x02, 0x07, 0x00 + .word ov11_0231BB10 + .byte 0xA8, 0x02, 0x07, 0x00 + .word ov11_02319F70 + .byte 0xA9, 0x02, 0x07, 0x00 + .word ov11_0231BB30 + .byte 0xAA, 0x02, 0x08, 0x00 + .word ov11_0231BEA0 + .byte 0xAB, 0x02, 0x01, 0x00 + .word ov11_0231BB40 + .byte 0xAC, 0x02, 0x07, 0x00 + .word ov11_0231C2B8 + .byte 0xAD, 0x02, 0x05, 0x00 + .word ov11_0231C1C8 + .byte 0xAE, 0x02, 0x04, 0x00 + .word ov11_0231C690 + .byte 0xAF, 0x02, 0x07, 0x00 + .word ov11_0231BCC0 + .byte 0xB0, 0x02, 0x07, 0x00 + .word ov11_0231BBE0 + .byte 0xB1, 0x02, 0x07, 0x00 + .word ov11_0231C1DC + .byte 0xB2, 0x02, 0x07, 0x00 + .word ov11_0231C150 + .byte 0xB3, 0x02, 0x07, 0x00 + .word ov11_0231BC10 + .byte 0xB4, 0x02, 0x07, 0x00 + .word ov11_0231C344 + .byte 0xB5, 0x02, 0x07, 0x00 + .word ov11_0231C254 + .byte 0xB6, 0x02, 0x07, 0x00 + .word ov11_0231BC80 + .byte 0xB7, 0x02, 0x07, 0x00 + .word ov11_02319C78 + .byte 0xB8, 0x02, 0x07, 0x00 + .word ov11_0231A0C0 + .byte 0xB9, 0x02, 0x07, 0x00 + .word ov11_0231C4C8 + .byte 0xBA, 0x02, 0x0A, 0x00 + .word ov11_02319C30 + .byte 0xBB, 0x02, 0x0A, 0x00 + .word ov11_02319CFC + .byte 0xBC, 0x02, 0x0A, 0x00 + .word ov11_02319B1C + .global GROUND_WEATHER_TABLE +GROUND_WEATHER_TABLE: +#if defined(EUROPE) +#define GROUND_WEATHER_OFFSET 0x1C +#elif defined(JAPAN) +#define GROUND_WEATHER_OFFSET 5 +#else +#define GROUND_WEATHER_OFFSET 0 +#endif + .byte 0x00, 0x00, 0x13, 0x01, 0x01, 0x00, 0xB0 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB1 + GROUND_WEATHER_OFFSET, 0x01 + .byte 0x02, 0x00, 0xB2 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB3 + GROUND_WEATHER_OFFSET, 0x01, 0x02, 0x00, 0xB4 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB5 + GROUND_WEATHER_OFFSET, 0x01 + .byte 0x02, 0x00, 0xB6 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB7 + GROUND_WEATHER_OFFSET, 0x01, 0x02, 0x00, 0xB8 + GROUND_WEATHER_OFFSET, 0x01, 0x01, 0x00, 0xB9 + GROUND_WEATHER_OFFSET, 0x01 + .byte 0x02, 0x00, 0xBA + GROUND_WEATHER_OFFSET, 0x01 + .global GROUND_WAN_FILES_TABLE +GROUND_WAN_FILES_TABLE: + .byte 0x64, 0x33, 0x30, 0x70, 0x33, 0x33, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE4C +ov11_0231DE4C: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x34, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE58 +ov11_0231DE58: + .byte 0x64, 0x36, 0x33, 0x70 + .byte 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE64 +ov11_0231DE64: + .byte 0x64, 0x36, 0x33, 0x70, 0x34, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE70 +ov11_0231DE70: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE7C +ov11_0231DE7C: + .byte 0x67, 0x30, 0x31, 0x70, 0x31, 0x30, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE88 +ov11_0231DE88: + .byte 0x67, 0x30, 0x31, 0x70 + .byte 0x30, 0x39, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DE94 +ov11_0231DE94: + .byte 0x76, 0x33, 0x37, 0x70, 0x30, 0x32, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DEA0 +ov11_0231DEA0: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DEAC +ov11_0231DEAC: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DEB8 +ov11_0231DEB8: + .byte 0x64, 0x35, 0x37, 0x70 + .byte 0x34, 0x33, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DEC4 +ov11_0231DEC4: + .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x33, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DED0 +ov11_0231DED0: + .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 +#ifndef EUROPE + .global ov11_0231DEDC +ov11_0231DEDC: + .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 +#endif + .global ov11_0231DEE8 +ov11_0231DEE8: + .byte 0x70, 0x31, 0x37, 0x70 + .byte 0x30, 0x32, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DEF4 +ov11_0231DEF4: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x35, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF00 +ov11_0231DF00: + .byte 0x70, 0x32, 0x36, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF0C +ov11_0231DF0C: + .byte 0x64, 0x35, 0x36, 0x70, 0x31, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF18 +ov11_0231DF18: + .byte 0x64, 0x35, 0x36, 0x70 + .byte 0x31, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF24 +ov11_0231DF24: + .byte 0x64, 0x35, 0x36, 0x70, 0x31, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF30 +ov11_0231DF30: + .byte 0x76, 0x33, 0x39, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF3C +ov11_0231DF3C: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF48 +ov11_0231DF48: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x31, 0x30, 0x62, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF54 +ov11_0231DF54: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF60 +ov11_0231DF60: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF6C +ov11_0231DF6C: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF78 +ov11_0231DF78: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x31, 0x30, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF84 +ov11_0231DF84: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF90 +ov11_0231DF90: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DF9C +ov11_0231DF9C: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFA8 +ov11_0231DFA8: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x31, 0x30, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFB4 +ov11_0231DFB4: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFC0 +ov11_0231DFC0: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFCC +ov11_0231DFCC: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFD8 +ov11_0231DFD8: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x31, 0x30, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFE4 +ov11_0231DFE4: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x30, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFF0 +ov11_0231DFF0: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231DFFC +ov11_0231DFFC: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E008 +ov11_0231E008: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x38, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E014 +ov11_0231E014: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E020 +ov11_0231E020: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E02C +ov11_0231E02C: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x64, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E038 +ov11_0231E038: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x38, 0x63, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E044 +ov11_0231E044: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E050 +ov11_0231E050: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E05C +ov11_0231E05C: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E068 +ov11_0231E068: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x38, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E074 +ov11_0231E074: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x63, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E080 +ov11_0231E080: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E08C +ov11_0231E08C: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x38, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E098 +ov11_0231E098: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x38, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0A4 +ov11_0231E0A4: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0B0 +ov11_0231E0B0: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0BC +ov11_0231E0BC: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0C8 +ov11_0231E0C8: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x37, 0x64, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0D4 +ov11_0231E0D4: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0E0 +ov11_0231E0E0: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x64, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0EC +ov11_0231E0EC: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E0F8 +ov11_0231E0F8: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x37, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E104 +ov11_0231E104: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E110 +ov11_0231E110: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E11C +ov11_0231E11C: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E128 +ov11_0231E128: + .byte 0x76, 0x33, 0x38, 0x70 + .byte 0x30, 0x37, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E134 +ov11_0231E134: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x37, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E140 +ov11_0231E140: + .byte 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E14C +ov11_0231E14C: + .byte 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E158 +ov11_0231E158: + .byte 0x73, 0x31, 0x38, 0x70 + .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E164 +ov11_0231E164: + .byte 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E170 +ov11_0231E170: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E17C +ov11_0231E17C: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E188 +ov11_0231E188: + .byte 0x73, 0x31, 0x37, 0x70 + .byte 0x30, 0x32, 0x62, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E194 +ov11_0231E194: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1A0 +ov11_0231E1A0: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1AC +ov11_0231E1AC: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1B8 +ov11_0231E1B8: + .byte 0x73, 0x31, 0x37, 0x70 + .byte 0x30, 0x32, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1C4 +ov11_0231E1C4: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x39 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1D0 +ov11_0231E1D0: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1DC +ov11_0231E1DC: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1E8 +ov11_0231E1E8: + .byte 0x73, 0x31, 0x37, 0x70 + .byte 0x30, 0x32, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E1F4 +ov11_0231E1F4: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E200 +ov11_0231E200: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E20C +ov11_0231E20C: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E218 +ov11_0231E218: + .byte 0x73, 0x31, 0x37, 0x70 + .byte 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E224 +ov11_0231E224: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x32, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E230 +ov11_0231E230: + .byte 0x73, 0x31, 0x37, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E23C +ov11_0231E23C: + .byte 0x64, 0x35, 0x35, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E248 +ov11_0231E248: + .byte 0x64, 0x35, 0x33, 0x70 + .byte 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E254 +ov11_0231E254: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x37 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E260 +ov11_0231E260: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E26C +ov11_0231E26C: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E278 +ov11_0231E278: + .byte 0x64, 0x35, 0x32, 0x70 + .byte 0x33, 0x32, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E284 +ov11_0231E284: + .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E290 +ov11_0231E290: + .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E29C +ov11_0231E29C: + .byte 0x64, 0x35, 0x33, 0x70, 0x34, 0x31, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2A8 +ov11_0231E2A8: + .byte 0x64, 0x35, 0x32, 0x70 + .byte 0x33, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2B4 +ov11_0231E2B4: + .byte 0x76, 0x33, 0x38, 0x70, 0x31, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2C0 +ov11_0231E2C0: + .byte 0x76, 0x33, 0x37, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2CC +ov11_0231E2CC: + .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2D8 +ov11_0231E2D8: + .byte 0x64, 0x35, 0x36, 0x70 + .byte 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2E4 +ov11_0231E2E4: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2F0 +ov11_0231E2F0: + .byte 0x76, 0x33, 0x38, 0x70, 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E2FC +ov11_0231E2FC: + .byte 0x73, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E308 +ov11_0231E308: + .byte 0x64, 0x35, 0x37, 0x70 + .byte 0x34, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E314 +ov11_0231E314: + .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x32, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E320 +ov11_0231E320: + .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E32C +ov11_0231E32C: + .byte 0x64, 0x35, 0x37, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E338 +ov11_0231E338: + .byte 0x76, 0x33, 0x39, 0x70 + .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E344 +ov11_0231E344: + .byte 0x76, 0x33, 0x39, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E350 +ov11_0231E350: + .byte 0x70, 0x32, 0x36, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E35C +ov11_0231E35C: + .byte 0x70, 0x32, 0x36, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E368 +ov11_0231E368: + .byte 0x70, 0x32, 0x36, 0x70 + .byte 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E374 +ov11_0231E374: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E380 +ov11_0231E380: + .byte 0x73, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E38C +ov11_0231E38C: + .byte 0x64, 0x35, 0x32, 0x70, 0x31, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E398 +ov11_0231E398: + .byte 0x64, 0x35, 0x32, 0x70 + .byte 0x31, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3A4 +ov11_0231E3A4: + .byte 0x64, 0x35, 0x32, 0x70, 0x31, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3B0 +ov11_0231E3B0: + .byte 0x64, 0x35, 0x32, 0x70, 0x33, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3BC +ov11_0231E3BC: + .byte 0x64, 0x35, 0x31, 0x70, 0x34, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3C8 +ov11_0231E3C8: + .byte 0x64, 0x35, 0x31, 0x70 + .byte 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3D4 +ov11_0231E3D4: + .byte 0x64, 0x35, 0x31, 0x70, 0x34, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3E0 +ov11_0231E3E0: + .byte 0x70, 0x32, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3EC +ov11_0231E3EC: + .byte 0x64, 0x35, 0x31, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E3F8 +ov11_0231E3F8: + .byte 0x64, 0x37, 0x33, 0x70 + .byte 0x34, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E404 +ov11_0231E404: + .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E410 +ov11_0231E410: + .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E41C +ov11_0231E41C: + .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E428 +ov11_0231E428: + .byte 0x64, 0x37, 0x33, 0x70 + .byte 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E434 +ov11_0231E434: + .byte 0x64, 0x37, 0x33, 0x70, 0x34, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E440 +ov11_0231E440: + .byte 0x64, 0x35, 0x30, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E44C +ov11_0231E44C: + .byte 0x64, 0x30, 0x31, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E458 +ov11_0231E458: + .byte 0x64, 0x37, 0x33, 0x70 + .byte 0x32, 0x38, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E464 +ov11_0231E464: + .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E470 +ov11_0231E470: + .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E47C +ov11_0231E47C: + .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E488 +ov11_0231E488: + .byte 0x64, 0x37, 0x33, 0x70 + .byte 0x32, 0x38, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E494 +ov11_0231E494: + .byte 0x76, 0x33, 0x37, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4A0 +ov11_0231E4A0: + .byte 0x73, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4AC +ov11_0231E4AC: + .byte 0x73, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4B8 +ov11_0231E4B8: + .byte 0x73, 0x31, 0x34, 0x70 + .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4C4 +ov11_0231E4C4: + .byte 0x73, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4D0 +ov11_0231E4D0: + .byte 0x70, 0x30, 0x31, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4DC +ov11_0231E4DC: + .byte 0x70, 0x31, 0x37, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4E8 +ov11_0231E4E8: + .byte 0x64, 0x37, 0x33, 0x70 + .byte 0x32, 0x38, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E4F4 +ov11_0231E4F4: + .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E500 +ov11_0231E500: + .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E50C +ov11_0231E50C: + .byte 0x64, 0x37, 0x33, 0x70, 0x32, 0x38, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 +#ifndef EUROPE + .global ov11_0231E518 +ov11_0231E518: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 +#endif + .global ov11_0231E524 +ov11_0231E524: + .byte 0x70, 0x32, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E530 +ov11_0231E530: + .byte 0x70, 0x32, 0x31, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E53C +ov11_0231E53C: + .byte 0x70, 0x32, 0x31, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E548 +ov11_0231E548: + .byte 0x70, 0x32, 0x30, 0x70 + .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E554 +ov11_0231E554: + .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E560 +ov11_0231E560: + .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E56C +ov11_0231E56C: + .byte 0x70, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E578 +ov11_0231E578: + .byte 0x70, 0x31, 0x38, 0x70 + .byte 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E584 +ov11_0231E584: + .byte 0x70, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E590 +ov11_0231E590: + .byte 0x70, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E59C +ov11_0231E59C: + .byte 0x70, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5A8 +ov11_0231E5A8: + .byte 0x64, 0x34, 0x35, 0x70 + .byte 0x33, 0x31, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5B4 +ov11_0231E5B4: + .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5C0 +ov11_0231E5C0: + .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5CC +ov11_0231E5CC: + .byte 0x64, 0x34, 0x35, 0x70, 0x33, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5D8 +ov11_0231E5D8: + .byte 0x64, 0x34, 0x35, 0x70 + .byte 0x33, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5E4 +ov11_0231E5E4: + .byte 0x70, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5F0 +ov11_0231E5F0: + .byte 0x70, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E5FC +ov11_0231E5FC: + .byte 0x70, 0x32, 0x30, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E608 +ov11_0231E608: + .byte 0x70, 0x31, 0x35, 0x70 + .byte 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E614 +ov11_0231E614: + .byte 0x67, 0x30, 0x31, 0x70, 0x31, 0x30, 0x63, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E620 +ov11_0231E620: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x38, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E62C +ov11_0231E62C: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x35, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E638 +ov11_0231E638: + .byte 0x73, 0x31, 0x33, 0x70 + .byte 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E644 +ov11_0231E644: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x33, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E650 +ov11_0231E650: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E65C +ov11_0231E65C: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E668 +ov11_0231E668: + .byte 0x73, 0x31, 0x33, 0x70 + .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E674 +ov11_0231E674: + .byte 0x73, 0x31, 0x33, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E680 +ov11_0231E680: + .byte 0x76, 0x32, 0x36, 0x70, 0x31, 0x30, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E68C +ov11_0231E68C: + .byte 0x76, 0x32, 0x36, 0x70, 0x30, 0x37, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E698 +ov11_0231E698: + .byte 0x76, 0x32, 0x36, 0x70 + .byte 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6A4 +ov11_0231E6A4: + .byte 0x76, 0x32, 0x36, 0x70, 0x30, 0x34, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6B0 +ov11_0231E6B0: + .byte 0x76, 0x32, 0x36, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6BC +ov11_0231E6BC: + .byte 0x76, 0x32, 0x35, 0x70, 0x30, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6C8 +ov11_0231E6C8: + .byte 0x76, 0x32, 0x35, 0x70 + .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6D4 +ov11_0231E6D4: + .byte 0x76, 0x32, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6E0 +ov11_0231E6E0: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6EC +ov11_0231E6EC: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E6F8 +ov11_0231E6F8: + .byte 0x76, 0x32, 0x34, 0x70 + .byte 0x30, 0x35, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E704 +ov11_0231E704: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E710 +ov11_0231E710: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E71C +ov11_0231E71C: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E728 +ov11_0231E728: + .byte 0x76, 0x32, 0x34, 0x70 + .byte 0x30, 0x34, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E734 +ov11_0231E734: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x34, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E740 +ov11_0231E740: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E74C +ov11_0231E74C: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x33, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E758 +ov11_0231E758: + .byte 0x76, 0x32, 0x34, 0x70 + .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E764 +ov11_0231E764: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E770 +ov11_0231E770: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E77C +ov11_0231E77C: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E788 +ov11_0231E788: + .byte 0x76, 0x32, 0x34, 0x70 + .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E794 +ov11_0231E794: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x31, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7A0 +ov11_0231E7A0: + .byte 0x76, 0x32, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7AC +ov11_0231E7AC: + .byte 0x76, 0x32, 0x33, 0x70, 0x30, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7B8 +ov11_0231E7B8: + .byte 0x76, 0x32, 0x33, 0x70 + .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7C4 +ov11_0231E7C4: + .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x33, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7D0 +ov11_0231E7D0: + .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7DC +ov11_0231E7DC: + .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7E8 +ov11_0231E7E8: + .byte 0x76, 0x32, 0x32, 0x70 + .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E7F4 +ov11_0231E7F4: + .byte 0x76, 0x32, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E800 +ov11_0231E800: + .byte 0x76, 0x32, 0x31, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E80C +ov11_0231E80C: + .byte 0x76, 0x31, 0x39, 0x70, 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E818 +ov11_0231E818: + .byte 0x76, 0x31, 0x39, 0x70 + .byte 0x30, 0x35, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E824 +ov11_0231E824: + .byte 0x76, 0x31, 0x39, 0x70, 0x30, 0x32, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E830 +ov11_0231E830: + .byte 0x76, 0x31, 0x35, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E83C +ov11_0231E83C: + .byte 0x76, 0x31, 0x35, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E848 +ov11_0231E848: + .byte 0x76, 0x31, 0x35, 0x70 + .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E854 +ov11_0231E854: + .byte 0x76, 0x31, 0x35, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E860 +ov11_0231E860: + .byte 0x76, 0x31, 0x34, 0x70, 0x30, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E86C +ov11_0231E86C: + .byte 0x76, 0x31, 0x34, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E878 +ov11_0231E878: + .byte 0x76, 0x31, 0x34, 0x70 + .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E884 +ov11_0231E884: + .byte 0x76, 0x31, 0x34, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E890 +ov11_0231E890: + .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x38, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E89C +ov11_0231E89C: + .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8A8 +ov11_0231E8A8: + .byte 0x76, 0x31, 0x32, 0x70 + .byte 0x30, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8B4 +ov11_0231E8B4: + .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8C0 +ov11_0231E8C0: + .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8CC +ov11_0231E8CC: + .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8D8 +ov11_0231E8D8: + .byte 0x76, 0x31, 0x32, 0x70 + .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8E4 +ov11_0231E8E4: + .byte 0x76, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8F0 +ov11_0231E8F0: + .byte 0x76, 0x31, 0x30, 0x70, 0x30, 0x33, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E8FC +ov11_0231E8FC: + .byte 0x76, 0x31, 0x30, 0x70, 0x30, 0x31, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E908 +ov11_0231E908: + .byte 0x76, 0x31, 0x30, 0x70 + .byte 0x30, 0x31, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E914 +ov11_0231E914: + .byte 0x76, 0x31, 0x30, 0x70, 0x30, 0x31, 0x63, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E920 +ov11_0231E920: + .byte 0x76, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E92C +ov11_0231E92C: + .byte 0x76, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E938 +ov11_0231E938: + .byte 0x76, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E944 +ov11_0231E944: + .byte 0x76, 0x30, 0x34, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E950 +ov11_0231E950: + .byte 0x76, 0x30, 0x33, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E95C +ov11_0231E95C: + .byte 0x76, 0x30, 0x33, 0x70, 0x30, 0x36, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E968 +ov11_0231E968: + .byte 0x76, 0x30, 0x33, 0x70 + .byte 0x30, 0x36, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E974 +ov11_0231E974: + .byte 0x76, 0x30, 0x33, 0x70, 0x30, 0x33, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E980 +ov11_0231E980: + .byte 0x76, 0x30, 0x33, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E98C +ov11_0231E98C: + .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x37, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E998 +ov11_0231E998: + .byte 0x76, 0x30, 0x31, 0x70 + .byte 0x30, 0x35, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9A4 +ov11_0231E9A4: + .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x35, 0x62, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9B0 +ov11_0231E9B0: + .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x35, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9BC +ov11_0231E9BC: + .byte 0x76, 0x30, 0x31, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9C8 +ov11_0231E9C8: + .byte 0x74, 0x30, 0x31, 0x70 + .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9D4 +ov11_0231E9D4: + .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9E0 +ov11_0231E9E0: + .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9EC +ov11_0231E9EC: + .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231E9F8 +ov11_0231E9F8: + .byte 0x74, 0x30, 0x31, 0x70 + .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA04 +ov11_0231EA04: + .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA10 +ov11_0231EA10: + .byte 0x74, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA1C +ov11_0231EA1C: + .byte 0x73, 0x30, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA28 +ov11_0231EA28: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA34 +ov11_0231EA34: + .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA40 +ov11_0231EA40: + .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 +#ifdef EUROPE + .global ov11_0231F414 +ov11_0231F414: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x65, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F420 +ov11_0231F420: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x64, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F42C +ov11_0231F42C: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x63, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F438 +ov11_0231F438: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x62, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F444 +ov11_0231F444: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x61, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F450 +ov11_0231F450: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x65, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F45C +ov11_0231F45C: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x64, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F468 +ov11_0231F468: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x63, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F474 +ov11_0231F474: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x62, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F480 +ov11_0231F480: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x61, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F48C +ov11_0231F48C: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x65, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F498 +ov11_0231F498: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x64, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4A4 +ov11_0231F4A4: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x63, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4B0 +ov11_0231F4B0: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x62, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4BC +ov11_0231F4BC: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4C8 +ov11_0231F4C8: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x65, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4D4 +ov11_0231F4D4: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x64, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4E0 +ov11_0231F4E0: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x63, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231F4EC +ov11_0231F4EC: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x62, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 +#else + .global ov11_0231EA4C +ov11_0231EA4C: + .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA58 +ov11_0231EA58: + .byte 0x73, 0x30, 0x35, 0x70 + .byte 0x30, 0x32, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA64 +ov11_0231EA64: + .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 +#endif + .global ov11_0231EA70 +ov11_0231EA70: + .byte 0x73, 0x30, 0x35, 0x70, 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA7C +ov11_0231EA7C: + .byte 0x73, 0x30, 0x31, 0x70, 0x30, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA88 +ov11_0231EA88: + .byte 0x73, 0x30, 0x31, 0x70 + .byte 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EA94 +ov11_0231EA94: + .byte 0x73, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAA0 +ov11_0231EAA0: + .byte 0x70, 0x31, 0x34, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAAC +ov11_0231EAAC: + .byte 0x70, 0x31, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAB8 +ov11_0231EAB8: + .byte 0x70, 0x31, 0x31, 0x70 + .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAC4 +ov11_0231EAC4: + .byte 0x70, 0x31, 0x31, 0x70, 0x30, 0x31, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAD0 +ov11_0231EAD0: + .byte 0x70, 0x30, 0x39, 0x70, 0x30, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EADC +ov11_0231EADC: + .byte 0x70, 0x30, 0x39, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAE8 +ov11_0231EAE8: + .byte 0x70, 0x30, 0x35, 0x70 + .byte 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EAF4 +ov11_0231EAF4: + .byte 0x70, 0x30, 0x35, 0x70, 0x30, 0x33, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB00 +ov11_0231EB00: + .byte 0x70, 0x30, 0x35, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB0C +ov11_0231EB0C: + .byte 0x70, 0x30, 0x33, 0x70, 0x30, 0x32, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB18 +ov11_0231EB18: + .byte 0x70, 0x30, 0x33, 0x70 + .byte 0x30, 0x32, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB24 +ov11_0231EB24: + .byte 0x70, 0x30, 0x33, 0x70, 0x30, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB30 +ov11_0231EB30: + .byte 0x70, 0x30, 0x32, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB3C +ov11_0231EB3C: + .byte 0x70, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB48 +ov11_0231EB48: + .byte 0x68, 0x30, 0x32, 0x70 + .byte 0x39, 0x39, 0x63, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB54 +ov11_0231EB54: + .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x63, 0x35 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB60 +ov11_0231EB60: + .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB6C +ov11_0231EB6C: + .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB78 +ov11_0231EB78: + .byte 0x68, 0x30, 0x32, 0x70 + .byte 0x39, 0x39, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB84 +ov11_0231EB84: + .byte 0x68, 0x30, 0x32, 0x70, 0x39, 0x39, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB90 +ov11_0231EB90: + .byte 0x68, 0x30, 0x31, 0x70, 0x39, 0x39, 0x64, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EB9C +ov11_0231EB9C: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x37, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBA8 +ov11_0231EBA8: + .byte 0x67, 0x30, 0x31, 0x70 + .byte 0x30, 0x36, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBB4 +ov11_0231EBB4: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x35, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBC0 +ov11_0231EBC0: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBCC +ov11_0231EBCC: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBD8 +ov11_0231EBD8: + .byte 0x67, 0x30, 0x31, 0x70 + .byte 0x30, 0x31, 0x63, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBE4 +ov11_0231EBE4: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x63, 0x33 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBF0 +ov11_0231EBF0: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x63, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EBFC +ov11_0231EBFC: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC08 +ov11_0231EC08: + .byte 0x67, 0x30, 0x31, 0x70 + .byte 0x30, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC14 +ov11_0231EC14: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC20 +ov11_0231EC20: + .byte 0x67, 0x30, 0x31, 0x70, 0x30, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC2C +ov11_0231EC2C: + .byte 0x64, 0x37, 0x39, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC38 +ov11_0231EC38: + .byte 0x64, 0x33, 0x39, 0x70 + .byte 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC44 +ov11_0231EC44: + .byte 0x64, 0x33, 0x34, 0x70, 0x34, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC50 +ov11_0231EC50: + .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC5C +ov11_0231EC5C: + .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC68 +ov11_0231EC68: + .byte 0x64, 0x33, 0x32, 0x70 + .byte 0x34, 0x34, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC74 +ov11_0231EC74: + .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC80 +ov11_0231EC80: + .byte 0x64, 0x33, 0x32, 0x70, 0x34, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC8C +ov11_0231EC8C: + .byte 0x64, 0x33, 0x32, 0x70, 0x31, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EC98 +ov11_0231EC98: + .byte 0x64, 0x33, 0x32, 0x70 + .byte 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECA4 +ov11_0231ECA4: + .byte 0x64, 0x33, 0x31, 0x70, 0x33, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECB0 +ov11_0231ECB0: + .byte 0x64, 0x33, 0x30, 0x70, 0x33, 0x33, 0x61, 0x34, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECBC +ov11_0231ECBC: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x34, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECC8 +ov11_0231ECC8: + .byte 0x64, 0x32, 0x38, 0x70 + .byte 0x33, 0x34, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECD4 +ov11_0231ECD4: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECE0 +ov11_0231ECE0: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECEC +ov11_0231ECEC: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ECF8 +ov11_0231ECF8: + .byte 0x64, 0x32, 0x38, 0x70 + .byte 0x33, 0x33, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED04 +ov11_0231ED04: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED10 +ov11_0231ED10: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED1C +ov11_0231ED1C: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x33, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED28 +ov11_0231ED28: + .byte 0x64, 0x32, 0x38, 0x70 + .byte 0x33, 0x33, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED34 +ov11_0231ED34: + .byte 0x64, 0x32, 0x38, 0x70, 0x33, 0x32, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED40 +ov11_0231ED40: + .byte 0x64, 0x32, 0x31, 0x70, 0x34, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED4C +ov11_0231ED4C: + .byte 0x64, 0x32, 0x31, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED58 +ov11_0231ED58: + .byte 0x64, 0x31, 0x36, 0x70 + .byte 0x33, 0x31, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED64 +ov11_0231ED64: + .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x38 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED70 +ov11_0231ED70: + .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x37, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED7C +ov11_0231ED7C: + .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x36, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED88 +ov11_0231ED88: + .byte 0x64, 0x31, 0x36, 0x70 + .byte 0x33, 0x31, 0x61, 0x35, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231ED94 +ov11_0231ED94: + .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x34 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDA0 +ov11_0231EDA0: + .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDAC +ov11_0231EDAC: + .byte 0x64, 0x31, 0x36, 0x70, 0x33, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDB8 +ov11_0231EDB8: + .byte 0x64, 0x31, 0x36, 0x70 + .byte 0x33, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDC4 +ov11_0231EDC4: + .byte 0x64, 0x31, 0x32, 0x70, 0x34, 0x31, 0x61, 0x32 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDD0 +ov11_0231EDD0: + .byte 0x64, 0x31, 0x32, 0x70, 0x34, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDDC +ov11_0231EDDC: + .byte 0x64, 0x30, 0x39, 0x70, 0x31, 0x31, 0x61, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDE8 +ov11_0231EDE8: + .byte 0x64, 0x30, 0x39, 0x70 + .byte 0x31, 0x31, 0x61, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EDF4 +ov11_0231EDF4: + .byte 0x64, 0x30, 0x39, 0x70, 0x31, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE00 +ov11_0231EE00: + .byte 0x64, 0x30, 0x38, 0x70, 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE0C +ov11_0231EE0C: + .byte 0x64, 0x30, 0x35, 0x70, 0x33, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE18 +ov11_0231EE18: + .byte 0x64, 0x30, 0x34, 0x70 + .byte 0x31, 0x31, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE24 +ov11_0231EE24: + .byte 0x64, 0x30, 0x32, 0x70, 0x33, 0x31, 0x61, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE30 +ov11_0231EE30: + .byte 0x64, 0x30, 0x31, 0x70, 0x31, 0x31, 0x62, 0x33, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE3C +ov11_0231EE3C: + .byte 0x64, 0x30, 0x31, 0x70, 0x31, 0x31, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00 + .global ov11_0231EE48 +ov11_0231EE48: + .byte 0x64, 0x30, 0x31, 0x70 + .byte 0x31, 0x31, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00 + .global OBJECTS +OBJECTS: + .byte 0x0E, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE48 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE3C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE3C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE3C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE3C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE30 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE24 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE0C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE0C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE0C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EE00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDF4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDF4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDE8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDE8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDE8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDDC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDDC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDDC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDD0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDC4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDAC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDA0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDA0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EDA0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED94 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED94 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED94 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED88 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED88 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED88 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED7C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED7C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED7C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED70 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED70 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED70 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED64 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED64 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED64 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED58 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED58 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED58 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED4C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED4C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED4C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED40 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED34 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED28 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED1C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED10 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ED04 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECF8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECEC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECE0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECD4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECC8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECBC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECBC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECBC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECB0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECB0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECB0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231ECA4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x02, 0x01 + .word ov11_0231EC98 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC8C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC80 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC74 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC68 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC5C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC50 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC44 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC38 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC2C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC2C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC20 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC14 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EC08 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBFC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBF0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBE4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBD8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBCC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBCC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBCC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBCC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBC0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBC0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBB4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EBA8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB9C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB9C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB9C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB90 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x01 + .word ov11_0231EB84 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x01 + .word ov11_0231EB84 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x02, 0x01 + .word ov11_0231EB84 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x01 + .word ov11_0231EB78 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB6C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB6C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB6C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB60 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB54 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB48 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB3C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB30 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB30 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB30 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB30 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB24 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB18 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB0C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EB00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAF4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAF4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAF4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAE8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAE8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAE8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EADC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EADC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EADC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAD0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAC4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAAC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EAA0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA94 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA88 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA7C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA70 +#ifdef EUROPE + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4EC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4E0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4D4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4C8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4BC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4B0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F4A4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F498 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231F48C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231F480 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231F474 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231F468 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231F45C + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231F450 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231F444 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231F438 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231F42C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231F420 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231F414 +#else + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA64 + .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231EA58 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA4C +#endif + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA40 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA34 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA28 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA28 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA1C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA10 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231EA04 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9EC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9E0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9D4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9C8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9BC + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E9A4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E998 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E98C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E98C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E980 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E980 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E974 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E968 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E968 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E968 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E968 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E95C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E95C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E95C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E95C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E950 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E944 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E938 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E92C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E920 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E914 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E914 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E914 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E914 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E914 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E914 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E908 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E908 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E908 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E908 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E908 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E908 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8FC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8FC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8FC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8FC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8FC + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8FC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8F0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8E4 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8D8 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8CC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8C0 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8B4 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E8A8 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E89C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E890 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E884 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E878 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E86C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E860 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E854 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E854 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E854 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E854 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E854 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E854 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E848 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E848 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E848 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E848 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E848 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E848 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E83C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E830 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E824 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E824 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E824 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E818 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E80C + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E80C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E80C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E800 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7F4 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7E8 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7E8 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7E8 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7E8 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7DC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7C4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7B8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7B8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7B8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7AC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7AC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7AC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7A0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7A0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E7A0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E794 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E788 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E77C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E77C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E770 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E764 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E764 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E758 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E758 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E74C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E740 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E734 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E728 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E71C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E710 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E704 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E704 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6EC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6EC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6E0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6D4 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6C8 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6C8 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6C8 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6C8 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6C8 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6BC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6BC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6BC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6BC + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6BC + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6B0 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6B0 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6B0 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6A4 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6A4 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E6A4 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E698 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E698 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E698 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E68C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E68C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E68C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E680 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E674 + .byte 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x01 + .word ov11_0231E668 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E65C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E650 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E644 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E644 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E638 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E62C + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E62C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E620 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E614 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E608 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E5FC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E5F0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x02, 0x01 + .word ov11_0231E5E4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E5D8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E5CC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E5C0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E5B4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E5A8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E59C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E590 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E584 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E578 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E56C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E560 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E554 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E548 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E548 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E53C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E530 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E524 +#ifndef EUROPE + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E518 +#endif + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E50C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E500 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4F4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4E8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4DC + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .word ov11_0231E4D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4C4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4B8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4AC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4A0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4A0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E4A0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E494 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E488 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E47C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E470 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E464 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E458 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E44C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E440 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E434 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E428 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E41C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E410 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E404 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3EC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3E0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3E0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3D4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3C8 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .word ov11_0231E3BC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3A4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3A4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E3A4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E398 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E398 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E38C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E38C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E380 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E374 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E368 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E35C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E350 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E344 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E338 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E32C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E32C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E32C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E320 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E320 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E314 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E314 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E308 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E308 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2FC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2F0 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2E4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2D8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2CC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2C0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2B4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E2A8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E29C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E290 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E284 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E278 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E26C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E260 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E254 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E248 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E23C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E23C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E230 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E224 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E218 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E20C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E200 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1F4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1E8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1DC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1C4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1B8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1AC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E1A0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E194 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E188 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E17C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E170 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E164 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E158 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E14C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E140 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E134 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E128 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E11C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E110 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E104 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0EC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0E0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0D4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0C8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0BC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0B0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E0A4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E098 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E08C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E080 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E074 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E068 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E05C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E050 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E044 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E038 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E02C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E020 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E014 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231E008 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFFC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFF0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFE4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFD8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFCC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFC0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFB4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DFA8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF9C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF90 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF84 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF78 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF6C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF60 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF54 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF48 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF3C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF30 + .byte 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .word ov11_0231DF30 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF24 + .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .word ov11_0231DF18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .word ov11_0231DF18 + .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .word ov11_0231DF0C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00 + .word ov11_0231DF0C + .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .word ov11_0231DF0C + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DF00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEF4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEE8 +#ifndef EUROPE + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEDC +#endif + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DED0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DED0 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEC4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEC4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEC4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEC4 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEB8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEB8 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEAC + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DEA0 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE94 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE94 + .byte 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE88 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE7C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE70 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE64 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE58 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .word ov11_0231DE4C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00 + .word GROUND_WAN_FILES_TABLE + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02320858 +ov11_02320858: + .byte 0x01, 0x01, 0x01, 0x00 + .byte 0x01, 0x01, 0x01, 0x00, 0x02, 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01 + .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01 + .global RECRUITMENT_TABLE_LOCATIONS +RECRUITMENT_TABLE_LOCATIONS: + .byte 0x39, 0x37, 0x3B, 0x4C, 0x10, 0x17, 0x1A, 0x2B + .byte 0x42, 0x3D, 0x52, 0x45, 0x4E, 0x50, 0x50, 0x56, 0xF1, 0x35, 0xF2, 0x54, 0x4A, 0xF3, 0x00, 0x00 + .global RECRUITMENT_TABLE_LEVELS +RECRUITMENT_TABLE_LEVELS: + .byte 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x30, 0x00 + .byte 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x35, 0x00, 0x2B, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2E, 0x00 + .byte 0x28, 0x00, 0x28, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x31, 0x00, 0x37, 0x00 + .global RECRUITMENT_TABLE_SPECIES +RECRUITMENT_TABLE_SPECIES: + .byte 0x99, 0x01, 0x9A, 0x01 + .byte 0x9B, 0x01, 0x9F, 0x01, 0x0A, 0x02, 0x0B, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x10, 0x02 + .byte 0x11, 0x02, 0x15, 0x02, 0x90, 0x00, 0x0F, 0x02, 0x67, 0x04, 0x97, 0x00, 0x14, 0x02, 0x13, 0x02 + .byte 0x12, 0x02, 0xA0, 0x01, 0x9E, 0x01, 0x16, 0x02 + .global ov11_02320904 +ov11_02320904: + .byte 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x73, 0x03 + .byte 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x5C, 0x02, 0x02, 0x00, 0x19, 0x00, 0x02, 0x00, 0x71, 0x02 + .byte 0x03, 0x00, 0x9E, 0x00, 0x03, 0x00, 0xF6, 0x02, 0x04, 0x00, 0xAC, 0x01, 0x04, 0x00, 0x04, 0x04 + .byte 0x05, 0x00, 0xA9, 0x01, 0x05, 0x00, 0x01, 0x04, 0x06, 0x00, 0x9B, 0x00, 0x06, 0x00, 0xF3, 0x02 + .byte 0x07, 0x00, 0x48, 0x01, 0x07, 0x00, 0xA0, 0x03, 0x08, 0x00, 0x34, 0x00, 0x08, 0x00, 0x8C, 0x02 + .byte 0x09, 0x00, 0x98, 0x00, 0x09, 0x00, 0xF0, 0x02, 0x0A, 0x00, 0xE8, 0x01, 0x0A, 0x00, 0x40, 0x04 + .byte 0x0B, 0x00, 0x01, 0x00, 0x0B, 0x00, 0x59, 0x02, 0x0C, 0x00, 0x07, 0x00, 0x0C, 0x00, 0x5F, 0x02 + .byte 0x0D, 0x00, 0x18, 0x01, 0x0D, 0x00, 0x70, 0x03, 0x0E, 0x00, 0x1E, 0x01, 0x0E, 0x00, 0x76, 0x03 + .byte 0x0F, 0x00, 0xA6, 0x01, 0x0F, 0x00, 0xFE, 0x03, 0x10, 0x00, 0x25, 0x00, 0x10, 0x00, 0x7D, 0x02 + .byte 0x11, 0x00, 0x85, 0x00, 0x11, 0x00, 0xDD, 0x02, 0x12, 0x00, 0x02, 0x01, 0x12, 0x00, 0x5A, 0x03 + .byte 0x13, 0x00, 0xB6, 0x01, 0x13, 0x00, 0x0E, 0x04, 0x14, 0x00, 0xE9, 0x01, 0x14, 0x00, 0x41, 0x04 + .byte 0xFF, 0xFF, 0x00, 0x00 + .global ov11_023209B0 +ov11_023209B0: + .byte 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74 + .byte 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x25, 0x64, 0x5B, 0x25, 0x64, 0x5D, 0x0A, 0x00, 0x00, 0x00 + .global ov11_023209CC +ov11_023209CC: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x71, 0x75, 0x69, 0x74, 0x20 + .byte 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x00, 0x00 + .global ov11_023209EC +ov11_023209EC: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72 + .byte 0x6E, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x0A, 0x00, 0x00 + .global ov11_02320A08 +ov11_02320A08: + .byte 0x57, 0x4F, 0x52, 0x4C + .byte 0x44, 0x20, 0x4D, 0x41, 0x50, 0x20, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x65, 0x76 + .byte 0x65, 0x6E, 0x74, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00 + .global ov11_02320A28 +ov11_02320A28: + .byte 0x47, 0x45, 0x54, 0x4F + .byte 0x55, 0x54, 0x20, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64 + .byte 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov11_02320A44 +ov11_02320A44: + .byte 0x6D, 0x61, 0x70, 0x20, 0x63, 0x68, 0x61, 0x6E + .byte 0x67, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x25, 0x64 + .byte 0x0A, 0x00, 0x00, 0x00 + .global ov11_02320A60 +ov11_02320A60: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x20, 0x43, 0x41, 0x4E, 0x43, 0x45, 0x4C, 0x0A + .byte 0x00, 0x00, 0x00, 0x00 + .global ov11_02320A70 +ov11_02320A70: + .byte 0x44, 0x45, 0x4D, 0x4F, 0x20, 0x45, 0x4E, 0x44, 0x0A, 0x00, 0x00, 0x00 + .global ov11_02320A7C +ov11_02320A7C: + .byte 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x44, 0x55, 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x25 + .byte 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00 + .global ov11_02320A94 +ov11_02320A94: + .byte 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x44, 0x55 + .byte 0x4E, 0x47, 0x45, 0x4F, 0x4E, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov11_02320AAC +ov11_02320AAC: + .byte 0x52, 0x45, 0x43, 0x4F, 0x56, 0x45, 0x52, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov11_02320AB8 +ov11_02320AB8: + .byte 0x47, 0x41, 0x4D, 0x45 + .byte 0x20, 0x43, 0x41, 0x4E, 0x43, 0x45, 0x4C, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov11_02320AC8 +ov11_02320AC8: + .byte 0x47, 0x41, 0x4D, 0x45 + .byte 0x20, 0x45, 0x4E, 0x44, 0x0A, 0x00, 0x00, 0x00 + .global ov11_02320AD4 +ov11_02320AD4: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61 + .byte 0x69, 0x6E, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x64, 0x61, 0x79, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov11_02320AEC +ov11_02320AEC: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x4E, 0x65, 0x78, 0x74, 0x44 + .byte 0x61, 0x79, 0x20, 0x73, 0x68, 0x6F, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x33, 0x64 + .byte 0x0A, 0x00, 0x00, 0x00 + .global ov11_02320B10 +ov11_02320B10: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x67 + .byte 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33 + .byte 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00, 0x00 + .global ov11_02320B34 +ov11_02320B34: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61 + .byte 0x69, 0x6E, 0x20, 0x64, 0x75, 0x6E, 0x67, 0x65, 0x6F, 0x6E, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65 + .byte 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 + .global ov11_02320B58 +ov11_02320B58: + .byte 0x47, 0x72, 0x6F, 0x75 + .byte 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20 + .byte 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_02320B78 +ov11_02320B78: + .byte 0x47, 0x72, 0x6F, 0x75 + .byte 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63 + .byte 0x65, 0x6C, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00, 0x00 + .global ov11_02320B9C +ov11_02320B9C: + .byte 0x47, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4D, 0x61, 0x69, 0x6E, 0x20, 0x65, 0x64, 0x69, 0x74, 0x20 + .byte 0x65, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x25, 0x33, 0x64, 0x00 + .global ov11_02320BBC +ov11_02320BBC: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + diff --git a/asm/overlay_11_022EE5E4.s b/asm/overlay_11_022EE5E4.s index cb442fdd..a363d54d 100644 --- a/asm/overlay_11_022EE5E4.s +++ b/asm/overlay_11_022EE5E4.s @@ -37170,12245 +37170,3 @@ _0230CB84: .word SWAP_SHOP_INVENTORY_PTRS _0230E130: .word 0x000032B4 #endif arm_func_end ov11_0230CB28 - - arm_func_start ov11_0230CB88 -ov11_0230CB88: ; 0x0230CB88 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0230CBAC ; =OVERLAY11_OVERLAY_LOAD_TABLE - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl EntryOverlay13 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230CBAC: .word OVERLAY11_OVERLAY_LOAD_TABLE - arm_func_end ov11_0230CB88 - - arm_func_start LoadDuskullBankOverlay -LoadDuskullBankOverlay: ; 0x0230CBB0 - ldr ip, _0230CBBC ; =InitMenu - ldr r0, _0230CBC0 ; =ov11_0232307C - bx ip - .align 2, 0 -_0230CBBC: .word InitMenu -_0230CBC0: .word ov11_0232307C - arm_func_end LoadDuskullBankOverlay - - arm_func_start LoadLuminousSpringOverlay -LoadLuminousSpringOverlay: ; 0x0230CBC4 - ldr ip, _0230CBD0 ; =InitMenu - ldr r0, _0230CBD4 ; =ov11_0232308C - bx ip - .align 2, 0 -_0230CBD0: .word InitMenu -_0230CBD4: .word ov11_0232308C - arm_func_end LoadLuminousSpringOverlay - - arm_func_start LoadChimechoAssemblyOverlay -LoadChimechoAssemblyOverlay: ; 0x0230CBD8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0230CBF8 ; =ov11_0232309C - bl InitMenu - cmp r0, #0 - ldrne r0, _0230CBFC ; =ov11_0238A08C - strne r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230CBF8: .word ov11_0232309C -_0230CBFC: .word ov11_0238A08C - arm_func_end LoadChimechoAssemblyOverlay - - arm_func_start LoadElectivireLinkShopOverlay -LoadElectivireLinkShopOverlay: ; 0x0230CC00 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0230CC20 ; =ov11_023230AC - bl InitMenu - cmp r0, #0 - ldrne r0, _0230CC24 ; =ov11_0238A090 - strne r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230CC20: .word ov11_023230AC -_0230CC24: .word ov11_0238A090 - arm_func_end LoadElectivireLinkShopOverlay - - arm_func_start LoadSpindaCafeOverlayInit -LoadSpindaCafeOverlayInit: ; 0x0230CC28 - stmdb sp!, {r3, lr} - ldr r0, _0230CC44 ; =ov11_023230CC - bl InitMenu - ldr r0, _0230CC48 ; =SPINDA_CAFE_OVERLAY_STATUS - mov r1, #0 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CC44: .word ov11_023230CC -_0230CC48: .word SPINDA_CAFE_OVERLAY_STATUS - arm_func_end LoadSpindaCafeOverlayInit - - arm_func_start LoadSpindaCafeOverlayResume -LoadSpindaCafeOverlayResume: ; 0x0230CC4C - stmdb sp!, {r3, lr} - ldr r0, _0230CC68 ; =ov11_023230BC - bl InitMenu - ldr r0, _0230CC6C ; =SPINDA_CAFE_OVERLAY_STATUS - mov r1, #0 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CC68: .word ov11_023230BC -_0230CC6C: .word SPINDA_CAFE_OVERLAY_STATUS - arm_func_end LoadSpindaCafeOverlayResume - - arm_func_start IsSpindaCafeOverlaySuspended -IsSpindaCafeOverlaySuspended: ; 0x0230CC70 - ldr r0, _0230CC7C ; =SPINDA_CAFE_OVERLAY_STATUS - ldrb r0, [r0] - bx lr - .align 2, 0 -_0230CC7C: .word SPINDA_CAFE_OVERLAY_STATUS - arm_func_end IsSpindaCafeOverlaySuspended - - arm_func_start LoadRecycleShopOverlayInit -LoadRecycleShopOverlayInit: ; 0x0230CC80 - stmdb sp!, {r3, lr} - bl sub_020017EC - ldr r0, _0230CCA0 ; =ov11_023230EC - bl InitMenu - ldr r0, _0230CCA4 ; =RECYCLE_SHOP_OVERLAY_STATUS - mov r1, #0 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CCA0: .word ov11_023230EC -_0230CCA4: .word RECYCLE_SHOP_OVERLAY_STATUS - arm_func_end LoadRecycleShopOverlayInit - - arm_func_start LoadRecycleShopOverlayResume -LoadRecycleShopOverlayResume: ; 0x0230CCA8 - stmdb sp!, {r3, lr} - ldr r0, _0230CCD4 ; =ov11_023230EC - bl sub_02034840 - cmp r0, #0 - bne _0230CCC4 - ldr r0, _0230CCD8 ; =ov11_023230DC - bl InitMenu -_0230CCC4: - ldr r0, _0230CCDC ; =RECYCLE_SHOP_OVERLAY_STATUS - mov r1, #0 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CCD4: .word ov11_023230EC -_0230CCD8: .word ov11_023230DC -_0230CCDC: .word RECYCLE_SHOP_OVERLAY_STATUS - arm_func_end LoadRecycleShopOverlayResume - - arm_func_start IsRecycleShopOverlaySuspended -IsRecycleShopOverlaySuspended: ; 0x0230CCE0 - ldr r0, _0230CCEC ; =RECYCLE_SHOP_OVERLAY_STATUS - ldrb r0, [r0] - bx lr - .align 2, 0 -_0230CCEC: .word RECYCLE_SHOP_OVERLAY_STATUS - arm_func_end IsRecycleShopOverlaySuspended - - arm_func_start ov11_0230CCF0 -ov11_0230CCF0: ; 0x0230CCF0 - stmdb sp!, {r4, lr} - ldr r1, _0230CD3C ; =RECYCLE_SHOP_OVERLAY_STATUS - mov r4, r0 - ldrb r0, [r1] - cmp r0, #0 - beq _0230CD34 - ldr lr, _0230CD40 ; =ov11_0238A098 - mov ip, #9 -_0230CD10: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230CD10 - ldr r2, _0230CD44 ; =ov11_0238A094 - ldmia lr, {r0, r1} - stmia r4, {r0, r1} - ldr r0, [r2] - ldmia sp!, {r4, pc} -_0230CD34: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230CD3C: .word RECYCLE_SHOP_OVERLAY_STATUS -_0230CD40: .word ov11_0238A098 -_0230CD44: .word ov11_0238A094 - arm_func_end ov11_0230CCF0 - - arm_func_start LoadCroagunkSwapShopOverlay -LoadCroagunkSwapShopOverlay: ; 0x0230CD48 - ldr ip, _0230CD54 ; =InitMenu - ldr r0, _0230CD58 ; =ov11_023230FC - bx ip - .align 2, 0 -_0230CD54: .word InitMenu -_0230CD58: .word ov11_023230FC - arm_func_end LoadCroagunkSwapShopOverlay - - arm_func_start LoadKecleonShopOverlay -LoadKecleonShopOverlay: ; 0x0230CD5C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0230CD7C ; =ov11_0232310C - bl InitMenu - cmp r0, #0 - ldrne r0, _0230CD80 ; =ov11_0238A130 - strne r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230CD7C: .word ov11_0232310C -_0230CD80: .word ov11_0238A130 - arm_func_end LoadKecleonShopOverlay - - arm_func_start LoadKangaskhanOverlay -LoadKangaskhanOverlay: ; 0x0230CD84 - ldr r1, _0230CD98 ; =ov11_0238A134 - ldr ip, _0230CD9C ; =InitMenu - str r0, [r1] - ldr r0, _0230CDA0 ; =ov11_0232311C - bx ip - .align 2, 0 -_0230CD98: .word ov11_0238A134 -_0230CD9C: .word InitMenu -_0230CDA0: .word ov11_0232311C - arm_func_end LoadKangaskhanOverlay - - arm_func_start LoadChanseyDaycareOverlay -LoadChanseyDaycareOverlay: ; 0x0230CDA4 - ldr ip, _0230CDB0 ; =InitMenu - ldr r0, _0230CDB4 ; =ov11_0232312C - bx ip - .align 2, 0 -_0230CDB0: .word InitMenu -_0230CDB4: .word ov11_0232312C - arm_func_end LoadChanseyDaycareOverlay - - arm_func_start LoadXatuAppraisalOverlay -LoadXatuAppraisalOverlay: ; 0x0230CDB8 - ldr ip, _0230CDC4 ; =InitMenu - ldr r0, _0230CDC8 ; =ov11_0232313C - bx ip - .align 2, 0 -_0230CDC4: .word InitMenu -_0230CDC8: .word ov11_0232313C - arm_func_end LoadXatuAppraisalOverlay - - arm_func_start LoadRecycleShopOverlay -LoadRecycleShopOverlay: ; 0x0230CDCC - ldr ip, _0230CDD8 ; =InitMenu - ldr r0, _0230CDDC ; =ov11_0232314C - bx ip - .align 2, 0 -_0230CDD8: .word InitMenu -_0230CDDC: .word ov11_0232314C - arm_func_end LoadRecycleShopOverlay - - arm_func_start LoadRuleDungeonEffectsOverlay -LoadRuleDungeonEffectsOverlay: ; 0x0230CDE0 - ldr ip, _0230CDEC ; =InitMenu - ldr r0, _0230CDF0 ; =ov11_0232315C - bx ip - .align 2, 0 -_0230CDEC: .word InitMenu -_0230CDF0: .word ov11_0232315C - arm_func_end LoadRuleDungeonEffectsOverlay - - arm_func_start ov11_0230CDF4 -ov11_0230CDF4: ; 0x0230CDF4 - ldr ip, _0230CE00 ; =InitMenu - ldr r0, _0230CE04 ; =ov11_0232316C - bx ip - .align 2, 0 -_0230CE00: .word InitMenu -_0230CE04: .word ov11_0232316C - arm_func_end ov11_0230CDF4 - - arm_func_start ov11_0230CE08 -ov11_0230CE08: ; 0x0230CE08 - ldr ip, _0230CE14 ; =InitMenu - ldr r0, _0230CE18 ; =ov11_0232317C - bx ip - .align 2, 0 -_0230CE14: .word InitMenu -_0230CE18: .word ov11_0232317C - arm_func_end ov11_0230CE08 - - arm_func_start ov11_0230CE1C -ov11_0230CE1C: ; 0x0230CE1C - ldr ip, _0230CE28 ; =InitMenu - ldr r0, _0230CE2C ; =ov11_0232318C - bx ip - .align 2, 0 -_0230CE28: .word InitMenu -_0230CE2C: .word ov11_0232318C - arm_func_end ov11_0230CE1C - - arm_func_start LoadSpecialEpisodeDiscardOverlay1 -LoadSpecialEpisodeDiscardOverlay1: ; 0x0230CE30 - ldr ip, _0230CE3C ; =InitMenu - ldr r0, _0230CE40 ; =ov11_0232319C - bx ip - .align 2, 0 -_0230CE3C: .word InitMenu -_0230CE40: .word ov11_0232319C - arm_func_end LoadSpecialEpisodeDiscardOverlay1 - - arm_func_start LoadSpecialEpisodeDiscardOverlay2 -LoadSpecialEpisodeDiscardOverlay2: ; 0x0230CE44 - ldr ip, _0230CE50 ; =InitMenu - ldr r0, _0230CE54 ; =ov11_023231AC - bx ip - .align 2, 0 -_0230CE50: .word InitMenu -_0230CE54: .word ov11_023231AC - arm_func_end LoadSpecialEpisodeDiscardOverlay2 - - arm_func_start ov11_0230CE58 -ov11_0230CE58: ; 0x0230CE58 - ldr ip, _0230CE70 ; =InitMenuWithWindowExtraInfo - mov r3, r0 - mov r2, r1 - ldr r0, _0230CE74 ; =ov11_023231AC - mov r1, r3 - bx ip - .align 2, 0 -_0230CE70: .word InitMenuWithWindowExtraInfo -_0230CE74: .word ov11_023231AC - arm_func_end ov11_0230CE58 - - arm_func_start ov11_0230CE78 -ov11_0230CE78: ; 0x0230CE78 - stmdb sp!, {r3, r4, r5, lr} - mov r0, #0x54 - mov r1, #1 - bl MemAlloc - mov r5, r0 - ldr r0, _0230CECC ; =ov11_02324DBC - ldr r4, _0230CED0 ; =ov11_023231BC - str r5, [r0] - add lr, r5, #0x2c - mov ip, #2 -_0230CEA0: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230CEA0 - ldr r1, [r4] - mov r0, #0 - str r1, [lr] - str r0, [r5, #0x50] - bl ov11_02312B40 - bl ov11_0230CF00 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230CECC: .word ov11_02324DBC -_0230CED0: .word ov11_023231BC - arm_func_end ov11_0230CE78 - - arm_func_start ov11_0230CED4 -ov11_0230CED4: ; 0x0230CED4 - stmdb sp!, {r3, lr} - bl ov11_0230CF00 - bl ov11_02312BCC - ldr r0, _0230CEFC ; =ov11_02324DBC - ldr r0, [r0] - bl MemFree - ldr r0, _0230CEFC ; =ov11_02324DBC - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CEFC: .word ov11_02324DBC - arm_func_end ov11_0230CED4 - - arm_func_start ov11_0230CF00 -ov11_0230CF00: ; 0x0230CF00 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x24 - ldr r0, _0230CFEC ; =ov11_02324DBC - ldr r1, [r0] - ldr r0, [r1, #0x50] - add r4, r1, #0x2c - cmp r0, #2 - bne _0230CF48 - ldr r0, _0230CFF0 ; =ov11_023231BC - mov r1, r4 - bl ov11_0230D0FC - cmp r0, #0 - bne _0230CF48 - ldr r1, [r4, #8] - cmp r1, #0 - beq _0230CF48 - mov r0, #1 - blx r1 -_0230CF48: - ldr r0, _0230CFEC ; =ov11_02324DBC - mov r2, #0 - ldr r1, [r0] - ldr r6, _0230CFF0 ; =ov11_023231BC - strb r2, [r1] - ldr r1, [r0] - add lr, sp, #0 - strb r2, [r1, #0x28] - ldr r0, [r0] - mov r5, #2 - strb r2, [r0, #0x29] -_0230CF74: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0230CF74 - ldr r0, _0230CFEC ; =ov11_02324DBC - ldr r1, [r6] - ldr ip, [r0] - str r1, [lr] - add r6, sp, #0 - add lr, ip, #4 - mov r5, #2 -_0230CFA0: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0230CFA0 - ldr r0, [r6] - add r5, sp, #0 - str r0, [lr] - mov lr, #2 -_0230CFC0: - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs lr, lr, #1 - bne _0230CFC0 - ldr r1, [r5] - mov r0, #0 - str r1, [r4] - str r0, [ip, #0x50] - bl ov11_02312BF4 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0230CFEC: .word ov11_02324DBC -_0230CFF0: .word ov11_023231BC - arm_func_end ov11_0230CF00 - - arm_func_start ov11_0230CFF4 -ov11_0230CFF4: ; 0x0230CFF4 - ldr ip, _0230CFFC ; =ov11_0230D71C - bx ip - .align 2, 0 -_0230CFFC: .word ov11_0230D71C - arm_func_end ov11_0230CFF4 - - arm_func_start ov11_0230D000 -ov11_0230D000: ; 0x0230D000 - stmdb sp!, {r3, lr} - bl GetTopScreenOption - ldr r1, _0230D084 ; =ov11_02324DBC - mov r2, #1 - ldr r1, [r1] - cmp r0, #4 - strb r2, [r1, #0x29] - addls pc, pc, r0, lsl #2 - b _0230D07C -_0230D024: ; jump table - b _0230D040 ; case 0 - b _0230D074 ; case 1 - b _0230D06C ; case 2 - b _0230D048 ; case 3 - b _0230D038 ; case 4 -_0230D038: - bl ov11_02316440 - ldmia sp!, {r3, pc} -_0230D040: - bl ov11_0230E48C - ldmia sp!, {r3, pc} -_0230D048: - bl sub_0204AFD0 - cmp r0, #0 - beq _0230D064 - mov r0, #0 - bl WorldMapSetMode - bl ov11_0230ED28 - ldmia sp!, {r3, pc} -_0230D064: - bl ov11_02310680 - ldmia sp!, {r3, pc} -_0230D06C: - bl ov11_0230DFF4 - ldmia sp!, {r3, pc} -_0230D074: - bl ov11_0231391C - ldmia sp!, {r3, pc} -_0230D07C: - bl ov11_0230D730 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D084: .word ov11_02324DBC - arm_func_end ov11_0230D000 - - arm_func_start ov11_0230D088 -ov11_0230D088: ; 0x0230D088 - stmdb sp!, {r3, lr} - bl GetTopScreenOption - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0230D0F4 -_0230D09C: ; jump table - b _0230D0B8 ; case 0 - b _0230D0EC ; case 1 - b _0230D0E4 ; case 2 - b _0230D0C0 ; case 3 - b _0230D0B0 ; case 4 -_0230D0B0: - bl ov11_0231642C - ldmia sp!, {r3, pc} -_0230D0B8: - bl ov11_0230E478 - ldmia sp!, {r3, pc} -_0230D0C0: - bl sub_0204AFD0 - cmp r0, #0 - beq _0230D0DC - mov r0, #0 - bl WorldMapSetMode - bl ov11_0230E964 - ldmia sp!, {r3, pc} -_0230D0DC: - bl ov11_0231066C - ldmia sp!, {r3, pc} -_0230D0E4: - bl ov11_0230DFE0 - ldmia sp!, {r3, pc} -_0230D0EC: - bl ov11_02313908 - ldmia sp!, {r3, pc} -_0230D0F4: - bl ov11_0230D71C - ldmia sp!, {r3, pc} - arm_func_end ov11_0230D088 - - arm_func_start ov11_0230D0FC -ov11_0230D0FC: ; 0x0230D0FC - cmp r0, #0 - ldreq r0, _0230D16C ; =ov11_023231BC - cmp r1, #0 - ldreq r1, _0230D16C ; =ov11_023231BC - ldr r3, [r0] - ldr r2, [r1] - cmp r3, r2 - ldreq r3, [r0, #4] - ldreq r2, [r1, #4] - cmpeq r3, r2 - ldreq r3, [r0, #8] - ldreq r2, [r1, #8] - cmpeq r3, r2 - ldreq r3, [r0, #0x18] - ldreq r2, [r1, #0x18] - cmpeq r3, r2 - ldreq r3, [r0, #0x14] - ldreq r2, [r1, #0x14] - cmpeq r3, r2 - ldreq r3, [r0, #0x1c] - ldreq r2, [r1, #0x1c] - cmpeq r3, r2 - ldreq r2, [r0, #0x20] - ldreq r0, [r1, #0x20] - cmpeq r2, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_0230D16C: .word ov11_023231BC - arm_func_end ov11_0230D0FC - - arm_func_start ov11_0230D170 -ov11_0230D170: ; 0x0230D170 - ldr ip, _0230D178 ; =ov11_0230D220 - bx ip - .align 2, 0 -_0230D178: .word ov11_0230D220 - arm_func_end ov11_0230D170 - - arm_func_start ov11_0230D17C -ov11_0230D17C: ; 0x0230D17C - stmdb sp!, {r4, lr} - ldr r1, _0230D218 ; =ov11_02324DBC - mov r4, r0 - ldr r2, [r1] - ldrb r1, [r2] - cmp r1, #0 - beq _0230D1D0 - cmp r4, #0 - beq _0230D1B8 - add r1, r2, #4 - bl ov11_0230D0FC - cmp r0, #0 - beq _0230D1D0 - mov r0, #1 - ldmia sp!, {r4, pc} -_0230D1B8: - ldr r0, _0230D21C ; =ov11_023231BC - add r1, r2, #4 - bl ov11_0230D0FC - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_0230D1D0: - cmp r4, #0 - beq _0230D1F0 - ldr r1, _0230D218 ; =ov11_02324DBC - mov r0, r4 - ldr r1, [r1] - add r1, r1, #0x2c - bl ov11_0230D0FC - ldmia sp!, {r4, pc} -_0230D1F0: - ldr r1, _0230D218 ; =ov11_02324DBC - ldr r0, _0230D21C ; =ov11_023231BC - ldr r1, [r1] - add r1, r1, #4 - bl ov11_0230D0FC - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_0230D218: .word ov11_02324DBC -_0230D21C: .word ov11_023231BC - arm_func_end ov11_0230D17C - - arm_func_start ov11_0230D220 -ov11_0230D220: ; 0x0230D220 - stmdb sp!, {r3, lr} - ldr r0, _0230D26C ; =ov11_02324DBC - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, #0 - ldreqb r0, [r1, #0x28] - cmpeq r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, [r1, #0x50] - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r0, #2 - ldrneb r0, [r1, #0x29] - ldmneia sp!, {r3, pc} - ldr r0, [r1, #0x38] - blx r0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D26C: .word ov11_02324DBC - arm_func_end ov11_0230D220 - - arm_func_start ov11_0230D270 -ov11_0230D270: ; 0x0230D270 - stmdb sp!, {r4, lr} - ldr r1, _0230D314 ; =ov11_02324DBC - mov r4, r0 - ldr r1, [r1] - add r1, r1, #0x2c - bl ov11_0230D0FC - cmp r0, #0 - bne _0230D300 - ldr r0, _0230D314 ; =ov11_02324DBC - ldr r2, [r0] - ldrb r1, [r2] - cmp r1, #0 - beq _0230D2B8 - mov r0, r4 - add r1, r2, #4 - bl ov11_0230D0FC - mov r0, #0 - ldmia sp!, {r4, pc} -_0230D2B8: - mov r1, #1 - strb r1, [r2] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0x28] - ldr r1, [r0] - mov ip, #2 - strb r2, [r1, #0x29] - ldr r0, [r0] - add lr, r0, #4 -_0230D2E0: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230D2E0 - ldr r1, [r4] - mov r0, #1 - str r1, [lr] - ldmia sp!, {r4, pc} -_0230D300: - ldr r1, _0230D314 ; =ov11_02324DBC - mov r0, #0 - ldr r1, [r1] - strb r0, [r1, #0x29] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230D314: .word ov11_02324DBC - arm_func_end ov11_0230D270 - - arm_func_start ov11_0230D318 -ov11_0230D318: ; 0x0230D318 - stmdb sp!, {r3, lr} - ldr r2, _0230D33C ; =ov11_02324DBC - ldr r3, [r2] - ldr r2, [r3, #0x50] - cmp r2, #2 - ldmneia sp!, {r3, pc} - ldr r2, [r3, #0x3c] - blx r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D33C: .word ov11_02324DBC - arm_func_end ov11_0230D318 - - arm_func_start ov11_0230D340 -ov11_0230D340: ; 0x0230D340 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x24 - ldr r0, _0230D568 ; =ov11_02324DBC - ldr r1, [r0] - ldr r0, [r1, #0x50] - add r4, r1, #0x2c - cmp r0, #1 - beq _0230D55C - cmp r0, #2 - bne _0230D410 - add ip, sp, #0 - mov lr, r4 - mov r5, #2 -_0230D374: - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0230D374 - ldr r0, [lr] - str r0, [ip] - ldr r0, [r4, #0x14] - blx r0 - cmp r0, #1 - bne _0230D410 - add r1, sp, #0 - mov r0, r4 - bl ov11_0230D0FC - cmp r0, #0 - beq _0230D410 - ldr r0, _0230D568 ; =ov11_02324DBC - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #0x50] - ldr r1, [r4, #8] - cmp r1, #0 - beq _0230D3D4 - mov r0, #1 - blx r1 -_0230D3D4: - ldr r5, _0230D56C ; =ov11_023231BC - mov lr, r4 - mov ip, #2 -_0230D3E0: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230D3E0 - ldr r1, [r5] - ldr r0, _0230D568 ; =ov11_02324DBC - str r1, [lr] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0x28] - ldr r0, [r0] - str r2, [r0, #0x50] -_0230D410: - ldr r0, _0230D568 ; =ov11_02324DBC - ldr r1, [r0] - ldrb r0, [r1, #0x29] - cmp r0, #0 - beq _0230D43C - ldrb r0, [r1] - cmp r0, #0 - ldreqb r0, [r1, #0x28] - cmpeq r0, #0 - bne _0230D43C - bl ov11_0230D088 -_0230D43C: - ldr r0, _0230D568 ; =ov11_02324DBC - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, #0 - beq _0230D4E8 - ldr r0, _0230D56C ; =ov11_023231BC - mov r1, r4 - bl ov11_0230D0FC - cmp r0, #0 - bne _0230D480 - ldr r1, [r4, #8] - cmp r1, #0 - beq _0230D480 - mov r0, #0 - blx r1 - cmp r0, #0 - beq _0230D55C -_0230D480: - ldr r0, _0230D568 ; =ov11_02324DBC - mov ip, #2 - ldr r5, [r0] - add lr, r5, #4 -_0230D490: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230D490 - ldr r0, [lr] - mov r1, #0 - str r0, [r4] - ldr r0, _0230D568 ; =ov11_02324DBC - strb r1, [r5] - ldr r5, [r0] - ldr lr, _0230D56C ; =ov11_023231BC - add ip, r5, #4 - mov r4, #2 -_0230D4C4: - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0230D4C4 - ldr r1, [lr] - mov r0, #1 - str r1, [ip] - str r0, [r5, #0x50] - b _0230D55C -_0230D4E8: - ldrb r0, [r1, #0x28] - cmp r0, #0 - beq _0230D55C - ldr r0, _0230D56C ; =ov11_023231BC - mov r1, r4 - bl ov11_0230D0FC - cmp r0, #0 - bne _0230D524 - ldr r1, [r4, #8] - cmp r1, #0 - beq _0230D524 - mov r0, #0 - blx r1 - cmp r0, #0 - beq _0230D55C -_0230D524: - ldr lr, _0230D56C ; =ov11_023231BC - mov ip, #2 -_0230D52C: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230D52C - ldr r1, [lr] - ldr r0, _0230D568 ; =ov11_02324DBC - str r1, [r4] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0x28] - ldr r0, [r0] - str r2, [r0, #0x50] -_0230D55C: - bl ov11_02312D00 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0230D568: .word ov11_02324DBC -_0230D56C: .word ov11_023231BC - arm_func_end ov11_0230D340 - - arm_func_start ov11_0230D570 -ov11_0230D570: ; 0x0230D570 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _0230D6BC ; =ov11_02324DBC - ldr r1, [r0] - ldr r0, [r1, #0x50] - add r4, r1, #0x2c - cmp r0, #2 - bne _0230D5A0 - ldr r0, [r4, #0x18] - cmp r0, #0 - beq _0230D6B4 - blx r0 - b _0230D6B4 -_0230D5A0: - cmp r0, #1 - bne _0230D6B4 - ldrb r0, [r1, #0x29] - cmp r0, #0 - beq _0230D5C4 - ldrb r0, [r1] - cmp r0, #0 - bne _0230D5C4 - bl ov11_0230D088 -_0230D5C4: - ldr r0, _0230D6BC ; =ov11_02324DBC - ldr ip, [r0] - ldrb r0, [ip] - cmp r0, #0 - beq _0230D628 - mov lr, r4 - add r6, ip, #4 - mov r5, #2 -_0230D5E4: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0230D5E4 - ldr r0, [r6] - ldr r6, _0230D6C0 ; =ov11_023231BC - str r0, [lr] - add lr, ip, #4 - mov r5, #2 -_0230D608: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0230D608 - ldr r1, [r6] - mov r0, #0 - str r1, [lr] - strb r0, [ip] -_0230D628: - ldr r0, _0230D6BC ; =ov11_02324DBC - ldr ip, [r0] - ldrb r0, [ip, #0x28] - cmp r0, #0 - beq _0230D674 - ldr r5, _0230D6C0 ; =ov11_023231BC - mov lr, #2 -_0230D644: - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs lr, lr, #1 - bne _0230D644 - ldr r0, [r5] - mov r1, #0 - str r0, [r4] - ldr r0, _0230D6BC ; =ov11_02324DBC - strb r1, [ip, #0x28] - ldr r0, [r0] - str r1, [r0, #0x50] - b _0230D6B4 -_0230D674: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0230D6AC - blx r0 - cmp r0, #0 - ldreq r0, _0230D6BC ; =ov11_02324DBC - moveq r1, #3 - ldreq r0, [r0] - streq r1, [r0, #0x50] - ldrne r0, _0230D6BC ; =ov11_02324DBC - movne r1, #2 - ldrne r0, [r0] - strne r1, [r0, #0x50] - b _0230D6B4 -_0230D6AC: - mov r0, #2 - str r0, [ip, #0x50] -_0230D6B4: - bl ov11_023130AC - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230D6BC: .word ov11_02324DBC -_0230D6C0: .word ov11_023231BC - arm_func_end ov11_0230D570 - - arm_func_start ov11_0230D6C4 -ov11_0230D6C4: ; 0x0230D6C4 - stmdb sp!, {r3, lr} - ldr r0, _0230D6EC ; =ov11_02324DBC - ldr r1, [r0] - ldr r0, [r1, #0x50] - cmp r0, #2 - bne _0230D6E4 - ldr r0, [r1, #0x48] - blx r0 -_0230D6E4: - bl ov11_02313488 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D6EC: .word ov11_02324DBC - arm_func_end ov11_0230D6C4 - - arm_func_start ov11_0230D6F0 -ov11_0230D6F0: ; 0x0230D6F0 - stmdb sp!, {r3, lr} - ldr r0, _0230D718 ; =ov11_02324DBC - ldr r1, [r0] - ldr r0, [r1, #0x50] - cmp r0, #2 - bne _0230D710 - ldr r0, [r1, #0x4c] - blx r0 -_0230D710: - bl ov11_02313794 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D718: .word ov11_02324DBC - arm_func_end ov11_0230D6F0 - - arm_func_start ov11_0230D71C -ov11_0230D71C: ; 0x0230D71C - ldr ip, _0230D728 ; =ov11_0230D270 - ldr r0, _0230D72C ; =ov11_023231E0 - bx ip - .align 2, 0 -_0230D728: .word ov11_0230D270 -_0230D72C: .word ov11_023231E0 - arm_func_end ov11_0230D71C - - arm_func_start ov11_0230D730 -ov11_0230D730: ; 0x0230D730 - ldr ip, _0230D73C ; =ov11_0230D17C - ldr r0, _0230D740 ; =ov11_023231E0 - bx ip - .align 2, 0 -_0230D73C: .word ov11_0230D17C -_0230D740: .word ov11_023231E0 - arm_func_end ov11_0230D730 - - arm_func_start ov11_0230D744 -ov11_0230D744: ; 0x0230D744 - stmdb sp!, {r3, lr} - mov r0, #4 - mov r1, #0xf - bl MemAlloc - ldr r1, _0230D76C ; =ov11_02324DC0 - mov r2, #0 - str r0, [r1] - str r2, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D76C: .word ov11_02324DC0 - arm_func_end ov11_0230D744 - - arm_func_start ov11_0230D770 -ov11_0230D770: ; 0x0230D770 - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0230D794 - ldr r0, _0230D7B4 ; =ov11_02324DC0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #6 - movne r0, #0 - ldmneia sp!, {r3, pc} -_0230D794: - ldr r0, _0230D7B4 ; =ov11_02324DC0 - ldr r0, [r0] - bl MemFree - ldr r0, _0230D7B4 ; =ov11_02324DC0 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D7B4: .word ov11_02324DC0 - arm_func_end ov11_0230D770 - - arm_func_start ov11_0230D7B8 -ov11_0230D7B8: ; 0x0230D7B8 - ldr r0, _0230D7D8 ; =ov11_02324DC0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #6 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0230D7D8: .word ov11_02324DC0 - arm_func_end ov11_0230D7B8 - - arm_func_start ov11_0230D7DC -ov11_0230D7DC: ; 0x0230D7DC - stmdb sp!, {r3, lr} - ldr r0, _0230D8A8 ; =ov11_02324DC0 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0230D8A0 -_0230D7F8: ; jump table - b _0230D810 ; case 0 - b _0230D874 ; case 1 - b _0230D8A0 ; case 2 - b _0230D890 ; case 3 - b _0230D8A0 ; case 4 - b _0230D890 ; case 5 -_0230D810: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230D8A0 - bl ov11_022EA014 - cmp r0, #0x100 - ldreq r0, _0230D8A8 ; =ov11_02324DC0 - moveq r1, #4 - ldreq r0, [r0] - streq r1, [r0] - beq _0230D8A0 - bl ov11_022EA014 - mvn r1, #0xff - cmp r0, r1 - ldreq r0, _0230D8A8 ; =ov11_02324DC0 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0] - beq _0230D8A0 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230D8A8 ; =ov11_02324DC0 - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - b _0230D8A0 -_0230D874: - bl IsScreenFadeInProgress - cmp r0, #0 - ldreq r0, _0230D8A8 ; =ov11_02324DC0 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0] - b _0230D8A0 -_0230D890: - mov r0, #6 - str r0, [r1] - mov r0, #1 - ldmia sp!, {r3, pc} -_0230D8A0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D8A8: .word ov11_02324DC0 - arm_func_end ov11_0230D7DC - - arm_func_start ov11_0230D8AC -ov11_0230D8AC: ; 0x0230D8AC - ldr r0, _0230D8CC ; =ov11_02324DC0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #2 - cmpne r0, #4 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_0230D8CC: .word ov11_02324DC0 - arm_func_end ov11_0230D8AC - - arm_func_start ov11_0230D8D0 -ov11_0230D8D0: ; 0x0230D8D0 - stmdb sp!, {r3, lr} - ldr r0, _0230D928 ; =ov11_02324DC0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #2 - cmpne r0, #4 - ldmneia sp!, {r3, pc} - mov r0, #1 - mov r1, #2 - bl sub_02008F64 - mov r0, #1 - mov r1, #3 - bl sub_02008F64 - ldr r0, _0230D928 ; =ov11_02324DC0 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #2 - moveq r0, #3 - streq r0, [r1] - movne r0, #5 - strne r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D928: .word ov11_02324DC0 - arm_func_end ov11_0230D8D0 - - arm_func_start ov11_0230D92C -ov11_0230D92C: ; 0x0230D92C - ldr ip, _0230D938 ; =ov11_0230D270 - ldr r0, _0230D93C ; =ov11_02323204 - bx ip - .align 2, 0 -_0230D938: .word ov11_0230D270 -_0230D93C: .word ov11_02323204 - arm_func_end ov11_0230D92C - - arm_func_start ov11_0230D940 -ov11_0230D940: ; 0x0230D940 - stmdb sp!, {r3, lr} - mov r0, #4 - mov r1, #0xf - bl MemAlloc - ldr r1, _0230D968 ; =ov11_02324DC4 - mov r2, #0 - str r0, [r1] - str r2, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D968: .word ov11_02324DC4 - arm_func_end ov11_0230D940 - - arm_func_start ov11_0230D96C -ov11_0230D96C: ; 0x0230D96C - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0230D990 - ldr r0, _0230D9B0 ; =ov11_02324DC4 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #8 - movne r0, #0 - ldmneia sp!, {r3, pc} -_0230D990: - ldr r0, _0230D9B0 ; =ov11_02324DC4 - ldr r0, [r0] - bl MemFree - ldr r0, _0230D9B0 ; =ov11_02324DC4 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D9B0: .word ov11_02324DC4 - arm_func_end ov11_0230D96C - - arm_func_start ov11_0230D9B4 -ov11_0230D9B4: ; 0x0230D9B4 - ldr r0, _0230D9D4 ; =ov11_02324DC4 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #8 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0230D9D4: .word ov11_02324DC4 - arm_func_end ov11_0230D9B4 - - arm_func_start ov11_0230D9D8 -ov11_0230D9D8: ; 0x0230D9D8 - stmdb sp!, {r3, lr} - ldr r0, _0230DAD4 ; =ov11_02324DC4 - ldr r2, [r0] - ldr r0, [r2] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0230DACC -_0230D9F4: ; jump table - b _0230DA14 ; case 0 - b _0230DA8C ; case 1 - b _0230DACC ; case 2 - b _0230DAB4 ; case 3 - b _0230DACC ; case 4 - b _0230DA78 ; case 5 - b _0230DAB4 ; case 6 - b _0230DAA8 ; case 7 -_0230DA14: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230DACC - bl ov11_022EA014 - cmp r0, #0x100 - ldreq r0, _0230DAD4 ; =ov11_02324DC4 - moveq r1, #4 - ldreq r0, [r0] - streq r1, [r0] - beq _0230DACC - bl ov11_022EA014 - mvn r1, #0xff - cmp r0, r1 - ldreq r0, _0230DAD4 ; =ov11_02324DC4 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0] - beq _0230DACC - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230DAD4 ; =ov11_02324DC4 - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - b _0230DACC -_0230DA78: - mov r1, #7 - mov r0, #0x10 - str r1, [r2] - bl ov11_022E9CB0 - b _0230DACC -_0230DA8C: - bl IsScreenFadeInProgress - cmp r0, #0 - ldreq r0, _0230DAD4 ; =ov11_02324DC4 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0] - b _0230DACC -_0230DAA8: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230DACC -_0230DAB4: - ldr r0, _0230DAD4 ; =ov11_02324DC4 - mov r2, #8 - ldr r1, [r0] - mov r0, #1 - str r2, [r1] - ldmia sp!, {r3, pc} -_0230DACC: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DAD4: .word ov11_02324DC4 - arm_func_end ov11_0230D9D8 - - arm_func_start ov11_0230DAD8 -ov11_0230DAD8: ; 0x0230DAD8 - ldr r0, _0230DAF8 ; =ov11_02324DC4 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #2 - cmpne r0, #4 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_0230DAF8: .word ov11_02324DC4 - arm_func_end ov11_0230DAD8 - - arm_func_start ov11_0230DAFC -ov11_0230DAFC: ; 0x0230DAFC - stmdb sp!, {r3, lr} - ldr r0, _0230DB54 ; =ov11_02324DC4 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #2 - cmpne r0, #4 - ldmneia sp!, {r3, pc} - mov r0, #1 - mov r1, #2 - bl sub_02008F64 - mov r0, #1 - mov r1, #3 - bl sub_02008F64 - ldr r0, _0230DB54 ; =ov11_02324DC4 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #2 - moveq r0, #3 - streq r0, [r1] - movne r0, #5 - strne r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DB54: .word ov11_02324DC4 - arm_func_end ov11_0230DAFC - - arm_func_start ov11_0230DB58 -ov11_0230DB58: ; 0x0230DB58 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0230DB90 ; =ov11_02323244 - bl ov11_0230D270 - cmp r0, #0 - ldrne r0, _0230DB94 ; =ov11_02324DC8 - strne r4, [r0, #8] - ldmneia sp!, {r4, pc} - ldr r0, _0230DB94 ; =ov11_02324DC8 - ldr r1, [r0, #4] - ldr r0, [r1, #8] - cmp r0, r4 - strne r4, [r1, #0x10] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230DB90: .word ov11_02323244 -_0230DB94: .word ov11_02324DC8 - arm_func_end ov11_0230DB58 - - arm_func_start ov11_0230DB98 -ov11_0230DB98: ; 0x0230DB98 - stmdb sp!, {r3, lr} - mov r0, #0x18 - mov r1, #0xf - bl MemAlloc - ldr r1, _0230DBE4 ; =ov11_02324DC8 - str r0, [r1, #4] - bl ov11_0230DC3C - mov r0, #0x10 - bl ov11_022E9D10 - ldr r1, _0230DBE4 ; =ov11_02324DC8 - mov r3, #0 - ldmib r1, {r2, ip} - str ip, [r2, #0x10] - ldr r2, [r1, #4] - mov r0, #1 - strb r3, [r2, #0x14] - ldr r1, [r1, #4] - str r3, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DBE4: .word ov11_02324DC8 - arm_func_end ov11_0230DB98 - - arm_func_start ov11_0230DBE8 -ov11_0230DBE8: ; 0x0230DBE8 - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0230DC14 - ldr r0, _0230DC38 ; =ov11_02324DC8 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #7 - movne r0, #1 - strneb r0, [r1, #0x14] - movne r0, #0 - ldmneia sp!, {r3, pc} -_0230DC14: - bl ov11_0230DC3C - ldr r0, _0230DC38 ; =ov11_02324DC8 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0230DC38 ; =ov11_02324DC8 - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DC38: .word ov11_02324DC8 - arm_func_end ov11_0230DBE8 - - arm_func_start ov11_0230DC3C -ov11_0230DC3C: ; 0x0230DC3C - stmdb sp!, {r3, lr} - ldr r1, _0230DCB4 ; =ov11_02324DC8 - mov r3, #1 - ldr r0, [r1, #4] - mov r2, #0 - strb r2, [r0] - ldr r2, [r1, #4] - sub r0, r3, #2 - str r3, [r2, #4] - ldr r1, [r1, #4] - strb r3, [r1, #0xc] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _0230DCB4 ; =ov11_02324DC8 - ldr r0, [r0] - cmp r0, #0 - beq _0230DCA0 - bl GroundBg_FreeAll - ldr r0, _0230DCB4 ; =ov11_02324DC8 - ldr r0, [r0] - bl MemFree - ldr r0, _0230DCB4 ; =ov11_02324DC8 - mov r1, #0 - str r1, [r0] -_0230DCA0: - ldr r0, _0230DCB4 ; =ov11_02324DC8 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DCB4: .word ov11_02324DC8 - arm_func_end ov11_0230DC3C - - arm_func_start ov11_0230DCB8 -ov11_0230DCB8: ; 0x0230DCB8 - ldr r0, _0230DCD4 ; =ov11_02324DC8 - ldr r1, [r0, #4] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #0xc] - bx lr - .align 2, 0 -_0230DCD4: .word ov11_02324DC8 - arm_func_end ov11_0230DCB8 - - arm_func_start ov11_0230DCD8 -ov11_0230DCD8: ; 0x0230DCD8 - stmdb sp!, {r3, lr} - ldr r0, _0230DE80 ; =ov11_02324DC8 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0230DE78 -_0230DCF4: ; jump table - b _0230DD14 ; case 0 - b _0230DD3C ; case 1 - b _0230DE78 ; case 2 - b _0230DE78 ; case 3 - b _0230DDD4 ; case 4 - b _0230DE00 ; case 5 - b _0230DE4C ; case 6 - b _0230DE68 ; case 7 -_0230DD14: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230DE80 ; =ov11_02324DC8 - mov r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #0xc] - bne _0230DE78 - ldr r0, _0230DE80 ; =ov11_02324DC8 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230DD3C: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230DE80 ; =ov11_02324DC8 - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #0xc] - bne _0230DE78 - ldr r0, _0230DE80 ; =ov11_02324DC8 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x14] - cmp r1, #0 - beq _0230DD94 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230DE80 ; =ov11_02324DC8 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #6 - strb r3, [r2, #0xc] - ldr r0, [r0, #4] - str r1, [r0, #4] - b _0230DE78 -_0230DD94: - ldr r1, [r2, #0x10] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #0xc] - beq _0230DE78 - str r1, [r2, #8] - ldr r1, [r0, #4] - mov r2, #1 - strb r2, [r1, #0xc] - ldr r1, [r0, #4] - mov r2, #0 - str r2, [r1, #0x10] - ldr r0, [r0, #4] - mov r1, #2 - str r1, [r0, #4] - b _0230DE78 -_0230DDD4: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230DE80 ; =ov11_02324DC8 - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #0xc] - bne _0230DE78 - ldr r0, _0230DE80 ; =ov11_02324DC8 - mov r1, #5 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230DE00: - ldr r0, _0230DE80 ; =ov11_02324DC8 - ldr r1, [r0, #4] - ldrb r0, [r1, #0x14] - cmp r0, #0 - ldreq r0, [r1, #0x10] - cmpeq r0, #0 - moveq r0, #0 - streqb r0, [r1, #0xc] - beq _0230DE78 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230DE80 ; =ov11_02324DC8 - mov r3, #0 - ldr r2, [r0, #4] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0, #4] - strb r1, [r0, #0xc] - b _0230DE78 -_0230DE4C: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230DE78 - ldr r0, _0230DE80 ; =ov11_02324DC8 - mov r1, #7 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230DE68: - ldr r0, _0230DE80 ; =ov11_02324DC8 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0xc] -_0230DE78: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DE80: .word ov11_02324DC8 - arm_func_end ov11_0230DCD8 - - arm_func_start ov11_0230DE84 -ov11_0230DE84: ; 0x0230DE84 - stmdb sp!, {r3, lr} - ldr r0, _0230DEF0 ; =ov11_02324DC8 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #2 - ldmneia sp!, {r3, pc} - mov r0, #1 - strb r0, [r1, #0xc] - bl ov11_0230DC3C - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _0230DEF0 ; =ov11_02324DC8 - ldr r1, _0230DEF4 ; =ov11_02323228 - str r0, [r2] - bl GroundBg_Init - ldr r0, _0230DEF0 ; =ov11_02324DC8 - ldr r1, [r0, #4] - ldr r0, [r0] - ldr r2, [r1, #8] - ldmia r2, {r1, r2} - bl ov11_022EDE64 - ldr r0, _0230DEF0 ; =ov11_02324DC8 - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DEF0: .word ov11_02324DC8 -_0230DEF4: .word ov11_02323228 - arm_func_end ov11_0230DE84 - - arm_func_start ov11_0230DEF8 -ov11_0230DEF8: ; 0x0230DEF8 - stmdb sp!, {r3, lr} - ldr r0, _0230DF58 ; =ov11_02324DC8 - ldr r2, [r0, #4] - ldr r1, [r2, #4] - cmp r1, #3 - bne _0230DF50 - mov r1, #1 - strb r1, [r2, #0xc] - ldr r0, [r0] - bl ov11_022EF70C - mov r0, #1 - bl ov11_022EF53C - ldr r0, _0230DF58 ; =ov11_02324DC8 - mov r2, #1 - ldr r1, [r0, #4] - mov r0, #0x10 - strb r2, [r1] - bl ov11_022E9C98 - ldr r0, _0230DF58 ; =ov11_02324DC8 - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230DF50: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DF58: .word ov11_02324DC8 - arm_func_end ov11_0230DEF8 - - arm_func_start ov11_0230DF5C -ov11_0230DF5C: ; 0x0230DF5C - stmdb sp!, {r3, lr} - ldr r0, _0230DFDC ; =ov11_02324DC8 - ldr r2, [r0, #4] - ldrb r1, [r2] - cmp r1, #0 - ldrne r0, [r0] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r2, #8] - ldr r0, [r0, #4] - cmp r0, #0 - bne _0230DF98 - mov r0, #1 - mov r1, #2 - bl sub_02008F64 -_0230DF98: - ldr r0, _0230DFDC ; =ov11_02324DC8 - ldr r0, [r0, #4] - ldr r0, [r0, #8] - ldr r0, [r0] - cmp r0, #0 - bne _0230DFBC - mov r0, #1 - mov r1, #3 - bl sub_02008F64 -_0230DFBC: - ldr r0, _0230DFDC ; =ov11_02324DC8 - ldr r0, [r0] - bl ov11_022EFB70 - ldr r0, _0230DFDC ; =ov11_02324DC8 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230DFDC: .word ov11_02324DC8 - arm_func_end ov11_0230DF5C - - arm_func_start ov11_0230DFE0 -ov11_0230DFE0: ; 0x0230DFE0 - ldr ip, _0230DFEC ; =ov11_0230D270 - ldr r0, _0230DFF0 ; =ov11_02323284 - bx ip - .align 2, 0 -_0230DFEC: .word ov11_0230D270 -_0230DFF0: .word ov11_02323284 - arm_func_end ov11_0230DFE0 - - arm_func_start ov11_0230DFF4 -ov11_0230DFF4: ; 0x0230DFF4 - ldr ip, _0230E000 ; =ov11_0230D17C - ldr r0, _0230E004 ; =ov11_02323284 - bx ip - .align 2, 0 -_0230E000: .word ov11_0230D17C -_0230E004: .word ov11_02323284 - arm_func_end ov11_0230DFF4 - - arm_func_start ov11_0230E008 -ov11_0230E008: ; 0x0230E008 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #0xf - bl MemAlloc - ldr r1, _0230E05C ; =ov11_02324DD4 - str r0, [r1, #4] - bl ov11_0230E0D8 - mov r0, #0x10 - bl ov11_022E9D10 - ldr r1, _0230E05C ; =ov11_02324DD4 - mov r3, #0 - ldr r2, [r1, #4] - mov r0, #1 - strb r3, [r2, #8] - ldr r2, [r1, #4] - strb r0, [r2, #0xa] - ldr r2, [r1, #4] - strb r3, [r2, #0xb] - ldr r1, [r1, #4] - str r3, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E05C: .word ov11_02324DD4 - arm_func_end ov11_0230E008 - - arm_func_start ov11_0230E060 -ov11_0230E060: ; 0x0230E060 - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0230E08C - ldr r0, _0230E0D4 ; =ov11_02324DD4 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #7 - movne r0, #1 - strneb r0, [r1, #0xb] - movne r0, #0 - ldmneia sp!, {r3, pc} -_0230E08C: - bl ov11_0230E0D8 - ldr r0, _0230E0D4 ; =ov11_02324DD4 - mov r2, #7 - ldr r1, [r0, #4] - str r2, [r1, #4] - ldr r0, [r0, #4] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _0230E0B4 - bl sub_020483D8 -_0230E0B4: - ldr r0, _0230E0D4 ; =ov11_02324DD4 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0230E0D4 ; =ov11_02324DD4 - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E0D4: .word ov11_02324DD4 - arm_func_end ov11_0230E060 - - arm_func_start ov11_0230E0D8 -ov11_0230E0D8: ; 0x0230E0D8 - stmdb sp!, {r3, lr} - ldr r1, _0230E150 ; =ov11_02324DD4 - mov r3, #1 - ldr r0, [r1, #4] - mov r2, #0 - strb r2, [r0] - ldr r2, [r1, #4] - sub r0, r3, #2 - str r3, [r2, #4] - ldr r1, [r1, #4] - strb r3, [r1, #9] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _0230E150 ; =ov11_02324DD4 - ldr r0, [r0] - cmp r0, #0 - beq _0230E13C - bl GroundBg_FreeAll - ldr r0, _0230E150 ; =ov11_02324DD4 - ldr r0, [r0] - bl MemFree - ldr r0, _0230E150 ; =ov11_02324DD4 - mov r1, #0 - str r1, [r0] -_0230E13C: - ldr r0, _0230E150 ; =ov11_02324DD4 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0xa] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E150: .word ov11_02324DD4 - arm_func_end ov11_0230E0D8 - - arm_func_start ov11_0230E154 -ov11_0230E154: ; 0x0230E154 - ldr r0, _0230E170 ; =ov11_02324DD4 - ldr r1, [r0, #4] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #9] - bx lr - .align 2, 0 -_0230E170: .word ov11_02324DD4 - arm_func_end ov11_0230E154 - - arm_func_start ov11_0230E174 -ov11_0230E174: ; 0x0230E174 - bx lr - arm_func_end ov11_0230E174 - - arm_func_start ov11_0230E178 -ov11_0230E178: ; 0x0230E178 - stmdb sp!, {r3, lr} - ldr r0, _0230E340 ; =ov11_02324DD4 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0230E338 -_0230E194: ; jump table - b _0230E1B4 ; case 0 - b _0230E1DC ; case 1 - b _0230E338 ; case 2 - b _0230E338 ; case 3 - b _0230E26C ; case 4 - b _0230E298 ; case 5 - b _0230E2E4 ; case 6 - b _0230E328 ; case 7 -_0230E1B4: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230E340 ; =ov11_02324DD4 - mov r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _0230E338 - ldr r0, _0230E340 ; =ov11_02324DD4 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E1DC: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230E340 ; =ov11_02324DD4 - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _0230E338 - ldr r0, _0230E340 ; =ov11_02324DD4 - ldr r2, [r0, #4] - ldrb r1, [r2, #0xb] - cmp r1, #0 - beq _0230E234 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230E340 ; =ov11_02324DD4 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #6 - strb r3, [r2, #9] - ldr r0, [r0, #4] - str r1, [r0, #4] - b _0230E338 -_0230E234: - ldrb r1, [r2, #0xa] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #9] - beq _0230E338 - mov r1, #1 - strb r1, [r2, #9] - ldr r1, [r0, #4] - mov r2, #0 - strb r2, [r1, #0xa] - ldr r0, [r0, #4] - mov r1, #2 - str r1, [r0, #4] - b _0230E338 -_0230E26C: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230E340 ; =ov11_02324DD4 - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _0230E338 - ldr r0, _0230E340 ; =ov11_02324DD4 - mov r1, #5 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E298: - ldr r0, _0230E340 ; =ov11_02324DD4 - ldr r1, [r0, #4] - ldrb r0, [r1, #0xb] - cmp r0, #0 - ldreqb r0, [r1, #0xa] - cmpeq r0, #0 - moveq r0, #0 - streqb r0, [r1, #9] - beq _0230E338 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230E340 ; =ov11_02324DD4 - mov r3, #0 - ldr r2, [r0, #4] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0, #4] - strb r1, [r0, #9] - b _0230E338 -_0230E2E4: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230E338 - ldr r0, _0230E340 ; =ov11_02324DD4 - ldr r0, [r0, #4] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _0230E318 - bl sub_020483D8 - ldr r0, _0230E340 ; =ov11_02324DD4 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #8] -_0230E318: - ldr r0, _0230E340 ; =ov11_02324DD4 - mov r1, #7 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E328: - ldr r0, _0230E340 ; =ov11_02324DD4 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #9] -_0230E338: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E340: .word ov11_02324DD4 - arm_func_end ov11_0230E178 - - arm_func_start ov11_0230E344 -ov11_0230E344: ; 0x0230E344 - stmdb sp!, {r3, lr} - ldr r0, _0230E3D8 ; =ov11_02324DD4 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #2 - ldmneia sp!, {r3, pc} - mov r0, #1 - strb r0, [r1, #9] - bl ov11_0230E0D8 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _0230E3D8 ; =ov11_02324DD4 - ldr r1, _0230E3DC ; =ov11_02323268 - str r0, [r2] - bl GroundBg_Init - ldr r0, _0230E3D8 ; =ov11_02324DD4 - ldr r1, _0230E3E0 ; =ov11_023232A8 - ldr r0, [r0] - mov r2, #0 - bl ov11_022EDE64 - ldr r0, _0230E3D8 ; =ov11_02324DD4 - ldr r0, [r0, #4] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _0230E3C4 - bl sub_02048384 - bl sub_020483B8 - ldr r0, _0230E3D8 ; =ov11_02324DD4 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #8] -_0230E3C4: - ldr r0, _0230E3D8 ; =ov11_02324DD4 - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E3D8: .word ov11_02324DD4 -_0230E3DC: .word ov11_02323268 -_0230E3E0: .word ov11_023232A8 - arm_func_end ov11_0230E344 - - arm_func_start ov11_0230E3E4 -ov11_0230E3E4: ; 0x0230E3E4 - stmdb sp!, {r3, lr} - ldr r0, _0230E430 ; =ov11_02324DD4 - ldr r1, [r0, #4] - ldr r1, [r1, #4] - cmp r1, #3 - bne _0230E428 - ldr r0, [r0] - bl ov11_022EF70C - mov r0, #1 - bl ov11_022EF53C - ldr r0, _0230E430 ; =ov11_02324DD4 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #4 - strb r3, [r2] - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E428: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E430: .word ov11_02324DD4 - arm_func_end ov11_0230E3E4 - - arm_func_start ov11_0230E434 -ov11_0230E434: ; 0x0230E434 - stmdb sp!, {r3, lr} - ldr r0, _0230E474 ; =ov11_02324DD4 - ldr r1, [r0, #4] - ldrb r1, [r1] - cmp r1, #0 - ldrne r0, [r0] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_022EFB70 - ldr r0, _0230E474 ; =ov11_02324DD4 - mov r2, #0 - ldr r1, [r0, #4] - mov r0, #0x10 - strb r2, [r1] - bl ov11_022E9C98 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E474: .word ov11_02324DD4 - arm_func_end ov11_0230E434 - - arm_func_start ov11_0230E478 -ov11_0230E478: ; 0x0230E478 - ldr ip, _0230E484 ; =ov11_0230D270 - ldr r0, _0230E488 ; =ov11_023232D8 - bx ip - .align 2, 0 -_0230E484: .word ov11_0230D270 -_0230E488: .word ov11_023232D8 - arm_func_end ov11_0230E478 - - arm_func_start ov11_0230E48C -ov11_0230E48C: ; 0x0230E48C - ldr ip, _0230E498 ; =ov11_0230D17C - ldr r0, _0230E49C ; =ov11_023232D8 - bx ip - .align 2, 0 -_0230E498: .word ov11_0230D17C -_0230E49C: .word ov11_023232D8 - arm_func_end ov11_0230E48C - - arm_func_start ov11_0230E4A0 -ov11_0230E4A0: ; 0x0230E4A0 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #0xf - bl MemAlloc - ldr r1, _0230E4F8 ; =ov11_02324DDC - str r0, [r1, #4] - bl ov11_0230E578 - mov r0, #0x10 - bl ov11_022E9D10 - ldr r1, _0230E4F8 ; =ov11_02324DDC - mvn r3, #1 - ldr r2, [r1, #4] - mov r0, #1 - strb r3, [r2, #8] - ldr r2, [r1, #4] - mov r3, #0 - strb r0, [r2, #0xa] - ldr r2, [r1, #4] - strb r3, [r2, #0xb] - ldr r1, [r1, #4] - str r3, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E4F8: .word ov11_02324DDC - arm_func_end ov11_0230E4A0 - - arm_func_start ov11_0230E4FC -ov11_0230E4FC: ; 0x0230E4FC - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0230E528 - ldr r0, _0230E574 ; =ov11_02324DDC - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #8 - movne r0, #1 - strneb r0, [r1, #0xb] - movne r0, #0 - ldmneia sp!, {r3, pc} -_0230E528: - bl ov11_0230E578 - ldr r0, _0230E574 ; =ov11_02324DDC - mov r3, #8 - ldr r2, [r0, #4] - sub r1, r3, #0xa - str r3, [r2, #4] - ldr r0, [r0, #4] - ldrsb r0, [r0, #8] - cmp r0, r1 - beq _0230E554 - bl CloseControlsChart -_0230E554: - ldr r0, _0230E574 ; =ov11_02324DDC - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0230E574 ; =ov11_02324DDC - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E574: .word ov11_02324DDC - arm_func_end ov11_0230E4FC - - arm_func_start ov11_0230E578 -ov11_0230E578: ; 0x0230E578 - stmdb sp!, {r3, lr} - ldr r1, _0230E5F0 ; =ov11_02324DDC - mov r3, #1 - ldr r0, [r1, #4] - mov r2, #0 - strb r2, [r0] - ldr r2, [r1, #4] - sub r0, r3, #2 - str r3, [r2, #4] - ldr r1, [r1, #4] - strb r3, [r1, #9] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _0230E5F0 ; =ov11_02324DDC - ldr r0, [r0] - cmp r0, #0 - beq _0230E5DC - bl GroundBg_FreeAll - ldr r0, _0230E5F0 ; =ov11_02324DDC - ldr r0, [r0] - bl MemFree - ldr r0, _0230E5F0 ; =ov11_02324DDC - mov r1, #0 - str r1, [r0] -_0230E5DC: - ldr r0, _0230E5F0 ; =ov11_02324DDC - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0xa] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E5F0: .word ov11_02324DDC - arm_func_end ov11_0230E578 - - arm_func_start ov11_0230E5F4 -ov11_0230E5F4: ; 0x0230E5F4 - ldr r0, _0230E610 ; =ov11_02324DDC - ldr r1, [r0, #4] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #9] - bx lr - .align 2, 0 -_0230E610: .word ov11_02324DDC - arm_func_end ov11_0230E5F4 - - arm_func_start ov11_0230E614 -ov11_0230E614: ; 0x0230E614 - bx lr - arm_func_end ov11_0230E614 - - arm_func_start HandleControlsTopScreenGround -HandleControlsTopScreenGround: ; 0x0230E618 - stmdb sp!, {r3, lr} - ldr r0, _0230E7E8 ; =ov11_02324DDC - ldr r0, [r0, #4] - ldr r0, [r0, #4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _0230E7E0 -_0230E634: ; jump table - b _0230E658 ; case 0 - b _0230E680 ; case 1 - b _0230E7E0 ; case 2 - b _0230E7E0 ; case 3 - b _0230E7E0 ; case 4 - b _0230E710 ; case 5 - b _0230E73C ; case 6 - b _0230E788 ; case 7 - b _0230E7D0 ; case 8 -_0230E658: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230E7E8 ; =ov11_02324DDC - mov r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _0230E7E0 - ldr r0, _0230E7E8 ; =ov11_02324DDC - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E680: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230E7E8 ; =ov11_02324DDC - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _0230E7E0 - ldr r0, _0230E7E8 ; =ov11_02324DDC - ldr r2, [r0, #4] - ldrb r1, [r2, #0xb] - cmp r1, #0 - beq _0230E6D8 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230E7E8 ; =ov11_02324DDC - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #7 - strb r3, [r2, #9] - ldr r0, [r0, #4] - str r1, [r0, #4] - b _0230E7E0 -_0230E6D8: - ldrb r1, [r2, #0xa] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #9] - beq _0230E7E0 - mov r1, #1 - strb r1, [r2, #9] - ldr r1, [r0, #4] - mov r2, #0 - strb r2, [r1, #0xa] - ldr r0, [r0, #4] - mov r1, #2 - str r1, [r0, #4] - b _0230E7E0 -_0230E710: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _0230E7E8 ; =ov11_02324DDC - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _0230E7E0 - ldr r0, _0230E7E8 ; =ov11_02324DDC - mov r1, #6 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E73C: - ldr r0, _0230E7E8 ; =ov11_02324DDC - ldr r1, [r0, #4] - ldrb r0, [r1, #0xb] - cmp r0, #0 - ldreqb r0, [r1, #0xa] - cmpeq r0, #0 - moveq r0, #0 - streqb r0, [r1, #9] - beq _0230E7E0 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _0230E7E8 ; =ov11_02324DDC - mov r3, #0 - ldr r2, [r0, #4] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0, #4] - strb r1, [r0, #9] - b _0230E7E0 -_0230E788: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230E7E0 - ldr r0, _0230E7E8 ; =ov11_02324DDC - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #8] - cmp r0, r1 - beq _0230E7C0 - bl CloseControlsChart - ldr r0, _0230E7E8 ; =ov11_02324DDC - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #8] -_0230E7C0: - ldr r0, _0230E7E8 ; =ov11_02324DDC - mov r1, #8 - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E7D0: - ldr r0, _0230E7E8 ; =ov11_02324DDC - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #9] -_0230E7E0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E7E8: .word ov11_02324DDC - arm_func_end HandleControlsTopScreenGround - - arm_func_start ov11_0230E7EC -ov11_0230E7EC: ; 0x0230E7EC - stmdb sp!, {r3, lr} - ldr r0, _0230E8C0 ; =ov11_02324DDC - ldr r3, [r0, #4] - ldr r1, [r3, #4] - cmp r1, #2 - bne _0230E854 - mov r2, #1 - strb r2, [r3, #9] - ldr r1, [r0, #4] - sub r0, r2, #3 - ldrsb r1, [r1, #8] - cmp r1, r0 - bne _0230E840 - mov r0, #0 - ldr r3, _0230E8C4 ; =0x00003FCA - mov r1, r0 - mov r2, r0 - bl CreateControlsChart - ldr r1, _0230E8C0 ; =ov11_02324DDC - ldr r1, [r1, #4] - strb r0, [r1, #8] -_0230E840: - ldr r0, _0230E8C0 ; =ov11_02324DDC - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] - ldmia sp!, {r3, pc} -_0230E854: - cmp r1, #3 - ldmneia sp!, {r3, pc} - mov r1, #1 - strb r1, [r3, #9] - ldr r0, [r0, #4] - ldrsb r0, [r0, #8] - bl IsControlsChartActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov11_0230E578 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _0230E8C0 ; =ov11_02324DDC - ldr r1, _0230E8C8 ; =ov11_023232BC - str r0, [r2] - bl GroundBg_Init - ldr r0, _0230E8C0 ; =ov11_02324DDC - ldr r1, _0230E8CC ; =ov11_023232FC - ldr r0, [r0] - mov r2, #0 - bl ov11_022EDE64 - ldr r0, _0230E8C0 ; =ov11_02324DDC - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E8C0: .word ov11_02324DDC -#if defined(EUROPE) -_0230E8C4: .word 0x00003FCC -#elif defined(JAPAN) -_0230E8C4: .word 0x000049CD -#else -_0230E8C4: .word 0x00003FCA -#endif -_0230E8C8: .word ov11_023232BC -_0230E8CC: .word ov11_023232FC - arm_func_end ov11_0230E7EC - - arm_func_start ov11_0230E8D0 -ov11_0230E8D0: ; 0x0230E8D0 - stmdb sp!, {r3, lr} - ldr r0, _0230E91C ; =ov11_02324DDC - ldr r1, [r0, #4] - ldr r1, [r1, #4] - cmp r1, #4 - bne _0230E914 - ldr r0, [r0] - bl ov11_022EF70C - mov r0, #1 - bl ov11_022EF53C - ldr r0, _0230E91C ; =ov11_02324DDC - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #5 - strb r3, [r2] - ldr r0, [r0, #4] - str r1, [r0, #4] -_0230E914: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E91C: .word ov11_02324DDC - arm_func_end ov11_0230E8D0 - - arm_func_start ov11_0230E920 -ov11_0230E920: ; 0x0230E920 - stmdb sp!, {r3, lr} - ldr r0, _0230E960 ; =ov11_02324DDC - ldr r1, [r0, #4] - ldrb r1, [r1] - cmp r1, #0 - ldrne r0, [r0] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_022EFB70 - ldr r0, _0230E960 ; =ov11_02324DDC - mov r2, #0 - ldr r1, [r0, #4] - mov r0, #0x10 - strb r2, [r1] - bl ov11_022E9C98 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230E960: .word ov11_02324DDC - arm_func_end ov11_0230E920 - - arm_func_start ov11_0230E964 -ov11_0230E964: ; 0x0230E964 - ldr ip, _0230E970 ; =ov11_0230D270 - ldr r0, _0230E974 ; =ov11_02323350 - bx ip - .align 2, 0 -_0230E970: .word ov11_0230D270 -_0230E974: .word ov11_02323350 - arm_func_end ov11_0230E964 - - arm_func_start ov11_0230E978 -ov11_0230E978: ; 0x0230E978 - stmdb sp!, {r3, lr} - ldr r0, _0230EB50 ; =0x0000FF94 - mov r1, #0xf - bl MemAlloc - ldr r1, _0230EB54 ; =WORLD_MAP_MODE - str r0, [r1, #8] - bl GetExecuteSpecialEpisodeType - mvn r1, #0 - cmp r0, r1 - ldr r0, _0230EB54 ; =WORLD_MAP_MODE - movne r2, #1 - mov ip, #1 - ldr r1, [r0, #8] - moveq r2, #0 - strb r2, [r1] - ldr r1, [r0, #8] - sub r3, ip, #2 - strb ip, [r1, #0xc] - ldr r1, [r0, #8] - mov r2, #0 - strh r3, [r1, #2] - ldr r1, [r0, #8] - strb r2, [r1, #4] - ldr r1, [r0, #8] - strb r2, [r1, #5] - ldr r1, [r0, #8] - ldrb r0, [r1] - cmp r0, #0 - addne r0, r1, #0xf000 - strneb r2, [r0, #0x999] - bne _0230EA08 - bl sub_0204CDCC - ldr r1, _0230EB54 ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - add r1, r1, #0xf000 - strb r0, [r1, #0x999] -_0230EA08: - ldr ip, _0230EB54 ; =WORLD_MAP_MODE - mvn r0, #0 - ldr r2, [ip, #8] - mov r1, #0 - add r2, r2, #0xf900 - strh r0, [r2, #0x9c] - ldr r2, [ip, #8] - ldr r3, _0230EB58 ; =0x00000136 - add r2, r2, #0xf900 - strh r0, [r2, #0x9e] - ldr r2, [ip, #8] - add r2, r2, #0xf000 - strb r1, [r2, #0xe8c] - ldr r2, [ip, #8] - add r2, r2, #0xf000 - strb r1, [r2, #0xe88] - ldr r2, [ip, #8] - add r2, r2, #0xf000 - strb r1, [r2, #0x9ac] -_0230EA54: - ldr r2, [ip, #8] - add r2, r2, r1, lsl #2 - add r2, r2, #0xf000 - add r1, r1, #1 - str r0, [r2, #0x9b0] - cmp r1, r3 - blt _0230EA54 - ldr r2, _0230EB54 ; =WORLD_MAP_MODE - mov ip, #0 - ldr r1, [r2, #8] - sub r3, ip, #2 - add r1, r1, #0xf000 - strb ip, [r1, #0xf90] - ldr r1, [r2, #8] - add r1, r1, #0xf000 - strb r3, [r1, #0x998] - ldr r1, [r2, #8] - str ip, [r1, #0x2c] - bl ov11_022F4734 - mov r0, #0 - bl ov11_02312844 - bl ov11_0230EC00 - bl GetMainCharacter1 - ldr r1, _0230EB54 ; =WORLD_MAP_MODE - ldrsh r2, [r0, #4] - ldr r0, [r1, #8] - mov r3, #0 - add r0, r0, #0x500 - strh r2, [r0, #0x2e] - ldr r0, [r1, #8] - ldr r2, _0230EB5C ; =0xA0080000 - strb r3, [r0, #0x530] - ldr r1, [r1, #8] - add r0, r1, #0x134 - add r0, r0, #0x400 - add r1, r1, #0x500 - ldrsh r1, [r1, #0x2e] - bl ov11_022F5BBC - ldr r0, _0230EB54 ; =WORLD_MAP_MODE - mov r1, #0xa - ldr r0, [r0, #8] - add r0, r0, #0x134 - add r0, r0, #0x400 - bl ov11_022F4974 - ldr r0, _0230EB54 ; =WORLD_MAP_MODE - mov r1, #0x9b - ldr r0, [r0, #8] - ldr r2, _0230EB5C ; =0xA0080000 - add r0, r0, #0x1f8 - add r0, r0, #0x400 - bl LoadObjectAnimData - ldr r0, _0230EB54 ; =WORLD_MAP_MODE - mov r1, #8 - ldr r0, [r0, #8] - add r0, r0, #0x1f8 - add r0, r0, #0x400 - bl ov11_022F4974 - mov r2, #0 - ldr r1, _0230EB54 ; =WORLD_MAP_MODE - mov r0, #1 - ldr r1, [r1, #8] - strb r2, [r1, #0x6bc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230EB50: .word 0x0000FF94 -_0230EB54: .word WORLD_MAP_MODE -_0230EB58: .word 0x00000136 -_0230EB5C: .word 0xA0080000 - arm_func_end ov11_0230E978 - - arm_func_start ov11_0230EB60 -ov11_0230EB60: ; 0x0230EB60 - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0230EB90 - ldr r0, _0230EBFC ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldr r0, [r1, #8] - cmp r0, #9 - addne r0, r1, #0xf000 - movne r1, #1 - strneb r1, [r0, #0xf90] - movne r0, #0 - ldmneia sp!, {r3, pc} -_0230EB90: - bl ov11_0230EC00 - bl ov11_02312894 - ldr r0, _0230EBFC ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - add r0, r0, #0x134 - add r0, r0, #0x400 - bl ov11_022F5C3C - ldr r0, _0230EBFC ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - add r0, r0, #0x1f8 - add r0, r0, #0x400 - bl ov11_022F6EFC - ldr r0, _0230EBFC ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldrb r0, [r1, #0x6bc] - cmp r0, #0 - beq _0230EBDC - add r0, r1, #0x6c0 - bl ov11_022F6EFC -_0230EBDC: - ldr r0, _0230EBFC ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - bl MemFree - ldr r0, _0230EBFC ; =WORLD_MAP_MODE - mov r1, #0 - str r1, [r0, #8] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230EBFC: .word WORLD_MAP_MODE - arm_func_end ov11_0230EB60 - - arm_func_start ov11_0230EC00 -ov11_0230EC00: ; 0x0230EC00 - stmdb sp!, {r3, lr} - ldr r0, _0230ED20 ; =WORLD_MAP_MODE - mov r3, #1 - ldr r1, [r0, #8] - mov r2, #0 - strb r2, [r1, #6] - ldr r2, [r0, #8] - sub r1, r3, #3 - str r3, [r2, #8] - ldr r2, [r0, #8] - strb r3, [r2, #0xc] - ldr r0, [r0, #8] - add r0, r0, #0xf900 - ldrsb r0, [r0, #0x98] - cmp r0, r1 - beq _0230EC58 - bl CloseAreaNameBox - ldr r0, _0230ED20 ; =WORLD_MAP_MODE - mvn r1, #1 - ldr r0, [r0, #8] - add r0, r0, #0xf000 - strb r1, [r0, #0x998] -_0230EC58: - mov ip, #0 - ldr r2, _0230ED20 ; =WORLD_MAP_MODE - ldr r1, _0230ED24 ; =0x00000136 - mov r0, ip -_0230EC68: - ldr r3, [r2, #8] - add r3, r3, ip, lsl #2 - add ip, ip, #1 - str r0, [r3, #0x54] - cmp ip, r1 - blt _0230EC68 - ldr r1, _0230ED20 ; =WORLD_MAP_MODE - mvn r2, #0 - ldr r1, [r1, #8] - add r1, r1, #0x500 - strh r2, [r1, #0x2c] - bl ov11_023128C0 - ldr r1, _0230ED20 ; =WORLD_MAP_MODE - mvn ip, #0 - ldr r0, [r1, #8] - mov r3, #0 - strh ip, [r0, #0x30] - ldr r2, [r1, #8] - mov r0, #1 - str r3, [r2, #0x34] - ldr r2, [r1, #8] - str r3, [r2, #0x38] - ldr r2, [r1, #8] - str r3, [r2, #0x3c] - ldr r2, [r1, #8] - str r3, [r2, #0x40] - ldr r2, [r1, #8] - str r3, [r2, #0x44] - ldr r1, [r1, #8] - strb ip, [r1, #0x50] - bl ov11_022EAFF8 - mov r0, #1 - mov r1, #6 - bl ov11_022EB0C0 - ldr r0, _0230ED20 ; =WORLD_MAP_MODE - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GroundBg_FreeAll - ldr r0, _0230ED20 ; =WORLD_MAP_MODE - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0230ED20 ; =WORLD_MAP_MODE - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230ED20: .word WORLD_MAP_MODE -_0230ED24: .word 0x00000136 - arm_func_end ov11_0230EC00 - - arm_func_start ov11_0230ED28 -ov11_0230ED28: ; 0x0230ED28 - ldr r0, _0230ED44 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0230ED44: .word WORLD_MAP_MODE - arm_func_end ov11_0230ED28 - - arm_func_start GetDungeonMapPos -GetDungeonMapPos: ; 0x0230ED48 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0230EDAC ; =WORLD_MAP_MODE - mov r4, r0 - ldr r2, [r2, #8] - mov r0, r1 - ldrsh r1, [r2, #2] - add r2, sp, #0 - bl sub_0206A96C - mvn r1, #0 - cmp r0, r1 - beq _0230EDA0 - ldr r0, [sp] - cmp r0, #0 - blt _0230EDA0 - mov r0, r0, lsl #8 - str r0, [r4] - ldr r1, [sp, #4] - mov r0, #1 - mov r1, r1, lsl #8 - str r1, [r4, #4] - b _0230EDA4 -_0230EDA0: - mov r0, #0 -_0230EDA4: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230EDAC: .word WORLD_MAP_MODE - arm_func_end GetDungeonMapPos - - arm_func_start ov11_0230EDB0 -ov11_0230EDB0: ; 0x0230EDB0 - ldr r1, _0230EDD8 ; =WORLD_MAP_MODE - mov r3, #0 - ldr r2, [r1, #8] - str r3, [r2, #0x34] - ldr r2, [r1, #8] - ldr r1, [r0] - ldr r0, [r0, #4] - str r1, [r2, #0x48] - str r0, [r2, #0x4c] - bx lr - .align 2, 0 -_0230EDD8: .word WORLD_MAP_MODE - arm_func_end ov11_0230EDB0 - - arm_func_start ov11_0230EDDC -ov11_0230EDDC: ; 0x0230EDDC - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _0230EF44 ; =WORLD_MAP_MODE - mov r0, #0 - ldr r1, [r1, #8] - sub r2, r0, #1 - add r1, r1, #0xf900 - ldrsh r1, [r1, #0x9c] - cmp r1, r2 - beq _0230EE74 - add r0, sp, #0 - bl GetDungeonMapPos - cmp r0, #0 - beq _0230EE5C - mov r0, #1 - mov r1, #6 - bl ov11_022EB0C0 - ldr r1, _0230EF44 ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - add r0, r2, #0xf900 - ldrsh r0, [r0, #0x9c] - strh r0, [r2, #0x30] - ldr r0, [r1, #8] - ldr r0, [r0, #0x2c] - cmp r0, #0 - cmpne r0, #1 - beq _0230EE54 - add r1, sp, #0 - mov r0, #1 - bl ov11_022EB2F4 -_0230EE54: - add r0, sp, #0 - bl ov11_0230EDB0 -_0230EE5C: - ldr r0, _0230EF44 ; =WORLD_MAP_MODE - mvn r2, #0 - ldr r1, [r0, #8] - mov r0, #1 - add r1, r1, #0xf900 - strh r2, [r1, #0x9c] -_0230EE74: - ldr r1, _0230EF44 ; =WORLD_MAP_MODE - mvn r2, #0 - ldr r1, [r1, #8] - add r1, r1, #0xf900 - ldrsh r1, [r1, #0x9e] - cmp r1, r2 - beq _0230EF3C - add r0, sp, #0 - bl GetDungeonMapPos - cmp r0, #0 - beq _0230EF24 - mov r0, #1 - mov r1, #6 - bl ov11_022EB0C0 - ldr r1, _0230EF44 ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - add r0, r2, #0xf900 - ldrsh r0, [r0, #0x9e] - strh r0, [r2, #0x30] - ldr r0, [r1, #8] - ldr r0, [r0, #0x2c] - cmp r0, #0 - cmpne r0, #1 - beq _0230EEE0 - add r1, sp, #0 - mov r0, #1 - bl ov11_022EB2F4 -_0230EEE0: - ldr r1, _0230EF44 ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - add r0, r2, #0xf000 - ldr r0, [r0, #0x9a0] - str r0, [r2, #0x34] - ldr ip, [r1, #8] - ldr r3, [sp] - ldr r2, [sp, #4] - add r0, ip, #0xf000 - str r3, [ip, #0x48] - str r2, [ip, #0x4c] - ldr r0, [r0, #0x9a4] - str r0, [ip, #0x38] - ldr r1, [r1, #8] - add r0, r1, #0xf000 - ldr r0, [r0, #0x9a8] - str r0, [r1, #0x3c] -_0230EF24: - ldr r0, _0230EF44 ; =WORLD_MAP_MODE - mvn r2, #0 - ldr r1, [r0, #8] - mov r0, #1 - add r1, r1, #0xf900 - strh r2, [r1, #0x9e] -_0230EF3C: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230EF44: .word WORLD_MAP_MODE - arm_func_end ov11_0230EDDC - - arm_func_start ov11_0230EF48 -ov11_0230EF48: ; 0x0230EF48 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r3, _0230EFFC ; =WORLD_MAP_MODE - mov r4, r2 - ldr r2, [r3, #8] - mov r5, r1 - ldrsh r1, [r2, #2] - add r2, sp, #0 - bl sub_0206A96C - mvn r1, #0 - cmp r0, r1 - cmpne r5, #0 - beq _0230EFF4 - ldr r1, _0230EFFC ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - add r1, r1, r0, lsl #2 - ldr r1, [r1, #0x54] - cmp r1, r5 - blt _0230EF9C - cmp r4, #0 - beq _0230EFF4 -_0230EF9C: - ldr r2, _0230EFFC ; =WORLD_MAP_MODE - mov r1, #0xc4 - ldr r3, [r2, #8] - mul r4, r0, r1 - add r0, r3, r0, lsl #2 - str r5, [r0, #0x54] - ldr r1, [r2, #8] - add r0, r3, #0x384 - add r6, r0, #0x400 - add r1, r1, #0x1f8 - add r0, r6, r4 - add r1, r1, #0x400 - bl InitAnimDataFromOtherAnimDataVeneer - add r0, r6, r4 - mov r1, #8 - bl ov11_022F4974 - ldr r0, _0230F000 ; =ov11_02323310 - mov r1, r5, lsl #1 - ldrsh r1, [r0, r1] - add r0, r6, r4 - mov r2, #0 - bl SetAnimDataFields2 -_0230EFF4: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230EFFC: .word WORLD_MAP_MODE -_0230F000: .word ov11_02323310 - arm_func_end ov11_0230EF48 - - arm_func_start WorldMapSetMode -WorldMapSetMode: ; 0x0230F004 - ldr r1, _0230F04C ; =WORLD_MAP_MODE - str r0, [r1] - ldr r3, [r1, #8] - cmp r3, #0 - ldrne r2, [r3, #0x2c] - cmpne r2, r0 - bxeq lr - ldrsb r2, [r3, #4] - add r0, r3, #0xf000 - mov r3, #0 - strb r2, [r0, #0x999] - ldr r0, [r1, #8] - mov r2, #1 - add r0, r0, #0xf000 - strb r3, [r0, #0x99a] - ldr r0, [r1, #8] - strb r2, [r0, #0xc] - bx lr - .align 2, 0 -_0230F04C: .word WORLD_MAP_MODE - arm_func_end WorldMapSetMode - - arm_func_start ov11_0230F050 -ov11_0230F050: ; 0x0230F050 - ldr r2, _0230F088 ; =WORLD_MAP_MODE - ldr r1, [r2, #8] - cmp r1, #0 - bxeq lr - add r1, r1, #0xf000 - strb r0, [r1, #0x999] - ldr r0, [r2, #8] - mov r1, #0 - add r0, r0, #0xf000 - strb r1, [r0, #0x99a] - ldr r0, [r2, #8] - mov r1, #1 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 -_0230F088: .word WORLD_MAP_MODE - arm_func_end ov11_0230F050 - - arm_func_start ov11_0230F08C -ov11_0230F08C: ; 0x0230F08C - ldr r2, _0230F0C0 ; =WORLD_MAP_MODE - ldr r1, [r2, #8] - cmp r1, #0 - bxeq lr - add r1, r1, #0xf000 - strb r0, [r1, #0x999] - ldr r0, [r2, #8] - mov r1, #1 - add r0, r0, #0xf000 - strb r1, [r0, #0x99a] - ldr r0, [r2, #8] - strb r1, [r0, #0xc] - bx lr - .align 2, 0 -_0230F0C0: .word WORLD_MAP_MODE - arm_func_end ov11_0230F08C - - arm_func_start WorldMapSetCamera -WorldMapSetCamera: ; 0x0230F0C4 - ldr r2, _0230F0E8 ; =WORLD_MAP_MODE - ldr r1, [r2, #8] - cmp r1, #0 - addne r1, r1, #0xf900 - strneh r0, [r1, #0x9c] - ldrne r0, [r2, #8] - movne r1, #1 - strneb r1, [r0, #0xc] - bx lr - .align 2, 0 -_0230F0E8: .word WORLD_MAP_MODE - arm_func_end WorldMapSetCamera - - arm_func_start ov11_0230F0EC -ov11_0230F0EC: ; 0x0230F0EC - ldr r2, _0230F134 ; =WORLD_MAP_MODE - ldr r1, [r2, #8] - cmp r1, #0 - bxeq lr - add r1, r1, #0xf900 - strh r0, [r1, #0x9e] - ldr r0, [r2, #8] - mov r1, #2 - add r0, r0, #0xf000 - str r1, [r0, #0x9a0] - ldr r0, [r2, #8] - mov r1, #0x200 - add r0, r0, #0xf000 - str r1, [r0, #0x9a4] - ldr r0, [r2, #8] - mov r1, #1 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 -_0230F134: .word WORLD_MAP_MODE - arm_func_end ov11_0230F0EC - - arm_func_start ov11_0230F138 -ov11_0230F138: ; 0x0230F138 - ldr r3, _0230F17C ; =WORLD_MAP_MODE - ldr r2, [r3, #8] - cmp r2, #0 - bxeq lr - add r2, r2, #0xf900 - strh r0, [r2, #0x9e] - ldr r0, [r3, #8] - mov r2, #3 - add r0, r0, #0xf000 - str r2, [r0, #0x9a0] - ldr r0, [r3, #8] - mov r2, #1 - add r0, r0, #0xf000 - str r1, [r0, #0x9a8] - ldr r0, [r3, #8] - strb r2, [r0, #0xc] - bx lr - .align 2, 0 -_0230F17C: .word WORLD_MAP_MODE - arm_func_end ov11_0230F138 - - arm_func_start ov11_0230F180 -ov11_0230F180: ; 0x0230F180 - ldr r1, _0230F1B0 ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - cmp r2, #0 - bxeq lr - add r0, r2, r0, lsl #2 - add r0, r0, #0xf000 - mov r2, #1 - str r2, [r0, #0x9b0] - ldr r0, [r1, #8] - add r0, r0, #0xf000 - strb r2, [r0, #0x9ac] - bx lr - .align 2, 0 -_0230F1B0: .word WORLD_MAP_MODE - arm_func_end ov11_0230F180 - - arm_func_start ov11_0230F1B4 -ov11_0230F1B4: ; 0x0230F1B4 - ldr r1, _0230F1E8 ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - cmp r2, #0 - bxeq lr - add r0, r2, r0, lsl #2 - add r0, r0, #0xf000 - mov r2, #2 - str r2, [r0, #0x9b0] - ldr r0, [r1, #8] - mov r1, #1 - add r0, r0, #0xf000 - strb r1, [r0, #0x9ac] - bx lr - .align 2, 0 -_0230F1E8: .word WORLD_MAP_MODE - arm_func_end ov11_0230F1B4 - - arm_func_start ov11_0230F1EC -ov11_0230F1EC: ; 0x0230F1EC - ldr r2, _0230F218 ; =WORLD_MAP_MODE - ldr r1, [r2, #8] - cmp r1, #0 - bxeq lr - add r1, r1, #0xfe00 - strh r0, [r1, #0x8a] - ldr r0, [r2, #8] - mov r1, #1 - add r0, r0, #0xf000 - strb r1, [r0, #0xe88] - bx lr - .align 2, 0 -_0230F218: .word WORLD_MAP_MODE - arm_func_end ov11_0230F1EC - - arm_func_start ov11_0230F21C -ov11_0230F21C: ; 0x0230F21C - ldr r2, _0230F258 ; =WORLD_MAP_MODE - ldr r1, [r2, #8] - cmp r1, #0 - bxeq lr - add r1, r1, #0xf000 - mov r3, #1 - strb r3, [r1, #0xe8c] - ldr r1, [r2, #8] - mov r3, #0 - add r1, r1, #0xfe00 - strh r0, [r1, #0x8e] - ldr r0, [r2, #8] - add r0, r0, #0xf000 - strb r3, [r0, #0xe90] - bx lr - .align 2, 0 -_0230F258: .word WORLD_MAP_MODE - arm_func_end ov11_0230F21C - - arm_func_start ov11_0230F25C -ov11_0230F25C: ; 0x0230F25C - ldr r1, _0230F288 ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - cmp r1, #0 - moveq r0, #0 - bxeq lr - ldr r2, [r1, #0x40] - ldr r1, [r1, #0x44] - str r2, [r0] - str r1, [r0, #4] - mov r0, #1 - bx lr - .align 2, 0 -_0230F288: .word WORLD_MAP_MODE - arm_func_end ov11_0230F25C - - arm_func_start ov11_0230F28C -ov11_0230F28C: ; 0x0230F28C - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0230F358 ; =WORLD_MAP_MODE - mov r5, r0 - ldr r0, [r2, #4] - mov r4, r1 - cmp r0, #0 - beq _0230F350 - ldr r1, [r2, #8] - ldrsh r2, [r1, #2] - cmp r2, #0x10c - bne _0230F2E0 - mov r0, #0x8000 - str r0, [r5] - mov r0, #0x6000 - str r0, [r5, #4] - mov r0, #0x17800 - str r0, [r4] - mov r0, #0xf000 - str r0, [r4, #4] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0230F2E0: - mvn r1, #0 - cmp r2, r1 - beq _0230F350 - mov r1, r5 - mov r2, r4 - bl ov11_022EF498 - ldr r0, [r5] - add r0, r0, #0x8000 - str r0, [r5] - ldr r0, [r5, #4] - add r0, r0, #0x6000 - str r0, [r5, #4] - ldr r0, [r4] - sub r0, r0, #0x8000 - str r0, [r4] - ldr r0, [r4, #4] - sub r0, r0, #0x6000 - str r0, [r4, #4] - ldr r1, [r5] - ldr r0, [r4] - cmp r1, r0 - strgt r1, [r4] - ldr r1, [r5, #4] - ldr r0, [r4, #4] - cmp r1, r0 - strgt r1, [r4, #4] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0230F350: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230F358: .word WORLD_MAP_MODE - arm_func_end ov11_0230F28C - - arm_func_start ov11_0230F35C -ov11_0230F35C: ; 0x0230F35C - ldr r0, _0230F374 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - cmp r0, #0 - ldrneb r0, [r0, #0xc] - moveq r0, #0 - bx lr - .align 2, 0 -_0230F374: .word WORLD_MAP_MODE - arm_func_end ov11_0230F35C - - arm_func_start ov11_0230F378 -ov11_0230F378: ; 0x0230F378 - bx lr - arm_func_end ov11_0230F378 - - arm_func_start ov11_0230F37C -ov11_0230F37C: ; 0x0230F37C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x4c - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - ldr r0, [r0, #8] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0230FDB0 -_0230F39C: ; jump table - b _0230F3C4 ; case 0 - b _0230F3EC ; case 1 - b _0230FDB0 ; case 2 - b _0230FDB0 ; case 3 - b _0230F7D0 ; case 4 - b _0230F900 ; case 5 - b _0230F640 ; case 6 - b _0230F66C ; case 7 - b _0230FD84 ; case 8 - b _0230FDA0 ; case 9 -_0230F3C4: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #1 - ldrne r0, [r0, #8] - strneb r1, [r0, #0xc] - bne _0230FDB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - str r1, [r0, #8] -_0230F3EC: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02310050 ; =WORLD_MAP_MODE - movne r1, #1 - ldrne r0, [r0, #8] - strneb r1, [r0, #0xc] - bne _0230FDB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldrb r0, [r1, #0x6bc] - cmp r0, #0 - beq _0230F434 - add r0, r1, #0x6c0 - bl ov11_022F6EFC - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x6bc] -_0230F434: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0] - cmp r1, #0 - bne _0230F4D4 - ldr r1, [r0, #8] - ldrb r0, [r1] - cmp r0, #0 - addne r0, r1, #0xf000 - movne r1, #0 - strneb r1, [r0, #0x999] - bne _0230F4A0 - mov r0, #0x3e8 - bl sub_0206A878 - ldr r1, _02310054 ; =0x0000010D - cmp r0, r1 - bne _0230F48C - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #0 - ldr r0, [r0, #8] - add r0, r0, #0xf000 - strb r1, [r0, #0x999] - b _0230F4A0 -_0230F48C: - bl sub_0204CDCC - ldr r1, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - add r1, r1, #0xf000 - strb r0, [r1, #0x999] -_0230F4A0: - ldr r0, _02310050 ; =WORLD_MAP_MODE - mvn r1, #1 - ldr r0, [r0, #8] - add r0, r0, #0xf900 - ldrsb r0, [r0, #0x98] - cmp r0, r1 - beq _0230F4D4 - bl CloseAreaNameBox - ldr r0, _02310050 ; =WORLD_MAP_MODE - mvn r1, #1 - ldr r0, [r0, #8] - add r0, r0, #0xf000 - strb r1, [r0, #0x998] -_0230F4D4: - ldr r3, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r3, #8] - add r1, r0, #0xf000 - ldrb r1, [r1, #0xf90] - cmp r1, #0 - beq _0230F514 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r3, #1 - ldr r2, [r0, #8] - mov r1, #8 - strb r3, [r2, #0xc] - ldr r0, [r0, #8] - str r1, [r0, #8] - b _0230FDB0 -_0230F514: - add r2, r0, #0xf900 - ldrsb r1, [r2, #0x99] - cmp r1, #0 - blt _0230F604 - ldr r2, [r3] - mvn r1, #0 - str r2, [r0, #0x2c] - ldr r4, [r3, #8] - mov r2, #1 - add r0, r4, #0xf900 - ldrsb r0, [r0, #0x99] - strb r0, [r4, #4] - ldr r0, [r3, #8] - add r0, r0, #0xf000 - strb r1, [r0, #0x999] - ldr r0, [r3, #8] - strb r2, [r0, #0xc] - ldr r1, [r3, #8] - ldrb r0, [r1] - cmp r0, #0 - beq _0230F588 - bl sub_0206A9DC - ldr r1, _02310050 ; =WORLD_MAP_MODE - mov r2, #2 - ldr r3, [r1, #8] - strh r0, [r3, #2] - ldr r0, [r1, #8] - str r2, [r0, #8] - b _0230F5BC -_0230F588: - ldrsb r0, [r1, #4] - cmp r0, #0 - movne r0, #0x10c - strneh r0, [r1, #2] - ldrne r0, [r3, #8] - movne r1, #2 - strne r1, [r0, #8] - bne _0230F5BC - add r0, r2, #0x10c - strh r0, [r1, #2] - ldr r0, [r3, #8] - mov r1, #2 - str r1, [r0, #8] -_0230F5BC: - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r2, #0 - ldr r1, [r0, #8] - strb r2, [r1, #5] - ldr r1, [r0, #8] - ldr r0, [r1, #0x2c] - cmp r0, #3 - bne _0230F5F0 - ldrsb r0, [r1, #4] - cmp r0, #1 - addgt r0, r1, #0xf000 - ldrgtb r0, [r0, #0x99a] - strgtb r0, [r1, #5] -_0230F5F0: - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0xc] - b _0230FDB0 -_0230F604: - ldrsh r3, [r2, #0x9c] - mvn r1, #0 - cmp r3, r1 - ldreqsh r2, [r2, #0x9e] - cmpeq r2, r1 - moveq r1, #0 - streqb r1, [r0, #0xc] - beq _0230FDB0 - ldr r1, _02310050 ; =WORLD_MAP_MODE - mov r2, #5 - str r2, [r0, #8] - ldr r0, [r1, #8] - mov r1, #1 - strb r1, [r0, #0xc] - b _0230FDB0 -_0230F640: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02310050 ; =WORLD_MAP_MODE - movne r1, #1 - ldrne r0, [r0, #8] - strneb r1, [r0, #0xc] - bne _0230FDB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #7 - ldr r0, [r0, #8] - str r1, [r0, #8] -_0230F66C: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - add r0, r1, #0xf000 - ldrb r0, [r0, #0xf90] - cmp r0, #0 - bne _0230F694 - add r0, r1, #0xf900 - ldrsb r0, [r0, #0x99] - cmp r0, #0 - blt _0230F6BC -_0230F694: - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r3, #0 - ldr r2, [r0, #8] - mov r1, #1 - str r3, [r2, #8] - ldr r0, [r0, #8] - strb r1, [r0, #0xc] - b _0230FDB0 -_0230F6BC: - ldr r0, [r1, #0x2c] - cmp r0, #0 - bne _0230F764 - mov r0, #0 - mov r1, #0x20 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - add r0, sp, #0x44 - mov r1, r4 - bl GetDungeonMapPos - cmp r0, #0 - ldreq r0, _02310050 ; =WORLD_MAP_MODE - moveq r1, #0 - ldreq r0, [r0, #8] - streqb r1, [r0, #0xc] - beq _0230FDB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldrsh r0, [r1, #0x30] - cmp r0, r4 - beq _0230F758 - mov r1, r4 - bl sub_0206A8A0 - cmp r0, #0 - ldrne r0, _02310050 ; =WORLD_MAP_MODE - ldrne r0, [r0, #8] - strneh r4, [r0, #0x30] - bne _0230FDB0 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r3, #0 - ldr r2, [r0, #8] - mov r1, #1 - str r3, [r2, #8] - ldr r0, [r0, #8] - strb r1, [r0, #0xc] - b _0230FDB0 -_0230F758: - mov r0, #0 - strb r0, [r1, #0xc] - b _0230FDB0 -_0230F764: - bl ov11_0230EDDC - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r2, [r0, #8] - add r0, r2, #0xf000 - ldrb r1, [r0, #0x9ac] - cmp r1, #0 - ldreqb r1, [r0, #0xe88] - cmpeq r1, #0 - beq _0230F7A4 - mov r1, #5 - ldr r0, _02310050 ; =WORLD_MAP_MODE - str r1, [r2, #8] - ldr r0, [r0, #8] - mov r1, #1 - strb r1, [r0, #0xc] - b _0230FDB0 -_0230F7A4: - ldr r1, [r2, #0x2c] - cmp r1, #3 - bne _0230F7C4 - ldr r0, [r0, #0x990] - cmp r0, #0 - movgt r0, #1 - strgtb r0, [r2, #0xc] - bgt _0230FDB0 -_0230F7C4: - mov r0, #0 - strb r0, [r2, #0xc] - b _0230FDB0 -_0230F7D0: - add r0, sp, #0x3c - mov r1, #0x3e8 - bl GetDungeonMapPos - cmp r0, #0 - beq _0230F7F0 - add r0, sp, #0x3c - bl ov11_0230EDB0 - b _0230F8A8 -_0230F7F0: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldrb r0, [r1] - cmp r0, #0 - beq _0230F860 - bl sub_0206AA40 - add r2, sp, #4 - mvn r1, #0 - bl sub_0206A96C - mvn r1, #0 - cmp r0, r1 - beq _0230F848 - ldr r1, [sp, #4] - cmp r1, #0 - blt _0230F848 - ldr r0, [sp, #8] - mov r1, r1, lsl #8 - mov r0, r0, lsl #8 - str r1, [sp, #0x3c] - str r0, [sp, #0x40] - mov r0, #1 - b _0230F84C -_0230F848: - mov r0, #0 -_0230F84C: - cmp r0, #0 - beq _0230F8A8 - add r0, sp, #0x3c - bl ov11_0230EDB0 - b _0230F8A8 -_0230F860: - ldrsh r1, [r1, #2] - ldr r0, _02310054 ; =0x0000010D - cmp r1, r0 - add r0, sp, #0x3c - bne _0230F890 - mov r1, #0xc1 - bl GetDungeonMapPos - cmp r0, #0 - beq _0230F8A8 - add r0, sp, #0x3c - bl ov11_0230EDB0 - b _0230F8A8 -_0230F890: - mov r1, #0xb8 - bl GetDungeonMapPos - cmp r0, #0 - beq _0230F8A8 - add r0, sp, #0x3c - bl ov11_0230EDB0 -_0230F8A8: - ldr r1, _02310050 ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - add r0, r2, #0x500 - ldrsh r0, [r0, #0x2e] - cmp r0, #0 - beq _0230F900 - mov r0, #0 - strb r0, [r2, #0x530] - ldr r0, [r1, #8] - ldr r1, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r0, #0x2c] - ldr r3, [r1, #8] - cmp r0, #0 - ldreq r0, _02310058 ; =0x00000807 - movne r0, #0x800 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - add r0, r3, #0x500 - ldrsb r2, [r0, #0x30] - add r0, r3, #0x134 - add r0, r0, #0x400 - bl SetAnimDataFields2 -_0230F900: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r2, [r0, #8] - ldrsb r0, [r2, #4] - cmp r0, #0 - ble _0230F978 - ldr r0, _0231005C ; =ov11_02323310 - mov r3, #0x150 - ldr r1, [r0, #0x14] - ldr r0, [r0, #0x10] - str r1, [sp, #0x38] - str r0, [sp, #0x34] - ldrsb r0, [r2, #4] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #31 - add r0, r1, r0, ror #31 - cmp r0, #1 - ldr r0, _02310050 ; =WORLD_MAP_MODE - moveq r1, #0 - movne r1, #0x1f8 - str r1, [sp, #0x34] - ldr r0, [r0, #8] - add r1, sp, #0x34 - ldrsb r2, [r0, #4] - add r0, r0, #0x10 - sub r2, r2, #1 - add r2, r2, r2, lsr #31 - mov r2, r2, asr #1 - mul r3, r2, r3 - str r3, [sp, #0x38] - bl ov11_022F040C -_0230F978: - ldr r2, _02310050 ; =WORLD_MAP_MODE - ldr r4, [r2, #8] - ldrb r0, [r4, #5] - cmp r0, #0 - beq _0230FB38 - ldrsb r1, [r4, #4] - ldr r3, _02310060 ; =ov11_023233E8 - mov r0, #0x18 - sub r1, r1, #2 - mla r3, r1, r0, r3 - add r0, r4, #0xf000 - str r3, [r0, #0x994] - ldr r0, [r2, #8] - ldr r4, _02310064 ; =ov11_02323374 - ldrsb r3, [r0, #4] - add r1, r0, #0xf000 - mov r0, #0 - sub r3, r3, #2 - ldrb r3, [r4, r3] - str r3, [r1, #0x668] - ldr r1, [r2, #8] - ldrsb r1, [r1, #4] - subs r3, r1, #2 - beq _0230F9F4 - mov r2, r0 - b _0230F9EC -_0230F9E0: - ldrb r1, [r4, r2] - add r2, r2, #1 - add r0, r0, r1 -_0230F9EC: - cmp r2, r3 - bne _0230F9E0 -_0230F9F4: - mov r7, #0 - ldr r5, _02310068 ; =ov11_02323490 - mov r2, #0x18 - ldr r3, _02310050 ; =WORLD_MAP_MODE - b _0230FA20 -_0230FA08: - add r1, r7, r0 - mla r4, r1, r2, r5 - add r1, r6, r7, lsl #2 - add r1, r1, #0xf000 - str r4, [r1, #0x980] - add r7, r7, #1 -_0230FA20: - ldr r6, [r3, #8] - add r1, r6, #0xf000 - ldr r4, [r1, #0x668] - cmp r7, r4 - bne _0230FA08 - ldr r0, [r1, #0x994] - ldr r2, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r0, #0x10] - mov r3, #0 - str r0, [r1, #0x990] - ldr r4, [r2, #8] - add r0, r4, #0xf000 - strb r3, [r0, #0x5a0] - ldr r1, [r2, #8] - add r4, r4, #0x1a4 - ldrb r0, [r1, #5] - cmp r0, #0 - ldrneb r0, [r1, #0x6bc] - cmpne r0, #0 - beq _0230FB24 - add r0, r4, #0xf400 - add r1, r1, #0x6c0 - bl InitAnimDataFromOtherAnimDataVeneer - add r0, r4, #0xf400 - mov r1, #0xe - bl ov11_022F4974 - ldr r1, _02310050 ; =WORLD_MAP_MODE - add r0, r4, #0xf400 - ldr r1, [r1, #8] - mov r2, #0 - add r1, r1, #0xf000 - ldr r1, [r1, #0x994] - ldrsh r1, [r1, #0x14] - bl SetAnimDataFields2 - mov r5, #0 - mov r4, r5 - ldr r7, _02310050 ; =WORLD_MAP_MODE - mov r6, #0xc4 - b _0230FB08 -_0230FABC: - mul r8, r5, r6 - ldr r1, [r7, #8] - add r0, r1, #0x670 - add sb, r0, #0xf000 - add r0, sb, r8 - add r1, r1, #0x6c0 - bl InitAnimDataFromOtherAnimDataVeneer - add r0, sb, r8 - rsb r1, r5, #0x20 - bl ov11_022F4974 - ldr r1, [r7, #8] - mov r2, r4 - add r0, sb, r8 - add r1, r1, r5, lsl #2 - add r1, r1, #0xf000 - ldr r1, [r1, #0x980] - ldrsh r1, [r1, #0x14] - bl SetAnimDataFields2 - add r5, r5, #1 -_0230FB08: - ldr r0, [r7, #8] - add r0, r0, #0xf000 - ldr r1, [r0, #0x668] - cmp r5, r1 - bne _0230FABC - mov r1, #1 - strb r1, [r0, #0x5a0] -_0230FB24: - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #5] - b _0230FB44 -_0230FB38: - add r0, r4, #0xf000 - mov r1, #0 - str r1, [r0, #0x990] -_0230FB44: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - ldr r0, [r0, #0x2c] - cmp r0, #4 - beq _0230FB9C - mov r6, #1 - mov r5, r6 - mov r4, #0 -_0230FB64: - sub r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetDungeonMode - cmp r0, #0 - beq _0230FB90 - mov r0, r6, lsl #0x10 - mov r1, r5 - mov r2, r4 - mov r0, r0, asr #0x10 - bl ov11_0230EF48 -_0230FB90: - add r6, r6, #1 - cmp r6, #0xb4 - ble _0230FB64 -_0230FB9C: - mov sb, #0 - mov r6, #1 - ldr r4, _02310050 ; =WORLD_MAP_MODE - ldr sl, _0231006C ; =0x00000136 - mov r5, sb - mov r8, r6 - mvn r7, #0 -_0230FBB8: - ldr r2, [r4, #8] - add r0, r2, sb, lsl #2 - add r0, r0, #0xf000 - ldr r1, [r0, #0x9b0] - cmp r1, r7 - beq _0230FBF4 - mov r0, sb, lsl #0x10 - mov r2, r8 - mov r0, r0, asr #0x10 - bl ov11_0230EF48 - ldr r0, [r4, #8] - add r0, r0, sb, lsl #2 - add r0, r0, #0xf000 - str r7, [r0, #0x9b0] - b _0230FC28 -_0230FBF4: - ldr r0, [r2, #0x2c] - cmp r0, #4 - beq _0230FC28 - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_0204CE00 - cmp r0, #0 - beq _0230FC28 - mov r0, sb, lsl #0x10 - mov r1, r6 - mov r2, r5 - mov r0, r0, asr #0x10 - bl ov11_0230EF48 -_0230FC28: - add sb, sb, #1 - cmp sb, sl - blt _0230FBB8 - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldr r0, [r1, #0x2c] - cmp r0, #4 - cmpne r0, #3 - beq _0230FC7C - ldrb r0, [r1] - cmp r0, #0 - beq _0230FC6C - bl sub_0206AA40 - mov r1, #1 - mov r2, #0 - bl ov11_0230EF48 - b _0230FC7C -_0230FC6C: - mov r0, #0xb8 - mov r1, #1 - mov r2, #0 - bl ov11_0230EF48 -_0230FC7C: - ldr r2, _02310050 ; =WORLD_MAP_MODE - ldr r4, [r2, #8] - add r0, r4, #0xf000 - ldrb r0, [r0, #0xe88] - cmp r0, #0 - beq _0230FCEC - add r0, r4, #0xfe00 - add r1, r4, #0x500 - ldrsh r3, [r0, #0x8a] - ldrsh r0, [r1, #0x2c] - add r4, r4, #0xdc - cmp r0, r3 - mvnne r0, #0 - strneh r3, [r1, #0x2c] - cmpne r3, r0 - beq _0230FCEC - ldr r1, [r2, #8] - add r0, r4, #0xf400 - add r1, r1, #0x1f8 - add r1, r1, #0x400 - bl InitAnimDataFromOtherAnimDataVeneer - add r0, r4, #0xf400 - mov r1, #0xc - bl ov11_022F4974 - ldr r1, _02310070 ; =0x0000080D - add r0, r4, #0xf400 - mov r2, #0 - bl SetAnimDataFields2 -_0230FCEC: - ldr r2, _02310050 ; =WORLD_MAP_MODE - mov r0, #0 - ldr r1, [r2, #8] - add r1, r1, #0xf000 - strb r0, [r1, #0x9ac] - ldr r1, [r2, #8] - add r1, r1, #0xf000 - strb r0, [r1, #0xe88] - ldr r1, [r2, #8] - ldr r1, [r1, #0x2c] - cmp r1, #0 - bne _0230FD34 - mov r1, #0x20 - bl LoadScriptVariableValue - ldr r1, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - add r1, r1, #0xf900 - strh r0, [r1, #0x9c] -_0230FD34: - bl ov11_0230EDDC - cmp r0, #0 - beq _0230FD5C - mov r0, #0x10 - bl ov11_022E9C98 - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #6 - ldr r0, [r0, #8] - str r1, [r0, #8] - b _0230FDB0 -_0230FD5C: - ldr r1, _02310050 ; =WORLD_MAP_MODE - mvn r0, #0 - ldr r2, [r1, #8] - ldrsh r1, [r2, #0x30] - cmp r1, r0 - movne r0, #7 - strne r0, [r2, #8] - moveq r0, #1 - streq r0, [r2, #8] - b _0230FDB0 -_0230FD84: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _0230FDB0 - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #9 - ldr r0, [r0, #8] - str r1, [r0, #8] -_0230FDA0: - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0xc] -_0230FDB0: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldr r3, [r1, #0x40] - ldr r2, [r1, #0x44] - ldr r0, [r1, #0x34] - str r3, [sp, #0x2c] - str r2, [sp, #0x30] - cmp r0, #1 - beq _0230FDE8 - cmp r0, #2 - beq _0230FE78 - cmp r0, #3 - beq _0230FF04 - b _0230FF64 -_0230FDE8: - ldr r2, _0231005C ; =ov11_02323310 - add r0, sp, #0x1c - ldr r3, [r2, #0x2c] - ldr r2, [r2, #0x28] - str r3, [sp, #0x20] - str r2, [sp, #0x1c] - ldr r3, [r1, #0x48] - ldr r2, [r1, #0x40] - sub r2, r3, r2 - str r2, [sp, #0x1c] - ldr r3, [r1, #0x4c] - ldr r2, [r1, #0x44] - sub r2, r3, r2 - str r2, [sp, #0x20] - ldr r1, [r1, #0x38] - bl ClampComponentAbs - ldr r3, [sp, #0x1c] - cmp r3, #0 - ldreq r0, [sp, #0x20] - cmpeq r0, #0 - ldreq r0, _02310050 ; =WORLD_MAP_MODE - moveq r1, #0 - ldreq r0, [r0, #8] - streq r1, [r0, #0x34] - beq _0230FF74 - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r2, [r0, #8] - ldr r1, [r2, #0x40] - add r1, r1, r3 - str r1, [r2, #0x40] - ldr r2, [r0, #8] - ldr r0, [sp, #0x20] - ldr r1, [r2, #0x44] - add r0, r1, r0 - str r0, [r2, #0x44] - b _0230FF74 -_0230FE78: - ldr r2, _0231005C ; =ov11_02323310 - add r0, sp, #0x14 - ldr r3, [r2, #0xc] - ldr r2, [r2, #8] - str r3, [sp, #0x18] - str r2, [sp, #0x14] - ldr r3, [r1, #0x48] - ldr r2, [r1, #0x40] - sub r2, r3, r2 - str r2, [sp, #0x14] - ldr r2, [r1, #0x4c] - ldr r1, [r1, #0x44] - sub r1, r2, r1 - str r1, [sp, #0x18] - bl EuclideanNorm__020050B0 - ldr r1, _02310050 ; =WORLD_MAP_MODE - mov r4, r0 - ldr r5, [r1, #8] - ldr r0, [r5, #0x38] - bl _fflt - mov r1, r0 - mov r0, r4 - bl _fdiv - bl _ffix - ldr r1, _02310050 ; =WORLD_MAP_MODE - str r0, [r5, #0x3c] - ldr r1, [r1, #8] - ldr r0, [r1, #0x3c] - cmp r0, #0 - movle r0, #1 - strle r0, [r1, #0x3c] - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #3 - ldr r0, [r0, #8] - str r1, [r0, #0x34] -_0230FF04: - ldr r0, _02310050 ; =WORLD_MAP_MODE - mov r1, #1 - ldr r2, [r0, #8] - add r0, sp, #0xc - str r1, [sp] - ldr r3, [r2, #0x3c] - add r1, r2, #0x40 - add r2, r2, #0x48 - bl sub_0200514C - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r2, [sp, #0xc] - ldr r3, [r0, #8] - ldr r1, [sp, #0x10] - str r2, [r3, #0x40] - str r1, [r3, #0x44] - ldr r1, [r3, #0x3c] - sub r1, r1, #1 - str r1, [r3, #0x3c] - ldr r1, [r0, #8] - ldr r0, [r1, #0x3c] - cmp r0, #0 - movle r0, #0 - strle r0, [r1, #0x34] - b _0230FF74 -_0230FF64: - ldr r2, [r1, #0x48] - ldr r0, [r1, #0x4c] - str r2, [r1, #0x40] - str r0, [r1, #0x44] -_0230FF74: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r3, [r0, #8] - ldr r0, [r3, #0x34] - cmp r0, #0 - mvneq r0, #0 - streqb r0, [r3, #0x50] - beq _0230FFC4 - ldr r2, [r3, #0x40] - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x30] - sub r0, r2, r0 - str r0, [sp, #0x24] - ldr r2, [r3, #0x44] - add r0, sp, #0x24 - sub r1, r2, r1 - str r1, [sp, #0x28] - bl sub_020055C8 - ldr r1, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - strb r0, [r1, #0x50] -_0230FFC4: - ldr r2, _02310050 ; =WORLD_MAP_MODE - ldr r4, [r2, #8] - add r1, r4, #0x500 - ldrsh r0, [r1, #0x2e] - cmp r0, #0 - ldrnesb r3, [r4, #0x50] - mvnne r0, #0 - cmpne r3, r0 - ldrnesb r0, [r1, #0x30] - cmpne r0, r3 - beq _0231002C - strb r3, [r4, #0x530] - ldr r0, [r2, #8] - ldr r1, _02310050 ; =WORLD_MAP_MODE - ldr r0, [r0, #0x2c] - ldr r3, [r1, #8] - cmp r0, #0 - ldreq r0, _02310058 ; =0x00000807 - movne r0, #0x800 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - add r0, r3, #0x500 - ldrsb r2, [r0, #0x30] - add r0, r3, #0x134 - add r0, r0, #0x400 - bl SetAnimDataFields2 -_0231002C: - ldr r0, _02310050 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldr r0, [r1, #0x34] - cmp r0, #0 - movne r0, #1 - strneb r0, [r1, #0xc] - mov r0, #0 - add sp, sp, #0x4c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02310050: .word WORLD_MAP_MODE -_02310054: .word 0x0000010D -_02310058: .word 0x00000807 -_0231005C: .word ov11_02323310 -_02310060: .word ov11_023233E8 -_02310064: .word ov11_02323374 -_02310068: .word ov11_02323490 -_0231006C: .word 0x00000136 -_02310070: .word 0x0000080D - arm_func_end ov11_0230F37C - - arm_func_start ov11_02310074 -ov11_02310074: ; 0x02310074 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r1, _0231031C ; =WORLD_MAP_MODE - ldr r2, [r1, #8] - ldr r0, [r2, #8] - cmp r0, #2 - bne _02310250 - mov r0, #1 - strb r0, [r2, #0xc] - ldr r2, [r1, #8] - ldr r1, _02310320 ; =ov11_02323730 - ldrsh r5, [r2, #2] - mov r2, r5 - bl Debug_Print - bl ov11_0230EC00 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _0231031C ; =WORLD_MAP_MODE - mvn r1, #0 - str r0, [r2, #4] - ldr r0, [r2, #8] - cmp r5, r1 - strh r5, [r0, #2] - bne _02310108 - ldr r0, [r2, #4] - ldr r1, _02310324 ; =ov11_02323394 - bl GroundBg_Init - ldr r0, _0231031C ; =WORLD_MAP_MODE - mvn r1, #0 - ldr r0, [r0, #4] - bl ov11_022EC27C - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldmib r0, {r1, r2} - add r0, r2, #0x10 - bl ov11_022EFD5C - b _023101EC -_02310108: - mov r0, #0xc - smulbb r1, r5, r0 - ldr r3, _02310328 ; =EVENTS - ldrsh r0, [r3, r1] - add r4, r3, r1 - add r0, r0, #1 - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _023101A0 -_0231012C: ; jump table - b _02310178 ; case 0 - b _023101A0 ; case 1 - b _023101A0 ; case 2 - b _023101A0 ; case 3 - b _023101A0 ; case 4 - b _023101A0 ; case 5 - b _02310160 ; case 6 - b _02310160 ; case 7 - b _02310160 ; case 8 - b _02310160 ; case 9 - b _02310160 ; case 10 - b _02310178 ; case 11 - b _02310178 ; case 12 -_02310160: - ldr r0, [r2, #4] - ldr r1, _0231032C ; =ov11_023233B0 - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - b _023101B8 -_02310178: - ldr r0, _02310330 ; =ov11_02323310 - ldrsh r3, [r4] - ldr ip, [r0, #0x1c] - ldr lr, [r0, #0x18] - ldr r1, _02310334 ; =ov11_02323750 - add r0, sp, #0 - mov r2, r5 - str lr, [sp] - str ip, [sp, #4] - bl Debug_FatalError -_023101A0: - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldr r1, _02310324 ; =ov11_02323394 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_023128C0 -_023101B8: - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldrsh r1, [r4, #4] - ldr r0, [r0, #4] - bl ov11_022EC27C - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldmib r0, {r1, r2} - add r0, r2, #0x10 - bl ov11_022EFD5C - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldr r2, _02310338 ; =ov11_02323330 - ldr r0, [r0, #4] - mov r1, #0 - bl ov11_022EF2D4 -_023101EC: - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldr r2, [r0, #8] - ldrb r1, [r2, #5] - cmp r1, #0 - beq _02310240 - mov r1, #3 - str r1, [r2, #8] - ldr r0, [r0, #8] - ldr r2, _0231033C ; =0xA4080000 - add r0, r0, #0x6c0 - mov r1, #0x9a - bl LoadObjectAnimData - ldr r0, _0231031C ; =WORLD_MAP_MODE - mov r1, #8 - ldr r0, [r0, #8] - add r0, r0, #0x6c0 - bl ov11_022F4974 - ldr r0, _0231031C ; =WORLD_MAP_MODE - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x6bc] -_02310240: - ldr r0, _0231031C ; =WORLD_MAP_MODE - mov r1, #4 - ldr r0, [r0, #8] - str r1, [r0, #8] -_02310250: - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - add r0, r1, #0xf000 - ldrb r0, [r0, #0xe8c] - cmp r0, #0 - beq _02310314 - add r0, r1, #0xf900 - ldrsb r0, [r0, #0x98] - mvn r1, #1 - cmp r0, r1 - beq _023102B0 - bl IsAreaNameBoxActive - cmp r0, #0 - bne _023102B0 - ldr r0, _0231031C ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - add r0, r0, #0xf900 - ldrsb r0, [r0, #0x98] - bl CloseAreaNameBox - ldr r0, _0231031C ; =WORLD_MAP_MODE - mvn r1, #1 - ldr r0, [r0, #8] - add r0, r0, #0xf000 - strb r1, [r0, #0x998] -_023102B0: - ldr r0, _0231031C ; =WORLD_MAP_MODE - mvn r1, #1 - ldr r2, [r0, #8] - add r0, r2, #0xf900 - ldrsb r0, [r0, #0x98] - cmp r0, r1 - bne _02310314 - add r0, r2, #0xfe00 - ldrsh r3, [r0, #0x8e] - add r0, r1, #1 - cmp r3, r0 - beq _02310300 - ldr r0, _02310340 ; =ov11_02323340 - mov r1, #0x13 - mov r2, #0 - bl CreateAreaNameBox - ldr r1, _0231031C ; =WORLD_MAP_MODE - ldr r1, [r1, #8] - add r1, r1, #0xf000 - strb r0, [r1, #0x998] -_02310300: - ldr r0, _0231031C ; =WORLD_MAP_MODE - mov r1, #0 - ldr r0, [r0, #8] - add r0, r0, #0xf000 - strb r1, [r0, #0xe8c] -_02310314: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231031C: .word WORLD_MAP_MODE -_02310320: .word ov11_02323730 -_02310324: .word ov11_02323394 -_02310328: .word EVENTS -_0231032C: .word ov11_023233B0 -_02310330: .word ov11_02323310 -_02310334: .word ov11_02323750 -_02310338: .word ov11_02323330 -_0231033C: .word 0xA4080000 -_02310340: .word ov11_02323340 - arm_func_end ov11_02310074 - - arm_func_start ov11_02310344 -ov11_02310344: ; 0x02310344 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r0, _02310624 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - ldr r0, [r0, #8] - cmp r0, #7 - cmpne r0, #6 - cmpne r0, #0 - cmpne r0, #5 - bne _02310614 - add r1, sp, #0x10 - mov r0, #1 - bl ov11_022EB3C8 - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x10] - streq r0, [sp, #0x14] - ldr r0, _02310624 ; =WORLD_MAP_MODE - ldr r0, [r0, #8] - ldr r1, [r0, #0x2c] - cmp r1, #3 - bne _023104A4 - add r1, r0, #0xf000 - ldr r2, [r1, #0x990] - cmp r2, #0 - ble _023104A4 - ldr r1, [r1, #0x994] - add r0, r0, #0xf000 - ldr r1, [r1, #0x10] - sub r1, r1, r2 - subs sb, r1, #0x1e - ldr r2, [r0, #0x990] - ldr r1, _02310624 ; =WORLD_MAP_MODE - sub r2, r2, #1 - str r2, [r0, #0x990] - ldr r2, [r1, #8] - movmi sb, #0 - add r0, r2, #0xf000 - ldr r4, [r0, #0x994] - add r2, r2, #0x1a4 - ldr r3, [r4, #8] - ldr r5, [r4] - mul r4, r3, sb - add r3, r4, r5, lsl #8 - str r3, [sp, #8] - ldr r3, [r0, #0x994] - add r0, r2, #0xf400 - ldr r2, [r3, #0xc] - ldr r4, [r3, #4] - mul r3, r2, sb - add r3, r3, r4, lsl #8 - add r1, sp, #8 - mov r2, #0 - str r3, [sp, #0xc] - bl AnimRelatedFunction__022F6F14 - mov r8, #0 - add r7, sp, #8 - mov r6, r8 - ldr r5, _02310624 ; =WORLD_MAP_MODE - mov r4, #0xc4 - b _02310490 -_02310438: - ldr r3, [r5, #8] - mov r1, r7 - add r0, r3, r8, lsl #2 - add r2, r0, #0xf000 - ldr sl, [r2, #0x980] - add r0, r3, #0x670 - ldr r3, [sl, #8] - add r0, r0, #0xf000 - mul r3, sb, r3 - ldr sl, [sl] - mla r0, r8, r4, r0 - add r3, r3, sl, lsl #8 - str r3, [sp, #8] - ldr sl, [r2, #0x980] - mov r2, r6 - ldr r3, [sl, #0xc] - ldr sl, [sl, #4] - mul r3, sb, r3 - add r3, r3, sl, lsl #8 - str r3, [sp, #0xc] - bl AnimRelatedFunction__022F6F14 - add r8, r8, #1 -_02310490: - ldr r0, [r5, #8] - add r1, r0, #0xf000 - ldr r1, [r1, #0x668] - cmp r8, r1 - bne _02310438 -_023104A4: - ldr r1, [r0, #0x2c] - mov sb, #0 - cmp r1, #1 - bhi _023104F8 - add r0, r0, #0x500 - ldrsh r0, [r0, #0x2e] - cmp r0, #0 - beq _023104F8 - ldr r0, _02310624 ; =WORLD_MAP_MODE - add r2, sp, #0 - ldr r5, [r0, #8] - mov r3, sb - ldr r4, [r5, #0x40] - ldr r0, [r5, #0x44] - add r1, r5, #0x500 - str r0, [sp, #4] - str r4, [sp] - add r0, r5, #0x134 - ldrsh r1, [r1, #0x2e] - add r0, r0, #0x400 - bl ov11_022F5C94 -_023104F8: - ldr r0, _02310624 ; =WORLD_MAP_MODE - mvn r2, #0 - ldr r0, [r0, #8] - add r0, r0, #0x500 - ldrsh r1, [r0, #0x2c] - cmp r1, r2 - beq _02310540 - add r0, sp, #0 - bl GetDungeonMapPos - cmp r0, #0 - beq _02310540 - ldr r0, _02310624 ; =WORLD_MAP_MODE - add r1, sp, #0 - ldr r0, [r0, #8] - mov r2, #0 - add r0, r0, #0xdc - add r0, r0, #0xf400 - bl AnimRelatedFunction__022F6F14 -_02310540: - mov sl, #0 - add r8, sp, #0 - mov fp, sl - ldr r7, _02310624 ; =WORLD_MAP_MODE - mov r5, #0xc4 - mvn r6, #0 - ldr r4, _02310628 ; =0x00000136 - b _023105BC -_02310560: - ldr r0, [r7, #8] - add r0, r0, sl, lsl #2 - ldr r0, [r0, #0x54] - cmp r0, #0 - cmpne r0, r6 - beq _023105B8 - mov r1, sl, lsl #0x10 - mov r0, r8 - mov r1, r1, asr #0x10 - bl GetDungeonMapPos - cmp r0, #0 - beq _023105B8 - ldr r0, [r7, #8] - mov r1, r8 - add r0, r0, #0x384 - add r0, r0, #0x400 - mla r0, sl, r5, r0 - mov r2, fp - bl AnimRelatedFunction__022F6F14 - add sb, sb, #1 - cmp sb, #0x64 - bgt _023105C4 -_023105B8: - add sl, sl, #1 -_023105BC: - cmp sl, r4 - blt _02310560 -_023105C4: - ldr r0, _02310624 ; =WORLD_MAP_MODE - add r1, sp, #0x10 - ldr r0, [r0, #8] - mov r2, #0 - add r0, r0, #0x10 - bl ov11_022F042C - cmp r0, #0 - beq _023105F8 - ldr r0, _02310624 ; =WORLD_MAP_MODE - add r2, sp, #0x10 - ldr r0, [r0, #4] - mov r1, #0 - bl ov11_022EF2D4 -_023105F8: - ldr r0, _02310624 ; =WORLD_MAP_MODE - ldr r0, [r0, #4] - bl ov11_022EF70C - ldr r0, _02310624 ; =WORLD_MAP_MODE - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #6] -_02310614: - bl ov11_02312A74 - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02310624: .word WORLD_MAP_MODE -_02310628: .word 0x00000136 - arm_func_end ov11_02310344 - - arm_func_start ov11_0231062C -ov11_0231062C: ; 0x0231062C - stmdb sp!, {r3, lr} - ldr r0, _02310668 ; =WORLD_MAP_MODE - ldr r1, [r0, #8] - ldrb r1, [r1, #6] - cmp r1, #0 - ldrne r0, [r0, #4] - cmpne r0, #0 - beq _02310660 - bl ov11_022EFB70 - ldr r0, _02310668 ; =WORLD_MAP_MODE - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #6] -_02310660: - bl ov11_02312B18 - ldmia sp!, {r3, pc} - .align 2, 0 -_02310668: .word WORLD_MAP_MODE - arm_func_end ov11_0231062C - - arm_func_start ov11_0231066C -ov11_0231066C: ; 0x0231066C - ldr ip, _02310678 ; =ov11_0230D270 - ldr r0, _0231067C ; =ov11_02323788 - bx ip - .align 2, 0 -_02310678: .word ov11_0230D270 -_0231067C: .word ov11_02323788 - arm_func_end ov11_0231066C - - arm_func_start ov11_02310680 -ov11_02310680: ; 0x02310680 - ldr ip, _0231068C ; =ov11_0230D17C - ldr r0, _02310690 ; =ov11_02323788 - bx ip - .align 2, 0 -_0231068C: .word ov11_0230D17C -_02310690: .word ov11_02323788 - arm_func_end ov11_02310680 - - arm_func_start ov11_02310694 -ov11_02310694: ; 0x02310694 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r0, #0x6f0 - mov r1, #0xf - bl MemAlloc - ldr r1, _0231072C ; =ov11_02324DF0 - mov r2, #1 - str r0, [r1] - strb r2, [r0, #0x6ec] - bl ov11_023107BC - mov r0, #0x10 - bl ov11_022E9D10 - ldr r0, _0231072C ; =ov11_02324DF0 - mov r2, #1 - ldr r1, [r0] - mov r4, #0 - strb r2, [r1, #0x6ed] - ldr r1, [r0] - ldr r6, _02310730 ; =0xA0080000 - strb r4, [r1, #0x6ee] - ldr r1, [r0] - mov r7, #0x9c - str r2, [r1, #4] - ldr r0, [r0] - mov r5, #8 - add r8, r0, #8 -_023106F8: - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl LoadObjectAnimData - mov r0, r8 - mov r1, r5 - bl ov11_022F4974 - add r4, r4, #1 - cmp r4, #9 - add r8, r8, #0xc4 - blt _023106F8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0231072C: .word ov11_02324DF0 -_02310730: .word 0xA0080000 - arm_func_end ov11_02310694 - - arm_func_start ov11_02310734 -ov11_02310734: ; 0x02310734 - stmdb sp!, {r3, r4, r5, lr} - cmp r0, #0 - bne _02310760 - ldr r0, _023107B8 ; =ov11_02324DF0 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #8 - movne r0, #1 - strneb r0, [r1, #0x6ee] - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_02310760: - bl ov11_023107BC - ldr r0, _023107B8 ; =ov11_02324DF0 - mov r2, #8 - ldr r1, [r0] - mov r5, #0 - str r2, [r1, #4] - ldr r0, [r0] - add r4, r0, #8 -_02310780: - mov r0, r4 - bl ov11_022F6EFC - add r5, r5, #1 - cmp r5, #9 - add r4, r4, #0xc4 - blt _02310780 - ldr r0, _023107B8 ; =ov11_02324DF0 - ldr r0, [r0] - bl MemFree - ldr r0, _023107B8 ; =ov11_02324DF0 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023107B8: .word ov11_02324DF0 - arm_func_end ov11_02310734 - - arm_func_start ov11_023107BC -ov11_023107BC: ; 0x023107BC - stmdb sp!, {r3, lr} - ldr r1, _02310834 ; =ov11_02324DF0 - mov r3, #1 - ldr r0, [r1] - mov r2, #0 - strb r2, [r0] - ldr r2, [r1] - sub r0, r3, #2 - str r3, [r2, #4] - ldr r1, [r1] - strb r3, [r1, #0x6ec] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _02310834 ; =ov11_02324DF0 - ldr r0, [r0, #4] - cmp r0, #0 - beq _02310820 - bl GroundBg_FreeAll - ldr r0, _02310834 ; =ov11_02324DF0 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02310834 ; =ov11_02324DF0 - mov r1, #0 - str r1, [r0, #4] -_02310820: - ldr r0, _02310834 ; =ov11_02324DF0 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x6ed] - ldmia sp!, {r3, pc} - .align 2, 0 -_02310834: .word ov11_02324DF0 - arm_func_end ov11_023107BC - - arm_func_start ov11_02310838 -ov11_02310838: ; 0x02310838 - ldr r0, _02310848 ; =ov11_02324DF0 - ldr r0, [r0] - ldrb r0, [r0, #0x6ec] - bx lr - .align 2, 0 -_02310848: .word ov11_02324DF0 - arm_func_end ov11_02310838 - - arm_func_start ov11_0231084C -ov11_0231084C: ; 0x0231084C - bx lr - arm_func_end ov11_0231084C - - arm_func_start ov11_02310850 -ov11_02310850: ; 0x02310850 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _02310A50 ; =ov11_02324DF0 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _02310A48 -_0231086C: ; jump table - b _02310890 ; case 0 - b _023108B8 ; case 1 - b _02310A48 ; case 2 - b _02310A48 ; case 3 - b _02310948 ; case 4 - b _023109A4 ; case 5 - b _023109D0 ; case 6 - b _02310A1C ; case 7 - b _02310A38 ; case 8 -_02310890: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02310A50 ; =ov11_02324DF0 - mov r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #0x6ec] - bne _02310A48 - ldr r0, _02310A50 ; =ov11_02324DF0 - ldr r0, [r0] - str r1, [r0, #4] -_023108B8: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02310A50 ; =ov11_02324DF0 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #0x6ec] - bne _02310A48 - ldr r0, _02310A50 ; =ov11_02324DF0 - ldr r2, [r0] - ldrb r1, [r2, #0x6ee] - cmp r1, #0 - beq _02310910 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02310A50 ; =ov11_02324DF0 - mov r3, #1 - ldr r2, [r0] - mov r1, #7 - strb r3, [r2, #0x6ec] - ldr r0, [r0] - str r1, [r0, #4] - b _02310A48 -_02310910: - ldrb r1, [r2, #0x6ed] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #0x6ec] - beq _02310A48 - mov r1, #1 - strb r1, [r2, #0x6ec] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0x6ed] - ldr r0, [r0] - mov r1, #2 - str r1, [r0, #4] - b _02310A48 -_02310948: - mov r7, #0 - ldr r6, _02310A54 ; =ov11_023237AC - add r5, r1, #8 - mov r4, r7 -_02310958: - ldrsh r1, [r6, #8] - mov r0, r5 - mov r2, r4 - bl SetAnimDataFields2 - add r7, r7, #1 - cmp r7, #9 - add r5, r5, #0xc4 - add r6, r6, #0xc - blt _02310958 - mov r0, #0x10 - bl ov11_022E9C98 - ldr r0, _02310A50 ; =ov11_02324DF0 - mov r3, #5 - ldr r2, [r0] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #0x6ec] - b _02310A48 -_023109A4: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02310A50 ; =ov11_02324DF0 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #0x6ec] - bne _02310A48 - ldr r0, _02310A50 ; =ov11_02324DF0 - mov r1, #6 - ldr r0, [r0] - str r1, [r0, #4] -_023109D0: - ldr r0, _02310A50 ; =ov11_02324DF0 - ldr r1, [r0] - ldrb r0, [r1, #0x6ee] - cmp r0, #0 - ldreqb r0, [r1, #0x6ed] - cmpeq r0, #0 - moveq r0, #0 - streqb r0, [r1, #0x6ec] - beq _02310A48 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02310A50 ; =ov11_02324DF0 - mov r3, #0 - ldr r2, [r0] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #0x6ec] - b _02310A48 -_02310A1C: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _02310A48 - ldr r0, _02310A50 ; =ov11_02324DF0 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #4] -_02310A38: - ldr r0, _02310A50 ; =ov11_02324DF0 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x6ec] -_02310A48: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02310A50: .word ov11_02324DF0 -_02310A54: .word ov11_023237AC - arm_func_end ov11_02310850 - - arm_func_start ov11_02310A58 -ov11_02310A58: ; 0x02310A58 - stmdb sp!, {r3, lr} - ldr r0, _02310AC0 ; =ov11_02324DF0 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #2 - ldmneia sp!, {r3, pc} - mov r0, #1 - strb r0, [r1, #0x6ec] - bl ov11_023107BC - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _02310AC0 ; =ov11_02324DF0 - ldr r1, _02310AC4 ; =ov11_0232376C - str r0, [r2, #4] - bl GroundBg_Init - ldr r0, _02310AC0 ; =ov11_02324DF0 - ldr r1, _02310AC8 ; =ov11_02323818 - ldr r0, [r0, #4] - ldr r2, _02310ACC ; =ov11_0232382C - bl ov11_022EDE64 - ldr r0, _02310AC0 ; =ov11_02324DF0 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02310AC0: .word ov11_02324DF0 -_02310AC4: .word ov11_0232376C -_02310AC8: .word ov11_02323818 -_02310ACC: .word ov11_0232382C - arm_func_end ov11_02310A58 - - arm_func_start ov11_02310AD0 -ov11_02310AD0: ; 0x02310AD0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r0, _02310B98 ; =ov11_02324DF0 - ldr r2, [r0] - ldr r1, [r2, #4] - cmp r1, #6 - cmpne r1, #5 - cmpne r1, #0 - bne _02310B58 - mov r6, #0 - ldr r5, _02310B9C ; =ov11_023237AC - add r4, r2, #8 - add r8, sp, #0 - mov r7, r6 -_02310B08: - ldr r1, [r5] - ldr r0, [r5, #4] - mov ip, r1, lsl #8 - mov r3, r0, lsl #8 - mov r0, r4 - mov r1, r8 - mov r2, r7 - str ip, [sp] - str r3, [sp, #4] - bl AnimRelatedFunction__022F6F14 - add r6, r6, #1 - cmp r6, #9 - add r4, r4, #0xc4 - add r5, r5, #0xc - blt _02310B08 - ldr r0, _02310B98 ; =ov11_02324DF0 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0] - b _02310B8C -_02310B58: - cmp r1, #3 - bne _02310B8C - ldr r0, [r0, #4] - bl ov11_022EF70C - mov r0, #1 - bl ov11_022EF53C - ldr r0, _02310B98 ; =ov11_02324DF0 - mov r3, #1 - ldr r2, [r0] - mov r1, #4 - strb r3, [r2] - ldr r0, [r0] - str r1, [r0, #4] -_02310B8C: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02310B98: .word ov11_02324DF0 -_02310B9C: .word ov11_023237AC - arm_func_end ov11_02310AD0 - - arm_func_start ov11_02310BA0 -ov11_02310BA0: ; 0x02310BA0 - stmdb sp!, {r3, lr} - ldr r0, _02310BD8 ; =ov11_02324DF0 - ldr r1, [r0] - ldrb r1, [r1] - cmp r1, #0 - ldrne r0, [r0, #4] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_022EFB70 - ldr r0, _02310BD8 ; =ov11_02324DF0 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02310BD8: .word ov11_02324DF0 - arm_func_end ov11_02310BA0 - - arm_func_start ov11_02310BDC -ov11_02310BDC: ; 0x02310BDC - ldr ip, _02310BE8 ; =ov11_0230DB58 - ldr r0, _02310BEC ; =ov11_02323840 - bx ip - .align 2, 0 -_02310BE8: .word ov11_0230DB58 -_02310BEC: .word ov11_02323840 - arm_func_end ov11_02310BDC - - arm_func_start ov11_02310BF0 -ov11_02310BF0: ; 0x02310BF0 - ldr ip, _02310BFC ; =ov11_0230DB58 - ldr r0, _02310C00 ; =ov11_02323864 - bx ip - .align 2, 0 -_02310BFC: .word ov11_0230DB58 -_02310C00: .word ov11_02323864 - arm_func_end ov11_02310BF0 - - arm_func_start ov11_02310C04 -ov11_02310C04: ; 0x02310C04 - ldr ip, _02310C10 ; =ov11_0230DB58 - ldr r0, _02310C14 ; =ov11_0232385C - bx ip - .align 2, 0 -_02310C10: .word ov11_0230DB58 -_02310C14: .word ov11_0232385C - arm_func_end ov11_02310C04 - - arm_func_start ov11_02310C18 -ov11_02310C18: ; 0x02310C18 - ldr ip, _02310C24 ; =ov11_0230DB58 - ldr r0, _02310C28 ; =ov11_02323894 - bx ip - .align 2, 0 -_02310C24: .word ov11_0230DB58 -_02310C28: .word ov11_02323894 - arm_func_end ov11_02310C18 - - arm_func_start ov11_02310C2C -ov11_02310C2C: ; 0x02310C2C - ldr ip, _02310C38 ; =ov11_0230DB58 - ldr r0, _02310C3C ; =ov11_023238B0 - bx ip - .align 2, 0 -_02310C38: .word ov11_0230DB58 -_02310C3C: .word ov11_023238B0 - arm_func_end ov11_02310C2C - - arm_func_start ov11_02310C40 -ov11_02310C40: ; 0x02310C40 - ldr ip, _02310C4C ; =ov11_0230D270 - ldr r0, _02310C50 ; =ov11_023238DC - bx ip - .align 2, 0 -_02310C4C: .word ov11_0230D270 -_02310C50: .word ov11_023238DC - arm_func_end ov11_02310C40 - - arm_func_start ov11_02310C54 -ov11_02310C54: ; 0x02310C54 - stmdb sp!, {r3, lr} - mov r0, #0x30 - mov r1, #0xf - bl MemAlloc - ldr r1, _02310CA0 ; =ov11_02324DF8 - mvn r3, #0 - str r0, [r1] - strh r3, [r0] - ldr r2, [r1] - mov r0, #0 - strh r3, [r2, #0x2c] - ldr r2, [r1] - strh r3, [r2, #2] - ldr r1, [r1] - strh r3, [r1, #0x2e] - bl ov11_02312844 - bl ov11_02310CD4 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02310CA0: .word ov11_02324DF8 - arm_func_end ov11_02310C54 - - arm_func_start ov11_02310CA4 -ov11_02310CA4: ; 0x02310CA4 - stmdb sp!, {r3, lr} - bl ov11_02310CD4 - bl ov11_02312894 - ldr r0, _02310CD0 ; =ov11_02324DF8 - ldr r0, [r0] - bl MemFree - ldr r0, _02310CD0 ; =ov11_02324DF8 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02310CD0: .word ov11_02324DF8 - arm_func_end ov11_02310CA4 - - arm_func_start ov11_02310CD4 -ov11_02310CD4: ; 0x02310CD4 - stmdb sp!, {r3, lr} - ldr r0, _02310D40 ; =ov11_02324DF8 - mov r3, #0 - ldr r1, [r0] - mov r2, #1 - strb r3, [r1, #4] - ldr r1, [r0] - str r2, [r1, #8] - ldr r0, [r0] - strb r2, [r0, #0xc] - bl ov11_02312BF4 - mov r0, #0 - bl ov11_023128C0 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _02310D40 ; =ov11_02324DF8 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GroundBg_FreeAll - ldr r0, _02310D40 ; =ov11_02324DF8 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02310D40 ; =ov11_02324DF8 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02310D40: .word ov11_02324DF8 - arm_func_end ov11_02310CD4 - - arm_func_start ov11_02310D44 -ov11_02310D44: ; 0x02310D44 - ldr r0, _02310D60 ; =ov11_02324DF8 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02310D60: .word ov11_02324DF8 - arm_func_end ov11_02310D44 - - arm_func_start ov11_02310D64 -ov11_02310D64: ; 0x02310D64 - stmdb sp!, {r3, lr} - ldr r1, _02310D9C ; =ov11_02324DF8 - ldr r1, [r1, #4] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #1 - cmpne r0, #3 - bne _02310D94 - mov r0, r1 - bl ov11_022EE60C - ldmia sp!, {r3, pc} -_02310D94: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02310D9C: .word ov11_02324DF8 - arm_func_end ov11_02310D64 - - arm_func_start ov11_02310DA0 -ov11_02310DA0: ; 0x02310DA0 - ldr r2, _02310DB8 ; =ov11_02324DF8 - mov r1, r0 - ldr r0, [r2] - ldr ip, _02310DBC ; =ov11_022F03F8 - add r0, r0, #0x10 - bx ip - .align 2, 0 -_02310DB8: .word ov11_02324DF8 -_02310DBC: .word ov11_022F03F8 - arm_func_end ov11_02310DA0 - - arm_func_start ov11_02310DC0 -ov11_02310DC0: ; 0x02310DC0 - ldr r2, _02310DD8 ; =ov11_02324DF8 - mov r1, r0 - ldr r0, [r2] - ldr ip, _02310DDC ; =ov11_022F040C - add r0, r0, #0x10 - bx ip - .align 2, 0 -_02310DD8: .word ov11_02324DF8 -_02310DDC: .word ov11_022F040C - arm_func_end ov11_02310DC0 - - arm_func_start ov11_02310DE0 -ov11_02310DE0: ; 0x02310DE0 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02310EC0 ; =ov11_02324DF8 - mov r6, r0 - ldr r0, [r2, #4] - mov r5, r1 - cmp r0, #0 - ldrne r2, [r2] - mvnne r1, #0 - ldrnesh r4, [r2] - cmpne r4, r1 - beq _02310EB8 - mov r1, r6 - mov r2, r5 - bl ov11_022EF498 - ldr r1, [r6] - mov r0, #0xc - add r1, r1, #0x8000 - str r1, [r6] - ldr r2, [r6, #4] - smulbb r1, r4, r0 - add r0, r2, #0x6000 - str r0, [r6, #4] - ldr r2, [r5] - ldr r0, _02310EC4 ; =EVENTS - sub r2, r2, #0x8000 - str r2, [r5] - ldr r2, [r5, #4] - ldrsh r0, [r0, r1] - sub r1, r2, #0x6000 - str r1, [r5, #4] - cmp r0, #0xa - bne _02310E90 - ldr r0, [r6] - add r0, r0, #0x1800 - str r0, [r6] - ldr r0, [r6, #4] - add r0, r0, #0x1800 - str r0, [r6, #4] - ldr r0, [r5] - sub r0, r0, #0x1800 - str r0, [r5] - ldr r0, [r5, #4] - sub r0, r0, #0x1800 - str r0, [r5, #4] -_02310E90: - ldr r1, [r6] - ldr r0, [r5] - cmp r1, r0 - strgt r1, [r5] - ldr r1, [r6, #4] - ldr r0, [r5, #4] - cmp r1, r0 - strgt r1, [r5, #4] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02310EB8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02310EC0: .word ov11_02324DF8 -_02310EC4: .word EVENTS - arm_func_end ov11_02310DE0 - - arm_func_start ov11_02310EC8 -ov11_02310EC8: ; 0x02310EC8 - ldr r0, _02310EE4 ; =ov11_02324DF8 - ldr r1, [r0] - ldrb r0, [r1, #4] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #0xc] - bx lr - .align 2, 0 -_02310EE4: .word ov11_02324DF8 - arm_func_end ov11_02310EC8 - - arm_func_start ov11_02310EE8 -ov11_02310EE8: ; 0x02310EE8 - stmdb sp!, {r3, lr} - cmp r0, #0 - beq _02310F08 - cmp r0, #1 - beq _02310F24 - cmp r0, #2 - beq _02310F40 - ldmia sp!, {r3, pc} -_02310F08: - ldr r0, _02310FBC ; =ov11_02324DF8 - mov r2, #1 - ldr r3, [r0] - strh r1, [r3, #0x2c] - ldr r0, [r0] - strb r2, [r0, #0xc] - ldmia sp!, {r3, pc} -_02310F24: - ldr r0, _02310FBC ; =ov11_02324DF8 - mov r2, #1 - ldr r3, [r0] - strh r1, [r3, #0x2e] - ldr r0, [r0] - strb r2, [r0, #0xc] - ldmia sp!, {r3, pc} -_02310F40: - cmp r1, #1 - beq _02310F5C - cmp r1, #2 - beq _02310F7C - cmp r1, #3 - beq _02310F9C - ldmia sp!, {r3, pc} -_02310F5C: - ldr r0, _02310FBC ; =ov11_02324DF8 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_02310F7C: - ldr r0, _02310FBC ; =ov11_02324DF8 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #1 - mov r2, r1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_02310F9C: - ldr r0, _02310FBC ; =ov11_02324DF8 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - mov r2, #1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} - .align 2, 0 -_02310FBC: .word ov11_02324DF8 - arm_func_end ov11_02310EE8 - - arm_func_start ov11_02310FC0 -ov11_02310FC0: ; 0x02310FC0 - stmdb sp!, {r3, lr} - ldr r0, _02311070 ; =ov11_02324DF8 - ldr r2, [r0] - ldr r0, [r2, #8] - cmp r0, #1 - cmpne r0, #4 - bne _02311068 - ldrsh r0, [r2, #0x2c] - mvn ip, #0 - cmp r0, ip - beq _02311028 - mov r1, #1 - ldr r0, _02311070 ; =ov11_02324DF8 - strb r1, [r2, #0xc] - ldr r3, [r0] - mov r2, #2 - ldrsh r1, [r3, #0x2c] - strh r1, [r3] - ldr r1, [r0] - strh ip, [r1, #0x2c] - ldr r1, [r0] - str r2, [r1, #8] - ldr r0, [r0] - ldrsh r0, [r0] - bl ov11_022F4734 - b _02311068 -_02311028: - ldrsh r0, [r2, #0x2e] - cmp r0, ip - moveq r0, #0 - streqb r0, [r2, #0xc] - beq _02311068 - mov r1, #1 - strb r1, [r2, #0xc] - ldr r0, _02311070 ; =ov11_02324DF8 - mov r1, #3 - ldr r3, [r0] - ldrsh r2, [r3, #0x2e] - strh r2, [r3, #2] - ldr r2, [r0] - strh ip, [r2, #0x2e] - ldr r0, [r0] - str r1, [r0, #8] -_02311068: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311070: .word ov11_02324DF8 - arm_func_end ov11_02310FC0 - - arm_func_start ov11_02311074 -ov11_02311074: ; 0x02311074 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r1, _0231126C ; =ov11_02324DF8 - ldr r2, [r1] - ldr r0, [r2, #8] - cmp r0, #2 - bne _0231122C - mov r0, #1 - strb r0, [r2, #0xc] - ldr r2, [r1] - ldr r1, _02311270 ; =ov11_02323974 - ldrsh r5, [r2] - mov r2, r5 - bl Debug_Print - bl ov11_02310CD4 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _0231126C ; =ov11_02324DF8 - mvn r1, #0 - str r0, [r2, #4] - ldr r0, [r2] - cmp r5, r1 - strh r5, [r0] - bne _0231110C - ldr r0, [r2, #4] - ldr r1, _02311274 ; =ov11_02323920 - bl GroundBg_Init - ldr r0, _0231126C ; =ov11_02324DF8 - mvn r1, #0 - ldr r0, [r0, #4] - bl ov11_022EC27C - ldr r0, _0231126C ; =ov11_02324DF8 - ldr r2, [r0] - ldr r1, [r0, #4] - add r0, r2, #0x10 - bl ov11_022EFD5C - b _0231120C -_0231110C: - mov r0, #0xc - smulbb r1, r5, r0 - ldr r3, _02311278 ; =EVENTS - ldrsh r0, [r3, r1] - add r4, r3, r1 - add r0, r0, #1 - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _023111BC -_02311130: ; jump table - b _02311194 ; case 0 - b _023111BC ; case 1 - b _023111BC ; case 2 - b _023111BC ; case 3 - b _023111BC ; case 4 - b _023111BC ; case 5 - b _02311164 ; case 6 - b _02311164 ; case 7 - b _02311164 ; case 8 - b _02311164 ; case 9 - b _02311164 ; case 10 - b _0231117C ; case 11 - b _0231117C ; case 12 -_02311164: - ldr r0, [r2, #4] - ldr r1, _0231127C ; =ov11_0232393C - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - b _023111D4 -_0231117C: - ldr r0, [r2, #4] - ldr r1, _02311280 ; =ov11_02323958 - bl GroundBg_Init - mov r0, #1 - bl ov11_023128C0 - b _023111D4 -_02311194: - ldr r0, _02311284 ; =ov11_023238CC - ldrsh r3, [r4] - ldr ip, [r0, #0xc] - ldr lr, [r0, #8] - ldr r1, _02311288 ; =ov11_02323998 - add r0, sp, #0 - mov r2, r5 - str lr, [sp] - str ip, [sp, #4] - bl Debug_FatalError -_023111BC: - ldr r0, _0231126C ; =ov11_02324DF8 - ldr r1, _02311274 ; =ov11_02323920 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_023128C0 -_023111D4: - ldr r0, _0231126C ; =ov11_02324DF8 - ldrsh r1, [r4, #4] - ldr r0, [r0, #4] - bl ov11_022EC27C - ldr r0, _0231126C ; =ov11_02324DF8 - ldr r2, [r0] - ldr r1, [r0, #4] - add r0, r2, #0x10 - bl ov11_022EFD5C - ldr r0, _0231126C ; =ov11_02324DF8 - ldr r2, _0231128C ; =ov11_023238CC - ldr r0, [r0, #4] - mov r1, #0 - bl ov11_022EF2D4 -_0231120C: - ldr r0, _0231126C ; =ov11_02324DF8 - mov r3, #4 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #8] - ldr r0, [r0] - strb r1, [r0, #0xc] - b _02311264 -_0231122C: - cmp r0, #3 - bne _02311264 - mov r0, #1 - strb r0, [r2, #0xc] - ldr r0, [r1] - ldrsh r0, [r0, #2] - bl ov11_0231297C - ldr r0, _0231126C ; =ov11_02324DF8 - mov r3, #4 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #8] - ldr r0, [r0] - strb r1, [r0, #0xc] -_02311264: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231126C: .word ov11_02324DF8 -_02311270: .word ov11_02323974 -_02311274: .word ov11_02323920 -_02311278: .word EVENTS -_0231127C: .word ov11_0232393C -_02311280: .word ov11_02323958 -_02311284: .word ov11_023238CC -_02311288: .word ov11_02323998 -_0231128C: .word ov11_023238CC - arm_func_end ov11_02311074 - - arm_func_start ov11_02311290 -ov11_02311290: ; 0x02311290 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _02311328 ; =ov11_02324DF8 - ldr r0, [r0] - ldr r0, [r0, #8] - cmp r0, #4 - bne _02311318 - add r1, sp, #0 - mov r0, #1 - bl ov11_022EB3C8 - cmp r0, #0 - moveq r0, #0 - streq r0, [sp] - streq r0, [sp, #4] - ldr r0, _02311328 ; =ov11_02324DF8 - add r1, sp, #0 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x10 - bl ov11_022F042C - cmp r0, #0 - beq _023112FC - ldr r0, _02311328 ; =ov11_02324DF8 - add r2, sp, #0 - ldr r0, [r0, #4] - mov r1, #0 - bl ov11_022EF2D4 -_023112FC: - ldr r0, _02311328 ; =ov11_02324DF8 - ldr r0, [r0, #4] - bl ov11_022EF70C - ldr r0, _02311328 ; =ov11_02324DF8 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #4] -_02311318: - bl ov11_02312A74 - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311328: .word ov11_02324DF8 - arm_func_end ov11_02311290 - - arm_func_start ov11_0231132C -ov11_0231132C: ; 0x0231132C - stmdb sp!, {r3, lr} - ldr r0, _02311368 ; =ov11_02324DF8 - ldr r1, [r0] - ldrb r1, [r1, #4] - cmp r1, #0 - ldrne r0, [r0, #4] - cmpne r0, #0 - beq _02311360 - bl ov11_022EFB70 - ldr r0, _02311368 ; =ov11_02324DF8 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #4] -_02311360: - bl ov11_02312B18 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311368: .word ov11_02324DF8 - arm_func_end ov11_0231132C - - arm_func_start ov11_0231136C -ov11_0231136C: ; 0x0231136C - ldr ip, _02311378 ; =ov11_0230D270 - ldr r0, _0231137C ; =ov11_023239C4 - bx ip - .align 2, 0 -_02311378: .word ov11_0230D270 -_0231137C: .word ov11_023239C4 - arm_func_end ov11_0231136C - - arm_func_start ov11_02311380 -ov11_02311380: ; 0x02311380 - stmdb sp!, {r3, lr} - mov r0, #0x2c - mov r1, #0xf - bl MemAlloc - ldr r1, _023113B4 ; =ov11_02324E00 - mov r2, #0 - str r0, [r1] - strb r2, [r0, #0x28] - mov r0, r2 - bl ov11_02312844 - bl ov11_023113E8 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023113B4: .word ov11_02324E00 - arm_func_end ov11_02311380 - - arm_func_start ov11_023113B8 -ov11_023113B8: ; 0x023113B8 - stmdb sp!, {r3, lr} - bl ov11_023113E8 - bl ov11_02312894 - ldr r0, _023113E4 ; =ov11_02324E00 - ldr r0, [r0] - bl MemFree - ldr r0, _023113E4 ; =ov11_02324E00 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023113E4: .word ov11_02324E00 - arm_func_end ov11_023113B8 - - arm_func_start ov11_023113E8 -ov11_023113E8: ; 0x023113E8 - stmdb sp!, {r3, lr} - ldr r0, _02311458 ; =ov11_02324E00 - mov r3, #0 - ldr r1, [r0] - mov r2, #1 - strb r3, [r1] - ldr r1, [r0] - str r2, [r1, #4] - ldr r0, [r0] - strb r2, [r0, #8] - bl ov11_02312BF4 - mov r0, #0 - bl ov11_023128C0 - mov r0, #1 - mov r1, #5 - bl ov11_022EB0C0 - ldr r0, _02311458 ; =ov11_02324E00 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GroundBg_FreeAll - ldr r0, _02311458 ; =ov11_02324E00 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02311458 ; =ov11_02324E00 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02311458: .word ov11_02324E00 - arm_func_end ov11_023113E8 - - arm_func_start ov11_0231145C -ov11_0231145C: ; 0x0231145C - ldr r0, _02311478 ; =ov11_02324E00 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02311478: .word ov11_02324E00 - arm_func_end ov11_0231145C - - arm_func_start ov11_0231147C -ov11_0231147C: ; 0x0231147C - stmdb sp!, {r3, lr} - ldr r1, _02311528 ; =ov11_02324E00 - ldr r2, [r1, #4] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0231149C: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _023114B4 ; case 1 - b _023114D0 ; case 2 - b _023114EC ; case 3 - b _02311508 ; case 4 - b _02311518 ; case 5 -_023114B4: - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - mov r0, r2 - mov r2, r1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_023114D0: - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r1, #1 - mov r0, r2 - mov r2, r1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_023114EC: - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r0, r2 - mov r1, #0 - mov r2, #1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_02311508: - mov r0, r2 - mov r1, #1 - bl ov11_022EE5E4 - ldmia sp!, {r3, pc} -_02311518: - mov r0, r2 - mov r1, #0 - bl ov11_022EE5E4 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311528: .word ov11_02324E00 - arm_func_end ov11_0231147C - - arm_func_start ov11_0231152C -ov11_0231152C: ; 0x0231152C - ldr r0, _02311548 ; =ov11_02324E00 - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #8] - bx lr - .align 2, 0 -_02311548: .word ov11_02324E00 - arm_func_end ov11_0231152C - - arm_func_start ov11_0231154C -ov11_0231154C: ; 0x0231154C - stmdb sp!, {r3, lr} - cmp r0, #0 - beq _02311564 - cmp r0, #1 - beq _02311580 - ldmia sp!, {r3, pc} -_02311564: - ldr r0, _0231158C ; =ov11_02324E00 - mov r2, #1 - ldr r1, [r0] - strb r2, [r1, #0x28] - ldr r0, [r0] - strb r2, [r0, #8] - ldmia sp!, {r3, pc} -_02311580: - and r0, r1, #0xff - bl ov11_0231147C - ldmia sp!, {r3, pc} - .align 2, 0 -_0231158C: .word ov11_02324E00 - arm_func_end ov11_0231154C - - arm_func_start ov11_02311590 -ov11_02311590: ; 0x02311590 - stmdb sp!, {r3, lr} - ldr r0, _023115F0 ; =ov11_02324E00 - ldr r2, [r0] - ldr r0, [r2, #4] - cmp r0, #1 - cmpne r0, #3 - bne _023115E8 - ldrb r0, [r2, #0x28] - cmp r0, #0 - moveq r0, #0 - streqb r0, [r2, #8] - beq _023115E8 - ldr r0, _023115F0 ; =ov11_02324E00 - mov r1, #1 - strb r1, [r2, #8] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0x28] - ldr r0, [r0] - mov r1, #2 - str r1, [r0, #4] - bl ov11_022F47BC -_023115E8: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_023115F0: .word ov11_02324E00 - arm_func_end ov11_02311590 - - arm_func_start ov11_023115F4 -ov11_023115F4: ; 0x023115F4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #2 - bne _0231179C - mov r0, #1 - strb r0, [r1, #8] - bl ov11_022F1798 - mov r4, r0 - ldr r1, _023117A8 ; =ov11_02323A58 - mov r2, r4 - mov r0, #1 - bl Debug_Print - bl ov11_023113E8 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _023117A4 ; =ov11_02324E00 - mvn r1, #0 - str r0, [r2, #4] - cmp r4, r1 - bne _02311684 - ldr r1, _023117AC ; =ov11_02323A04 - bl GroundBg_Init - ldr r0, _023117A4 ; =ov11_02324E00 - mvn r1, #0 - ldr r0, [r0, #4] - bl ov11_022EC27C - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r2, [r0] - ldr r1, [r0, #4] - add r0, r2, #0xc - bl ov11_022EFD5C - b _02311780 -_02311684: - bl ov11_022F17B4 - add r0, r0, #1 - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _02311730 -_02311698: ; jump table - b _0231170C ; case 0 - b _02311730 ; case 1 - b _02311730 ; case 2 - b _02311730 ; case 3 - b _02311730 ; case 4 - b _02311730 ; case 5 - b _023116CC ; case 6 - b _023116CC ; case 7 - b _023116CC ; case 8 - b _023116CC ; case 9 - b _023116CC ; case 10 - b _023116E8 ; case 11 - b _023116E8 ; case 12 -_023116CC: - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r1, _023117B0 ; =ov11_02323A20 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - b _02311750 -_023116E8: - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r1, _023117B4 ; =ov11_02323A3C - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - mov r0, #1 - bl ov11_023128C0 - b _02311750 -_0231170C: - ldr r1, _023117B8 ; =ov11_023239B4 - add r0, sp, #0 - ldr r3, [r1, #0xc] - ldr ip, [r1, #8] - ldr r1, _023117BC ; =ov11_02323A7C - mov r2, r4 - str ip, [sp] - str r3, [sp, #4] - bl Debug_FatalError -_02311730: - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r1, _023117AC ; =ov11_02323A04 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - mov r0, #1 - bl ov11_023128C0 -_02311750: - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r2, [r0] - ldr r1, [r0, #4] - add r0, r2, #0xc - bl ov11_022EFD5C - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r0, [r0, #4] - bl ov11_022F17E8 - ldr r0, _023117A4 ; =ov11_02324E00 - ldr r0, [r0] - add r0, r0, #0xc - bl ov11_022F1EEC -_02311780: - ldr r0, _023117A4 ; =ov11_02324E00 - mov r3, #3 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #8] -_0231179C: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_023117A4: .word ov11_02324E00 -_023117A8: .word ov11_02323A58 -_023117AC: .word ov11_02323A04 -_023117B0: .word ov11_02323A20 -_023117B4: .word ov11_02323A3C -_023117B8: .word ov11_023239B4 -_023117BC: .word ov11_02323A7C - arm_func_end ov11_023115F4 - - arm_func_start ov11_023117C0 -ov11_023117C0: ; 0x023117C0 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _02311824 ; =ov11_02324E00 - ldr r0, [r2] - ldr r0, [r0, #4] - cmp r0, #3 - bne _02311818 - ldr r0, _02311828 ; =ov11_023239B4 - add r1, sp, #0 - ldr r3, [r0, #4] - ldr r0, [r0] - str r3, [sp, #4] - str r0, [sp] - ldr r0, [r2, #4] - bl ov11_022F1E90 - ldr r0, _02311824 ; =ov11_02324E00 - ldr r0, [r0, #4] - bl ov11_022EF70C - ldr r0, _02311824 ; =ov11_02324E00 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0] -_02311818: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311824: .word ov11_02324E00 -_02311828: .word ov11_023239B4 - arm_func_end ov11_023117C0 - - arm_func_start ov11_0231182C -ov11_0231182C: ; 0x0231182C - stmdb sp!, {r3, lr} - ldr r0, _02311868 ; =ov11_02324E00 - ldr r1, [r0] - ldrb r1, [r1] - cmp r1, #0 - ldrne r0, [r0, #4] - cmpne r0, #0 - beq _02311860 - bl ov11_022EFB70 - ldr r0, _02311868 ; =ov11_02324E00 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0] -_02311860: - bl ov11_02312B18 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311868: .word ov11_02324E00 - arm_func_end ov11_0231182C - - arm_func_start ov11_0231186C -ov11_0231186C: ; 0x0231186C - ldr ip, _02311878 ; =ov11_0230D270 - ldr r0, _0231187C ; =ov11_02323AA8 - bx ip - .align 2, 0 -_02311878: .word ov11_0230D270 -_0231187C: .word ov11_02323AA8 - arm_func_end ov11_0231186C - - arm_func_start ov11_02311880 -ov11_02311880: ; 0x02311880 - stmdb sp!, {r3, lr} - mov r0, #0x2c - mov r1, #0xf - bl MemAlloc - ldr r1, _023118B4 ; =ov11_02324E08 - mov r2, #0 - str r0, [r1] - strb r2, [r0, #0x28] - mov r0, r2 - bl ov11_02312844 - bl ov11_023118E8 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023118B4: .word ov11_02324E08 - arm_func_end ov11_02311880 - - arm_func_start ov11_023118B8 -ov11_023118B8: ; 0x023118B8 - stmdb sp!, {r3, lr} - bl ov11_023118E8 - bl ov11_02312894 - ldr r0, _023118E4 ; =ov11_02324E08 - ldr r0, [r0] - bl MemFree - ldr r0, _023118E4 ; =ov11_02324E08 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023118E4: .word ov11_02324E08 - arm_func_end ov11_023118B8 - - arm_func_start ov11_023118E8 -ov11_023118E8: ; 0x023118E8 - stmdb sp!, {r3, lr} - ldr r0, _02311958 ; =ov11_02324E08 - mov r3, #0 - ldr r1, [r0] - mov r2, #1 - strb r3, [r1] - ldr r1, [r0] - str r2, [r1, #4] - ldr r0, [r0] - strb r2, [r0, #8] - bl ov11_02312BF4 - mov r0, #0 - bl ov11_023128C0 - mov r0, #1 - mov r1, #5 - bl ov11_022EB0C0 - ldr r0, _02311958 ; =ov11_02324E08 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GroundBg_FreeAll - ldr r0, _02311958 ; =ov11_02324E08 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02311958 ; =ov11_02324E08 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02311958: .word ov11_02324E08 - arm_func_end ov11_023118E8 - - arm_func_start ov11_0231195C -ov11_0231195C: ; 0x0231195C - ldr r0, _02311978 ; =ov11_02324E08 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02311978: .word ov11_02324E08 - arm_func_end ov11_0231195C - - arm_func_start ov11_0231197C -ov11_0231197C: ; 0x0231197C - stmdb sp!, {r3, lr} - ldr r1, _02311A28 ; =ov11_02324E08 - ldr r2, [r1, #4] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0231199C: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _023119B4 ; case 1 - b _023119D0 ; case 2 - b _023119EC ; case 3 - b _02311A08 ; case 4 - b _02311A18 ; case 5 -_023119B4: - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - mov r0, r2 - mov r2, r1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_023119D0: - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r1, #1 - mov r0, r2 - mov r2, r1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_023119EC: - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r0, r2 - mov r1, #0 - mov r2, #1 - bl ov11_022EE5EC - ldmia sp!, {r3, pc} -_02311A08: - mov r0, r2 - mov r1, #1 - bl ov11_022EE5E4 - ldmia sp!, {r3, pc} -_02311A18: - mov r0, r2 - mov r1, #0 - bl ov11_022EE5E4 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311A28: .word ov11_02324E08 - arm_func_end ov11_0231197C - - arm_func_start ov11_02311A2C -ov11_02311A2C: ; 0x02311A2C - ldr r0, _02311A48 ; =ov11_02324E08 - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #8] - bx lr - .align 2, 0 -_02311A48: .word ov11_02324E08 - arm_func_end ov11_02311A2C - - arm_func_start ov11_02311A4C -ov11_02311A4C: ; 0x02311A4C - stmdb sp!, {r3, lr} - cmp r0, #0 - beq _02311A64 - cmp r0, #1 - beq _02311A80 - ldmia sp!, {r3, pc} -_02311A64: - ldr r0, _02311A8C ; =ov11_02324E08 - mov r2, #1 - ldr r1, [r0] - strb r2, [r1, #0x28] - ldr r0, [r0] - strb r2, [r0, #8] - ldmia sp!, {r3, pc} -_02311A80: - and r0, r1, #0xff - bl ov11_0231197C - ldmia sp!, {r3, pc} - .align 2, 0 -_02311A8C: .word ov11_02324E08 - arm_func_end ov11_02311A4C - - arm_func_start ov11_02311A90 -ov11_02311A90: ; 0x02311A90 - stmdb sp!, {r3, lr} - ldr r0, _02311AF0 ; =ov11_02324E08 - ldr r2, [r0] - ldr r0, [r2, #4] - cmp r0, #1 - cmpne r0, #3 - bne _02311AE8 - ldrb r0, [r2, #0x28] - cmp r0, #0 - moveq r0, #0 - streqb r0, [r2, #8] - beq _02311AE8 - ldr r0, _02311AF0 ; =ov11_02324E08 - mov r1, #1 - strb r1, [r2, #8] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0x28] - ldr r0, [r0] - mov r1, #2 - str r1, [r0, #4] - bl ov11_022F47BC -_02311AE8: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311AF0: .word ov11_02324E08 - arm_func_end ov11_02311A90 - - arm_func_start ov11_02311AF4 -ov11_02311AF4: ; 0x02311AF4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #2 - bne _02311C9C - mov r0, #1 - strb r0, [r1, #8] - bl ov11_022F1798 - mov r4, r0 - ldr r1, _02311CA8 ; =ov11_02323B3C - mov r2, r4 - mov r0, #1 - bl Debug_Print - bl ov11_023118E8 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _02311CA4 ; =ov11_02324E08 - mvn r1, #0 - str r0, [r2, #4] - cmp r4, r1 - bne _02311B84 - ldr r1, _02311CAC ; =ov11_02323AE8 - bl GroundBg_Init - ldr r0, _02311CA4 ; =ov11_02324E08 - mvn r1, #0 - ldr r0, [r0, #4] - bl ov11_022EC27C - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r2, [r0] - ldr r1, [r0, #4] - add r0, r2, #0xc - bl ov11_022EFD5C - b _02311C80 -_02311B84: - bl ov11_022F17B4 - add r0, r0, #1 - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _02311C30 -_02311B98: ; jump table - b _02311C0C ; case 0 - b _02311C30 ; case 1 - b _02311C30 ; case 2 - b _02311C30 ; case 3 - b _02311C30 ; case 4 - b _02311C30 ; case 5 - b _02311BCC ; case 6 - b _02311BCC ; case 7 - b _02311BCC ; case 8 - b _02311BCC ; case 9 - b _02311BCC ; case 10 - b _02311BE8 ; case 11 - b _02311BE8 ; case 12 -_02311BCC: - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r1, _02311CB0 ; =ov11_02323B04 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - b _02311C50 -_02311BE8: - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r1, _02311CB4 ; =ov11_02323B20 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - mov r0, #1 - bl ov11_023128C0 - b _02311C50 -_02311C0C: - ldr r1, _02311CB8 ; =ov11_02323A98 - add r0, sp, #0 - ldr r3, [r1, #0xc] - ldr ip, [r1, #8] - ldr r1, _02311CBC ; =ov11_02323B60 - mov r2, r4 - str ip, [sp] - str r3, [sp, #4] - bl Debug_FatalError -_02311C30: - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r1, _02311CAC ; =ov11_02323AE8 - ldr r0, [r0, #4] - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - mov r0, #1 - bl ov11_023128C0 -_02311C50: - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r2, [r0] - ldr r1, [r0, #4] - add r0, r2, #0xc - bl ov11_022EFD5C - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r0, [r0, #4] - bl ov11_022F17E8 - ldr r0, _02311CA4 ; =ov11_02324E08 - ldr r0, [r0] - add r0, r0, #0xc - bl ov11_022F1EEC -_02311C80: - ldr r0, _02311CA4 ; =ov11_02324E08 - mov r3, #3 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #8] -_02311C9C: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_02311CA4: .word ov11_02324E08 -_02311CA8: .word ov11_02323B3C -_02311CAC: .word ov11_02323AE8 -_02311CB0: .word ov11_02323B04 -_02311CB4: .word ov11_02323B20 -_02311CB8: .word ov11_02323A98 -_02311CBC: .word ov11_02323B60 - arm_func_end ov11_02311AF4 - - arm_func_start ov11_02311CC0 -ov11_02311CC0: ; 0x02311CC0 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _02311D24 ; =ov11_02324E08 - ldr r0, [r2] - ldr r0, [r0, #4] - cmp r0, #3 - bne _02311D18 - ldr r0, _02311D28 ; =ov11_02323A98 - add r1, sp, #0 - ldr r3, [r0, #4] - ldr r0, [r0] - str r3, [sp, #4] - str r0, [sp] - ldr r0, [r2, #4] - bl ov11_022F1E90 - ldr r0, _02311D24 ; =ov11_02324E08 - ldr r0, [r0, #4] - bl ov11_022EF70C - ldr r0, _02311D24 ; =ov11_02324E08 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0] -_02311D18: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311D24: .word ov11_02324E08 -_02311D28: .word ov11_02323A98 - arm_func_end ov11_02311CC0 - - arm_func_start ov11_02311D2C -ov11_02311D2C: ; 0x02311D2C - stmdb sp!, {r3, lr} - ldr r0, _02311D68 ; =ov11_02324E08 - ldr r1, [r0] - ldrb r1, [r1] - cmp r1, #0 - ldrne r0, [r0, #4] - cmpne r0, #0 - beq _02311D60 - bl ov11_022EFB70 - ldr r0, _02311D68 ; =ov11_02324E08 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0] -_02311D60: - bl ov11_02312B18 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311D68: .word ov11_02324E08 - arm_func_end ov11_02311D2C - - arm_func_start ov11_02311D6C -ov11_02311D6C: ; 0x02311D6C - ldr ip, _02311D78 ; =ov11_0230D270 - ldr r0, _02311D7C ; =ov11_02323B98 - bx ip - .align 2, 0 -_02311D78: .word ov11_0230D270 -_02311D7C: .word ov11_02323B98 - arm_func_end ov11_02311D6C - - arm_func_start ov11_02311D80 -ov11_02311D80: ; 0x02311D80 - stmdb sp!, {r4, lr} - mov r0, #0x30 - mov r1, #0xf - bl MemAlloc - ldr r1, _02311E28 ; =ov11_02324E10 - str r0, [r1, #4] - bl ov11_02311EA4 - mov r0, #0x10 - bl ov11_022E9D10 - ldr r0, _02311E28 ; =ov11_02324E10 - mov r3, #1 - ldr r1, [r0, #4] - mov r2, #0 - strb r3, [r1, #0xa] - ldr r1, [r0, #4] - strb r3, [r1, #0xb] - ldr r1, [r0, #4] - strb r2, [r1, #0xc] - ldr r1, [r0, #4] - str r3, [r1, #4] - ldr r0, [r0, #4] - strb r2, [r0, #8] - bl ov11_022E8168 - movs r4, r0 - beq _02311E20 - ldr ip, _02311E28 ; =ov11_02324E10 - ldmia r4!, {r0, r1, r2, r3} - ldr ip, [ip, #4] - add lr, ip, #0x10 - mov ip, lr - stmia lr!, {r0, r1, r2, r3} - ldmia r4, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - mov r0, ip - mov r1, #0 - bl CreateJobSummary - ldr r0, _02311E28 ; =ov11_02324E10 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #8] -_02311E20: - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_02311E28: .word ov11_02324E10 - arm_func_end ov11_02311D80 - - arm_func_start ov11_02311E2C -ov11_02311E2C: ; 0x02311E2C - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _02311E58 - ldr r0, _02311EA0 ; =ov11_02324E10 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #7 - movne r0, #1 - strneb r0, [r1, #0xc] - movne r0, #0 - ldmneia sp!, {r3, pc} -_02311E58: - bl ov11_02311EA4 - ldr r0, _02311EA0 ; =ov11_02324E10 - mov r2, #7 - ldr r1, [r0, #4] - str r2, [r1, #4] - ldr r0, [r0, #4] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _02311E80 - bl sub_02069904 -_02311E80: - ldr r0, _02311EA0 ; =ov11_02324E10 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02311EA0 ; =ov11_02324E10 - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311EA0: .word ov11_02324E10 - arm_func_end ov11_02311E2C - - arm_func_start ov11_02311EA4 -ov11_02311EA4: ; 0x02311EA4 - stmdb sp!, {r3, lr} - ldr r1, _02311F1C ; =ov11_02324E10 - mov r3, #1 - ldr r0, [r1, #4] - mov r2, #0 - strb r2, [r0] - ldr r2, [r1, #4] - sub r0, r3, #2 - str r3, [r2, #4] - ldr r1, [r1, #4] - strb r3, [r1, #9] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _02311F1C ; =ov11_02324E10 - ldr r0, [r0] - cmp r0, #0 - beq _02311F08 - bl GroundBg_FreeAll - ldr r0, _02311F1C ; =ov11_02324E10 - ldr r0, [r0] - bl MemFree - ldr r0, _02311F1C ; =ov11_02324E10 - mov r1, #0 - str r1, [r0] -_02311F08: - ldr r0, _02311F1C ; =ov11_02324E10 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0xb] - ldmia sp!, {r3, pc} - .align 2, 0 -_02311F1C: .word ov11_02324E10 - arm_func_end ov11_02311EA4 - - arm_func_start ov11_02311F20 -ov11_02311F20: ; 0x02311F20 - ldr r0, _02311F3C ; =ov11_02324E10 - ldr r1, [r0, #4] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #9] - bx lr - .align 2, 0 -_02311F3C: .word ov11_02324E10 - arm_func_end ov11_02311F20 - - arm_func_start ov11_02311F40 -ov11_02311F40: ; 0x02311F40 - bx lr - arm_func_end ov11_02311F40 - - arm_func_start ov11_02311F44 -ov11_02311F44: ; 0x02311F44 - stmdb sp!, {r3, lr} - ldr r0, _023120FC ; =ov11_02324E10 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _023120F4 -_02311F60: ; jump table - b _02311F80 ; case 0 - b _02311FA8 ; case 1 - b _023120F4 ; case 2 - b _023120F4 ; case 3 - b _02312038 ; case 4 - b _02312064 ; case 5 - b _023120A8 ; case 6 - b _023120E4 ; case 7 -_02311F80: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _023120FC ; =ov11_02324E10 - mov r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _023120F4 - ldr r0, _023120FC ; =ov11_02324E10 - ldr r0, [r0, #4] - str r1, [r0, #4] -_02311FA8: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _023120FC ; =ov11_02324E10 - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _023120F4 - ldr r0, _023120FC ; =ov11_02324E10 - ldr r2, [r0, #4] - ldrb r1, [r2, #0xc] - cmp r1, #0 - beq _02312000 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _023120FC ; =ov11_02324E10 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #6 - strb r3, [r2, #9] - ldr r0, [r0, #4] - str r1, [r0, #4] - b _023120F4 -_02312000: - ldrb r1, [r2, #0xa] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #9] - beq _023120F4 - mov r1, #1 - strb r1, [r2, #9] - ldr r1, [r0, #4] - mov r2, #0 - strb r2, [r1, #0xa] - ldr r0, [r0, #4] - mov r1, #2 - str r1, [r0, #4] - b _023120F4 -_02312038: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _023120FC ; =ov11_02324E10 - movne r1, #1 - ldrne r0, [r0, #4] - strneb r1, [r0, #9] - bne _023120F4 - ldr r0, _023120FC ; =ov11_02324E10 - mov r1, #5 - ldr r0, [r0, #4] - str r1, [r0, #4] -_02312064: - ldr r0, _023120FC ; =ov11_02324E10 - ldr r1, [r0, #4] - ldrb r0, [r1, #0xc] - cmp r0, #0 - moveq r0, #0 - streqb r0, [r1, #9] - beq _023120F4 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _023120FC ; =ov11_02324E10 - mov r3, #0 - ldr r2, [r0, #4] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0, #4] - strb r1, [r0, #9] - b _023120F4 -_023120A8: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _023120F4 - ldr r0, _023120FC ; =ov11_02324E10 - ldr r1, [r0, #4] - ldrb r0, [r1, #8] - cmp r0, #0 - beq _023120D4 - mov r0, #0 - strb r0, [r1, #8] - bl sub_02069904 -_023120D4: - ldr r0, _023120FC ; =ov11_02324E10 - mov r1, #7 - ldr r0, [r0, #4] - str r1, [r0, #4] -_023120E4: - ldr r0, _023120FC ; =ov11_02324E10 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #9] -_023120F4: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_023120FC: .word ov11_02324E10 - arm_func_end ov11_02311F44 - - arm_func_start ov11_02312100 -ov11_02312100: ; 0x02312100 - stmdb sp!, {r3, lr} - ldr r0, _02312164 ; =ov11_02324E10 - ldr r3, [r0, #4] - ldr r0, [r3, #4] - cmp r0, #2 - ldmneia sp!, {r3, pc} - mov r2, #1 - mov r0, #0x2f4 - mov r1, #0xf - strb r2, [r3, #9] - bl MemAlloc - ldr r2, _02312164 ; =ov11_02324E10 - ldr r1, _02312168 ; =ov11_02323B7C - str r0, [r2] - bl GroundBg_Init - ldr r0, _02312164 ; =ov11_02324E10 - ldr r1, _0231216C ; =ov11_02323BBC - ldr r0, [r0] - mov r2, #0 - bl ov11_022EDE64 - ldr r0, _02312164 ; =ov11_02324E10 - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02312164: .word ov11_02324E10 -_02312168: .word ov11_02323B7C -_0231216C: .word ov11_02323BBC - arm_func_end ov11_02312100 - - arm_func_start ov11_02312170 -ov11_02312170: ; 0x02312170 - stmdb sp!, {r3, lr} - ldr r0, _023121FC ; =ov11_02324E10 - ldr r2, [r0, #4] - ldr r1, [r2, #4] - cmp r1, #3 - bne _023121C4 - mov r1, #1 - strb r1, [r2, #9] - ldr r0, [r0] - bl ov11_022EF70C - mov r0, #0x10 - bl ov11_022E9C98 - mov r0, #1 - bl ov11_022EF53C - ldr r0, _023121FC ; =ov11_02324E10 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #4 - strb r3, [r2] - ldr r0, [r0, #4] - str r1, [r0, #4] -_023121C4: - ldr r0, _023121FC ; =ov11_02324E10 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #0 - beq _023121E4 - sub r0, r0, #4 - cmp r0, #2 - bhi _023121F4 -_023121E4: - ldrb r0, [r1, #8] - cmp r0, #0 - beq _023121F4 - bl sub_020698B8 -_023121F4: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_023121FC: .word ov11_02324E10 - arm_func_end ov11_02312170 - - arm_func_start ov11_02312200 -ov11_02312200: ; 0x02312200 - stmdb sp!, {r3, lr} - ldr r0, _0231224C ; =ov11_02324E10 - ldr r1, [r0, #4] - ldrb r1, [r1] - cmp r1, #0 - ldrne r0, [r0] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #1 - mov r1, #2 - bl sub_02008F64 - ldr r0, _0231224C ; =ov11_02324E10 - ldr r0, [r0] - bl ov11_022EFB70 - ldr r0, _0231224C ; =ov11_02324E10 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0231224C: .word ov11_02324E10 - arm_func_end ov11_02312200 - - arm_func_start ov11_02312250 -ov11_02312250: ; 0x02312250 - ldr ip, _0231225C ; =ov11_0230D270 - ldr r0, _02312260 ; =ov11_02323BF8 - bx ip - .align 2, 0 -_0231225C: .word ov11_0230D270 -_02312260: .word ov11_02323BF8 - arm_func_end ov11_02312250 - - arm_func_start ov11_02312264 -ov11_02312264: ; 0x02312264 - stmdb sp!, {r3, lr} -#ifdef JAPAN - mov r0, #0xf4 -#else - mov r0, #0x1b8 -#endif - mov r1, #0xf - bl MemAlloc - ldr r1, _0231233C ; =ov11_02324E18 -#if defined(EUROPE) - mvn r2, #0 - str r0, [r1, #4] - strh r2, [r0] - bl GetLanguage - mov r2, r0, lsl #1 - ldr r0, _02312D14 ; =0x0232473C - ldr ip, _02312D18 ; =0x00000115 - ldr r1, _0231233C ; =ov11_02324E18 - ldrsh r2, [r0, r2] - ldr r0, [r1, #4] - rsb r3, ip, #0x114 - strh r2, [r0, #0x2c] - ldr r2, [r1, #4] - mov r0, #0 - strh ip, [r2, #0x2c] - ldr r2, [r1, #4] -#elif defined(JAPAN) - mvn r2, #0 - str r0, [r1, #4] - strh r2, [r0] - mov r0, #0 - mov r1, #0x46 - bl LoadScriptVariableValue - cmp r0, #1 - ldreq r0, _0231233C ; =ov11_02324E18 - ldreq r1, _023138CC ; =0x00000116 - ldrne r0, _0231233C ; =ov11_02324E18 - ldrne r1, _023138D0_JP ; =0x00000115 - ldr r0, [r0, #4] - mvn r3, #0 - strh r1, [r0, #0x2c] - ldr r1, _0231233C ; =ov11_02324E18 - mov r0, #0 - ldr r2, [r1, #4] -#else - mvn r3, #0 - str r0, [r1, #4] - strh r3, [r0] - ldr r0, [r1, #4] - rsb r2, r3, #0x114 - strh r2, [r0, #0x2c] - ldr r2, [r1, #4] - mov r0, #0 -#endif - strh r3, [r2, #2] - ldr r1, [r1, #4] - strh r3, [r1, #0x2e] - bl ov11_02312844 -#ifdef EUROPE - bl GetLanguage - ldr r1, _0231233C ; =0x02325958 - mov r2, r0, lsl #1 - ldr r0, [r1, #4] - ldr r1, _02312D1C ; =0x02324728 - add r0, r0, #0x30 - ldrsh r1, [r1, r2] - ldr r2, _02312340 ; =0xA0080000 -#else - ldr r0, _0231233C ; =ov11_02324E18 - ldr r2, _02312340 ; =0xA0080000 - ldr r0, [r0, #4] - mov r1, #0xa7 - add r0, r0, #0x30 -#endif - bl LoadObjectAnimData - ldr r0, _0231233C ; =ov11_02324E18 - mov r1, #8 - ldr r0, [r0, #4] - add r0, r0, #0x30 - bl ov11_022F4974 - ldr r0, _0231233C ; =ov11_02324E18 - mov r1, #0x800 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x30 - bl SetAnimDataFields2 -#ifndef JAPAN -#ifdef EUROPE - bl GetLanguage - mov r2, r0, lsl #1 -#endif - ldr r0, _0231233C ; =ov11_02324E18 - ldr r1, _02312344 ; =0x00000179 - ldr r0, [r0, #4] -#ifdef EUROPE - ldrsh r1, [r1, r2] -#endif - ldr r2, _02312340 ; =0xA0080000 - add r0, r0, #0xf4 - bl LoadObjectAnimData - ldr r0, _0231233C ; =ov11_02324E18 - mov r1, #0xa - ldr r0, [r0, #4] - add r0, r0, #0xf4 - bl ov11_022F4974 - ldr r0, _0231233C ; =ov11_02324E18 - mov r1, #0x800 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0xf4 - bl SetAnimDataFields2 -#endif - bl ov11_02312398 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0231233C: .word ov11_02324E18 -#if defined(EUROPE) -_02312D14: .word 0x0232473C -_02312D18: .word 0x00000115 -_02312D1C: .word 0x02324728 -_02312340: .word 0xA0080000 -_02312344: .word 0x02324732 -#elif defined(JAPAN) -_023138CC: .word 0x00000116 -_023138D0_JP: .word 0x00000115 -_02312340: .word 0xA0080000 -#else -_02312340: .word 0xA0080000 -_02312344: .word 0x00000179 -#endif - arm_func_end ov11_02312264 - - arm_func_start ov11_02312348 -ov11_02312348: ; 0x02312348 - stmdb sp!, {r3, lr} - bl ov11_02312398 - bl ov11_02312894 - ldr r0, _02312394 ; =ov11_02324E18 - ldr r0, [r0, #4] - add r0, r0, #0x30 - bl ov11_022F6EFC - ldr r0, _02312394 ; =ov11_02324E18 -#ifndef JAPAN - ldr r0, [r0, #4] - add r0, r0, #0xf4 - bl ov11_022F6EFC - ldr r0, _02312394 ; =ov11_02324E18 -#endif - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02312394 ; =ov11_02324E18 - mov r1, #0 - str r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02312394: .word ov11_02324E18 - arm_func_end ov11_02312348 - - arm_func_start ov11_02312398 -ov11_02312398: ; 0x02312398 - stmdb sp!, {r3, lr} - ldr r0, _02312414 ; =ov11_02324E18 - mov r3, #0 - ldr r1, [r0, #4] - mov r2, #1 - strb r3, [r1, #4] - ldr r1, [r0, #4] - str r2, [r1, #8] - ldr r0, [r0, #4] - strb r2, [r0, #0xc] - bl ov11_02312BF4 - mov r0, #0 - bl ov11_023128C0 - mov r0, #1 - bl ov11_022EAFF8 - mov r0, #1 - ldr r2, _02312418 ; =ov11_02323BE0 - mov r1, r0 - bl ov11_022EB0E4 - ldr r0, _02312414 ; =ov11_02324E18 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GroundBg_FreeAll - ldr r0, _02312414 ; =ov11_02324E18 - ldr r0, [r0] - bl MemFree - ldr r0, _02312414 ; =ov11_02324E18 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02312414: .word ov11_02324E18 -#ifdef JAPAN -_02312418: .word ov11_02323BD8 -#else -_02312418: .word ov11_02323BE0 -#endif - arm_func_end ov11_02312398 - - arm_func_start ov11_0231241C -ov11_0231241C: ; 0x0231241C - ldr r0, _02312438 ; =ov11_02324E18 - ldr r1, [r0, #4] - ldrb r0, [r1, #4] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #0xc] - bx lr - .align 2, 0 -_02312438: .word ov11_02324E18 - arm_func_end ov11_0231241C - - arm_func_start ov11_0231243C -ov11_0231243C: ; 0x0231243C - cmp r0, #0 - beq _02312450 - cmp r0, #1 - beq _0231246C - bx lr -_02312450: - ldr r0, _02312488 ; =ov11_02324E18 - mov r2, #1 - ldr r3, [r0, #4] - strh r1, [r3, #0x2c] - ldr r0, [r0, #4] - strb r2, [r0, #0xc] - bx lr -_0231246C: - ldr r0, _02312488 ; =ov11_02324E18 - mov r2, #1 - ldr r3, [r0, #4] - strh r1, [r3, #0x2e] - ldr r0, [r0, #4] - strb r2, [r0, #0xc] - bx lr - .align 2, 0 -_02312488: .word ov11_02324E18 - arm_func_end ov11_0231243C - - arm_func_start ov11_0231248C -ov11_0231248C: ; 0x0231248C - stmdb sp!, {r3, lr} - ldr r0, _0231253C ; =ov11_02324E18 - ldr r2, [r0, #4] - ldr r0, [r2, #8] - cmp r0, #1 - cmpne r0, #4 - bne _02312534 - ldrsh r0, [r2, #0x2c] - mvn ip, #0 - cmp r0, ip - beq _023124F4 - mov r1, #1 - ldr r0, _0231253C ; =ov11_02324E18 - strb r1, [r2, #0xc] - ldr r3, [r0, #4] - mov r2, #2 - ldrsh r1, [r3, #0x2c] - strh r1, [r3] - ldr r1, [r0, #4] - strh ip, [r1, #0x2c] - ldr r1, [r0, #4] - str r2, [r1, #8] - ldr r0, [r0, #4] - ldrsh r0, [r0] - bl ov11_022F4734 - b _02312534 -_023124F4: - ldrsh r0, [r2, #0x2e] - cmp r0, ip - moveq r0, #0 - streqb r0, [r2, #0xc] - beq _02312534 - mov r1, #1 - strb r1, [r2, #0xc] - ldr r0, _0231253C ; =ov11_02324E18 - mov r1, #3 - ldr r3, [r0, #4] - ldrsh r2, [r3, #0x2e] - strh r2, [r3, #2] - ldr r2, [r0, #4] - strh ip, [r2, #0x2e] - ldr r0, [r0, #4] - str r1, [r0, #8] -_02312534: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0231253C: .word ov11_02324E18 - arm_func_end ov11_0231248C - - arm_func_start ov11_02312540 -ov11_02312540: ; 0x02312540 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r1, _02312710 ; =ov11_02324E18 - ldr r2, [r1, #4] - ldr r0, [r2, #8] - cmp r0, #2 - bne _023126D0 - mov r0, #1 - strb r0, [r2, #0xc] - ldr r2, [r1, #4] - ldr r1, _02312714 ; =ov11_02323C8C - ldrsh r5, [r2] - mov r2, r5 - bl Debug_Print - bl ov11_02312398 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _02312710 ; =ov11_02324E18 - mvn r1, #0 - str r0, [r2] - ldr r0, [r2, #4] - cmp r5, r1 - strh r5, [r0] - bne _023125D4 - ldr r0, [r2] - ldr r1, _02312718 ; =ov11_02323C38 - bl GroundBg_Init - ldr r0, _02312710 ; =ov11_02324E18 - mvn r1, #0 - ldr r0, [r0] - bl ov11_022EC27C - ldr r0, _02312710 ; =ov11_02324E18 - ldmia r0, {r1, r2} - add r0, r2, #0x10 - bl ov11_022EFD5C - b _023126B0 -_023125D4: - mov r0, #0xc - smulbb r1, r5, r0 - ldr r3, _0231271C ; =EVENTS - ldrsh r0, [r3, r1] - add r4, r3, r1 - add r0, r0, #1 - cmp r0, #0xa - addls pc, pc, r0, lsl #2 - b _02312664 -_023125F8: ; jump table - b _0231263C ; case 0 - b _02312664 ; case 1 - b _02312664 ; case 2 - b _02312664 ; case 3 - b _02312664 ; case 4 - b _02312664 ; case 5 - b _02312624 ; case 6 - b _02312624 ; case 7 - b _02312624 ; case 8 - b _02312624 ; case 9 - b _02312624 ; case 10 -_02312624: - ldr r0, [r2] - ldr r1, _02312720 ; =ov11_02323C54 - bl GroundBg_Init - mov r0, #1 - bl ov11_022EF53C - b _0231267C -_0231263C: - ldr r0, _02312724 ; =ov11_02323BD0 - ldrsh r3, [r4] -#ifdef JAPAN - ldr ip, [r0, #4] - ldr lr, [r0] -#else - ldr ip, [r0, #0x24] - ldr lr, [r0, #0x20] -#endif - ldr r1, _02312728 ; =ov11_02323CAC - add r0, sp, #0 - mov r2, r5 - str lr, [sp] - str ip, [sp, #4] - bl Debug_FatalError -_02312664: - ldr r0, _02312710 ; =ov11_02324E18 - ldr r1, _02312718 ; =ov11_02323C38 - ldr r0, [r0] - bl GroundBg_Init - mov r0, #1 - bl ov11_023128C0 -_0231267C: - ldr r0, _02312710 ; =ov11_02324E18 - ldrsh r1, [r4, #4] - ldr r0, [r0] - bl ov11_022EC27C - ldr r0, _02312710 ; =ov11_02324E18 - ldmia r0, {r1, r2} - add r0, r2, #0x10 - bl ov11_022EFD5C - ldr r0, _02312710 ; =ov11_02324E18 - ldr r2, _0231272C ; =ov11_02323BD0 - ldr r0, [r0] - mov r1, #0 - bl ov11_022EF2D4 -_023126B0: - ldr r0, _02312710 ; =ov11_02324E18 - mov r3, #4 - ldr r2, [r0, #4] - mov r1, #0 - str r3, [r2, #8] - ldr r0, [r0, #4] - strb r1, [r0, #0xc] - b _02312708 -_023126D0: - cmp r0, #3 - bne _02312708 - mov r0, #1 - strb r0, [r2, #0xc] - ldr r0, [r1, #4] - ldrsh r0, [r0, #2] - bl ov11_0231297C - ldr r0, _02312710 ; =ov11_02324E18 - mov r3, #4 - ldr r2, [r0, #4] - mov r1, #0 - str r3, [r2, #8] - ldr r0, [r0, #4] - strb r1, [r0, #0xc] -_02312708: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02312710: .word ov11_02324E18 -_02312714: .word ov11_02323C8C -_02312718: .word ov11_02323C38 -_0231271C: .word EVENTS -_02312720: .word ov11_02323C54 -_02312724: .word ov11_02323BD0 -_02312728: .word ov11_02323CAC -#ifdef JAPAN -_0231272C: .word ov11_02323BE0 -#else -_0231272C: .word ov11_02323BD0 -#endif - arm_func_end ov11_02312540 - - arm_func_start ov11_02312730 -ov11_02312730: ; 0x02312730 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _023127F8 ; =ov11_02324E18 - ldr r0, [r0, #4] - ldr r0, [r0, #8] - cmp r0, #4 - bne _023127E8 - add r1, sp, #0 - mov r0, #1 - bl ov11_022EB3C8 - cmp r0, #0 - moveq r0, #0 - streq r0, [sp] - streq r0, [sp, #4] - ldr r0, _023127F8 ; =ov11_02324E18 - ldr r1, _023127FC ; =ov11_02323BE8 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x30 - bl AnimRelatedFunction__022F6F14 - ldr r0, _023127F8 ; =ov11_02324E18 -#ifndef JAPAN - ldr r1, _02312800 ; =ov11_02323BD8 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0xf4 - bl AnimRelatedFunction__022F6F14 - ldr r0, _023127F8 ; =ov11_02324E18 -#endif - add r1, sp, #0 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x10 - bl ov11_022F042C - cmp r0, #0 - beq _023127CC - ldr r0, _023127F8 ; =ov11_02324E18 - add r2, sp, #0 - ldr r0, [r0] - mov r1, #0 - bl ov11_022EF2D4 -_023127CC: - ldr r0, _023127F8 ; =ov11_02324E18 - ldr r0, [r0] - bl ov11_022EF70C - ldr r0, _023127F8 ; =ov11_02324E18 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #4] -_023127E8: - bl ov11_02312A74 - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_023127F8: .word ov11_02324E18 -_023127FC: .word ov11_02323BE8 -#ifndef JAPAN -_02312800: .word ov11_02323BD8 -#endif - arm_func_end ov11_02312730 - - arm_func_start ov11_02312804 -ov11_02312804: ; 0x02312804 - stmdb sp!, {r3, lr} - ldr r0, _02312840 ; =ov11_02324E18 - ldr r1, [r0, #4] - ldrb r1, [r1, #4] - cmp r1, #0 - ldrne r0, [r0] - cmpne r0, #0 - beq _02312838 - bl ov11_022EFB70 - ldr r0, _02312840 ; =ov11_02324E18 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #4] -_02312838: - bl ov11_02312B18 - ldmia sp!, {r3, pc} - .align 2, 0 -_02312840: .word ov11_02324E18 - arm_func_end ov11_02312804 - - arm_func_start ov11_02312844 -ov11_02312844: ; 0x02312844 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x34 - mov r1, #0xf - bl MemAlloc - ldr r1, _02312890 ; =ov11_02324E20 - mov ip, #0 - str r0, [r1, #4] - strb ip, [r0, #4] - ldr r2, [r1, #4] - mov r0, r4 - strb ip, [r2, #3] - ldr r3, [r1, #4] - sub r2, ip, #1 - strb ip, [r3, #2] - ldr r1, [r1, #4] - strh r2, [r1] - bl ov11_023128C0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02312890: .word ov11_02324E20 - arm_func_end ov11_02312844 - - arm_func_start ov11_02312894 -ov11_02312894: ; 0x02312894 - stmdb sp!, {r3, lr} - mov r0, #0 - bl ov11_023128C0 - ldr r0, _023128BC ; =ov11_02324E20 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _023128BC ; =ov11_02324E20 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_023128BC: .word ov11_02324E20 - arm_func_end ov11_02312894 - - arm_func_start ov11_023128C0 -ov11_023128C0: ; 0x023128C0 - stmdb sp!, {r4, lr} - ldr r1, _02312974 ; =ov11_02324E20 - mov r3, #0 - ldr r2, [r1, #4] - mov r4, r0 - strb r3, [r2, #4] - ldr r0, [r1, #4] - sub r2, r3, #1 - strb r3, [r0, #3] - ldr r0, [r1, #4] - strb r4, [r0, #2] - ldr r0, [r1, #4] - strh r2, [r0] - ldr r0, [r1] - cmp r0, #0 - beq _0231291C - bl GroundBg_FreeAll - ldr r0, _02312974 ; =ov11_02324E20 - ldr r0, [r0] - bl MemFree - ldr r0, _02312974 ; =ov11_02324E20 - mov r1, #0 - str r1, [r0] -_0231291C: - cmp r4, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _02312974 ; =ov11_02324E20 - ldr r1, _02312978 ; =ov11_02323CD0 - str r0, [r2] - bl GroundBg_Init - ldr r0, _02312974 ; =ov11_02324E20 - mvn r1, #0 - ldr r0, [r0] - bl ov11_022EC27C - ldr r0, _02312974 ; =ov11_02324E20 - ldmia r0, {r1, r2} - add r0, r2, #0x18 - bl ov11_022EFD5C - ldr r0, _02312974 ; =ov11_02324E20 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #3] - ldmia sp!, {r4, pc} - .align 2, 0 -_02312974: .word ov11_02324E20 -_02312978: .word ov11_02323CD0 - arm_func_end ov11_023128C0 - - arm_func_start ov11_0231297C -ov11_0231297C: ; 0x0231297C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _02312A68 ; =ov11_02324E20 - mov r4, r0 - ldr r0, [r1, #4] - ldr r1, _02312A6C ; =ov11_02323CEC - ldrb r3, [r0, #2] - mov r2, r4 - mov r0, #1 - bl Debug_Print - ldr r1, _02312A68 ; =ov11_02324E20 - mov r2, #0 - ldr r0, [r1, #4] - strb r2, [r0, #4] - ldr r0, [r1, #4] - strb r2, [r0, #3] - ldr r0, [r1, #4] - strh r4, [r0] - ldr r0, [r1, #4] - ldrb r0, [r0, #2] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - sub r0, r2, #1 - cmp r4, r0 - bne _023129FC - ldr r0, [r1] - sub r1, r2, #1 - bl ov11_022EC27C - ldr r0, _02312A68 ; =ov11_02324E20 - ldmia r0, {r1, r2} - add r0, r2, #0x18 - bl ov11_022EFD5C - b _02312A54 -_023129FC: - ldr r5, _02312A70 ; =GROUND_WEATHER_TABLE - ldr r0, [r1] - add r1, r5, r4, lsl #2 - ldrsh r1, [r1, #2] - mov r4, r4, lsl #2 - bl ov11_022EC27C - ldr r0, _02312A68 ; =ov11_02324E20 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #8] - ldr r1, [r0, #4] - str r2, [r1, #0xc] - ldr r1, [r0, #4] - str r2, [r1, #0x10] - ldr r1, [r0, #4] - str r2, [r1, #0x14] - ldrsh r1, [r5, r4] - cmp r1, #1 - bne _02312A54 - ldr r0, [r0] - mov r1, #2 - bl ov11_022EE620 -_02312A54: - ldr r0, _02312A68 ; =ov11_02324E20 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #3] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02312A68: .word ov11_02324E20 -_02312A6C: .word ov11_02323CEC -_02312A70: .word GROUND_WEATHER_TABLE - arm_func_end ov11_0231297C - - arm_func_start ov11_02312A74 -ov11_02312A74: ; 0x02312A74 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _02312B0C ; =ov11_02324E20 - ldr r1, [r0, #4] - ldrb r0, [r1, #3] - cmp r0, #0 - beq _02312B04 - ldrsh r1, [r1] - mvn r0, #0 - cmp r1, r0 - beq _02312AD4 - ldr r0, _02312B10 ; =GROUND_WEATHER_TABLE - mov r1, r1, lsl #2 - ldrsh r0, [r0, r1] - cmp r0, #0 - bne _02312AD4 - add r0, sp, #0 - bl ov11_022F1E70 - ldr r0, _02312B0C ; =ov11_02324E20 - add r2, sp, #0 - ldr r0, [r0] - mov r1, #0 - bl ov11_022EF2D4 - b _02312AE8 -_02312AD4: - ldr r0, _02312B0C ; =ov11_02324E20 - ldr r2, _02312B14 ; =ov11_02323CC8 - ldr r0, [r0] - mov r1, #0 - bl ov11_022EF2D4 -_02312AE8: - ldr r0, _02312B0C ; =ov11_02324E20 - ldr r0, [r0] - bl ov11_022EF70C - ldr r0, _02312B0C ; =ov11_02324E20 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #4] -_02312B04: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02312B0C: .word ov11_02324E20 -_02312B10: .word GROUND_WEATHER_TABLE -_02312B14: .word ov11_02323CC8 - arm_func_end ov11_02312A74 - - arm_func_start ov11_02312B18 -ov11_02312B18: ; 0x02312B18 - stmdb sp!, {r3, lr} - ldr r0, _02312B3C ; =ov11_02324E20 - ldr r1, [r0, #4] - ldrb r1, [r1, #4] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0] - bl ov11_022EFB70 - ldmia sp!, {r3, pc} - .align 2, 0 -_02312B3C: .word ov11_02324E20 - arm_func_end ov11_02312B18 - - arm_func_start ov11_02312B40 -ov11_02312B40: ; 0x02312B40 - stmdb sp!, {r3, lr} - ldr r0, _02312BC4 ; =0x00000584 - mov r1, #1 - bl MemAlloc - ldr r2, _02312BC8 ; =ov11_02324E28 - mov r1, #0 - str r0, [r2, #4] - str r1, [r0] - ldr r0, [r2, #4] - strh r1, [r0, #4] - ldr r0, [r2, #4] - strh r1, [r0, #6] - ldr r0, [r2, #4] - add r0, r0, #0x500 - strh r1, [r0, #0x78] - ldr r0, [r2, #4] - strb r1, [r0, #0x10] - ldr r0, [r2, #4] - strb r1, [r0, #0x570] - ldr r0, [r2, #4] - strb r1, [r0, #0x571] - ldr r0, [r2, #4] - strb r1, [r0, #0x572] - ldr r0, [r2, #4] - strb r1, [r0, #0x573] - ldr r0, [r2, #4] - strb r1, [r0, #0x574] - ldr r0, [r2, #4] - strb r1, [r0, #0x575] - ldr r0, [r2, #4] - strb r1, [r0, #0x576] - bl ov11_02312BF4 - ldmia sp!, {r3, pc} - .align 2, 0 -_02312BC4: .word 0x00000584 -_02312BC8: .word ov11_02324E28 - arm_func_end ov11_02312B40 - - arm_func_start ov11_02312BCC -ov11_02312BCC: ; 0x02312BCC - stmdb sp!, {r3, lr} - bl ov11_02312BF4 - ldr r0, _02312BF0 ; =ov11_02324E28 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02312BF0 ; =ov11_02324E28 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02312BF0: .word ov11_02324E28 - arm_func_end ov11_02312BCC - - arm_func_start ov11_02312BF4 -ov11_02312BF4: ; 0x02312BF4 - stmdb sp!, {r3, lr} - bl ov11_02313798 - ldr r0, _02312C54 ; =ov11_02324E28 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x10] - cmp r0, #0 - beq _02312C24 - bl ov11_023146F8 - ldr r0, _02312C54 ; =ov11_02324E28 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x10] -_02312C24: - ldr r0, _02312C54 ; =ov11_02324E28 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1] - ldr r1, [r0, #4] - strh r2, [r1, #4] - ldr r1, [r0, #4] - strh r2, [r1, #6] - ldr r0, [r0, #4] - add r0, r0, #0x500 - strh r2, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_02312C54: .word ov11_02324E28 - arm_func_end ov11_02312BF4 - - arm_func_start ov11_02312C58 -ov11_02312C58: ; 0x02312C58 - ldr r0, _02312C8C ; =ov11_02324E28 - ldr r1, [r0, #4] - add r0, r1, #0x500 - ldrsh r0, [r0, #0x78] - cmp r0, #0 - movne r0, #1 - bxne lr - ldrsh r0, [r1, #4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02312C8C: .word ov11_02324E28 - arm_func_end ov11_02312C58 - - arm_func_start ov11_02312C90 -ov11_02312C90: ; 0x02312C90 - ldr r0, _02312CD4 ; =ov11_02324E28 - ldr r1, [r0, #4] - add r0, r1, #0x500 - ldrsh r0, [r0, #0x78] - cmp r0, #0 - movne r0, #1 - bxne lr - ldrsh r0, [r1, #4] - cmp r0, #0 - beq _02312CCC - ldr r0, [r1] - sub r0, r0, #1 - cmp r0, #1 - movls r0, #1 - bxls lr -_02312CCC: - mov r0, #0 - bx lr - .align 2, 0 -_02312CD4: .word ov11_02324E28 - arm_func_end ov11_02312C90 - - arm_func_start ov11_02312CD8 -ov11_02312CD8: ; 0x02312CD8 - ldr ip, _02312CFC ; =ov11_02324E28 - ldr r3, [ip, #4] - add r3, r3, #0x500 - strh r0, [r3, #0x78] - ldr r0, [ip, #4] - str r1, [r0, #0x57c] - ldr r0, [ip, #4] - str r2, [r0, #0x580] - bx lr - .align 2, 0 -_02312CFC: .word ov11_02324E28 - arm_func_end ov11_02312CD8 - - arm_func_start ov11_02312D00 -ov11_02312D00: ; 0x02312D00 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _023130A8 ; =ov11_02324E28 - ldr r2, [r1, #4] - ldr r0, [r2] - cmp r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, #2 - beq _02312D2C - cmp r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - b _02312F9C -_02312D2C: - ldrsh r0, [r2, #4] - cmp r0, #0x10 - bgt _02312D88 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02312D44: ; jump table - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 0 - b _02312DA4 ; case 1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 3 - b _02312E8C ; case 4 - b _02312E8C ; case 5 - b _02312E8C ; case 6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 7 - b _02312E70 ; case 8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 9 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 11 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 12 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 13 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 14 - b _02312E70 ; case 15 - b _02312F24 ; case 16 -_02312D88: - cmp r0, #0x17 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, #0x15 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmpne r0, #0x17 - beq _02312E8C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02312DA4: - mov r0, #0x3d40 - mov r1, #1 - bl MemAlloc - ldr r2, _023130A8 ; =ov11_02324E28 - mov r1, #0x800 - str r0, [r2] - ldr r0, [r2, #4] - mov r2, #0 - add r0, r0, #0x324 - bl SetAnimDataFields2 - ldr r0, _023130A8 ; =ov11_02324E28 - mov r1, #0x800 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x324 - bl SetAnimDataFields2 - ldr r0, _023130A8 ; =ov11_02324E28 - mov r1, #0x800 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0xac - add r0, r0, #0x400 - bl SetAnimDataFields2 - mov r4, #0 - ldr r7, _023130A8 ; =ov11_02324E28 - mov sb, #0x800 - mov r8, r4 - mov r6, #0xc4 -_02312E14: - mul r5, r4, r6 - ldmia r7, {r0, r1} - add r0, r0, r5 - add r1, r1, #0x324 - bl InitAnimDataFromOtherAnimDataVeneer - ldr r0, [r7] - mov r1, sb - mov r2, r8 - add r0, r0, r5 - bl SetAnimDataFields2 - add r4, r4, #1 - cmp r4, #0x50 - blt _02312E14 - ldr r0, _023130A8 ; =ov11_02324E28 - mov r2, #0 - ldr r3, [r0, #4] - ldrsh r1, [r3, #4] - strh r1, [r3, #6] - ldr r1, [r0, #4] - strh r2, [r1, #4] - ldr r0, [r0, #4] - str r2, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02312E70: - strh r0, [r2, #6] - ldr r0, [r1, #4] - mov r2, #0 - strh r2, [r0, #4] - ldr r0, [r1, #4] - str r2, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02312E8C: - mov r0, #0x3d40 - mov r1, #1 - bl MemAlloc - ldr r2, _023130A8 ; =ov11_02324E28 - mov r1, #0x800 - str r0, [r2] - ldr r0, [r2, #4] - mov r2, #0 - add r0, r0, #0x324 - bl SetAnimDataFields2 - mov r4, #0 - ldr r7, _023130A8 ; =ov11_02324E28 - mov sb, #0x800 - mov r8, r4 - mov r6, #0xc4 -_02312EC8: - mul r5, r4, r6 - ldmia r7, {r0, r1} - add r0, r0, r5 - add r1, r1, #0x324 - bl InitAnimDataFromOtherAnimDataVeneer - ldr r0, [r7] - mov r1, sb - mov r2, r8 - add r0, r0, r5 - bl SetAnimDataFields2 - add r4, r4, #1 - cmp r4, #0x50 - blt _02312EC8 - ldr r0, _023130A8 ; =ov11_02324E28 - mov r2, #0 - ldr r3, [r0, #4] - ldrsh r1, [r3, #4] - strh r1, [r3, #6] - ldr r1, [r0, #4] - strh r2, [r1, #4] - ldr r0, [r0, #4] - str r2, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02312F24: - mov r0, #0x3d40 - mov r1, #1 - bl MemAlloc - ldr r2, _023130A8 ; =ov11_02324E28 - mov r1, #0x800 - str r0, [r2] - ldr r0, [r2, #4] - mov r2, #0 - add r0, r0, #0x324 - bl SetAnimDataFields2 - ldr r5, _023130A8 ; =ov11_02324E28 - mov r6, #0 - mov r4, #0xc4 -_02312F58: - ldmia r5, {r0, r1} - mla r0, r6, r4, r0 - add r1, r1, #0x324 - bl InitAnimDataFromOtherAnimDataVeneer - add r6, r6, #1 - cmp r6, #0x50 - blt _02312F58 - ldr r0, _023130A8 ; =ov11_02324E28 - mov r2, #0 - ldr r3, [r0, #4] - ldrsh r1, [r3, #4] - strh r1, [r3, #6] - ldr r1, [r0, #4] - strh r2, [r1, #4] - ldr r0, [r0, #4] - str r2, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02312F9C: - add r0, r2, #0x500 - ldrsh r0, [r0, #0x78] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - strh r0, [r2, #4] - ldr r3, [r1, #4] - mov r2, #0 - ldr r0, [r3, #0x57c] - str r0, [r3, #8] - ldr r3, [r1, #4] - ldr r0, [r3, #0x580] - str r0, [r3, #0xc] - ldr r0, [r1, #4] - add r0, r0, #0x500 - strh r2, [r0, #0x78] - ldr r1, [r1, #4] - ldrsh r0, [r1, #4] - cmp r0, #0x17 - addls pc, pc, r0, lsl #2 - b _0231309C -_02312FEC: ; jump table - b _0231309C ; case 0 - b _0231304C ; case 1 - b _0231308C ; case 2 - b _02313070 ; case 3 - b _02313058 ; case 4 - b _02313058 ; case 5 - b _02313058 ; case 6 - b _0231309C ; case 7 - b _02313058 ; case 8 - b _0231309C ; case 9 - b _0231309C ; case 10 - b _0231309C ; case 11 - b _0231309C ; case 12 - b _0231309C ; case 13 - b _0231309C ; case 14 - b _0231304C ; case 15 - b _02313064 ; case 16 - b _0231309C ; case 17 - b _0231309C ; case 18 - b _0231309C ; case 19 - b _0231309C ; case 20 - b _02313058 ; case 21 - b _0231309C ; case 22 - b _02313058 ; case 23 -_0231304C: - mov r0, #1 - str r0, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02313058: - mov r0, #1 - str r0, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02313064: - mov r0, #1 - str r0, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02313070: - bl ov11_023146F8 - bl ov11_02313798 - ldr r0, _023130A8 ; =ov11_02324E28 - mov r1, #0 - ldr r0, [r0, #4] - strh r1, [r0, #6] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0231308C: - add r0, r1, #0x324 - bl ov11_022F6EFC - bl ov11_02313798 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0231309C: - mov r0, #0 - strh r0, [r1, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023130A8: .word ov11_02324E28 - arm_func_end ov11_02312D00 - - arm_func_start ov11_023130AC -ov11_023130AC: ; 0x023130AC -#ifdef EUROPE -#define OV11_023130AC_LOAD_OFFSET 0x10 -#else -#define OV11_023130AC_LOAD_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, lr} - bl GetHero - mov r5, r0 - bl GetPartner - ldr r1, _02313464 ; =ov11_02324E28 - mov r4, r0 - ldr ip, [r1, #4] - ldr r0, [ip] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrsh r0, [ip, #4] - cmp r0, #0x10 - bgt _02313130 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - ldmia sp!, {r3, r4, r5, pc} -_023130EC: ; jump table - ldmia sp!, {r3, r4, r5, pc} ; case 0 - b _02313150 ; case 1 - ldmia sp!, {r3, r4, r5, pc} ; case 2 - ldmia sp!, {r3, r4, r5, pc} ; case 3 - b _02313404 ; case 4 - b _02313404 ; case 5 - b _023133D4 ; case 6 - ldmia sp!, {r3, r4, r5, pc} ; case 7 - b _023132EC ; case 8 - ldmia sp!, {r3, r4, r5, pc} ; case 9 - ldmia sp!, {r3, r4, r5, pc} ; case 10 - ldmia sp!, {r3, r4, r5, pc} ; case 11 - ldmia sp!, {r3, r4, r5, pc} ; case 12 - ldmia sp!, {r3, r4, r5, pc} ; case 13 - ldmia sp!, {r3, r4, r5, pc} ; case 14 - b _023132A4 ; case 15 - b _02313434 ; case 16 -_02313130: - cmp r0, #0x17 - ldmgtia sp!, {r3, r4, r5, pc} - cmp r0, #0x15 - ldmltia sp!, {r3, r4, r5, pc} - beq _02313404 - cmp r0, #0x17 - beq _023133D4 - ldmia sp!, {r3, r4, r5, pc} -_02313150: - ldr r2, _02313468 ; =0x88080000 - add r0, ip, #0x324 - mov r1, #0xcd + OV11_023130AC_LOAD_OFFSET - bl LoadObjectAnimData - ldr r0, _02313464 ; =ov11_02324E28 - ldr r2, _02313468 ; =0x88080000 - ldr r0, [r0, #4] - mov r1, #0xa - add r0, r0, #0x3e8 - bl ov11_022F6FE0 - ldr r0, _02313464 ; =ov11_02324E28 - ldr r2, _0231346C ; =0x08080000 - ldr r0, [r0, #4] - mov r1, #0xad + OV11_023130AC_LOAD_OFFSET - add r0, r0, #0xac - add r0, r0, #0x400 - bl LoadObjectAnimData - ldr r0, _02313464 ; =ov11_02324E28 - ldrsh r1, [r5, #4] - ldr r0, [r0, #4] - mov r2, #0x8100000 - add r0, r0, #0x14 - bl ov11_022F5BBC - ldr r0, _02313464 ; =ov11_02324E28 - ldrsh r1, [r4, #4] - ldr r0, [r0, #4] - mov r2, #0x8100000 - add r0, r0, #0xd8 - bl ov11_022F5BBC - ldr r0, _02313464 ; =ov11_02324E28 - ldrsh r1, [r5, #4] - ldr r0, [r0, #4] - mov r2, #0x8100000 - add r0, r0, #0x19c - bl ov11_022F5BBC - ldr r0, _02313464 ; =ov11_02324E28 - ldrsh r1, [r4, #4] - ldr r0, [r0, #4] - mov r2, #0x8100000 - add r0, r0, #0x260 - bl ov11_022F5BBC - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313470 ; =0x00000807 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x14 - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313470 ; =0x00000807 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0xd8 - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313470 ; =0x00000807 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x19c - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313470 ; =0x00000807 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x260 - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - mov r3, #1 - ldr r1, [r0, #4] - strb r3, [r1, #0x570] - ldr r1, [r0, #4] - strb r3, [r1, #0x571] - ldr r1, [r0, #4] - strb r3, [r1, #0x572] - ldr r1, [r0, #4] - strb r3, [r1, #0x573] - ldr r1, [r0, #4] - strb r3, [r1, #0x574] - ldr r2, [r0, #4] - mov r1, #2 - strb r3, [r2, #0x575] - ldr r2, [r0, #4] - strb r3, [r2, #0x576] - ldr r0, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} -_023132A4: - mov r3, #0 - strb r3, [ip, #0x570] - ldr r0, [r1, #4] - mov r2, #2 - strb r3, [r0, #0x571] - ldr r0, [r1, #4] - strb r3, [r0, #0x572] - ldr r0, [r1, #4] - strb r3, [r0, #0x573] - ldr r0, [r1, #4] - strb r3, [r0, #0x574] - ldr r0, [r1, #4] - strb r3, [r0, #0x575] - ldr r0, [r1, #4] - strb r3, [r0, #0x576] - ldr r0, [r1, #4] - str r2, [r0] - ldmia sp!, {r3, r4, r5, pc} -_023132EC: - mov r0, #6 - bl ov11_02314670 - ldr r0, _02313464 ; =ov11_02324E28 - mov r2, #1 - ldr r1, [r0, #4] - strb r2, [r1, #0x10] - ldr r1, [r0, #4] - ldr r0, [r1, #0x57c] - ldr r1, [r1, #0x580] - bl ov11_023159CC - ldr r0, _02313464 ; =ov11_02324E28 - ldrsh r1, [r5, #4] - ldr r0, [r0, #4] - ldr r2, _02313474 ; =0x8C100000 - add r0, r0, #0x14 - bl ov11_022F5BBC - ldr r0, _02313464 ; =ov11_02324E28 - ldrsh r1, [r4, #4] - ldr r0, [r0, #4] - ldr r2, _02313474 ; =0x8C100000 - add r0, r0, #0xd8 - bl ov11_022F5BBC - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313478 ; =0x00001013 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x14 - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313478 ; =0x00001013 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0xd8 - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - ldr r2, _0231347C ; =0x8C080000 - ldr r0, [r0, #4] - mov r1, #0xd0 + OV11_023130AC_LOAD_OFFSET - add r0, r0, #0x324 - bl LoadObjectAnimData - ldr r0, _02313464 ; =ov11_02324E28 - ldr r1, _02313480 ; =0x00000801 - ldr r0, [r0, #4] - mov r2, #0 - add r0, r0, #0x324 - bl SetAnimDataFields2 - ldr r0, _02313464 ; =ov11_02324E28 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #2 - strb r3, [r2, #0x570] - ldr r2, [r0, #4] - strb r3, [r2, #0x573] - ldr r2, [r0, #4] - strb r3, [r2, #0x574] - ldr r0, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} -_023133D4: - ldr r2, _02313468 ; =0x88080000 - add r0, ip, #0x324 - mov r1, #0xb6 + OV11_023130AC_LOAD_OFFSET - bl LoadObjectAnimData - ldr r0, _02313464 ; =ov11_02324E28 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #2 - strb r3, [r2, #0x570] - ldr r0, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} -_02313404: - ldr r2, _02313468 ; =0x88080000 - add r0, ip, #0x324 - mov r1, #0xbe + OV11_023130AC_LOAD_OFFSET - bl LoadObjectAnimData - ldr r0, _02313464 ; =ov11_02324E28 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #2 - strb r3, [r2, #0x570] - ldr r0, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} -_02313434: - ldr r1, _02313484 ; =0x00000223 - ldr r2, _02313468 ; =0x88080000 - add r0, ip, #0x324 - bl LoadObjectAnimData - ldr r0, _02313464 ; =ov11_02324E28 - mov r3, #1 - ldr r2, [r0, #4] - mov r1, #2 - strb r3, [r2, #0x570] - ldr r0, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02313464: .word ov11_02324E28 -_02313468: .word 0x88080000 -_0231346C: .word 0x08080000 -_02313470: .word 0x00000807 -_02313474: .word 0x8C100000 -_02313478: .word 0x00001013 -_0231347C: .word 0x8C080000 -_02313480: .word 0x00000801 -#ifdef EUROPE -_02313484: .word 0x00000231 -#else -_02313484: .word 0x00000223 -#endif - arm_func_end ov11_023130AC - - arm_func_start ov11_02313488 -ov11_02313488: ; 0x02313488 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r0, _0231378C ; =ov11_02323D0C - ldr r1, [r0, #0x1c] - ldr r0, [r0, #0x18] - str r1, [sp, #4] - str r0, [sp] - bl GetHero - mov r6, r0 - bl GetPartner - ldr r1, _02313790 ; =ov11_02324E28 - mov r5, r0 - ldr r0, [r1, #4] - ldrsh r0, [r0, #6] - cmp r0, #0x10 - bgt _02313518 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _02313784 -_023134D4: ; jump table - b _02313784 ; case 0 - b _02313534 ; case 1 - b _02313784 ; case 2 - b _02313784 ; case 3 - b _023135DC ; case 4 - b _023135DC ; case 5 - b _023135DC ; case 6 - b _02313784 ; case 7 - b _0231353C ; case 8 - b _02313784 ; case 9 - b _02313784 ; case 10 - b _02313784 ; case 11 - b _02313784 ; case 12 - b _02313784 ; case 13 - b _02313784 ; case 14 - b _02313534 ; case 15 - b _023136AC ; case 16 -_02313518: - cmp r0, #0x17 - bgt _02313784 - cmp r0, #0x15 - blt _02313784 - cmpne r0, #0x17 - beq _023135DC - b _02313784 -_02313534: - bl SentryUpdateDisplay - b _02313784 -_0231353C: - bl ov11_0231474C - cmp r0, #0 - beq _02313784 - mov r0, #0 - bl ov11_0231598C - ldr r3, [r0, #8] - mov r2, #0xd800 - add r2, r2, r3, lsl #8 - ldr r4, [r0, #4] - ldr r1, _02313790 ; =ov11_02324E28 - mov r3, #0x7000 - str r3, [sp] - str r2, [sp, #4] - ldr r0, [r1, #4] - ldrsh r1, [r6, #4] - add r2, sp, #0 - add r0, r0, #0x14 - mov r3, #0 - bl ov11_022F5C94 - ldr r0, _02313790 ; =ov11_02324E28 - mov r1, #0x9000 - str r1, [sp] - ldr r0, [r0, #4] - ldrsh r1, [r5, #4] - add r2, sp, #0 - add r0, r0, #0xd8 - mov r3, #0 - bl ov11_022F5C94 - ldr r0, _02313790 ; =ov11_02324E28 - mov r1, #0x14000 - add r2, r1, r4, lsl #8 - ldr r0, [r0, #4] - mov r1, #0x8000 - str r1, [sp] - str r2, [sp, #4] - add r1, sp, #0 - add r0, r0, #0x324 - mov r2, #0 - bl AnimRelatedFunction__022F6F14 - b _02313784 -_023135DC: - bl ov11_02313DC4 - cmp r0, #0 - beq _02313784 - mov sb, #0 - mov r6, #0xc4 - ldr r7, _02313790 ; =ov11_02324E28 - mov r8, sb - add fp, sp, #0 - mov r4, r6 - mvn r5, #0x4f -_02313604: - mov r0, sb - bl ov11_0231598C - mov sl, r0 - ldrh r0, [sl] - cmp r0, #0xff - beq _0231369C - ldrh r0, [sl, #0x14] - cmp r0, #8 - bhs _02313648 - ldr r0, [r7] - ldr r1, [sl, #0xc] - mla r0, sb, r6, r0 - add r1, r1, #0x800 - mov r1, r1, lsl #0x10 - mov r2, r8 - mov r1, r1, asr #0x10 - bl SetAnimDataFields2 -_02313648: - ldr r0, [sl, #8] - ldr r3, [sl, #4] - add r2, r0, #0xd0000 - mov r1, r2, asr #0xb - mov r0, r3, asr #0xb - add r1, r2, r1, lsr #20 - add r0, r3, r0, lsr #20 - cmp r5, r1, asr #12 - mov r1, r1, asr #0xc - mov r2, r0, asr #0xc - cmplt r1, #0xda - bge _0231369C - ldr r0, [r7] - mov sl, r2, lsl #8 - mla r0, sb, r4, r0 - mov r3, r1, lsl #8 - mov r1, fp - mov r2, #0 - str sl, [sp] - str r3, [sp, #4] - bl AnimRelatedFunction__022F6F14 -_0231369C: - add sb, sb, #1 - cmp sb, #0x50 - blt _02313604 - b _02313784 -_023136AC: - bl ov11_02313DC4 - cmp r0, #0 - beq _02313784 - mov sl, #0 - mov r5, #0xc4 - ldr r6, _02313790 ; =ov11_02324E28 - mov fp, sl - mov r7, #2 - mov r4, r5 -_023136D0: - mov r0, sl - bl ov11_023159B0 - mov r8, r0 - ldrh r0, [r8] - cmp r0, #0xff - ldrneh r0, [r8, #0x16] - cmpne r0, #0 - beq _02313778 - cmp r0, #1 - bne _02313740 - mul sb, sl, r5 - ldmia r6, {r0, r1} - add r0, r0, sb - add r1, r1, #0x324 - bl InitAnimDataFromOtherAnimDataVeneer - ldr r0, [r6] - ldr r1, [r8, #0xc] - add r0, r0, sb - bl ov11_022F4974 - ldrh r1, [r8, #0x14] - ldr r0, [r6] - mov r2, fp - add r1, r1, #0x800 - mov r1, r1, lsl #0x10 - add r0, r0, sb - mov r1, r1, asr #0x10 - bl SetAnimDataFields2 - strh r7, [r8, #0x16] -_02313740: - ldr r0, [r8, #8] - cmp r0, #0x12000 - bhs _02313778 - ldr r0, [r6] - ldr r1, [r8, #4] - mla r0, sl, r4, r0 - sub r1, r1, #0x2000 - str r1, [sp] - ldr r2, [r8, #8] - add r1, sp, #0 - sub r3, r2, #0x2000 - mov r2, #0 - str r3, [sp, #4] - bl AnimRelatedFunction__022F6F14 -_02313778: - add sl, sl, #1 - cmp sl, #0x50 - blt _023136D0 -_02313784: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231378C: .word ov11_02323D0C -_02313790: .word ov11_02324E28 - arm_func_end ov11_02313488 - - arm_func_start ov11_02313794 -ov11_02313794: ; 0x02313794 - bx lr - arm_func_end ov11_02313794 - - arm_func_start ov11_02313798 -ov11_02313798: ; 0x02313798 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x570] - cmp r1, #0 - beq _023137C4 - mov r1, #0 - strb r1, [r2, #0x570] - ldr r0, [r0, #4] - add r0, r0, #0x324 - bl ov11_022F6EFC -_023137C4: - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x571] - cmp r1, #0 - beq _023137EC - mov r1, #0 - strb r1, [r2, #0x571] - ldr r0, [r0, #4] - add r0, r0, #0x3e8 - bl ov11_022F7058 -_023137EC: - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x572] - cmp r1, #0 - beq _02313818 - mov r1, #0 - strb r1, [r2, #0x572] - ldr r0, [r0, #4] - add r0, r0, #0xac - add r0, r0, #0x400 - bl ov11_022F6EFC -_02313818: - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x573] - cmp r1, #0 - beq _02313840 - mov r1, #0 - strb r1, [r2, #0x573] - ldr r0, [r0, #4] - add r0, r0, #0x14 - bl ov11_022F6EFC -_02313840: - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x574] - cmp r1, #0 - beq _02313868 - mov r1, #0 - strb r1, [r2, #0x574] - ldr r0, [r0, #4] - add r0, r0, #0xd8 - bl ov11_022F6EFC -_02313868: - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x575] - cmp r1, #0 - beq _02313890 - mov r1, #0 - strb r1, [r2, #0x575] - ldr r0, [r0, #4] - add r0, r0, #0x19c - bl ov11_022F6EFC -_02313890: - ldr r0, _02313904 ; =ov11_02324E28 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x576] - cmp r1, #0 - beq _023138B8 - mov r1, #0 - strb r1, [r2, #0x576] - ldr r0, [r0, #4] - add r0, r0, #0x260 - bl ov11_022F6EFC -_023138B8: - ldr r5, _02313904 ; =ov11_02324E28 - ldr r0, [r5] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r6, #0 - mov r4, #0xc4 -_023138D0: - ldr r0, [r5] - mla r0, r6, r4, r0 - bl ov11_022F6EFC - add r6, r6, #1 - cmp r6, #0x50 - blt _023138D0 - ldr r0, _02313904 ; =ov11_02324E28 - ldr r0, [r0] - bl MemFree - ldr r0, _02313904 ; =ov11_02324E28 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02313904: .word ov11_02324E28 - arm_func_end ov11_02313798 - - arm_func_start ov11_02313908 -ov11_02313908: ; 0x02313908 - ldr ip, _02313914 ; =ov11_0230D270 - ldr r0, _02313918 ; =ov11_02323D2C - bx ip - .align 2, 0 -_02313914: .word ov11_0230D270 -_02313918: .word ov11_02323D2C - arm_func_end ov11_02313908 - - arm_func_start ov11_0231391C -ov11_0231391C: ; 0x0231391C - ldr ip, _02313928 ; =ov11_0230D17C - ldr r0, _0231392C ; =ov11_02323D2C - bx ip - .align 2, 0 -_02313928: .word ov11_0230D17C -_0231392C: .word ov11_02323D2C - arm_func_end ov11_0231391C - - arm_func_start ov11_02313930 -ov11_02313930: ; 0x02313930 - stmdb sp!, {lr} - sub sp, sp, #0x14 - mov r0, #0xc - mov r1, #0xf - bl MemAlloc - ldr r1, _023139C4 ; =ov11_02324E30 - str r0, [r1] - bl ov11_02313A48 - mov r0, #0x10 - bl ov11_022E9D10 - ldr r2, _023139C4 ; =ov11_02324E30 - mov lr, #0 - ldr r0, [r2] - mov ip, #1 - strb lr, [r0, #8] - ldr r1, [r2] - add r0, sp, #0x10 - strb ip, [r1, #0xa] - ldr r3, [r2] - add r1, sp, #0xc - strb lr, [r3, #0xb] - ldr r3, [r2] - add r2, sp, #8 - str ip, [r3, #4] - bl ov11_022EBAA0 - ldr r1, [sp, #0xc] - mov r0, #1 - str r1, [sp] - ldr r2, [sp, #8] - ldr r1, _023139C8 ; =0x06210000 - str r2, [sp, #4] - ldr r3, [sp, #0x10] - add r2, r1, #0x8000 - bl ov11_022DC240 - mov r0, #1 - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_023139C4: .word ov11_02324E30 -_023139C8: .word 0x06210000 - - arm_func_start ov11_023139CC -ov11_023139CC: ; 0x023139CC - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _023139F8 - ldr r0, _02313A44 ; =ov11_02324E30 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #7 - movne r0, #1 - strneb r0, [r1, #0xb] - movne r0, #0 - ldmneia sp!, {r3, pc} -_023139F8: - bl ov11_02313A48 - ldr r0, _02313A44 ; =ov11_02324E30 - mov r2, #7 - ldr r1, [r0] - str r2, [r1, #4] - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _02313A20 - bl ov11_022DC3FC -_02313A20: - bl ov11_022DC368 - ldr r0, _02313A44 ; =ov11_02324E30 - ldr r0, [r0] - bl MemFree - ldr r0, _02313A44 ; =ov11_02324E30 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02313A44: .word ov11_02324E30 - arm_func_end ov11_02313930 - - arm_func_start ov11_02313A48 -ov11_02313A48: ; 0x02313A48 - stmdb sp!, {r3, lr} - ldr r1, _02313A94 ; =ov11_02324E30 - mov r3, #1 - ldr r0, [r1] - mov r2, #0 - strb r2, [r0] - ldr r2, [r1] - sub r0, r3, #2 - str r3, [r2, #4] - ldr r1, [r1] - strb r3, [r1, #9] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _02313A94 ; =ov11_02324E30 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0xa] - ldmia sp!, {r3, pc} - .align 2, 0 -_02313A94: .word ov11_02324E30 - arm_func_end ov11_02313A48 - - arm_func_start StatusUpdate -StatusUpdate: ; 0x02313A98 - ldr r0, _02313AB4 ; =ov11_02324E30 - ldr r1, [r0] - cmp r1, #0 - movne r0, #1 - strneb r0, [r1, #0xa] - moveq r0, #0 - bx lr - .align 2, 0 -_02313AB4: .word ov11_02324E30 - arm_func_end StatusUpdate - - arm_func_start ov11_02313AB8 -ov11_02313AB8: ; 0x02313AB8 - ldr r0, _02313AD4 ; =ov11_02324E30 - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #9] - bx lr - .align 2, 0 -_02313AD4: .word ov11_02324E30 - arm_func_end ov11_02313AB8 - - arm_func_start ov11_02313AD8 -ov11_02313AD8: ; 0x02313AD8 - bx lr - arm_func_end ov11_02313AD8 - - arm_func_start HandleTeamStatsGround -HandleTeamStatsGround: ; 0x02313ADC - stmdb sp!, {r3, lr} - ldr r0, _02313CAC ; =ov11_02324E30 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _02313CA4 -_02313AF8: ; jump table - b _02313B18 ; case 0 - b _02313B40 ; case 1 - b _02313CA4 ; case 2 - b _02313CA4 ; case 3 - b _02313BD0 ; case 4 - b _02313BFC ; case 5 - b _02313C58 ; case 6 - b _02313C94 ; case 7 -_02313B18: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02313CAC ; =ov11_02324E30 - mov r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #9] - bne _02313CA4 - ldr r0, _02313CAC ; =ov11_02324E30 - ldr r0, [r0] - str r1, [r0, #4] -_02313B40: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02313CAC ; =ov11_02324E30 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #9] - bne _02313CA4 - ldr r0, _02313CAC ; =ov11_02324E30 - ldr r2, [r0] - ldrb r1, [r2, #0xb] - cmp r1, #0 - beq _02313B98 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02313CAC ; =ov11_02324E30 - mov r3, #1 - ldr r2, [r0] - mov r1, #6 - strb r3, [r2, #9] - ldr r0, [r0] - str r1, [r0, #4] - b _02313CA4 -_02313B98: - ldrb r1, [r2, #0xa] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #9] - beq _02313CA4 - mov r1, #1 - strb r1, [r2, #9] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #0xa] - ldr r0, [r0] - mov r1, #2 - str r1, [r0, #4] - b _02313CA4 -_02313BD0: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02313CAC ; =ov11_02324E30 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #9] - bne _02313CA4 - ldr r0, _02313CAC ; =ov11_02324E30 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] -_02313BFC: - ldr r0, _02313CAC ; =ov11_02324E30 - ldr r1, [r0] - ldrb r0, [r1, #0xb] - cmp r0, #0 - ldreqb r0, [r1, #0xa] - cmpeq r0, #0 - beq _02313C40 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02313CAC ; =ov11_02324E30 - mov r3, #0 - ldr r2, [r0] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #9] - b _02313CA4 -_02313C40: - bl ov11_022DC434 - ldr r0, _02313CAC ; =ov11_02324E30 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #9] - b _02313CA4 -_02313C58: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _02313CA4 - ldr r0, _02313CAC ; =ov11_02324E30 - ldr r1, [r0] - ldrb r0, [r1, #8] - cmp r0, #0 - beq _02313C84 - mov r0, #0 - strb r0, [r1, #8] - bl ov11_022DC3FC -_02313C84: - ldr r0, _02313CAC ; =ov11_02324E30 - mov r1, #7 - ldr r0, [r0] - str r1, [r0, #4] -_02313C94: - ldr r0, _02313CAC ; =ov11_02324E30 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #9] -_02313CA4: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02313CAC: .word ov11_02324E30 - arm_func_end HandleTeamStatsGround - - arm_func_start ov11_02313CB0 -ov11_02313CB0: ; 0x02313CB0 - stmdb sp!, {r3, lr} - ldr r0, _02313D14 ; =ov11_02324E30 - ldr r2, [r0] - ldr r1, [r2, #4] - cmp r1, #2 - ldmneia sp!, {r3, pc} - mov r1, #1 - strb r1, [r2, #9] - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _02313CFC - bl ov11_022DC3A0 - ldr r0, _02313D14 ; =ov11_02324E30 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #8] - bl ov11_02313A48 - b _02313D00 -_02313CFC: - bl ov11_022DC504 -_02313D00: - ldr r0, _02313D14 ; =ov11_02324E30 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02313D14: .word ov11_02324E30 - arm_func_end ov11_02313CB0 - - arm_func_start ov11_02313D18 -ov11_02313D18: ; 0x02313D18 - stmdb sp!, {r3, lr} - ldr r0, _02313D8C ; =ov11_02324E30 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #3 - bne _02313D54 - mov r0, #1 - bl ov11_022EF53C - ldr r0, _02313D8C ; =ov11_02324E30 - mov r3, #1 - ldr r2, [r0] - mov r1, #4 - strb r3, [r2] - ldr r0, [r0] - str r1, [r0, #4] -_02313D54: - ldr r0, _02313D8C ; =ov11_02324E30 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #0 - beq _02313D74 - sub r0, r0, #4 - cmp r0, #2 - bhi _02313D84 -_02313D74: - ldrb r0, [r1, #8] - cmp r0, #0 - beq _02313D84 - bl ov11_022DC46C -_02313D84: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02313D8C: .word ov11_02324E30 - arm_func_end ov11_02313D18 - - arm_func_start ov11_02313D90 -ov11_02313D90: ; 0x02313D90 - stmdb sp!, {r3, lr} - ldr r0, _02313DC0 ; =ov11_02324E30 - ldr r2, [r0] - ldrb r0, [r2] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - mov r0, #0x10 - strb r1, [r2] - bl ov11_022E9C98 - bl ov11_022DC494 - ldmia sp!, {r3, pc} - .align 2, 0 -_02313DC0: .word ov11_02324E30 - arm_func_end ov11_02313D90 - - arm_func_start ov11_02313DC4 -ov11_02313DC4: ; 0x02313DC4 - ldr r0, _02313DF0 ; =ov11_02324E34 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02313DF0: .word ov11_02324E34 - arm_func_end ov11_02313DC4 - - arm_func_start ov11_02313DF4 -ov11_02313DF4: ; 0x02313DF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r8, r0 - mov r7, r1 - mov r5, r2 - bl sub_0201F2E4 - ldr r0, _023145D4 ; =0x00000CB4 - mov r1, #6 - bl MemAlloc - ldr r4, _023145D8 ; =ov11_02324E34 - mov r6, #0 - str r0, [r4] - strb r6, [r0, #0xcac] - ldr r0, [r4] - mov sb, r6 - str r8, [r0] - ldr r0, [r4] - mov r8, #0x28 - str r6, [r0, #4] - ldr r0, [r4] - str r6, [r0, #8] - ldr r0, [r4] - str r6, [r0, #0xc] - ldr r0, [r4] - str r6, [r0, #0x10] - ldr r0, [r4] - str r6, [r0, #0x14] - ldr r0, [r4] - str r6, [r0, #0x18] - ldr r0, [r4] - str r6, [r0, #0x1c] - ldr r0, [r4] - str r6, [r0, #0x20] - ldr r0, [r4] - str r7, [r0, #0x24] - ldr r0, [r4] - str r5, [r0, #0x28] - mov r5, #0xff -_02313E8C: - mul r7, r6, r8 - ldr r0, [r4] - add r0, r0, r7 - strh r5, [r0, #0x2c] - bl sub_0201F36C - ldr r1, [r4] - add r1, r1, r7 - strh r0, [r1, #0x4c] - ldr r0, [r4] - add r0, r0, r7 - ldrsh r0, [r0, #0x4c] - bl sub_0201F324 - ldr r2, [r4] - mov r1, sb - add r2, r2, r7 - str r0, [r2, #0x48] - ldr r0, [r4] - add r0, r0, r7 - ldrsh r0, [r0, #0x4c] - bl sub_0201F348 - add r6, r6, #1 - cmp r6, #0x50 - blt _02313E8C - ldr r4, _023145D8 ; =ov11_02324E34 - ldr r1, [r4] - ldr r0, [r1] - cmp r0, #0x13 - addls pc, pc, r0, lsl #2 - b _023145CC -_02313F00: ; jump table - b _023145CC ; case 0 - b _023145CC ; case 1 - b _023145CC ; case 2 - b _02313F50 ; case 3 - b _02314060 ; case 4 - b _0231419C ; case 5 - b _02314210 ; case 6 - b _02314320 ; case 7 - b _02314228 ; case 8 - b _023145CC ; case 9 - b _023145CC ; case 10 - b _023144C0 ; case 11 - b _023144C8 ; case 12 - b _023144D0 ; case 13 - b _023144EC ; case 14 - b _02314548 ; case 15 - b _0231455C ; case 16 - b _0231421C ; case 17 - b _02314570 ; case 18 - b _023145CC ; case 19 -_02313F50: - mov sl, #0 - ldr r8, _023145DC ; =ov11_02323F84 - ldr r7, _023145E0 ; =ov11_02323FD4 - ldr r6, _023145E4 ; =ov11_02323E92 - ldr fp, _023145E8 ; =ov11_02323DEE - mov r5, #0xc400 - mov sb, sl -_02313F6C: - ldr r0, _023145EC ; =ov11_02324380 - bl ov11_02314D48 - mov r0, #0x28 - mul r2, sl, r0 - ldr r0, [r4] - ldr r1, [r8, sl, lsl #2] - add r0, r0, r2 - str r1, [r0, #0x30] - mov r0, sl, lsl #1 - ldr r3, [r4] - ldrh r1, [r6, r0] - ldr ip, [r7, sl, lsl #2] - add r0, r3, r2 - str ip, [r0, #0x34] - ldr r3, [r4] - add r0, sl, #3 - add r3, r3, r2 - str r1, [r3, #0x38] - ldr r3, [r4] - mov r1, r1, lsl #1 - add r3, r3, r2 - strh r0, [r3, #0x2c] - ldr r3, [r4] - add r0, sl, sl, lsl #4 - add r3, r3, r2 - strh r5, [r3, #0x3c] - ldr r3, [r4] - add sl, sl, #1 - add r3, r3, r2 - strh sb, [r3, #0x40] - ldr r3, [r4] - ldrh r1, [fp, r1] - add r3, r3, r2 - strh r0, [r3, #0x42] - ldr r0, [r4] - cmp sl, #0x14 - add r0, r0, r2 - strh r1, [r0, #0x3e] - ldr r0, [r4] - add r0, r0, r2 - strh sb, [r0, #0x50] - blt _02313F6C - ldr r4, _023145D8 ; =ov11_02324E34 - b _02314024 -_0231401C: - bl ov11_0231474C - add sb, sb, #1 -_02314024: - ldr r0, [r4] - ldr r0, [r0, #0x24] - cmp sb, r0 - bne _0231401C - mov r4, #0 - ldr r1, _023145D8 ; =ov11_02324E34 - mov r3, r4 - mov r0, #0x28 -_02314044: - ldr r2, [r1] - mla r2, r4, r0, r2 - add r4, r4, #1 - strh r3, [r2, #0x40] - cmp r4, #0x14 - blt _02314044 - b _023145CC -_02314060: - add r1, sp, #8 - mov r0, #0 - bl ov11_022EB3C8 - mov sl, #0 - ldr r6, _023145F0 ; =ov11_023240E8 - ldr r5, _023145F4 ; =ov11_02324160 - ldr fp, _023145F8 ; =ov11_02323EBC - mov sb, sl -_02314080: - ldr r0, _023145EC ; =ov11_02324380 - bl ov11_02314D48 - mov r0, #0x28 - mul r7, sl, r0 - ldr r0, [r4] - ldr r1, [r6, sl, lsl #2] - add r0, r0, r7 - str r1, [r0, #0x30] - ldr r1, [r4] - mov r0, sl, lsl #1 - ldrh r8, [fp, r0] - ldr r2, [r5, sl, lsl #2] - add r1, r1, r7 - str r2, [r1, #0x34] - ldr r1, [r4] - mov r0, sl - add r1, r1, r7 - str r8, [r1, #0x38] - mov r1, #0xf - bl _s32_div_f - ldr r3, [r4] - ldr r1, _023145FC ; =ov11_02323DD0 - add r3, r3, r7 - strh r0, [r3, #0x2c] - ldr r0, [r4] - mov r2, r8, lsl #1 - add r3, r0, r7 - mov r0, #0xbd00 - strh r0, [r3, #0x3c] - ldr r0, [r4] - ldrh r1, [r1, r2] - add r0, r0, r7 - strh sb, [r0, #0x40] - ldr r0, [r4] - add r2, sl, sl, lsl #4 - add r0, r0, r7 - strh r2, [r0, #0x42] - ldr r0, [r4] - add sl, sl, #1 - add r0, r0, r7 - strh r1, [r0, #0x3e] - ldr r0, [r4] - ldr r1, [sp, #8] - add r0, r0, r7 - strh r1, [r0, #0x50] - ldr r0, [r4] - cmp sl, #0x1e - add r1, r0, r7 - ldr r0, [r1, #0x34] - mov r0, r0, lsr #0xc - strh r0, [r1, #0x4e] - blt _02314080 - ldr r4, _023145D8 ; =ov11_02324E34 - b _02314160 -_02314158: - bl ov11_0231474C - add sb, sb, #1 -_02314160: - ldr r0, [r4] - ldr r0, [r0, #0x24] - cmp sb, r0 - bne _02314158 - mov r4, #0 - ldr r1, _023145D8 ; =ov11_02324E34 - mov r3, r4 - mov r0, #0x28 -_02314180: - ldr r2, [r1] - mla r2, r4, r0, r2 - add r4, r4, #1 - strh r3, [r2, #0x40] - cmp r4, #0x19 - blt _02314180 - b _023145CC -_0231419C: - ldr r1, _02314600 ; =ov11_02324B0C - add r0, sp, #0 - mov r2, #6 - bl LoadWteFromRom - mov r1, #0 - add r0, sp, #0 - mov r2, r1 - mov r3, r1 - bl sub_0201E12C - add r0, sp, #0 - bl DelayWteFree - ldr r0, _02314604 ; =ov11_02324B24 - mov r1, #0 - bl sub_0201DF38 - mov r1, r4 - ldr r3, [r1] - mov r2, #1 - str r0, [r3, #0xcb0] - ldr r0, [r1] - ldr r5, _02314608 ; =ov11_023242D8 - mov r6, #0 - strb r2, [r0, #0xcac] - mov r4, #0x1c -_023141F8: - mla r0, r6, r4, r5 - bl ov11_02314D48 - add r6, r6, #1 - cmp r6, #6 - blt _023141F8 - b _023145CC -_02314210: - ldr r0, _0231460C ; =ov11_02323D98 - bl ov11_02314D48 - b _023145CC -_0231421C: - ldr r0, _02314610 ; =ov11_02323D60 - bl ov11_02314D48 - b _023145CC -_02314228: - ldr r8, _02314614 ; =ov11_02324700 - ldr r7, _02314618 ; =TRIG_TABLE - mov sl, #0 - mov fp, #3 - mov r5, #0x28 - mov r6, #0x600 -_02314240: - mov r0, r8 - bl ov11_02314D48 - mul sb, sl, r5 - mov r0, sl - mov r1, fp - bl _s32_div_f - mov r0, sl, asr #2 - add r0, sl, r0, lsr #29 - mov r2, r0, asr #3 - mov r3, sl, lsr #0x1f - ldr r0, [r4] - add r2, r2, r2, lsl #1 - add r1, r1, r2 - rsb r2, r3, sl, lsl #30 - add r2, r3, r2, ror #30 - add r0, r0, sb - strh r1, [r0, #0x2c] - add r0, r2, #1 - mul r1, r0, r6 - ldr r0, [r4] - mov r2, sl, lsl #0xb - add r0, r0, sb - strh r2, [r0, #0x3c] - ldr r0, [r4] - add r1, r1, #0x2400 - add r0, r0, sb - strh r1, [r0, #0x3e] - ldr r0, [r4] - add sl, sl, #1 - add r2, r0, sb - ldrh r1, [r2, #0x3c] - ldrh r0, [r2, #0x3e] - cmp sl, #0x20 - mov r1, r1, asr #4 - mov r1, r1, lsl #1 - mov r0, r0, lsr #9 - mov r3, r1, lsl #1 - ldrsh r3, [r7, r3] - add r1, r7, r1, lsl #1 - mul ip, r3, r0 - add r3, ip, #0x80000 - str r3, [r2, #0x30] - ldrsh r2, [r1, #2] - ldr r1, [r4] - mul r0, r2, r0 - rsb r2, r0, #0x60000 - add r0, r1, sb - str r2, [r0, #0x34] - blt _02314240 - ldr r0, _0231461C ; =ov11_0232471C - bl ov11_02314D48 - ldr r0, _02314620 ; =ov11_02324738 - bl ov11_02314D48 - ldr r0, _02314624 ; =ov11_02324754 - bl ov11_02314D48 - b _023145CC -_02314320: - ldr r1, _02314628 ; =ov11_02324B3C - add r0, sp, #0 - mov r2, #6 - bl LoadWteFromRom - mov r1, #0 - add r0, sp, #0 - mov r2, r1 - mov r3, r1 - bl sub_0201E12C - add r0, sp, #0 - bl DelayWteFree - ldr r0, _0231462C ; =ov11_02324B54 - mov r1, #0 - bl sub_0201DF38 - mov r1, r4 - ldr r3, [r1] - mov r2, #1 - str r0, [r3, #0xcb0] - ldr r0, [r1] - mov r6, #0 - strb r2, [r0, #0xcac] -_02314374: - ldr r0, _02314630 ; =ov11_02323D7C - bl ov11_02314D48 - mov r0, #0x28 - mul r4, r6, r0 - ldr r1, _023145D8 ; =ov11_02324E34 - ldr r3, _02314634 ; =ov11_02323EFC - ldr r2, [r1] - ldr r3, [r3, r6, lsl #2] - add r2, r2, r4 - ldr r0, _02314638 ; =ov11_02323F40 - str r3, [r2, #0x34] - ldr r2, [r0, r6, lsl #2] - ldr r0, [r1] - add r2, r2, #0x18000 - add r0, r0, r4 - str r2, [r0, #0x30] - ldr r0, [r1] - mov r2, #0 - add r0, r0, r4 - str r2, [r0, #0x38] - ldr r3, [r1] - ldr r5, _0231463C ; =ov11_02323E70 - mov r8, r6, lsl #1 - ldr r0, _02314640 ; =ov11_02323E2C - ldrh r7, [r5, r8] - ldr r2, _02314644 ; =ov11_02323E4E - add r3, r3, r4 - strh r7, [r3, #0x2c] - ldrh r5, [r2, r8] - ldr r2, [r1] - ldrh r0, [r0, r8] - add r2, r2, r4 - strh r5, [r2, #0x3c] - ldr r7, [r1] - mov r1, #0x64 - ldr r2, [r7, #0x24] - rsb r2, r2, #0x64 - mul r0, r2, r0 - bl _s32_div_f - mov r1, r5, asr #4 - add r2, r7, r4 - strh r0, [r2, #0x40] - ldr r5, _023145D8 ; =ov11_02324E34 - mov r3, r1, lsl #1 - ldr r0, [r5] - ldr r1, _02314618 ; =TRIG_TABLE - mov r2, #0xf000 - add r0, r0, r4 - strh r2, [r0, #0x3e] - mov r2, r3, lsl #1 - add r0, r1, r3, lsl #1 - ldrsh r3, [r1, r2] - ldrsh r1, [r0, #2] - ldr r2, [r5] - add r0, r3, r3, lsl #1 - add r1, r1, r1, lsl #1 - mov r8, r0, lsl #0xe - mov r3, r1, lsl #0xe - mov r1, r3, asr #0xa - mov r0, r8, asr #0xa - add r7, r2, r4 - add r2, r8, r0, lsr #21 - add r3, r3, r1, lsr #21 - ldrh r1, [r7, #0x40] - mov r0, #0 - b _023144A8 -_0231447C: - ldr r7, [r5] - add r0, r0, #1 - add r8, r4, r7 - ldr r7, [r8, #0x30] - sub r7, r7, r2, asr #11 - str r7, [r8, #0x30] - ldr r7, [r5] - add r8, r4, r7 - ldr r7, [r8, #0x34] - add r7, r7, r3, asr #11 - str r7, [r8, #0x34] -_023144A8: - cmp r0, r1 - bne _0231447C - add r6, r6, #1 - cmp r6, #0x11 - blt _02314374 - b _023145CC -_023144C0: - bl ov11_02316330 - b _023145CC -_023144C8: - bl ov11_02316330 - bl ov11_023163B0 -_023144D0: - ldr r0, _02314648 ; =ov11_02324024 - bl ov11_02314D48 - ldr r0, _0231464C ; =ov11_02324040 - bl ov11_02314D48 - ldr r0, _02314650 ; =ov11_0232405C - bl ov11_02314D48 - b _023145CC -_023144EC: - ldr r1, _02314654 ; =ov11_02324B6C - add r0, sp, #0 - mov r2, #6 - bl LoadWteFromRom - mov r1, #0 - add r0, sp, #0 - mov r2, r1 - mov r3, r1 - bl sub_0201E12C - add r0, sp, #0 - bl DelayWteFree - ldr r0, _02314658 ; =ov11_02324B84 - mov r1, #0 - bl sub_0201DF38 - mov r1, r4 - ldr r3, [r1] - mov r2, #1 - str r0, [r3, #0xcb0] - ldr r1, [r1] - ldr r0, _0231465C ; =ov11_02323DB4 - strb r2, [r1, #0xcac] - bl ov11_02314D48 - b _023145CC -_02314548: - ldr r0, _02314660 ; =ov11_02324078 - bl ov11_02314D48 - ldr r0, _02314664 ; =ov11_02324094 - bl ov11_02314D48 - b _023145CC -_0231455C: - ldr r0, _02314668 ; =ov11_023240B0 - bl ov11_02314D48 - ldr r0, _0231466C ; =ov11_023240CC - bl ov11_02314D48 - b _023145CC -_02314570: - mov r5, #0 - str r5, [r1, #0xc] - ldr r0, [r4] - mov r2, #4 - str r2, [r0, #0x10] - ldr r0, [r4] - mov r1, #2 - str r1, [r0, #0x14] - ldr r0, [r4] - mov r1, #5 - str r1, [r0, #0x18] - ldr r0, [r4] - mov r1, #1 - str r1, [r0, #0x1c] - ldr r0, [r4] - str r2, [r0, #0x20] - b _023145BC -_023145B4: - bl ov11_0231474C - add r5, r5, #1 -_023145BC: - ldr r0, [r4] - ldr r0, [r0, #0x24] - cmp r5, r0 - blt _023145B4 -_023145CC: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023145D4: .word 0x00000CB4 -_023145D8: .word ov11_02324E34 -_023145DC: .word ov11_02323F84 -_023145E0: .word ov11_02323FD4 -_023145E4: .word ov11_02323E92 -_023145E8: .word ov11_02323DEE -_023145EC: .word ov11_02324380 -_023145F0: .word ov11_023240E8 -_023145F4: .word ov11_02324160 -_023145F8: .word ov11_02323EBC -_023145FC: .word ov11_02323DD0 -_02314600: .word ov11_02324B0C -_02314604: .word ov11_02324B24 -_02314608: .word ov11_023242D8 -_0231460C: .word ov11_02323D98 -_02314610: .word ov11_02323D60 -_02314614: .word ov11_02324700 -_02314618: .word TRIG_TABLE -_0231461C: .word ov11_0232471C -_02314620: .word ov11_02324738 -_02314624: .word ov11_02324754 -_02314628: .word ov11_02324B3C -_0231462C: .word ov11_02324B54 -_02314630: .word ov11_02323D7C -_02314634: .word ov11_02323EFC -_02314638: .word ov11_02323F40 -_0231463C: .word ov11_02323E70 -_02314640: .word ov11_02323E2C -_02314644: .word ov11_02323E4E -_02314648: .word ov11_02324024 -_0231464C: .word ov11_02324040 -_02314650: .word ov11_0232405C -_02314654: .word ov11_02324B6C -_02314658: .word ov11_02324B84 -_0231465C: .word ov11_02323DB4 -_02314660: .word ov11_02324078 -_02314664: .word ov11_02324094 -_02314668: .word ov11_023240B0 -_0231466C: .word ov11_023240CC - arm_func_end ov11_02313DF4 - - arm_func_start ov11_02314670 -ov11_02314670: ; 0x02314670 - ldr ip, _02314680 ; =ov11_02313DF4 - mov r1, #0 - mov r2, r1 - bx ip - .align 2, 0 -_02314680: .word ov11_02313DF4 - arm_func_end ov11_02314670 - - arm_func_start ov11_02314684 -ov11_02314684: ; 0x02314684 - ldr r0, _023146AC ; =ov11_02324E34 - ldr r0, [r0] - cmp r0, #0 - beq _023146A4 - ldr r0, [r0] - cmp r0, #0xb - moveq r0, #1 - bxeq lr -_023146A4: - mov r0, #0 - bx lr - .align 2, 0 -_023146AC: .word ov11_02324E34 - arm_func_end ov11_02314684 - - arm_func_start ov11_023146B0 -ov11_023146B0: ; 0x023146B0 - ldr r0, _023146D0 ; =ov11_02324E34 - ldr r0, [r0] - ldrb r0, [r0, #0xcac] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_023146D0: .word ov11_02324E34 - arm_func_end ov11_023146B0 - - arm_func_start ov11_023146D4 -ov11_023146D4: ; 0x023146D4 - ldr r2, _023146F0 ; =ov11_02324E34 - ldr ip, _023146F4 ; =ov11_023163B0 - ldr r3, [r2] - str r0, [r3, #0x24] - ldr r0, [r2] - str r1, [r0, #0x28] - bx ip - .align 2, 0 -_023146F0: .word ov11_02324E34 -_023146F4: .word ov11_023163B0 - arm_func_end ov11_023146D4 - - arm_func_start ov11_023146F8 -ov11_023146F8: ; 0x023146F8 - stmdb sp!, {r3, lr} - ldr r0, _02314748 ; =ov11_02324E34 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0201F2E4 - ldr r0, _02314748 ; =ov11_02324E34 - ldr r1, [r0] - ldrb r0, [r1, #0xcac] - cmp r0, #0 - beq _0231472C - add r0, r1, #0xcb0 - bl sub_0201E020 -_0231472C: - ldr r0, _02314748 ; =ov11_02324E34 - ldr r0, [r0] - bl MemFree - ldr r0, _02314748 ; =ov11_02324E34 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02314748: .word ov11_02324E34 - arm_func_end ov11_023146F8 - - arm_func_start ov11_0231474C -ov11_0231474C: ; 0x0231474C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r6, _02314D2C ; =ov11_02324E34 - ldr r0, [r6] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r7, _02314D30 ; =ov11_02324E38 - mov r4, #0 - mov r5, #0x28 -_02314770: - mul r2, r4, r5 - ldr r3, [r6] - add r1, r3, r2 - ldrh r0, [r1, #0x2c] - cmp r0, #0xff - beq _0231479C - ldrh r1, [r1, #0x44] - add r0, r3, #0x2c - add r0, r0, r2 - ldr r1, [r7, r1, lsl #2] - blx r1 -_0231479C: - add r4, r4, #1 - cmp r4, #0x50 - blt _02314770 - ldr r0, _02314D2C ; =ov11_02324E34 - ldr r2, [r0] - ldr r1, [r2, #4] - add r1, r1, #1 - str r1, [r2, #4] - ldr r4, [r0] - ldr r0, [r4] - cmp r0, #3 - bgt _023147E8 - cmp r0, #1 - blt _02314D24 - beq _023147F4 - cmp r0, #2 - beq _023148CC - cmp r0, #3 - b _02314D24 -_023147E8: - cmp r0, #0x12 - beq _023149D4 - b _02314D24 -_023147F4: - ldr r1, [r4, #0x28] - ldr r0, [r4, #4] - add r1, r1, #8 - bl _s32_div_f - cmp r1, #1 - bne _0231482C - ldr r0, [r4, #8] - ldr r2, _02314D34 ; =ov11_02324620 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r1, r1, r0, ror #30 - mov r0, #0x1c - mla r0, r1, r0, r2 - bl ov11_02314D48 -_0231482C: - ldr r0, _02314D2C ; =ov11_02324E34 - ldr r4, [r0] - ldr r1, [r4, #0x28] - ldr r0, [r4, #4] - add r1, r1, #8 - bl _s32_div_f - cmp r1, #0 - bne _02314D24 - ldr r1, [r4, #8] - ldr r0, _02314D2C ; =ov11_02324E34 - add r1, r1, #1 - str r1, [r4, #8] - ldr r0, [r0] - ldr r3, _02314D34 ; =ov11_02324620 - ldr r0, [r0, #8] - mov r2, #0x1c - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - add r1, r0, #4 - mla r0, r1, r2, r3 - bl ov11_02314D48 - ldr r0, _02314D2C ; =ov11_02324E34 - ldr r0, [r0] - ldr r2, [r0, #8] - mov r1, r2, lsr #0x1f - rsb r0, r1, r2, lsl #30 - adds r0, r1, r0, ror #30 - bne _02314D24 - mov r0, r2, asr #1 - add r0, r2, r0, lsr #30 - mov r1, r0, asr #2 - mov r2, r1, lsr #0x1f - rsb r0, r2, r1, lsl #30 - ldr r3, _02314D38 ; =ov11_02324540 - add r2, r2, r0, ror #30 - mov r0, #0x1c - mla r0, r2, r0, r3 - bl ov11_02314EF8 - b _02314D24 -_023148CC: - ldr r1, [r4, #0x28] - ldr r0, [r4, #4] - add r1, r1, #6 - bl _s32_div_f - cmp r1, #0 - bne _02314D24 - ldr r1, [r4, #8] - ldr r0, _02314D2C ; =ov11_02324E34 - add r1, r1, #1 - str r1, [r4, #8] - ldr r0, [r0] - mov r1, #3 - ldr r4, [r0, #8] - mov r0, r4 - bl _s32_div_f - cmp r1, #0 - bne _0231493C - add r0, r4, r4, lsr #31 - mov r0, r0, asr #1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - ldr r2, _02314D38 ; =ov11_02324540 - add r1, r0, #4 - mov r0, #0x1c - mla r0, r1, r0, r2 - mov r1, r4 - bl ov11_02314EF8 -_0231493C: - ldr r0, _02314D2C ; =ov11_02324E34 - mov r1, #3 - ldr r0, [r0] - ldr r4, [r0, #8] - mov r0, r4 - bl _s32_div_f - cmp r1, #0 - bne _02314988 - mov r0, r4 - mov r1, #3 - bl _s32_div_f - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - ldr r2, _02314D3C ; =ov11_02324460 - add r1, r0, #4 - mov r0, #0x1c - mla r0, r1, r0, r2 - bl ov11_02314D48 -_02314988: - ldr r0, _02314D2C ; =ov11_02324E34 - mov r1, #3 - ldr r0, [r0] - ldr r4, [r0, #8] - mov r0, r4 - bl _s32_div_f - cmp r1, #1 - bne _02314D24 - mov r0, r4 - mov r1, #3 - bl _s32_div_f - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - ldr r2, _02314D3C ; =ov11_02324460 - add r1, r1, r0, ror #30 - mov r0, #0x1c - mla r0, r1, r0, r2 - bl ov11_02314D48 - b _02314D24 -_023149D4: - ldr r1, [r4, #4] - ldr r2, [r4, #0x28] - add r0, r1, #0xc - cmp r0, r2 - mov r8, #6 - ble _023149F8 - cmp r1, r2 - bgt _02314D24 - mov r8, #3 -_023149F8: - ldr r0, _02314D40 ; =0x000001BF - mov r7, #0 - ldr r5, _02314D44 ; =ov11_023247E0 - sub sl, r0, #0xe - ldr r4, _02314D2C ; =ov11_02324E34 - b _02314D1C -_02314A10: - cmp r7, #5 - mov r6, #0xff - addls pc, pc, r7, lsl #2 - b _02314CA0 -_02314A20: ; jump table - b _02314A38 ; case 0 - b _02314A9C ; case 1 - b _02314B04 ; case 2 - b _02314B70 ; case 3 - b _02314BD8 ; case 4 - b _02314C3C ; case 5 -_02314A38: - ldr r2, [r4] - ldr r0, [r2, #4] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - adds r0, r1, r0, ror #30 - bne _02314CA0 - ldr r0, [r2, #8] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #31 - add r1, r1, r0, ror #31 - mov r0, #0x1c - mla r0, r1, r0, r5 - bl ov11_02314E20 - ldr sb, [r4] - mov r6, r0 - ldr r2, [sb, #0xc] - mov r0, #0xb7 - mul r0, r2, r0 - mov r1, #0x140 - bl _s32_div_f - ldr r0, [sb, #0xc] - mov fp, r1 - add r0, r0, #1 - str r0, [sb, #0xc] - b _02314CA0 -_02314A9C: - ldr sb, [r4] - mov r1, #3 - ldr r0, [sb, #4] - bl _s32_div_f - cmp r1, #1 - bne _02314CA0 - ldr r0, [sb, #8] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #31 - add r0, r1, r0, ror #31 - add r1, r0, #2 - mov r0, #0x1c - mla r0, r1, r0, r5 - bl ov11_02314E20 - ldr sb, [r4] - mov r6, r0 - ldr r2, [sb, #0x10] - mov r0, #0x9f - mul r0, r2, r0 - mov r1, #0x140 - bl _s32_div_f - ldr r0, [sb, #0x10] - mov fp, r1 - add r0, r0, #1 - str r0, [sb, #0x10] - b _02314CA0 -_02314B04: - ldr r2, [r4] - ldr r0, [r2, #4] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - cmp r0, #2 - bne _02314CA0 - ldr r0, [r2, #8] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #31 - add r0, r1, r0, ror #31 - add r1, r0, #4 - mov r0, #0x1c - mla r0, r1, r0, r5 - bl ov11_02314E20 - ldr sb, [r4] - mov r6, r0 - ldr r2, [sb, #0x14] - mov r0, #0x92 - mul r0, r2, r0 - mov r1, #0x140 - bl _s32_div_f - ldr r0, [sb, #0x14] - mov fp, r1 - add r0, r0, #1 - str r0, [sb, #0x14] - b _02314CA0 -_02314B70: - ldr sb, [r4] - mov r1, #5 - ldr r0, [sb, #4] - bl _s32_div_f - cmp r1, #2 - bne _02314CA0 - ldr r0, [sb, #8] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #31 - add r0, r1, r0, ror #31 - add r1, r0, #4 - mov r0, #0x1c - mla r0, r1, r0, r5 - bl ov11_02314E20 - ldr sb, [r4] - mov r6, r0 - ldr r2, [sb, #0x14] - mov r0, #0x9b - mul r0, r2, r0 - mov r1, #0x140 - bl _s32_div_f - ldr r0, [sb, #0x18] - mov fp, r1 - add r0, r0, #1 - str r0, [sb, #0x18] - b _02314CA0 -_02314BD8: - ldr r0, [r4] - mov r1, #5 - ldr sb, [r0, #8] - mov r0, sb - bl _s32_div_f - cmp r1, #3 - bne _02314CA0 - mov r1, sb, lsr #0x1f - rsb r0, r1, sb, lsl #31 - add r0, r1, r0, ror #31 - add r1, r0, #6 - mov r0, #0x1c - mla r0, r1, r0, r5 - bl ov11_02314E20 - ldr sb, [r4] - mov r6, r0 - ldr r2, [sb, #0x1c] - mov r1, #0x140 - mul r0, r2, sl - bl _s32_div_f - ldr r0, [sb, #0x1c] - mov fp, r1 - add r0, r0, #1 - str r0, [sb, #0x1c] - b _02314CA0 -_02314C3C: - ldr r0, [r4] - mov r1, #6 - ldr sb, [r0, #8] - mov r0, sb - bl _s32_div_f - cmp r1, #3 - bne _02314CA0 - mov r1, sb, lsr #0x1f - rsb r0, r1, sb, lsl #31 - add r0, r1, r0, ror #31 - add r1, r0, #6 - mov r0, #0x1c - mla r0, r1, r0, r5 - bl ov11_02314E20 - ldr sb, [r4] - mov r6, r0 - ldr r2, [sb, #0x20] - ldr r0, _02314D40 ; =0x000001BF - mov r1, #0x140 - mul r0, r2, r0 - bl _s32_div_f - ldr r0, [sb, #0x20] - mov fp, r1 - add r0, r0, #1 - str r0, [sb, #0x20] -_02314CA0: - cmp r6, #0xff - beq _02314D18 - mov r0, #0x28 - mul r0, r6, r0 - ldr r1, [r4] - add r1, r1, #0x2c - strh r6, [r1, r0] - add r6, r1, r0 - mov r0, fp, lsl #8 - str r0, [r6, #4] - mov r0, #0x20000 - str r0, [r6, #8] - ldr r0, [r4] - ldr r1, [r0, #0x28] - ldr r2, [r0, #4] - mov r0, #0x3c00 - mul r0, r2, r0 - mov r1, r1, lsl #5 - bl _s32_div_f - ldrh r1, [r6, #0x12] - rsb r0, r0, #0x200 - mul r0, r1, r0 - mov r0, r0, lsl #1 - strh r0, [r6, #0x12] - mov r0, #0 - strh r0, [r6, #0x16] - ldr r1, [r4] - ldr r0, [r1, #8] - add r0, r0, #1 - str r0, [r1, #8] -_02314D18: - add r7, r7, #1 -_02314D1C: - cmp r7, r8 - blt _02314A10 -_02314D24: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02314D2C: .word ov11_02324E34 -_02314D30: .word ov11_02324E38 -_02314D34: .word ov11_02324620 -_02314D38: .word ov11_02324540 -_02314D3C: .word ov11_02324460 -_02314D40: .word 0x000001BF -_02314D44: .word ov11_023247E0 - arm_func_end ov11_0231474C - - arm_func_start ov11_02314D48 -ov11_02314D48: ; 0x02314D48 - stmdb sp!, {r4, lr} - ldr r1, _02314E1C ; =ov11_02324E34 - mov r2, #0 - ldr r4, [r1] - mov r3, #0x28 - b _02314E0C -_02314D60: - mul r1, r2, r3 - add lr, r4, r1 - ldrh ip, [lr, #0x2c] - cmp ip, #0xff - bne _02314E08 - ldrh ip, [r0] - ldr r3, _02314E1C ; =ov11_02324E34 - strh ip, [lr, #0x2c] - ldr ip, [r3] - ldr lr, [r0, #4] - add ip, ip, r1 - str lr, [ip, #0x30] - ldr ip, [r3] - ldr lr, [r0, #8] - add ip, ip, r1 - str lr, [ip, #0x34] - ldr ip, [r3] - ldr lr, [r0, #0xc] - add ip, ip, r1 - str lr, [ip, #0x38] - ldr ip, [r3] - ldrh lr, [r0, #0x10] - add ip, ip, r1 - strh lr, [ip, #0x3c] - ldr ip, [r3] - ldrh lr, [r0, #0x12] - add ip, ip, r1 - strh lr, [ip, #0x3e] - ldr ip, [r3] - ldrh lr, [r0, #0x14] - add ip, ip, r1 - strh lr, [ip, #0x40] - ldr ip, [r3] - ldrh lr, [r0, #0x16] - add ip, ip, r1 - strh lr, [ip, #0x42] - ldrh ip, [r0, #0x18] - ldr r3, [r3] - mov r0, r2 - add r1, r3, r1 - strh ip, [r1, #0x44] - ldmia sp!, {r4, pc} -_02314E08: - add r2, r2, #1 -_02314E0C: - cmp r2, #0x50 - blt _02314D60 - mov r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02314E1C: .word ov11_02324E34 - arm_func_end ov11_02314D48 - - arm_func_start ov11_02314E20 -ov11_02314E20: ; 0x02314E20 - stmdb sp!, {r4, lr} - ldr r1, _02314EF4 ; =ov11_02324E34 - mov r2, #0 - ldr r4, [r1] - mov r3, #0x28 - b _02314EE4 -_02314E38: - mul r1, r2, r3 - add lr, r4, r1 - ldrh ip, [lr, #0x2c] - cmp ip, #0xff - bne _02314EE0 - ldrh ip, [r0] - ldr r3, _02314EF4 ; =ov11_02324E34 - strh ip, [lr, #0x2c] - ldr ip, [r3] - ldr lr, [r0, #4] - add ip, ip, r1 - str lr, [ip, #0x30] - ldr ip, [r3] - ldr lr, [r0, #8] - add ip, ip, r1 - str lr, [ip, #0x34] - ldr ip, [r3] - ldr lr, [r0, #0xc] - add ip, ip, r1 - str lr, [ip, #0x38] - ldr ip, [r3] - ldrh lr, [r0, #0x10] - add ip, ip, r1 - strh lr, [ip, #0x3c] - ldr ip, [r3] - ldrh lr, [r0, #0x12] - add ip, ip, r1 - strh lr, [ip, #0x3e] - ldr ip, [r3] - ldrh lr, [r0, #0x14] - add ip, ip, r1 - strh lr, [ip, #0x40] - ldr ip, [r3] - ldrh lr, [r0, #0x16] - add ip, ip, r1 - strh lr, [ip, #0x42] - ldrh ip, [r0, #0x18] - ldr r3, [r3] - mov r0, r2 - add r1, r3, r1 - strh ip, [r1, #0x44] - ldmia sp!, {r4, pc} -_02314EE0: - add r2, r2, #1 -_02314EE4: - cmp r2, #0x40 - blt _02314E38 - mov r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02314EF4: .word ov11_02324E34 - arm_func_end ov11_02314E20 - - arm_func_start ov11_02314EF8 -ov11_02314EF8: ; 0x02314EF8 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02314FF4 ; =ov11_02324E34 - mov ip, #0 - ldr r5, [r2] - mov r2, #0x28 - b _02314FE4 -_02314F10: - mul r3, ip, r2 - add r6, r5, r3 - ldrh r4, [r6, #0x2c] - cmp r4, #0xff - bne _02314FE0 - ldrh r5, [r0] - ldr r4, _02314FF4 ; =ov11_02324E34 - and r2, r1, #0x1f - strh r5, [r6, #0x2c] - ldr r6, [r0, #4] - ldr r5, [r4] - add r6, r6, r2, lsl #12 - add r5, r5, r3 - str r6, [r5, #0x30] - ldr r5, [r0, #8] - mov lr, #0x1c00 - mla r6, r2, lr, r5 - ldr r2, [r4] - mov r5, r1, lsl #0x1c - add r2, r2, r3 - str r6, [r2, #0x34] - ldr r6, [r0, #0xc] - ldr r2, [r4] - add r6, r6, r1 - and r6, r6, #1 - add r2, r2, r3 - str r6, [r2, #0x38] - ldrh r6, [r0, #0x10] - ldr lr, [r4] - mov r2, r1, lsl #0x1b - add r5, r6, r5, lsr #21 - add r1, lr, r3 - strh r5, [r1, #0x3c] - ldrh lr, [r0, #0x12] - ldr r1, [r4] - add r2, lr, r2, lsr #21 - add r1, r1, r3 - strh r2, [r1, #0x3e] - ldr r1, [r4] - ldrh r2, [r0, #0x14] - add r1, r1, r3 - strh r2, [r1, #0x40] - ldr r1, [r4] - ldrh r2, [r0, #0x16] - add r1, r1, r3 - strh r2, [r1, #0x42] - ldrh r2, [r0, #0x18] - ldr r1, [r4] - mov r0, ip - add r1, r1, r3 - strh r2, [r1, #0x44] - ldmia sp!, {r4, r5, r6, pc} -_02314FE0: - add ip, ip, #1 -_02314FE4: - cmp ip, #0x50 - bne _02314F10 - mov r0, #0xff - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02314FF4: .word ov11_02324E34 - arm_func_end ov11_02314EF8 - - arm_func_start ov11_02314FF8 -ov11_02314FF8: ; 0x02314FF8 - stmdb sp!, {r3, r4, r5, lr} - ldrh r1, [r0, #0x10] - ldr r2, _0231513C ; =TRIG_TABLE - cmp r1, #0x8000 - sublo r1, r1, #0x90 - addhs r1, r1, #0x90 - strh r1, [r0, #0x10] - ldrh r1, [r0, #0x12] - sub r1, r1, #0x18 - strh r1, [r0, #0x12] - ldrh r1, [r0, #0x12] - cmp r1, #0x18 - movlo r1, #0x30 - strloh r1, [r0, #0x12] - ldrh r4, [r0, #0x14] - mov r1, r4, lsl #0x1b - mov r1, r1, lsr #0x10 - mov r1, r1, asr #4 - mov r1, r1, lsl #2 - ldrsh r3, [r2, r1] - add r1, r4, #1 - strh r1, [r0, #0x14] - add r1, r3, r3, lsr #31 - mov r1, r1, asr #1 - cmp r4, #0x200 - mov lr, r1, lsl #0x10 - movhi r1, #0xff - strhih r1, [r0] - movhi r0, #0 - ldmhiia sp!, {r3, r4, r5, pc} - ldmib r0, {r1, r4} - mov r3, r1, asr #0xb - add r3, r1, r3, lsr #20 - mov r5, r3, asr #0xc - mov ip, r4, asr #0xb - add r3, r4, ip, lsr #20 - cmp r5, #0x140 - mov r4, r3, asr #0xc - bgt _023150A0 - mvn r3, #0x3f - cmp r5, r3 - bge _023150B0 -_023150A0: - mov r1, #0xff - strh r1, [r0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_023150B0: - cmp r4, #0x1b8 - bgt _023150C4 - sub r3, r3, #0xc0 - cmp r4, r3 - bge _023150D4 -_023150C4: - mov r1, #0xff - strh r1, [r0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_023150D4: - ldrh r3, [r0, #0x10] - ldrh r5, [r0, #0x12] - mov r3, r3, asr #4 - mov ip, r3, lsl #1 - mov r3, ip, lsl #1 - ldrsh r4, [r2, r3] - add r3, ip, #1 - mov ip, r3, lsl #1 - add r3, r4, lr, asr #16 - mul r4, r5, r3 - mov r3, r4, asr #0xb - add r3, r4, r3, lsr #20 - add r1, r1, r3, asr #12 - str r1, [r0, #4] - ldrsh r2, [r2, ip] - ldrh r1, [r0, #0x12] - ldr ip, [r0, #8] - mul r3, r2, r1 - mov r1, r3, asr #0xb - add r1, r3, r1, lsr #20 - mov r1, r1, asr #0xc - add r1, r1, #0x80 - sub r1, ip, r1 - str r1, [r0, #8] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231513C: .word TRIG_TABLE - arm_func_end ov11_02314FF8 - - arm_func_start ov11_02315140 -ov11_02315140: ; 0x02315140 - stmdb sp!, {r3, r4, r5, lr} - ldrh r1, [r0, #0x12] - ldr r2, _02315274 ; =TRIG_TABLE - sub r1, r1, #0x18 - strh r1, [r0, #0x12] - ldrh r1, [r0, #0x12] - cmp r1, #0x18 - movlo r1, #0x30 - strloh r1, [r0, #0x12] - ldrh r4, [r0, #0x14] - mov r1, r4, lsl #0x1b - mov r1, r1, lsr #0x10 - mov r1, r1, asr #4 - mov r1, r1, lsl #2 - ldrsh r3, [r2, r1] - add r1, r4, #1 - strh r1, [r0, #0x14] - mov r1, r3, asr #1 - add r1, r3, r1, lsr #30 - mov r1, r1, asr #2 - cmp r4, #0x180 - mov lr, r1, lsl #0x10 - movhi r1, #0xff - strhih r1, [r0] - movhi r0, #0 - ldmhiia sp!, {r3, r4, r5, pc} - ldmib r0, {r1, r4} - mov r3, r1, asr #0xb - add r3, r1, r3, lsr #20 - mov r5, r3, asr #0xc - mov ip, r4, asr #0xb - add r3, r4, ip, lsr #20 - cmp r5, #0x140 - mov r4, r3, asr #0xc - bgt _023151D8 - mvn r3, #0x3f - cmp r5, r3 - bge _023151E8 -_023151D8: - mov r1, #0xff - strh r1, [r0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_023151E8: - cmp r4, #0x100 - bgt _023151FC - sub r3, r3, #0xc0 - cmp r4, r3 - bge _0231520C -_023151FC: - mov r1, #0xff - strh r1, [r0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0231520C: - ldrh r3, [r0, #0x10] - ldrh r5, [r0, #0x12] - mov r3, r3, asr #4 - mov ip, r3, lsl #1 - mov r3, ip, lsl #1 - ldrsh r4, [r2, r3] - add r3, ip, #1 - mov ip, r3, lsl #1 - add r3, r4, lr, asr #16 - mul r4, r5, r3 - mov r3, r4, asr #0xb - add r3, r4, r3, lsr #20 - add r1, r1, r3, asr #12 - str r1, [r0, #4] - ldrsh r2, [r2, ip] - ldrh r1, [r0, #0x12] - ldr ip, [r0, #8] - mul r3, r2, r1 - mov r1, r3, asr #0xb - add r1, r3, r1, lsr #20 - mov r1, r1, asr #0xc - add r1, r1, #0x80 - sub r1, ip, r1 - str r1, [r0, #8] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02315274: .word TRIG_TABLE - arm_func_end ov11_02315140 - - arm_func_start ov11_02315278 -ov11_02315278: ; 0x02315278 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x108 - ldr r3, _023154F8 ; =ov11_023241D8 - add r2, sp, #0x88 - mov r8, r0 - mov r1, #0x40 -_02315290: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _02315290 - ldr r3, _023154FC ; =ov11_02324258 - add r2, sp, #8 - mov r1, #0x40 -_023152AC: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _023152AC - ldr r1, [r8, #0xc] - ldrh r0, [r8, #0x16] - mov r1, r1, lsr #1 - rsb r1, r1, #0xa - mov r2, r1, lsl #0x10 - mov r3, r0, lsr #2 - add r1, sp, #0 - mov r0, #0 - mov r4, r2, lsr #0x10 - and r7, r3, #0x3f - bl ov11_022EB3C8 - ldrsh r3, [r8, #0x24] - ldr r2, [sp] - cmp r2, r3 - beq _0231531C - ldrh r0, [r8] - cmp r0, #1 - bne _0231531C - ldr r1, [r8, #4] - sub r0, r2, r3 - sub r0, r1, r0, lsl #12 - str r0, [r8, #4] - ldr r0, [sp] - strh r0, [r8, #0x24] -_0231531C: - ldrh r2, [r8, #0x14] - add r0, sp, #0x88 - mov r1, r7, lsl #1 - add r2, r2, #1 - strh r2, [r8, #0x14] - ldrh r2, [r8, #0x16] - ldr r6, _02315500 ; =TRIG_TABLE - add r2, r2, #1 - strh r2, [r8, #0x16] - ldrh r0, [r0, r1] - ldmib r8, {r1, lr} - mov r0, r0, asr #4 - mov r5, r0, lsl #1 - add r3, r5, #1 - ldrh r0, [r8] - mov r2, r1, asr #0xb - mov ip, lr, asr #0xb - mov r5, r5, lsl #1 - add r2, r1, r2, lsr #20 - add ip, lr, ip, lsr #20 - mov r3, r3, lsl #1 - ldrsh r5, [r6, r5] - cmp r0, #2 - mov r2, r2, asr #0xc - mov ip, ip, asr #0xc - ldrsh r6, [r6, r3] - bhs _0231541C - cmp r0, #0 - beq _0231539C - cmp r0, #1 - beq _023153F8 - b _02315440 -_0231539C: - mvn r0, #0x2f - cmp r2, r0 - addlt r0, r1, #0x154000 - strlt r0, [r8, #4] - ldrltsh r0, [r8, #0x22] - movlt r0, r0, lsl #0xc - strlt r0, [r8, #8] - mvn r0, #0xdf - cmp ip, r0 - movlt r0, #0x118000 - strlt r0, [r8, #4] - ldrltsh r0, [r8, #0x22] - movlt r0, r0, lsl #0xc - strlt r0, [r8, #8] - cmp ip, #0 - ble _02315440 - ldr r0, [r8, #4] - add r0, r0, #0x100000 - str r0, [r8, #4] - ldrsh r0, [r8, #0x22] - mov r0, r0, lsl #0xc - str r0, [r8, #8] - b _02315440 -_023153F8: - mvn r0, #0x5f - cmp r2, r0 - bge _02315440 - add r0, r1, #0x170000 - str r0, [r8, #4] - ldrsh r0, [r8, #0x22] - mov r0, r0, lsl #0xc - str r0, [r8, #8] - b _02315440 -_0231541C: - mvn r0, #0x2f - cmp r2, r0 - addlt r0, r1, #0x154000 - strlt r0, [r8, #4] - mvn r0, #0xdf - cmp ip, r0 - ldrlt r0, [r8, #8] - addlt r0, r0, #0x1c0000 - strlt r0, [r8, #8] -_02315440: - ldrh r0, [r8, #0x10] - ldr ip, _02315500 ; =TRIG_TABLE - ldrh r2, [r8, #0x12] - mov r0, r0, asr #4 - mov r1, r0, lsl #1 - mov r0, r1, lsl #1 - ldrsh r3, [ip, r0] - add r0, r1, #1 - mov r1, r0, lsl #1 - mul r2, r3, r2 - mov r0, r2, asr #0xb - add r0, r2, r0, lsr #20 - ldr r3, [r8, #4] - ldrsh r1, [ip, r1] - add r0, r3, r0, asr #12 - str r0, [r8, #4] - ldrh r0, [r8, #0x12] - ldr ip, [r8, #8] - add r2, sp, #8 - mul r3, r1, r0 - mov r0, r3, asr #0xb - add r0, r3, r0, lsr #20 - sub r0, ip, r0, asr #12 - str r0, [r8, #8] - mov r0, r7, lsl #1 - mov r1, r4 - ldrh r4, [r2, r0] - mov r0, #0x1000 - bl _s32_div_f - mov r1, #0xa - mul r7, r0, r1 - mul r0, r5, r4 - mov r1, r7 - bl _s32_div_f - ldr r2, [r8, #4] - mov r1, r7 - add r2, r2, r0 - mul r0, r6, r4 - str r2, [r8, #4] - bl _s32_div_f - ldr r1, [r8, #8] - sub r0, r1, r0 - str r0, [r8, #8] - mov r0, #0 - add sp, sp, #0x108 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023154F8: .word ov11_023241D8 -_023154FC: .word ov11_02324258 -_02315500: .word TRIG_TABLE - arm_func_end ov11_02315278 - - arm_func_start ov11_02315504 -ov11_02315504: ; 0x02315504 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, #0 - ldr r1, [r5, #4] - sub r0, r4, #0x80000 - cmp r1, r0 - bls _02315540 - sub r0, r4, #0x60000 - cmp r1, r0 - movlo r0, #1 - strloh r0, [r5] - ldrlo r0, [r5, #4] - addlo r0, r0, #0x180000 - strlo r0, [r5, #4] -_02315540: - ldrh r0, [r5] - cmp r0, #0 - ldrh r0, [r5, #0x12] - moveq r4, #0x20000 - rsbeq r4, r4, #0 - add r0, r0, #0x180 - strh r0, [r5, #0x12] - ldrh r0, [r5, #0x12] - cmp r0, #0x7800 - subhi r0, r0, #0x180 - strhih r0, [r5, #0x12] - ldrh r0, [r5, #0x12] - cmp r0, #0x3c00 - bls _023155AC - mov r0, #0x4000 - ldr r1, [r5, #8] - rsb r0, r0, #0 - and r0, r1, r0 - str r0, [r5, #8] - ldrh r0, [r5, #0x14] - add r0, r0, #1 - strh r0, [r5, #0x14] - ldrh r0, [r5, #0x14] - ldr r1, [r5, #8] - mov r0, r0, lsl #0x1f - add r0, r1, r0, lsr #18 - str r0, [r5, #8] -_023155AC: - ldrh r0, [r5, #0x10] - ldr ip, _023156B0 ; =TRIG_TABLE - ldrh r2, [r5, #0x12] - mov r0, r0, asr #4 - mov r1, r0, lsl #1 - mov r0, r1, lsl #1 - ldrsh r3, [ip, r0] - add r0, r1, #1 - mov r1, r0, lsl #1 - mul r2, r3, r2 - mov r0, r2, asr #0xb - ldr r3, [r5, #4] - add r0, r2, r0, lsr #20 - add r0, r3, r0, asr #12 - str r0, [r5, #4] - ldrsh r1, [ip, r1] - ldrh r0, [r5, #0x12] - ldr r3, [r5, #8] - mul r2, r1, r0 - mov r0, r2, asr #0xb - add r0, r2, r0, lsr #20 - sub r0, r3, r0, asr #12 - str r0, [r5, #8] - ldrh r6, [r5] - ldrsh r0, [r5, #0x20] - mov r1, #1 - cmp r6, #1 - movhi r6, #1 - bl sub_0201F348 - ldr r0, [r5, #0x1c] - mov r3, #0 - strb r3, [r0, #0x3c] - str r3, [sp] - str r3, [sp, #4] - ldr r1, _023156B4 ; =ov11_02324E34 - ldr r0, [r5, #0x1c] - ldr r1, [r1] - mov r2, r6 - ldr r1, [r1, #0xcb0] - bl sub_0201E7D8 - ldr ip, [r5, #0x1c] - ldr r0, _023156B4 ; =ov11_02324E34 - ldrb r1, [ip, #0x3d] - mov r3, #0x3f - mov r2, #0x7e - orr r1, r1, #4 - strb r1, [ip, #0x3d] - ldr ip, [r5, #4] - ldr r1, [r5, #0x1c] - add r4, ip, r4 - mov r4, r4, lsr #0xc - strh r4, [r1] - ldr r0, [r0] - ldr r4, [r5, #8] - ldr r1, [r0, #0x24] - ldr r0, [r5, #0x1c] - add r1, r1, r4, lsr #12 - strh r1, [r0, #2] - ldr r1, [r5, #0x1c] - mov r0, #0 - strb r3, [r1, #0x3e] - ldr r1, [r5, #0x1c] - strh r2, [r1, #0x2a] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023156B0: .word TRIG_TABLE -_023156B4: .word ov11_02324E34 - arm_func_end ov11_02315504 - - arm_func_start ov11_023156B8 -ov11_023156B8: ; 0x023156B8 - stmdb sp!, {r4, lr} - ldr r1, _02315750 ; =ov11_02324E34 - ldrh r2, [r0, #0x12] - ldr r1, [r1] - ldr lr, _02315754 ; =TRIG_TABLE - ldr r1, [r1, #0x24] - add r1, r2, r1, lsl #8 - strh r1, [r0, #0x12] - ldrh r1, [r0, #0x10] - ldrh r3, [r0, #0x12] - ldr r4, [r0, #4] - mov r1, r1, asr #4 - mov r2, r1, lsl #1 - mov r1, r2, lsl #1 - ldrsh ip, [lr, r1] - add r1, r2, #1 - mov r2, r1, lsl #1 - mul r3, ip, r3 - mov r1, r3, asr #0xb - add r1, r3, r1, lsr #20 - add r1, r4, r1, asr #12 - str r1, [r0, #4] - ldrsh r2, [lr, r2] - ldrh r1, [r0, #0x12] - ldr ip, [r0, #8] - mul r3, r2, r1 - mov r1, r3, asr #0xb - add r1, r3, r1, lsr #20 - sub r1, ip, r1, asr #12 - str r1, [r0, #8] - ldrh r2, [r0, #0x14] - add r1, r2, #1 - strh r1, [r0, #0x14] - cmp r2, #0x100 - movhi r1, #0xff - strhih r1, [r0] - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02315750: .word ov11_02324E34 -_02315754: .word TRIG_TABLE - arm_func_end ov11_023156B8 - - arm_func_start ov11_02315758 -ov11_02315758: ; 0x02315758 - stmdb sp!, {r3, r4, r5, lr} - ldrh r1, [r0, #0x16] - cmp r1, #0 - bne _023157AC - ldr r2, [r0, #0xc] - cmp r2, #0x480 - bls _02315794 - ldr r1, _0231581C ; =ov11_02324E34 - ldr r1, [r1] - ldr r1, [r1, #0x28] - mov r1, r1, lsl #4 - add r1, r1, #0x380 - sub r1, r2, r1 - str r1, [r0, #0xc] - b _023157B4 -_02315794: - mov r1, #0x190000 - str r1, [r0, #4] - mov r1, #0 - str r1, [r0, #8] - mov r0, r1 - ldmia sp!, {r3, r4, r5, pc} -_023157AC: - sub r1, r1, #1 - strh r1, [r0, #0x16] -_023157B4: - ldrh r1, [r0, #0x10] - ldr r5, [r0, #0xc] - ldr r2, _0231581C ; =ov11_02324E34 - mov r3, r1, asr #4 - mov r4, r3, lsl #1 - add r3, r4, #1 - ldr lr, _02315820 ; =TRIG_TABLE - mov ip, r4, lsl #1 - mov r3, r3, lsl #1 - ldr r4, [r2] - ldrsh ip, [lr, ip] - mov r5, r5, lsr #8 - ldrsh r2, [lr, r3] - mul lr, ip, r5 - mul r3, r2, r5 - ldrh r5, [r0, #0x12] - ldr ip, [r4, #0x24] - add r2, lr, #0xa0000 - add r4, r5, ip, lsl #4 - sub r1, r1, r4 - strh r1, [r0, #0x10] - str r2, [r0, #4] - rsb r1, r3, #0x80000 - str r1, [r0, #8] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231581C: .word ov11_02324E34 -_02315820: .word TRIG_TABLE - arm_func_end ov11_02315758 - - arm_func_start ov11_02315824 -ov11_02315824: ; 0x02315824 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - add r1, sp, #8 - mov r0, #0 - bl ov11_022EB3C8 - ldrh r0, [r5, #0x14] - cmp r0, #0 - beq _023158AC - sub r0, r0, #1 - strh r0, [r5, #0x14] - ldrh r0, [r5, #0x10] - ldr r3, _02315984 ; =TRIG_TABLE - ldr r4, [r5, #4] - mov r0, r0, asr #4 - mov r1, r0, lsl #1 - mov r0, r1, lsl #1 - ldrsh r2, [r3, r0] - add r0, r1, #1 - mov r1, r0, lsl #1 - add r0, r2, r2, lsl #1 - mov r2, r0, lsl #0xe - ldrsh r1, [r3, r1] - mov r0, r2, asr #0xa - add r0, r2, r0, lsr #21 - add r2, r4, r0, asr #11 - add r0, r1, r1, lsl #1 - str r2, [r5, #4] - mov r1, r0, lsl #0xe - mov r0, r1, asr #0xa - ldr r2, [r5, #8] - add r0, r1, r0, lsr #21 - sub r0, r2, r0, asr #11 - str r0, [r5, #8] -_023158AC: - ldr r2, [r5, #0xc] - ldr r0, [sp, #8] - cmp r0, r2 - beq _023158D4 - ldr r1, [r5, #4] - sub r0, r0, r2 - sub r0, r1, r0, lsl #12 - str r0, [r5, #4] - ldr r0, [sp, #8] - str r0, [r5, #0xc] -_023158D4: - ldrsh r0, [r5, #0x20] - ldrh r4, [r5] - mov r1, #1 - bl sub_0201F348 - ldr r0, [r5, #0x1c] - mov r3, #0 - strb r3, [r0, #0x3c] - str r3, [sp] - str r3, [sp, #4] - ldr r1, _02315988 ; =ov11_02324E34 - ldr r0, [r5, #0x1c] - ldr r1, [r1] - mov r2, r4 - ldr r1, [r1, #0xcb0] - bl sub_0201E7D8 - ldr r1, [r5, #0x1c] - mov lr, #0x18 - ldrb r0, [r1, #0x3d] - mov ip, #0xff - rsb r3, r4, #0x3f - orr r0, r0, #4 - strb r0, [r1, #0x3d] - ldr r1, [r5, #4] - ldr r0, [r5, #0x1c] - mov r1, r1, lsr #0xc - strh r1, [r0] - ldr r1, [r5, #8] - ldr r0, [r5, #0x1c] - mov r1, r1, lsr #0xc - strh r1, [r0, #2] - ldr r0, [r5, #0x1c] - rsb r2, r4, #0x40 - strh lr, [r0, #8] - ldr r1, [r5, #0x1c] - mov r0, #0 - strh lr, [r1, #0xa] - ldr r1, [r5, #0x1c] - strb ip, [r1, #0x2f] - ldr r1, [r5, #0x1c] - strb r3, [r1, #0x3e] - ldr r1, [r5, #0x1c] - strh r2, [r1, #0x2a] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02315984: .word TRIG_TABLE -_02315988: .word ov11_02324E34 - arm_func_end ov11_02315824 - - arm_func_start ov11_0231598C -ov11_0231598C: ; 0x0231598C - ldr r1, _023159AC ; =ov11_02324E34 - ldr r1, [r1] - cmp r1, #0 - addne r2, r1, #0x2c - moveq r0, #0 - movne r1, #0x28 - mlane r0, r1, r0, r2 - bx lr - .align 2, 0 -_023159AC: .word ov11_02324E34 - arm_func_end ov11_0231598C - - arm_func_start ov11_023159B0 -ov11_023159B0: ; 0x023159B0 - ldr r2, _023159C8 ; =ov11_02324E34 - mov r1, #0x28 - ldr r2, [r2] - add r2, r2, #0x2c - mla r0, r1, r0, r2 - bx lr - .align 2, 0 -_023159C8: .word ov11_02324E34 - arm_func_end ov11_023159B0 - - arm_func_start ov11_023159CC -ov11_023159CC: ; 0x023159CC - ldr r2, _023159E4 ; =ov11_02324E34 - ldr r3, [r2] - str r0, [r3, #0x24] - ldr r0, [r2] - str r1, [r0, #0x28] - bx lr - .align 2, 0 -_023159E4: .word ov11_02324E34 - arm_func_end ov11_023159CC - - arm_func_start ov11_023159E8 -ov11_023159E8: ; 0x023159E8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - ldr r3, _02315A98 ; =ov11_02324E34 - ldr r3, [r3] - cmp r3, #0 - beq _02315A90 - add r4, r3, #0x2c - mov r3, #0x28 - mla r4, r2, r3, r4 - mov r2, r0, asr #7 - add r0, r0, r2, lsr #24 - mov r2, r1, asr #7 - mov r3, r0, asr #8 - add r0, r1, r2, lsr #24 - mov r1, r3, lsl #0xc - mov r0, r0, asr #8 - str r1, [r4, #4] - mov r0, r0, lsl #0xc - str r0, [r4, #8] - ldr r0, [r4, #4] - mov r2, #0xa0000 - str r0, [sp] - ldr r3, [r4, #8] - mov r0, #0 - mov r1, #0x80000 - str r3, [sp, #4] - str r2, [sp, #0xc] - str r1, [sp, #0x10] - str r0, [sp, #8] - str r0, [sp, #0x14] - ldmib r4, {r0, r1} - sub r0, r0, #0xa0000 - rsb r1, r1, #0x80000 - bl FX_Atan2Idx - strh r0, [r4, #0x10] - add r0, sp, #0xc - add r1, sp, #0 - bl VEC_Distance - mov r1, r0, asr #3 - add r0, r0, r1, lsr #28 - mov r0, r0, asr #4 - str r0, [r4, #0xc] -_02315A90: - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - .align 2, 0 -_02315A98: .word ov11_02324E34 - arm_func_end ov11_023159E8 - - arm_func_start ov11_02315A9C -ov11_02315A9C: ; 0x02315A9C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r3, [r4, #4] - ldrh r1, [r4, #0x10] - mov r0, r3, asr #0xb - add r0, r3, r0, lsr #20 - cmp r1, #0x4000 - mov r2, r0, asr #0xc - mov r0, #0x1000 - beq _02315AEC - cmp r1, #0xc000 - bne _02315AF8 - sub r0, r0, #0x1100 - cmp r2, r0 - addlt r0, r3, #0x300000 - strlt r0, [r4, #4] - mov r0, #0x1000 - rsb r0, r0, #0 - b _02315AF8 -_02315AEC: - cmp r2, #0x200 - subgt r1, r3, #0x300000 - strgt r1, [r4, #4] -_02315AF8: - ldrh r1, [r4, #0x10] - ldr lr, _02315C00 ; =TRIG_TABLE - ldrh r3, [r4, #0x12] - mov r1, r1, asr #4 - mov r2, r1, lsl #1 - mov r1, r2, lsl #1 - ldrsh ip, [lr, r1] - add r1, r2, #1 - mov r2, r1, lsl #1 - mul r3, ip, r3 - mov r1, r3, asr #0xb - ldr ip, [r4, #4] - add r1, r3, r1, lsr #20 - add r1, ip, r1, asr #12 - str r1, [r4, #4] - ldrsh r2, [lr, r2] - ldrh r1, [r4, #0x12] - ldr ip, [r4, #8] - mul r3, r2, r1 - mov r1, r3, asr #0xb - add r1, r3, r1, lsr #20 - sub r1, ip, r1, asr #12 - str r1, [r4, #8] - ldrh r1, [r4, #0x16] - cmp r1, #0 - subne r1, r1, #1 - strneh r1, [r4, #0x16] - ldrne r1, [r4, #8] - addne r0, r1, r0 - strne r0, [r4, #8] - ldrsh r0, [r4, #0x20] - ldrh r5, [r4] - mov r1, #1 - bl sub_0201F348 - ldr r0, [r4, #0x1c] - mov r3, #0 - strb r3, [r0, #0x3c] - str r3, [sp] - str r3, [sp, #4] - ldr r1, _02315C04 ; =ov11_02324E34 - ldr r0, [r4, #0x1c] - ldr r1, [r1] - mov r2, r5 - ldr r1, [r1, #0xcb0] - bl sub_0201E7D8 - ldr ip, [r4, #0x1c] - mov r3, #0x3f - ldrb r1, [ip, #0x3d] - mov r2, #0x7e - mov r0, #0 - orr r1, r1, #4 - strb r1, [ip, #0x3d] - ldr ip, [r4, #4] - ldr r1, [r4, #0x1c] - mov ip, ip, lsr #0xc - strh ip, [r1] - ldr ip, [r4, #8] - ldr r1, [r4, #0x1c] - mov ip, ip, lsr #0xc - strh ip, [r1, #2] - ldr r1, [r4, #0x1c] - strb r3, [r1, #0x3e] - ldr r1, [r4, #0x1c] - strh r2, [r1, #0x2a] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02315C00: .word TRIG_TABLE -_02315C04: .word ov11_02324E34 - arm_func_end ov11_02315A9C - - arm_func_start ov11_02315C08 -ov11_02315C08: ; 0x02315C08 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r0 - ldr r3, [r8, #4] - ldrh r1, [r8, #0x10] - mov r0, r3, asr #0xb - add r0, r3, r0, lsr #20 - cmp r1, #0x4000 - mov r2, r0, asr #0xc - beq _02315C4C - cmp r1, #0xc000 - bne _02315C58 - mvn r0, #0xff - cmp r2, r0 - addle r0, r3, #0x300000 - strle r0, [r8, #4] - b _02315C58 -_02315C4C: - cmp r2, #0x200 - subge r0, r3, #0x300000 - strge r0, [r8, #4] -_02315C58: - ldrh r0, [r8, #0x10] - ldr r4, _02315E18 ; =TRIG_TABLE - ldrh r2, [r8, #0x12] - mov r0, r0, asr #4 - mov r1, r0, lsl #1 - mov r0, r1, lsl #1 - ldrsh r3, [r4, r0] - add r0, r1, #1 - mov r1, r0, lsl #1 - mul r0, r3, r2 - mov r2, r0, lsl #1 - mov r0, r2, asr #0xb - ldr r3, [r8, #4] - add r0, r2, r0, lsr #20 - add r0, r3, r0, asr #12 - str r0, [r8, #4] - ldrsh r1, [r4, r1] - ldrh r0, [r8, #0x12] - ldr r3, [r8, #8] - mul r2, r1, r0 - mov r0, r2, asr #0xb - add r0, r2, r0, lsr #20 - sub r0, r3, r0, asr #12 - str r0, [r8, #8] - ldrh r0, [r8, #0x16] - cmp r0, #0 - subne r0, r0, #1 - strneh r0, [r8, #0x16] - bne _02315CDC - ldrh r0, [r8, #0x12] - cmp r0, #0x4800 - addlo r0, r0, #0x200 - strloh r0, [r8, #0x12] -_02315CDC: - ldrh r0, [r8, #0x16] - ldr r6, [r8, #4] - ldr r4, [r8, #8] - mov r0, r0, lsl #1 - rsb r0, r0, #0x40 - mov r0, r0, lsl #0x10 - movs r7, r0, asr #0x10 - mov r1, r6, asr #0xb - add r2, r6, r1, lsr #20 - mov r3, r4, asr #0xb - ldrsh r0, [r8, #0x20] - ldrh r5, [r8] - mov r1, #1 - movmi r7, #0 - mov r6, r2, asr #0xc - add r4, r4, r3, lsr #20 - bl sub_0201F348 - ldr r0, [r8, #0x1c] - mov r1, #5 - strb r1, [r0, #0x3c] - mov r0, #1 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r1, _02315E1C ; =ov11_02324E34 - ldr r0, [r8, #0x1c] - ldr r1, [r1] - mov r2, r5 - ldr r1, [r1, #0xcb0] - mov r3, #0x8000 - bl sub_0201E7D8 - sub r1, r7, #1 - cmp r6, #0x100 - ldr r0, [r8, #0x1c] - mov r1, r1, lsl #2 - strb r1, [r0, #0x2f] - ldr r3, [r8, #0x1c] - mvnge r6, #0xff - ldrb r2, [r3, #0x3d] - mov r1, r6, lsl #0x10 - add r0, r7, r7, lsr #31 - orr r2, r2, #4 - strb r2, [r3, #0x3d] - add r3, r6, #0x100 - ldr r2, [r8, #0x1c] - mov r1, r1, asr #0x10 - strh r1, [r2] - mov r0, r0, asr #1 - rsb r2, r0, r4, asr #12 - mov r2, r2, lsl #0x10 - add r0, r0, r4, asr #12 - mov r0, r0, lsl #0x10 - ldr r5, [r8, #0x1c] - mov r6, r2, asr #0x10 - strh r6, [r5, #2] - mov r3, r3, lsl #0x10 - mov r5, r3, asr #0x10 - ldr r2, [r8, #0x1c] - mov r4, r0, asr #0x10 - strh r5, [r2, #4] - ldr r2, [r8, #0x1c] - mov r3, #0x3e - strh r6, [r2, #6] - ldr r2, [r8, #0x1c] - strh r1, [r2, #8] - ldr r1, [r8, #0x1c] - mov r2, #0x7e - strh r4, [r1, #0xa] - ldr r0, [r8, #0x1c] - strh r5, [r0, #0xc] - ldr r0, [r8, #0x1c] - strh r4, [r0, #0xe] - ldr r1, [r8, #0x1c] - mov r0, #0 - strb r3, [r1, #0x3e] - ldr r1, [r8, #0x1c] - strh r2, [r1, #0x2a] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02315E18: .word TRIG_TABLE -_02315E1C: .word ov11_02324E34 - arm_func_end ov11_02315C08 - - arm_func_start ov11_02315E20 -ov11_02315E20: ; 0x02315E20 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrh r0, [r4, #0x16] - cmp r0, #0 - beq _02315E68 - rsb r0, r0, #0x30 - mov r0, r0, lsl #2 - rsb r0, r0, #0 - str r0, [r4, #8] - ldrh r0, [r4, #0x16] - rsb r0, r0, #0x30 - mov r0, r0, lsl #2 - rsb r0, r0, #0 - str r0, [r4, #4] - ldrh r0, [r4, #0x16] - sub r0, r0, #1 - strh r0, [r4, #0x16] - b _02315ECC -_02315E68: - ldr r0, _02315ED4 ; =ov11_02324E34 - ldr r0, [r0] - ldr r1, [r0, #0x24] - cmp r1, #0 - beq _02315EB4 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - mov r0, r0, asr #2 - mov r1, #3 - bl _s32_div_f - sub r1, r1, #0xc4 - ldr r0, _02315ED4 ; =ov11_02324E34 - str r1, [r4, #8] - ldr r2, [r0] - mov r0, #0 - ldr r1, [r2, #0x24] - sub r1, r1, #1 - str r1, [r2, #0x24] - ldmia sp!, {r4, pc} -_02315EB4: - ldr r0, [r4, #8] - add r0, r0, #2 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #4 - str r0, [r4, #4] -_02315ECC: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02315ED4: .word ov11_02324E34 - arm_func_end ov11_02315E20 - - arm_func_start ov11_02315ED8 -ov11_02315ED8: ; 0x02315ED8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - ldrh r0, [r5, #0x10] - ldr r4, _02316010 ; =TRIG_TABLE - ldrh r2, [r5, #0x12] - mov r0, r0, asr #4 - mov r1, r0, lsl #1 - mov r0, r1, lsl #1 - ldrsh r3, [r4, r0] - add r0, r1, #1 - mov r1, r0, lsl #1 - mul r2, r3, r2 - mov r0, r2, asr #0xb - ldr r3, [r5, #4] - add r0, r2, r0, lsr #20 - add r0, r3, r0, asr #12 - str r0, [r5, #4] - ldrsh r1, [r4, r1] - ldrh r0, [r5, #0x12] - ldr r3, [r5, #8] - mul r2, r1, r0 - mov r0, r2, asr #0xb - add r0, r2, r0, lsr #20 - sub r0, r3, r0, asr #12 - str r0, [r5, #8] - ldrh r0, [r5, #0x16] - add r0, r0, #1 - strh r0, [r5, #0x16] - ldrh r0, [r5, #0x16] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #25 - add r1, r1, r0, ror #25 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - mov r4, r0, asr #2 - cmp r4, #0x10 - ldrsh r0, [r5, #0x20] - mov r1, #1 - rsbhi r4, r4, #0x20 - bl sub_0201F348 - mov r2, #0 - ldr r1, [r5, #0x1c] - ldr r0, _02316014 ; =ov11_02324E34 - strb r2, [r1, #0x3c] - str r2, [sp] - str r2, [sp, #4] - ldr r1, [r0] - ldr r0, [r5, #0x1c] - ldr r1, [r1, #0xcb0] - mov r3, r2 - bl sub_0201E7D8 - ldr r3, [r5, #0x1c] - mov r0, #6 - mul r1, r4, r0 - ldrb r2, [r3, #0x3d] - add r1, r1, #0x80 - orr r0, r2, #4 - strb r0, [r3, #0x3d] - ldr r2, [r5, #4] - ldr r0, [r5, #0x1c] - mov r2, r2, lsr #0xc - strh r2, [r0] - ldr r2, [r5, #8] - ldr r0, [r5, #0x1c] - mov r2, r2, lsr #0xc - strh r2, [r0, #2] - ldr r0, [r5, #0x1c] - strb r1, [r0, #0x2f] - ldr r0, [r5, #0x1c] - mov r1, #0x3f - strb r1, [r0, #0x3e] - ldr r0, [r5, #0x1c] - mov r1, #0x7e - strh r1, [r0, #0x2a] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02316010: .word TRIG_TABLE -_02316014: .word ov11_02324E34 - arm_func_end ov11_02315ED8 - - arm_func_start ov11_02316018 -ov11_02316018: ; 0x02316018 - stmdb sp!, {r3, r4, r5, lr} - ldrh r1, [r0, #0x12] - ldr r3, [r0, #4] - add r1, r1, #0x40 - strh r1, [r0, #0x12] - ldrh r2, [r0] - mov r1, r3, asr #0xb - add r1, r3, r1, lsr #20 - cmp r2, #0 - mov r3, r1, asr #0xc - bne _02316094 - cmp r3, #8 - bgt _02316068 - ldrh r1, [r0, #0x10] - cmp r1, #0xc000 - moveq r2, #0 - ldreq r1, _02316160 ; =ov11_02324E34 - streqh r2, [r0, #0x12] - ldreq r1, [r1] - streq r2, [r1, #0x24] -_02316068: - cmp r3, #0xf8 - blt _023160E0 - ldrh r1, [r0, #0x10] - cmp r1, #0x4000 - bne _023160E0 - mov r2, #0 - ldr r1, _02316160 ; =ov11_02324E34 - strh r2, [r0, #0x12] - ldr r1, [r1] - str r2, [r1, #0x24] - b _023160E0 -_02316094: - mvn r1, #0x5f - cmp r3, r1 - bgt _023160BC - ldrh r1, [r0, #0x10] - cmp r1, #0xc000 - moveq r2, #0 - ldreq r1, _02316160 ; =ov11_02324E34 - streqh r2, [r0, #0x12] - ldreq r1, [r1] - streq r2, [r1, #0x24] -_023160BC: - cmp r3, #0x158 - blt _023160E0 - ldrh r1, [r0, #0x10] - cmp r1, #0x4000 - moveq r2, #0 - ldreq r1, _02316160 ; =ov11_02324E34 - streqh r2, [r0, #0x12] - ldreq r1, [r1] - streq r2, [r1, #0x24] -_023160E0: - ldrh r1, [r0, #0x10] - ldr r2, _02316160 ; =ov11_02324E34 - ldr lr, _02316164 ; =TRIG_TABLE - mov r1, r1, asr #4 - mov r3, r1, lsl #1 - mov r1, r3, lsl #1 - ldrsh ip, [lr, r1] - ldrh r1, [r0, #0x12] - ldr r4, [r2] - add r3, r3, #1 - mul r1, ip, r1 - ldr ip, [r4, #0x24] - ldr r5, [r0, #4] - add r4, r1, ip, lsl #8 - mov r1, r4, asr #0xb - add r1, r4, r1, lsr #20 - add r1, r5, r1, asr #12 - str r1, [r0, #4] - mov r1, r3, lsl #1 - ldrsh r3, [lr, r1] - ldrh r1, [r0, #0x12] - ldr r2, [r2] - ldr ip, [r0, #8] - mul r1, r3, r1 - ldr r2, [r2, #0x24] - add r2, r1, r2, lsl #8 - mov r1, r2, asr #0xb - add r1, r2, r1, lsr #20 - sub r1, ip, r1, asr #12 - str r1, [r0, #8] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02316160: .word ov11_02324E34 -_02316164: .word TRIG_TABLE - arm_func_end ov11_02316018 - - arm_func_start ov11_02316168 -ov11_02316168: ; 0x02316168 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x14 - bl OverlayIsLoaded - cmp r0, #0 - beq _023161BC - bl ov16_0238CCBC - cmp r0, #0 - beq _023161BC - bl ov16_0238CCBC - cmp r0, #1 - str r0, [r4, #0xc] - cmpne r0, #2 - beq _023161B0 - cmp r0, #3 - moveq r0, #0 - streqh r0, [r4, #0x16] - b _023161B8 -_023161B0: - mov r0, #0 - strh r0, [r4, #0x16] -_023161B8: - bl ov16_0238CCD8 -_023161BC: - ldrh r0, [r4, #0x16] - add r0, r0, #1 - strh r0, [r4, #0x16] - ldr r2, [r4, #0xc] - cmp r2, #5 - addls pc, pc, r2, lsl #2 - b _02316324 -_023161D8: ; jump table - b _023161F0 ; case 0 - b _02316214 ; case 1 - b _0231624C ; case 2 - b _0231626C ; case 3 - b _023162F4 ; case 4 - b _0231631C ; case 5 -_023161F0: - ldr r0, [r4, #8] - cmp r0, #0x80 - addlo r0, r0, #1 - strlo r0, [r4, #8] - addhs r0, r2, #1 - strhs r0, [r4, #0xc] - movhs r0, #0 - strhsh r0, [r4, #0x16] - b _02316324 -_02316214: - ldrh r0, [r4, #0x10] - cmp r0, #0x10 - addlo r0, r0, #1 - strloh r0, [r4, #0x10] - movlo r0, #0 - strloh r0, [r4, #0x16] - blo _02316324 - add r0, r2, #1 - str r0, [r4, #0xc] - mov r0, #0 - strh r0, [r4, #0x16] - mov r0, #0x100 - strh r0, [r4, #0x12] - b _02316324 -_0231624C: - ldrh r1, [r4, #0x16] - ldr r0, _0231632C ; =0x00002710 - cmp r1, r0 - addhi r0, r2, #1 - strhi r0, [r4, #0xc] - movhi r0, #0 - strhih r0, [r4, #0x16] - b _02316324 -_0231626C: - ldrh r0, [r4, #0x16] - mov r0, r0, lsl #0x1f - mov r0, r0, lsr #0x17 - add r0, r0, #0x80 - str r0, [r4, #8] - ldrh r0, [r4, #0x16] - add r0, r0, #1 - mov r0, r0, lsl #0x1f - mov r0, r0, lsr #0x17 - add r0, r0, #0x80 - str r0, [r4, #4] - ldrh r0, [r4, #0x16] - cmp r0, #0xb4 - movlo r0, #0x180 - strlo r0, [r4, #4] - ldrh r0, [r4, #0x16] - cmp r0, #0xb4 - bne _023162B8 - bl ov16_0238CCF0 -_023162B8: - ldrh r0, [r4, #0x16] - cmp r0, #0xc4 - movhi r0, #0x180 - strhi r0, [r4, #8] - ldrh r0, [r4, #0x16] - cmp r0, #0xdc - bls _02316324 - mov r0, #0x180 - str r0, [r4, #8] - ldr r1, [r4, #0xc] - mov r0, #0 - add r1, r1, #1 - str r1, [r4, #0xc] - strh r0, [r4, #0x16] - b _02316324 -_023162F4: - mov r0, #0 - strh r0, [r4, #0x12] - mov r0, #0x80 - str r0, [r4, #4] - mov r0, #0x180 - str r0, [r4, #8] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _02316324 -_0231631C: - mov r0, #0 - strh r0, [r4, #0x12] -_02316324: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0231632C: .word 0x00002710 - arm_func_end ov11_02316168 - - arm_func_start ov11_02316330 -ov11_02316330: ; 0x02316330 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _023163A4 ; =ov11_02324E34 - ldr r0, [r0] - ldrb r0, [r0, #0xcac] - cmp r0, #0 - bne _0231639C - ldr r1, _023163A8 ; =ov11_02324B9C - add r0, sp, #0 - mov r2, #6 - bl LoadWteFromRom - add r0, sp, #0 - mov r1, #0x8000 - mov r2, #1 - mov r3, #0 - bl sub_0201E12C - add r0, sp, #0 - bl DelayWteFree - ldr r0, _023163AC ; =ov11_02324BB4 - mov r1, #0 - bl sub_0201DF38 - ldr r1, _023163A4 ; =ov11_02324E34 - mov r2, #1 - ldr r3, [r1] - str r0, [r3, #0xcb0] - ldr r0, [r1] - strb r2, [r0, #0xcac] -_0231639C: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_023163A4: .word ov11_02324E34 -_023163A8: .word ov11_02324B9C -_023163AC: .word ov11_02324BB4 - arm_func_end ov11_02316330 - - arm_func_start ov11_023163B0 -ov11_023163B0: ; 0x023163B0 - stmdb sp!, {r4, r5, r6, lr} - ldr r5, _023163DC ; =ov11_023248C0 - mov r6, #0 - mov r4, #0x1c -_023163C0: - add r1, r6, #3 - mla r0, r1, r4, r5 - bl ov11_02314D48 - add r6, r6, #1 - cmp r6, #0x12 - blt _023163C0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023163DC: .word ov11_023248C0 - arm_func_end ov11_023163B0 - - arm_func_start ov11_023163E0 -ov11_023163E0: ; 0x023163E0 - ldrh r2, [r0, #0x12] - ldr r1, [r0, #8] - cmp r1, r2, lsl #2 - movlo r1, #0xff - strloh r1, [r0] - sublo r0, r1, #0x100 - bxlo lr - sub r1, r1, r2, lsl #2 - str r1, [r0, #8] - ldrh r1, [r0, #0x12] - ldr r2, [r0, #4] - add r1, r2, r1 - str r1, [r0, #4] - cmp r1, #0x16000 - ldrhi r1, [r0, #4] - subhi r1, r1, #0x14000 - strhi r1, [r0, #4] - mov r0, #0 - bx lr - arm_func_end ov11_023163E0 - - arm_func_start ov11_0231642C -ov11_0231642C: ; 0x0231642C - ldr ip, _02316438 ; =ov11_0230D270 - ldr r0, _0231643C ; =ov11_02324BF8 - bx ip - .align 2, 0 -_02316438: .word ov11_0230D270 -_0231643C: .word ov11_02324BF8 - arm_func_end ov11_0231642C - - arm_func_start ov11_02316440 -ov11_02316440: ; 0x02316440 - ldr ip, _0231644C ; =ov11_0230D17C - ldr r0, _02316450 ; =ov11_02324BF8 - bx ip - .align 2, 0 -_0231644C: .word ov11_0230D17C -_02316450: .word ov11_02324BF8 - arm_func_end ov11_02316440 - - arm_func_start ov11_02316454 -ov11_02316454: ; 0x02316454 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #0xf - bl MemAlloc - ldr r1, _023164A8 ; =ov11_02324E78 - str r0, [r1] - bl ov11_02316528 - mov r0, #0x10 - bl ov11_022E9D10 - ldr r1, _023164A8 ; =ov11_02324E78 - mov r3, #0 - ldr r2, [r1] - mov r0, #1 - str r3, [r2, #8] - ldr r2, [r1] - strb r0, [r2, #6] - ldr r2, [r1] - strb r3, [r2, #7] - ldr r1, [r1] - str r3, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_023164A8: .word ov11_02324E78 - arm_func_end ov11_02316454 - - arm_func_start ov11_023164AC -ov11_023164AC: ; 0x023164AC - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _023164D8 - ldr r0, _02316524 ; =ov11_02324E78 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #8 - movne r0, #1 - strneb r0, [r1, #7] - movne r0, #0 - ldmneia sp!, {r3, pc} -_023164D8: - bl ov11_02316528 - ldr r0, _02316524 ; =ov11_02324E78 - mov r2, #8 - ldr r1, [r0] - str r2, [r1] - ldr r1, [r0] - ldr r0, [r1, #8] - cmp r0, #0 - beq _02316504 - add r0, r1, #8 - bl sub_02047150 -_02316504: - ldr r0, _02316524 ; =ov11_02324E78 - ldr r0, [r0] - bl MemFree - ldr r0, _02316524 ; =ov11_02324E78 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02316524: .word ov11_02324E78 - arm_func_end ov11_023164AC - - arm_func_start ov11_02316528 -ov11_02316528: ; 0x02316528 - stmdb sp!, {r3, lr} - ldr r1, _023165A0 ; =ov11_02324E78 - mov r3, #1 - ldr r0, [r1] - mov r2, #0 - strb r2, [r0, #4] - ldr r2, [r1] - sub r0, r3, #2 - str r3, [r2] - ldr r1, [r1] - strb r3, [r1, #5] - bl ov11_022F4734 - mov r0, #1 - bl ov11_022EAFF8 - ldr r0, _023165A0 ; =ov11_02324E78 - ldr r0, [r0, #4] - cmp r0, #0 - beq _0231658C - bl GroundBg_FreeAll - ldr r0, _023165A0 ; =ov11_02324E78 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _023165A0 ; =ov11_02324E78 - mov r1, #0 - str r1, [r0, #4] -_0231658C: - ldr r0, _023165A0 ; =ov11_02324E78 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #6] - ldmia sp!, {r3, pc} - .align 2, 0 -_023165A0: .word ov11_02324E78 - arm_func_end ov11_02316528 - - arm_func_start ov11_023165A4 -ov11_023165A4: ; 0x023165A4 - ldr r0, _023165C0 ; =ov11_02324E78 - ldr r1, [r0] - ldrb r0, [r1, #4] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #5] - bx lr - .align 2, 0 -_023165C0: .word ov11_02324E78 - arm_func_end ov11_023165A4 - - arm_func_start ov11_023165C4 -ov11_023165C4: ; 0x023165C4 - bx lr - arm_func_end ov11_023165C4 - - arm_func_start ov11_023165C8 -ov11_023165C8: ; 0x023165C8 - stmdb sp!, {r3, lr} - ldr r0, _02316788 ; =ov11_02324E78 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _02316780 -_023165E4: ; jump table - b _02316608 ; case 0 - b _02316630 ; case 1 - b _02316780 ; case 2 - b _02316780 ; case 3 - b _02316780 ; case 4 - b _023166C0 ; case 5 - b _023166EC ; case 6 - b _02316738 ; case 7 - b _02316770 ; case 8 -_02316608: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02316788 ; =ov11_02324E78 - mov r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #5] - bne _02316780 - ldr r0, _02316788 ; =ov11_02324E78 - ldr r0, [r0] - str r1, [r0] -_02316630: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02316788 ; =ov11_02324E78 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #5] - bne _02316780 - ldr r0, _02316788 ; =ov11_02324E78 - ldr r2, [r0] - ldrb r1, [r2, #7] - cmp r1, #0 - beq _02316688 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02316788 ; =ov11_02324E78 - mov r3, #1 - ldr r2, [r0] - mov r1, #7 - strb r3, [r2, #5] - ldr r0, [r0] - str r1, [r0] - b _02316780 -_02316688: - ldrb r1, [r2, #6] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2, #5] - beq _02316780 - mov r1, #1 - strb r1, [r2, #5] - ldr r1, [r0] - mov r2, #0 - strb r2, [r1, #6] - ldr r0, [r0] - mov r1, #2 - str r1, [r0] - b _02316780 -_023166C0: - bl IsScreenFadeInProgress - cmp r0, #0 - ldrne r0, _02316788 ; =ov11_02324E78 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #5] - bne _02316780 - ldr r0, _02316788 ; =ov11_02324E78 - mov r1, #6 - ldr r0, [r0] - str r1, [r0] -_023166EC: - ldr r0, _02316788 ; =ov11_02324E78 - ldr r1, [r0] - ldrb r0, [r1, #7] - cmp r0, #0 - ldreqb r0, [r1, #6] - cmpeq r0, #0 - moveq r0, #0 - streqb r0, [r1, #5] - beq _02316780 - mov r0, #0x10 - bl ov11_022E9CB0 - ldr r0, _02316788 ; =ov11_02324E78 - mov r3, #0 - ldr r2, [r0] - mov r1, #1 - str r3, [r2] - ldr r0, [r0] - strb r1, [r0, #5] - b _02316780 -_02316738: - bl IsScreenFadeInProgress - cmp r0, #0 - bne _02316780 - ldr r0, _02316788 ; =ov11_02324E78 - ldr r1, [r0] - ldr r0, [r1, #8] - cmp r0, #0 - beq _02316760 - add r0, r1, #8 - bl sub_02047150 -_02316760: - ldr r0, _02316788 ; =ov11_02324E78 - mov r1, #8 - ldr r0, [r0] - str r1, [r0] -_02316770: - ldr r0, _02316788 ; =ov11_02324E78 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #5] -_02316780: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02316788: .word ov11_02324E78 - arm_func_end ov11_023165C8 - ; 0x0231678C - - arm_func_start ov11_0231678C -ov11_0231678C: ; 0x0231678C - stmdb sp!, {r3, lr} - ldr r0, _02316838 ; =ov11_02324E78 - ldr r2, [r0] - ldr r1, [r2] - cmp r1, #2 - bne _023167E0 - mov r1, #1 - strb r1, [r2, #5] - ldr r3, [r0] - ldr r0, [r3, #8] - cmp r0, #0 - bne _023167CC - ldr r1, _0231683C ; =ov11_02324BCC - ldr r2, _02316840 ; =ov11_023168E0 - add r0, r3, #8 - bl sub_0204707C -_023167CC: - ldr r0, _02316838 ; =ov11_02324E78 - mov r1, #3 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} -_023167E0: - cmp r1, #3 - ldmneia sp!, {r3, pc} - mov r0, #1 - strb r0, [r2, #5] - bl ov11_02316528 - mov r0, #0x2f4 - mov r1, #0xf - bl MemAlloc - ldr r2, _02316838 ; =ov11_02324E78 - ldr r1, _02316844 ; =ov11_02324BDC - str r0, [r2, #4] - bl GroundBg_Init - ldr r0, _02316838 ; =ov11_02324E78 - ldr r1, _02316848 ; =ov11_02324C1C - ldr r0, [r0, #4] - mov r2, #0 - bl ov11_022EDE64 - ldr r0, _02316838 ; =ov11_02324E78 - mov r1, #4 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02316838: .word ov11_02324E78 -_0231683C: .word ov11_02324BCC -_02316840: .word ov11_023168E0 -_02316844: .word ov11_02324BDC -_02316848: .word ov11_02324C1C - arm_func_end ov11_0231678C - - arm_func_start ov11_0231684C -ov11_0231684C: ; 0x0231684C - stmdb sp!, {r3, lr} - ldr r0, _02316898 ; =ov11_02324E78 - ldr r1, [r0] - ldr r1, [r1] - cmp r1, #4 - bne _02316890 - ldr r0, [r0, #4] - bl ov11_022EF70C - mov r0, #1 - bl ov11_022EF53C - ldr r0, _02316898 ; =ov11_02324E78 - mov r3, #1 - ldr r2, [r0] - mov r1, #5 - strb r3, [r2, #4] - ldr r0, [r0] - str r1, [r0] -_02316890: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02316898: .word ov11_02324E78 - arm_func_end ov11_0231684C - - arm_func_start ov11_0231689C -ov11_0231689C: ; 0x0231689C - stmdb sp!, {r3, lr} - ldr r0, _023168DC ; =ov11_02324E78 - ldr r1, [r0] - ldrb r1, [r1, #4] - cmp r1, #0 - ldrne r0, [r0, #4] - cmpne r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_022EFB70 - ldr r0, _023168DC ; =ov11_02324E78 - mov r2, #0 - ldr r1, [r0] - mov r0, #0x10 - strb r2, [r1, #4] - bl ov11_022E9C98 - ldmia sp!, {r3, pc} - .align 2, 0 -_023168DC: .word ov11_02324E78 - arm_func_end ov11_0231689C - - arm_func_start ov11_023168E0 -ov11_023168E0: ; 0x023168E0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl GetGameMode - mov r4, r0 - mov r0, #0x400 - mov r1, #0xf - bl MemAlloc - mov r6, r0 - cmp r4, #2 - mov r7, #0 - bne _023169FC - ldr r4, _02316A2C ; =ov11_02324C38 - ldr r5, _02316A30 ; =ov11_02324C30 - mov r8, r7 - mov fp, #5 -_0231691C: - mov r0, r8, lsl #0x18 - mov r0, r0, asr #0x18 - bl IsAcceptedMissionSlotEmpty - cmp r0, #0 - bne _023169F0 - mov r0, r8, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov sb, r0 - ldrb r0, [sb] - mov r1, fp - mov r2, r7 - cmp r0, #5 - moveq r3, r5 - movne r3, r4 - mov r0, sl - bl DrawTextInWindow - mov r0, r6 - mov r1, #0x400 - mov r2, sb - bl sub_02061F44 - mov r0, sl - mov r1, #0x12 - mov r2, r7 - mov r3, r6 - bl DrawTextInWindow - mov r0, r6 - mov r1, #0x400 - mov r2, sb - bl sub_02061F90 - mov r0, sl - mov r1, #0x40 - add r2, r7, #0xa - mov r3, r6 - bl DrawTextInWindow - ldrb r1, [sb, #1] - cmp r1, #0xe - bne _023169CC - ldr r3, _02316A34 ; =0x00003C2A - mov r0, sl - mov r1, #0xcc - add r2, r7, #0xa - bl AppendStandardStringToMission - b _023169EC -_023169CC: - add r0, sb, #4 - bl GetMissionRankWithCapAndModifiersAndCap - bl sub_02062DB4 - mov r3, r0 - mov r0, sl - mov r1, #0xcc - add r2, r7, #0xa - bl DrawTextInWindow -_023169EC: - add r7, r7, #0x14 -_023169F0: - add r8, r8, #1 - cmp r8, #8 - blt _0231691C -_023169FC: - cmp r7, #0 - bne _02316A18 - ldr r3, _02316A38 ; =0x000008DF - mov r0, sl - mov r1, #5 - mov r2, #0x48 - bl AppendStandardStringToMission -_02316A18: - mov r0, sl - bl UpdateWindow - mov r0, r6 - bl MemFree - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02316A2C: .word ov11_02324C38 -_02316A30: .word ov11_02324C30 -#if defined(EUROPE) -_02316A34: .word 0x00003C2C -_02316A38: .word 0x000008DF -#elif defined(JAPAN) -_02316A34: .word 0x00003868 -_02316A38: .word 0x00001D37 -#else -_02316A34: .word 0x00003C2A -_02316A38: .word 0x000008DF -#endif - arm_func_end ov11_023168E0 - - .bss - .global ov11_02324E80 -ov11_02324E80: - .space 0x14 - .global ov11_02324E94 -ov11_02324E94: - .space 0x10 - .global ov11_02324EA4 -ov11_02324EA4: - .space 0x10 - .global LOCK_NOTIFY_ARRAY -LOCK_NOTIFY_ARRAY: - .space 0x18 - .global ov11_02324ECC -ov11_02324ECC: - .space 0x50 - .global ov11_02324F1C -ov11_02324F1C: - .space 0x54 - .global ov11_02324F70 -ov11_02324F70: - .space 0x4 - .global ov11_02324F74 -ov11_02324F74: - .space 0xE - .global ov11_02324F82 -ov11_02324F82: - .space 0x8 - .global ov11_02324F8A -ov11_02324F8A: - .space 0xA - .global ov11_02324F94 -ov11_02324F94: - .space 0x4 - .global ov11_02324F98 -ov11_02324F98: - .space 0x4 - .global ov11_02324F9C -ov11_02324F9C: - .space 0x4 - .global ov11_02324FA0 -ov11_02324FA0: - .space 0x20 - .global GROUND_MEMORY_ARENA_1 -GROUND_MEMORY_ARENA_1: - .space 0x64000 - .global ov11_02388FC0 -ov11_02388FC0: - .space 0x14 - .global ov11_02388FD4 -ov11_02388FD4: - .space 0x4 - .global ov11_02388FD8 -ov11_02388FD8: - .space 0x40 - .global ov11_02389018 -ov11_02389018: - .space 0x44 - .global ov11_0238905C -ov11_0238905C: - .space 0x44 - .global ov11_023890A0 -ov11_023890A0: - .space 0x44 - .global ov11_023890E4 -ov11_023890E4: - .space 0x44 - .global ov11_02389128 -ov11_02389128: - .space 0x44 - .global ov11_0238916C -ov11_0238916C: - .space 0x88 - .global ov11_023891F4 -ov11_023891F4: - .space 0x4 - .global ov11_023891F8 -ov11_023891F8: - .space 0xA8 - .global ov11_023892A0 -ov11_023892A0: - .space 0xD80 - .global ov11_0238A020 -ov11_0238A020: - .space 0x14 - .global ov11_0238A034 -ov11_0238A034: - .space 0xC - .global ov11_0238A040 -ov11_0238A040: - .space 0xC - .global ov11_0238A04C -ov11_0238A04C: - .space 0x4 - .global ov11_0238A050 -ov11_0238A050: - .space 0xC - .global ov11_0238A05C -ov11_0238A05C: - .space 0xC - .global ov11_0238A068 -ov11_0238A068: - .space 0xC - .global ov11_0238A074 -ov11_0238A074: - .space 0x4 - .global ov11_0238A078 -ov11_0238A078: - .space 0x8 - .global ov11_0238A080 -ov11_0238A080: - .space 0x4 - .global ov11_0238A084 -ov11_0238A084: - .space 0x4 - .global ov11_0238A088 -ov11_0238A088: - .space 0x4 - .global ov11_0238A08C -ov11_0238A08C: - .space 0x4 - .global ov11_0238A090 -ov11_0238A090: - .space 0x4 - .global ov11_0238A094 -ov11_0238A094: - .space 0x4 - .global ov11_0238A098 -ov11_0238A098: - .space 0x98 - .global ov11_0238A130 -ov11_0238A130: - .space 0x4 - .global ov11_0238A134 -ov11_0238A134: - .space 0xC diff --git a/asm/overlay_11_0230CCE0.s b/asm/overlay_11_0230CCE0.s new file mode 100644 index 00000000..bb07fa24 --- /dev/null +++ b/asm/overlay_11_0230CCE0.s @@ -0,0 +1,12109 @@ + .include "asm/macros.inc" + .include "overlay_11_0230CCE0.inc" + + .text + + arm_func_start IsRecycleShopOverlaySuspended +IsRecycleShopOverlaySuspended: ; 0x0230CCE0 + ldr r0, _0230CCEC ; =RECYCLE_SHOP_OVERLAY_STATUS + ldrb r0, [r0] + bx lr + .align 2, 0 +_0230CCEC: .word RECYCLE_SHOP_OVERLAY_STATUS + arm_func_end IsRecycleShopOverlaySuspended + + arm_func_start ov11_0230CCF0 +ov11_0230CCF0: ; 0x0230CCF0 + stmdb sp!, {r4, lr} + ldr r1, _0230CD3C ; =RECYCLE_SHOP_OVERLAY_STATUS + mov r4, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0230CD34 + ldr lr, _0230CD40 ; =ov11_0238A098 + mov ip, #9 +_0230CD10: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230CD10 + ldr r2, _0230CD44 ; =ov11_0238A094 + ldmia lr, {r0, r1} + stmia r4, {r0, r1} + ldr r0, [r2] + ldmia sp!, {r4, pc} +_0230CD34: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230CD3C: .word RECYCLE_SHOP_OVERLAY_STATUS +_0230CD40: .word ov11_0238A098 +_0230CD44: .word ov11_0238A094 + arm_func_end ov11_0230CCF0 + + arm_func_start LoadCroagunkSwapShopOverlay +LoadCroagunkSwapShopOverlay: ; 0x0230CD48 + ldr ip, _0230CD54 ; =InitMenu + ldr r0, _0230CD58 ; =ov11_023230FC + bx ip + .align 2, 0 +_0230CD54: .word InitMenu +_0230CD58: .word ov11_023230FC + arm_func_end LoadCroagunkSwapShopOverlay + + arm_func_start LoadKecleonShopOverlay +LoadKecleonShopOverlay: ; 0x0230CD5C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0230CD7C ; =ov11_0232310C + bl InitMenu + cmp r0, #0 + ldrne r0, _0230CD80 ; =ov11_0238A130 + strne r4, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_0230CD7C: .word ov11_0232310C +_0230CD80: .word ov11_0238A130 + arm_func_end LoadKecleonShopOverlay + + arm_func_start LoadKangaskhanOverlay +LoadKangaskhanOverlay: ; 0x0230CD84 + ldr r1, _0230CD98 ; =ov11_0238A134 + ldr ip, _0230CD9C ; =InitMenu + str r0, [r1] + ldr r0, _0230CDA0 ; =ov11_0232311C + bx ip + .align 2, 0 +_0230CD98: .word ov11_0238A134 +_0230CD9C: .word InitMenu +_0230CDA0: .word ov11_0232311C + arm_func_end LoadKangaskhanOverlay + + arm_func_start LoadChanseyDaycareOverlay +LoadChanseyDaycareOverlay: ; 0x0230CDA4 + ldr ip, _0230CDB0 ; =InitMenu + ldr r0, _0230CDB4 ; =ov11_0232312C + bx ip + .align 2, 0 +_0230CDB0: .word InitMenu +_0230CDB4: .word ov11_0232312C + arm_func_end LoadChanseyDaycareOverlay + + arm_func_start LoadXatuAppraisalOverlay +LoadXatuAppraisalOverlay: ; 0x0230CDB8 + ldr ip, _0230CDC4 ; =InitMenu + ldr r0, _0230CDC8 ; =ov11_0232313C + bx ip + .align 2, 0 +_0230CDC4: .word InitMenu +_0230CDC8: .word ov11_0232313C + arm_func_end LoadXatuAppraisalOverlay + + arm_func_start LoadRecycleShopOverlay +LoadRecycleShopOverlay: ; 0x0230CDCC + ldr ip, _0230CDD8 ; =InitMenu + ldr r0, _0230CDDC ; =ov11_0232314C + bx ip + .align 2, 0 +_0230CDD8: .word InitMenu +_0230CDDC: .word ov11_0232314C + arm_func_end LoadRecycleShopOverlay + + arm_func_start LoadRuleDungeonEffectsOverlay +LoadRuleDungeonEffectsOverlay: ; 0x0230CDE0 + ldr ip, _0230CDEC ; =InitMenu + ldr r0, _0230CDF0 ; =ov11_0232315C + bx ip + .align 2, 0 +_0230CDEC: .word InitMenu +_0230CDF0: .word ov11_0232315C + arm_func_end LoadRuleDungeonEffectsOverlay + + arm_func_start ov11_0230CDF4 +ov11_0230CDF4: ; 0x0230CDF4 + ldr ip, _0230CE00 ; =InitMenu + ldr r0, _0230CE04 ; =ov11_0232316C + bx ip + .align 2, 0 +_0230CE00: .word InitMenu +_0230CE04: .word ov11_0232316C + arm_func_end ov11_0230CDF4 + + arm_func_start ov11_0230CE08 +ov11_0230CE08: ; 0x0230CE08 + ldr ip, _0230CE14 ; =InitMenu + ldr r0, _0230CE18 ; =ov11_0232317C + bx ip + .align 2, 0 +_0230CE14: .word InitMenu +_0230CE18: .word ov11_0232317C + arm_func_end ov11_0230CE08 + + arm_func_start ov11_0230CE1C +ov11_0230CE1C: ; 0x0230CE1C + ldr ip, _0230CE28 ; =InitMenu + ldr r0, _0230CE2C ; =ov11_0232318C + bx ip + .align 2, 0 +_0230CE28: .word InitMenu +_0230CE2C: .word ov11_0232318C + arm_func_end ov11_0230CE1C + + arm_func_start LoadSpecialEpisodeDiscardOverlay1 +LoadSpecialEpisodeDiscardOverlay1: ; 0x0230CE30 + ldr ip, _0230CE3C ; =InitMenu + ldr r0, _0230CE40 ; =ov11_0232319C + bx ip + .align 2, 0 +_0230CE3C: .word InitMenu +_0230CE40: .word ov11_0232319C + arm_func_end LoadSpecialEpisodeDiscardOverlay1 + + arm_func_start LoadSpecialEpisodeDiscardOverlay2 +LoadSpecialEpisodeDiscardOverlay2: ; 0x0230CE44 + ldr ip, _0230CE50 ; =InitMenu + ldr r0, _0230CE54 ; =ov11_023231AC + bx ip + .align 2, 0 +_0230CE50: .word InitMenu +_0230CE54: .word ov11_023231AC + arm_func_end LoadSpecialEpisodeDiscardOverlay2 + + arm_func_start ov11_0230CE58 +ov11_0230CE58: ; 0x0230CE58 + ldr ip, _0230CE70 ; =InitMenuWithWindowExtraInfo + mov r3, r0 + mov r2, r1 + ldr r0, _0230CE74 ; =ov11_023231AC + mov r1, r3 + bx ip + .align 2, 0 +_0230CE70: .word InitMenuWithWindowExtraInfo +_0230CE74: .word ov11_023231AC + arm_func_end ov11_0230CE58 + + arm_func_start ov11_0230CE78 +ov11_0230CE78: ; 0x0230CE78 + stmdb sp!, {r3, r4, r5, lr} + mov r0, #0x54 + mov r1, #1 + bl MemAlloc + mov r5, r0 + ldr r0, _0230CECC ; =ov11_02324DBC + ldr r4, _0230CED0 ; =ov11_023231BC + str r5, [r0] + add lr, r5, #0x2c + mov ip, #2 +_0230CEA0: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230CEA0 + ldr r1, [r4] + mov r0, #0 + str r1, [lr] + str r0, [r5, #0x50] + bl ov11_02312B40 + bl ov11_0230CF00 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230CECC: .word ov11_02324DBC +_0230CED0: .word ov11_023231BC + arm_func_end ov11_0230CE78 + + arm_func_start ov11_0230CED4 +ov11_0230CED4: ; 0x0230CED4 + stmdb sp!, {r3, lr} + bl ov11_0230CF00 + bl ov11_02312BCC + ldr r0, _0230CEFC ; =ov11_02324DBC + ldr r0, [r0] + bl MemFree + ldr r0, _0230CEFC ; =ov11_02324DBC + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CEFC: .word ov11_02324DBC + arm_func_end ov11_0230CED4 + + arm_func_start ov11_0230CF00 +ov11_0230CF00: ; 0x0230CF00 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x24 + ldr r0, _0230CFEC ; =ov11_02324DBC + ldr r1, [r0] + ldr r0, [r1, #0x50] + add r4, r1, #0x2c + cmp r0, #2 + bne _0230CF48 + ldr r0, _0230CFF0 ; =ov11_023231BC + mov r1, r4 + bl ov11_0230D0FC + cmp r0, #0 + bne _0230CF48 + ldr r1, [r4, #8] + cmp r1, #0 + beq _0230CF48 + mov r0, #1 + blx r1 +_0230CF48: + ldr r0, _0230CFEC ; =ov11_02324DBC + mov r2, #0 + ldr r1, [r0] + ldr r6, _0230CFF0 ; =ov11_023231BC + strb r2, [r1] + ldr r1, [r0] + add lr, sp, #0 + strb r2, [r1, #0x28] + ldr r0, [r0] + mov r5, #2 + strb r2, [r0, #0x29] +_0230CF74: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0230CF74 + ldr r0, _0230CFEC ; =ov11_02324DBC + ldr r1, [r6] + ldr ip, [r0] + str r1, [lr] + add r6, sp, #0 + add lr, ip, #4 + mov r5, #2 +_0230CFA0: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0230CFA0 + ldr r0, [r6] + add r5, sp, #0 + str r0, [lr] + mov lr, #2 +_0230CFC0: + ldmia r5!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs lr, lr, #1 + bne _0230CFC0 + ldr r1, [r5] + mov r0, #0 + str r1, [r4] + str r0, [ip, #0x50] + bl ov11_02312BF4 + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0230CFEC: .word ov11_02324DBC +_0230CFF0: .word ov11_023231BC + arm_func_end ov11_0230CF00 + + arm_func_start ov11_0230CFF4 +ov11_0230CFF4: ; 0x0230CFF4 + ldr ip, _0230CFFC ; =ov11_0230D71C + bx ip + .align 2, 0 +_0230CFFC: .word ov11_0230D71C + arm_func_end ov11_0230CFF4 + + arm_func_start ov11_0230D000 +ov11_0230D000: ; 0x0230D000 + stmdb sp!, {r3, lr} + bl GetTopScreenOption + ldr r1, _0230D084 ; =ov11_02324DBC + mov r2, #1 + ldr r1, [r1] + cmp r0, #4 + strb r2, [r1, #0x29] + addls pc, pc, r0, lsl #2 + b _0230D07C +_0230D024: ; jump table + b _0230D040 ; case 0 + b _0230D074 ; case 1 + b _0230D06C ; case 2 + b _0230D048 ; case 3 + b _0230D038 ; case 4 +_0230D038: + bl ov11_02316440 + ldmia sp!, {r3, pc} +_0230D040: + bl ov11_0230E48C + ldmia sp!, {r3, pc} +_0230D048: + bl sub_0204AFD0 + cmp r0, #0 + beq _0230D064 + mov r0, #0 + bl WorldMapSetMode + bl ov11_0230ED28 + ldmia sp!, {r3, pc} +_0230D064: + bl ov11_02310680 + ldmia sp!, {r3, pc} +_0230D06C: + bl ov11_0230DFF4 + ldmia sp!, {r3, pc} +_0230D074: + bl ov11_0231391C + ldmia sp!, {r3, pc} +_0230D07C: + bl ov11_0230D730 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D084: .word ov11_02324DBC + arm_func_end ov11_0230D000 + + arm_func_start ov11_0230D088 +ov11_0230D088: ; 0x0230D088 + stmdb sp!, {r3, lr} + bl GetTopScreenOption + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0230D0F4 +_0230D09C: ; jump table + b _0230D0B8 ; case 0 + b _0230D0EC ; case 1 + b _0230D0E4 ; case 2 + b _0230D0C0 ; case 3 + b _0230D0B0 ; case 4 +_0230D0B0: + bl ov11_0231642C + ldmia sp!, {r3, pc} +_0230D0B8: + bl ov11_0230E478 + ldmia sp!, {r3, pc} +_0230D0C0: + bl sub_0204AFD0 + cmp r0, #0 + beq _0230D0DC + mov r0, #0 + bl WorldMapSetMode + bl ov11_0230E964 + ldmia sp!, {r3, pc} +_0230D0DC: + bl ov11_0231066C + ldmia sp!, {r3, pc} +_0230D0E4: + bl ov11_0230DFE0 + ldmia sp!, {r3, pc} +_0230D0EC: + bl ov11_02313908 + ldmia sp!, {r3, pc} +_0230D0F4: + bl ov11_0230D71C + ldmia sp!, {r3, pc} + arm_func_end ov11_0230D088 + + arm_func_start ov11_0230D0FC +ov11_0230D0FC: ; 0x0230D0FC + cmp r0, #0 + ldreq r0, _0230D16C ; =ov11_023231BC + cmp r1, #0 + ldreq r1, _0230D16C ; =ov11_023231BC + ldr r3, [r0] + ldr r2, [r1] + cmp r3, r2 + ldreq r3, [r0, #4] + ldreq r2, [r1, #4] + cmpeq r3, r2 + ldreq r3, [r0, #8] + ldreq r2, [r1, #8] + cmpeq r3, r2 + ldreq r3, [r0, #0x18] + ldreq r2, [r1, #0x18] + cmpeq r3, r2 + ldreq r3, [r0, #0x14] + ldreq r2, [r1, #0x14] + cmpeq r3, r2 + ldreq r3, [r0, #0x1c] + ldreq r2, [r1, #0x1c] + cmpeq r3, r2 + ldreq r2, [r0, #0x20] + ldreq r0, [r1, #0x20] + cmpeq r2, r0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0230D16C: .word ov11_023231BC + arm_func_end ov11_0230D0FC + + arm_func_start ov11_0230D170 +ov11_0230D170: ; 0x0230D170 + ldr ip, _0230D178 ; =ov11_0230D220 + bx ip + .align 2, 0 +_0230D178: .word ov11_0230D220 + arm_func_end ov11_0230D170 + + arm_func_start ov11_0230D17C +ov11_0230D17C: ; 0x0230D17C + stmdb sp!, {r4, lr} + ldr r1, _0230D218 ; =ov11_02324DBC + mov r4, r0 + ldr r2, [r1] + ldrb r1, [r2] + cmp r1, #0 + beq _0230D1D0 + cmp r4, #0 + beq _0230D1B8 + add r1, r2, #4 + bl ov11_0230D0FC + cmp r0, #0 + beq _0230D1D0 + mov r0, #1 + ldmia sp!, {r4, pc} +_0230D1B8: + ldr r0, _0230D21C ; =ov11_023231BC + add r1, r2, #4 + bl ov11_0230D0FC + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_0230D1D0: + cmp r4, #0 + beq _0230D1F0 + ldr r1, _0230D218 ; =ov11_02324DBC + mov r0, r4 + ldr r1, [r1] + add r1, r1, #0x2c + bl ov11_0230D0FC + ldmia sp!, {r4, pc} +_0230D1F0: + ldr r1, _0230D218 ; =ov11_02324DBC + ldr r0, _0230D21C ; =ov11_023231BC + ldr r1, [r1] + add r1, r1, #4 + bl ov11_0230D0FC + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_0230D218: .word ov11_02324DBC +_0230D21C: .word ov11_023231BC + arm_func_end ov11_0230D17C + + arm_func_start ov11_0230D220 +ov11_0230D220: ; 0x0230D220 + stmdb sp!, {r3, lr} + ldr r0, _0230D26C ; =ov11_02324DBC + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + ldreqb r0, [r1, #0x28] + cmpeq r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, [r1, #0x50] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r0, #2 + ldrneb r0, [r1, #0x29] + ldmneia sp!, {r3, pc} + ldr r0, [r1, #0x38] + blx r0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D26C: .word ov11_02324DBC + arm_func_end ov11_0230D220 + + arm_func_start ov11_0230D270 +ov11_0230D270: ; 0x0230D270 + stmdb sp!, {r4, lr} + ldr r1, _0230D314 ; =ov11_02324DBC + mov r4, r0 + ldr r1, [r1] + add r1, r1, #0x2c + bl ov11_0230D0FC + cmp r0, #0 + bne _0230D300 + ldr r0, _0230D314 ; =ov11_02324DBC + ldr r2, [r0] + ldrb r1, [r2] + cmp r1, #0 + beq _0230D2B8 + mov r0, r4 + add r1, r2, #4 + bl ov11_0230D0FC + mov r0, #0 + ldmia sp!, {r4, pc} +_0230D2B8: + mov r1, #1 + strb r1, [r2] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0x28] + ldr r1, [r0] + mov ip, #2 + strb r2, [r1, #0x29] + ldr r0, [r0] + add lr, r0, #4 +_0230D2E0: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230D2E0 + ldr r1, [r4] + mov r0, #1 + str r1, [lr] + ldmia sp!, {r4, pc} +_0230D300: + ldr r1, _0230D314 ; =ov11_02324DBC + mov r0, #0 + ldr r1, [r1] + strb r0, [r1, #0x29] + ldmia sp!, {r4, pc} + .align 2, 0 +_0230D314: .word ov11_02324DBC + arm_func_end ov11_0230D270 + + arm_func_start ov11_0230D318 +ov11_0230D318: ; 0x0230D318 + stmdb sp!, {r3, lr} + ldr r2, _0230D33C ; =ov11_02324DBC + ldr r3, [r2] + ldr r2, [r3, #0x50] + cmp r2, #2 + ldmneia sp!, {r3, pc} + ldr r2, [r3, #0x3c] + blx r2 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D33C: .word ov11_02324DBC + arm_func_end ov11_0230D318 + + arm_func_start ov11_0230D340 +ov11_0230D340: ; 0x0230D340 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x24 + ldr r0, _0230D568 ; =ov11_02324DBC + ldr r1, [r0] + ldr r0, [r1, #0x50] + add r4, r1, #0x2c + cmp r0, #1 + beq _0230D55C + cmp r0, #2 + bne _0230D410 + add ip, sp, #0 + mov lr, r4 + mov r5, #2 +_0230D374: + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0230D374 + ldr r0, [lr] + str r0, [ip] + ldr r0, [r4, #0x14] + blx r0 + cmp r0, #1 + bne _0230D410 + add r1, sp, #0 + mov r0, r4 + bl ov11_0230D0FC + cmp r0, #0 + beq _0230D410 + ldr r0, _0230D568 ; =ov11_02324DBC + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #0x50] + ldr r1, [r4, #8] + cmp r1, #0 + beq _0230D3D4 + mov r0, #1 + blx r1 +_0230D3D4: + ldr r5, _0230D56C ; =ov11_023231BC + mov lr, r4 + mov ip, #2 +_0230D3E0: + ldmia r5!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230D3E0 + ldr r1, [r5] + ldr r0, _0230D568 ; =ov11_02324DBC + str r1, [lr] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0x28] + ldr r0, [r0] + str r2, [r0, #0x50] +_0230D410: + ldr r0, _0230D568 ; =ov11_02324DBC + ldr r1, [r0] + ldrb r0, [r1, #0x29] + cmp r0, #0 + beq _0230D43C + ldrb r0, [r1] + cmp r0, #0 + ldreqb r0, [r1, #0x28] + cmpeq r0, #0 + bne _0230D43C + bl ov11_0230D088 +_0230D43C: + ldr r0, _0230D568 ; =ov11_02324DBC + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + beq _0230D4E8 + ldr r0, _0230D56C ; =ov11_023231BC + mov r1, r4 + bl ov11_0230D0FC + cmp r0, #0 + bne _0230D480 + ldr r1, [r4, #8] + cmp r1, #0 + beq _0230D480 + mov r0, #0 + blx r1 + cmp r0, #0 + beq _0230D55C +_0230D480: + ldr r0, _0230D568 ; =ov11_02324DBC + mov ip, #2 + ldr r5, [r0] + add lr, r5, #4 +_0230D490: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230D490 + ldr r0, [lr] + mov r1, #0 + str r0, [r4] + ldr r0, _0230D568 ; =ov11_02324DBC + strb r1, [r5] + ldr r5, [r0] + ldr lr, _0230D56C ; =ov11_023231BC + add ip, r5, #4 + mov r4, #2 +_0230D4C4: + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0230D4C4 + ldr r1, [lr] + mov r0, #1 + str r1, [ip] + str r0, [r5, #0x50] + b _0230D55C +_0230D4E8: + ldrb r0, [r1, #0x28] + cmp r0, #0 + beq _0230D55C + ldr r0, _0230D56C ; =ov11_023231BC + mov r1, r4 + bl ov11_0230D0FC + cmp r0, #0 + bne _0230D524 + ldr r1, [r4, #8] + cmp r1, #0 + beq _0230D524 + mov r0, #0 + blx r1 + cmp r0, #0 + beq _0230D55C +_0230D524: + ldr lr, _0230D56C ; =ov11_023231BC + mov ip, #2 +_0230D52C: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230D52C + ldr r1, [lr] + ldr r0, _0230D568 ; =ov11_02324DBC + str r1, [r4] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0x28] + ldr r0, [r0] + str r2, [r0, #0x50] +_0230D55C: + bl ov11_02312D00 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0230D568: .word ov11_02324DBC +_0230D56C: .word ov11_023231BC + arm_func_end ov11_0230D340 + + arm_func_start ov11_0230D570 +ov11_0230D570: ; 0x0230D570 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _0230D6BC ; =ov11_02324DBC + ldr r1, [r0] + ldr r0, [r1, #0x50] + add r4, r1, #0x2c + cmp r0, #2 + bne _0230D5A0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _0230D6B4 + blx r0 + b _0230D6B4 +_0230D5A0: + cmp r0, #1 + bne _0230D6B4 + ldrb r0, [r1, #0x29] + cmp r0, #0 + beq _0230D5C4 + ldrb r0, [r1] + cmp r0, #0 + bne _0230D5C4 + bl ov11_0230D088 +_0230D5C4: + ldr r0, _0230D6BC ; =ov11_02324DBC + ldr ip, [r0] + ldrb r0, [ip] + cmp r0, #0 + beq _0230D628 + mov lr, r4 + add r6, ip, #4 + mov r5, #2 +_0230D5E4: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0230D5E4 + ldr r0, [r6] + ldr r6, _0230D6C0 ; =ov11_023231BC + str r0, [lr] + add lr, ip, #4 + mov r5, #2 +_0230D608: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0230D608 + ldr r1, [r6] + mov r0, #0 + str r1, [lr] + strb r0, [ip] +_0230D628: + ldr r0, _0230D6BC ; =ov11_02324DBC + ldr ip, [r0] + ldrb r0, [ip, #0x28] + cmp r0, #0 + beq _0230D674 + ldr r5, _0230D6C0 ; =ov11_023231BC + mov lr, #2 +_0230D644: + ldmia r5!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs lr, lr, #1 + bne _0230D644 + ldr r0, [r5] + mov r1, #0 + str r0, [r4] + ldr r0, _0230D6BC ; =ov11_02324DBC + strb r1, [ip, #0x28] + ldr r0, [r0] + str r1, [r0, #0x50] + b _0230D6B4 +_0230D674: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0230D6AC + blx r0 + cmp r0, #0 + ldreq r0, _0230D6BC ; =ov11_02324DBC + moveq r1, #3 + ldreq r0, [r0] + streq r1, [r0, #0x50] + ldrne r0, _0230D6BC ; =ov11_02324DBC + movne r1, #2 + ldrne r0, [r0] + strne r1, [r0, #0x50] + b _0230D6B4 +_0230D6AC: + mov r0, #2 + str r0, [ip, #0x50] +_0230D6B4: + bl ov11_023130AC + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230D6BC: .word ov11_02324DBC +_0230D6C0: .word ov11_023231BC + arm_func_end ov11_0230D570 + + arm_func_start ov11_0230D6C4 +ov11_0230D6C4: ; 0x0230D6C4 + stmdb sp!, {r3, lr} + ldr r0, _0230D6EC ; =ov11_02324DBC + ldr r1, [r0] + ldr r0, [r1, #0x50] + cmp r0, #2 + bne _0230D6E4 + ldr r0, [r1, #0x48] + blx r0 +_0230D6E4: + bl ov11_02313488 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D6EC: .word ov11_02324DBC + arm_func_end ov11_0230D6C4 + + arm_func_start ov11_0230D6F0 +ov11_0230D6F0: ; 0x0230D6F0 + stmdb sp!, {r3, lr} + ldr r0, _0230D718 ; =ov11_02324DBC + ldr r1, [r0] + ldr r0, [r1, #0x50] + cmp r0, #2 + bne _0230D710 + ldr r0, [r1, #0x4c] + blx r0 +_0230D710: + bl ov11_02313794 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D718: .word ov11_02324DBC + arm_func_end ov11_0230D6F0 + + arm_func_start ov11_0230D71C +ov11_0230D71C: ; 0x0230D71C + ldr ip, _0230D728 ; =ov11_0230D270 + ldr r0, _0230D72C ; =ov11_023231E0 + bx ip + .align 2, 0 +_0230D728: .word ov11_0230D270 +_0230D72C: .word ov11_023231E0 + arm_func_end ov11_0230D71C + + arm_func_start ov11_0230D730 +ov11_0230D730: ; 0x0230D730 + ldr ip, _0230D73C ; =ov11_0230D17C + ldr r0, _0230D740 ; =ov11_023231E0 + bx ip + .align 2, 0 +_0230D73C: .word ov11_0230D17C +_0230D740: .word ov11_023231E0 + arm_func_end ov11_0230D730 + + arm_func_start ov11_0230D744 +ov11_0230D744: ; 0x0230D744 + stmdb sp!, {r3, lr} + mov r0, #4 + mov r1, #0xf + bl MemAlloc + ldr r1, _0230D76C ; =ov11_02324DC0 + mov r2, #0 + str r0, [r1] + str r2, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D76C: .word ov11_02324DC0 + arm_func_end ov11_0230D744 + + arm_func_start ov11_0230D770 +ov11_0230D770: ; 0x0230D770 + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230D794 + ldr r0, _0230D7B4 ; =ov11_02324DC0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #6 + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230D794: + ldr r0, _0230D7B4 ; =ov11_02324DC0 + ldr r0, [r0] + bl MemFree + ldr r0, _0230D7B4 ; =ov11_02324DC0 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D7B4: .word ov11_02324DC0 + arm_func_end ov11_0230D770 + + arm_func_start ov11_0230D7B8 +ov11_0230D7B8: ; 0x0230D7B8 + ldr r0, _0230D7D8 ; =ov11_02324DC0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #6 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0230D7D8: .word ov11_02324DC0 + arm_func_end ov11_0230D7B8 + + arm_func_start ov11_0230D7DC +ov11_0230D7DC: ; 0x0230D7DC + stmdb sp!, {r3, lr} + ldr r0, _0230D8A8 ; =ov11_02324DC0 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0230D8A0 +_0230D7F8: ; jump table + b _0230D810 ; case 0 + b _0230D874 ; case 1 + b _0230D8A0 ; case 2 + b _0230D890 ; case 3 + b _0230D8A0 ; case 4 + b _0230D890 ; case 5 +_0230D810: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230D8A0 + bl ov11_022EA014 + cmp r0, #0x100 + ldreq r0, _0230D8A8 ; =ov11_02324DC0 + moveq r1, #4 + ldreq r0, [r0] + streq r1, [r0] + beq _0230D8A0 + bl ov11_022EA014 + mvn r1, #0xff + cmp r0, r1 + ldreq r0, _0230D8A8 ; =ov11_02324DC0 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0] + beq _0230D8A0 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230D8A8 ; =ov11_02324DC0 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _0230D8A0 +_0230D874: + bl IsScreenFadeInProgress + cmp r0, #0 + ldreq r0, _0230D8A8 ; =ov11_02324DC0 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0] + b _0230D8A0 +_0230D890: + mov r0, #6 + str r0, [r1] + mov r0, #1 + ldmia sp!, {r3, pc} +_0230D8A0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D8A8: .word ov11_02324DC0 + arm_func_end ov11_0230D7DC + + arm_func_start ov11_0230D8AC +ov11_0230D8AC: ; 0x0230D8AC + ldr r0, _0230D8CC ; =ov11_02324DC0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0230D8CC: .word ov11_02324DC0 + arm_func_end ov11_0230D8AC + + arm_func_start ov11_0230D8D0 +ov11_0230D8D0: ; 0x0230D8D0 + stmdb sp!, {r3, lr} + ldr r0, _0230D928 ; =ov11_02324DC0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + ldmneia sp!, {r3, pc} + mov r0, #1 + mov r1, #2 + bl sub_02008F64 + mov r0, #1 + mov r1, #3 + bl sub_02008F64 + ldr r0, _0230D928 ; =ov11_02324DC0 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #2 + moveq r0, #3 + streq r0, [r1] + movne r0, #5 + strne r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D928: .word ov11_02324DC0 + arm_func_end ov11_0230D8D0 + + arm_func_start ov11_0230D92C +ov11_0230D92C: ; 0x0230D92C + ldr ip, _0230D938 ; =ov11_0230D270 + ldr r0, _0230D93C ; =ov11_02323204 + bx ip + .align 2, 0 +_0230D938: .word ov11_0230D270 +_0230D93C: .word ov11_02323204 + arm_func_end ov11_0230D92C + + arm_func_start ov11_0230D940 +ov11_0230D940: ; 0x0230D940 + stmdb sp!, {r3, lr} + mov r0, #4 + mov r1, #0xf + bl MemAlloc + ldr r1, _0230D968 ; =ov11_02324DC4 + mov r2, #0 + str r0, [r1] + str r2, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D968: .word ov11_02324DC4 + arm_func_end ov11_0230D940 + + arm_func_start ov11_0230D96C +ov11_0230D96C: ; 0x0230D96C + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230D990 + ldr r0, _0230D9B0 ; =ov11_02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #8 + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230D990: + ldr r0, _0230D9B0 ; =ov11_02324DC4 + ldr r0, [r0] + bl MemFree + ldr r0, _0230D9B0 ; =ov11_02324DC4 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D9B0: .word ov11_02324DC4 + arm_func_end ov11_0230D96C + + arm_func_start ov11_0230D9B4 +ov11_0230D9B4: ; 0x0230D9B4 + ldr r0, _0230D9D4 ; =ov11_02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #8 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0230D9D4: .word ov11_02324DC4 + arm_func_end ov11_0230D9B4 + + arm_func_start ov11_0230D9D8 +ov11_0230D9D8: ; 0x0230D9D8 + stmdb sp!, {r3, lr} + ldr r0, _0230DAD4 ; =ov11_02324DC4 + ldr r2, [r0] + ldr r0, [r2] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230DACC +_0230D9F4: ; jump table + b _0230DA14 ; case 0 + b _0230DA8C ; case 1 + b _0230DACC ; case 2 + b _0230DAB4 ; case 3 + b _0230DACC ; case 4 + b _0230DA78 ; case 5 + b _0230DAB4 ; case 6 + b _0230DAA8 ; case 7 +_0230DA14: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230DACC + bl ov11_022EA014 + cmp r0, #0x100 + ldreq r0, _0230DAD4 ; =ov11_02324DC4 + moveq r1, #4 + ldreq r0, [r0] + streq r1, [r0] + beq _0230DACC + bl ov11_022EA014 + mvn r1, #0xff + cmp r0, r1 + ldreq r0, _0230DAD4 ; =ov11_02324DC4 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0] + beq _0230DACC + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230DAD4 ; =ov11_02324DC4 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _0230DACC +_0230DA78: + mov r1, #7 + mov r0, #0x10 + str r1, [r2] + bl ov11_022E9CB0 + b _0230DACC +_0230DA8C: + bl IsScreenFadeInProgress + cmp r0, #0 + ldreq r0, _0230DAD4 ; =ov11_02324DC4 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0] + b _0230DACC +_0230DAA8: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230DACC +_0230DAB4: + ldr r0, _0230DAD4 ; =ov11_02324DC4 + mov r2, #8 + ldr r1, [r0] + mov r0, #1 + str r2, [r1] + ldmia sp!, {r3, pc} +_0230DACC: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DAD4: .word ov11_02324DC4 + arm_func_end ov11_0230D9D8 + + arm_func_start ov11_0230DAD8 +ov11_0230DAD8: ; 0x0230DAD8 + ldr r0, _0230DAF8 ; =ov11_02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0230DAF8: .word ov11_02324DC4 + arm_func_end ov11_0230DAD8 + + arm_func_start ov11_0230DAFC +ov11_0230DAFC: ; 0x0230DAFC + stmdb sp!, {r3, lr} + ldr r0, _0230DB54 ; =ov11_02324DC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #2 + cmpne r0, #4 + ldmneia sp!, {r3, pc} + mov r0, #1 + mov r1, #2 + bl sub_02008F64 + mov r0, #1 + mov r1, #3 + bl sub_02008F64 + ldr r0, _0230DB54 ; =ov11_02324DC4 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #2 + moveq r0, #3 + streq r0, [r1] + movne r0, #5 + strne r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DB54: .word ov11_02324DC4 + arm_func_end ov11_0230DAFC + + arm_func_start ov11_0230DB58 +ov11_0230DB58: ; 0x0230DB58 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0230DB90 ; =ov11_02323244 + bl ov11_0230D270 + cmp r0, #0 + ldrne r0, _0230DB94 ; =ov11_02324DC8 + strne r4, [r0, #8] + ldmneia sp!, {r4, pc} + ldr r0, _0230DB94 ; =ov11_02324DC8 + ldr r1, [r0, #4] + ldr r0, [r1, #8] + cmp r0, r4 + strne r4, [r1, #0x10] + ldmia sp!, {r4, pc} + .align 2, 0 +_0230DB90: .word ov11_02323244 +_0230DB94: .word ov11_02324DC8 + arm_func_end ov11_0230DB58 + + arm_func_start ov11_0230DB98 +ov11_0230DB98: ; 0x0230DB98 + stmdb sp!, {r3, lr} + mov r0, #0x18 + mov r1, #0xf + bl MemAlloc + ldr r1, _0230DBE4 ; =ov11_02324DC8 + str r0, [r1, #4] + bl ov11_0230DC3C + mov r0, #0x10 + bl ov11_022E9D10 + ldr r1, _0230DBE4 ; =ov11_02324DC8 + mov r3, #0 + ldmib r1, {r2, ip} + str ip, [r2, #0x10] + ldr r2, [r1, #4] + mov r0, #1 + strb r3, [r2, #0x14] + ldr r1, [r1, #4] + str r3, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DBE4: .word ov11_02324DC8 + arm_func_end ov11_0230DB98 + + arm_func_start ov11_0230DBE8 +ov11_0230DBE8: ; 0x0230DBE8 + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230DC14 + ldr r0, _0230DC38 ; =ov11_02324DC8 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #7 + movne r0, #1 + strneb r0, [r1, #0x14] + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230DC14: + bl ov11_0230DC3C + ldr r0, _0230DC38 ; =ov11_02324DC8 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0230DC38 ; =ov11_02324DC8 + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DC38: .word ov11_02324DC8 + arm_func_end ov11_0230DBE8 + + arm_func_start ov11_0230DC3C +ov11_0230DC3C: ; 0x0230DC3C + stmdb sp!, {r3, lr} + ldr r1, _0230DCB4 ; =ov11_02324DC8 + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #0 + strb r2, [r0] + ldr r2, [r1, #4] + sub r0, r3, #2 + str r3, [r2, #4] + ldr r1, [r1, #4] + strb r3, [r1, #0xc] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _0230DCB4 ; =ov11_02324DC8 + ldr r0, [r0] + cmp r0, #0 + beq _0230DCA0 + bl GroundBg_FreeAll + ldr r0, _0230DCB4 ; =ov11_02324DC8 + ldr r0, [r0] + bl MemFree + ldr r0, _0230DCB4 ; =ov11_02324DC8 + mov r1, #0 + str r1, [r0] +_0230DCA0: + ldr r0, _0230DCB4 ; =ov11_02324DC8 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x10] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DCB4: .word ov11_02324DC8 + arm_func_end ov11_0230DC3C + + arm_func_start ov11_0230DCB8 +ov11_0230DCB8: ; 0x0230DCB8 + ldr r0, _0230DCD4 ; =ov11_02324DC8 + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #0xc] + bx lr + .align 2, 0 +_0230DCD4: .word ov11_02324DC8 + arm_func_end ov11_0230DCB8 + + arm_func_start ov11_0230DCD8 +ov11_0230DCD8: ; 0x0230DCD8 + stmdb sp!, {r3, lr} + ldr r0, _0230DE80 ; =ov11_02324DC8 + ldr r0, [r0, #4] + ldr r0, [r0, #4] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230DE78 +_0230DCF4: ; jump table + b _0230DD14 ; case 0 + b _0230DD3C ; case 1 + b _0230DE78 ; case 2 + b _0230DE78 ; case 3 + b _0230DDD4 ; case 4 + b _0230DE00 ; case 5 + b _0230DE4C ; case 6 + b _0230DE68 ; case 7 +_0230DD14: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230DE80 ; =ov11_02324DC8 + mov r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #0xc] + bne _0230DE78 + ldr r0, _0230DE80 ; =ov11_02324DC8 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230DD3C: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230DE80 ; =ov11_02324DC8 + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #0xc] + bne _0230DE78 + ldr r0, _0230DE80 ; =ov11_02324DC8 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x14] + cmp r1, #0 + beq _0230DD94 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230DE80 ; =ov11_02324DC8 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #6 + strb r3, [r2, #0xc] + ldr r0, [r0, #4] + str r1, [r0, #4] + b _0230DE78 +_0230DD94: + ldr r1, [r2, #0x10] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #0xc] + beq _0230DE78 + str r1, [r2, #8] + ldr r1, [r0, #4] + mov r2, #1 + strb r2, [r1, #0xc] + ldr r1, [r0, #4] + mov r2, #0 + str r2, [r1, #0x10] + ldr r0, [r0, #4] + mov r1, #2 + str r1, [r0, #4] + b _0230DE78 +_0230DDD4: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230DE80 ; =ov11_02324DC8 + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #0xc] + bne _0230DE78 + ldr r0, _0230DE80 ; =ov11_02324DC8 + mov r1, #5 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230DE00: + ldr r0, _0230DE80 ; =ov11_02324DC8 + ldr r1, [r0, #4] + ldrb r0, [r1, #0x14] + cmp r0, #0 + ldreq r0, [r1, #0x10] + cmpeq r0, #0 + moveq r0, #0 + streqb r0, [r1, #0xc] + beq _0230DE78 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230DE80 ; =ov11_02324DC8 + mov r3, #0 + ldr r2, [r0, #4] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0, #4] + strb r1, [r0, #0xc] + b _0230DE78 +_0230DE4C: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230DE78 + ldr r0, _0230DE80 ; =ov11_02324DC8 + mov r1, #7 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230DE68: + ldr r0, _0230DE80 ; =ov11_02324DC8 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #0xc] +_0230DE78: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DE80: .word ov11_02324DC8 + arm_func_end ov11_0230DCD8 + + arm_func_start ov11_0230DE84 +ov11_0230DE84: ; 0x0230DE84 + stmdb sp!, {r3, lr} + ldr r0, _0230DEF0 ; =ov11_02324DC8 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #2 + ldmneia sp!, {r3, pc} + mov r0, #1 + strb r0, [r1, #0xc] + bl ov11_0230DC3C + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0230DEF0 ; =ov11_02324DC8 + ldr r1, _0230DEF4 ; =ov11_02323228 + str r0, [r2] + bl GroundBg_Init + ldr r0, _0230DEF0 ; =ov11_02324DC8 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r2, [r1, #8] + ldmia r2, {r1, r2} + bl ov11_022EDE64 + ldr r0, _0230DEF0 ; =ov11_02324DC8 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DEF0: .word ov11_02324DC8 +_0230DEF4: .word ov11_02323228 + arm_func_end ov11_0230DE84 + + arm_func_start ov11_0230DEF8 +ov11_0230DEF8: ; 0x0230DEF8 + stmdb sp!, {r3, lr} + ldr r0, _0230DF58 ; =ov11_02324DC8 + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #3 + bne _0230DF50 + mov r1, #1 + strb r1, [r2, #0xc] + ldr r0, [r0] + bl ov11_022EF70C + mov r0, #1 + bl ov11_022EF53C + ldr r0, _0230DF58 ; =ov11_02324DC8 + mov r2, #1 + ldr r1, [r0, #4] + mov r0, #0x10 + strb r2, [r1] + bl ov11_022E9C98 + ldr r0, _0230DF58 ; =ov11_02324DC8 + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230DF50: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DF58: .word ov11_02324DC8 + arm_func_end ov11_0230DEF8 + + arm_func_start ov11_0230DF5C +ov11_0230DF5C: ; 0x0230DF5C + stmdb sp!, {r3, lr} + ldr r0, _0230DFDC ; =ov11_02324DC8 + ldr r2, [r0, #4] + ldrb r1, [r2] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r2, #8] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0230DF98 + mov r0, #1 + mov r1, #2 + bl sub_02008F64 +_0230DF98: + ldr r0, _0230DFDC ; =ov11_02324DC8 + ldr r0, [r0, #4] + ldr r0, [r0, #8] + ldr r0, [r0] + cmp r0, #0 + bne _0230DFBC + mov r0, #1 + mov r1, #3 + bl sub_02008F64 +_0230DFBC: + ldr r0, _0230DFDC ; =ov11_02324DC8 + ldr r0, [r0] + bl ov11_022EFB70 + ldr r0, _0230DFDC ; =ov11_02324DC8 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230DFDC: .word ov11_02324DC8 + arm_func_end ov11_0230DF5C + + arm_func_start ov11_0230DFE0 +ov11_0230DFE0: ; 0x0230DFE0 + ldr ip, _0230DFEC ; =ov11_0230D270 + ldr r0, _0230DFF0 ; =ov11_02323284 + bx ip + .align 2, 0 +_0230DFEC: .word ov11_0230D270 +_0230DFF0: .word ov11_02323284 + arm_func_end ov11_0230DFE0 + + arm_func_start ov11_0230DFF4 +ov11_0230DFF4: ; 0x0230DFF4 + ldr ip, _0230E000 ; =ov11_0230D17C + ldr r0, _0230E004 ; =ov11_02323284 + bx ip + .align 2, 0 +_0230E000: .word ov11_0230D17C +_0230E004: .word ov11_02323284 + arm_func_end ov11_0230DFF4 + + arm_func_start ov11_0230E008 +ov11_0230E008: ; 0x0230E008 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #0xf + bl MemAlloc + ldr r1, _0230E05C ; =ov11_02324DD4 + str r0, [r1, #4] + bl ov11_0230E0D8 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r1, _0230E05C ; =ov11_02324DD4 + mov r3, #0 + ldr r2, [r1, #4] + mov r0, #1 + strb r3, [r2, #8] + ldr r2, [r1, #4] + strb r0, [r2, #0xa] + ldr r2, [r1, #4] + strb r3, [r2, #0xb] + ldr r1, [r1, #4] + str r3, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E05C: .word ov11_02324DD4 + arm_func_end ov11_0230E008 + + arm_func_start ov11_0230E060 +ov11_0230E060: ; 0x0230E060 + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230E08C + ldr r0, _0230E0D4 ; =ov11_02324DD4 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #7 + movne r0, #1 + strneb r0, [r1, #0xb] + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230E08C: + bl ov11_0230E0D8 + ldr r0, _0230E0D4 ; =ov11_02324DD4 + mov r2, #7 + ldr r1, [r0, #4] + str r2, [r1, #4] + ldr r0, [r0, #4] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0230E0B4 + bl sub_020483D8 +_0230E0B4: + ldr r0, _0230E0D4 ; =ov11_02324DD4 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0230E0D4 ; =ov11_02324DD4 + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E0D4: .word ov11_02324DD4 + arm_func_end ov11_0230E060 + + arm_func_start ov11_0230E0D8 +ov11_0230E0D8: ; 0x0230E0D8 + stmdb sp!, {r3, lr} + ldr r1, _0230E150 ; =ov11_02324DD4 + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #0 + strb r2, [r0] + ldr r2, [r1, #4] + sub r0, r3, #2 + str r3, [r2, #4] + ldr r1, [r1, #4] + strb r3, [r1, #9] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _0230E150 ; =ov11_02324DD4 + ldr r0, [r0] + cmp r0, #0 + beq _0230E13C + bl GroundBg_FreeAll + ldr r0, _0230E150 ; =ov11_02324DD4 + ldr r0, [r0] + bl MemFree + ldr r0, _0230E150 ; =ov11_02324DD4 + mov r1, #0 + str r1, [r0] +_0230E13C: + ldr r0, _0230E150 ; =ov11_02324DD4 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #0xa] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E150: .word ov11_02324DD4 + arm_func_end ov11_0230E0D8 + + arm_func_start ov11_0230E154 +ov11_0230E154: ; 0x0230E154 + ldr r0, _0230E170 ; =ov11_02324DD4 + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_0230E170: .word ov11_02324DD4 + arm_func_end ov11_0230E154 + + arm_func_start ov11_0230E174 +ov11_0230E174: ; 0x0230E174 + bx lr + arm_func_end ov11_0230E174 + + arm_func_start ov11_0230E178 +ov11_0230E178: ; 0x0230E178 + stmdb sp!, {r3, lr} + ldr r0, _0230E340 ; =ov11_02324DD4 + ldr r0, [r0, #4] + ldr r0, [r0, #4] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230E338 +_0230E194: ; jump table + b _0230E1B4 ; case 0 + b _0230E1DC ; case 1 + b _0230E338 ; case 2 + b _0230E338 ; case 3 + b _0230E26C ; case 4 + b _0230E298 ; case 5 + b _0230E2E4 ; case 6 + b _0230E328 ; case 7 +_0230E1B4: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230E340 ; =ov11_02324DD4 + mov r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _0230E338 + ldr r0, _0230E340 ; =ov11_02324DD4 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E1DC: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230E340 ; =ov11_02324DD4 + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _0230E338 + ldr r0, _0230E340 ; =ov11_02324DD4 + ldr r2, [r0, #4] + ldrb r1, [r2, #0xb] + cmp r1, #0 + beq _0230E234 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230E340 ; =ov11_02324DD4 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #6 + strb r3, [r2, #9] + ldr r0, [r0, #4] + str r1, [r0, #4] + b _0230E338 +_0230E234: + ldrb r1, [r2, #0xa] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #9] + beq _0230E338 + mov r1, #1 + strb r1, [r2, #9] + ldr r1, [r0, #4] + mov r2, #0 + strb r2, [r1, #0xa] + ldr r0, [r0, #4] + mov r1, #2 + str r1, [r0, #4] + b _0230E338 +_0230E26C: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230E340 ; =ov11_02324DD4 + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _0230E338 + ldr r0, _0230E340 ; =ov11_02324DD4 + mov r1, #5 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E298: + ldr r0, _0230E340 ; =ov11_02324DD4 + ldr r1, [r0, #4] + ldrb r0, [r1, #0xb] + cmp r0, #0 + ldreqb r0, [r1, #0xa] + cmpeq r0, #0 + moveq r0, #0 + streqb r0, [r1, #9] + beq _0230E338 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230E340 ; =ov11_02324DD4 + mov r3, #0 + ldr r2, [r0, #4] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0, #4] + strb r1, [r0, #9] + b _0230E338 +_0230E2E4: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230E338 + ldr r0, _0230E340 ; =ov11_02324DD4 + ldr r0, [r0, #4] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0230E318 + bl sub_020483D8 + ldr r0, _0230E340 ; =ov11_02324DD4 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #8] +_0230E318: + ldr r0, _0230E340 ; =ov11_02324DD4 + mov r1, #7 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E328: + ldr r0, _0230E340 ; =ov11_02324DD4 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #9] +_0230E338: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E340: .word ov11_02324DD4 + arm_func_end ov11_0230E178 + + arm_func_start ov11_0230E344 +ov11_0230E344: ; 0x0230E344 + stmdb sp!, {r3, lr} + ldr r0, _0230E3D8 ; =ov11_02324DD4 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #2 + ldmneia sp!, {r3, pc} + mov r0, #1 + strb r0, [r1, #9] + bl ov11_0230E0D8 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0230E3D8 ; =ov11_02324DD4 + ldr r1, _0230E3DC ; =ov11_02323268 + str r0, [r2] + bl GroundBg_Init + ldr r0, _0230E3D8 ; =ov11_02324DD4 + ldr r1, _0230E3E0 ; =ov11_023232A8 + ldr r0, [r0] + mov r2, #0 + bl ov11_022EDE64 + ldr r0, _0230E3D8 ; =ov11_02324DD4 + ldr r0, [r0, #4] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0230E3C4 + bl sub_02048384 + bl sub_020483B8 + ldr r0, _0230E3D8 ; =ov11_02324DD4 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #8] +_0230E3C4: + ldr r0, _0230E3D8 ; =ov11_02324DD4 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E3D8: .word ov11_02324DD4 +_0230E3DC: .word ov11_02323268 +_0230E3E0: .word ov11_023232A8 + arm_func_end ov11_0230E344 + + arm_func_start ov11_0230E3E4 +ov11_0230E3E4: ; 0x0230E3E4 + stmdb sp!, {r3, lr} + ldr r0, _0230E430 ; =ov11_02324DD4 + ldr r1, [r0, #4] + ldr r1, [r1, #4] + cmp r1, #3 + bne _0230E428 + ldr r0, [r0] + bl ov11_022EF70C + mov r0, #1 + bl ov11_022EF53C + ldr r0, _0230E430 ; =ov11_02324DD4 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #4 + strb r3, [r2] + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E428: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E430: .word ov11_02324DD4 + arm_func_end ov11_0230E3E4 + + arm_func_start ov11_0230E434 +ov11_0230E434: ; 0x0230E434 + stmdb sp!, {r3, lr} + ldr r0, _0230E474 ; =ov11_02324DD4 + ldr r1, [r0, #4] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022EFB70 + ldr r0, _0230E474 ; =ov11_02324DD4 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x10 + strb r2, [r1] + bl ov11_022E9C98 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E474: .word ov11_02324DD4 + arm_func_end ov11_0230E434 + + arm_func_start ov11_0230E478 +ov11_0230E478: ; 0x0230E478 + ldr ip, _0230E484 ; =ov11_0230D270 + ldr r0, _0230E488 ; =ov11_023232D8 + bx ip + .align 2, 0 +_0230E484: .word ov11_0230D270 +_0230E488: .word ov11_023232D8 + arm_func_end ov11_0230E478 + + arm_func_start ov11_0230E48C +ov11_0230E48C: ; 0x0230E48C + ldr ip, _0230E498 ; =ov11_0230D17C + ldr r0, _0230E49C ; =ov11_023232D8 + bx ip + .align 2, 0 +_0230E498: .word ov11_0230D17C +_0230E49C: .word ov11_023232D8 + arm_func_end ov11_0230E48C + + arm_func_start ov11_0230E4A0 +ov11_0230E4A0: ; 0x0230E4A0 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #0xf + bl MemAlloc + ldr r1, _0230E4F8 ; =ov11_02324DDC + str r0, [r1, #4] + bl ov11_0230E578 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r1, _0230E4F8 ; =ov11_02324DDC + mvn r3, #1 + ldr r2, [r1, #4] + mov r0, #1 + strb r3, [r2, #8] + ldr r2, [r1, #4] + mov r3, #0 + strb r0, [r2, #0xa] + ldr r2, [r1, #4] + strb r3, [r2, #0xb] + ldr r1, [r1, #4] + str r3, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E4F8: .word ov11_02324DDC + arm_func_end ov11_0230E4A0 + + arm_func_start ov11_0230E4FC +ov11_0230E4FC: ; 0x0230E4FC + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230E528 + ldr r0, _0230E574 ; =ov11_02324DDC + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #8 + movne r0, #1 + strneb r0, [r1, #0xb] + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230E528: + bl ov11_0230E578 + ldr r0, _0230E574 ; =ov11_02324DDC + mov r3, #8 + ldr r2, [r0, #4] + sub r1, r3, #0xa + str r3, [r2, #4] + ldr r0, [r0, #4] + ldrsb r0, [r0, #8] + cmp r0, r1 + beq _0230E554 + bl CloseControlsChart +_0230E554: + ldr r0, _0230E574 ; =ov11_02324DDC + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0230E574 ; =ov11_02324DDC + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E574: .word ov11_02324DDC + arm_func_end ov11_0230E4FC + + arm_func_start ov11_0230E578 +ov11_0230E578: ; 0x0230E578 + stmdb sp!, {r3, lr} + ldr r1, _0230E5F0 ; =ov11_02324DDC + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #0 + strb r2, [r0] + ldr r2, [r1, #4] + sub r0, r3, #2 + str r3, [r2, #4] + ldr r1, [r1, #4] + strb r3, [r1, #9] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _0230E5F0 ; =ov11_02324DDC + ldr r0, [r0] + cmp r0, #0 + beq _0230E5DC + bl GroundBg_FreeAll + ldr r0, _0230E5F0 ; =ov11_02324DDC + ldr r0, [r0] + bl MemFree + ldr r0, _0230E5F0 ; =ov11_02324DDC + mov r1, #0 + str r1, [r0] +_0230E5DC: + ldr r0, _0230E5F0 ; =ov11_02324DDC + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #0xa] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E5F0: .word ov11_02324DDC + arm_func_end ov11_0230E578 + + arm_func_start ov11_0230E5F4 +ov11_0230E5F4: ; 0x0230E5F4 + ldr r0, _0230E610 ; =ov11_02324DDC + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_0230E610: .word ov11_02324DDC + arm_func_end ov11_0230E5F4 + + arm_func_start ov11_0230E614 +ov11_0230E614: ; 0x0230E614 + bx lr + arm_func_end ov11_0230E614 + + arm_func_start HandleControlsTopScreenGround +HandleControlsTopScreenGround: ; 0x0230E618 + stmdb sp!, {r3, lr} + ldr r0, _0230E7E8 ; =ov11_02324DDC + ldr r0, [r0, #4] + ldr r0, [r0, #4] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _0230E7E0 +_0230E634: ; jump table + b _0230E658 ; case 0 + b _0230E680 ; case 1 + b _0230E7E0 ; case 2 + b _0230E7E0 ; case 3 + b _0230E7E0 ; case 4 + b _0230E710 ; case 5 + b _0230E73C ; case 6 + b _0230E788 ; case 7 + b _0230E7D0 ; case 8 +_0230E658: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230E7E8 ; =ov11_02324DDC + mov r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _0230E7E0 + ldr r0, _0230E7E8 ; =ov11_02324DDC + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E680: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230E7E8 ; =ov11_02324DDC + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _0230E7E0 + ldr r0, _0230E7E8 ; =ov11_02324DDC + ldr r2, [r0, #4] + ldrb r1, [r2, #0xb] + cmp r1, #0 + beq _0230E6D8 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230E7E8 ; =ov11_02324DDC + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #7 + strb r3, [r2, #9] + ldr r0, [r0, #4] + str r1, [r0, #4] + b _0230E7E0 +_0230E6D8: + ldrb r1, [r2, #0xa] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #9] + beq _0230E7E0 + mov r1, #1 + strb r1, [r2, #9] + ldr r1, [r0, #4] + mov r2, #0 + strb r2, [r1, #0xa] + ldr r0, [r0, #4] + mov r1, #2 + str r1, [r0, #4] + b _0230E7E0 +_0230E710: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _0230E7E8 ; =ov11_02324DDC + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _0230E7E0 + ldr r0, _0230E7E8 ; =ov11_02324DDC + mov r1, #6 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E73C: + ldr r0, _0230E7E8 ; =ov11_02324DDC + ldr r1, [r0, #4] + ldrb r0, [r1, #0xb] + cmp r0, #0 + ldreqb r0, [r1, #0xa] + cmpeq r0, #0 + moveq r0, #0 + streqb r0, [r1, #9] + beq _0230E7E0 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _0230E7E8 ; =ov11_02324DDC + mov r3, #0 + ldr r2, [r0, #4] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0, #4] + strb r1, [r0, #9] + b _0230E7E0 +_0230E788: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230E7E0 + ldr r0, _0230E7E8 ; =ov11_02324DDC + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #8] + cmp r0, r1 + beq _0230E7C0 + bl CloseControlsChart + ldr r0, _0230E7E8 ; =ov11_02324DDC + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #8] +_0230E7C0: + ldr r0, _0230E7E8 ; =ov11_02324DDC + mov r1, #8 + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E7D0: + ldr r0, _0230E7E8 ; =ov11_02324DDC + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #9] +_0230E7E0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E7E8: .word ov11_02324DDC + arm_func_end HandleControlsTopScreenGround + + arm_func_start ov11_0230E7EC +ov11_0230E7EC: ; 0x0230E7EC + stmdb sp!, {r3, lr} + ldr r0, _0230E8C0 ; =ov11_02324DDC + ldr r3, [r0, #4] + ldr r1, [r3, #4] + cmp r1, #2 + bne _0230E854 + mov r2, #1 + strb r2, [r3, #9] + ldr r1, [r0, #4] + sub r0, r2, #3 + ldrsb r1, [r1, #8] + cmp r1, r0 + bne _0230E840 + mov r0, #0 + ldr r3, _0230E8C4 ; =0x00003FCA + mov r1, r0 + mov r2, r0 + bl CreateControlsChart + ldr r1, _0230E8C0 ; =ov11_02324DDC + ldr r1, [r1, #4] + strb r0, [r1, #8] +_0230E840: + ldr r0, _0230E8C0 ; =ov11_02324DDC + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} +_0230E854: + cmp r1, #3 + ldmneia sp!, {r3, pc} + mov r1, #1 + strb r1, [r3, #9] + ldr r0, [r0, #4] + ldrsb r0, [r0, #8] + bl IsControlsChartActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl ov11_0230E578 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0230E8C0 ; =ov11_02324DDC + ldr r1, _0230E8C8 ; =ov11_023232BC + str r0, [r2] + bl GroundBg_Init + ldr r0, _0230E8C0 ; =ov11_02324DDC + ldr r1, _0230E8CC ; =ov11_023232FC + ldr r0, [r0] + mov r2, #0 + bl ov11_022EDE64 + ldr r0, _0230E8C0 ; =ov11_02324DDC + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E8C0: .word ov11_02324DDC +#if defined(EUROPE) +_0230E8C4: .word 0x00003FCC +#elif defined(JAPAN) +_0230E8C4: .word 0x000049CD +#else +_0230E8C4: .word 0x00003FCA +#endif +_0230E8C8: .word ov11_023232BC +_0230E8CC: .word ov11_023232FC + arm_func_end ov11_0230E7EC + + arm_func_start ov11_0230E8D0 +ov11_0230E8D0: ; 0x0230E8D0 + stmdb sp!, {r3, lr} + ldr r0, _0230E91C ; =ov11_02324DDC + ldr r1, [r0, #4] + ldr r1, [r1, #4] + cmp r1, #4 + bne _0230E914 + ldr r0, [r0] + bl ov11_022EF70C + mov r0, #1 + bl ov11_022EF53C + ldr r0, _0230E91C ; =ov11_02324DDC + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #5 + strb r3, [r2] + ldr r0, [r0, #4] + str r1, [r0, #4] +_0230E914: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E91C: .word ov11_02324DDC + arm_func_end ov11_0230E8D0 + + arm_func_start ov11_0230E920 +ov11_0230E920: ; 0x0230E920 + stmdb sp!, {r3, lr} + ldr r0, _0230E960 ; =ov11_02324DDC + ldr r1, [r0, #4] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022EFB70 + ldr r0, _0230E960 ; =ov11_02324DDC + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x10 + strb r2, [r1] + bl ov11_022E9C98 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230E960: .word ov11_02324DDC + arm_func_end ov11_0230E920 + + arm_func_start ov11_0230E964 +ov11_0230E964: ; 0x0230E964 + ldr ip, _0230E970 ; =ov11_0230D270 + ldr r0, _0230E974 ; =ov11_02323350 + bx ip + .align 2, 0 +_0230E970: .word ov11_0230D270 +_0230E974: .word ov11_02323350 + arm_func_end ov11_0230E964 + + arm_func_start ov11_0230E978 +ov11_0230E978: ; 0x0230E978 + stmdb sp!, {r3, lr} + ldr r0, _0230EB50 ; =0x0000FF94 + mov r1, #0xf + bl MemAlloc + ldr r1, _0230EB54 ; =WORLD_MAP_MODE + str r0, [r1, #8] + bl GetExecuteSpecialEpisodeType + mvn r1, #0 + cmp r0, r1 + ldr r0, _0230EB54 ; =WORLD_MAP_MODE + movne r2, #1 + mov ip, #1 + ldr r1, [r0, #8] + moveq r2, #0 + strb r2, [r1] + ldr r1, [r0, #8] + sub r3, ip, #2 + strb ip, [r1, #0xc] + ldr r1, [r0, #8] + mov r2, #0 + strh r3, [r1, #2] + ldr r1, [r0, #8] + strb r2, [r1, #4] + ldr r1, [r0, #8] + strb r2, [r1, #5] + ldr r1, [r0, #8] + ldrb r0, [r1] + cmp r0, #0 + addne r0, r1, #0xf000 + strneb r2, [r0, #0x999] + bne _0230EA08 + bl sub_0204CDCC + ldr r1, _0230EB54 ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + add r1, r1, #0xf000 + strb r0, [r1, #0x999] +_0230EA08: + ldr ip, _0230EB54 ; =WORLD_MAP_MODE + mvn r0, #0 + ldr r2, [ip, #8] + mov r1, #0 + add r2, r2, #0xf900 + strh r0, [r2, #0x9c] + ldr r2, [ip, #8] + ldr r3, _0230EB58 ; =0x00000136 + add r2, r2, #0xf900 + strh r0, [r2, #0x9e] + ldr r2, [ip, #8] + add r2, r2, #0xf000 + strb r1, [r2, #0xe8c] + ldr r2, [ip, #8] + add r2, r2, #0xf000 + strb r1, [r2, #0xe88] + ldr r2, [ip, #8] + add r2, r2, #0xf000 + strb r1, [r2, #0x9ac] +_0230EA54: + ldr r2, [ip, #8] + add r2, r2, r1, lsl #2 + add r2, r2, #0xf000 + add r1, r1, #1 + str r0, [r2, #0x9b0] + cmp r1, r3 + blt _0230EA54 + ldr r2, _0230EB54 ; =WORLD_MAP_MODE + mov ip, #0 + ldr r1, [r2, #8] + sub r3, ip, #2 + add r1, r1, #0xf000 + strb ip, [r1, #0xf90] + ldr r1, [r2, #8] + add r1, r1, #0xf000 + strb r3, [r1, #0x998] + ldr r1, [r2, #8] + str ip, [r1, #0x2c] + bl ov11_022F4734 + mov r0, #0 + bl ov11_02312844 + bl ov11_0230EC00 + bl GetMainCharacter1 + ldr r1, _0230EB54 ; =WORLD_MAP_MODE + ldrsh r2, [r0, #4] + ldr r0, [r1, #8] + mov r3, #0 + add r0, r0, #0x500 + strh r2, [r0, #0x2e] + ldr r0, [r1, #8] + ldr r2, _0230EB5C ; =0xA0080000 + strb r3, [r0, #0x530] + ldr r1, [r1, #8] + add r0, r1, #0x134 + add r0, r0, #0x400 + add r1, r1, #0x500 + ldrsh r1, [r1, #0x2e] + bl ov11_022F5BBC + ldr r0, _0230EB54 ; =WORLD_MAP_MODE + mov r1, #0xa + ldr r0, [r0, #8] + add r0, r0, #0x134 + add r0, r0, #0x400 + bl ov11_022F4974 + ldr r0, _0230EB54 ; =WORLD_MAP_MODE + mov r1, #0x9b + ldr r0, [r0, #8] + ldr r2, _0230EB5C ; =0xA0080000 + add r0, r0, #0x1f8 + add r0, r0, #0x400 + bl LoadObjectAnimData + ldr r0, _0230EB54 ; =WORLD_MAP_MODE + mov r1, #8 + ldr r0, [r0, #8] + add r0, r0, #0x1f8 + add r0, r0, #0x400 + bl ov11_022F4974 + mov r2, #0 + ldr r1, _0230EB54 ; =WORLD_MAP_MODE + mov r0, #1 + ldr r1, [r1, #8] + strb r2, [r1, #0x6bc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230EB50: .word 0x0000FF94 +_0230EB54: .word WORLD_MAP_MODE +_0230EB58: .word 0x00000136 +_0230EB5C: .word 0xA0080000 + arm_func_end ov11_0230E978 + + arm_func_start ov11_0230EB60 +ov11_0230EB60: ; 0x0230EB60 + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0230EB90 + ldr r0, _0230EBFC ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldr r0, [r1, #8] + cmp r0, #9 + addne r0, r1, #0xf000 + movne r1, #1 + strneb r1, [r0, #0xf90] + movne r0, #0 + ldmneia sp!, {r3, pc} +_0230EB90: + bl ov11_0230EC00 + bl ov11_02312894 + ldr r0, _0230EBFC ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + add r0, r0, #0x134 + add r0, r0, #0x400 + bl ov11_022F5C3C + ldr r0, _0230EBFC ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + add r0, r0, #0x1f8 + add r0, r0, #0x400 + bl ov11_022F6EFC + ldr r0, _0230EBFC ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldrb r0, [r1, #0x6bc] + cmp r0, #0 + beq _0230EBDC + add r0, r1, #0x6c0 + bl ov11_022F6EFC +_0230EBDC: + ldr r0, _0230EBFC ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + bl MemFree + ldr r0, _0230EBFC ; =WORLD_MAP_MODE + mov r1, #0 + str r1, [r0, #8] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230EBFC: .word WORLD_MAP_MODE + arm_func_end ov11_0230EB60 + + arm_func_start ov11_0230EC00 +ov11_0230EC00: ; 0x0230EC00 + stmdb sp!, {r3, lr} + ldr r0, _0230ED20 ; =WORLD_MAP_MODE + mov r3, #1 + ldr r1, [r0, #8] + mov r2, #0 + strb r2, [r1, #6] + ldr r2, [r0, #8] + sub r1, r3, #3 + str r3, [r2, #8] + ldr r2, [r0, #8] + strb r3, [r2, #0xc] + ldr r0, [r0, #8] + add r0, r0, #0xf900 + ldrsb r0, [r0, #0x98] + cmp r0, r1 + beq _0230EC58 + bl CloseAreaNameBox + ldr r0, _0230ED20 ; =WORLD_MAP_MODE + mvn r1, #1 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0x998] +_0230EC58: + mov ip, #0 + ldr r2, _0230ED20 ; =WORLD_MAP_MODE + ldr r1, _0230ED24 ; =0x00000136 + mov r0, ip +_0230EC68: + ldr r3, [r2, #8] + add r3, r3, ip, lsl #2 + add ip, ip, #1 + str r0, [r3, #0x54] + cmp ip, r1 + blt _0230EC68 + ldr r1, _0230ED20 ; =WORLD_MAP_MODE + mvn r2, #0 + ldr r1, [r1, #8] + add r1, r1, #0x500 + strh r2, [r1, #0x2c] + bl ov11_023128C0 + ldr r1, _0230ED20 ; =WORLD_MAP_MODE + mvn ip, #0 + ldr r0, [r1, #8] + mov r3, #0 + strh ip, [r0, #0x30] + ldr r2, [r1, #8] + mov r0, #1 + str r3, [r2, #0x34] + ldr r2, [r1, #8] + str r3, [r2, #0x38] + ldr r2, [r1, #8] + str r3, [r2, #0x3c] + ldr r2, [r1, #8] + str r3, [r2, #0x40] + ldr r2, [r1, #8] + str r3, [r2, #0x44] + ldr r1, [r1, #8] + strb ip, [r1, #0x50] + bl ov11_022EAFF8 + mov r0, #1 + mov r1, #6 + bl ov11_022EB0C0 + ldr r0, _0230ED20 ; =WORLD_MAP_MODE + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GroundBg_FreeAll + ldr r0, _0230ED20 ; =WORLD_MAP_MODE + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0230ED20 ; =WORLD_MAP_MODE + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230ED20: .word WORLD_MAP_MODE +_0230ED24: .word 0x00000136 + arm_func_end ov11_0230EC00 + + arm_func_start ov11_0230ED28 +ov11_0230ED28: ; 0x0230ED28 + ldr r0, _0230ED44 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0230ED44: .word WORLD_MAP_MODE + arm_func_end ov11_0230ED28 + + arm_func_start GetDungeonMapPos +GetDungeonMapPos: ; 0x0230ED48 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _0230EDAC ; =WORLD_MAP_MODE + mov r4, r0 + ldr r2, [r2, #8] + mov r0, r1 + ldrsh r1, [r2, #2] + add r2, sp, #0 + bl sub_0206A96C + mvn r1, #0 + cmp r0, r1 + beq _0230EDA0 + ldr r0, [sp] + cmp r0, #0 + blt _0230EDA0 + mov r0, r0, lsl #8 + str r0, [r4] + ldr r1, [sp, #4] + mov r0, #1 + mov r1, r1, lsl #8 + str r1, [r4, #4] + b _0230EDA4 +_0230EDA0: + mov r0, #0 +_0230EDA4: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230EDAC: .word WORLD_MAP_MODE + arm_func_end GetDungeonMapPos + + arm_func_start ov11_0230EDB0 +ov11_0230EDB0: ; 0x0230EDB0 + ldr r1, _0230EDD8 ; =WORLD_MAP_MODE + mov r3, #0 + ldr r2, [r1, #8] + str r3, [r2, #0x34] + ldr r2, [r1, #8] + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r2, #0x48] + str r0, [r2, #0x4c] + bx lr + .align 2, 0 +_0230EDD8: .word WORLD_MAP_MODE + arm_func_end ov11_0230EDB0 + + arm_func_start ov11_0230EDDC +ov11_0230EDDC: ; 0x0230EDDC + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r1, _0230EF44 ; =WORLD_MAP_MODE + mov r0, #0 + ldr r1, [r1, #8] + sub r2, r0, #1 + add r1, r1, #0xf900 + ldrsh r1, [r1, #0x9c] + cmp r1, r2 + beq _0230EE74 + add r0, sp, #0 + bl GetDungeonMapPos + cmp r0, #0 + beq _0230EE5C + mov r0, #1 + mov r1, #6 + bl ov11_022EB0C0 + ldr r1, _0230EF44 ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + add r0, r2, #0xf900 + ldrsh r0, [r0, #0x9c] + strh r0, [r2, #0x30] + ldr r0, [r1, #8] + ldr r0, [r0, #0x2c] + cmp r0, #0 + cmpne r0, #1 + beq _0230EE54 + add r1, sp, #0 + mov r0, #1 + bl ov11_022EB2F4 +_0230EE54: + add r0, sp, #0 + bl ov11_0230EDB0 +_0230EE5C: + ldr r0, _0230EF44 ; =WORLD_MAP_MODE + mvn r2, #0 + ldr r1, [r0, #8] + mov r0, #1 + add r1, r1, #0xf900 + strh r2, [r1, #0x9c] +_0230EE74: + ldr r1, _0230EF44 ; =WORLD_MAP_MODE + mvn r2, #0 + ldr r1, [r1, #8] + add r1, r1, #0xf900 + ldrsh r1, [r1, #0x9e] + cmp r1, r2 + beq _0230EF3C + add r0, sp, #0 + bl GetDungeonMapPos + cmp r0, #0 + beq _0230EF24 + mov r0, #1 + mov r1, #6 + bl ov11_022EB0C0 + ldr r1, _0230EF44 ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + add r0, r2, #0xf900 + ldrsh r0, [r0, #0x9e] + strh r0, [r2, #0x30] + ldr r0, [r1, #8] + ldr r0, [r0, #0x2c] + cmp r0, #0 + cmpne r0, #1 + beq _0230EEE0 + add r1, sp, #0 + mov r0, #1 + bl ov11_022EB2F4 +_0230EEE0: + ldr r1, _0230EF44 ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + add r0, r2, #0xf000 + ldr r0, [r0, #0x9a0] + str r0, [r2, #0x34] + ldr ip, [r1, #8] + ldr r3, [sp] + ldr r2, [sp, #4] + add r0, ip, #0xf000 + str r3, [ip, #0x48] + str r2, [ip, #0x4c] + ldr r0, [r0, #0x9a4] + str r0, [ip, #0x38] + ldr r1, [r1, #8] + add r0, r1, #0xf000 + ldr r0, [r0, #0x9a8] + str r0, [r1, #0x3c] +_0230EF24: + ldr r0, _0230EF44 ; =WORLD_MAP_MODE + mvn r2, #0 + ldr r1, [r0, #8] + mov r0, #1 + add r1, r1, #0xf900 + strh r2, [r1, #0x9e] +_0230EF3C: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230EF44: .word WORLD_MAP_MODE + arm_func_end ov11_0230EDDC + + arm_func_start ov11_0230EF48 +ov11_0230EF48: ; 0x0230EF48 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r3, _0230EFFC ; =WORLD_MAP_MODE + mov r4, r2 + ldr r2, [r3, #8] + mov r5, r1 + ldrsh r1, [r2, #2] + add r2, sp, #0 + bl sub_0206A96C + mvn r1, #0 + cmp r0, r1 + cmpne r5, #0 + beq _0230EFF4 + ldr r1, _0230EFFC ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + add r1, r1, r0, lsl #2 + ldr r1, [r1, #0x54] + cmp r1, r5 + blt _0230EF9C + cmp r4, #0 + beq _0230EFF4 +_0230EF9C: + ldr r2, _0230EFFC ; =WORLD_MAP_MODE + mov r1, #0xc4 + ldr r3, [r2, #8] + mul r4, r0, r1 + add r0, r3, r0, lsl #2 + str r5, [r0, #0x54] + ldr r1, [r2, #8] + add r0, r3, #0x384 + add r6, r0, #0x400 + add r1, r1, #0x1f8 + add r0, r6, r4 + add r1, r1, #0x400 + bl InitAnimDataFromOtherAnimDataVeneer + add r0, r6, r4 + mov r1, #8 + bl ov11_022F4974 + ldr r0, _0230F000 ; =ov11_02323310 + mov r1, r5, lsl #1 + ldrsh r1, [r0, r1] + add r0, r6, r4 + mov r2, #0 + bl SetAnimDataFields2 +_0230EFF4: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230EFFC: .word WORLD_MAP_MODE +_0230F000: .word ov11_02323310 + arm_func_end ov11_0230EF48 + + arm_func_start WorldMapSetMode +WorldMapSetMode: ; 0x0230F004 + ldr r1, _0230F04C ; =WORLD_MAP_MODE + str r0, [r1] + ldr r3, [r1, #8] + cmp r3, #0 + ldrne r2, [r3, #0x2c] + cmpne r2, r0 + bxeq lr + ldrsb r2, [r3, #4] + add r0, r3, #0xf000 + mov r3, #0 + strb r2, [r0, #0x999] + ldr r0, [r1, #8] + mov r2, #1 + add r0, r0, #0xf000 + strb r3, [r0, #0x99a] + ldr r0, [r1, #8] + strb r2, [r0, #0xc] + bx lr + .align 2, 0 +_0230F04C: .word WORLD_MAP_MODE + arm_func_end WorldMapSetMode + + arm_func_start ov11_0230F050 +ov11_0230F050: ; 0x0230F050 + ldr r2, _0230F088 ; =WORLD_MAP_MODE + ldr r1, [r2, #8] + cmp r1, #0 + bxeq lr + add r1, r1, #0xf000 + strb r0, [r1, #0x999] + ldr r0, [r2, #8] + mov r1, #0 + add r0, r0, #0xf000 + strb r1, [r0, #0x99a] + ldr r0, [r2, #8] + mov r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_0230F088: .word WORLD_MAP_MODE + arm_func_end ov11_0230F050 + + arm_func_start ov11_0230F08C +ov11_0230F08C: ; 0x0230F08C + ldr r2, _0230F0C0 ; =WORLD_MAP_MODE + ldr r1, [r2, #8] + cmp r1, #0 + bxeq lr + add r1, r1, #0xf000 + strb r0, [r1, #0x999] + ldr r0, [r2, #8] + mov r1, #1 + add r0, r0, #0xf000 + strb r1, [r0, #0x99a] + ldr r0, [r2, #8] + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_0230F0C0: .word WORLD_MAP_MODE + arm_func_end ov11_0230F08C + + arm_func_start WorldMapSetCamera +WorldMapSetCamera: ; 0x0230F0C4 + ldr r2, _0230F0E8 ; =WORLD_MAP_MODE + ldr r1, [r2, #8] + cmp r1, #0 + addne r1, r1, #0xf900 + strneh r0, [r1, #0x9c] + ldrne r0, [r2, #8] + movne r1, #1 + strneb r1, [r0, #0xc] + bx lr + .align 2, 0 +_0230F0E8: .word WORLD_MAP_MODE + arm_func_end WorldMapSetCamera + + arm_func_start ov11_0230F0EC +ov11_0230F0EC: ; 0x0230F0EC + ldr r2, _0230F134 ; =WORLD_MAP_MODE + ldr r1, [r2, #8] + cmp r1, #0 + bxeq lr + add r1, r1, #0xf900 + strh r0, [r1, #0x9e] + ldr r0, [r2, #8] + mov r1, #2 + add r0, r0, #0xf000 + str r1, [r0, #0x9a0] + ldr r0, [r2, #8] + mov r1, #0x200 + add r0, r0, #0xf000 + str r1, [r0, #0x9a4] + ldr r0, [r2, #8] + mov r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_0230F134: .word WORLD_MAP_MODE + arm_func_end ov11_0230F0EC + + arm_func_start ov11_0230F138 +ov11_0230F138: ; 0x0230F138 + ldr r3, _0230F17C ; =WORLD_MAP_MODE + ldr r2, [r3, #8] + cmp r2, #0 + bxeq lr + add r2, r2, #0xf900 + strh r0, [r2, #0x9e] + ldr r0, [r3, #8] + mov r2, #3 + add r0, r0, #0xf000 + str r2, [r0, #0x9a0] + ldr r0, [r3, #8] + mov r2, #1 + add r0, r0, #0xf000 + str r1, [r0, #0x9a8] + ldr r0, [r3, #8] + strb r2, [r0, #0xc] + bx lr + .align 2, 0 +_0230F17C: .word WORLD_MAP_MODE + arm_func_end ov11_0230F138 + + arm_func_start ov11_0230F180 +ov11_0230F180: ; 0x0230F180 + ldr r1, _0230F1B0 ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + cmp r2, #0 + bxeq lr + add r0, r2, r0, lsl #2 + add r0, r0, #0xf000 + mov r2, #1 + str r2, [r0, #0x9b0] + ldr r0, [r1, #8] + add r0, r0, #0xf000 + strb r2, [r0, #0x9ac] + bx lr + .align 2, 0 +_0230F1B0: .word WORLD_MAP_MODE + arm_func_end ov11_0230F180 + + arm_func_start ov11_0230F1B4 +ov11_0230F1B4: ; 0x0230F1B4 + ldr r1, _0230F1E8 ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + cmp r2, #0 + bxeq lr + add r0, r2, r0, lsl #2 + add r0, r0, #0xf000 + mov r2, #2 + str r2, [r0, #0x9b0] + ldr r0, [r1, #8] + mov r1, #1 + add r0, r0, #0xf000 + strb r1, [r0, #0x9ac] + bx lr + .align 2, 0 +_0230F1E8: .word WORLD_MAP_MODE + arm_func_end ov11_0230F1B4 + + arm_func_start ov11_0230F1EC +ov11_0230F1EC: ; 0x0230F1EC + ldr r2, _0230F218 ; =WORLD_MAP_MODE + ldr r1, [r2, #8] + cmp r1, #0 + bxeq lr + add r1, r1, #0xfe00 + strh r0, [r1, #0x8a] + ldr r0, [r2, #8] + mov r1, #1 + add r0, r0, #0xf000 + strb r1, [r0, #0xe88] + bx lr + .align 2, 0 +_0230F218: .word WORLD_MAP_MODE + arm_func_end ov11_0230F1EC + + arm_func_start ov11_0230F21C +ov11_0230F21C: ; 0x0230F21C + ldr r2, _0230F258 ; =WORLD_MAP_MODE + ldr r1, [r2, #8] + cmp r1, #0 + bxeq lr + add r1, r1, #0xf000 + mov r3, #1 + strb r3, [r1, #0xe8c] + ldr r1, [r2, #8] + mov r3, #0 + add r1, r1, #0xfe00 + strh r0, [r1, #0x8e] + ldr r0, [r2, #8] + add r0, r0, #0xf000 + strb r3, [r0, #0xe90] + bx lr + .align 2, 0 +_0230F258: .word WORLD_MAP_MODE + arm_func_end ov11_0230F21C + + arm_func_start ov11_0230F25C +ov11_0230F25C: ; 0x0230F25C + ldr r1, _0230F288 ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + cmp r1, #0 + moveq r0, #0 + bxeq lr + ldr r2, [r1, #0x40] + ldr r1, [r1, #0x44] + str r2, [r0] + str r1, [r0, #4] + mov r0, #1 + bx lr + .align 2, 0 +_0230F288: .word WORLD_MAP_MODE + arm_func_end ov11_0230F25C + + arm_func_start ov11_0230F28C +ov11_0230F28C: ; 0x0230F28C + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0230F358 ; =WORLD_MAP_MODE + mov r5, r0 + ldr r0, [r2, #4] + mov r4, r1 + cmp r0, #0 + beq _0230F350 + ldr r1, [r2, #8] + ldrsh r2, [r1, #2] + cmp r2, #0x10c + bne _0230F2E0 + mov r0, #0x8000 + str r0, [r5] + mov r0, #0x6000 + str r0, [r5, #4] + mov r0, #0x17800 + str r0, [r4] + mov r0, #0xf000 + str r0, [r4, #4] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0230F2E0: + mvn r1, #0 + cmp r2, r1 + beq _0230F350 + mov r1, r5 + mov r2, r4 + bl ov11_022EF498 + ldr r0, [r5] + add r0, r0, #0x8000 + str r0, [r5] + ldr r0, [r5, #4] + add r0, r0, #0x6000 + str r0, [r5, #4] + ldr r0, [r4] + sub r0, r0, #0x8000 + str r0, [r4] + ldr r0, [r4, #4] + sub r0, r0, #0x6000 + str r0, [r4, #4] + ldr r1, [r5] + ldr r0, [r4] + cmp r1, r0 + strgt r1, [r4] + ldr r1, [r5, #4] + ldr r0, [r4, #4] + cmp r1, r0 + strgt r1, [r4, #4] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0230F350: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230F358: .word WORLD_MAP_MODE + arm_func_end ov11_0230F28C + + arm_func_start ov11_0230F35C +ov11_0230F35C: ; 0x0230F35C + ldr r0, _0230F374 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + cmp r0, #0 + ldrneb r0, [r0, #0xc] + moveq r0, #0 + bx lr + .align 2, 0 +_0230F374: .word WORLD_MAP_MODE + arm_func_end ov11_0230F35C + + arm_func_start ov11_0230F378 +ov11_0230F378: ; 0x0230F378 + bx lr + arm_func_end ov11_0230F378 + + arm_func_start ov11_0230F37C +ov11_0230F37C: ; 0x0230F37C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x4c + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + ldr r0, [r0, #8] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0230FDB0 +_0230F39C: ; jump table + b _0230F3C4 ; case 0 + b _0230F3EC ; case 1 + b _0230FDB0 ; case 2 + b _0230FDB0 ; case 3 + b _0230F7D0 ; case 4 + b _0230F900 ; case 5 + b _0230F640 ; case 6 + b _0230F66C ; case 7 + b _0230FD84 ; case 8 + b _0230FDA0 ; case 9 +_0230F3C4: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #1 + ldrne r0, [r0, #8] + strneb r1, [r0, #0xc] + bne _0230FDB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + str r1, [r0, #8] +_0230F3EC: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02310050 ; =WORLD_MAP_MODE + movne r1, #1 + ldrne r0, [r0, #8] + strneb r1, [r0, #0xc] + bne _0230FDB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldrb r0, [r1, #0x6bc] + cmp r0, #0 + beq _0230F434 + add r0, r1, #0x6c0 + bl ov11_022F6EFC + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #0x6bc] +_0230F434: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0] + cmp r1, #0 + bne _0230F4D4 + ldr r1, [r0, #8] + ldrb r0, [r1] + cmp r0, #0 + addne r0, r1, #0xf000 + movne r1, #0 + strneb r1, [r0, #0x999] + bne _0230F4A0 + mov r0, #0x3e8 + bl sub_0206A878 + ldr r1, _02310054 ; =0x0000010D + cmp r0, r1 + bne _0230F48C + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #0 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0x999] + b _0230F4A0 +_0230F48C: + bl sub_0204CDCC + ldr r1, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + add r1, r1, #0xf000 + strb r0, [r1, #0x999] +_0230F4A0: + ldr r0, _02310050 ; =WORLD_MAP_MODE + mvn r1, #1 + ldr r0, [r0, #8] + add r0, r0, #0xf900 + ldrsb r0, [r0, #0x98] + cmp r0, r1 + beq _0230F4D4 + bl CloseAreaNameBox + ldr r0, _02310050 ; =WORLD_MAP_MODE + mvn r1, #1 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0x998] +_0230F4D4: + ldr r3, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r3, #8] + add r1, r0, #0xf000 + ldrb r1, [r1, #0xf90] + cmp r1, #0 + beq _0230F514 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r3, #1 + ldr r2, [r0, #8] + mov r1, #8 + strb r3, [r2, #0xc] + ldr r0, [r0, #8] + str r1, [r0, #8] + b _0230FDB0 +_0230F514: + add r2, r0, #0xf900 + ldrsb r1, [r2, #0x99] + cmp r1, #0 + blt _0230F604 + ldr r2, [r3] + mvn r1, #0 + str r2, [r0, #0x2c] + ldr r4, [r3, #8] + mov r2, #1 + add r0, r4, #0xf900 + ldrsb r0, [r0, #0x99] + strb r0, [r4, #4] + ldr r0, [r3, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0x999] + ldr r0, [r3, #8] + strb r2, [r0, #0xc] + ldr r1, [r3, #8] + ldrb r0, [r1] + cmp r0, #0 + beq _0230F588 + bl sub_0206A9DC + ldr r1, _02310050 ; =WORLD_MAP_MODE + mov r2, #2 + ldr r3, [r1, #8] + strh r0, [r3, #2] + ldr r0, [r1, #8] + str r2, [r0, #8] + b _0230F5BC +_0230F588: + ldrsb r0, [r1, #4] + cmp r0, #0 + movne r0, #0x10c + strneh r0, [r1, #2] + ldrne r0, [r3, #8] + movne r1, #2 + strne r1, [r0, #8] + bne _0230F5BC + add r0, r2, #0x10c + strh r0, [r1, #2] + ldr r0, [r3, #8] + mov r1, #2 + str r1, [r0, #8] +_0230F5BC: + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r2, #0 + ldr r1, [r0, #8] + strb r2, [r1, #5] + ldr r1, [r0, #8] + ldr r0, [r1, #0x2c] + cmp r0, #3 + bne _0230F5F0 + ldrsb r0, [r1, #4] + cmp r0, #1 + addgt r0, r1, #0xf000 + ldrgtb r0, [r0, #0x99a] + strgtb r0, [r1, #5] +_0230F5F0: + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #1 + ldr r0, [r0, #8] + strb r1, [r0, #0xc] + b _0230FDB0 +_0230F604: + ldrsh r3, [r2, #0x9c] + mvn r1, #0 + cmp r3, r1 + ldreqsh r2, [r2, #0x9e] + cmpeq r2, r1 + moveq r1, #0 + streqb r1, [r0, #0xc] + beq _0230FDB0 + ldr r1, _02310050 ; =WORLD_MAP_MODE + mov r2, #5 + str r2, [r0, #8] + ldr r0, [r1, #8] + mov r1, #1 + strb r1, [r0, #0xc] + b _0230FDB0 +_0230F640: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02310050 ; =WORLD_MAP_MODE + movne r1, #1 + ldrne r0, [r0, #8] + strneb r1, [r0, #0xc] + bne _0230FDB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #7 + ldr r0, [r0, #8] + str r1, [r0, #8] +_0230F66C: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + add r0, r1, #0xf000 + ldrb r0, [r0, #0xf90] + cmp r0, #0 + bne _0230F694 + add r0, r1, #0xf900 + ldrsb r0, [r0, #0x99] + cmp r0, #0 + blt _0230F6BC +_0230F694: + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r3, #0 + ldr r2, [r0, #8] + mov r1, #1 + str r3, [r2, #8] + ldr r0, [r0, #8] + strb r1, [r0, #0xc] + b _0230FDB0 +_0230F6BC: + ldr r0, [r1, #0x2c] + cmp r0, #0 + bne _0230F764 + mov r0, #0 + mov r1, #0x20 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + add r0, sp, #0x44 + mov r1, r4 + bl GetDungeonMapPos + cmp r0, #0 + ldreq r0, _02310050 ; =WORLD_MAP_MODE + moveq r1, #0 + ldreq r0, [r0, #8] + streqb r1, [r0, #0xc] + beq _0230FDB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldrsh r0, [r1, #0x30] + cmp r0, r4 + beq _0230F758 + mov r1, r4 + bl sub_0206A8A0 + cmp r0, #0 + ldrne r0, _02310050 ; =WORLD_MAP_MODE + ldrne r0, [r0, #8] + strneh r4, [r0, #0x30] + bne _0230FDB0 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r3, #0 + ldr r2, [r0, #8] + mov r1, #1 + str r3, [r2, #8] + ldr r0, [r0, #8] + strb r1, [r0, #0xc] + b _0230FDB0 +_0230F758: + mov r0, #0 + strb r0, [r1, #0xc] + b _0230FDB0 +_0230F764: + bl ov11_0230EDDC + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r2, [r0, #8] + add r0, r2, #0xf000 + ldrb r1, [r0, #0x9ac] + cmp r1, #0 + ldreqb r1, [r0, #0xe88] + cmpeq r1, #0 + beq _0230F7A4 + mov r1, #5 + ldr r0, _02310050 ; =WORLD_MAP_MODE + str r1, [r2, #8] + ldr r0, [r0, #8] + mov r1, #1 + strb r1, [r0, #0xc] + b _0230FDB0 +_0230F7A4: + ldr r1, [r2, #0x2c] + cmp r1, #3 + bne _0230F7C4 + ldr r0, [r0, #0x990] + cmp r0, #0 + movgt r0, #1 + strgtb r0, [r2, #0xc] + bgt _0230FDB0 +_0230F7C4: + mov r0, #0 + strb r0, [r2, #0xc] + b _0230FDB0 +_0230F7D0: + add r0, sp, #0x3c + mov r1, #0x3e8 + bl GetDungeonMapPos + cmp r0, #0 + beq _0230F7F0 + add r0, sp, #0x3c + bl ov11_0230EDB0 + b _0230F8A8 +_0230F7F0: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldrb r0, [r1] + cmp r0, #0 + beq _0230F860 + bl sub_0206AA40 + add r2, sp, #4 + mvn r1, #0 + bl sub_0206A96C + mvn r1, #0 + cmp r0, r1 + beq _0230F848 + ldr r1, [sp, #4] + cmp r1, #0 + blt _0230F848 + ldr r0, [sp, #8] + mov r1, r1, lsl #8 + mov r0, r0, lsl #8 + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + mov r0, #1 + b _0230F84C +_0230F848: + mov r0, #0 +_0230F84C: + cmp r0, #0 + beq _0230F8A8 + add r0, sp, #0x3c + bl ov11_0230EDB0 + b _0230F8A8 +_0230F860: + ldrsh r1, [r1, #2] + ldr r0, _02310054 ; =0x0000010D + cmp r1, r0 + add r0, sp, #0x3c + bne _0230F890 + mov r1, #0xc1 + bl GetDungeonMapPos + cmp r0, #0 + beq _0230F8A8 + add r0, sp, #0x3c + bl ov11_0230EDB0 + b _0230F8A8 +_0230F890: + mov r1, #0xb8 + bl GetDungeonMapPos + cmp r0, #0 + beq _0230F8A8 + add r0, sp, #0x3c + bl ov11_0230EDB0 +_0230F8A8: + ldr r1, _02310050 ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + add r0, r2, #0x500 + ldrsh r0, [r0, #0x2e] + cmp r0, #0 + beq _0230F900 + mov r0, #0 + strb r0, [r2, #0x530] + ldr r0, [r1, #8] + ldr r1, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r0, #0x2c] + ldr r3, [r1, #8] + cmp r0, #0 + ldreq r0, _02310058 ; =0x00000807 + movne r0, #0x800 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + add r0, r3, #0x500 + ldrsb r2, [r0, #0x30] + add r0, r3, #0x134 + add r0, r0, #0x400 + bl SetAnimDataFields2 +_0230F900: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r2, [r0, #8] + ldrsb r0, [r2, #4] + cmp r0, #0 + ble _0230F978 + ldr r0, _0231005C ; =ov11_02323310 + mov r3, #0x150 + ldr r1, [r0, #0x14] + ldr r0, [r0, #0x10] + str r1, [sp, #0x38] + str r0, [sp, #0x34] + ldrsb r0, [r2, #4] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #31 + add r0, r1, r0, ror #31 + cmp r0, #1 + ldr r0, _02310050 ; =WORLD_MAP_MODE + moveq r1, #0 + movne r1, #0x1f8 + str r1, [sp, #0x34] + ldr r0, [r0, #8] + add r1, sp, #0x34 + ldrsb r2, [r0, #4] + add r0, r0, #0x10 + sub r2, r2, #1 + add r2, r2, r2, lsr #31 + mov r2, r2, asr #1 + mul r3, r2, r3 + str r3, [sp, #0x38] + bl ov11_022F040C +_0230F978: + ldr r2, _02310050 ; =WORLD_MAP_MODE + ldr r4, [r2, #8] + ldrb r0, [r4, #5] + cmp r0, #0 + beq _0230FB38 + ldrsb r1, [r4, #4] + ldr r3, _02310060 ; =ov11_023233E8 + mov r0, #0x18 + sub r1, r1, #2 + mla r3, r1, r0, r3 + add r0, r4, #0xf000 + str r3, [r0, #0x994] + ldr r0, [r2, #8] + ldr r4, _02310064 ; =ov11_02323374 + ldrsb r3, [r0, #4] + add r1, r0, #0xf000 + mov r0, #0 + sub r3, r3, #2 + ldrb r3, [r4, r3] + str r3, [r1, #0x668] + ldr r1, [r2, #8] + ldrsb r1, [r1, #4] + subs r3, r1, #2 + beq _0230F9F4 + mov r2, r0 + b _0230F9EC +_0230F9E0: + ldrb r1, [r4, r2] + add r2, r2, #1 + add r0, r0, r1 +_0230F9EC: + cmp r2, r3 + bne _0230F9E0 +_0230F9F4: + mov r7, #0 + ldr r5, _02310068 ; =ov11_02323490 + mov r2, #0x18 + ldr r3, _02310050 ; =WORLD_MAP_MODE + b _0230FA20 +_0230FA08: + add r1, r7, r0 + mla r4, r1, r2, r5 + add r1, r6, r7, lsl #2 + add r1, r1, #0xf000 + str r4, [r1, #0x980] + add r7, r7, #1 +_0230FA20: + ldr r6, [r3, #8] + add r1, r6, #0xf000 + ldr r4, [r1, #0x668] + cmp r7, r4 + bne _0230FA08 + ldr r0, [r1, #0x994] + ldr r2, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r0, #0x10] + mov r3, #0 + str r0, [r1, #0x990] + ldr r4, [r2, #8] + add r0, r4, #0xf000 + strb r3, [r0, #0x5a0] + ldr r1, [r2, #8] + add r4, r4, #0x1a4 + ldrb r0, [r1, #5] + cmp r0, #0 + ldrneb r0, [r1, #0x6bc] + cmpne r0, #0 + beq _0230FB24 + add r0, r4, #0xf400 + add r1, r1, #0x6c0 + bl InitAnimDataFromOtherAnimDataVeneer + add r0, r4, #0xf400 + mov r1, #0xe + bl ov11_022F4974 + ldr r1, _02310050 ; =WORLD_MAP_MODE + add r0, r4, #0xf400 + ldr r1, [r1, #8] + mov r2, #0 + add r1, r1, #0xf000 + ldr r1, [r1, #0x994] + ldrsh r1, [r1, #0x14] + bl SetAnimDataFields2 + mov r5, #0 + mov r4, r5 + ldr r7, _02310050 ; =WORLD_MAP_MODE + mov r6, #0xc4 + b _0230FB08 +_0230FABC: + mul r8, r5, r6 + ldr r1, [r7, #8] + add r0, r1, #0x670 + add sb, r0, #0xf000 + add r0, sb, r8 + add r1, r1, #0x6c0 + bl InitAnimDataFromOtherAnimDataVeneer + add r0, sb, r8 + rsb r1, r5, #0x20 + bl ov11_022F4974 + ldr r1, [r7, #8] + mov r2, r4 + add r0, sb, r8 + add r1, r1, r5, lsl #2 + add r1, r1, #0xf000 + ldr r1, [r1, #0x980] + ldrsh r1, [r1, #0x14] + bl SetAnimDataFields2 + add r5, r5, #1 +_0230FB08: + ldr r0, [r7, #8] + add r0, r0, #0xf000 + ldr r1, [r0, #0x668] + cmp r5, r1 + bne _0230FABC + mov r1, #1 + strb r1, [r0, #0x5a0] +_0230FB24: + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #5] + b _0230FB44 +_0230FB38: + add r0, r4, #0xf000 + mov r1, #0 + str r1, [r0, #0x990] +_0230FB44: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + ldr r0, [r0, #0x2c] + cmp r0, #4 + beq _0230FB9C + mov r6, #1 + mov r5, r6 + mov r4, #0 +_0230FB64: + sub r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetDungeonMode + cmp r0, #0 + beq _0230FB90 + mov r0, r6, lsl #0x10 + mov r1, r5 + mov r2, r4 + mov r0, r0, asr #0x10 + bl ov11_0230EF48 +_0230FB90: + add r6, r6, #1 + cmp r6, #0xb4 + ble _0230FB64 +_0230FB9C: + mov sb, #0 + mov r6, #1 + ldr r4, _02310050 ; =WORLD_MAP_MODE + ldr sl, _0231006C ; =0x00000136 + mov r5, sb + mov r8, r6 + mvn r7, #0 +_0230FBB8: + ldr r2, [r4, #8] + add r0, r2, sb, lsl #2 + add r0, r0, #0xf000 + ldr r1, [r0, #0x9b0] + cmp r1, r7 + beq _0230FBF4 + mov r0, sb, lsl #0x10 + mov r2, r8 + mov r0, r0, asr #0x10 + bl ov11_0230EF48 + ldr r0, [r4, #8] + add r0, r0, sb, lsl #2 + add r0, r0, #0xf000 + str r7, [r0, #0x9b0] + b _0230FC28 +_0230FBF4: + ldr r0, [r2, #0x2c] + cmp r0, #4 + beq _0230FC28 + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_0204CE00 + cmp r0, #0 + beq _0230FC28 + mov r0, sb, lsl #0x10 + mov r1, r6 + mov r2, r5 + mov r0, r0, asr #0x10 + bl ov11_0230EF48 +_0230FC28: + add sb, sb, #1 + cmp sb, sl + blt _0230FBB8 + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldr r0, [r1, #0x2c] + cmp r0, #4 + cmpne r0, #3 + beq _0230FC7C + ldrb r0, [r1] + cmp r0, #0 + beq _0230FC6C + bl sub_0206AA40 + mov r1, #1 + mov r2, #0 + bl ov11_0230EF48 + b _0230FC7C +_0230FC6C: + mov r0, #0xb8 + mov r1, #1 + mov r2, #0 + bl ov11_0230EF48 +_0230FC7C: + ldr r2, _02310050 ; =WORLD_MAP_MODE + ldr r4, [r2, #8] + add r0, r4, #0xf000 + ldrb r0, [r0, #0xe88] + cmp r0, #0 + beq _0230FCEC + add r0, r4, #0xfe00 + add r1, r4, #0x500 + ldrsh r3, [r0, #0x8a] + ldrsh r0, [r1, #0x2c] + add r4, r4, #0xdc + cmp r0, r3 + mvnne r0, #0 + strneh r3, [r1, #0x2c] + cmpne r3, r0 + beq _0230FCEC + ldr r1, [r2, #8] + add r0, r4, #0xf400 + add r1, r1, #0x1f8 + add r1, r1, #0x400 + bl InitAnimDataFromOtherAnimDataVeneer + add r0, r4, #0xf400 + mov r1, #0xc + bl ov11_022F4974 + ldr r1, _02310070 ; =0x0000080D + add r0, r4, #0xf400 + mov r2, #0 + bl SetAnimDataFields2 +_0230FCEC: + ldr r2, _02310050 ; =WORLD_MAP_MODE + mov r0, #0 + ldr r1, [r2, #8] + add r1, r1, #0xf000 + strb r0, [r1, #0x9ac] + ldr r1, [r2, #8] + add r1, r1, #0xf000 + strb r0, [r1, #0xe88] + ldr r1, [r2, #8] + ldr r1, [r1, #0x2c] + cmp r1, #0 + bne _0230FD34 + mov r1, #0x20 + bl LoadScriptVariableValue + ldr r1, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + add r1, r1, #0xf900 + strh r0, [r1, #0x9c] +_0230FD34: + bl ov11_0230EDDC + cmp r0, #0 + beq _0230FD5C + mov r0, #0x10 + bl ov11_022E9C98 + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #6 + ldr r0, [r0, #8] + str r1, [r0, #8] + b _0230FDB0 +_0230FD5C: + ldr r1, _02310050 ; =WORLD_MAP_MODE + mvn r0, #0 + ldr r2, [r1, #8] + ldrsh r1, [r2, #0x30] + cmp r1, r0 + movne r0, #7 + strne r0, [r2, #8] + moveq r0, #1 + streq r0, [r2, #8] + b _0230FDB0 +_0230FD84: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _0230FDB0 + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #9 + ldr r0, [r0, #8] + str r1, [r0, #8] +_0230FDA0: + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #0xc] +_0230FDB0: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldr r3, [r1, #0x40] + ldr r2, [r1, #0x44] + ldr r0, [r1, #0x34] + str r3, [sp, #0x2c] + str r2, [sp, #0x30] + cmp r0, #1 + beq _0230FDE8 + cmp r0, #2 + beq _0230FE78 + cmp r0, #3 + beq _0230FF04 + b _0230FF64 +_0230FDE8: + ldr r2, _0231005C ; =ov11_02323310 + add r0, sp, #0x1c + ldr r3, [r2, #0x2c] + ldr r2, [r2, #0x28] + str r3, [sp, #0x20] + str r2, [sp, #0x1c] + ldr r3, [r1, #0x48] + ldr r2, [r1, #0x40] + sub r2, r3, r2 + str r2, [sp, #0x1c] + ldr r3, [r1, #0x4c] + ldr r2, [r1, #0x44] + sub r2, r3, r2 + str r2, [sp, #0x20] + ldr r1, [r1, #0x38] + bl ClampComponentAbs + ldr r3, [sp, #0x1c] + cmp r3, #0 + ldreq r0, [sp, #0x20] + cmpeq r0, #0 + ldreq r0, _02310050 ; =WORLD_MAP_MODE + moveq r1, #0 + ldreq r0, [r0, #8] + streq r1, [r0, #0x34] + beq _0230FF74 + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r2, [r0, #8] + ldr r1, [r2, #0x40] + add r1, r1, r3 + str r1, [r2, #0x40] + ldr r2, [r0, #8] + ldr r0, [sp, #0x20] + ldr r1, [r2, #0x44] + add r0, r1, r0 + str r0, [r2, #0x44] + b _0230FF74 +_0230FE78: + ldr r2, _0231005C ; =ov11_02323310 + add r0, sp, #0x14 + ldr r3, [r2, #0xc] + ldr r2, [r2, #8] + str r3, [sp, #0x18] + str r2, [sp, #0x14] + ldr r3, [r1, #0x48] + ldr r2, [r1, #0x40] + sub r2, r3, r2 + str r2, [sp, #0x14] + ldr r2, [r1, #0x4c] + ldr r1, [r1, #0x44] + sub r1, r2, r1 + str r1, [sp, #0x18] + bl EuclideanNorm__020050B0 + ldr r1, _02310050 ; =WORLD_MAP_MODE + mov r4, r0 + ldr r5, [r1, #8] + ldr r0, [r5, #0x38] + bl _fflt + mov r1, r0 + mov r0, r4 + bl _fdiv + bl _ffix + ldr r1, _02310050 ; =WORLD_MAP_MODE + str r0, [r5, #0x3c] + ldr r1, [r1, #8] + ldr r0, [r1, #0x3c] + cmp r0, #0 + movle r0, #1 + strle r0, [r1, #0x3c] + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #3 + ldr r0, [r0, #8] + str r1, [r0, #0x34] +_0230FF04: + ldr r0, _02310050 ; =WORLD_MAP_MODE + mov r1, #1 + ldr r2, [r0, #8] + add r0, sp, #0xc + str r1, [sp] + ldr r3, [r2, #0x3c] + add r1, r2, #0x40 + add r2, r2, #0x48 + bl sub_0200514C + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r2, [sp, #0xc] + ldr r3, [r0, #8] + ldr r1, [sp, #0x10] + str r2, [r3, #0x40] + str r1, [r3, #0x44] + ldr r1, [r3, #0x3c] + sub r1, r1, #1 + str r1, [r3, #0x3c] + ldr r1, [r0, #8] + ldr r0, [r1, #0x3c] + cmp r0, #0 + movle r0, #0 + strle r0, [r1, #0x34] + b _0230FF74 +_0230FF64: + ldr r2, [r1, #0x48] + ldr r0, [r1, #0x4c] + str r2, [r1, #0x40] + str r0, [r1, #0x44] +_0230FF74: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r3, [r0, #8] + ldr r0, [r3, #0x34] + cmp r0, #0 + mvneq r0, #0 + streqb r0, [r3, #0x50] + beq _0230FFC4 + ldr r2, [r3, #0x40] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + sub r0, r2, r0 + str r0, [sp, #0x24] + ldr r2, [r3, #0x44] + add r0, sp, #0x24 + sub r1, r2, r1 + str r1, [sp, #0x28] + bl sub_020055C8 + ldr r1, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + strb r0, [r1, #0x50] +_0230FFC4: + ldr r2, _02310050 ; =WORLD_MAP_MODE + ldr r4, [r2, #8] + add r1, r4, #0x500 + ldrsh r0, [r1, #0x2e] + cmp r0, #0 + ldrnesb r3, [r4, #0x50] + mvnne r0, #0 + cmpne r3, r0 + ldrnesb r0, [r1, #0x30] + cmpne r0, r3 + beq _0231002C + strb r3, [r4, #0x530] + ldr r0, [r2, #8] + ldr r1, _02310050 ; =WORLD_MAP_MODE + ldr r0, [r0, #0x2c] + ldr r3, [r1, #8] + cmp r0, #0 + ldreq r0, _02310058 ; =0x00000807 + movne r0, #0x800 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + add r0, r3, #0x500 + ldrsb r2, [r0, #0x30] + add r0, r3, #0x134 + add r0, r0, #0x400 + bl SetAnimDataFields2 +_0231002C: + ldr r0, _02310050 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldr r0, [r1, #0x34] + cmp r0, #0 + movne r0, #1 + strneb r0, [r1, #0xc] + mov r0, #0 + add sp, sp, #0x4c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02310050: .word WORLD_MAP_MODE +_02310054: .word 0x0000010D +_02310058: .word 0x00000807 +_0231005C: .word ov11_02323310 +_02310060: .word ov11_023233E8 +_02310064: .word ov11_02323374 +_02310068: .word ov11_02323490 +_0231006C: .word 0x00000136 +_02310070: .word 0x0000080D + arm_func_end ov11_0230F37C + + arm_func_start ov11_02310074 +ov11_02310074: ; 0x02310074 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r1, _0231031C ; =WORLD_MAP_MODE + ldr r2, [r1, #8] + ldr r0, [r2, #8] + cmp r0, #2 + bne _02310250 + mov r0, #1 + strb r0, [r2, #0xc] + ldr r2, [r1, #8] + ldr r1, _02310320 ; =ov11_02323730 + ldrsh r5, [r2, #2] + mov r2, r5 + bl Debug_Print + bl ov11_0230EC00 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0231031C ; =WORLD_MAP_MODE + mvn r1, #0 + str r0, [r2, #4] + ldr r0, [r2, #8] + cmp r5, r1 + strh r5, [r0, #2] + bne _02310108 + ldr r0, [r2, #4] + ldr r1, _02310324 ; =ov11_02323394 + bl GroundBg_Init + ldr r0, _0231031C ; =WORLD_MAP_MODE + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldmib r0, {r1, r2} + add r0, r2, #0x10 + bl ov11_022EFD5C + b _023101EC +_02310108: + mov r0, #0xc + smulbb r1, r5, r0 + ldr r3, _02310328 ; =EVENTS + ldrsh r0, [r3, r1] + add r4, r3, r1 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _023101A0 +_0231012C: ; jump table + b _02310178 ; case 0 + b _023101A0 ; case 1 + b _023101A0 ; case 2 + b _023101A0 ; case 3 + b _023101A0 ; case 4 + b _023101A0 ; case 5 + b _02310160 ; case 6 + b _02310160 ; case 7 + b _02310160 ; case 8 + b _02310160 ; case 9 + b _02310160 ; case 10 + b _02310178 ; case 11 + b _02310178 ; case 12 +_02310160: + ldr r0, [r2, #4] + ldr r1, _0231032C ; =ov11_023233B0 + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + b _023101B8 +_02310178: + ldr r0, _02310330 ; =ov11_02323310 + ldrsh r3, [r4] + ldr ip, [r0, #0x1c] + ldr lr, [r0, #0x18] + ldr r1, _02310334 ; =ov11_02323750 + add r0, sp, #0 + mov r2, r5 + str lr, [sp] + str ip, [sp, #4] + bl Debug_FatalError +_023101A0: + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldr r1, _02310324 ; =ov11_02323394 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_023128C0 +_023101B8: + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldmib r0, {r1, r2} + add r0, r2, #0x10 + bl ov11_022EFD5C + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldr r2, _02310338 ; =ov11_02323330 + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_023101EC: + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldr r2, [r0, #8] + ldrb r1, [r2, #5] + cmp r1, #0 + beq _02310240 + mov r1, #3 + str r1, [r2, #8] + ldr r0, [r0, #8] + ldr r2, _0231033C ; =0xA4080000 + add r0, r0, #0x6c0 + mov r1, #0x9a + bl LoadObjectAnimData + ldr r0, _0231031C ; =WORLD_MAP_MODE + mov r1, #8 + ldr r0, [r0, #8] + add r0, r0, #0x6c0 + bl ov11_022F4974 + ldr r0, _0231031C ; =WORLD_MAP_MODE + mov r1, #1 + ldr r0, [r0, #8] + strb r1, [r0, #0x6bc] +_02310240: + ldr r0, _0231031C ; =WORLD_MAP_MODE + mov r1, #4 + ldr r0, [r0, #8] + str r1, [r0, #8] +_02310250: + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + add r0, r1, #0xf000 + ldrb r0, [r0, #0xe8c] + cmp r0, #0 + beq _02310314 + add r0, r1, #0xf900 + ldrsb r0, [r0, #0x98] + mvn r1, #1 + cmp r0, r1 + beq _023102B0 + bl IsAreaNameBoxActive + cmp r0, #0 + bne _023102B0 + ldr r0, _0231031C ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + add r0, r0, #0xf900 + ldrsb r0, [r0, #0x98] + bl CloseAreaNameBox + ldr r0, _0231031C ; =WORLD_MAP_MODE + mvn r1, #1 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0x998] +_023102B0: + ldr r0, _0231031C ; =WORLD_MAP_MODE + mvn r1, #1 + ldr r2, [r0, #8] + add r0, r2, #0xf900 + ldrsb r0, [r0, #0x98] + cmp r0, r1 + bne _02310314 + add r0, r2, #0xfe00 + ldrsh r3, [r0, #0x8e] + add r0, r1, #1 + cmp r3, r0 + beq _02310300 + ldr r0, _02310340 ; =ov11_02323340 + mov r1, #0x13 + mov r2, #0 + bl CreateAreaNameBox + ldr r1, _0231031C ; =WORLD_MAP_MODE + ldr r1, [r1, #8] + add r1, r1, #0xf000 + strb r0, [r1, #0x998] +_02310300: + ldr r0, _0231031C ; =WORLD_MAP_MODE + mov r1, #0 + ldr r0, [r0, #8] + add r0, r0, #0xf000 + strb r1, [r0, #0xe8c] +_02310314: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231031C: .word WORLD_MAP_MODE +_02310320: .word ov11_02323730 +_02310324: .word ov11_02323394 +_02310328: .word EVENTS +_0231032C: .word ov11_023233B0 +_02310330: .word ov11_02323310 +_02310334: .word ov11_02323750 +_02310338: .word ov11_02323330 +_0231033C: .word 0xA4080000 +_02310340: .word ov11_02323340 + arm_func_end ov11_02310074 + + arm_func_start ov11_02310344 +ov11_02310344: ; 0x02310344 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + ldr r0, _02310624 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + ldr r0, [r0, #8] + cmp r0, #7 + cmpne r0, #6 + cmpne r0, #0 + cmpne r0, #5 + bne _02310614 + add r1, sp, #0x10 + mov r0, #1 + bl ov11_022EB3C8 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x10] + streq r0, [sp, #0x14] + ldr r0, _02310624 ; =WORLD_MAP_MODE + ldr r0, [r0, #8] + ldr r1, [r0, #0x2c] + cmp r1, #3 + bne _023104A4 + add r1, r0, #0xf000 + ldr r2, [r1, #0x990] + cmp r2, #0 + ble _023104A4 + ldr r1, [r1, #0x994] + add r0, r0, #0xf000 + ldr r1, [r1, #0x10] + sub r1, r1, r2 + subs sb, r1, #0x1e + ldr r2, [r0, #0x990] + ldr r1, _02310624 ; =WORLD_MAP_MODE + sub r2, r2, #1 + str r2, [r0, #0x990] + ldr r2, [r1, #8] + movmi sb, #0 + add r0, r2, #0xf000 + ldr r4, [r0, #0x994] + add r2, r2, #0x1a4 + ldr r3, [r4, #8] + ldr r5, [r4] + mul r4, r3, sb + add r3, r4, r5, lsl #8 + str r3, [sp, #8] + ldr r3, [r0, #0x994] + add r0, r2, #0xf400 + ldr r2, [r3, #0xc] + ldr r4, [r3, #4] + mul r3, r2, sb + add r3, r3, r4, lsl #8 + add r1, sp, #8 + mov r2, #0 + str r3, [sp, #0xc] + bl AnimRelatedFunction__022F6F14 + mov r8, #0 + add r7, sp, #8 + mov r6, r8 + ldr r5, _02310624 ; =WORLD_MAP_MODE + mov r4, #0xc4 + b _02310490 +_02310438: + ldr r3, [r5, #8] + mov r1, r7 + add r0, r3, r8, lsl #2 + add r2, r0, #0xf000 + ldr sl, [r2, #0x980] + add r0, r3, #0x670 + ldr r3, [sl, #8] + add r0, r0, #0xf000 + mul r3, sb, r3 + ldr sl, [sl] + mla r0, r8, r4, r0 + add r3, r3, sl, lsl #8 + str r3, [sp, #8] + ldr sl, [r2, #0x980] + mov r2, r6 + ldr r3, [sl, #0xc] + ldr sl, [sl, #4] + mul r3, sb, r3 + add r3, r3, sl, lsl #8 + str r3, [sp, #0xc] + bl AnimRelatedFunction__022F6F14 + add r8, r8, #1 +_02310490: + ldr r0, [r5, #8] + add r1, r0, #0xf000 + ldr r1, [r1, #0x668] + cmp r8, r1 + bne _02310438 +_023104A4: + ldr r1, [r0, #0x2c] + mov sb, #0 + cmp r1, #1 + bhi _023104F8 + add r0, r0, #0x500 + ldrsh r0, [r0, #0x2e] + cmp r0, #0 + beq _023104F8 + ldr r0, _02310624 ; =WORLD_MAP_MODE + add r2, sp, #0 + ldr r5, [r0, #8] + mov r3, sb + ldr r4, [r5, #0x40] + ldr r0, [r5, #0x44] + add r1, r5, #0x500 + str r0, [sp, #4] + str r4, [sp] + add r0, r5, #0x134 + ldrsh r1, [r1, #0x2e] + add r0, r0, #0x400 + bl ov11_022F5C94 +_023104F8: + ldr r0, _02310624 ; =WORLD_MAP_MODE + mvn r2, #0 + ldr r0, [r0, #8] + add r0, r0, #0x500 + ldrsh r1, [r0, #0x2c] + cmp r1, r2 + beq _02310540 + add r0, sp, #0 + bl GetDungeonMapPos + cmp r0, #0 + beq _02310540 + ldr r0, _02310624 ; =WORLD_MAP_MODE + add r1, sp, #0 + ldr r0, [r0, #8] + mov r2, #0 + add r0, r0, #0xdc + add r0, r0, #0xf400 + bl AnimRelatedFunction__022F6F14 +_02310540: + mov sl, #0 + add r8, sp, #0 + mov fp, sl + ldr r7, _02310624 ; =WORLD_MAP_MODE + mov r5, #0xc4 + mvn r6, #0 + ldr r4, _02310628 ; =0x00000136 + b _023105BC +_02310560: + ldr r0, [r7, #8] + add r0, r0, sl, lsl #2 + ldr r0, [r0, #0x54] + cmp r0, #0 + cmpne r0, r6 + beq _023105B8 + mov r1, sl, lsl #0x10 + mov r0, r8 + mov r1, r1, asr #0x10 + bl GetDungeonMapPos + cmp r0, #0 + beq _023105B8 + ldr r0, [r7, #8] + mov r1, r8 + add r0, r0, #0x384 + add r0, r0, #0x400 + mla r0, sl, r5, r0 + mov r2, fp + bl AnimRelatedFunction__022F6F14 + add sb, sb, #1 + cmp sb, #0x64 + bgt _023105C4 +_023105B8: + add sl, sl, #1 +_023105BC: + cmp sl, r4 + blt _02310560 +_023105C4: + ldr r0, _02310624 ; =WORLD_MAP_MODE + add r1, sp, #0x10 + ldr r0, [r0, #8] + mov r2, #0 + add r0, r0, #0x10 + bl ov11_022F042C + cmp r0, #0 + beq _023105F8 + ldr r0, _02310624 ; =WORLD_MAP_MODE + add r2, sp, #0x10 + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_023105F8: + ldr r0, _02310624 ; =WORLD_MAP_MODE + ldr r0, [r0, #4] + bl ov11_022EF70C + ldr r0, _02310624 ; =WORLD_MAP_MODE + mov r1, #1 + ldr r0, [r0, #8] + strb r1, [r0, #6] +_02310614: + bl ov11_02312A74 + mov r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02310624: .word WORLD_MAP_MODE +_02310628: .word 0x00000136 + arm_func_end ov11_02310344 + + arm_func_start ov11_0231062C +ov11_0231062C: ; 0x0231062C + stmdb sp!, {r3, lr} + ldr r0, _02310668 ; =WORLD_MAP_MODE + ldr r1, [r0, #8] + ldrb r1, [r1, #6] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02310660 + bl ov11_022EFB70 + ldr r0, _02310668 ; =WORLD_MAP_MODE + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #6] +_02310660: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310668: .word WORLD_MAP_MODE + arm_func_end ov11_0231062C + + arm_func_start ov11_0231066C +ov11_0231066C: ; 0x0231066C + ldr ip, _02310678 ; =ov11_0230D270 + ldr r0, _0231067C ; =ov11_02323788 + bx ip + .align 2, 0 +_02310678: .word ov11_0230D270 +_0231067C: .word ov11_02323788 + arm_func_end ov11_0231066C + + arm_func_start ov11_02310680 +ov11_02310680: ; 0x02310680 + ldr ip, _0231068C ; =ov11_0230D17C + ldr r0, _02310690 ; =ov11_02323788 + bx ip + .align 2, 0 +_0231068C: .word ov11_0230D17C +_02310690: .word ov11_02323788 + arm_func_end ov11_02310680 + + arm_func_start ov11_02310694 +ov11_02310694: ; 0x02310694 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r0, #0x6f0 + mov r1, #0xf + bl MemAlloc + ldr r1, _0231072C ; =ov11_02324DF0 + mov r2, #1 + str r0, [r1] + strb r2, [r0, #0x6ec] + bl ov11_023107BC + mov r0, #0x10 + bl ov11_022E9D10 + ldr r0, _0231072C ; =ov11_02324DF0 + mov r2, #1 + ldr r1, [r0] + mov r4, #0 + strb r2, [r1, #0x6ed] + ldr r1, [r0] + ldr r6, _02310730 ; =0xA0080000 + strb r4, [r1, #0x6ee] + ldr r1, [r0] + mov r7, #0x9c + str r2, [r1, #4] + ldr r0, [r0] + mov r5, #8 + add r8, r0, #8 +_023106F8: + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl LoadObjectAnimData + mov r0, r8 + mov r1, r5 + bl ov11_022F4974 + add r4, r4, #1 + cmp r4, #9 + add r8, r8, #0xc4 + blt _023106F8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0231072C: .word ov11_02324DF0 +_02310730: .word 0xA0080000 + arm_func_end ov11_02310694 + + arm_func_start ov11_02310734 +ov11_02310734: ; 0x02310734 + stmdb sp!, {r3, r4, r5, lr} + cmp r0, #0 + bne _02310760 + ldr r0, _023107B8 ; =ov11_02324DF0 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #8 + movne r0, #1 + strneb r0, [r1, #0x6ee] + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_02310760: + bl ov11_023107BC + ldr r0, _023107B8 ; =ov11_02324DF0 + mov r2, #8 + ldr r1, [r0] + mov r5, #0 + str r2, [r1, #4] + ldr r0, [r0] + add r4, r0, #8 +_02310780: + mov r0, r4 + bl ov11_022F6EFC + add r5, r5, #1 + cmp r5, #9 + add r4, r4, #0xc4 + blt _02310780 + ldr r0, _023107B8 ; =ov11_02324DF0 + ldr r0, [r0] + bl MemFree + ldr r0, _023107B8 ; =ov11_02324DF0 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023107B8: .word ov11_02324DF0 + arm_func_end ov11_02310734 + + arm_func_start ov11_023107BC +ov11_023107BC: ; 0x023107BC + stmdb sp!, {r3, lr} + ldr r1, _02310834 ; =ov11_02324DF0 + mov r3, #1 + ldr r0, [r1] + mov r2, #0 + strb r2, [r0] + ldr r2, [r1] + sub r0, r3, #2 + str r3, [r2, #4] + ldr r1, [r1] + strb r3, [r1, #0x6ec] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _02310834 ; =ov11_02324DF0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _02310820 + bl GroundBg_FreeAll + ldr r0, _02310834 ; =ov11_02324DF0 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02310834 ; =ov11_02324DF0 + mov r1, #0 + str r1, [r0, #4] +_02310820: + ldr r0, _02310834 ; =ov11_02324DF0 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x6ed] + ldmia sp!, {r3, pc} + .align 2, 0 +_02310834: .word ov11_02324DF0 + arm_func_end ov11_023107BC + + arm_func_start ov11_02310838 +ov11_02310838: ; 0x02310838 + ldr r0, _02310848 ; =ov11_02324DF0 + ldr r0, [r0] + ldrb r0, [r0, #0x6ec] + bx lr + .align 2, 0 +_02310848: .word ov11_02324DF0 + arm_func_end ov11_02310838 + + arm_func_start ov11_0231084C +ov11_0231084C: ; 0x0231084C + bx lr + arm_func_end ov11_0231084C + + arm_func_start ov11_02310850 +ov11_02310850: ; 0x02310850 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _02310A50 ; =ov11_02324DF0 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _02310A48 +_0231086C: ; jump table + b _02310890 ; case 0 + b _023108B8 ; case 1 + b _02310A48 ; case 2 + b _02310A48 ; case 3 + b _02310948 ; case 4 + b _023109A4 ; case 5 + b _023109D0 ; case 6 + b _02310A1C ; case 7 + b _02310A38 ; case 8 +_02310890: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02310A50 ; =ov11_02324DF0 + mov r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #0x6ec] + bne _02310A48 + ldr r0, _02310A50 ; =ov11_02324DF0 + ldr r0, [r0] + str r1, [r0, #4] +_023108B8: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02310A50 ; =ov11_02324DF0 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #0x6ec] + bne _02310A48 + ldr r0, _02310A50 ; =ov11_02324DF0 + ldr r2, [r0] + ldrb r1, [r2, #0x6ee] + cmp r1, #0 + beq _02310910 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02310A50 ; =ov11_02324DF0 + mov r3, #1 + ldr r2, [r0] + mov r1, #7 + strb r3, [r2, #0x6ec] + ldr r0, [r0] + str r1, [r0, #4] + b _02310A48 +_02310910: + ldrb r1, [r2, #0x6ed] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #0x6ec] + beq _02310A48 + mov r1, #1 + strb r1, [r2, #0x6ec] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0x6ed] + ldr r0, [r0] + mov r1, #2 + str r1, [r0, #4] + b _02310A48 +_02310948: + mov r7, #0 + ldr r6, _02310A54 ; =ov11_023237AC + add r5, r1, #8 + mov r4, r7 +_02310958: + ldrsh r1, [r6, #8] + mov r0, r5 + mov r2, r4 + bl SetAnimDataFields2 + add r7, r7, #1 + cmp r7, #9 + add r5, r5, #0xc4 + add r6, r6, #0xc + blt _02310958 + mov r0, #0x10 + bl ov11_022E9C98 + ldr r0, _02310A50 ; =ov11_02324DF0 + mov r3, #5 + ldr r2, [r0] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #0x6ec] + b _02310A48 +_023109A4: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02310A50 ; =ov11_02324DF0 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #0x6ec] + bne _02310A48 + ldr r0, _02310A50 ; =ov11_02324DF0 + mov r1, #6 + ldr r0, [r0] + str r1, [r0, #4] +_023109D0: + ldr r0, _02310A50 ; =ov11_02324DF0 + ldr r1, [r0] + ldrb r0, [r1, #0x6ee] + cmp r0, #0 + ldreqb r0, [r1, #0x6ed] + cmpeq r0, #0 + moveq r0, #0 + streqb r0, [r1, #0x6ec] + beq _02310A48 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02310A50 ; =ov11_02324DF0 + mov r3, #0 + ldr r2, [r0] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #0x6ec] + b _02310A48 +_02310A1C: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _02310A48 + ldr r0, _02310A50 ; =ov11_02324DF0 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #4] +_02310A38: + ldr r0, _02310A50 ; =ov11_02324DF0 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x6ec] +_02310A48: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02310A50: .word ov11_02324DF0 +_02310A54: .word ov11_023237AC + arm_func_end ov11_02310850 + + arm_func_start ov11_02310A58 +ov11_02310A58: ; 0x02310A58 + stmdb sp!, {r3, lr} + ldr r0, _02310AC0 ; =ov11_02324DF0 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #2 + ldmneia sp!, {r3, pc} + mov r0, #1 + strb r0, [r1, #0x6ec] + bl ov11_023107BC + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _02310AC0 ; =ov11_02324DF0 + ldr r1, _02310AC4 ; =ov11_0232376C + str r0, [r2, #4] + bl GroundBg_Init + ldr r0, _02310AC0 ; =ov11_02324DF0 + ldr r1, _02310AC8 ; =ov11_02323818 + ldr r0, [r0, #4] + ldr r2, _02310ACC ; =ov11_0232382C + bl ov11_022EDE64 + ldr r0, _02310AC0 ; =ov11_02324DF0 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02310AC0: .word ov11_02324DF0 +_02310AC4: .word ov11_0232376C +_02310AC8: .word ov11_02323818 +_02310ACC: .word ov11_0232382C + arm_func_end ov11_02310A58 + + arm_func_start ov11_02310AD0 +ov11_02310AD0: ; 0x02310AD0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r0, _02310B98 ; =ov11_02324DF0 + ldr r2, [r0] + ldr r1, [r2, #4] + cmp r1, #6 + cmpne r1, #5 + cmpne r1, #0 + bne _02310B58 + mov r6, #0 + ldr r5, _02310B9C ; =ov11_023237AC + add r4, r2, #8 + add r8, sp, #0 + mov r7, r6 +_02310B08: + ldr r1, [r5] + ldr r0, [r5, #4] + mov ip, r1, lsl #8 + mov r3, r0, lsl #8 + mov r0, r4 + mov r1, r8 + mov r2, r7 + str ip, [sp] + str r3, [sp, #4] + bl AnimRelatedFunction__022F6F14 + add r6, r6, #1 + cmp r6, #9 + add r4, r4, #0xc4 + add r5, r5, #0xc + blt _02310B08 + ldr r0, _02310B98 ; =ov11_02324DF0 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0] + b _02310B8C +_02310B58: + cmp r1, #3 + bne _02310B8C + ldr r0, [r0, #4] + bl ov11_022EF70C + mov r0, #1 + bl ov11_022EF53C + ldr r0, _02310B98 ; =ov11_02324DF0 + mov r3, #1 + ldr r2, [r0] + mov r1, #4 + strb r3, [r2] + ldr r0, [r0] + str r1, [r0, #4] +_02310B8C: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02310B98: .word ov11_02324DF0 +_02310B9C: .word ov11_023237AC + arm_func_end ov11_02310AD0 + + arm_func_start ov11_02310BA0 +ov11_02310BA0: ; 0x02310BA0 + stmdb sp!, {r3, lr} + ldr r0, _02310BD8 ; =ov11_02324DF0 + ldr r1, [r0] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022EFB70 + ldr r0, _02310BD8 ; =ov11_02324DF0 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02310BD8: .word ov11_02324DF0 + arm_func_end ov11_02310BA0 + + arm_func_start ov11_02310BDC +ov11_02310BDC: ; 0x02310BDC + ldr ip, _02310BE8 ; =ov11_0230DB58 + ldr r0, _02310BEC ; =ov11_02323840 + bx ip + .align 2, 0 +_02310BE8: .word ov11_0230DB58 +_02310BEC: .word ov11_02323840 + arm_func_end ov11_02310BDC + + arm_func_start ov11_02310BF0 +ov11_02310BF0: ; 0x02310BF0 + ldr ip, _02310BFC ; =ov11_0230DB58 + ldr r0, _02310C00 ; =ov11_02323864 + bx ip + .align 2, 0 +_02310BFC: .word ov11_0230DB58 +_02310C00: .word ov11_02323864 + arm_func_end ov11_02310BF0 + + arm_func_start ov11_02310C04 +ov11_02310C04: ; 0x02310C04 + ldr ip, _02310C10 ; =ov11_0230DB58 + ldr r0, _02310C14 ; =ov11_0232385C + bx ip + .align 2, 0 +_02310C10: .word ov11_0230DB58 +_02310C14: .word ov11_0232385C + arm_func_end ov11_02310C04 + + arm_func_start ov11_02310C18 +ov11_02310C18: ; 0x02310C18 + ldr ip, _02310C24 ; =ov11_0230DB58 + ldr r0, _02310C28 ; =ov11_02323894 + bx ip + .align 2, 0 +_02310C24: .word ov11_0230DB58 +_02310C28: .word ov11_02323894 + arm_func_end ov11_02310C18 + + arm_func_start ov11_02310C2C +ov11_02310C2C: ; 0x02310C2C + ldr ip, _02310C38 ; =ov11_0230DB58 + ldr r0, _02310C3C ; =ov11_023238B0 + bx ip + .align 2, 0 +_02310C38: .word ov11_0230DB58 +_02310C3C: .word ov11_023238B0 + arm_func_end ov11_02310C2C + + arm_func_start ov11_02310C40 +ov11_02310C40: ; 0x02310C40 + ldr ip, _02310C4C ; =ov11_0230D270 + ldr r0, _02310C50 ; =ov11_023238DC + bx ip + .align 2, 0 +_02310C4C: .word ov11_0230D270 +_02310C50: .word ov11_023238DC + arm_func_end ov11_02310C40 + + arm_func_start ov11_02310C54 +ov11_02310C54: ; 0x02310C54 + stmdb sp!, {r3, lr} + mov r0, #0x30 + mov r1, #0xf + bl MemAlloc + ldr r1, _02310CA0 ; =ov11_02324DF8 + mvn r3, #0 + str r0, [r1] + strh r3, [r0] + ldr r2, [r1] + mov r0, #0 + strh r3, [r2, #0x2c] + ldr r2, [r1] + strh r3, [r2, #2] + ldr r1, [r1] + strh r3, [r1, #0x2e] + bl ov11_02312844 + bl ov11_02310CD4 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310CA0: .word ov11_02324DF8 + arm_func_end ov11_02310C54 + + arm_func_start ov11_02310CA4 +ov11_02310CA4: ; 0x02310CA4 + stmdb sp!, {r3, lr} + bl ov11_02310CD4 + bl ov11_02312894 + ldr r0, _02310CD0 ; =ov11_02324DF8 + ldr r0, [r0] + bl MemFree + ldr r0, _02310CD0 ; =ov11_02324DF8 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310CD0: .word ov11_02324DF8 + arm_func_end ov11_02310CA4 + + arm_func_start ov11_02310CD4 +ov11_02310CD4: ; 0x02310CD4 + stmdb sp!, {r3, lr} + ldr r0, _02310D40 ; =ov11_02324DF8 + mov r3, #0 + ldr r1, [r0] + mov r2, #1 + strb r3, [r1, #4] + ldr r1, [r0] + str r2, [r1, #8] + ldr r0, [r0] + strb r2, [r0, #0xc] + bl ov11_02312BF4 + mov r0, #0 + bl ov11_023128C0 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _02310D40 ; =ov11_02324DF8 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GroundBg_FreeAll + ldr r0, _02310D40 ; =ov11_02324DF8 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02310D40 ; =ov11_02324DF8 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02310D40: .word ov11_02324DF8 + arm_func_end ov11_02310CD4 + + arm_func_start ov11_02310D44 +ov11_02310D44: ; 0x02310D44 + ldr r0, _02310D60 ; =ov11_02324DF8 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02310D60: .word ov11_02324DF8 + arm_func_end ov11_02310D44 + + arm_func_start ov11_02310D64 +ov11_02310D64: ; 0x02310D64 + stmdb sp!, {r3, lr} + ldr r1, _02310D9C ; =ov11_02324DF8 + ldr r1, [r1, #4] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #1 + cmpne r0, #3 + bne _02310D94 + mov r0, r1 + bl ov11_022EE60C + ldmia sp!, {r3, pc} +_02310D94: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02310D9C: .word ov11_02324DF8 + arm_func_end ov11_02310D64 + + arm_func_start ov11_02310DA0 +ov11_02310DA0: ; 0x02310DA0 + ldr r2, _02310DB8 ; =ov11_02324DF8 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02310DBC ; =ov11_022F03F8 + add r0, r0, #0x10 + bx ip + .align 2, 0 +_02310DB8: .word ov11_02324DF8 +_02310DBC: .word ov11_022F03F8 + arm_func_end ov11_02310DA0 + + arm_func_start ov11_02310DC0 +ov11_02310DC0: ; 0x02310DC0 + ldr r2, _02310DD8 ; =ov11_02324DF8 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02310DDC ; =ov11_022F040C + add r0, r0, #0x10 + bx ip + .align 2, 0 +_02310DD8: .word ov11_02324DF8 +_02310DDC: .word ov11_022F040C + arm_func_end ov11_02310DC0 + + arm_func_start ov11_02310DE0 +ov11_02310DE0: ; 0x02310DE0 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02310EC0 ; =ov11_02324DF8 + mov r6, r0 + ldr r0, [r2, #4] + mov r5, r1 + cmp r0, #0 + ldrne r2, [r2] + mvnne r1, #0 + ldrnesh r4, [r2] + cmpne r4, r1 + beq _02310EB8 + mov r1, r6 + mov r2, r5 + bl ov11_022EF498 + ldr r1, [r6] + mov r0, #0xc + add r1, r1, #0x8000 + str r1, [r6] + ldr r2, [r6, #4] + smulbb r1, r4, r0 + add r0, r2, #0x6000 + str r0, [r6, #4] + ldr r2, [r5] + ldr r0, _02310EC4 ; =EVENTS + sub r2, r2, #0x8000 + str r2, [r5] + ldr r2, [r5, #4] + ldrsh r0, [r0, r1] + sub r1, r2, #0x6000 + str r1, [r5, #4] + cmp r0, #0xa + bne _02310E90 + ldr r0, [r6] + add r0, r0, #0x1800 + str r0, [r6] + ldr r0, [r6, #4] + add r0, r0, #0x1800 + str r0, [r6, #4] + ldr r0, [r5] + sub r0, r0, #0x1800 + str r0, [r5] + ldr r0, [r5, #4] + sub r0, r0, #0x1800 + str r0, [r5, #4] +_02310E90: + ldr r1, [r6] + ldr r0, [r5] + cmp r1, r0 + strgt r1, [r5] + ldr r1, [r6, #4] + ldr r0, [r5, #4] + cmp r1, r0 + strgt r1, [r5, #4] + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02310EB8: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02310EC0: .word ov11_02324DF8 +_02310EC4: .word EVENTS + arm_func_end ov11_02310DE0 + + arm_func_start ov11_02310EC8 +ov11_02310EC8: ; 0x02310EC8 + ldr r0, _02310EE4 ; =ov11_02324DF8 + ldr r1, [r0] + ldrb r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #0xc] + bx lr + .align 2, 0 +_02310EE4: .word ov11_02324DF8 + arm_func_end ov11_02310EC8 + + arm_func_start ov11_02310EE8 +ov11_02310EE8: ; 0x02310EE8 + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _02310F08 + cmp r0, #1 + beq _02310F24 + cmp r0, #2 + beq _02310F40 + ldmia sp!, {r3, pc} +_02310F08: + ldr r0, _02310FBC ; =ov11_02324DF8 + mov r2, #1 + ldr r3, [r0] + strh r1, [r3, #0x2c] + ldr r0, [r0] + strb r2, [r0, #0xc] + ldmia sp!, {r3, pc} +_02310F24: + ldr r0, _02310FBC ; =ov11_02324DF8 + mov r2, #1 + ldr r3, [r0] + strh r1, [r3, #0x2e] + ldr r0, [r0] + strb r2, [r0, #0xc] + ldmia sp!, {r3, pc} +_02310F40: + cmp r1, #1 + beq _02310F5C + cmp r1, #2 + beq _02310F7C + cmp r1, #3 + beq _02310F9C + ldmia sp!, {r3, pc} +_02310F5C: + ldr r0, _02310FBC ; =ov11_02324DF8 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_02310F7C: + ldr r0, _02310FBC ; =ov11_02324DF8 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #1 + mov r2, r1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_02310F9C: + ldr r0, _02310FBC ; =ov11_02324DF8 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + mov r2, #1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} + .align 2, 0 +_02310FBC: .word ov11_02324DF8 + arm_func_end ov11_02310EE8 + + arm_func_start ov11_02310FC0 +ov11_02310FC0: ; 0x02310FC0 + stmdb sp!, {r3, lr} + ldr r0, _02311070 ; =ov11_02324DF8 + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #1 + cmpne r0, #4 + bne _02311068 + ldrsh r0, [r2, #0x2c] + mvn ip, #0 + cmp r0, ip + beq _02311028 + mov r1, #1 + ldr r0, _02311070 ; =ov11_02324DF8 + strb r1, [r2, #0xc] + ldr r3, [r0] + mov r2, #2 + ldrsh r1, [r3, #0x2c] + strh r1, [r3] + ldr r1, [r0] + strh ip, [r1, #0x2c] + ldr r1, [r0] + str r2, [r1, #8] + ldr r0, [r0] + ldrsh r0, [r0] + bl ov11_022F4734 + b _02311068 +_02311028: + ldrsh r0, [r2, #0x2e] + cmp r0, ip + moveq r0, #0 + streqb r0, [r2, #0xc] + beq _02311068 + mov r1, #1 + strb r1, [r2, #0xc] + ldr r0, _02311070 ; =ov11_02324DF8 + mov r1, #3 + ldr r3, [r0] + ldrsh r2, [r3, #0x2e] + strh r2, [r3, #2] + ldr r2, [r0] + strh ip, [r2, #0x2e] + ldr r0, [r0] + str r1, [r0, #8] +_02311068: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311070: .word ov11_02324DF8 + arm_func_end ov11_02310FC0 + + arm_func_start ov11_02311074 +ov11_02311074: ; 0x02311074 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r1, _0231126C ; =ov11_02324DF8 + ldr r2, [r1] + ldr r0, [r2, #8] + cmp r0, #2 + bne _0231122C + mov r0, #1 + strb r0, [r2, #0xc] + ldr r2, [r1] + ldr r1, _02311270 ; =ov11_02323974 + ldrsh r5, [r2] + mov r2, r5 + bl Debug_Print + bl ov11_02310CD4 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _0231126C ; =ov11_02324DF8 + mvn r1, #0 + str r0, [r2, #4] + ldr r0, [r2] + cmp r5, r1 + strh r5, [r0] + bne _0231110C + ldr r0, [r2, #4] + ldr r1, _02311274 ; =ov11_02323920 + bl GroundBg_Init + ldr r0, _0231126C ; =ov11_02324DF8 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231126C ; =ov11_02324DF8 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0x10 + bl ov11_022EFD5C + b _0231120C +_0231110C: + mov r0, #0xc + smulbb r1, r5, r0 + ldr r3, _02311278 ; =EVENTS + ldrsh r0, [r3, r1] + add r4, r3, r1 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _023111BC +_02311130: ; jump table + b _02311194 ; case 0 + b _023111BC ; case 1 + b _023111BC ; case 2 + b _023111BC ; case 3 + b _023111BC ; case 4 + b _023111BC ; case 5 + b _02311164 ; case 6 + b _02311164 ; case 7 + b _02311164 ; case 8 + b _02311164 ; case 9 + b _02311164 ; case 10 + b _0231117C ; case 11 + b _0231117C ; case 12 +_02311164: + ldr r0, [r2, #4] + ldr r1, _0231127C ; =ov11_0232393C + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + b _023111D4 +_0231117C: + ldr r0, [r2, #4] + ldr r1, _02311280 ; =ov11_02323958 + bl GroundBg_Init + mov r0, #1 + bl ov11_023128C0 + b _023111D4 +_02311194: + ldr r0, _02311284 ; =ov11_023238CC + ldrsh r3, [r4] + ldr ip, [r0, #0xc] + ldr lr, [r0, #8] + ldr r1, _02311288 ; =ov11_02323998 + add r0, sp, #0 + mov r2, r5 + str lr, [sp] + str ip, [sp, #4] + bl Debug_FatalError +_023111BC: + ldr r0, _0231126C ; =ov11_02324DF8 + ldr r1, _02311274 ; =ov11_02323920 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_023128C0 +_023111D4: + ldr r0, _0231126C ; =ov11_02324DF8 + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _0231126C ; =ov11_02324DF8 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0x10 + bl ov11_022EFD5C + ldr r0, _0231126C ; =ov11_02324DF8 + ldr r2, _0231128C ; =ov11_023238CC + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_0231120C: + ldr r0, _0231126C ; =ov11_02324DF8 + mov r3, #4 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #8] + ldr r0, [r0] + strb r1, [r0, #0xc] + b _02311264 +_0231122C: + cmp r0, #3 + bne _02311264 + mov r0, #1 + strb r0, [r2, #0xc] + ldr r0, [r1] + ldrsh r0, [r0, #2] + bl ov11_0231297C + ldr r0, _0231126C ; =ov11_02324DF8 + mov r3, #4 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #8] + ldr r0, [r0] + strb r1, [r0, #0xc] +_02311264: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231126C: .word ov11_02324DF8 +_02311270: .word ov11_02323974 +_02311274: .word ov11_02323920 +_02311278: .word EVENTS +_0231127C: .word ov11_0232393C +_02311280: .word ov11_02323958 +_02311284: .word ov11_023238CC +_02311288: .word ov11_02323998 +_0231128C: .word ov11_023238CC + arm_func_end ov11_02311074 + + arm_func_start ov11_02311290 +ov11_02311290: ; 0x02311290 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _02311328 ; =ov11_02324DF8 + ldr r0, [r0] + ldr r0, [r0, #8] + cmp r0, #4 + bne _02311318 + add r1, sp, #0 + mov r0, #1 + bl ov11_022EB3C8 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp] + streq r0, [sp, #4] + ldr r0, _02311328 ; =ov11_02324DF8 + add r1, sp, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x10 + bl ov11_022F042C + cmp r0, #0 + beq _023112FC + ldr r0, _02311328 ; =ov11_02324DF8 + add r2, sp, #0 + ldr r0, [r0, #4] + mov r1, #0 + bl ov11_022EF2D4 +_023112FC: + ldr r0, _02311328 ; =ov11_02324DF8 + ldr r0, [r0, #4] + bl ov11_022EF70C + ldr r0, _02311328 ; =ov11_02324DF8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #4] +_02311318: + bl ov11_02312A74 + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311328: .word ov11_02324DF8 + arm_func_end ov11_02311290 + + arm_func_start ov11_0231132C +ov11_0231132C: ; 0x0231132C + stmdb sp!, {r3, lr} + ldr r0, _02311368 ; =ov11_02324DF8 + ldr r1, [r0] + ldrb r1, [r1, #4] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02311360 + bl ov11_022EFB70 + ldr r0, _02311368 ; =ov11_02324DF8 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #4] +_02311360: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311368: .word ov11_02324DF8 + arm_func_end ov11_0231132C + + arm_func_start ov11_0231136C +ov11_0231136C: ; 0x0231136C + ldr ip, _02311378 ; =ov11_0230D270 + ldr r0, _0231137C ; =ov11_023239C4 + bx ip + .align 2, 0 +_02311378: .word ov11_0230D270 +_0231137C: .word ov11_023239C4 + arm_func_end ov11_0231136C + + arm_func_start ov11_02311380 +ov11_02311380: ; 0x02311380 + stmdb sp!, {r3, lr} + mov r0, #0x2c + mov r1, #0xf + bl MemAlloc + ldr r1, _023113B4 ; =ov11_02324E00 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x28] + mov r0, r2 + bl ov11_02312844 + bl ov11_023113E8 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023113B4: .word ov11_02324E00 + arm_func_end ov11_02311380 + + arm_func_start ov11_023113B8 +ov11_023113B8: ; 0x023113B8 + stmdb sp!, {r3, lr} + bl ov11_023113E8 + bl ov11_02312894 + ldr r0, _023113E4 ; =ov11_02324E00 + ldr r0, [r0] + bl MemFree + ldr r0, _023113E4 ; =ov11_02324E00 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023113E4: .word ov11_02324E00 + arm_func_end ov11_023113B8 + + arm_func_start ov11_023113E8 +ov11_023113E8: ; 0x023113E8 + stmdb sp!, {r3, lr} + ldr r0, _02311458 ; =ov11_02324E00 + mov r3, #0 + ldr r1, [r0] + mov r2, #1 + strb r3, [r1] + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + strb r2, [r0, #8] + bl ov11_02312BF4 + mov r0, #0 + bl ov11_023128C0 + mov r0, #1 + mov r1, #5 + bl ov11_022EB0C0 + ldr r0, _02311458 ; =ov11_02324E00 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GroundBg_FreeAll + ldr r0, _02311458 ; =ov11_02324E00 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02311458 ; =ov11_02324E00 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02311458: .word ov11_02324E00 + arm_func_end ov11_023113E8 + + arm_func_start ov11_0231145C +ov11_0231145C: ; 0x0231145C + ldr r0, _02311478 ; =ov11_02324E00 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02311478: .word ov11_02324E00 + arm_func_end ov11_0231145C + + arm_func_start ov11_0231147C +ov11_0231147C: ; 0x0231147C + stmdb sp!, {r3, lr} + ldr r1, _02311528 ; =ov11_02324E00 + ldr r2, [r1, #4] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_0231149C: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _023114B4 ; case 1 + b _023114D0 ; case 2 + b _023114EC ; case 3 + b _02311508 ; case 4 + b _02311518 ; case 5 +_023114B4: + cmp r2, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + mov r0, r2 + mov r2, r1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_023114D0: + cmp r2, #0 + ldmeqia sp!, {r3, pc} + mov r1, #1 + mov r0, r2 + mov r2, r1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_023114EC: + cmp r2, #0 + ldmeqia sp!, {r3, pc} + mov r0, r2 + mov r1, #0 + mov r2, #1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_02311508: + mov r0, r2 + mov r1, #1 + bl ov11_022EE5E4 + ldmia sp!, {r3, pc} +_02311518: + mov r0, r2 + mov r1, #0 + bl ov11_022EE5E4 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311528: .word ov11_02324E00 + arm_func_end ov11_0231147C + + arm_func_start ov11_0231152C +ov11_0231152C: ; 0x0231152C + ldr r0, _02311548 ; =ov11_02324E00 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #8] + bx lr + .align 2, 0 +_02311548: .word ov11_02324E00 + arm_func_end ov11_0231152C + + arm_func_start ov11_0231154C +ov11_0231154C: ; 0x0231154C + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _02311564 + cmp r0, #1 + beq _02311580 + ldmia sp!, {r3, pc} +_02311564: + ldr r0, _0231158C ; =ov11_02324E00 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x28] + ldr r0, [r0] + strb r2, [r0, #8] + ldmia sp!, {r3, pc} +_02311580: + and r0, r1, #0xff + bl ov11_0231147C + ldmia sp!, {r3, pc} + .align 2, 0 +_0231158C: .word ov11_02324E00 + arm_func_end ov11_0231154C + + arm_func_start ov11_02311590 +ov11_02311590: ; 0x02311590 + stmdb sp!, {r3, lr} + ldr r0, _023115F0 ; =ov11_02324E00 + ldr r2, [r0] + ldr r0, [r2, #4] + cmp r0, #1 + cmpne r0, #3 + bne _023115E8 + ldrb r0, [r2, #0x28] + cmp r0, #0 + moveq r0, #0 + streqb r0, [r2, #8] + beq _023115E8 + ldr r0, _023115F0 ; =ov11_02324E00 + mov r1, #1 + strb r1, [r2, #8] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0x28] + ldr r0, [r0] + mov r1, #2 + str r1, [r0, #4] + bl ov11_022F47BC +_023115E8: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023115F0: .word ov11_02324E00 + arm_func_end ov11_02311590 + + arm_func_start ov11_023115F4 +ov11_023115F4: ; 0x023115F4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #2 + bne _0231179C + mov r0, #1 + strb r0, [r1, #8] + bl ov11_022F1798 + mov r4, r0 + ldr r1, _023117A8 ; =ov11_02323A58 + mov r2, r4 + mov r0, #1 + bl Debug_Print + bl ov11_023113E8 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _023117A4 ; =ov11_02324E00 + mvn r1, #0 + str r0, [r2, #4] + cmp r4, r1 + bne _02311684 + ldr r1, _023117AC ; =ov11_02323A04 + bl GroundBg_Init + ldr r0, _023117A4 ; =ov11_02324E00 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + b _02311780 +_02311684: + bl ov11_022F17B4 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02311730 +_02311698: ; jump table + b _0231170C ; case 0 + b _02311730 ; case 1 + b _02311730 ; case 2 + b _02311730 ; case 3 + b _02311730 ; case 4 + b _02311730 ; case 5 + b _023116CC ; case 6 + b _023116CC ; case 7 + b _023116CC ; case 8 + b _023116CC ; case 9 + b _023116CC ; case 10 + b _023116E8 ; case 11 + b _023116E8 ; case 12 +_023116CC: + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r1, _023117B0 ; =ov11_02323A20 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + b _02311750 +_023116E8: + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r1, _023117B4 ; =ov11_02323A3C + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 + b _02311750 +_0231170C: + ldr r1, _023117B8 ; =ov11_023239B4 + add r0, sp, #0 + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + ldr r1, _023117BC ; =ov11_02323A7C + mov r2, r4 + str ip, [sp] + str r3, [sp, #4] + bl Debug_FatalError +_02311730: + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r1, _023117AC ; =ov11_02323A04 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 +_02311750: + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r0, [r0, #4] + bl ov11_022F17E8 + ldr r0, _023117A4 ; =ov11_02324E00 + ldr r0, [r0] + add r0, r0, #0xc + bl ov11_022F1EEC +_02311780: + ldr r0, _023117A4 ; =ov11_02324E00 + mov r3, #3 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #8] +_0231179C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_023117A4: .word ov11_02324E00 +_023117A8: .word ov11_02323A58 +_023117AC: .word ov11_02323A04 +_023117B0: .word ov11_02323A20 +_023117B4: .word ov11_02323A3C +_023117B8: .word ov11_023239B4 +_023117BC: .word ov11_02323A7C + arm_func_end ov11_023115F4 + + arm_func_start ov11_023117C0 +ov11_023117C0: ; 0x023117C0 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _02311824 ; =ov11_02324E00 + ldr r0, [r2] + ldr r0, [r0, #4] + cmp r0, #3 + bne _02311818 + ldr r0, _02311828 ; =ov11_023239B4 + add r1, sp, #0 + ldr r3, [r0, #4] + ldr r0, [r0] + str r3, [sp, #4] + str r0, [sp] + ldr r0, [r2, #4] + bl ov11_022F1E90 + ldr r0, _02311824 ; =ov11_02324E00 + ldr r0, [r0, #4] + bl ov11_022EF70C + ldr r0, _02311824 ; =ov11_02324E00 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0] +_02311818: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311824: .word ov11_02324E00 +_02311828: .word ov11_023239B4 + arm_func_end ov11_023117C0 + + arm_func_start ov11_0231182C +ov11_0231182C: ; 0x0231182C + stmdb sp!, {r3, lr} + ldr r0, _02311868 ; =ov11_02324E00 + ldr r1, [r0] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02311860 + bl ov11_022EFB70 + ldr r0, _02311868 ; =ov11_02324E00 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0] +_02311860: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311868: .word ov11_02324E00 + arm_func_end ov11_0231182C + + arm_func_start ov11_0231186C +ov11_0231186C: ; 0x0231186C + ldr ip, _02311878 ; =ov11_0230D270 + ldr r0, _0231187C ; =ov11_02323AA8 + bx ip + .align 2, 0 +_02311878: .word ov11_0230D270 +_0231187C: .word ov11_02323AA8 + arm_func_end ov11_0231186C + + arm_func_start ov11_02311880 +ov11_02311880: ; 0x02311880 + stmdb sp!, {r3, lr} + mov r0, #0x2c + mov r1, #0xf + bl MemAlloc + ldr r1, _023118B4 ; =ov11_02324E08 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x28] + mov r0, r2 + bl ov11_02312844 + bl ov11_023118E8 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023118B4: .word ov11_02324E08 + arm_func_end ov11_02311880 + + arm_func_start ov11_023118B8 +ov11_023118B8: ; 0x023118B8 + stmdb sp!, {r3, lr} + bl ov11_023118E8 + bl ov11_02312894 + ldr r0, _023118E4 ; =ov11_02324E08 + ldr r0, [r0] + bl MemFree + ldr r0, _023118E4 ; =ov11_02324E08 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023118E4: .word ov11_02324E08 + arm_func_end ov11_023118B8 + + arm_func_start ov11_023118E8 +ov11_023118E8: ; 0x023118E8 + stmdb sp!, {r3, lr} + ldr r0, _02311958 ; =ov11_02324E08 + mov r3, #0 + ldr r1, [r0] + mov r2, #1 + strb r3, [r1] + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + strb r2, [r0, #8] + bl ov11_02312BF4 + mov r0, #0 + bl ov11_023128C0 + mov r0, #1 + mov r1, #5 + bl ov11_022EB0C0 + ldr r0, _02311958 ; =ov11_02324E08 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GroundBg_FreeAll + ldr r0, _02311958 ; =ov11_02324E08 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02311958 ; =ov11_02324E08 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02311958: .word ov11_02324E08 + arm_func_end ov11_023118E8 + + arm_func_start ov11_0231195C +ov11_0231195C: ; 0x0231195C + ldr r0, _02311978 ; =ov11_02324E08 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02311978: .word ov11_02324E08 + arm_func_end ov11_0231195C + + arm_func_start ov11_0231197C +ov11_0231197C: ; 0x0231197C + stmdb sp!, {r3, lr} + ldr r1, _02311A28 ; =ov11_02324E08 + ldr r2, [r1, #4] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_0231199C: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _023119B4 ; case 1 + b _023119D0 ; case 2 + b _023119EC ; case 3 + b _02311A08 ; case 4 + b _02311A18 ; case 5 +_023119B4: + cmp r2, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + mov r0, r2 + mov r2, r1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_023119D0: + cmp r2, #0 + ldmeqia sp!, {r3, pc} + mov r1, #1 + mov r0, r2 + mov r2, r1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_023119EC: + cmp r2, #0 + ldmeqia sp!, {r3, pc} + mov r0, r2 + mov r1, #0 + mov r2, #1 + bl ov11_022EE5EC + ldmia sp!, {r3, pc} +_02311A08: + mov r0, r2 + mov r1, #1 + bl ov11_022EE5E4 + ldmia sp!, {r3, pc} +_02311A18: + mov r0, r2 + mov r1, #0 + bl ov11_022EE5E4 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311A28: .word ov11_02324E08 + arm_func_end ov11_0231197C + + arm_func_start ov11_02311A2C +ov11_02311A2C: ; 0x02311A2C + ldr r0, _02311A48 ; =ov11_02324E08 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #8] + bx lr + .align 2, 0 +_02311A48: .word ov11_02324E08 + arm_func_end ov11_02311A2C + + arm_func_start ov11_02311A4C +ov11_02311A4C: ; 0x02311A4C + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _02311A64 + cmp r0, #1 + beq _02311A80 + ldmia sp!, {r3, pc} +_02311A64: + ldr r0, _02311A8C ; =ov11_02324E08 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x28] + ldr r0, [r0] + strb r2, [r0, #8] + ldmia sp!, {r3, pc} +_02311A80: + and r0, r1, #0xff + bl ov11_0231197C + ldmia sp!, {r3, pc} + .align 2, 0 +_02311A8C: .word ov11_02324E08 + arm_func_end ov11_02311A4C + + arm_func_start ov11_02311A90 +ov11_02311A90: ; 0x02311A90 + stmdb sp!, {r3, lr} + ldr r0, _02311AF0 ; =ov11_02324E08 + ldr r2, [r0] + ldr r0, [r2, #4] + cmp r0, #1 + cmpne r0, #3 + bne _02311AE8 + ldrb r0, [r2, #0x28] + cmp r0, #0 + moveq r0, #0 + streqb r0, [r2, #8] + beq _02311AE8 + ldr r0, _02311AF0 ; =ov11_02324E08 + mov r1, #1 + strb r1, [r2, #8] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0x28] + ldr r0, [r0] + mov r1, #2 + str r1, [r0, #4] + bl ov11_022F47BC +_02311AE8: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311AF0: .word ov11_02324E08 + arm_func_end ov11_02311A90 + + arm_func_start ov11_02311AF4 +ov11_02311AF4: ; 0x02311AF4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #2 + bne _02311C9C + mov r0, #1 + strb r0, [r1, #8] + bl ov11_022F1798 + mov r4, r0 + ldr r1, _02311CA8 ; =ov11_02323B3C + mov r2, r4 + mov r0, #1 + bl Debug_Print + bl ov11_023118E8 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _02311CA4 ; =ov11_02324E08 + mvn r1, #0 + str r0, [r2, #4] + cmp r4, r1 + bne _02311B84 + ldr r1, _02311CAC ; =ov11_02323AE8 + bl GroundBg_Init + ldr r0, _02311CA4 ; =ov11_02324E08 + mvn r1, #0 + ldr r0, [r0, #4] + bl ov11_022EC27C + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + b _02311C80 +_02311B84: + bl ov11_022F17B4 + add r0, r0, #1 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02311C30 +_02311B98: ; jump table + b _02311C0C ; case 0 + b _02311C30 ; case 1 + b _02311C30 ; case 2 + b _02311C30 ; case 3 + b _02311C30 ; case 4 + b _02311C30 ; case 5 + b _02311BCC ; case 6 + b _02311BCC ; case 7 + b _02311BCC ; case 8 + b _02311BCC ; case 9 + b _02311BCC ; case 10 + b _02311BE8 ; case 11 + b _02311BE8 ; case 12 +_02311BCC: + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r1, _02311CB0 ; =ov11_02323B04 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + b _02311C50 +_02311BE8: + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r1, _02311CB4 ; =ov11_02323B20 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 + b _02311C50 +_02311C0C: + ldr r1, _02311CB8 ; =ov11_02323A98 + add r0, sp, #0 + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + ldr r1, _02311CBC ; =ov11_02323B60 + mov r2, r4 + str ip, [sp] + str r3, [sp, #4] + bl Debug_FatalError +_02311C30: + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r1, _02311CAC ; =ov11_02323AE8 + ldr r0, [r0, #4] + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + mov r0, #1 + bl ov11_023128C0 +_02311C50: + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r2, [r0] + ldr r1, [r0, #4] + add r0, r2, #0xc + bl ov11_022EFD5C + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r0, [r0, #4] + bl ov11_022F17E8 + ldr r0, _02311CA4 ; =ov11_02324E08 + ldr r0, [r0] + add r0, r0, #0xc + bl ov11_022F1EEC +_02311C80: + ldr r0, _02311CA4 ; =ov11_02324E08 + mov r3, #3 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #8] +_02311C9C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02311CA4: .word ov11_02324E08 +_02311CA8: .word ov11_02323B3C +_02311CAC: .word ov11_02323AE8 +_02311CB0: .word ov11_02323B04 +_02311CB4: .word ov11_02323B20 +_02311CB8: .word ov11_02323A98 +_02311CBC: .word ov11_02323B60 + arm_func_end ov11_02311AF4 + + arm_func_start ov11_02311CC0 +ov11_02311CC0: ; 0x02311CC0 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _02311D24 ; =ov11_02324E08 + ldr r0, [r2] + ldr r0, [r0, #4] + cmp r0, #3 + bne _02311D18 + ldr r0, _02311D28 ; =ov11_02323A98 + add r1, sp, #0 + ldr r3, [r0, #4] + ldr r0, [r0] + str r3, [sp, #4] + str r0, [sp] + ldr r0, [r2, #4] + bl ov11_022F1E90 + ldr r0, _02311D24 ; =ov11_02324E08 + ldr r0, [r0, #4] + bl ov11_022EF70C + ldr r0, _02311D24 ; =ov11_02324E08 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0] +_02311D18: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311D24: .word ov11_02324E08 +_02311D28: .word ov11_02323A98 + arm_func_end ov11_02311CC0 + + arm_func_start ov11_02311D2C +ov11_02311D2C: ; 0x02311D2C + stmdb sp!, {r3, lr} + ldr r0, _02311D68 ; =ov11_02324E08 + ldr r1, [r0] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + beq _02311D60 + bl ov11_022EFB70 + ldr r0, _02311D68 ; =ov11_02324E08 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0] +_02311D60: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311D68: .word ov11_02324E08 + arm_func_end ov11_02311D2C + + arm_func_start ov11_02311D6C +ov11_02311D6C: ; 0x02311D6C + ldr ip, _02311D78 ; =ov11_0230D270 + ldr r0, _02311D7C ; =ov11_02323B98 + bx ip + .align 2, 0 +_02311D78: .word ov11_0230D270 +_02311D7C: .word ov11_02323B98 + arm_func_end ov11_02311D6C + + arm_func_start ov11_02311D80 +ov11_02311D80: ; 0x02311D80 + stmdb sp!, {r4, lr} + mov r0, #0x30 + mov r1, #0xf + bl MemAlloc + ldr r1, _02311E28 ; =ov11_02324E10 + str r0, [r1, #4] + bl ov11_02311EA4 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r0, _02311E28 ; =ov11_02324E10 + mov r3, #1 + ldr r1, [r0, #4] + mov r2, #0 + strb r3, [r1, #0xa] + ldr r1, [r0, #4] + strb r3, [r1, #0xb] + ldr r1, [r0, #4] + strb r2, [r1, #0xc] + ldr r1, [r0, #4] + str r3, [r1, #4] + ldr r0, [r0, #4] + strb r2, [r0, #8] + bl ov11_022E8168 + movs r4, r0 + beq _02311E20 + ldr ip, _02311E28 ; =ov11_02324E10 + ldmia r4!, {r0, r1, r2, r3} + ldr ip, [ip, #4] + add lr, ip, #0x10 + mov ip, lr + stmia lr!, {r0, r1, r2, r3} + ldmia r4, {r0, r1, r2, r3} + stmia lr, {r0, r1, r2, r3} + mov r0, ip + mov r1, #0 + bl CreateJobSummary + ldr r0, _02311E28 ; =ov11_02324E10 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #8] +_02311E20: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02311E28: .word ov11_02324E10 + arm_func_end ov11_02311D80 + + arm_func_start ov11_02311E2C +ov11_02311E2C: ; 0x02311E2C + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _02311E58 + ldr r0, _02311EA0 ; =ov11_02324E10 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #7 + movne r0, #1 + strneb r0, [r1, #0xc] + movne r0, #0 + ldmneia sp!, {r3, pc} +_02311E58: + bl ov11_02311EA4 + ldr r0, _02311EA0 ; =ov11_02324E10 + mov r2, #7 + ldr r1, [r0, #4] + str r2, [r1, #4] + ldr r0, [r0, #4] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _02311E80 + bl sub_02069904 +_02311E80: + ldr r0, _02311EA0 ; =ov11_02324E10 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02311EA0 ; =ov11_02324E10 + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311EA0: .word ov11_02324E10 + arm_func_end ov11_02311E2C + + arm_func_start ov11_02311EA4 +ov11_02311EA4: ; 0x02311EA4 + stmdb sp!, {r3, lr} + ldr r1, _02311F1C ; =ov11_02324E10 + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #0 + strb r2, [r0] + ldr r2, [r1, #4] + sub r0, r3, #2 + str r3, [r2, #4] + ldr r1, [r1, #4] + strb r3, [r1, #9] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _02311F1C ; =ov11_02324E10 + ldr r0, [r0] + cmp r0, #0 + beq _02311F08 + bl GroundBg_FreeAll + ldr r0, _02311F1C ; =ov11_02324E10 + ldr r0, [r0] + bl MemFree + ldr r0, _02311F1C ; =ov11_02324E10 + mov r1, #0 + str r1, [r0] +_02311F08: + ldr r0, _02311F1C ; =ov11_02324E10 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #0xb] + ldmia sp!, {r3, pc} + .align 2, 0 +_02311F1C: .word ov11_02324E10 + arm_func_end ov11_02311EA4 + + arm_func_start ov11_02311F20 +ov11_02311F20: ; 0x02311F20 + ldr r0, _02311F3C ; =ov11_02324E10 + ldr r1, [r0, #4] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_02311F3C: .word ov11_02324E10 + arm_func_end ov11_02311F20 + + arm_func_start ov11_02311F40 +ov11_02311F40: ; 0x02311F40 + bx lr + arm_func_end ov11_02311F40 + + arm_func_start ov11_02311F44 +ov11_02311F44: ; 0x02311F44 + stmdb sp!, {r3, lr} + ldr r0, _023120FC ; =ov11_02324E10 + ldr r0, [r0, #4] + ldr r0, [r0, #4] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _023120F4 +_02311F60: ; jump table + b _02311F80 ; case 0 + b _02311FA8 ; case 1 + b _023120F4 ; case 2 + b _023120F4 ; case 3 + b _02312038 ; case 4 + b _02312064 ; case 5 + b _023120A8 ; case 6 + b _023120E4 ; case 7 +_02311F80: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _023120FC ; =ov11_02324E10 + mov r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _023120F4 + ldr r0, _023120FC ; =ov11_02324E10 + ldr r0, [r0, #4] + str r1, [r0, #4] +_02311FA8: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _023120FC ; =ov11_02324E10 + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _023120F4 + ldr r0, _023120FC ; =ov11_02324E10 + ldr r2, [r0, #4] + ldrb r1, [r2, #0xc] + cmp r1, #0 + beq _02312000 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _023120FC ; =ov11_02324E10 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #6 + strb r3, [r2, #9] + ldr r0, [r0, #4] + str r1, [r0, #4] + b _023120F4 +_02312000: + ldrb r1, [r2, #0xa] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #9] + beq _023120F4 + mov r1, #1 + strb r1, [r2, #9] + ldr r1, [r0, #4] + mov r2, #0 + strb r2, [r1, #0xa] + ldr r0, [r0, #4] + mov r1, #2 + str r1, [r0, #4] + b _023120F4 +_02312038: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _023120FC ; =ov11_02324E10 + movne r1, #1 + ldrne r0, [r0, #4] + strneb r1, [r0, #9] + bne _023120F4 + ldr r0, _023120FC ; =ov11_02324E10 + mov r1, #5 + ldr r0, [r0, #4] + str r1, [r0, #4] +_02312064: + ldr r0, _023120FC ; =ov11_02324E10 + ldr r1, [r0, #4] + ldrb r0, [r1, #0xc] + cmp r0, #0 + moveq r0, #0 + streqb r0, [r1, #9] + beq _023120F4 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _023120FC ; =ov11_02324E10 + mov r3, #0 + ldr r2, [r0, #4] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0, #4] + strb r1, [r0, #9] + b _023120F4 +_023120A8: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _023120F4 + ldr r0, _023120FC ; =ov11_02324E10 + ldr r1, [r0, #4] + ldrb r0, [r1, #8] + cmp r0, #0 + beq _023120D4 + mov r0, #0 + strb r0, [r1, #8] + bl sub_02069904 +_023120D4: + ldr r0, _023120FC ; =ov11_02324E10 + mov r1, #7 + ldr r0, [r0, #4] + str r1, [r0, #4] +_023120E4: + ldr r0, _023120FC ; =ov11_02324E10 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #9] +_023120F4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023120FC: .word ov11_02324E10 + arm_func_end ov11_02311F44 + + arm_func_start ov11_02312100 +ov11_02312100: ; 0x02312100 + stmdb sp!, {r3, lr} + ldr r0, _02312164 ; =ov11_02324E10 + ldr r3, [r0, #4] + ldr r0, [r3, #4] + cmp r0, #2 + ldmneia sp!, {r3, pc} + mov r2, #1 + mov r0, #0x2f4 + mov r1, #0xf + strb r2, [r3, #9] + bl MemAlloc + ldr r2, _02312164 ; =ov11_02324E10 + ldr r1, _02312168 ; =ov11_02323B7C + str r0, [r2] + bl GroundBg_Init + ldr r0, _02312164 ; =ov11_02324E10 + ldr r1, _0231216C ; =ov11_02323BBC + ldr r0, [r0] + mov r2, #0 + bl ov11_022EDE64 + ldr r0, _02312164 ; =ov11_02324E10 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02312164: .word ov11_02324E10 +_02312168: .word ov11_02323B7C +_0231216C: .word ov11_02323BBC + arm_func_end ov11_02312100 + + arm_func_start ov11_02312170 +ov11_02312170: ; 0x02312170 + stmdb sp!, {r3, lr} + ldr r0, _023121FC ; =ov11_02324E10 + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #3 + bne _023121C4 + mov r1, #1 + strb r1, [r2, #9] + ldr r0, [r0] + bl ov11_022EF70C + mov r0, #0x10 + bl ov11_022E9C98 + mov r0, #1 + bl ov11_022EF53C + ldr r0, _023121FC ; =ov11_02324E10 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #4 + strb r3, [r2] + ldr r0, [r0, #4] + str r1, [r0, #4] +_023121C4: + ldr r0, _023121FC ; =ov11_02324E10 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #0 + beq _023121E4 + sub r0, r0, #4 + cmp r0, #2 + bhi _023121F4 +_023121E4: + ldrb r0, [r1, #8] + cmp r0, #0 + beq _023121F4 + bl sub_020698B8 +_023121F4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023121FC: .word ov11_02324E10 + arm_func_end ov11_02312170 + + arm_func_start ov11_02312200 +ov11_02312200: ; 0x02312200 + stmdb sp!, {r3, lr} + ldr r0, _0231224C ; =ov11_02324E10 + ldr r1, [r0, #4] + ldrb r1, [r1] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #1 + mov r1, #2 + bl sub_02008F64 + ldr r0, _0231224C ; =ov11_02324E10 + ldr r0, [r0] + bl ov11_022EFB70 + ldr r0, _0231224C ; =ov11_02324E10 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0231224C: .word ov11_02324E10 + arm_func_end ov11_02312200 + + arm_func_start ov11_02312250 +ov11_02312250: ; 0x02312250 + ldr ip, _0231225C ; =ov11_0230D270 + ldr r0, _02312260 ; =ov11_02323BF8 + bx ip + .align 2, 0 +_0231225C: .word ov11_0230D270 +_02312260: .word ov11_02323BF8 + arm_func_end ov11_02312250 + + arm_func_start ov11_02312264 +ov11_02312264: ; 0x02312264 + stmdb sp!, {r3, lr} +#ifdef JAPAN + mov r0, #0xf4 +#else + mov r0, #0x1b8 +#endif + mov r1, #0xf + bl MemAlloc + ldr r1, _0231233C ; =ov11_02324E18 +#if defined(EUROPE) + mvn r2, #0 + str r0, [r1, #4] + strh r2, [r0] + bl GetLanguage + mov r2, r0, lsl #1 + ldr r0, _02312D14 ; =0x0232473C + ldr ip, _02312D18 ; =0x00000115 + ldr r1, _0231233C ; =ov11_02324E18 + ldrsh r2, [r0, r2] + ldr r0, [r1, #4] + rsb r3, ip, #0x114 + strh r2, [r0, #0x2c] + ldr r2, [r1, #4] + mov r0, #0 + strh ip, [r2, #0x2c] + ldr r2, [r1, #4] +#elif defined(JAPAN) + mvn r2, #0 + str r0, [r1, #4] + strh r2, [r0] + mov r0, #0 + mov r1, #0x46 + bl LoadScriptVariableValue + cmp r0, #1 + ldreq r0, _0231233C ; =ov11_02324E18 + ldreq r1, _023138CC ; =0x00000116 + ldrne r0, _0231233C ; =ov11_02324E18 + ldrne r1, _023138D0_JP ; =0x00000115 + ldr r0, [r0, #4] + mvn r3, #0 + strh r1, [r0, #0x2c] + ldr r1, _0231233C ; =ov11_02324E18 + mov r0, #0 + ldr r2, [r1, #4] +#else + mvn r3, #0 + str r0, [r1, #4] + strh r3, [r0] + ldr r0, [r1, #4] + rsb r2, r3, #0x114 + strh r2, [r0, #0x2c] + ldr r2, [r1, #4] + mov r0, #0 +#endif + strh r3, [r2, #2] + ldr r1, [r1, #4] + strh r3, [r1, #0x2e] + bl ov11_02312844 +#ifdef EUROPE + bl GetLanguage + ldr r1, _0231233C ; =0x02325958 + mov r2, r0, lsl #1 + ldr r0, [r1, #4] + ldr r1, _02312D1C ; =0x02324728 + add r0, r0, #0x30 + ldrsh r1, [r1, r2] + ldr r2, _02312340 ; =0xA0080000 +#else + ldr r0, _0231233C ; =ov11_02324E18 + ldr r2, _02312340 ; =0xA0080000 + ldr r0, [r0, #4] + mov r1, #0xa7 + add r0, r0, #0x30 +#endif + bl LoadObjectAnimData + ldr r0, _0231233C ; =ov11_02324E18 + mov r1, #8 + ldr r0, [r0, #4] + add r0, r0, #0x30 + bl ov11_022F4974 + ldr r0, _0231233C ; =ov11_02324E18 + mov r1, #0x800 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x30 + bl SetAnimDataFields2 +#ifndef JAPAN +#ifdef EUROPE + bl GetLanguage + mov r2, r0, lsl #1 +#endif + ldr r0, _0231233C ; =ov11_02324E18 + ldr r1, _02312344 ; =0x00000179 + ldr r0, [r0, #4] +#ifdef EUROPE + ldrsh r1, [r1, r2] +#endif + ldr r2, _02312340 ; =0xA0080000 + add r0, r0, #0xf4 + bl LoadObjectAnimData + ldr r0, _0231233C ; =ov11_02324E18 + mov r1, #0xa + ldr r0, [r0, #4] + add r0, r0, #0xf4 + bl ov11_022F4974 + ldr r0, _0231233C ; =ov11_02324E18 + mov r1, #0x800 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0xf4 + bl SetAnimDataFields2 +#endif + bl ov11_02312398 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0231233C: .word ov11_02324E18 +#if defined(EUROPE) +_02312D14: .word 0x0232473C +_02312D18: .word 0x00000115 +_02312D1C: .word 0x02324728 +_02312340: .word 0xA0080000 +_02312344: .word 0x02324732 +#elif defined(JAPAN) +_023138CC: .word 0x00000116 +_023138D0_JP: .word 0x00000115 +_02312340: .word 0xA0080000 +#else +_02312340: .word 0xA0080000 +_02312344: .word 0x00000179 +#endif + arm_func_end ov11_02312264 + + arm_func_start ov11_02312348 +ov11_02312348: ; 0x02312348 + stmdb sp!, {r3, lr} + bl ov11_02312398 + bl ov11_02312894 + ldr r0, _02312394 ; =ov11_02324E18 + ldr r0, [r0, #4] + add r0, r0, #0x30 + bl ov11_022F6EFC + ldr r0, _02312394 ; =ov11_02324E18 +#ifndef JAPAN + ldr r0, [r0, #4] + add r0, r0, #0xf4 + bl ov11_022F6EFC + ldr r0, _02312394 ; =ov11_02324E18 +#endif + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02312394 ; =ov11_02324E18 + mov r1, #0 + str r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02312394: .word ov11_02324E18 + arm_func_end ov11_02312348 + + arm_func_start ov11_02312398 +ov11_02312398: ; 0x02312398 + stmdb sp!, {r3, lr} + ldr r0, _02312414 ; =ov11_02324E18 + mov r3, #0 + ldr r1, [r0, #4] + mov r2, #1 + strb r3, [r1, #4] + ldr r1, [r0, #4] + str r2, [r1, #8] + ldr r0, [r0, #4] + strb r2, [r0, #0xc] + bl ov11_02312BF4 + mov r0, #0 + bl ov11_023128C0 + mov r0, #1 + bl ov11_022EAFF8 + mov r0, #1 + ldr r2, _02312418 ; =ov11_02323BE0 + mov r1, r0 + bl ov11_022EB0E4 + ldr r0, _02312414 ; =ov11_02324E18 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GroundBg_FreeAll + ldr r0, _02312414 ; =ov11_02324E18 + ldr r0, [r0] + bl MemFree + ldr r0, _02312414 ; =ov11_02324E18 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02312414: .word ov11_02324E18 +#ifdef JAPAN +_02312418: .word ov11_02323BD8 +#else +_02312418: .word ov11_02323BE0 +#endif + arm_func_end ov11_02312398 + + arm_func_start ov11_0231241C +ov11_0231241C: ; 0x0231241C + ldr r0, _02312438 ; =ov11_02324E18 + ldr r1, [r0, #4] + ldrb r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #0xc] + bx lr + .align 2, 0 +_02312438: .word ov11_02324E18 + arm_func_end ov11_0231241C + + arm_func_start ov11_0231243C +ov11_0231243C: ; 0x0231243C + cmp r0, #0 + beq _02312450 + cmp r0, #1 + beq _0231246C + bx lr +_02312450: + ldr r0, _02312488 ; =ov11_02324E18 + mov r2, #1 + ldr r3, [r0, #4] + strh r1, [r3, #0x2c] + ldr r0, [r0, #4] + strb r2, [r0, #0xc] + bx lr +_0231246C: + ldr r0, _02312488 ; =ov11_02324E18 + mov r2, #1 + ldr r3, [r0, #4] + strh r1, [r3, #0x2e] + ldr r0, [r0, #4] + strb r2, [r0, #0xc] + bx lr + .align 2, 0 +_02312488: .word ov11_02324E18 + arm_func_end ov11_0231243C + + arm_func_start ov11_0231248C +ov11_0231248C: ; 0x0231248C + stmdb sp!, {r3, lr} + ldr r0, _0231253C ; =ov11_02324E18 + ldr r2, [r0, #4] + ldr r0, [r2, #8] + cmp r0, #1 + cmpne r0, #4 + bne _02312534 + ldrsh r0, [r2, #0x2c] + mvn ip, #0 + cmp r0, ip + beq _023124F4 + mov r1, #1 + ldr r0, _0231253C ; =ov11_02324E18 + strb r1, [r2, #0xc] + ldr r3, [r0, #4] + mov r2, #2 + ldrsh r1, [r3, #0x2c] + strh r1, [r3] + ldr r1, [r0, #4] + strh ip, [r1, #0x2c] + ldr r1, [r0, #4] + str r2, [r1, #8] + ldr r0, [r0, #4] + ldrsh r0, [r0] + bl ov11_022F4734 + b _02312534 +_023124F4: + ldrsh r0, [r2, #0x2e] + cmp r0, ip + moveq r0, #0 + streqb r0, [r2, #0xc] + beq _02312534 + mov r1, #1 + strb r1, [r2, #0xc] + ldr r0, _0231253C ; =ov11_02324E18 + mov r1, #3 + ldr r3, [r0, #4] + ldrsh r2, [r3, #0x2e] + strh r2, [r3, #2] + ldr r2, [r0, #4] + strh ip, [r2, #0x2e] + ldr r0, [r0, #4] + str r1, [r0, #8] +_02312534: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0231253C: .word ov11_02324E18 + arm_func_end ov11_0231248C + + arm_func_start ov11_02312540 +ov11_02312540: ; 0x02312540 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r1, _02312710 ; =ov11_02324E18 + ldr r2, [r1, #4] + ldr r0, [r2, #8] + cmp r0, #2 + bne _023126D0 + mov r0, #1 + strb r0, [r2, #0xc] + ldr r2, [r1, #4] + ldr r1, _02312714 ; =ov11_02323C8C + ldrsh r5, [r2] + mov r2, r5 + bl Debug_Print + bl ov11_02312398 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _02312710 ; =ov11_02324E18 + mvn r1, #0 + str r0, [r2] + ldr r0, [r2, #4] + cmp r5, r1 + strh r5, [r0] + bne _023125D4 + ldr r0, [r2] + ldr r1, _02312718 ; =ov11_02323C38 + bl GroundBg_Init + ldr r0, _02312710 ; =ov11_02324E18 + mvn r1, #0 + ldr r0, [r0] + bl ov11_022EC27C + ldr r0, _02312710 ; =ov11_02324E18 + ldmia r0, {r1, r2} + add r0, r2, #0x10 + bl ov11_022EFD5C + b _023126B0 +_023125D4: + mov r0, #0xc + smulbb r1, r5, r0 + ldr r3, _0231271C ; =EVENTS + ldrsh r0, [r3, r1] + add r4, r3, r1 + add r0, r0, #1 + cmp r0, #0xa + addls pc, pc, r0, lsl #2 + b _02312664 +_023125F8: ; jump table + b _0231263C ; case 0 + b _02312664 ; case 1 + b _02312664 ; case 2 + b _02312664 ; case 3 + b _02312664 ; case 4 + b _02312664 ; case 5 + b _02312624 ; case 6 + b _02312624 ; case 7 + b _02312624 ; case 8 + b _02312624 ; case 9 + b _02312624 ; case 10 +_02312624: + ldr r0, [r2] + ldr r1, _02312720 ; =ov11_02323C54 + bl GroundBg_Init + mov r0, #1 + bl ov11_022EF53C + b _0231267C +_0231263C: + ldr r0, _02312724 ; =ov11_02323BD0 + ldrsh r3, [r4] +#ifdef JAPAN + ldr ip, [r0, #4] + ldr lr, [r0] +#else + ldr ip, [r0, #0x24] + ldr lr, [r0, #0x20] +#endif + ldr r1, _02312728 ; =ov11_02323CAC + add r0, sp, #0 + mov r2, r5 + str lr, [sp] + str ip, [sp, #4] + bl Debug_FatalError +_02312664: + ldr r0, _02312710 ; =ov11_02324E18 + ldr r1, _02312718 ; =ov11_02323C38 + ldr r0, [r0] + bl GroundBg_Init + mov r0, #1 + bl ov11_023128C0 +_0231267C: + ldr r0, _02312710 ; =ov11_02324E18 + ldrsh r1, [r4, #4] + ldr r0, [r0] + bl ov11_022EC27C + ldr r0, _02312710 ; =ov11_02324E18 + ldmia r0, {r1, r2} + add r0, r2, #0x10 + bl ov11_022EFD5C + ldr r0, _02312710 ; =ov11_02324E18 + ldr r2, _0231272C ; =ov11_02323BD0 + ldr r0, [r0] + mov r1, #0 + bl ov11_022EF2D4 +_023126B0: + ldr r0, _02312710 ; =ov11_02324E18 + mov r3, #4 + ldr r2, [r0, #4] + mov r1, #0 + str r3, [r2, #8] + ldr r0, [r0, #4] + strb r1, [r0, #0xc] + b _02312708 +_023126D0: + cmp r0, #3 + bne _02312708 + mov r0, #1 + strb r0, [r2, #0xc] + ldr r0, [r1, #4] + ldrsh r0, [r0, #2] + bl ov11_0231297C + ldr r0, _02312710 ; =ov11_02324E18 + mov r3, #4 + ldr r2, [r0, #4] + mov r1, #0 + str r3, [r2, #8] + ldr r0, [r0, #4] + strb r1, [r0, #0xc] +_02312708: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02312710: .word ov11_02324E18 +_02312714: .word ov11_02323C8C +_02312718: .word ov11_02323C38 +_0231271C: .word EVENTS +_02312720: .word ov11_02323C54 +_02312724: .word ov11_02323BD0 +_02312728: .word ov11_02323CAC +#ifdef JAPAN +_0231272C: .word ov11_02323BE0 +#else +_0231272C: .word ov11_02323BD0 +#endif + arm_func_end ov11_02312540 + + arm_func_start ov11_02312730 +ov11_02312730: ; 0x02312730 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _023127F8 ; =ov11_02324E18 + ldr r0, [r0, #4] + ldr r0, [r0, #8] + cmp r0, #4 + bne _023127E8 + add r1, sp, #0 + mov r0, #1 + bl ov11_022EB3C8 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp] + streq r0, [sp, #4] + ldr r0, _023127F8 ; =ov11_02324E18 + ldr r1, _023127FC ; =ov11_02323BE8 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x30 + bl AnimRelatedFunction__022F6F14 + ldr r0, _023127F8 ; =ov11_02324E18 +#ifndef JAPAN + ldr r1, _02312800 ; =ov11_02323BD8 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0xf4 + bl AnimRelatedFunction__022F6F14 + ldr r0, _023127F8 ; =ov11_02324E18 +#endif + add r1, sp, #0 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x10 + bl ov11_022F042C + cmp r0, #0 + beq _023127CC + ldr r0, _023127F8 ; =ov11_02324E18 + add r2, sp, #0 + ldr r0, [r0] + mov r1, #0 + bl ov11_022EF2D4 +_023127CC: + ldr r0, _023127F8 ; =ov11_02324E18 + ldr r0, [r0] + bl ov11_022EF70C + ldr r0, _023127F8 ; =ov11_02324E18 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #4] +_023127E8: + bl ov11_02312A74 + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_023127F8: .word ov11_02324E18 +_023127FC: .word ov11_02323BE8 +#ifndef JAPAN +_02312800: .word ov11_02323BD8 +#endif + arm_func_end ov11_02312730 + + arm_func_start ov11_02312804 +ov11_02312804: ; 0x02312804 + stmdb sp!, {r3, lr} + ldr r0, _02312840 ; =ov11_02324E18 + ldr r1, [r0, #4] + ldrb r1, [r1, #4] + cmp r1, #0 + ldrne r0, [r0] + cmpne r0, #0 + beq _02312838 + bl ov11_022EFB70 + ldr r0, _02312840 ; =ov11_02324E18 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #4] +_02312838: + bl ov11_02312B18 + ldmia sp!, {r3, pc} + .align 2, 0 +_02312840: .word ov11_02324E18 + arm_func_end ov11_02312804 + + arm_func_start ov11_02312844 +ov11_02312844: ; 0x02312844 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x34 + mov r1, #0xf + bl MemAlloc + ldr r1, _02312890 ; =ov11_02324E20 + mov ip, #0 + str r0, [r1, #4] + strb ip, [r0, #4] + ldr r2, [r1, #4] + mov r0, r4 + strb ip, [r2, #3] + ldr r3, [r1, #4] + sub r2, ip, #1 + strb ip, [r3, #2] + ldr r1, [r1, #4] + strh r2, [r1] + bl ov11_023128C0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02312890: .word ov11_02324E20 + arm_func_end ov11_02312844 + + arm_func_start ov11_02312894 +ov11_02312894: ; 0x02312894 + stmdb sp!, {r3, lr} + mov r0, #0 + bl ov11_023128C0 + ldr r0, _023128BC ; =ov11_02324E20 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _023128BC ; =ov11_02324E20 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_023128BC: .word ov11_02324E20 + arm_func_end ov11_02312894 + + arm_func_start ov11_023128C0 +ov11_023128C0: ; 0x023128C0 + stmdb sp!, {r4, lr} + ldr r1, _02312974 ; =ov11_02324E20 + mov r3, #0 + ldr r2, [r1, #4] + mov r4, r0 + strb r3, [r2, #4] + ldr r0, [r1, #4] + sub r2, r3, #1 + strb r3, [r0, #3] + ldr r0, [r1, #4] + strb r4, [r0, #2] + ldr r0, [r1, #4] + strh r2, [r0] + ldr r0, [r1] + cmp r0, #0 + beq _0231291C + bl GroundBg_FreeAll + ldr r0, _02312974 ; =ov11_02324E20 + ldr r0, [r0] + bl MemFree + ldr r0, _02312974 ; =ov11_02324E20 + mov r1, #0 + str r1, [r0] +_0231291C: + cmp r4, #0 + ldmeqia sp!, {r4, pc} + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _02312974 ; =ov11_02324E20 + ldr r1, _02312978 ; =ov11_02323CD0 + str r0, [r2] + bl GroundBg_Init + ldr r0, _02312974 ; =ov11_02324E20 + mvn r1, #0 + ldr r0, [r0] + bl ov11_022EC27C + ldr r0, _02312974 ; =ov11_02324E20 + ldmia r0, {r1, r2} + add r0, r2, #0x18 + bl ov11_022EFD5C + ldr r0, _02312974 ; =ov11_02324E20 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #3] + ldmia sp!, {r4, pc} + .align 2, 0 +_02312974: .word ov11_02324E20 +_02312978: .word ov11_02323CD0 + arm_func_end ov11_023128C0 + + arm_func_start ov11_0231297C +ov11_0231297C: ; 0x0231297C + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _02312A68 ; =ov11_02324E20 + mov r4, r0 + ldr r0, [r1, #4] + ldr r1, _02312A6C ; =ov11_02323CEC + ldrb r3, [r0, #2] + mov r2, r4 + mov r0, #1 + bl Debug_Print + ldr r1, _02312A68 ; =ov11_02324E20 + mov r2, #0 + ldr r0, [r1, #4] + strb r2, [r0, #4] + ldr r0, [r1, #4] + strb r2, [r0, #3] + ldr r0, [r1, #4] + strh r4, [r0] + ldr r0, [r1, #4] + ldrb r0, [r0, #2] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + sub r0, r2, #1 + cmp r4, r0 + bne _023129FC + ldr r0, [r1] + sub r1, r2, #1 + bl ov11_022EC27C + ldr r0, _02312A68 ; =ov11_02324E20 + ldmia r0, {r1, r2} + add r0, r2, #0x18 + bl ov11_022EFD5C + b _02312A54 +_023129FC: + ldr r5, _02312A70 ; =GROUND_WEATHER_TABLE + ldr r0, [r1] + add r1, r5, r4, lsl #2 + ldrsh r1, [r1, #2] + mov r4, r4, lsl #2 + bl ov11_022EC27C + ldr r0, _02312A68 ; =ov11_02324E20 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #8] + ldr r1, [r0, #4] + str r2, [r1, #0xc] + ldr r1, [r0, #4] + str r2, [r1, #0x10] + ldr r1, [r0, #4] + str r2, [r1, #0x14] + ldrsh r1, [r5, r4] + cmp r1, #1 + bne _02312A54 + ldr r0, [r0] + mov r1, #2 + bl ov11_022EE620 +_02312A54: + ldr r0, _02312A68 ; =ov11_02324E20 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #3] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02312A68: .word ov11_02324E20 +_02312A6C: .word ov11_02323CEC +_02312A70: .word GROUND_WEATHER_TABLE + arm_func_end ov11_0231297C + + arm_func_start ov11_02312A74 +ov11_02312A74: ; 0x02312A74 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _02312B0C ; =ov11_02324E20 + ldr r1, [r0, #4] + ldrb r0, [r1, #3] + cmp r0, #0 + beq _02312B04 + ldrsh r1, [r1] + mvn r0, #0 + cmp r1, r0 + beq _02312AD4 + ldr r0, _02312B10 ; =GROUND_WEATHER_TABLE + mov r1, r1, lsl #2 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _02312AD4 + add r0, sp, #0 + bl ov11_022F1E70 + ldr r0, _02312B0C ; =ov11_02324E20 + add r2, sp, #0 + ldr r0, [r0] + mov r1, #0 + bl ov11_022EF2D4 + b _02312AE8 +_02312AD4: + ldr r0, _02312B0C ; =ov11_02324E20 + ldr r2, _02312B14 ; =ov11_02323CC8 + ldr r0, [r0] + mov r1, #0 + bl ov11_022EF2D4 +_02312AE8: + ldr r0, _02312B0C ; =ov11_02324E20 + ldr r0, [r0] + bl ov11_022EF70C + ldr r0, _02312B0C ; =ov11_02324E20 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #4] +_02312B04: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02312B0C: .word ov11_02324E20 +_02312B10: .word GROUND_WEATHER_TABLE +_02312B14: .word ov11_02323CC8 + arm_func_end ov11_02312A74 + + arm_func_start ov11_02312B18 +ov11_02312B18: ; 0x02312B18 + stmdb sp!, {r3, lr} + ldr r0, _02312B3C ; =ov11_02324E20 + ldr r1, [r0, #4] + ldrb r1, [r1, #4] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r0] + bl ov11_022EFB70 + ldmia sp!, {r3, pc} + .align 2, 0 +_02312B3C: .word ov11_02324E20 + arm_func_end ov11_02312B18 + + arm_func_start ov11_02312B40 +ov11_02312B40: ; 0x02312B40 + stmdb sp!, {r3, lr} + ldr r0, _02312BC4 ; =0x00000584 + mov r1, #1 + bl MemAlloc + ldr r2, _02312BC8 ; =ov11_02324E28 + mov r1, #0 + str r0, [r2, #4] + str r1, [r0] + ldr r0, [r2, #4] + strh r1, [r0, #4] + ldr r0, [r2, #4] + strh r1, [r0, #6] + ldr r0, [r2, #4] + add r0, r0, #0x500 + strh r1, [r0, #0x78] + ldr r0, [r2, #4] + strb r1, [r0, #0x10] + ldr r0, [r2, #4] + strb r1, [r0, #0x570] + ldr r0, [r2, #4] + strb r1, [r0, #0x571] + ldr r0, [r2, #4] + strb r1, [r0, #0x572] + ldr r0, [r2, #4] + strb r1, [r0, #0x573] + ldr r0, [r2, #4] + strb r1, [r0, #0x574] + ldr r0, [r2, #4] + strb r1, [r0, #0x575] + ldr r0, [r2, #4] + strb r1, [r0, #0x576] + bl ov11_02312BF4 + ldmia sp!, {r3, pc} + .align 2, 0 +_02312BC4: .word 0x00000584 +_02312BC8: .word ov11_02324E28 + arm_func_end ov11_02312B40 + + arm_func_start ov11_02312BCC +ov11_02312BCC: ; 0x02312BCC + stmdb sp!, {r3, lr} + bl ov11_02312BF4 + ldr r0, _02312BF0 ; =ov11_02324E28 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02312BF0 ; =ov11_02324E28 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02312BF0: .word ov11_02324E28 + arm_func_end ov11_02312BCC + + arm_func_start ov11_02312BF4 +ov11_02312BF4: ; 0x02312BF4 + stmdb sp!, {r3, lr} + bl ov11_02313798 + ldr r0, _02312C54 ; =ov11_02324E28 + ldr r0, [r0, #4] + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _02312C24 + bl ov11_023146F8 + ldr r0, _02312C54 ; =ov11_02324E28 + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #0x10] +_02312C24: + ldr r0, _02312C54 ; =ov11_02324E28 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1] + ldr r1, [r0, #4] + strh r2, [r1, #4] + ldr r1, [r0, #4] + strh r2, [r1, #6] + ldr r0, [r0, #4] + add r0, r0, #0x500 + strh r2, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_02312C54: .word ov11_02324E28 + arm_func_end ov11_02312BF4 + + arm_func_start ov11_02312C58 +ov11_02312C58: ; 0x02312C58 + ldr r0, _02312C8C ; =ov11_02324E28 + ldr r1, [r0, #4] + add r0, r1, #0x500 + ldrsh r0, [r0, #0x78] + cmp r0, #0 + movne r0, #1 + bxne lr + ldrsh r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02312C8C: .word ov11_02324E28 + arm_func_end ov11_02312C58 + + arm_func_start ov11_02312C90 +ov11_02312C90: ; 0x02312C90 + ldr r0, _02312CD4 ; =ov11_02324E28 + ldr r1, [r0, #4] + add r0, r1, #0x500 + ldrsh r0, [r0, #0x78] + cmp r0, #0 + movne r0, #1 + bxne lr + ldrsh r0, [r1, #4] + cmp r0, #0 + beq _02312CCC + ldr r0, [r1] + sub r0, r0, #1 + cmp r0, #1 + movls r0, #1 + bxls lr +_02312CCC: + mov r0, #0 + bx lr + .align 2, 0 +_02312CD4: .word ov11_02324E28 + arm_func_end ov11_02312C90 + + arm_func_start ov11_02312CD8 +ov11_02312CD8: ; 0x02312CD8 + ldr ip, _02312CFC ; =ov11_02324E28 + ldr r3, [ip, #4] + add r3, r3, #0x500 + strh r0, [r3, #0x78] + ldr r0, [ip, #4] + str r1, [r0, #0x57c] + ldr r0, [ip, #4] + str r2, [r0, #0x580] + bx lr + .align 2, 0 +_02312CFC: .word ov11_02324E28 + arm_func_end ov11_02312CD8 + + arm_func_start ov11_02312D00 +ov11_02312D00: ; 0x02312D00 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _023130A8 ; =ov11_02324E28 + ldr r2, [r1, #4] + ldr r0, [r2] + cmp r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r0, #2 + beq _02312D2C + cmp r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + b _02312F9C +_02312D2C: + ldrsh r0, [r2, #4] + cmp r0, #0x10 + bgt _02312D88 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02312D44: ; jump table + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 0 + b _02312DA4 ; case 1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 3 + b _02312E8C ; case 4 + b _02312E8C ; case 5 + b _02312E8C ; case 6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 7 + b _02312E70 ; case 8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 9 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 11 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 12 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 13 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 14 + b _02312E70 ; case 15 + b _02312F24 ; case 16 +_02312D88: + cmp r0, #0x17 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r0, #0x15 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmpne r0, #0x17 + beq _02312E8C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02312DA4: + mov r0, #0x3d40 + mov r1, #1 + bl MemAlloc + ldr r2, _023130A8 ; =ov11_02324E28 + mov r1, #0x800 + str r0, [r2] + ldr r0, [r2, #4] + mov r2, #0 + add r0, r0, #0x324 + bl SetAnimDataFields2 + ldr r0, _023130A8 ; =ov11_02324E28 + mov r1, #0x800 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x324 + bl SetAnimDataFields2 + ldr r0, _023130A8 ; =ov11_02324E28 + mov r1, #0x800 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0xac + add r0, r0, #0x400 + bl SetAnimDataFields2 + mov r4, #0 + ldr r7, _023130A8 ; =ov11_02324E28 + mov sb, #0x800 + mov r8, r4 + mov r6, #0xc4 +_02312E14: + mul r5, r4, r6 + ldmia r7, {r0, r1} + add r0, r0, r5 + add r1, r1, #0x324 + bl InitAnimDataFromOtherAnimDataVeneer + ldr r0, [r7] + mov r1, sb + mov r2, r8 + add r0, r0, r5 + bl SetAnimDataFields2 + add r4, r4, #1 + cmp r4, #0x50 + blt _02312E14 + ldr r0, _023130A8 ; =ov11_02324E28 + mov r2, #0 + ldr r3, [r0, #4] + ldrsh r1, [r3, #4] + strh r1, [r3, #6] + ldr r1, [r0, #4] + strh r2, [r1, #4] + ldr r0, [r0, #4] + str r2, [r0] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02312E70: + strh r0, [r2, #6] + ldr r0, [r1, #4] + mov r2, #0 + strh r2, [r0, #4] + ldr r0, [r1, #4] + str r2, [r0] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02312E8C: + mov r0, #0x3d40 + mov r1, #1 + bl MemAlloc + ldr r2, _023130A8 ; =ov11_02324E28 + mov r1, #0x800 + str r0, [r2] + ldr r0, [r2, #4] + mov r2, #0 + add r0, r0, #0x324 + bl SetAnimDataFields2 + mov r4, #0 + ldr r7, _023130A8 ; =ov11_02324E28 + mov sb, #0x800 + mov r8, r4 + mov r6, #0xc4 +_02312EC8: + mul r5, r4, r6 + ldmia r7, {r0, r1} + add r0, r0, r5 + add r1, r1, #0x324 + bl InitAnimDataFromOtherAnimDataVeneer + ldr r0, [r7] + mov r1, sb + mov r2, r8 + add r0, r0, r5 + bl SetAnimDataFields2 + add r4, r4, #1 + cmp r4, #0x50 + blt _02312EC8 + ldr r0, _023130A8 ; =ov11_02324E28 + mov r2, #0 + ldr r3, [r0, #4] + ldrsh r1, [r3, #4] + strh r1, [r3, #6] + ldr r1, [r0, #4] + strh r2, [r1, #4] + ldr r0, [r0, #4] + str r2, [r0] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02312F24: + mov r0, #0x3d40 + mov r1, #1 + bl MemAlloc + ldr r2, _023130A8 ; =ov11_02324E28 + mov r1, #0x800 + str r0, [r2] + ldr r0, [r2, #4] + mov r2, #0 + add r0, r0, #0x324 + bl SetAnimDataFields2 + ldr r5, _023130A8 ; =ov11_02324E28 + mov r6, #0 + mov r4, #0xc4 +_02312F58: + ldmia r5, {r0, r1} + mla r0, r6, r4, r0 + add r1, r1, #0x324 + bl InitAnimDataFromOtherAnimDataVeneer + add r6, r6, #1 + cmp r6, #0x50 + blt _02312F58 + ldr r0, _023130A8 ; =ov11_02324E28 + mov r2, #0 + ldr r3, [r0, #4] + ldrsh r1, [r3, #4] + strh r1, [r3, #6] + ldr r1, [r0, #4] + strh r2, [r1, #4] + ldr r0, [r0, #4] + str r2, [r0] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02312F9C: + add r0, r2, #0x500 + ldrsh r0, [r0, #0x78] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + strh r0, [r2, #4] + ldr r3, [r1, #4] + mov r2, #0 + ldr r0, [r3, #0x57c] + str r0, [r3, #8] + ldr r3, [r1, #4] + ldr r0, [r3, #0x580] + str r0, [r3, #0xc] + ldr r0, [r1, #4] + add r0, r0, #0x500 + strh r2, [r0, #0x78] + ldr r1, [r1, #4] + ldrsh r0, [r1, #4] + cmp r0, #0x17 + addls pc, pc, r0, lsl #2 + b _0231309C +_02312FEC: ; jump table + b _0231309C ; case 0 + b _0231304C ; case 1 + b _0231308C ; case 2 + b _02313070 ; case 3 + b _02313058 ; case 4 + b _02313058 ; case 5 + b _02313058 ; case 6 + b _0231309C ; case 7 + b _02313058 ; case 8 + b _0231309C ; case 9 + b _0231309C ; case 10 + b _0231309C ; case 11 + b _0231309C ; case 12 + b _0231309C ; case 13 + b _0231309C ; case 14 + b _0231304C ; case 15 + b _02313064 ; case 16 + b _0231309C ; case 17 + b _0231309C ; case 18 + b _0231309C ; case 19 + b _0231309C ; case 20 + b _02313058 ; case 21 + b _0231309C ; case 22 + b _02313058 ; case 23 +_0231304C: + mov r0, #1 + str r0, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02313058: + mov r0, #1 + str r0, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02313064: + mov r0, #1 + str r0, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02313070: + bl ov11_023146F8 + bl ov11_02313798 + ldr r0, _023130A8 ; =ov11_02324E28 + mov r1, #0 + ldr r0, [r0, #4] + strh r1, [r0, #6] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0231308C: + add r0, r1, #0x324 + bl ov11_022F6EFC + bl ov11_02313798 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0231309C: + mov r0, #0 + strh r0, [r1, #4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023130A8: .word ov11_02324E28 + arm_func_end ov11_02312D00 + + arm_func_start ov11_023130AC +ov11_023130AC: ; 0x023130AC +#ifdef EUROPE +#define OV11_023130AC_LOAD_OFFSET 0x10 +#else +#define OV11_023130AC_LOAD_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, lr} + bl GetHero + mov r5, r0 + bl GetPartner + ldr r1, _02313464 ; =ov11_02324E28 + mov r4, r0 + ldr ip, [r1, #4] + ldr r0, [ip] + cmp r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrsh r0, [ip, #4] + cmp r0, #0x10 + bgt _02313130 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + ldmia sp!, {r3, r4, r5, pc} +_023130EC: ; jump table + ldmia sp!, {r3, r4, r5, pc} ; case 0 + b _02313150 ; case 1 + ldmia sp!, {r3, r4, r5, pc} ; case 2 + ldmia sp!, {r3, r4, r5, pc} ; case 3 + b _02313404 ; case 4 + b _02313404 ; case 5 + b _023133D4 ; case 6 + ldmia sp!, {r3, r4, r5, pc} ; case 7 + b _023132EC ; case 8 + ldmia sp!, {r3, r4, r5, pc} ; case 9 + ldmia sp!, {r3, r4, r5, pc} ; case 10 + ldmia sp!, {r3, r4, r5, pc} ; case 11 + ldmia sp!, {r3, r4, r5, pc} ; case 12 + ldmia sp!, {r3, r4, r5, pc} ; case 13 + ldmia sp!, {r3, r4, r5, pc} ; case 14 + b _023132A4 ; case 15 + b _02313434 ; case 16 +_02313130: + cmp r0, #0x17 + ldmgtia sp!, {r3, r4, r5, pc} + cmp r0, #0x15 + ldmltia sp!, {r3, r4, r5, pc} + beq _02313404 + cmp r0, #0x17 + beq _023133D4 + ldmia sp!, {r3, r4, r5, pc} +_02313150: + ldr r2, _02313468 ; =0x88080000 + add r0, ip, #0x324 + mov r1, #0xcd + OV11_023130AC_LOAD_OFFSET + bl LoadObjectAnimData + ldr r0, _02313464 ; =ov11_02324E28 + ldr r2, _02313468 ; =0x88080000 + ldr r0, [r0, #4] + mov r1, #0xa + add r0, r0, #0x3e8 + bl ov11_022F6FE0 + ldr r0, _02313464 ; =ov11_02324E28 + ldr r2, _0231346C ; =0x08080000 + ldr r0, [r0, #4] + mov r1, #0xad + OV11_023130AC_LOAD_OFFSET + add r0, r0, #0xac + add r0, r0, #0x400 + bl LoadObjectAnimData + ldr r0, _02313464 ; =ov11_02324E28 + ldrsh r1, [r5, #4] + ldr r0, [r0, #4] + mov r2, #0x8100000 + add r0, r0, #0x14 + bl ov11_022F5BBC + ldr r0, _02313464 ; =ov11_02324E28 + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + mov r2, #0x8100000 + add r0, r0, #0xd8 + bl ov11_022F5BBC + ldr r0, _02313464 ; =ov11_02324E28 + ldrsh r1, [r5, #4] + ldr r0, [r0, #4] + mov r2, #0x8100000 + add r0, r0, #0x19c + bl ov11_022F5BBC + ldr r0, _02313464 ; =ov11_02324E28 + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + mov r2, #0x8100000 + add r0, r0, #0x260 + bl ov11_022F5BBC + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313470 ; =0x00000807 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x14 + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313470 ; =0x00000807 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0xd8 + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313470 ; =0x00000807 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x19c + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313470 ; =0x00000807 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x260 + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + mov r3, #1 + ldr r1, [r0, #4] + strb r3, [r1, #0x570] + ldr r1, [r0, #4] + strb r3, [r1, #0x571] + ldr r1, [r0, #4] + strb r3, [r1, #0x572] + ldr r1, [r0, #4] + strb r3, [r1, #0x573] + ldr r1, [r0, #4] + strb r3, [r1, #0x574] + ldr r2, [r0, #4] + mov r1, #2 + strb r3, [r2, #0x575] + ldr r2, [r0, #4] + strb r3, [r2, #0x576] + ldr r0, [r0, #4] + str r1, [r0] + ldmia sp!, {r3, r4, r5, pc} +_023132A4: + mov r3, #0 + strb r3, [ip, #0x570] + ldr r0, [r1, #4] + mov r2, #2 + strb r3, [r0, #0x571] + ldr r0, [r1, #4] + strb r3, [r0, #0x572] + ldr r0, [r1, #4] + strb r3, [r0, #0x573] + ldr r0, [r1, #4] + strb r3, [r0, #0x574] + ldr r0, [r1, #4] + strb r3, [r0, #0x575] + ldr r0, [r1, #4] + strb r3, [r0, #0x576] + ldr r0, [r1, #4] + str r2, [r0] + ldmia sp!, {r3, r4, r5, pc} +_023132EC: + mov r0, #6 + bl ov11_02314670 + ldr r0, _02313464 ; =ov11_02324E28 + mov r2, #1 + ldr r1, [r0, #4] + strb r2, [r1, #0x10] + ldr r1, [r0, #4] + ldr r0, [r1, #0x57c] + ldr r1, [r1, #0x580] + bl ov11_023159CC + ldr r0, _02313464 ; =ov11_02324E28 + ldrsh r1, [r5, #4] + ldr r0, [r0, #4] + ldr r2, _02313474 ; =0x8C100000 + add r0, r0, #0x14 + bl ov11_022F5BBC + ldr r0, _02313464 ; =ov11_02324E28 + ldrsh r1, [r4, #4] + ldr r0, [r0, #4] + ldr r2, _02313474 ; =0x8C100000 + add r0, r0, #0xd8 + bl ov11_022F5BBC + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313478 ; =0x00001013 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x14 + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313478 ; =0x00001013 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0xd8 + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + ldr r2, _0231347C ; =0x8C080000 + ldr r0, [r0, #4] + mov r1, #0xd0 + OV11_023130AC_LOAD_OFFSET + add r0, r0, #0x324 + bl LoadObjectAnimData + ldr r0, _02313464 ; =ov11_02324E28 + ldr r1, _02313480 ; =0x00000801 + ldr r0, [r0, #4] + mov r2, #0 + add r0, r0, #0x324 + bl SetAnimDataFields2 + ldr r0, _02313464 ; =ov11_02324E28 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #2 + strb r3, [r2, #0x570] + ldr r2, [r0, #4] + strb r3, [r2, #0x573] + ldr r2, [r0, #4] + strb r3, [r2, #0x574] + ldr r0, [r0, #4] + str r1, [r0] + ldmia sp!, {r3, r4, r5, pc} +_023133D4: + ldr r2, _02313468 ; =0x88080000 + add r0, ip, #0x324 + mov r1, #0xb6 + OV11_023130AC_LOAD_OFFSET + bl LoadObjectAnimData + ldr r0, _02313464 ; =ov11_02324E28 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #2 + strb r3, [r2, #0x570] + ldr r0, [r0, #4] + str r1, [r0] + ldmia sp!, {r3, r4, r5, pc} +_02313404: + ldr r2, _02313468 ; =0x88080000 + add r0, ip, #0x324 + mov r1, #0xbe + OV11_023130AC_LOAD_OFFSET + bl LoadObjectAnimData + ldr r0, _02313464 ; =ov11_02324E28 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #2 + strb r3, [r2, #0x570] + ldr r0, [r0, #4] + str r1, [r0] + ldmia sp!, {r3, r4, r5, pc} +_02313434: + ldr r1, _02313484 ; =0x00000223 + ldr r2, _02313468 ; =0x88080000 + add r0, ip, #0x324 + bl LoadObjectAnimData + ldr r0, _02313464 ; =ov11_02324E28 + mov r3, #1 + ldr r2, [r0, #4] + mov r1, #2 + strb r3, [r2, #0x570] + ldr r0, [r0, #4] + str r1, [r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02313464: .word ov11_02324E28 +_02313468: .word 0x88080000 +_0231346C: .word 0x08080000 +_02313470: .word 0x00000807 +_02313474: .word 0x8C100000 +_02313478: .word 0x00001013 +_0231347C: .word 0x8C080000 +_02313480: .word 0x00000801 +#ifdef EUROPE +_02313484: .word 0x00000231 +#else +_02313484: .word 0x00000223 +#endif + arm_func_end ov11_023130AC + + arm_func_start ov11_02313488 +ov11_02313488: ; 0x02313488 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + ldr r0, _0231378C ; =ov11_02323D0C + ldr r1, [r0, #0x1c] + ldr r0, [r0, #0x18] + str r1, [sp, #4] + str r0, [sp] + bl GetHero + mov r6, r0 + bl GetPartner + ldr r1, _02313790 ; =ov11_02324E28 + mov r5, r0 + ldr r0, [r1, #4] + ldrsh r0, [r0, #6] + cmp r0, #0x10 + bgt _02313518 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _02313784 +_023134D4: ; jump table + b _02313784 ; case 0 + b _02313534 ; case 1 + b _02313784 ; case 2 + b _02313784 ; case 3 + b _023135DC ; case 4 + b _023135DC ; case 5 + b _023135DC ; case 6 + b _02313784 ; case 7 + b _0231353C ; case 8 + b _02313784 ; case 9 + b _02313784 ; case 10 + b _02313784 ; case 11 + b _02313784 ; case 12 + b _02313784 ; case 13 + b _02313784 ; case 14 + b _02313534 ; case 15 + b _023136AC ; case 16 +_02313518: + cmp r0, #0x17 + bgt _02313784 + cmp r0, #0x15 + blt _02313784 + cmpne r0, #0x17 + beq _023135DC + b _02313784 +_02313534: + bl SentryUpdateDisplay + b _02313784 +_0231353C: + bl ov11_0231474C + cmp r0, #0 + beq _02313784 + mov r0, #0 + bl ov11_0231598C + ldr r3, [r0, #8] + mov r2, #0xd800 + add r2, r2, r3, lsl #8 + ldr r4, [r0, #4] + ldr r1, _02313790 ; =ov11_02324E28 + mov r3, #0x7000 + str r3, [sp] + str r2, [sp, #4] + ldr r0, [r1, #4] + ldrsh r1, [r6, #4] + add r2, sp, #0 + add r0, r0, #0x14 + mov r3, #0 + bl ov11_022F5C94 + ldr r0, _02313790 ; =ov11_02324E28 + mov r1, #0x9000 + str r1, [sp] + ldr r0, [r0, #4] + ldrsh r1, [r5, #4] + add r2, sp, #0 + add r0, r0, #0xd8 + mov r3, #0 + bl ov11_022F5C94 + ldr r0, _02313790 ; =ov11_02324E28 + mov r1, #0x14000 + add r2, r1, r4, lsl #8 + ldr r0, [r0, #4] + mov r1, #0x8000 + str r1, [sp] + str r2, [sp, #4] + add r1, sp, #0 + add r0, r0, #0x324 + mov r2, #0 + bl AnimRelatedFunction__022F6F14 + b _02313784 +_023135DC: + bl ov11_02313DC4 + cmp r0, #0 + beq _02313784 + mov sb, #0 + mov r6, #0xc4 + ldr r7, _02313790 ; =ov11_02324E28 + mov r8, sb + add fp, sp, #0 + mov r4, r6 + mvn r5, #0x4f +_02313604: + mov r0, sb + bl ov11_0231598C + mov sl, r0 + ldrh r0, [sl] + cmp r0, #0xff + beq _0231369C + ldrh r0, [sl, #0x14] + cmp r0, #8 + bhs _02313648 + ldr r0, [r7] + ldr r1, [sl, #0xc] + mla r0, sb, r6, r0 + add r1, r1, #0x800 + mov r1, r1, lsl #0x10 + mov r2, r8 + mov r1, r1, asr #0x10 + bl SetAnimDataFields2 +_02313648: + ldr r0, [sl, #8] + ldr r3, [sl, #4] + add r2, r0, #0xd0000 + mov r1, r2, asr #0xb + mov r0, r3, asr #0xb + add r1, r2, r1, lsr #20 + add r0, r3, r0, lsr #20 + cmp r5, r1, asr #12 + mov r1, r1, asr #0xc + mov r2, r0, asr #0xc + cmplt r1, #0xda + bge _0231369C + ldr r0, [r7] + mov sl, r2, lsl #8 + mla r0, sb, r4, r0 + mov r3, r1, lsl #8 + mov r1, fp + mov r2, #0 + str sl, [sp] + str r3, [sp, #4] + bl AnimRelatedFunction__022F6F14 +_0231369C: + add sb, sb, #1 + cmp sb, #0x50 + blt _02313604 + b _02313784 +_023136AC: + bl ov11_02313DC4 + cmp r0, #0 + beq _02313784 + mov sl, #0 + mov r5, #0xc4 + ldr r6, _02313790 ; =ov11_02324E28 + mov fp, sl + mov r7, #2 + mov r4, r5 +_023136D0: + mov r0, sl + bl ov11_023159B0 + mov r8, r0 + ldrh r0, [r8] + cmp r0, #0xff + ldrneh r0, [r8, #0x16] + cmpne r0, #0 + beq _02313778 + cmp r0, #1 + bne _02313740 + mul sb, sl, r5 + ldmia r6, {r0, r1} + add r0, r0, sb + add r1, r1, #0x324 + bl InitAnimDataFromOtherAnimDataVeneer + ldr r0, [r6] + ldr r1, [r8, #0xc] + add r0, r0, sb + bl ov11_022F4974 + ldrh r1, [r8, #0x14] + ldr r0, [r6] + mov r2, fp + add r1, r1, #0x800 + mov r1, r1, lsl #0x10 + add r0, r0, sb + mov r1, r1, asr #0x10 + bl SetAnimDataFields2 + strh r7, [r8, #0x16] +_02313740: + ldr r0, [r8, #8] + cmp r0, #0x12000 + bhs _02313778 + ldr r0, [r6] + ldr r1, [r8, #4] + mla r0, sl, r4, r0 + sub r1, r1, #0x2000 + str r1, [sp] + ldr r2, [r8, #8] + add r1, sp, #0 + sub r3, r2, #0x2000 + mov r2, #0 + str r3, [sp, #4] + bl AnimRelatedFunction__022F6F14 +_02313778: + add sl, sl, #1 + cmp sl, #0x50 + blt _023136D0 +_02313784: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231378C: .word ov11_02323D0C +_02313790: .word ov11_02324E28 + arm_func_end ov11_02313488 + + arm_func_start ov11_02313794 +ov11_02313794: ; 0x02313794 + bx lr + arm_func_end ov11_02313794 + + arm_func_start ov11_02313798 +ov11_02313798: ; 0x02313798 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x570] + cmp r1, #0 + beq _023137C4 + mov r1, #0 + strb r1, [r2, #0x570] + ldr r0, [r0, #4] + add r0, r0, #0x324 + bl ov11_022F6EFC +_023137C4: + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x571] + cmp r1, #0 + beq _023137EC + mov r1, #0 + strb r1, [r2, #0x571] + ldr r0, [r0, #4] + add r0, r0, #0x3e8 + bl ov11_022F7058 +_023137EC: + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x572] + cmp r1, #0 + beq _02313818 + mov r1, #0 + strb r1, [r2, #0x572] + ldr r0, [r0, #4] + add r0, r0, #0xac + add r0, r0, #0x400 + bl ov11_022F6EFC +_02313818: + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x573] + cmp r1, #0 + beq _02313840 + mov r1, #0 + strb r1, [r2, #0x573] + ldr r0, [r0, #4] + add r0, r0, #0x14 + bl ov11_022F6EFC +_02313840: + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x574] + cmp r1, #0 + beq _02313868 + mov r1, #0 + strb r1, [r2, #0x574] + ldr r0, [r0, #4] + add r0, r0, #0xd8 + bl ov11_022F6EFC +_02313868: + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x575] + cmp r1, #0 + beq _02313890 + mov r1, #0 + strb r1, [r2, #0x575] + ldr r0, [r0, #4] + add r0, r0, #0x19c + bl ov11_022F6EFC +_02313890: + ldr r0, _02313904 ; =ov11_02324E28 + ldr r2, [r0, #4] + ldrb r1, [r2, #0x576] + cmp r1, #0 + beq _023138B8 + mov r1, #0 + strb r1, [r2, #0x576] + ldr r0, [r0, #4] + add r0, r0, #0x260 + bl ov11_022F6EFC +_023138B8: + ldr r5, _02313904 ; =ov11_02324E28 + ldr r0, [r5] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r6, #0 + mov r4, #0xc4 +_023138D0: + ldr r0, [r5] + mla r0, r6, r4, r0 + bl ov11_022F6EFC + add r6, r6, #1 + cmp r6, #0x50 + blt _023138D0 + ldr r0, _02313904 ; =ov11_02324E28 + ldr r0, [r0] + bl MemFree + ldr r0, _02313904 ; =ov11_02324E28 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02313904: .word ov11_02324E28 + arm_func_end ov11_02313798 + + arm_func_start ov11_02313908 +ov11_02313908: ; 0x02313908 + ldr ip, _02313914 ; =ov11_0230D270 + ldr r0, _02313918 ; =ov11_02323D2C + bx ip + .align 2, 0 +_02313914: .word ov11_0230D270 +_02313918: .word ov11_02323D2C + arm_func_end ov11_02313908 + + arm_func_start ov11_0231391C +ov11_0231391C: ; 0x0231391C + ldr ip, _02313928 ; =ov11_0230D17C + ldr r0, _0231392C ; =ov11_02323D2C + bx ip + .align 2, 0 +_02313928: .word ov11_0230D17C +_0231392C: .word ov11_02323D2C + arm_func_end ov11_0231391C + + arm_func_start ov11_02313930 +ov11_02313930: ; 0x02313930 + stmdb sp!, {lr} + sub sp, sp, #0x14 + mov r0, #0xc + mov r1, #0xf + bl MemAlloc + ldr r1, _023139C4 ; =ov11_02324E30 + str r0, [r1] + bl ov11_02313A48 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r2, _023139C4 ; =ov11_02324E30 + mov lr, #0 + ldr r0, [r2] + mov ip, #1 + strb lr, [r0, #8] + ldr r1, [r2] + add r0, sp, #0x10 + strb ip, [r1, #0xa] + ldr r3, [r2] + add r1, sp, #0xc + strb lr, [r3, #0xb] + ldr r3, [r2] + add r2, sp, #8 + str ip, [r3, #4] + bl ov11_022EBAA0 + ldr r1, [sp, #0xc] + mov r0, #1 + str r1, [sp] + ldr r2, [sp, #8] + ldr r1, _023139C8 ; =0x06210000 + str r2, [sp, #4] + ldr r3, [sp, #0x10] + add r2, r1, #0x8000 + bl ov11_022DC240 + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_023139C4: .word ov11_02324E30 +_023139C8: .word 0x06210000 + + arm_func_start ov11_023139CC +ov11_023139CC: ; 0x023139CC + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _023139F8 + ldr r0, _02313A44 ; =ov11_02324E30 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #7 + movne r0, #1 + strneb r0, [r1, #0xb] + movne r0, #0 + ldmneia sp!, {r3, pc} +_023139F8: + bl ov11_02313A48 + ldr r0, _02313A44 ; =ov11_02324E30 + mov r2, #7 + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _02313A20 + bl ov11_022DC3FC +_02313A20: + bl ov11_022DC368 + ldr r0, _02313A44 ; =ov11_02324E30 + ldr r0, [r0] + bl MemFree + ldr r0, _02313A44 ; =ov11_02324E30 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02313A44: .word ov11_02324E30 + arm_func_end ov11_02313930 + + arm_func_start ov11_02313A48 +ov11_02313A48: ; 0x02313A48 + stmdb sp!, {r3, lr} + ldr r1, _02313A94 ; =ov11_02324E30 + mov r3, #1 + ldr r0, [r1] + mov r2, #0 + strb r2, [r0] + ldr r2, [r1] + sub r0, r3, #2 + str r3, [r2, #4] + ldr r1, [r1] + strb r3, [r1, #9] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _02313A94 ; =ov11_02324E30 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0xa] + ldmia sp!, {r3, pc} + .align 2, 0 +_02313A94: .word ov11_02324E30 + arm_func_end ov11_02313A48 + + arm_func_start StatusUpdate +StatusUpdate: ; 0x02313A98 + ldr r0, _02313AB4 ; =ov11_02324E30 + ldr r1, [r0] + cmp r1, #0 + movne r0, #1 + strneb r0, [r1, #0xa] + moveq r0, #0 + bx lr + .align 2, 0 +_02313AB4: .word ov11_02324E30 + arm_func_end StatusUpdate + + arm_func_start ov11_02313AB8 +ov11_02313AB8: ; 0x02313AB8 + ldr r0, _02313AD4 ; =ov11_02324E30 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #9] + bx lr + .align 2, 0 +_02313AD4: .word ov11_02324E30 + arm_func_end ov11_02313AB8 + + arm_func_start ov11_02313AD8 +ov11_02313AD8: ; 0x02313AD8 + bx lr + arm_func_end ov11_02313AD8 + + arm_func_start HandleTeamStatsGround +HandleTeamStatsGround: ; 0x02313ADC + stmdb sp!, {r3, lr} + ldr r0, _02313CAC ; =ov11_02324E30 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02313CA4 +_02313AF8: ; jump table + b _02313B18 ; case 0 + b _02313B40 ; case 1 + b _02313CA4 ; case 2 + b _02313CA4 ; case 3 + b _02313BD0 ; case 4 + b _02313BFC ; case 5 + b _02313C58 ; case 6 + b _02313C94 ; case 7 +_02313B18: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02313CAC ; =ov11_02324E30 + mov r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #9] + bne _02313CA4 + ldr r0, _02313CAC ; =ov11_02324E30 + ldr r0, [r0] + str r1, [r0, #4] +_02313B40: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02313CAC ; =ov11_02324E30 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #9] + bne _02313CA4 + ldr r0, _02313CAC ; =ov11_02324E30 + ldr r2, [r0] + ldrb r1, [r2, #0xb] + cmp r1, #0 + beq _02313B98 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02313CAC ; =ov11_02324E30 + mov r3, #1 + ldr r2, [r0] + mov r1, #6 + strb r3, [r2, #9] + ldr r0, [r0] + str r1, [r0, #4] + b _02313CA4 +_02313B98: + ldrb r1, [r2, #0xa] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #9] + beq _02313CA4 + mov r1, #1 + strb r1, [r2, #9] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #0xa] + ldr r0, [r0] + mov r1, #2 + str r1, [r0, #4] + b _02313CA4 +_02313BD0: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02313CAC ; =ov11_02324E30 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #9] + bne _02313CA4 + ldr r0, _02313CAC ; =ov11_02324E30 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] +_02313BFC: + ldr r0, _02313CAC ; =ov11_02324E30 + ldr r1, [r0] + ldrb r0, [r1, #0xb] + cmp r0, #0 + ldreqb r0, [r1, #0xa] + cmpeq r0, #0 + beq _02313C40 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02313CAC ; =ov11_02324E30 + mov r3, #0 + ldr r2, [r0] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #9] + b _02313CA4 +_02313C40: + bl ov11_022DC434 + ldr r0, _02313CAC ; =ov11_02324E30 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #9] + b _02313CA4 +_02313C58: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _02313CA4 + ldr r0, _02313CAC ; =ov11_02324E30 + ldr r1, [r0] + ldrb r0, [r1, #8] + cmp r0, #0 + beq _02313C84 + mov r0, #0 + strb r0, [r1, #8] + bl ov11_022DC3FC +_02313C84: + ldr r0, _02313CAC ; =ov11_02324E30 + mov r1, #7 + ldr r0, [r0] + str r1, [r0, #4] +_02313C94: + ldr r0, _02313CAC ; =ov11_02324E30 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #9] +_02313CA4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02313CAC: .word ov11_02324E30 + arm_func_end HandleTeamStatsGround + + arm_func_start ov11_02313CB0 +ov11_02313CB0: ; 0x02313CB0 + stmdb sp!, {r3, lr} + ldr r0, _02313D14 ; =ov11_02324E30 + ldr r2, [r0] + ldr r1, [r2, #4] + cmp r1, #2 + ldmneia sp!, {r3, pc} + mov r1, #1 + strb r1, [r2, #9] + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _02313CFC + bl ov11_022DC3A0 + ldr r0, _02313D14 ; =ov11_02324E30 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #8] + bl ov11_02313A48 + b _02313D00 +_02313CFC: + bl ov11_022DC504 +_02313D00: + ldr r0, _02313D14 ; =ov11_02324E30 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02313D14: .word ov11_02324E30 + arm_func_end ov11_02313CB0 + + arm_func_start ov11_02313D18 +ov11_02313D18: ; 0x02313D18 + stmdb sp!, {r3, lr} + ldr r0, _02313D8C ; =ov11_02324E30 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #3 + bne _02313D54 + mov r0, #1 + bl ov11_022EF53C + ldr r0, _02313D8C ; =ov11_02324E30 + mov r3, #1 + ldr r2, [r0] + mov r1, #4 + strb r3, [r2] + ldr r0, [r0] + str r1, [r0, #4] +_02313D54: + ldr r0, _02313D8C ; =ov11_02324E30 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #0 + beq _02313D74 + sub r0, r0, #4 + cmp r0, #2 + bhi _02313D84 +_02313D74: + ldrb r0, [r1, #8] + cmp r0, #0 + beq _02313D84 + bl ov11_022DC46C +_02313D84: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02313D8C: .word ov11_02324E30 + arm_func_end ov11_02313D18 + + arm_func_start ov11_02313D90 +ov11_02313D90: ; 0x02313D90 + stmdb sp!, {r3, lr} + ldr r0, _02313DC0 ; =ov11_02324E30 + ldr r2, [r0] + ldrb r0, [r2] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + mov r0, #0x10 + strb r1, [r2] + bl ov11_022E9C98 + bl ov11_022DC494 + ldmia sp!, {r3, pc} + .align 2, 0 +_02313DC0: .word ov11_02324E30 + arm_func_end ov11_02313D90 + + arm_func_start ov11_02313DC4 +ov11_02313DC4: ; 0x02313DC4 + ldr r0, _02313DF0 ; =ov11_02324E34 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02313DF0: .word ov11_02324E34 + arm_func_end ov11_02313DC4 + + arm_func_start ov11_02313DF4 +ov11_02313DF4: ; 0x02313DF4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r8, r0 + mov r7, r1 + mov r5, r2 + bl sub_0201F2E4 + ldr r0, _023145D4 ; =0x00000CB4 + mov r1, #6 + bl MemAlloc + ldr r4, _023145D8 ; =ov11_02324E34 + mov r6, #0 + str r0, [r4] + strb r6, [r0, #0xcac] + ldr r0, [r4] + mov sb, r6 + str r8, [r0] + ldr r0, [r4] + mov r8, #0x28 + str r6, [r0, #4] + ldr r0, [r4] + str r6, [r0, #8] + ldr r0, [r4] + str r6, [r0, #0xc] + ldr r0, [r4] + str r6, [r0, #0x10] + ldr r0, [r4] + str r6, [r0, #0x14] + ldr r0, [r4] + str r6, [r0, #0x18] + ldr r0, [r4] + str r6, [r0, #0x1c] + ldr r0, [r4] + str r6, [r0, #0x20] + ldr r0, [r4] + str r7, [r0, #0x24] + ldr r0, [r4] + str r5, [r0, #0x28] + mov r5, #0xff +_02313E8C: + mul r7, r6, r8 + ldr r0, [r4] + add r0, r0, r7 + strh r5, [r0, #0x2c] + bl sub_0201F36C + ldr r1, [r4] + add r1, r1, r7 + strh r0, [r1, #0x4c] + ldr r0, [r4] + add r0, r0, r7 + ldrsh r0, [r0, #0x4c] + bl sub_0201F324 + ldr r2, [r4] + mov r1, sb + add r2, r2, r7 + str r0, [r2, #0x48] + ldr r0, [r4] + add r0, r0, r7 + ldrsh r0, [r0, #0x4c] + bl sub_0201F348 + add r6, r6, #1 + cmp r6, #0x50 + blt _02313E8C + ldr r4, _023145D8 ; =ov11_02324E34 + ldr r1, [r4] + ldr r0, [r1] + cmp r0, #0x13 + addls pc, pc, r0, lsl #2 + b _023145CC +_02313F00: ; jump table + b _023145CC ; case 0 + b _023145CC ; case 1 + b _023145CC ; case 2 + b _02313F50 ; case 3 + b _02314060 ; case 4 + b _0231419C ; case 5 + b _02314210 ; case 6 + b _02314320 ; case 7 + b _02314228 ; case 8 + b _023145CC ; case 9 + b _023145CC ; case 10 + b _023144C0 ; case 11 + b _023144C8 ; case 12 + b _023144D0 ; case 13 + b _023144EC ; case 14 + b _02314548 ; case 15 + b _0231455C ; case 16 + b _0231421C ; case 17 + b _02314570 ; case 18 + b _023145CC ; case 19 +_02313F50: + mov sl, #0 + ldr r8, _023145DC ; =ov11_02323F84 + ldr r7, _023145E0 ; =ov11_02323FD4 + ldr r6, _023145E4 ; =ov11_02323E92 + ldr fp, _023145E8 ; =ov11_02323DEE + mov r5, #0xc400 + mov sb, sl +_02313F6C: + ldr r0, _023145EC ; =ov11_02324380 + bl ov11_02314D48 + mov r0, #0x28 + mul r2, sl, r0 + ldr r0, [r4] + ldr r1, [r8, sl, lsl #2] + add r0, r0, r2 + str r1, [r0, #0x30] + mov r0, sl, lsl #1 + ldr r3, [r4] + ldrh r1, [r6, r0] + ldr ip, [r7, sl, lsl #2] + add r0, r3, r2 + str ip, [r0, #0x34] + ldr r3, [r4] + add r0, sl, #3 + add r3, r3, r2 + str r1, [r3, #0x38] + ldr r3, [r4] + mov r1, r1, lsl #1 + add r3, r3, r2 + strh r0, [r3, #0x2c] + ldr r3, [r4] + add r0, sl, sl, lsl #4 + add r3, r3, r2 + strh r5, [r3, #0x3c] + ldr r3, [r4] + add sl, sl, #1 + add r3, r3, r2 + strh sb, [r3, #0x40] + ldr r3, [r4] + ldrh r1, [fp, r1] + add r3, r3, r2 + strh r0, [r3, #0x42] + ldr r0, [r4] + cmp sl, #0x14 + add r0, r0, r2 + strh r1, [r0, #0x3e] + ldr r0, [r4] + add r0, r0, r2 + strh sb, [r0, #0x50] + blt _02313F6C + ldr r4, _023145D8 ; =ov11_02324E34 + b _02314024 +_0231401C: + bl ov11_0231474C + add sb, sb, #1 +_02314024: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp sb, r0 + bne _0231401C + mov r4, #0 + ldr r1, _023145D8 ; =ov11_02324E34 + mov r3, r4 + mov r0, #0x28 +_02314044: + ldr r2, [r1] + mla r2, r4, r0, r2 + add r4, r4, #1 + strh r3, [r2, #0x40] + cmp r4, #0x14 + blt _02314044 + b _023145CC +_02314060: + add r1, sp, #8 + mov r0, #0 + bl ov11_022EB3C8 + mov sl, #0 + ldr r6, _023145F0 ; =ov11_023240E8 + ldr r5, _023145F4 ; =ov11_02324160 + ldr fp, _023145F8 ; =ov11_02323EBC + mov sb, sl +_02314080: + ldr r0, _023145EC ; =ov11_02324380 + bl ov11_02314D48 + mov r0, #0x28 + mul r7, sl, r0 + ldr r0, [r4] + ldr r1, [r6, sl, lsl #2] + add r0, r0, r7 + str r1, [r0, #0x30] + ldr r1, [r4] + mov r0, sl, lsl #1 + ldrh r8, [fp, r0] + ldr r2, [r5, sl, lsl #2] + add r1, r1, r7 + str r2, [r1, #0x34] + ldr r1, [r4] + mov r0, sl + add r1, r1, r7 + str r8, [r1, #0x38] + mov r1, #0xf + bl _s32_div_f + ldr r3, [r4] + ldr r1, _023145FC ; =ov11_02323DD0 + add r3, r3, r7 + strh r0, [r3, #0x2c] + ldr r0, [r4] + mov r2, r8, lsl #1 + add r3, r0, r7 + mov r0, #0xbd00 + strh r0, [r3, #0x3c] + ldr r0, [r4] + ldrh r1, [r1, r2] + add r0, r0, r7 + strh sb, [r0, #0x40] + ldr r0, [r4] + add r2, sl, sl, lsl #4 + add r0, r0, r7 + strh r2, [r0, #0x42] + ldr r0, [r4] + add sl, sl, #1 + add r0, r0, r7 + strh r1, [r0, #0x3e] + ldr r0, [r4] + ldr r1, [sp, #8] + add r0, r0, r7 + strh r1, [r0, #0x50] + ldr r0, [r4] + cmp sl, #0x1e + add r1, r0, r7 + ldr r0, [r1, #0x34] + mov r0, r0, lsr #0xc + strh r0, [r1, #0x4e] + blt _02314080 + ldr r4, _023145D8 ; =ov11_02324E34 + b _02314160 +_02314158: + bl ov11_0231474C + add sb, sb, #1 +_02314160: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp sb, r0 + bne _02314158 + mov r4, #0 + ldr r1, _023145D8 ; =ov11_02324E34 + mov r3, r4 + mov r0, #0x28 +_02314180: + ldr r2, [r1] + mla r2, r4, r0, r2 + add r4, r4, #1 + strh r3, [r2, #0x40] + cmp r4, #0x19 + blt _02314180 + b _023145CC +_0231419C: + ldr r1, _02314600 ; =ov11_02324B0C + add r0, sp, #0 + mov r2, #6 + bl LoadWteFromRom + mov r1, #0 + add r0, sp, #0 + mov r2, r1 + mov r3, r1 + bl sub_0201E12C + add r0, sp, #0 + bl DelayWteFree + ldr r0, _02314604 ; =ov11_02324B24 + mov r1, #0 + bl sub_0201DF38 + mov r1, r4 + ldr r3, [r1] + mov r2, #1 + str r0, [r3, #0xcb0] + ldr r0, [r1] + ldr r5, _02314608 ; =ov11_023242D8 + mov r6, #0 + strb r2, [r0, #0xcac] + mov r4, #0x1c +_023141F8: + mla r0, r6, r4, r5 + bl ov11_02314D48 + add r6, r6, #1 + cmp r6, #6 + blt _023141F8 + b _023145CC +_02314210: + ldr r0, _0231460C ; =ov11_02323D98 + bl ov11_02314D48 + b _023145CC +_0231421C: + ldr r0, _02314610 ; =ov11_02323D60 + bl ov11_02314D48 + b _023145CC +_02314228: + ldr r8, _02314614 ; =ov11_02324700 + ldr r7, _02314618 ; =TRIG_TABLE + mov sl, #0 + mov fp, #3 + mov r5, #0x28 + mov r6, #0x600 +_02314240: + mov r0, r8 + bl ov11_02314D48 + mul sb, sl, r5 + mov r0, sl + mov r1, fp + bl _s32_div_f + mov r0, sl, asr #2 + add r0, sl, r0, lsr #29 + mov r2, r0, asr #3 + mov r3, sl, lsr #0x1f + ldr r0, [r4] + add r2, r2, r2, lsl #1 + add r1, r1, r2 + rsb r2, r3, sl, lsl #30 + add r2, r3, r2, ror #30 + add r0, r0, sb + strh r1, [r0, #0x2c] + add r0, r2, #1 + mul r1, r0, r6 + ldr r0, [r4] + mov r2, sl, lsl #0xb + add r0, r0, sb + strh r2, [r0, #0x3c] + ldr r0, [r4] + add r1, r1, #0x2400 + add r0, r0, sb + strh r1, [r0, #0x3e] + ldr r0, [r4] + add sl, sl, #1 + add r2, r0, sb + ldrh r1, [r2, #0x3c] + ldrh r0, [r2, #0x3e] + cmp sl, #0x20 + mov r1, r1, asr #4 + mov r1, r1, lsl #1 + mov r0, r0, lsr #9 + mov r3, r1, lsl #1 + ldrsh r3, [r7, r3] + add r1, r7, r1, lsl #1 + mul ip, r3, r0 + add r3, ip, #0x80000 + str r3, [r2, #0x30] + ldrsh r2, [r1, #2] + ldr r1, [r4] + mul r0, r2, r0 + rsb r2, r0, #0x60000 + add r0, r1, sb + str r2, [r0, #0x34] + blt _02314240 + ldr r0, _0231461C ; =ov11_0232471C + bl ov11_02314D48 + ldr r0, _02314620 ; =ov11_02324738 + bl ov11_02314D48 + ldr r0, _02314624 ; =ov11_02324754 + bl ov11_02314D48 + b _023145CC +_02314320: + ldr r1, _02314628 ; =ov11_02324B3C + add r0, sp, #0 + mov r2, #6 + bl LoadWteFromRom + mov r1, #0 + add r0, sp, #0 + mov r2, r1 + mov r3, r1 + bl sub_0201E12C + add r0, sp, #0 + bl DelayWteFree + ldr r0, _0231462C ; =ov11_02324B54 + mov r1, #0 + bl sub_0201DF38 + mov r1, r4 + ldr r3, [r1] + mov r2, #1 + str r0, [r3, #0xcb0] + ldr r0, [r1] + mov r6, #0 + strb r2, [r0, #0xcac] +_02314374: + ldr r0, _02314630 ; =ov11_02323D7C + bl ov11_02314D48 + mov r0, #0x28 + mul r4, r6, r0 + ldr r1, _023145D8 ; =ov11_02324E34 + ldr r3, _02314634 ; =ov11_02323EFC + ldr r2, [r1] + ldr r3, [r3, r6, lsl #2] + add r2, r2, r4 + ldr r0, _02314638 ; =ov11_02323F40 + str r3, [r2, #0x34] + ldr r2, [r0, r6, lsl #2] + ldr r0, [r1] + add r2, r2, #0x18000 + add r0, r0, r4 + str r2, [r0, #0x30] + ldr r0, [r1] + mov r2, #0 + add r0, r0, r4 + str r2, [r0, #0x38] + ldr r3, [r1] + ldr r5, _0231463C ; =ov11_02323E70 + mov r8, r6, lsl #1 + ldr r0, _02314640 ; =ov11_02323E2C + ldrh r7, [r5, r8] + ldr r2, _02314644 ; =ov11_02323E4E + add r3, r3, r4 + strh r7, [r3, #0x2c] + ldrh r5, [r2, r8] + ldr r2, [r1] + ldrh r0, [r0, r8] + add r2, r2, r4 + strh r5, [r2, #0x3c] + ldr r7, [r1] + mov r1, #0x64 + ldr r2, [r7, #0x24] + rsb r2, r2, #0x64 + mul r0, r2, r0 + bl _s32_div_f + mov r1, r5, asr #4 + add r2, r7, r4 + strh r0, [r2, #0x40] + ldr r5, _023145D8 ; =ov11_02324E34 + mov r3, r1, lsl #1 + ldr r0, [r5] + ldr r1, _02314618 ; =TRIG_TABLE + mov r2, #0xf000 + add r0, r0, r4 + strh r2, [r0, #0x3e] + mov r2, r3, lsl #1 + add r0, r1, r3, lsl #1 + ldrsh r3, [r1, r2] + ldrsh r1, [r0, #2] + ldr r2, [r5] + add r0, r3, r3, lsl #1 + add r1, r1, r1, lsl #1 + mov r8, r0, lsl #0xe + mov r3, r1, lsl #0xe + mov r1, r3, asr #0xa + mov r0, r8, asr #0xa + add r7, r2, r4 + add r2, r8, r0, lsr #21 + add r3, r3, r1, lsr #21 + ldrh r1, [r7, #0x40] + mov r0, #0 + b _023144A8 +_0231447C: + ldr r7, [r5] + add r0, r0, #1 + add r8, r4, r7 + ldr r7, [r8, #0x30] + sub r7, r7, r2, asr #11 + str r7, [r8, #0x30] + ldr r7, [r5] + add r8, r4, r7 + ldr r7, [r8, #0x34] + add r7, r7, r3, asr #11 + str r7, [r8, #0x34] +_023144A8: + cmp r0, r1 + bne _0231447C + add r6, r6, #1 + cmp r6, #0x11 + blt _02314374 + b _023145CC +_023144C0: + bl ov11_02316330 + b _023145CC +_023144C8: + bl ov11_02316330 + bl ov11_023163B0 +_023144D0: + ldr r0, _02314648 ; =ov11_02324024 + bl ov11_02314D48 + ldr r0, _0231464C ; =ov11_02324040 + bl ov11_02314D48 + ldr r0, _02314650 ; =ov11_0232405C + bl ov11_02314D48 + b _023145CC +_023144EC: + ldr r1, _02314654 ; =ov11_02324B6C + add r0, sp, #0 + mov r2, #6 + bl LoadWteFromRom + mov r1, #0 + add r0, sp, #0 + mov r2, r1 + mov r3, r1 + bl sub_0201E12C + add r0, sp, #0 + bl DelayWteFree + ldr r0, _02314658 ; =ov11_02324B84 + mov r1, #0 + bl sub_0201DF38 + mov r1, r4 + ldr r3, [r1] + mov r2, #1 + str r0, [r3, #0xcb0] + ldr r1, [r1] + ldr r0, _0231465C ; =ov11_02323DB4 + strb r2, [r1, #0xcac] + bl ov11_02314D48 + b _023145CC +_02314548: + ldr r0, _02314660 ; =ov11_02324078 + bl ov11_02314D48 + ldr r0, _02314664 ; =ov11_02324094 + bl ov11_02314D48 + b _023145CC +_0231455C: + ldr r0, _02314668 ; =ov11_023240B0 + bl ov11_02314D48 + ldr r0, _0231466C ; =ov11_023240CC + bl ov11_02314D48 + b _023145CC +_02314570: + mov r5, #0 + str r5, [r1, #0xc] + ldr r0, [r4] + mov r2, #4 + str r2, [r0, #0x10] + ldr r0, [r4] + mov r1, #2 + str r1, [r0, #0x14] + ldr r0, [r4] + mov r1, #5 + str r1, [r0, #0x18] + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x1c] + ldr r0, [r4] + str r2, [r0, #0x20] + b _023145BC +_023145B4: + bl ov11_0231474C + add r5, r5, #1 +_023145BC: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r5, r0 + blt _023145B4 +_023145CC: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023145D4: .word 0x00000CB4 +_023145D8: .word ov11_02324E34 +_023145DC: .word ov11_02323F84 +_023145E0: .word ov11_02323FD4 +_023145E4: .word ov11_02323E92 +_023145E8: .word ov11_02323DEE +_023145EC: .word ov11_02324380 +_023145F0: .word ov11_023240E8 +_023145F4: .word ov11_02324160 +_023145F8: .word ov11_02323EBC +_023145FC: .word ov11_02323DD0 +_02314600: .word ov11_02324B0C +_02314604: .word ov11_02324B24 +_02314608: .word ov11_023242D8 +_0231460C: .word ov11_02323D98 +_02314610: .word ov11_02323D60 +_02314614: .word ov11_02324700 +_02314618: .word TRIG_TABLE +_0231461C: .word ov11_0232471C +_02314620: .word ov11_02324738 +_02314624: .word ov11_02324754 +_02314628: .word ov11_02324B3C +_0231462C: .word ov11_02324B54 +_02314630: .word ov11_02323D7C +_02314634: .word ov11_02323EFC +_02314638: .word ov11_02323F40 +_0231463C: .word ov11_02323E70 +_02314640: .word ov11_02323E2C +_02314644: .word ov11_02323E4E +_02314648: .word ov11_02324024 +_0231464C: .word ov11_02324040 +_02314650: .word ov11_0232405C +_02314654: .word ov11_02324B6C +_02314658: .word ov11_02324B84 +_0231465C: .word ov11_02323DB4 +_02314660: .word ov11_02324078 +_02314664: .word ov11_02324094 +_02314668: .word ov11_023240B0 +_0231466C: .word ov11_023240CC + arm_func_end ov11_02313DF4 + + arm_func_start ov11_02314670 +ov11_02314670: ; 0x02314670 + ldr ip, _02314680 ; =ov11_02313DF4 + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_02314680: .word ov11_02313DF4 + arm_func_end ov11_02314670 + + arm_func_start ov11_02314684 +ov11_02314684: ; 0x02314684 + ldr r0, _023146AC ; =ov11_02324E34 + ldr r0, [r0] + cmp r0, #0 + beq _023146A4 + ldr r0, [r0] + cmp r0, #0xb + moveq r0, #1 + bxeq lr +_023146A4: + mov r0, #0 + bx lr + .align 2, 0 +_023146AC: .word ov11_02324E34 + arm_func_end ov11_02314684 + + arm_func_start ov11_023146B0 +ov11_023146B0: ; 0x023146B0 + ldr r0, _023146D0 ; =ov11_02324E34 + ldr r0, [r0] + ldrb r0, [r0, #0xcac] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_023146D0: .word ov11_02324E34 + arm_func_end ov11_023146B0 + + arm_func_start ov11_023146D4 +ov11_023146D4: ; 0x023146D4 + ldr r2, _023146F0 ; =ov11_02324E34 + ldr ip, _023146F4 ; =ov11_023163B0 + ldr r3, [r2] + str r0, [r3, #0x24] + ldr r0, [r2] + str r1, [r0, #0x28] + bx ip + .align 2, 0 +_023146F0: .word ov11_02324E34 +_023146F4: .word ov11_023163B0 + arm_func_end ov11_023146D4 + + arm_func_start ov11_023146F8 +ov11_023146F8: ; 0x023146F8 + stmdb sp!, {r3, lr} + ldr r0, _02314748 ; =ov11_02324E34 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0201F2E4 + ldr r0, _02314748 ; =ov11_02324E34 + ldr r1, [r0] + ldrb r0, [r1, #0xcac] + cmp r0, #0 + beq _0231472C + add r0, r1, #0xcb0 + bl sub_0201E020 +_0231472C: + ldr r0, _02314748 ; =ov11_02324E34 + ldr r0, [r0] + bl MemFree + ldr r0, _02314748 ; =ov11_02324E34 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02314748: .word ov11_02324E34 + arm_func_end ov11_023146F8 + + arm_func_start ov11_0231474C +ov11_0231474C: ; 0x0231474C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r6, _02314D2C ; =ov11_02324E34 + ldr r0, [r6] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r7, _02314D30 ; =ov11_02324E38 + mov r4, #0 + mov r5, #0x28 +_02314770: + mul r2, r4, r5 + ldr r3, [r6] + add r1, r3, r2 + ldrh r0, [r1, #0x2c] + cmp r0, #0xff + beq _0231479C + ldrh r1, [r1, #0x44] + add r0, r3, #0x2c + add r0, r0, r2 + ldr r1, [r7, r1, lsl #2] + blx r1 +_0231479C: + add r4, r4, #1 + cmp r4, #0x50 + blt _02314770 + ldr r0, _02314D2C ; =ov11_02324E34 + ldr r2, [r0] + ldr r1, [r2, #4] + add r1, r1, #1 + str r1, [r2, #4] + ldr r4, [r0] + ldr r0, [r4] + cmp r0, #3 + bgt _023147E8 + cmp r0, #1 + blt _02314D24 + beq _023147F4 + cmp r0, #2 + beq _023148CC + cmp r0, #3 + b _02314D24 +_023147E8: + cmp r0, #0x12 + beq _023149D4 + b _02314D24 +_023147F4: + ldr r1, [r4, #0x28] + ldr r0, [r4, #4] + add r1, r1, #8 + bl _s32_div_f + cmp r1, #1 + bne _0231482C + ldr r0, [r4, #8] + ldr r2, _02314D34 ; =ov11_02324620 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r1, r1, r0, ror #30 + mov r0, #0x1c + mla r0, r1, r0, r2 + bl ov11_02314D48 +_0231482C: + ldr r0, _02314D2C ; =ov11_02324E34 + ldr r4, [r0] + ldr r1, [r4, #0x28] + ldr r0, [r4, #4] + add r1, r1, #8 + bl _s32_div_f + cmp r1, #0 + bne _02314D24 + ldr r1, [r4, #8] + ldr r0, _02314D2C ; =ov11_02324E34 + add r1, r1, #1 + str r1, [r4, #8] + ldr r0, [r0] + ldr r3, _02314D34 ; =ov11_02324620 + ldr r0, [r0, #8] + mov r2, #0x1c + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + add r1, r0, #4 + mla r0, r1, r2, r3 + bl ov11_02314D48 + ldr r0, _02314D2C ; =ov11_02324E34 + ldr r0, [r0] + ldr r2, [r0, #8] + mov r1, r2, lsr #0x1f + rsb r0, r1, r2, lsl #30 + adds r0, r1, r0, ror #30 + bne _02314D24 + mov r0, r2, asr #1 + add r0, r2, r0, lsr #30 + mov r1, r0, asr #2 + mov r2, r1, lsr #0x1f + rsb r0, r2, r1, lsl #30 + ldr r3, _02314D38 ; =ov11_02324540 + add r2, r2, r0, ror #30 + mov r0, #0x1c + mla r0, r2, r0, r3 + bl ov11_02314EF8 + b _02314D24 +_023148CC: + ldr r1, [r4, #0x28] + ldr r0, [r4, #4] + add r1, r1, #6 + bl _s32_div_f + cmp r1, #0 + bne _02314D24 + ldr r1, [r4, #8] + ldr r0, _02314D2C ; =ov11_02324E34 + add r1, r1, #1 + str r1, [r4, #8] + ldr r0, [r0] + mov r1, #3 + ldr r4, [r0, #8] + mov r0, r4 + bl _s32_div_f + cmp r1, #0 + bne _0231493C + add r0, r4, r4, lsr #31 + mov r0, r0, asr #1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + ldr r2, _02314D38 ; =ov11_02324540 + add r1, r0, #4 + mov r0, #0x1c + mla r0, r1, r0, r2 + mov r1, r4 + bl ov11_02314EF8 +_0231493C: + ldr r0, _02314D2C ; =ov11_02324E34 + mov r1, #3 + ldr r0, [r0] + ldr r4, [r0, #8] + mov r0, r4 + bl _s32_div_f + cmp r1, #0 + bne _02314988 + mov r0, r4 + mov r1, #3 + bl _s32_div_f + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + ldr r2, _02314D3C ; =ov11_02324460 + add r1, r0, #4 + mov r0, #0x1c + mla r0, r1, r0, r2 + bl ov11_02314D48 +_02314988: + ldr r0, _02314D2C ; =ov11_02324E34 + mov r1, #3 + ldr r0, [r0] + ldr r4, [r0, #8] + mov r0, r4 + bl _s32_div_f + cmp r1, #1 + bne _02314D24 + mov r0, r4 + mov r1, #3 + bl _s32_div_f + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + ldr r2, _02314D3C ; =ov11_02324460 + add r1, r1, r0, ror #30 + mov r0, #0x1c + mla r0, r1, r0, r2 + bl ov11_02314D48 + b _02314D24 +_023149D4: + ldr r1, [r4, #4] + ldr r2, [r4, #0x28] + add r0, r1, #0xc + cmp r0, r2 + mov r8, #6 + ble _023149F8 + cmp r1, r2 + bgt _02314D24 + mov r8, #3 +_023149F8: + ldr r0, _02314D40 ; =0x000001BF + mov r7, #0 + ldr r5, _02314D44 ; =ov11_023247E0 + sub sl, r0, #0xe + ldr r4, _02314D2C ; =ov11_02324E34 + b _02314D1C +_02314A10: + cmp r7, #5 + mov r6, #0xff + addls pc, pc, r7, lsl #2 + b _02314CA0 +_02314A20: ; jump table + b _02314A38 ; case 0 + b _02314A9C ; case 1 + b _02314B04 ; case 2 + b _02314B70 ; case 3 + b _02314BD8 ; case 4 + b _02314C3C ; case 5 +_02314A38: + ldr r2, [r4] + ldr r0, [r2, #4] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + adds r0, r1, r0, ror #30 + bne _02314CA0 + ldr r0, [r2, #8] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #31 + add r1, r1, r0, ror #31 + mov r0, #0x1c + mla r0, r1, r0, r5 + bl ov11_02314E20 + ldr sb, [r4] + mov r6, r0 + ldr r2, [sb, #0xc] + mov r0, #0xb7 + mul r0, r2, r0 + mov r1, #0x140 + bl _s32_div_f + ldr r0, [sb, #0xc] + mov fp, r1 + add r0, r0, #1 + str r0, [sb, #0xc] + b _02314CA0 +_02314A9C: + ldr sb, [r4] + mov r1, #3 + ldr r0, [sb, #4] + bl _s32_div_f + cmp r1, #1 + bne _02314CA0 + ldr r0, [sb, #8] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #31 + add r0, r1, r0, ror #31 + add r1, r0, #2 + mov r0, #0x1c + mla r0, r1, r0, r5 + bl ov11_02314E20 + ldr sb, [r4] + mov r6, r0 + ldr r2, [sb, #0x10] + mov r0, #0x9f + mul r0, r2, r0 + mov r1, #0x140 + bl _s32_div_f + ldr r0, [sb, #0x10] + mov fp, r1 + add r0, r0, #1 + str r0, [sb, #0x10] + b _02314CA0 +_02314B04: + ldr r2, [r4] + ldr r0, [r2, #4] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + cmp r0, #2 + bne _02314CA0 + ldr r0, [r2, #8] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #31 + add r0, r1, r0, ror #31 + add r1, r0, #4 + mov r0, #0x1c + mla r0, r1, r0, r5 + bl ov11_02314E20 + ldr sb, [r4] + mov r6, r0 + ldr r2, [sb, #0x14] + mov r0, #0x92 + mul r0, r2, r0 + mov r1, #0x140 + bl _s32_div_f + ldr r0, [sb, #0x14] + mov fp, r1 + add r0, r0, #1 + str r0, [sb, #0x14] + b _02314CA0 +_02314B70: + ldr sb, [r4] + mov r1, #5 + ldr r0, [sb, #4] + bl _s32_div_f + cmp r1, #2 + bne _02314CA0 + ldr r0, [sb, #8] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #31 + add r0, r1, r0, ror #31 + add r1, r0, #4 + mov r0, #0x1c + mla r0, r1, r0, r5 + bl ov11_02314E20 + ldr sb, [r4] + mov r6, r0 + ldr r2, [sb, #0x14] + mov r0, #0x9b + mul r0, r2, r0 + mov r1, #0x140 + bl _s32_div_f + ldr r0, [sb, #0x18] + mov fp, r1 + add r0, r0, #1 + str r0, [sb, #0x18] + b _02314CA0 +_02314BD8: + ldr r0, [r4] + mov r1, #5 + ldr sb, [r0, #8] + mov r0, sb + bl _s32_div_f + cmp r1, #3 + bne _02314CA0 + mov r1, sb, lsr #0x1f + rsb r0, r1, sb, lsl #31 + add r0, r1, r0, ror #31 + add r1, r0, #6 + mov r0, #0x1c + mla r0, r1, r0, r5 + bl ov11_02314E20 + ldr sb, [r4] + mov r6, r0 + ldr r2, [sb, #0x1c] + mov r1, #0x140 + mul r0, r2, sl + bl _s32_div_f + ldr r0, [sb, #0x1c] + mov fp, r1 + add r0, r0, #1 + str r0, [sb, #0x1c] + b _02314CA0 +_02314C3C: + ldr r0, [r4] + mov r1, #6 + ldr sb, [r0, #8] + mov r0, sb + bl _s32_div_f + cmp r1, #3 + bne _02314CA0 + mov r1, sb, lsr #0x1f + rsb r0, r1, sb, lsl #31 + add r0, r1, r0, ror #31 + add r1, r0, #6 + mov r0, #0x1c + mla r0, r1, r0, r5 + bl ov11_02314E20 + ldr sb, [r4] + mov r6, r0 + ldr r2, [sb, #0x20] + ldr r0, _02314D40 ; =0x000001BF + mov r1, #0x140 + mul r0, r2, r0 + bl _s32_div_f + ldr r0, [sb, #0x20] + mov fp, r1 + add r0, r0, #1 + str r0, [sb, #0x20] +_02314CA0: + cmp r6, #0xff + beq _02314D18 + mov r0, #0x28 + mul r0, r6, r0 + ldr r1, [r4] + add r1, r1, #0x2c + strh r6, [r1, r0] + add r6, r1, r0 + mov r0, fp, lsl #8 + str r0, [r6, #4] + mov r0, #0x20000 + str r0, [r6, #8] + ldr r0, [r4] + ldr r1, [r0, #0x28] + ldr r2, [r0, #4] + mov r0, #0x3c00 + mul r0, r2, r0 + mov r1, r1, lsl #5 + bl _s32_div_f + ldrh r1, [r6, #0x12] + rsb r0, r0, #0x200 + mul r0, r1, r0 + mov r0, r0, lsl #1 + strh r0, [r6, #0x12] + mov r0, #0 + strh r0, [r6, #0x16] + ldr r1, [r4] + ldr r0, [r1, #8] + add r0, r0, #1 + str r0, [r1, #8] +_02314D18: + add r7, r7, #1 +_02314D1C: + cmp r7, r8 + blt _02314A10 +_02314D24: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02314D2C: .word ov11_02324E34 +_02314D30: .word ov11_02324E38 +_02314D34: .word ov11_02324620 +_02314D38: .word ov11_02324540 +_02314D3C: .word ov11_02324460 +_02314D40: .word 0x000001BF +_02314D44: .word ov11_023247E0 + arm_func_end ov11_0231474C + + arm_func_start ov11_02314D48 +ov11_02314D48: ; 0x02314D48 + stmdb sp!, {r4, lr} + ldr r1, _02314E1C ; =ov11_02324E34 + mov r2, #0 + ldr r4, [r1] + mov r3, #0x28 + b _02314E0C +_02314D60: + mul r1, r2, r3 + add lr, r4, r1 + ldrh ip, [lr, #0x2c] + cmp ip, #0xff + bne _02314E08 + ldrh ip, [r0] + ldr r3, _02314E1C ; =ov11_02324E34 + strh ip, [lr, #0x2c] + ldr ip, [r3] + ldr lr, [r0, #4] + add ip, ip, r1 + str lr, [ip, #0x30] + ldr ip, [r3] + ldr lr, [r0, #8] + add ip, ip, r1 + str lr, [ip, #0x34] + ldr ip, [r3] + ldr lr, [r0, #0xc] + add ip, ip, r1 + str lr, [ip, #0x38] + ldr ip, [r3] + ldrh lr, [r0, #0x10] + add ip, ip, r1 + strh lr, [ip, #0x3c] + ldr ip, [r3] + ldrh lr, [r0, #0x12] + add ip, ip, r1 + strh lr, [ip, #0x3e] + ldr ip, [r3] + ldrh lr, [r0, #0x14] + add ip, ip, r1 + strh lr, [ip, #0x40] + ldr ip, [r3] + ldrh lr, [r0, #0x16] + add ip, ip, r1 + strh lr, [ip, #0x42] + ldrh ip, [r0, #0x18] + ldr r3, [r3] + mov r0, r2 + add r1, r3, r1 + strh ip, [r1, #0x44] + ldmia sp!, {r4, pc} +_02314E08: + add r2, r2, #1 +_02314E0C: + cmp r2, #0x50 + blt _02314D60 + mov r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_02314E1C: .word ov11_02324E34 + arm_func_end ov11_02314D48 + + arm_func_start ov11_02314E20 +ov11_02314E20: ; 0x02314E20 + stmdb sp!, {r4, lr} + ldr r1, _02314EF4 ; =ov11_02324E34 + mov r2, #0 + ldr r4, [r1] + mov r3, #0x28 + b _02314EE4 +_02314E38: + mul r1, r2, r3 + add lr, r4, r1 + ldrh ip, [lr, #0x2c] + cmp ip, #0xff + bne _02314EE0 + ldrh ip, [r0] + ldr r3, _02314EF4 ; =ov11_02324E34 + strh ip, [lr, #0x2c] + ldr ip, [r3] + ldr lr, [r0, #4] + add ip, ip, r1 + str lr, [ip, #0x30] + ldr ip, [r3] + ldr lr, [r0, #8] + add ip, ip, r1 + str lr, [ip, #0x34] + ldr ip, [r3] + ldr lr, [r0, #0xc] + add ip, ip, r1 + str lr, [ip, #0x38] + ldr ip, [r3] + ldrh lr, [r0, #0x10] + add ip, ip, r1 + strh lr, [ip, #0x3c] + ldr ip, [r3] + ldrh lr, [r0, #0x12] + add ip, ip, r1 + strh lr, [ip, #0x3e] + ldr ip, [r3] + ldrh lr, [r0, #0x14] + add ip, ip, r1 + strh lr, [ip, #0x40] + ldr ip, [r3] + ldrh lr, [r0, #0x16] + add ip, ip, r1 + strh lr, [ip, #0x42] + ldrh ip, [r0, #0x18] + ldr r3, [r3] + mov r0, r2 + add r1, r3, r1 + strh ip, [r1, #0x44] + ldmia sp!, {r4, pc} +_02314EE0: + add r2, r2, #1 +_02314EE4: + cmp r2, #0x40 + blt _02314E38 + mov r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_02314EF4: .word ov11_02324E34 + arm_func_end ov11_02314E20 + + arm_func_start ov11_02314EF8 +ov11_02314EF8: ; 0x02314EF8 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02314FF4 ; =ov11_02324E34 + mov ip, #0 + ldr r5, [r2] + mov r2, #0x28 + b _02314FE4 +_02314F10: + mul r3, ip, r2 + add r6, r5, r3 + ldrh r4, [r6, #0x2c] + cmp r4, #0xff + bne _02314FE0 + ldrh r5, [r0] + ldr r4, _02314FF4 ; =ov11_02324E34 + and r2, r1, #0x1f + strh r5, [r6, #0x2c] + ldr r6, [r0, #4] + ldr r5, [r4] + add r6, r6, r2, lsl #12 + add r5, r5, r3 + str r6, [r5, #0x30] + ldr r5, [r0, #8] + mov lr, #0x1c00 + mla r6, r2, lr, r5 + ldr r2, [r4] + mov r5, r1, lsl #0x1c + add r2, r2, r3 + str r6, [r2, #0x34] + ldr r6, [r0, #0xc] + ldr r2, [r4] + add r6, r6, r1 + and r6, r6, #1 + add r2, r2, r3 + str r6, [r2, #0x38] + ldrh r6, [r0, #0x10] + ldr lr, [r4] + mov r2, r1, lsl #0x1b + add r5, r6, r5, lsr #21 + add r1, lr, r3 + strh r5, [r1, #0x3c] + ldrh lr, [r0, #0x12] + ldr r1, [r4] + add r2, lr, r2, lsr #21 + add r1, r1, r3 + strh r2, [r1, #0x3e] + ldr r1, [r4] + ldrh r2, [r0, #0x14] + add r1, r1, r3 + strh r2, [r1, #0x40] + ldr r1, [r4] + ldrh r2, [r0, #0x16] + add r1, r1, r3 + strh r2, [r1, #0x42] + ldrh r2, [r0, #0x18] + ldr r1, [r4] + mov r0, ip + add r1, r1, r3 + strh r2, [r1, #0x44] + ldmia sp!, {r4, r5, r6, pc} +_02314FE0: + add ip, ip, #1 +_02314FE4: + cmp ip, #0x50 + bne _02314F10 + mov r0, #0xff + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02314FF4: .word ov11_02324E34 + arm_func_end ov11_02314EF8 + + arm_func_start ov11_02314FF8 +ov11_02314FF8: ; 0x02314FF8 + stmdb sp!, {r3, r4, r5, lr} + ldrh r1, [r0, #0x10] + ldr r2, _0231513C ; =TRIG_TABLE + cmp r1, #0x8000 + sublo r1, r1, #0x90 + addhs r1, r1, #0x90 + strh r1, [r0, #0x10] + ldrh r1, [r0, #0x12] + sub r1, r1, #0x18 + strh r1, [r0, #0x12] + ldrh r1, [r0, #0x12] + cmp r1, #0x18 + movlo r1, #0x30 + strloh r1, [r0, #0x12] + ldrh r4, [r0, #0x14] + mov r1, r4, lsl #0x1b + mov r1, r1, lsr #0x10 + mov r1, r1, asr #4 + mov r1, r1, lsl #2 + ldrsh r3, [r2, r1] + add r1, r4, #1 + strh r1, [r0, #0x14] + add r1, r3, r3, lsr #31 + mov r1, r1, asr #1 + cmp r4, #0x200 + mov lr, r1, lsl #0x10 + movhi r1, #0xff + strhih r1, [r0] + movhi r0, #0 + ldmhiia sp!, {r3, r4, r5, pc} + ldmib r0, {r1, r4} + mov r3, r1, asr #0xb + add r3, r1, r3, lsr #20 + mov r5, r3, asr #0xc + mov ip, r4, asr #0xb + add r3, r4, ip, lsr #20 + cmp r5, #0x140 + mov r4, r3, asr #0xc + bgt _023150A0 + mvn r3, #0x3f + cmp r5, r3 + bge _023150B0 +_023150A0: + mov r1, #0xff + strh r1, [r0] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_023150B0: + cmp r4, #0x1b8 + bgt _023150C4 + sub r3, r3, #0xc0 + cmp r4, r3 + bge _023150D4 +_023150C4: + mov r1, #0xff + strh r1, [r0] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_023150D4: + ldrh r3, [r0, #0x10] + ldrh r5, [r0, #0x12] + mov r3, r3, asr #4 + mov ip, r3, lsl #1 + mov r3, ip, lsl #1 + ldrsh r4, [r2, r3] + add r3, ip, #1 + mov ip, r3, lsl #1 + add r3, r4, lr, asr #16 + mul r4, r5, r3 + mov r3, r4, asr #0xb + add r3, r4, r3, lsr #20 + add r1, r1, r3, asr #12 + str r1, [r0, #4] + ldrsh r2, [r2, ip] + ldrh r1, [r0, #0x12] + ldr ip, [r0, #8] + mul r3, r2, r1 + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + mov r1, r1, asr #0xc + add r1, r1, #0x80 + sub r1, ip, r1 + str r1, [r0, #8] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231513C: .word TRIG_TABLE + arm_func_end ov11_02314FF8 + + arm_func_start ov11_02315140 +ov11_02315140: ; 0x02315140 + stmdb sp!, {r3, r4, r5, lr} + ldrh r1, [r0, #0x12] + ldr r2, _02315274 ; =TRIG_TABLE + sub r1, r1, #0x18 + strh r1, [r0, #0x12] + ldrh r1, [r0, #0x12] + cmp r1, #0x18 + movlo r1, #0x30 + strloh r1, [r0, #0x12] + ldrh r4, [r0, #0x14] + mov r1, r4, lsl #0x1b + mov r1, r1, lsr #0x10 + mov r1, r1, asr #4 + mov r1, r1, lsl #2 + ldrsh r3, [r2, r1] + add r1, r4, #1 + strh r1, [r0, #0x14] + mov r1, r3, asr #1 + add r1, r3, r1, lsr #30 + mov r1, r1, asr #2 + cmp r4, #0x180 + mov lr, r1, lsl #0x10 + movhi r1, #0xff + strhih r1, [r0] + movhi r0, #0 + ldmhiia sp!, {r3, r4, r5, pc} + ldmib r0, {r1, r4} + mov r3, r1, asr #0xb + add r3, r1, r3, lsr #20 + mov r5, r3, asr #0xc + mov ip, r4, asr #0xb + add r3, r4, ip, lsr #20 + cmp r5, #0x140 + mov r4, r3, asr #0xc + bgt _023151D8 + mvn r3, #0x3f + cmp r5, r3 + bge _023151E8 +_023151D8: + mov r1, #0xff + strh r1, [r0] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_023151E8: + cmp r4, #0x100 + bgt _023151FC + sub r3, r3, #0xc0 + cmp r4, r3 + bge _0231520C +_023151FC: + mov r1, #0xff + strh r1, [r0] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0231520C: + ldrh r3, [r0, #0x10] + ldrh r5, [r0, #0x12] + mov r3, r3, asr #4 + mov ip, r3, lsl #1 + mov r3, ip, lsl #1 + ldrsh r4, [r2, r3] + add r3, ip, #1 + mov ip, r3, lsl #1 + add r3, r4, lr, asr #16 + mul r4, r5, r3 + mov r3, r4, asr #0xb + add r3, r4, r3, lsr #20 + add r1, r1, r3, asr #12 + str r1, [r0, #4] + ldrsh r2, [r2, ip] + ldrh r1, [r0, #0x12] + ldr ip, [r0, #8] + mul r3, r2, r1 + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + mov r1, r1, asr #0xc + add r1, r1, #0x80 + sub r1, ip, r1 + str r1, [r0, #8] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315274: .word TRIG_TABLE + arm_func_end ov11_02315140 + + arm_func_start ov11_02315278 +ov11_02315278: ; 0x02315278 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x108 + ldr r3, _023154F8 ; =ov11_023241D8 + add r2, sp, #0x88 + mov r8, r0 + mov r1, #0x40 +_02315290: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _02315290 + ldr r3, _023154FC ; =ov11_02324258 + add r2, sp, #8 + mov r1, #0x40 +_023152AC: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _023152AC + ldr r1, [r8, #0xc] + ldrh r0, [r8, #0x16] + mov r1, r1, lsr #1 + rsb r1, r1, #0xa + mov r2, r1, lsl #0x10 + mov r3, r0, lsr #2 + add r1, sp, #0 + mov r0, #0 + mov r4, r2, lsr #0x10 + and r7, r3, #0x3f + bl ov11_022EB3C8 + ldrsh r3, [r8, #0x24] + ldr r2, [sp] + cmp r2, r3 + beq _0231531C + ldrh r0, [r8] + cmp r0, #1 + bne _0231531C + ldr r1, [r8, #4] + sub r0, r2, r3 + sub r0, r1, r0, lsl #12 + str r0, [r8, #4] + ldr r0, [sp] + strh r0, [r8, #0x24] +_0231531C: + ldrh r2, [r8, #0x14] + add r0, sp, #0x88 + mov r1, r7, lsl #1 + add r2, r2, #1 + strh r2, [r8, #0x14] + ldrh r2, [r8, #0x16] + ldr r6, _02315500 ; =TRIG_TABLE + add r2, r2, #1 + strh r2, [r8, #0x16] + ldrh r0, [r0, r1] + ldmib r8, {r1, lr} + mov r0, r0, asr #4 + mov r5, r0, lsl #1 + add r3, r5, #1 + ldrh r0, [r8] + mov r2, r1, asr #0xb + mov ip, lr, asr #0xb + mov r5, r5, lsl #1 + add r2, r1, r2, lsr #20 + add ip, lr, ip, lsr #20 + mov r3, r3, lsl #1 + ldrsh r5, [r6, r5] + cmp r0, #2 + mov r2, r2, asr #0xc + mov ip, ip, asr #0xc + ldrsh r6, [r6, r3] + bhs _0231541C + cmp r0, #0 + beq _0231539C + cmp r0, #1 + beq _023153F8 + b _02315440 +_0231539C: + mvn r0, #0x2f + cmp r2, r0 + addlt r0, r1, #0x154000 + strlt r0, [r8, #4] + ldrltsh r0, [r8, #0x22] + movlt r0, r0, lsl #0xc + strlt r0, [r8, #8] + mvn r0, #0xdf + cmp ip, r0 + movlt r0, #0x118000 + strlt r0, [r8, #4] + ldrltsh r0, [r8, #0x22] + movlt r0, r0, lsl #0xc + strlt r0, [r8, #8] + cmp ip, #0 + ble _02315440 + ldr r0, [r8, #4] + add r0, r0, #0x100000 + str r0, [r8, #4] + ldrsh r0, [r8, #0x22] + mov r0, r0, lsl #0xc + str r0, [r8, #8] + b _02315440 +_023153F8: + mvn r0, #0x5f + cmp r2, r0 + bge _02315440 + add r0, r1, #0x170000 + str r0, [r8, #4] + ldrsh r0, [r8, #0x22] + mov r0, r0, lsl #0xc + str r0, [r8, #8] + b _02315440 +_0231541C: + mvn r0, #0x2f + cmp r2, r0 + addlt r0, r1, #0x154000 + strlt r0, [r8, #4] + mvn r0, #0xdf + cmp ip, r0 + ldrlt r0, [r8, #8] + addlt r0, r0, #0x1c0000 + strlt r0, [r8, #8] +_02315440: + ldrh r0, [r8, #0x10] + ldr ip, _02315500 ; =TRIG_TABLE + ldrh r2, [r8, #0x12] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r3, [ip, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + mul r2, r3, r2 + mov r0, r2, asr #0xb + add r0, r2, r0, lsr #20 + ldr r3, [r8, #4] + ldrsh r1, [ip, r1] + add r0, r3, r0, asr #12 + str r0, [r8, #4] + ldrh r0, [r8, #0x12] + ldr ip, [r8, #8] + add r2, sp, #8 + mul r3, r1, r0 + mov r0, r3, asr #0xb + add r0, r3, r0, lsr #20 + sub r0, ip, r0, asr #12 + str r0, [r8, #8] + mov r0, r7, lsl #1 + mov r1, r4 + ldrh r4, [r2, r0] + mov r0, #0x1000 + bl _s32_div_f + mov r1, #0xa + mul r7, r0, r1 + mul r0, r5, r4 + mov r1, r7 + bl _s32_div_f + ldr r2, [r8, #4] + mov r1, r7 + add r2, r2, r0 + mul r0, r6, r4 + str r2, [r8, #4] + bl _s32_div_f + ldr r1, [r8, #8] + sub r0, r1, r0 + str r0, [r8, #8] + mov r0, #0 + add sp, sp, #0x108 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023154F8: .word ov11_023241D8 +_023154FC: .word ov11_02324258 +_02315500: .word TRIG_TABLE + arm_func_end ov11_02315278 + + arm_func_start ov11_02315504 +ov11_02315504: ; 0x02315504 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, #0 + ldr r1, [r5, #4] + sub r0, r4, #0x80000 + cmp r1, r0 + bls _02315540 + sub r0, r4, #0x60000 + cmp r1, r0 + movlo r0, #1 + strloh r0, [r5] + ldrlo r0, [r5, #4] + addlo r0, r0, #0x180000 + strlo r0, [r5, #4] +_02315540: + ldrh r0, [r5] + cmp r0, #0 + ldrh r0, [r5, #0x12] + moveq r4, #0x20000 + rsbeq r4, r4, #0 + add r0, r0, #0x180 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + cmp r0, #0x7800 + subhi r0, r0, #0x180 + strhih r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + cmp r0, #0x3c00 + bls _023155AC + mov r0, #0x4000 + ldr r1, [r5, #8] + rsb r0, r0, #0 + and r0, r1, r0 + str r0, [r5, #8] + ldrh r0, [r5, #0x14] + add r0, r0, #1 + strh r0, [r5, #0x14] + ldrh r0, [r5, #0x14] + ldr r1, [r5, #8] + mov r0, r0, lsl #0x1f + add r0, r1, r0, lsr #18 + str r0, [r5, #8] +_023155AC: + ldrh r0, [r5, #0x10] + ldr ip, _023156B0 ; =TRIG_TABLE + ldrh r2, [r5, #0x12] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r3, [ip, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + mul r2, r3, r2 + mov r0, r2, asr #0xb + ldr r3, [r5, #4] + add r0, r2, r0, lsr #20 + add r0, r3, r0, asr #12 + str r0, [r5, #4] + ldrsh r1, [ip, r1] + ldrh r0, [r5, #0x12] + ldr r3, [r5, #8] + mul r2, r1, r0 + mov r0, r2, asr #0xb + add r0, r2, r0, lsr #20 + sub r0, r3, r0, asr #12 + str r0, [r5, #8] + ldrh r6, [r5] + ldrsh r0, [r5, #0x20] + mov r1, #1 + cmp r6, #1 + movhi r6, #1 + bl sub_0201F348 + ldr r0, [r5, #0x1c] + mov r3, #0 + strb r3, [r0, #0x3c] + str r3, [sp] + str r3, [sp, #4] + ldr r1, _023156B4 ; =ov11_02324E34 + ldr r0, [r5, #0x1c] + ldr r1, [r1] + mov r2, r6 + ldr r1, [r1, #0xcb0] + bl sub_0201E7D8 + ldr ip, [r5, #0x1c] + ldr r0, _023156B4 ; =ov11_02324E34 + ldrb r1, [ip, #0x3d] + mov r3, #0x3f + mov r2, #0x7e + orr r1, r1, #4 + strb r1, [ip, #0x3d] + ldr ip, [r5, #4] + ldr r1, [r5, #0x1c] + add r4, ip, r4 + mov r4, r4, lsr #0xc + strh r4, [r1] + ldr r0, [r0] + ldr r4, [r5, #8] + ldr r1, [r0, #0x24] + ldr r0, [r5, #0x1c] + add r1, r1, r4, lsr #12 + strh r1, [r0, #2] + ldr r1, [r5, #0x1c] + mov r0, #0 + strb r3, [r1, #0x3e] + ldr r1, [r5, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023156B0: .word TRIG_TABLE +_023156B4: .word ov11_02324E34 + arm_func_end ov11_02315504 + + arm_func_start ov11_023156B8 +ov11_023156B8: ; 0x023156B8 + stmdb sp!, {r4, lr} + ldr r1, _02315750 ; =ov11_02324E34 + ldrh r2, [r0, #0x12] + ldr r1, [r1] + ldr lr, _02315754 ; =TRIG_TABLE + ldr r1, [r1, #0x24] + add r1, r2, r1, lsl #8 + strh r1, [r0, #0x12] + ldrh r1, [r0, #0x10] + ldrh r3, [r0, #0x12] + ldr r4, [r0, #4] + mov r1, r1, asr #4 + mov r2, r1, lsl #1 + mov r1, r2, lsl #1 + ldrsh ip, [lr, r1] + add r1, r2, #1 + mov r2, r1, lsl #1 + mul r3, ip, r3 + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + add r1, r4, r1, asr #12 + str r1, [r0, #4] + ldrsh r2, [lr, r2] + ldrh r1, [r0, #0x12] + ldr ip, [r0, #8] + mul r3, r2, r1 + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + sub r1, ip, r1, asr #12 + str r1, [r0, #8] + ldrh r2, [r0, #0x14] + add r1, r2, #1 + strh r1, [r0, #0x14] + cmp r2, #0x100 + movhi r1, #0xff + strhih r1, [r0] + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02315750: .word ov11_02324E34 +_02315754: .word TRIG_TABLE + arm_func_end ov11_023156B8 + + arm_func_start ov11_02315758 +ov11_02315758: ; 0x02315758 + stmdb sp!, {r3, r4, r5, lr} + ldrh r1, [r0, #0x16] + cmp r1, #0 + bne _023157AC + ldr r2, [r0, #0xc] + cmp r2, #0x480 + bls _02315794 + ldr r1, _0231581C ; =ov11_02324E34 + ldr r1, [r1] + ldr r1, [r1, #0x28] + mov r1, r1, lsl #4 + add r1, r1, #0x380 + sub r1, r2, r1 + str r1, [r0, #0xc] + b _023157B4 +_02315794: + mov r1, #0x190000 + str r1, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + mov r0, r1 + ldmia sp!, {r3, r4, r5, pc} +_023157AC: + sub r1, r1, #1 + strh r1, [r0, #0x16] +_023157B4: + ldrh r1, [r0, #0x10] + ldr r5, [r0, #0xc] + ldr r2, _0231581C ; =ov11_02324E34 + mov r3, r1, asr #4 + mov r4, r3, lsl #1 + add r3, r4, #1 + ldr lr, _02315820 ; =TRIG_TABLE + mov ip, r4, lsl #1 + mov r3, r3, lsl #1 + ldr r4, [r2] + ldrsh ip, [lr, ip] + mov r5, r5, lsr #8 + ldrsh r2, [lr, r3] + mul lr, ip, r5 + mul r3, r2, r5 + ldrh r5, [r0, #0x12] + ldr ip, [r4, #0x24] + add r2, lr, #0xa0000 + add r4, r5, ip, lsl #4 + sub r1, r1, r4 + strh r1, [r0, #0x10] + str r2, [r0, #4] + rsb r1, r3, #0x80000 + str r1, [r0, #8] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231581C: .word ov11_02324E34 +_02315820: .word TRIG_TABLE + arm_func_end ov11_02315758 + + arm_func_start ov11_02315824 +ov11_02315824: ; 0x02315824 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r0 + add r1, sp, #8 + mov r0, #0 + bl ov11_022EB3C8 + ldrh r0, [r5, #0x14] + cmp r0, #0 + beq _023158AC + sub r0, r0, #1 + strh r0, [r5, #0x14] + ldrh r0, [r5, #0x10] + ldr r3, _02315984 ; =TRIG_TABLE + ldr r4, [r5, #4] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r2, [r3, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + add r0, r2, r2, lsl #1 + mov r2, r0, lsl #0xe + ldrsh r1, [r3, r1] + mov r0, r2, asr #0xa + add r0, r2, r0, lsr #21 + add r2, r4, r0, asr #11 + add r0, r1, r1, lsl #1 + str r2, [r5, #4] + mov r1, r0, lsl #0xe + mov r0, r1, asr #0xa + ldr r2, [r5, #8] + add r0, r1, r0, lsr #21 + sub r0, r2, r0, asr #11 + str r0, [r5, #8] +_023158AC: + ldr r2, [r5, #0xc] + ldr r0, [sp, #8] + cmp r0, r2 + beq _023158D4 + ldr r1, [r5, #4] + sub r0, r0, r2 + sub r0, r1, r0, lsl #12 + str r0, [r5, #4] + ldr r0, [sp, #8] + str r0, [r5, #0xc] +_023158D4: + ldrsh r0, [r5, #0x20] + ldrh r4, [r5] + mov r1, #1 + bl sub_0201F348 + ldr r0, [r5, #0x1c] + mov r3, #0 + strb r3, [r0, #0x3c] + str r3, [sp] + str r3, [sp, #4] + ldr r1, _02315988 ; =ov11_02324E34 + ldr r0, [r5, #0x1c] + ldr r1, [r1] + mov r2, r4 + ldr r1, [r1, #0xcb0] + bl sub_0201E7D8 + ldr r1, [r5, #0x1c] + mov lr, #0x18 + ldrb r0, [r1, #0x3d] + mov ip, #0xff + rsb r3, r4, #0x3f + orr r0, r0, #4 + strb r0, [r1, #0x3d] + ldr r1, [r5, #4] + ldr r0, [r5, #0x1c] + mov r1, r1, lsr #0xc + strh r1, [r0] + ldr r1, [r5, #8] + ldr r0, [r5, #0x1c] + mov r1, r1, lsr #0xc + strh r1, [r0, #2] + ldr r0, [r5, #0x1c] + rsb r2, r4, #0x40 + strh lr, [r0, #8] + ldr r1, [r5, #0x1c] + mov r0, #0 + strh lr, [r1, #0xa] + ldr r1, [r5, #0x1c] + strb ip, [r1, #0x2f] + ldr r1, [r5, #0x1c] + strb r3, [r1, #0x3e] + ldr r1, [r5, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315984: .word TRIG_TABLE +_02315988: .word ov11_02324E34 + arm_func_end ov11_02315824 + + arm_func_start ov11_0231598C +ov11_0231598C: ; 0x0231598C + ldr r1, _023159AC ; =ov11_02324E34 + ldr r1, [r1] + cmp r1, #0 + addne r2, r1, #0x2c + moveq r0, #0 + movne r1, #0x28 + mlane r0, r1, r0, r2 + bx lr + .align 2, 0 +_023159AC: .word ov11_02324E34 + arm_func_end ov11_0231598C + + arm_func_start ov11_023159B0 +ov11_023159B0: ; 0x023159B0 + ldr r2, _023159C8 ; =ov11_02324E34 + mov r1, #0x28 + ldr r2, [r2] + add r2, r2, #0x2c + mla r0, r1, r0, r2 + bx lr + .align 2, 0 +_023159C8: .word ov11_02324E34 + arm_func_end ov11_023159B0 + + arm_func_start ov11_023159CC +ov11_023159CC: ; 0x023159CC + ldr r2, _023159E4 ; =ov11_02324E34 + ldr r3, [r2] + str r0, [r3, #0x24] + ldr r0, [r2] + str r1, [r0, #0x28] + bx lr + .align 2, 0 +_023159E4: .word ov11_02324E34 + arm_func_end ov11_023159CC + + arm_func_start ov11_023159E8 +ov11_023159E8: ; 0x023159E8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + ldr r3, _02315A98 ; =ov11_02324E34 + ldr r3, [r3] + cmp r3, #0 + beq _02315A90 + add r4, r3, #0x2c + mov r3, #0x28 + mla r4, r2, r3, r4 + mov r2, r0, asr #7 + add r0, r0, r2, lsr #24 + mov r2, r1, asr #7 + mov r3, r0, asr #8 + add r0, r1, r2, lsr #24 + mov r1, r3, lsl #0xc + mov r0, r0, asr #8 + str r1, [r4, #4] + mov r0, r0, lsl #0xc + str r0, [r4, #8] + ldr r0, [r4, #4] + mov r2, #0xa0000 + str r0, [sp] + ldr r3, [r4, #8] + mov r0, #0 + mov r1, #0x80000 + str r3, [sp, #4] + str r2, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #8] + str r0, [sp, #0x14] + ldmib r4, {r0, r1} + sub r0, r0, #0xa0000 + rsb r1, r1, #0x80000 + bl FX_Atan2Idx + strh r0, [r4, #0x10] + add r0, sp, #0xc + add r1, sp, #0 + bl VEC_Distance + mov r1, r0, asr #3 + add r0, r0, r1, lsr #28 + mov r0, r0, asr #4 + str r0, [r4, #0xc] +_02315A90: + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + .align 2, 0 +_02315A98: .word ov11_02324E34 + arm_func_end ov11_023159E8 + + arm_func_start ov11_02315A9C +ov11_02315A9C: ; 0x02315A9C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r4, r0 + ldr r3, [r4, #4] + ldrh r1, [r4, #0x10] + mov r0, r3, asr #0xb + add r0, r3, r0, lsr #20 + cmp r1, #0x4000 + mov r2, r0, asr #0xc + mov r0, #0x1000 + beq _02315AEC + cmp r1, #0xc000 + bne _02315AF8 + sub r0, r0, #0x1100 + cmp r2, r0 + addlt r0, r3, #0x300000 + strlt r0, [r4, #4] + mov r0, #0x1000 + rsb r0, r0, #0 + b _02315AF8 +_02315AEC: + cmp r2, #0x200 + subgt r1, r3, #0x300000 + strgt r1, [r4, #4] +_02315AF8: + ldrh r1, [r4, #0x10] + ldr lr, _02315C00 ; =TRIG_TABLE + ldrh r3, [r4, #0x12] + mov r1, r1, asr #4 + mov r2, r1, lsl #1 + mov r1, r2, lsl #1 + ldrsh ip, [lr, r1] + add r1, r2, #1 + mov r2, r1, lsl #1 + mul r3, ip, r3 + mov r1, r3, asr #0xb + ldr ip, [r4, #4] + add r1, r3, r1, lsr #20 + add r1, ip, r1, asr #12 + str r1, [r4, #4] + ldrsh r2, [lr, r2] + ldrh r1, [r4, #0x12] + ldr ip, [r4, #8] + mul r3, r2, r1 + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + sub r1, ip, r1, asr #12 + str r1, [r4, #8] + ldrh r1, [r4, #0x16] + cmp r1, #0 + subne r1, r1, #1 + strneh r1, [r4, #0x16] + ldrne r1, [r4, #8] + addne r0, r1, r0 + strne r0, [r4, #8] + ldrsh r0, [r4, #0x20] + ldrh r5, [r4] + mov r1, #1 + bl sub_0201F348 + ldr r0, [r4, #0x1c] + mov r3, #0 + strb r3, [r0, #0x3c] + str r3, [sp] + str r3, [sp, #4] + ldr r1, _02315C04 ; =ov11_02324E34 + ldr r0, [r4, #0x1c] + ldr r1, [r1] + mov r2, r5 + ldr r1, [r1, #0xcb0] + bl sub_0201E7D8 + ldr ip, [r4, #0x1c] + mov r3, #0x3f + ldrb r1, [ip, #0x3d] + mov r2, #0x7e + mov r0, #0 + orr r1, r1, #4 + strb r1, [ip, #0x3d] + ldr ip, [r4, #4] + ldr r1, [r4, #0x1c] + mov ip, ip, lsr #0xc + strh ip, [r1] + ldr ip, [r4, #8] + ldr r1, [r4, #0x1c] + mov ip, ip, lsr #0xc + strh ip, [r1, #2] + ldr r1, [r4, #0x1c] + strb r3, [r1, #0x3e] + ldr r1, [r4, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315C00: .word TRIG_TABLE +_02315C04: .word ov11_02324E34 + arm_func_end ov11_02315A9C + + arm_func_start ov11_02315C08 +ov11_02315C08: ; 0x02315C08 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r0 + ldr r3, [r8, #4] + ldrh r1, [r8, #0x10] + mov r0, r3, asr #0xb + add r0, r3, r0, lsr #20 + cmp r1, #0x4000 + mov r2, r0, asr #0xc + beq _02315C4C + cmp r1, #0xc000 + bne _02315C58 + mvn r0, #0xff + cmp r2, r0 + addle r0, r3, #0x300000 + strle r0, [r8, #4] + b _02315C58 +_02315C4C: + cmp r2, #0x200 + subge r0, r3, #0x300000 + strge r0, [r8, #4] +_02315C58: + ldrh r0, [r8, #0x10] + ldr r4, _02315E18 ; =TRIG_TABLE + ldrh r2, [r8, #0x12] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r3, [r4, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + mul r0, r3, r2 + mov r2, r0, lsl #1 + mov r0, r2, asr #0xb + ldr r3, [r8, #4] + add r0, r2, r0, lsr #20 + add r0, r3, r0, asr #12 + str r0, [r8, #4] + ldrsh r1, [r4, r1] + ldrh r0, [r8, #0x12] + ldr r3, [r8, #8] + mul r2, r1, r0 + mov r0, r2, asr #0xb + add r0, r2, r0, lsr #20 + sub r0, r3, r0, asr #12 + str r0, [r8, #8] + ldrh r0, [r8, #0x16] + cmp r0, #0 + subne r0, r0, #1 + strneh r0, [r8, #0x16] + bne _02315CDC + ldrh r0, [r8, #0x12] + cmp r0, #0x4800 + addlo r0, r0, #0x200 + strloh r0, [r8, #0x12] +_02315CDC: + ldrh r0, [r8, #0x16] + ldr r6, [r8, #4] + ldr r4, [r8, #8] + mov r0, r0, lsl #1 + rsb r0, r0, #0x40 + mov r0, r0, lsl #0x10 + movs r7, r0, asr #0x10 + mov r1, r6, asr #0xb + add r2, r6, r1, lsr #20 + mov r3, r4, asr #0xb + ldrsh r0, [r8, #0x20] + ldrh r5, [r8] + mov r1, #1 + movmi r7, #0 + mov r6, r2, asr #0xc + add r4, r4, r3, lsr #20 + bl sub_0201F348 + ldr r0, [r8, #0x1c] + mov r1, #5 + strb r1, [r0, #0x3c] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r1, _02315E1C ; =ov11_02324E34 + ldr r0, [r8, #0x1c] + ldr r1, [r1] + mov r2, r5 + ldr r1, [r1, #0xcb0] + mov r3, #0x8000 + bl sub_0201E7D8 + sub r1, r7, #1 + cmp r6, #0x100 + ldr r0, [r8, #0x1c] + mov r1, r1, lsl #2 + strb r1, [r0, #0x2f] + ldr r3, [r8, #0x1c] + mvnge r6, #0xff + ldrb r2, [r3, #0x3d] + mov r1, r6, lsl #0x10 + add r0, r7, r7, lsr #31 + orr r2, r2, #4 + strb r2, [r3, #0x3d] + add r3, r6, #0x100 + ldr r2, [r8, #0x1c] + mov r1, r1, asr #0x10 + strh r1, [r2] + mov r0, r0, asr #1 + rsb r2, r0, r4, asr #12 + mov r2, r2, lsl #0x10 + add r0, r0, r4, asr #12 + mov r0, r0, lsl #0x10 + ldr r5, [r8, #0x1c] + mov r6, r2, asr #0x10 + strh r6, [r5, #2] + mov r3, r3, lsl #0x10 + mov r5, r3, asr #0x10 + ldr r2, [r8, #0x1c] + mov r4, r0, asr #0x10 + strh r5, [r2, #4] + ldr r2, [r8, #0x1c] + mov r3, #0x3e + strh r6, [r2, #6] + ldr r2, [r8, #0x1c] + strh r1, [r2, #8] + ldr r1, [r8, #0x1c] + mov r2, #0x7e + strh r4, [r1, #0xa] + ldr r0, [r8, #0x1c] + strh r5, [r0, #0xc] + ldr r0, [r8, #0x1c] + strh r4, [r0, #0xe] + ldr r1, [r8, #0x1c] + mov r0, #0 + strb r3, [r1, #0x3e] + ldr r1, [r8, #0x1c] + strh r2, [r1, #0x2a] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02315E18: .word TRIG_TABLE +_02315E1C: .word ov11_02324E34 + arm_func_end ov11_02315C08 + + arm_func_start ov11_02315E20 +ov11_02315E20: ; 0x02315E20 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _02315E68 + rsb r0, r0, #0x30 + mov r0, r0, lsl #2 + rsb r0, r0, #0 + str r0, [r4, #8] + ldrh r0, [r4, #0x16] + rsb r0, r0, #0x30 + mov r0, r0, lsl #2 + rsb r0, r0, #0 + str r0, [r4, #4] + ldrh r0, [r4, #0x16] + sub r0, r0, #1 + strh r0, [r4, #0x16] + b _02315ECC +_02315E68: + ldr r0, _02315ED4 ; =ov11_02324E34 + ldr r0, [r0] + ldr r1, [r0, #0x24] + cmp r1, #0 + beq _02315EB4 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + mov r0, r0, asr #2 + mov r1, #3 + bl _s32_div_f + sub r1, r1, #0xc4 + ldr r0, _02315ED4 ; =ov11_02324E34 + str r1, [r4, #8] + ldr r2, [r0] + mov r0, #0 + ldr r1, [r2, #0x24] + sub r1, r1, #1 + str r1, [r2, #0x24] + ldmia sp!, {r4, pc} +_02315EB4: + ldr r0, [r4, #8] + add r0, r0, #2 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #4 + str r0, [r4, #4] +_02315ECC: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02315ED4: .word ov11_02324E34 + arm_func_end ov11_02315E20 + + arm_func_start ov11_02315ED8 +ov11_02315ED8: ; 0x02315ED8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + ldrh r0, [r5, #0x10] + ldr r4, _02316010 ; =TRIG_TABLE + ldrh r2, [r5, #0x12] + mov r0, r0, asr #4 + mov r1, r0, lsl #1 + mov r0, r1, lsl #1 + ldrsh r3, [r4, r0] + add r0, r1, #1 + mov r1, r0, lsl #1 + mul r2, r3, r2 + mov r0, r2, asr #0xb + ldr r3, [r5, #4] + add r0, r2, r0, lsr #20 + add r0, r3, r0, asr #12 + str r0, [r5, #4] + ldrsh r1, [r4, r1] + ldrh r0, [r5, #0x12] + ldr r3, [r5, #8] + mul r2, r1, r0 + mov r0, r2, asr #0xb + add r0, r2, r0, lsr #20 + sub r0, r3, r0, asr #12 + str r0, [r5, #8] + ldrh r0, [r5, #0x16] + add r0, r0, #1 + strh r0, [r5, #0x16] + ldrh r0, [r5, #0x16] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #25 + add r1, r1, r0, ror #25 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + mov r4, r0, asr #2 + cmp r4, #0x10 + ldrsh r0, [r5, #0x20] + mov r1, #1 + rsbhi r4, r4, #0x20 + bl sub_0201F348 + mov r2, #0 + ldr r1, [r5, #0x1c] + ldr r0, _02316014 ; =ov11_02324E34 + strb r2, [r1, #0x3c] + str r2, [sp] + str r2, [sp, #4] + ldr r1, [r0] + ldr r0, [r5, #0x1c] + ldr r1, [r1, #0xcb0] + mov r3, r2 + bl sub_0201E7D8 + ldr r3, [r5, #0x1c] + mov r0, #6 + mul r1, r4, r0 + ldrb r2, [r3, #0x3d] + add r1, r1, #0x80 + orr r0, r2, #4 + strb r0, [r3, #0x3d] + ldr r2, [r5, #4] + ldr r0, [r5, #0x1c] + mov r2, r2, lsr #0xc + strh r2, [r0] + ldr r2, [r5, #8] + ldr r0, [r5, #0x1c] + mov r2, r2, lsr #0xc + strh r2, [r0, #2] + ldr r0, [r5, #0x1c] + strb r1, [r0, #0x2f] + ldr r0, [r5, #0x1c] + mov r1, #0x3f + strb r1, [r0, #0x3e] + ldr r0, [r5, #0x1c] + mov r1, #0x7e + strh r1, [r0, #0x2a] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02316010: .word TRIG_TABLE +_02316014: .word ov11_02324E34 + arm_func_end ov11_02315ED8 + + arm_func_start ov11_02316018 +ov11_02316018: ; 0x02316018 + stmdb sp!, {r3, r4, r5, lr} + ldrh r1, [r0, #0x12] + ldr r3, [r0, #4] + add r1, r1, #0x40 + strh r1, [r0, #0x12] + ldrh r2, [r0] + mov r1, r3, asr #0xb + add r1, r3, r1, lsr #20 + cmp r2, #0 + mov r3, r1, asr #0xc + bne _02316094 + cmp r3, #8 + bgt _02316068 + ldrh r1, [r0, #0x10] + cmp r1, #0xc000 + moveq r2, #0 + ldreq r1, _02316160 ; =ov11_02324E34 + streqh r2, [r0, #0x12] + ldreq r1, [r1] + streq r2, [r1, #0x24] +_02316068: + cmp r3, #0xf8 + blt _023160E0 + ldrh r1, [r0, #0x10] + cmp r1, #0x4000 + bne _023160E0 + mov r2, #0 + ldr r1, _02316160 ; =ov11_02324E34 + strh r2, [r0, #0x12] + ldr r1, [r1] + str r2, [r1, #0x24] + b _023160E0 +_02316094: + mvn r1, #0x5f + cmp r3, r1 + bgt _023160BC + ldrh r1, [r0, #0x10] + cmp r1, #0xc000 + moveq r2, #0 + ldreq r1, _02316160 ; =ov11_02324E34 + streqh r2, [r0, #0x12] + ldreq r1, [r1] + streq r2, [r1, #0x24] +_023160BC: + cmp r3, #0x158 + blt _023160E0 + ldrh r1, [r0, #0x10] + cmp r1, #0x4000 + moveq r2, #0 + ldreq r1, _02316160 ; =ov11_02324E34 + streqh r2, [r0, #0x12] + ldreq r1, [r1] + streq r2, [r1, #0x24] +_023160E0: + ldrh r1, [r0, #0x10] + ldr r2, _02316160 ; =ov11_02324E34 + ldr lr, _02316164 ; =TRIG_TABLE + mov r1, r1, asr #4 + mov r3, r1, lsl #1 + mov r1, r3, lsl #1 + ldrsh ip, [lr, r1] + ldrh r1, [r0, #0x12] + ldr r4, [r2] + add r3, r3, #1 + mul r1, ip, r1 + ldr ip, [r4, #0x24] + ldr r5, [r0, #4] + add r4, r1, ip, lsl #8 + mov r1, r4, asr #0xb + add r1, r4, r1, lsr #20 + add r1, r5, r1, asr #12 + str r1, [r0, #4] + mov r1, r3, lsl #1 + ldrsh r3, [lr, r1] + ldrh r1, [r0, #0x12] + ldr r2, [r2] + ldr ip, [r0, #8] + mul r1, r3, r1 + ldr r2, [r2, #0x24] + add r2, r1, r2, lsl #8 + mov r1, r2, asr #0xb + add r1, r2, r1, lsr #20 + sub r1, ip, r1, asr #12 + str r1, [r0, #8] + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02316160: .word ov11_02324E34 +_02316164: .word TRIG_TABLE + arm_func_end ov11_02316018 + + arm_func_start ov11_02316168 +ov11_02316168: ; 0x02316168 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x14 + bl OverlayIsLoaded + cmp r0, #0 + beq _023161BC + bl ov16_0238CCBC + cmp r0, #0 + beq _023161BC + bl ov16_0238CCBC + cmp r0, #1 + str r0, [r4, #0xc] + cmpne r0, #2 + beq _023161B0 + cmp r0, #3 + moveq r0, #0 + streqh r0, [r4, #0x16] + b _023161B8 +_023161B0: + mov r0, #0 + strh r0, [r4, #0x16] +_023161B8: + bl ov16_0238CCD8 +_023161BC: + ldrh r0, [r4, #0x16] + add r0, r0, #1 + strh r0, [r4, #0x16] + ldr r2, [r4, #0xc] + cmp r2, #5 + addls pc, pc, r2, lsl #2 + b _02316324 +_023161D8: ; jump table + b _023161F0 ; case 0 + b _02316214 ; case 1 + b _0231624C ; case 2 + b _0231626C ; case 3 + b _023162F4 ; case 4 + b _0231631C ; case 5 +_023161F0: + ldr r0, [r4, #8] + cmp r0, #0x80 + addlo r0, r0, #1 + strlo r0, [r4, #8] + addhs r0, r2, #1 + strhs r0, [r4, #0xc] + movhs r0, #0 + strhsh r0, [r4, #0x16] + b _02316324 +_02316214: + ldrh r0, [r4, #0x10] + cmp r0, #0x10 + addlo r0, r0, #1 + strloh r0, [r4, #0x10] + movlo r0, #0 + strloh r0, [r4, #0x16] + blo _02316324 + add r0, r2, #1 + str r0, [r4, #0xc] + mov r0, #0 + strh r0, [r4, #0x16] + mov r0, #0x100 + strh r0, [r4, #0x12] + b _02316324 +_0231624C: + ldrh r1, [r4, #0x16] + ldr r0, _0231632C ; =0x00002710 + cmp r1, r0 + addhi r0, r2, #1 + strhi r0, [r4, #0xc] + movhi r0, #0 + strhih r0, [r4, #0x16] + b _02316324 +_0231626C: + ldrh r0, [r4, #0x16] + mov r0, r0, lsl #0x1f + mov r0, r0, lsr #0x17 + add r0, r0, #0x80 + str r0, [r4, #8] + ldrh r0, [r4, #0x16] + add r0, r0, #1 + mov r0, r0, lsl #0x1f + mov r0, r0, lsr #0x17 + add r0, r0, #0x80 + str r0, [r4, #4] + ldrh r0, [r4, #0x16] + cmp r0, #0xb4 + movlo r0, #0x180 + strlo r0, [r4, #4] + ldrh r0, [r4, #0x16] + cmp r0, #0xb4 + bne _023162B8 + bl ov16_0238CCF0 +_023162B8: + ldrh r0, [r4, #0x16] + cmp r0, #0xc4 + movhi r0, #0x180 + strhi r0, [r4, #8] + ldrh r0, [r4, #0x16] + cmp r0, #0xdc + bls _02316324 + mov r0, #0x180 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r0, #0 + add r1, r1, #1 + str r1, [r4, #0xc] + strh r0, [r4, #0x16] + b _02316324 +_023162F4: + mov r0, #0 + strh r0, [r4, #0x12] + mov r0, #0x80 + str r0, [r4, #4] + mov r0, #0x180 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02316324 +_0231631C: + mov r0, #0 + strh r0, [r4, #0x12] +_02316324: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0231632C: .word 0x00002710 + arm_func_end ov11_02316168 + + arm_func_start ov11_02316330 +ov11_02316330: ; 0x02316330 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _023163A4 ; =ov11_02324E34 + ldr r0, [r0] + ldrb r0, [r0, #0xcac] + cmp r0, #0 + bne _0231639C + ldr r1, _023163A8 ; =ov11_02324B9C + add r0, sp, #0 + mov r2, #6 + bl LoadWteFromRom + add r0, sp, #0 + mov r1, #0x8000 + mov r2, #1 + mov r3, #0 + bl sub_0201E12C + add r0, sp, #0 + bl DelayWteFree + ldr r0, _023163AC ; =ov11_02324BB4 + mov r1, #0 + bl sub_0201DF38 + ldr r1, _023163A4 ; =ov11_02324E34 + mov r2, #1 + ldr r3, [r1] + str r0, [r3, #0xcb0] + ldr r0, [r1] + strb r2, [r0, #0xcac] +_0231639C: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_023163A4: .word ov11_02324E34 +_023163A8: .word ov11_02324B9C +_023163AC: .word ov11_02324BB4 + arm_func_end ov11_02316330 + + arm_func_start ov11_023163B0 +ov11_023163B0: ; 0x023163B0 + stmdb sp!, {r4, r5, r6, lr} + ldr r5, _023163DC ; =ov11_023248C0 + mov r6, #0 + mov r4, #0x1c +_023163C0: + add r1, r6, #3 + mla r0, r1, r4, r5 + bl ov11_02314D48 + add r6, r6, #1 + cmp r6, #0x12 + blt _023163C0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023163DC: .word ov11_023248C0 + arm_func_end ov11_023163B0 + + arm_func_start ov11_023163E0 +ov11_023163E0: ; 0x023163E0 + ldrh r2, [r0, #0x12] + ldr r1, [r0, #8] + cmp r1, r2, lsl #2 + movlo r1, #0xff + strloh r1, [r0] + sublo r0, r1, #0x100 + bxlo lr + sub r1, r1, r2, lsl #2 + str r1, [r0, #8] + ldrh r1, [r0, #0x12] + ldr r2, [r0, #4] + add r1, r2, r1 + str r1, [r0, #4] + cmp r1, #0x16000 + ldrhi r1, [r0, #4] + subhi r1, r1, #0x14000 + strhi r1, [r0, #4] + mov r0, #0 + bx lr + arm_func_end ov11_023163E0 + + arm_func_start ov11_0231642C +ov11_0231642C: ; 0x0231642C + ldr ip, _02316438 ; =ov11_0230D270 + ldr r0, _0231643C ; =ov11_02324BF8 + bx ip + .align 2, 0 +_02316438: .word ov11_0230D270 +_0231643C: .word ov11_02324BF8 + arm_func_end ov11_0231642C + + arm_func_start ov11_02316440 +ov11_02316440: ; 0x02316440 + ldr ip, _0231644C ; =ov11_0230D17C + ldr r0, _02316450 ; =ov11_02324BF8 + bx ip + .align 2, 0 +_0231644C: .word ov11_0230D17C +_02316450: .word ov11_02324BF8 + arm_func_end ov11_02316440 + + arm_func_start ov11_02316454 +ov11_02316454: ; 0x02316454 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #0xf + bl MemAlloc + ldr r1, _023164A8 ; =ov11_02324E78 + str r0, [r1] + bl ov11_02316528 + mov r0, #0x10 + bl ov11_022E9D10 + ldr r1, _023164A8 ; =ov11_02324E78 + mov r3, #0 + ldr r2, [r1] + mov r0, #1 + str r3, [r2, #8] + ldr r2, [r1] + strb r0, [r2, #6] + ldr r2, [r1] + strb r3, [r2, #7] + ldr r1, [r1] + str r3, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_023164A8: .word ov11_02324E78 + arm_func_end ov11_02316454 + + arm_func_start ov11_023164AC +ov11_023164AC: ; 0x023164AC + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _023164D8 + ldr r0, _02316524 ; =ov11_02324E78 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #8 + movne r0, #1 + strneb r0, [r1, #7] + movne r0, #0 + ldmneia sp!, {r3, pc} +_023164D8: + bl ov11_02316528 + ldr r0, _02316524 ; =ov11_02324E78 + mov r2, #8 + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + ldr r0, [r1, #8] + cmp r0, #0 + beq _02316504 + add r0, r1, #8 + bl sub_02047150 +_02316504: + ldr r0, _02316524 ; =ov11_02324E78 + ldr r0, [r0] + bl MemFree + ldr r0, _02316524 ; =ov11_02324E78 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02316524: .word ov11_02324E78 + arm_func_end ov11_023164AC + + arm_func_start ov11_02316528 +ov11_02316528: ; 0x02316528 + stmdb sp!, {r3, lr} + ldr r1, _023165A0 ; =ov11_02324E78 + mov r3, #1 + ldr r0, [r1] + mov r2, #0 + strb r2, [r0, #4] + ldr r2, [r1] + sub r0, r3, #2 + str r3, [r2] + ldr r1, [r1] + strb r3, [r1, #5] + bl ov11_022F4734 + mov r0, #1 + bl ov11_022EAFF8 + ldr r0, _023165A0 ; =ov11_02324E78 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0231658C + bl GroundBg_FreeAll + ldr r0, _023165A0 ; =ov11_02324E78 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _023165A0 ; =ov11_02324E78 + mov r1, #0 + str r1, [r0, #4] +_0231658C: + ldr r0, _023165A0 ; =ov11_02324E78 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #6] + ldmia sp!, {r3, pc} + .align 2, 0 +_023165A0: .word ov11_02324E78 + arm_func_end ov11_02316528 + + arm_func_start ov11_023165A4 +ov11_023165A4: ; 0x023165A4 + ldr r0, _023165C0 ; =ov11_02324E78 + ldr r1, [r0] + ldrb r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #5] + bx lr + .align 2, 0 +_023165C0: .word ov11_02324E78 + arm_func_end ov11_023165A4 + + arm_func_start ov11_023165C4 +ov11_023165C4: ; 0x023165C4 + bx lr + arm_func_end ov11_023165C4 + + arm_func_start ov11_023165C8 +ov11_023165C8: ; 0x023165C8 + stmdb sp!, {r3, lr} + ldr r0, _02316788 ; =ov11_02324E78 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _02316780 +_023165E4: ; jump table + b _02316608 ; case 0 + b _02316630 ; case 1 + b _02316780 ; case 2 + b _02316780 ; case 3 + b _02316780 ; case 4 + b _023166C0 ; case 5 + b _023166EC ; case 6 + b _02316738 ; case 7 + b _02316770 ; case 8 +_02316608: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02316788 ; =ov11_02324E78 + mov r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #5] + bne _02316780 + ldr r0, _02316788 ; =ov11_02324E78 + ldr r0, [r0] + str r1, [r0] +_02316630: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02316788 ; =ov11_02324E78 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #5] + bne _02316780 + ldr r0, _02316788 ; =ov11_02324E78 + ldr r2, [r0] + ldrb r1, [r2, #7] + cmp r1, #0 + beq _02316688 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02316788 ; =ov11_02324E78 + mov r3, #1 + ldr r2, [r0] + mov r1, #7 + strb r3, [r2, #5] + ldr r0, [r0] + str r1, [r0] + b _02316780 +_02316688: + ldrb r1, [r2, #6] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2, #5] + beq _02316780 + mov r1, #1 + strb r1, [r2, #5] + ldr r1, [r0] + mov r2, #0 + strb r2, [r1, #6] + ldr r0, [r0] + mov r1, #2 + str r1, [r0] + b _02316780 +_023166C0: + bl IsScreenFadeInProgress + cmp r0, #0 + ldrne r0, _02316788 ; =ov11_02324E78 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #5] + bne _02316780 + ldr r0, _02316788 ; =ov11_02324E78 + mov r1, #6 + ldr r0, [r0] + str r1, [r0] +_023166EC: + ldr r0, _02316788 ; =ov11_02324E78 + ldr r1, [r0] + ldrb r0, [r1, #7] + cmp r0, #0 + ldreqb r0, [r1, #6] + cmpeq r0, #0 + moveq r0, #0 + streqb r0, [r1, #5] + beq _02316780 + mov r0, #0x10 + bl ov11_022E9CB0 + ldr r0, _02316788 ; =ov11_02324E78 + mov r3, #0 + ldr r2, [r0] + mov r1, #1 + str r3, [r2] + ldr r0, [r0] + strb r1, [r0, #5] + b _02316780 +_02316738: + bl IsScreenFadeInProgress + cmp r0, #0 + bne _02316780 + ldr r0, _02316788 ; =ov11_02324E78 + ldr r1, [r0] + ldr r0, [r1, #8] + cmp r0, #0 + beq _02316760 + add r0, r1, #8 + bl sub_02047150 +_02316760: + ldr r0, _02316788 ; =ov11_02324E78 + mov r1, #8 + ldr r0, [r0] + str r1, [r0] +_02316770: + ldr r0, _02316788 ; =ov11_02324E78 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #5] +_02316780: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02316788: .word ov11_02324E78 + arm_func_end ov11_023165C8 + ; 0x0231678C + + arm_func_start ov11_0231678C +ov11_0231678C: ; 0x0231678C + stmdb sp!, {r3, lr} + ldr r0, _02316838 ; =ov11_02324E78 + ldr r2, [r0] + ldr r1, [r2] + cmp r1, #2 + bne _023167E0 + mov r1, #1 + strb r1, [r2, #5] + ldr r3, [r0] + ldr r0, [r3, #8] + cmp r0, #0 + bne _023167CC + ldr r1, _0231683C ; =ov11_02324BCC + ldr r2, _02316840 ; =ov11_023168E0 + add r0, r3, #8 + bl sub_0204707C +_023167CC: + ldr r0, _02316838 ; =ov11_02324E78 + mov r1, #3 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} +_023167E0: + cmp r1, #3 + ldmneia sp!, {r3, pc} + mov r0, #1 + strb r0, [r2, #5] + bl ov11_02316528 + mov r0, #0x2f4 + mov r1, #0xf + bl MemAlloc + ldr r2, _02316838 ; =ov11_02324E78 + ldr r1, _02316844 ; =ov11_02324BDC + str r0, [r2, #4] + bl GroundBg_Init + ldr r0, _02316838 ; =ov11_02324E78 + ldr r1, _02316848 ; =ov11_02324C1C + ldr r0, [r0, #4] + mov r2, #0 + bl ov11_022EDE64 + ldr r0, _02316838 ; =ov11_02324E78 + mov r1, #4 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02316838: .word ov11_02324E78 +_0231683C: .word ov11_02324BCC +_02316840: .word ov11_023168E0 +_02316844: .word ov11_02324BDC +_02316848: .word ov11_02324C1C + arm_func_end ov11_0231678C + + arm_func_start ov11_0231684C +ov11_0231684C: ; 0x0231684C + stmdb sp!, {r3, lr} + ldr r0, _02316898 ; =ov11_02324E78 + ldr r1, [r0] + ldr r1, [r1] + cmp r1, #4 + bne _02316890 + ldr r0, [r0, #4] + bl ov11_022EF70C + mov r0, #1 + bl ov11_022EF53C + ldr r0, _02316898 ; =ov11_02324E78 + mov r3, #1 + ldr r2, [r0] + mov r1, #5 + strb r3, [r2, #4] + ldr r0, [r0] + str r1, [r0] +_02316890: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02316898: .word ov11_02324E78 + arm_func_end ov11_0231684C + + arm_func_start ov11_0231689C +ov11_0231689C: ; 0x0231689C + stmdb sp!, {r3, lr} + ldr r0, _023168DC ; =ov11_02324E78 + ldr r1, [r0] + ldrb r1, [r1, #4] + cmp r1, #0 + ldrne r0, [r0, #4] + cmpne r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022EFB70 + ldr r0, _023168DC ; =ov11_02324E78 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x10 + strb r2, [r1, #4] + bl ov11_022E9C98 + ldmia sp!, {r3, pc} + .align 2, 0 +_023168DC: .word ov11_02324E78 + arm_func_end ov11_0231689C + + arm_func_start ov11_023168E0 +ov11_023168E0: ; 0x023168E0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl GetGameMode + mov r4, r0 + mov r0, #0x400 + mov r1, #0xf + bl MemAlloc + mov r6, r0 + cmp r4, #2 + mov r7, #0 + bne _023169FC + ldr r4, _02316A2C ; =ov11_02324C38 + ldr r5, _02316A30 ; =ov11_02324C30 + mov r8, r7 + mov fp, #5 +_0231691C: + mov r0, r8, lsl #0x18 + mov r0, r0, asr #0x18 + bl IsAcceptedMissionSlotEmpty + cmp r0, #0 + bne _023169F0 + mov r0, r8, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov sb, r0 + ldrb r0, [sb] + mov r1, fp + mov r2, r7 + cmp r0, #5 + moveq r3, r5 + movne r3, r4 + mov r0, sl + bl DrawTextInWindow + mov r0, r6 + mov r1, #0x400 + mov r2, sb + bl sub_02061F44 + mov r0, sl + mov r1, #0x12 + mov r2, r7 + mov r3, r6 + bl DrawTextInWindow + mov r0, r6 + mov r1, #0x400 + mov r2, sb + bl sub_02061F90 + mov r0, sl + mov r1, #0x40 + add r2, r7, #0xa + mov r3, r6 + bl DrawTextInWindow + ldrb r1, [sb, #1] + cmp r1, #0xe + bne _023169CC + ldr r3, _02316A34 ; =0x00003C2A + mov r0, sl + mov r1, #0xcc + add r2, r7, #0xa + bl AppendStandardStringToMission + b _023169EC +_023169CC: + add r0, sb, #4 + bl GetMissionRankWithCapAndModifiersAndCap + bl sub_02062DB4 + mov r3, r0 + mov r0, sl + mov r1, #0xcc + add r2, r7, #0xa + bl DrawTextInWindow +_023169EC: + add r7, r7, #0x14 +_023169F0: + add r8, r8, #1 + cmp r8, #8 + blt _0231691C +_023169FC: + cmp r7, #0 + bne _02316A18 + ldr r3, _02316A38 ; =0x000008DF + mov r0, sl + mov r1, #5 + mov r2, #0x48 + bl AppendStandardStringToMission +_02316A18: + mov r0, sl + bl UpdateWindow + mov r0, r6 + bl MemFree + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02316A2C: .word ov11_02324C38 +_02316A30: .word ov11_02324C30 +#if defined(EUROPE) +_02316A34: .word 0x00003C2C +_02316A38: .word 0x000008DF +#elif defined(JAPAN) +_02316A34: .word 0x00003868 +_02316A38: .word 0x00001D37 +#else +_02316A34: .word 0x00003C2A +_02316A38: .word 0x000008DF +#endif + arm_func_end ov11_023168E0 + + .bss + .global ov11_02324E80 +ov11_02324E80: + .space 0x14 + .global ov11_02324E94 +ov11_02324E94: + .space 0x10 + .global ov11_02324EA4 +ov11_02324EA4: + .space 0x10 + .global LOCK_NOTIFY_ARRAY +LOCK_NOTIFY_ARRAY: + .space 0x18 + .global ov11_02324ECC +ov11_02324ECC: + .space 0x50 + .global ov11_02324F1C +ov11_02324F1C: + .space 0x54 + .global ov11_02324F70 +ov11_02324F70: + .space 0x4 + .global ov11_02324F74 +ov11_02324F74: + .space 0xE + .global ov11_02324F82 +ov11_02324F82: + .space 0x8 + .global ov11_02324F8A +ov11_02324F8A: + .space 0xA + .global ov11_02324F94 +ov11_02324F94: + .space 0x4 + .global ov11_02324F98 +ov11_02324F98: + .space 0x4 + .global ov11_02324F9C +ov11_02324F9C: + .space 0x4 + .global ov11_02324FA0 +ov11_02324FA0: + .space 0x20 + .global GROUND_MEMORY_ARENA_1 +GROUND_MEMORY_ARENA_1: + .space 0x64000 + .global ov11_02388FC0 +ov11_02388FC0: + .space 0x14 + .global ov11_02388FD4 +ov11_02388FD4: + .space 0x4 + .global ov11_02388FD8 +ov11_02388FD8: + .space 0x40 + .global ov11_02389018 +ov11_02389018: + .space 0x44 + .global ov11_0238905C +ov11_0238905C: + .space 0x44 + .global ov11_023890A0 +ov11_023890A0: + .space 0x44 + .global ov11_023890E4 +ov11_023890E4: + .space 0x44 + .global ov11_02389128 +ov11_02389128: + .space 0x44 + .global ov11_0238916C +ov11_0238916C: + .space 0x88 + .global ov11_023891F4 +ov11_023891F4: + .space 0x4 + .global ov11_023891F8 +ov11_023891F8: + .space 0xA8 + .global ov11_023892A0 +ov11_023892A0: + .space 0xD80 + .global ov11_0238A020 +ov11_0238A020: + .space 0x14 + .global ov11_0238A034 +ov11_0238A034: + .space 0xC + .global ov11_0238A040 +ov11_0238A040: + .space 0xC + .global ov11_0238A04C +ov11_0238A04C: + .space 0x4 + .global ov11_0238A050 +ov11_0238A050: + .space 0xC + .global ov11_0238A05C +ov11_0238A05C: + .space 0xC + .global ov11_0238A068 +ov11_0238A068: + .space 0xC + .global ov11_0238A074 +ov11_0238A074: + .space 0x4 + .global ov11_0238A078 +ov11_0238A078: + .space 0x8 + .global ov11_0238A080 +ov11_0238A080: + .space 0x4 + .global ov11_0238A084 +ov11_0238A084: + .space 0x4 + .global ov11_0238A088 +ov11_0238A088: + .space 0x4 + .global ov11_0238A08C +ov11_0238A08C: + .space 0x4 + .global ov11_0238A090 +ov11_0238A090: + .space 0x4 + .global ov11_0238A094 +ov11_0238A094: + .space 0x4 + .global ov11_0238A098 +ov11_0238A098: + .space 0x98 + .global ov11_0238A130 +ov11_0238A130: + .space 0x4 + .global ov11_0238A134 +ov11_0238A134: + .space 0xC diff --git a/include/main_020663C8.h b/include/main_020663C8.h new file mode 100644 index 00000000..aca93b3b --- /dev/null +++ b/include/main_020663C8.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_MAIN_020663C8_H +#define PMDSKY_MAIN_020663C8_H + +#include "util.h" + +void sub_020663C8(s32 a, s32 b, s32 c, s32 d, s8 e); +void sub_020663DC(s32 a, s32 b, s32 c, s32 d, s32 e, u16 f); +void sub_02066408(s32 a, s32 b, s32 c, s32 d, s32 e, u16 f, s32 g); +s32 sub_02066434(s32 a); +void sub_0206645C(s32 a); +void sub_02066468(s32 a, s32 b); +void sub_02066478(s32 a, s32 b); +void sub_02066488(s32 a, s32 b, s32 c); +s32 sub_02066494(s32 a); +void sub_020664AC(s32 a); + +#endif diff --git a/include/main_0206C0D8.h b/include/main_0206C0D8.h new file mode 100644 index 00000000..43173b8b --- /dev/null +++ b/include/main_0206C0D8.h @@ -0,0 +1,22 @@ +#ifndef PMDSKY_MAIN_0206C0D8_H +#define PMDSKY_MAIN_0206C0D8_H + +#include "util.h" + +struct unk_020B0B70 { + s16 field_0x0; + s16 field_0x2; +}; + +void sub_0206C0D8(s16 *out); +void sub_0206C0EC(s16 v); +void sub_0206C0FC(s16 *out); +void sub_0206C110(s16 v); +void sub_0206C120(s16 *out); +void sub_0206C134(s16 v); +void sub_0206C144(u8 *dst); +void sub_0206C164(u8 *src); +void sub_0206C184(s32 unused, s32 a); +s32 sub_0206C19C(s32 unused, s32 a); + +#endif diff --git a/include/overlay_00_022DB0E0.h b/include/overlay_00_022DB0E0.h new file mode 100644 index 00000000..193fd842 --- /dev/null +++ b/include/overlay_00_022DB0E0.h @@ -0,0 +1,23 @@ +#ifndef PMDSKY_OVERLAY_00_022DB0E0_H +#define PMDSKY_OVERLAY_00_022DB0E0_H + +#include "util.h" + +struct unk_022DB0E0 { + u32 field_0x0; + u32 field_0x4; + u32 field_0x8; +}; + +bool8 Dwci_Acc_SetMaskBits(u32 *p, u32 value, u32 shift, u32 mask); +u64 Dwci_Acc_GetUserId(struct unk_022DB0E0* a); +u32 Dwci_Acc_GetPlayerId(struct unk_022DB0E0* a); +u64 Dwci_Acc_GetFriendKey(struct unk_022DB0E0* a); +u32 Dwci_Acc_GetGsProfileId(struct unk_022DB0E0* a); +void Dwci_Acc_SetUserId(struct unk_022DB0E0* a, u32 lo, u32 hi); +void Dwci_Acc_SetPlayerId(struct unk_022DB0E0* a, u32 v); +void Dwci_Acc_SetFriendKey(struct unk_022DB0E0* a, u32 lo, u32 hi); +void Dwci_Acc_SetGsProfileId(struct unk_022DB0E0* a, u32 v); +u32 Dwci_Acc_GetFlags(struct unk_022DB0E0* a); + +#endif diff --git a/include/overlay_11_022E9A78.h b/include/overlay_11_022E9A78.h new file mode 100644 index 00000000..b1285d9a --- /dev/null +++ b/include/overlay_11_022E9A78.h @@ -0,0 +1,30 @@ +#ifndef PMDSKY_OVERLAY_11_022E9A78_H +#define PMDSKY_OVERLAY_11_022E9A78_H + +#include "util.h" + +struct unk_02388FC0 { + bool8 field_0x0; + u8 field_0x1; + bool8 field_0x2; + u8 field_0x3; + u8 field_0x4[8]; + s32 field_0xC; +}; + +struct unk_023890A0 { + u8 field_0x0[0x44]; +}; + +void ov11_022E9A78(s32 a); +void ov11_022E9A90(s32 a); +void ov11_022E9AA8(s32 a); +void ov11_022E9AC0(s32 a); +void ov11_022E9AD8(s32 a); +void ov11_022E9AF0(s32 a, u8 b); +void ov11_022E9B0C(s32 a); +void ov11_022E9B24(s32 a); +void ov11_022E9B40(s32 a); +void ov11_022E9B5C(s32 a, s32 b, s32 c); + +#endif diff --git a/include/overlay_11_0230CB88.h b/include/overlay_11_0230CB88.h new file mode 100644 index 00000000..6dcf9cd9 --- /dev/null +++ b/include/overlay_11_0230CB88.h @@ -0,0 +1,18 @@ +#ifndef PMDSKY_OVERLAY_11_0230CB88_H +#define PMDSKY_OVERLAY_11_0230CB88_H + +#include "util.h" +#include "main_020348E4.h" + +void ov11_0230CB88(s32 a); +u32 LoadDuskullBankOverlay(void); +u32 LoadLuminousSpringOverlay(void); +void LoadChimechoAssemblyOverlay(s32 a); +void LoadElectivireLinkShopOverlay(s32 a); +void LoadSpindaCafeOverlayInit(void); +void LoadSpindaCafeOverlayResume(void); +bool8 IsSpindaCafeOverlaySuspended(void); +void LoadRecycleShopOverlayInit(void); +void LoadRecycleShopOverlayResume(void); + +#endif diff --git a/main.lsf b/main.lsf index c51fe692..a16a5950 100644 --- a/main.lsf +++ b/main.lsf @@ -369,10 +369,14 @@ Static main Object asm/main_02065BD8.o Object src/main_02065C48.o Object asm/main_02065C84.o + Object src/main_020663C8.o + Object asm/main_020664B8.o Object src/dungeon_init_2.o Object asm/main_0206A750.o Object src/main_0206A84C.o Object asm/main_0206A878.o + Object src/main_0206C0D8.o + Object asm/main_0206C1BC.o Object src/main_0206C98C.o Object asm/main_0206C9BC.o Object src/main_0207191C.o @@ -545,6 +549,8 @@ Overlay OVY_0 { After main Object asm/overlay_00.o + Object src/overlay_00_022DB0E0.o + Object asm/overlay_00_022DB1A4.o Object src/overlay_00_0230D388.o Object asm/overlay_00_0230D398.o Object src/overlay_00_0230E3E8.o @@ -627,11 +633,15 @@ Overlay OVY_11 Object asm/overlay_11.o Object src/overlay_11_022E96E4.o Object asm/overlay_11_022E96F4.o + Object src/overlay_11_022E9A78.o + Object asm/overlay_11_022E9B84.o Object src/ground_bg.o Object asm/overlay_11_022ECD24_data.o Object asm/overlay_11_022ECD24.o Object src/ground_bg_1.o Object asm/overlay_11_022EE5E4.o + Object src/overlay_11_0230CB88.o + Object asm/overlay_11_0230CCE0.o } Overlay OVY_12 { diff --git a/src/main_020663C8.c b/src/main_020663C8.c new file mode 100644 index 00000000..05400145 --- /dev/null +++ b/src/main_020663C8.c @@ -0,0 +1,81 @@ +#include "main_020663C8.h" + +extern void sub_02046D20(s32 a); + +extern s32 sub_02046C78(s32 a); + +extern void sub_02046C30(s32 a, s32 b, s32 c); + +extern void sub_02046BE8(s32 a, s32 b, s32 c); + +extern void sub_02046BA0(s32 a); + +extern s32 sub_02046B04(s32 a); + +extern void sub_02046A20(s32 a, s32 b, s32 c, s32 d, s32 e, s32 f, s32 g); + +extern void sub_02046A9C(s32 a, s32 b, s32 c, s32 d, s32 e); + +void sub_020663C8(s32 a, s32 b, s32 c, s32 d, s8 e) +{ + sub_02046A9C(a, b, c, d, e); +} + +void sub_020663DC(s32 a, s32 b, s32 c, s32 d, s32 e, u16 f) +{ + sub_02046A20(a, b, c, d, e, f, 0); +} + +void sub_02066408(s32 a, s32 b, s32 c, s32 d, s32 e, u16 f, s32 g) +{ + sub_02046A20(a, b, c, d, e, f, g); +} + +s32 sub_02066434(s32 a) +{ + s32 r = sub_02046B04(a); + + if (r == -2) { + return 0x1F; + } + + if (r == -1) { + return 0; + } + + return r; +} + +void sub_0206645C(s32 a) +{ + sub_02046BA0(a); +} + +void sub_02066468(s32 a, s32 b) +{ + sub_02046BE8(a, b, 0); +} + +void sub_02066478(s32 a, s32 b) +{ + sub_02046C30(a, b, 0); +} + +void sub_02066488(s32 a, s32 b, s32 c) +{ + sub_02046BE8(a, b, c); +} + +s32 sub_02066494(s32 a) +{ + if (sub_02046C78(a) != 0) { + return 0x1F; + } + + return 0; +} + +void sub_020664AC(s32 a) +{ + sub_02046D20(a); +} diff --git a/src/main_0206C0D8.c b/src/main_0206C0D8.c new file mode 100644 index 00000000..90db2e49 --- /dev/null +++ b/src/main_0206C0D8.c @@ -0,0 +1,73 @@ +#include "main_0206C0D8.h" + +extern void sub_0207A8F4(s32 a, s32 b, s32 c); + +extern void sub_0207A7EC(s32 a, s32 b, s32 c); + +extern struct unk_020B0B70 _020B0B70; + +extern s16 _020B0B6C; + +extern u8 _020B0B74[8]; + +void sub_0206C0D8(s16 *out) +{ + *out = _020B0B6C; +} + +void sub_0206C0EC(s16 v) +{ + _020B0B6C = v; +} + +void sub_0206C0FC(s16 *out) +{ + *out = _020B0B70.field_0x2; +} + +void sub_0206C110(s16 v) +{ + _020B0B70.field_0x2 = v; +} + +void sub_0206C120(s16 *out) +{ + *out = _020B0B70.field_0x0; +} + +void sub_0206C134(s16 v) +{ + _020B0B70.field_0x0 = v; +} + +void sub_0206C144(u8 *dst) +{ + u8 *src = _020B0B74; + u32 n = 8; + + do { + *dst++ = *src++; + } while (--n != 0); +} + +void sub_0206C164(u8 *src) +{ + u8 *dst = _020B0B74; + u32 n = 8; + + do { + *dst++ = *src++; + } while (--n != 0); +} + +void sub_0206C184(s32 unused, s32 a) +{ + sub_0207A7EC(0, -1, a); +} + +s32 sub_0206C19C(s32 unused, s32 a) +{ + sub_0207A8F4(0, -1, a); + + return a; +} diff --git a/src/overlay_00_022DB0E0.c b/src/overlay_00_022DB0E0.c new file mode 100644 index 00000000..e9e62889 --- /dev/null +++ b/src/overlay_00_022DB0E0.c @@ -0,0 +1,61 @@ +#include "overlay_00_022DB0E0.h" + +extern bool8 Dwci_Acc_SetMaskBits(u32 *p, u32 value, u32 shift, u32 mask); + +bool8 Dwci_Acc_SetMaskBits(u32 *p, u32 value, u32 shift, u32 mask) +{ + if ((value & ~mask) != 0) { + return FALSE; + } + + *p = (*p & ~(mask << shift)) | (value << shift); + + return TRUE; +} + +u64 Dwci_Acc_GetUserId(struct unk_022DB0E0* a) +{ + return ((u64) (a->field_0x0 & 0x7FF) << 32) | a->field_0x4; +} + +u32 Dwci_Acc_GetPlayerId(struct unk_022DB0E0* a) +{ + return a->field_0x8; +} + +u64 Dwci_Acc_GetFriendKey(struct unk_022DB0E0* a) +{ + return ((u64) a->field_0x8 << 32) | a->field_0x4; +} + +u32 Dwci_Acc_GetGsProfileId(struct unk_022DB0E0* a) +{ + return a->field_0x4; +} + +void Dwci_Acc_SetUserId(struct unk_022DB0E0* a, u32 lo, u32 hi) +{ + Dwci_Acc_SetMaskBits(&a->field_0x0, hi, 0, 0x7FF); + a->field_0x4 = lo; +} + +void Dwci_Acc_SetPlayerId(struct unk_022DB0E0* a, u32 v) +{ + a->field_0x8 = v; +} + +void Dwci_Acc_SetFriendKey(struct unk_022DB0E0* a, u32 lo, u32 hi) +{ + a->field_0x4 = lo; + a->field_0x8 = hi; +} + +void Dwci_Acc_SetGsProfileId(struct unk_022DB0E0* a, u32 v) +{ + a->field_0x4 = v; +} + +u32 Dwci_Acc_GetFlags(struct unk_022DB0E0* a) +{ + return (a->field_0x0 >> 11) & 0x1FFFFF; +} diff --git a/src/overlay_11_022E9A78.c b/src/overlay_11_022E9A78.c new file mode 100644 index 00000000..2025d45c --- /dev/null +++ b/src/overlay_11_022E9A78.c @@ -0,0 +1,72 @@ +#include "overlay_11_022E9A78.h" + +extern void sub_0200BBF8(struct unk_023890A0 *p, s32 a, s32 b, s32 c); + +extern void sub_0200BB74(struct unk_023890A0 *p, s32 a, s32 b); + +extern struct unk_023890A0 ov11_0238905C; + +extern void sub_0200BB60(struct unk_023890A0 *p, s32 a); + +extern struct unk_02388FC0 ov11_02388FC0; + +extern void sub_0200B918(struct unk_023890A0 *p, s32 a); + +extern struct unk_023890A0 ov11_023890A0; + +extern struct unk_023890A0 ov11_023890E4; + +extern void sub_0200B908(struct unk_023890A0 *p, s32 a); + +void ov11_022E9A78(s32 a) +{ + sub_0200B908(&ov11_023890E4, a); +} + +void ov11_022E9A90(s32 a) +{ + sub_0200B908(&ov11_023890A0, a); +} + +void ov11_022E9AA8(s32 a) +{ + sub_0200B918(&ov11_023890E4, a); +} + +void ov11_022E9AC0(s32 a) +{ + sub_0200B918(&ov11_023890A0, a); +} + +void ov11_022E9AD8(s32 a) +{ + ov11_02388FC0.field_0x0 = TRUE; + ov11_02388FC0.field_0xC = a; +} + +void ov11_022E9AF0(s32 a, u8 b) +{ + ov11_02388FC0.field_0x2 = TRUE; + ov11_02388FC0.field_0x3 = b; + ov11_02388FC0.field_0xC = a; +} + +void ov11_022E9B0C(s32 a) +{ + sub_0200BB60(&ov11_0238905C, a); +} + +void ov11_022E9B24(s32 a) +{ + sub_0200BB74(&ov11_0238905C, 1, a); +} + +void ov11_022E9B40(s32 a) +{ + sub_0200BB74(&ov11_0238905C, 2, a); +} + +void ov11_022E9B5C(s32 a, s32 b, s32 c) +{ + sub_0200BBF8(&ov11_0238905C, a, b, c); +} diff --git a/src/overlay_11_0230CB88.c b/src/overlay_11_0230CB88.c new file mode 100644 index 00000000..4ecf44ef --- /dev/null +++ b/src/overlay_11_0230CB88.c @@ -0,0 +1,99 @@ +#include "overlay_11_0230CB88.h" + +extern struct struct_1 ov11_023230DC; + +extern u32 sub_02034840(struct struct_1 *p); + +extern struct struct_1 ov11_023230EC; + +extern bool8 RECYCLE_SHOP_OVERLAY_STATUS; + +extern void sub_020017EC(void); + +extern struct struct_1 ov11_023230BC; + +extern struct struct_1 ov11_023230CC; + +extern bool8 SPINDA_CAFE_OVERLAY_STATUS; + +extern struct struct_1 ov11_023230AC; + +extern s32 ov11_0238A090; + +extern struct struct_1 ov11_0232309C; + +extern s32 ov11_0238A08C; + +extern struct struct_1 ov11_0232308C; + +extern struct struct_1 ov11_0232307C; + +extern u32 InitMenu(struct struct_1 *dst); + +extern void EntryOverlay13(s32 a); + +extern struct struct_1 OVERLAY11_OVERLAY_LOAD_TABLE; + +void ov11_0230CB88(s32 a) +{ + if (InitMenu(&OVERLAY11_OVERLAY_LOAD_TABLE)) { + EntryOverlay13(a); + } +} + +u32 LoadDuskullBankOverlay(void) +{ + return InitMenu(&ov11_0232307C); +} + +u32 LoadLuminousSpringOverlay(void) +{ + return InitMenu(&ov11_0232308C); +} + +void LoadChimechoAssemblyOverlay(s32 a) +{ + if (InitMenu(&ov11_0232309C)) { + ov11_0238A08C = a; + } +} + +void LoadElectivireLinkShopOverlay(s32 a) +{ + if (InitMenu(&ov11_023230AC)) { + ov11_0238A090 = a; + } +} + +void LoadSpindaCafeOverlayInit(void) +{ + InitMenu(&ov11_023230CC); + SPINDA_CAFE_OVERLAY_STATUS = FALSE; +} + +void LoadSpindaCafeOverlayResume(void) +{ + InitMenu(&ov11_023230BC); + SPINDA_CAFE_OVERLAY_STATUS = FALSE; +} + +bool8 IsSpindaCafeOverlaySuspended(void) +{ + return SPINDA_CAFE_OVERLAY_STATUS; +} + +void LoadRecycleShopOverlayInit(void) +{ + sub_020017EC(); + InitMenu(&ov11_023230EC); + RECYCLE_SHOP_OVERLAY_STATUS = FALSE; +} + +void LoadRecycleShopOverlayResume(void) +{ + if (!sub_02034840(&ov11_023230EC)) { + InitMenu(&ov11_023230DC); + } + + RECYCLE_SHOP_OVERLAY_STATUS = FALSE; +}